From 114b886b4aaf3341b4072f184c96cc71d4763f76 Mon Sep 17 00:00:00 2001 From: Govinda Wasserman Date: Wed, 21 Jun 2023 14:19:39 -0400 Subject: Creates application-level and activity-level dagger graphs Provides Activities and BroadcastReceivers with the ability to use injection in their constructors. Adds ChooserActivity, ResolverActivity, IntentForwarderActivity, and ChooserActivityReEnabler to the dagger graph. Test: Existing tests still pass BUG: 242615621 Change-Id: I0ce3bb225ceab59243833535c3776d9d64672d7d --- java/tests/AndroidManifest.xml | 7 ++++-- .../com/android/intentresolver/TestApplication.kt | 25 ++++++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) (limited to 'java/tests') diff --git a/java/tests/AndroidManifest.xml b/java/tests/AndroidManifest.xml index 05830c4c..b397db5f 100644 --- a/java/tests/AndroidManifest.xml +++ b/java/tests/AndroidManifest.xml @@ -15,7 +15,8 @@ --> + xmlns:tools="http://schemas.android.com/tools" + package="com.android.intentresolver.tests"> @@ -25,7 +26,9 @@ - + diff --git a/java/tests/src/com/android/intentresolver/TestApplication.kt b/java/tests/src/com/android/intentresolver/TestApplication.kt index 849cfbab..f0761fbd 100644 --- a/java/tests/src/com/android/intentresolver/TestApplication.kt +++ b/java/tests/src/com/android/intentresolver/TestApplication.kt @@ -19,9 +19,30 @@ package com.android.intentresolver import android.app.Application import android.content.Context import android.os.UserHandle +import com.android.intentresolver.dagger.ApplicationComponent +import com.android.intentresolver.dagger.DaggerApplicationComponent -class TestApplication : Application() { +class TestApplication : Application(), ApplicationComponentOwner { + + private lateinit var applicationComponent: ApplicationComponent + + private val pendingDaggerActions = mutableSetOf<(ApplicationComponent) -> Unit>() + + override fun onCreate() { + super.onCreate() + applicationComponent = DaggerApplicationComponent.builder().application(this).build() + pendingDaggerActions.forEach { it.invoke(applicationComponent) } + pendingDaggerActions.clear() + } + + override fun doWhenApplicationComponentReady(action: (ApplicationComponent) -> Unit) { + if (this::applicationComponent.isInitialized) { + action.invoke(applicationComponent) + } else { + pendingDaggerActions.add(action) + } + } // return the current context as a work profile doesn't really exist in these tests override fun createContextAsUser(user: UserHandle, flags: Int): Context = this -} \ No newline at end of file +} -- cgit v1.2.3-59-g8ed1b