diff options
Diffstat (limited to 'java/com/android/dialer/binary')
3 files changed, 42 insertions, 2 deletions
diff --git a/java/com/android/dialer/binary/aosp/AospDialerApplication.java b/java/com/android/dialer/binary/aosp/AospDialerApplication.java index f657a3987..4ca94e277 100644 --- a/java/com/android/dialer/binary/aosp/AospDialerApplication.java +++ b/java/com/android/dialer/binary/aosp/AospDialerApplication.java @@ -26,5 +26,10 @@ import com.android.dialer.inject.ContextModule; */ public class AospDialerApplication extends DialerApplication { - + /** Returns a new instance of the root component for the AOSP Dialer. */ + @Override + @NonNull + protected Object buildRootComponent() { + return DaggerAospDialerRootComponent.builder().contextModule(new ContextModule(this)).build(); + } } diff --git a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java index 8628e90c2..54fedc2be 100644 --- a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java +++ b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java @@ -27,4 +27,15 @@ import dagger.Component; import javax.inject.Singleton; /** Root component for the AOSP Dialer application. */ +@Singleton +@Component( + modules = { + ContextModule.class, + SimulatorModule.class, + StubCallLocationModule.class, + StubEnrichedCallModule.class, + StubMapsModule.class, + VoicemailModule.class + } +) public interface AospDialerRootComponent extends BaseDialerRootComponent {} diff --git a/java/com/android/dialer/binary/common/DialerApplication.java b/java/com/android/dialer/binary/common/DialerApplication.java index c0be4328c..cc7befc90 100644 --- a/java/com/android/dialer/binary/common/DialerApplication.java +++ b/java/com/android/dialer/binary/common/DialerApplication.java @@ -22,9 +22,10 @@ import android.preference.PreferenceManager; import android.support.annotation.NonNull; import com.android.dialer.blocking.BlockedNumbersAutoMigrator; import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler; +import com.android.dialer.inject.HasRootComponent; /** A common application subclass for all Dialer build variants. */ -public abstract class DialerApplication extends Application { +public abstract class DialerApplication extends Application implements HasRootComponent { private volatile Object rootComponent; @@ -40,4 +41,27 @@ public abstract class DialerApplication extends Application { Trace.endSection(); } + /** + * Returns a new instance of the root component for the application. Sub classes should define a + * root component that extends all the sub components "HasComponent" intefaces. The component + * should specify all modules that the application supports and provide stubs for the remainder. + */ + @NonNull + protected abstract Object buildRootComponent(); + + /** Returns a cached instance of application's root component. */ + @Override + @NonNull + public final Object component() { + Object result = rootComponent; + if (result == null) { + synchronized (this) { + result = rootComponent; + if (result == null) { + rootComponent = result = buildRootComponent(); + } + } + } + return result; + } } |