summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp5
-rw-r--r--AndroidManifest-app.xml14
-rw-r--r--java/src/com/android/intentresolver/ApplicationComponentOwner.kt15
-rw-r--r--java/src/com/android/intentresolver/ChooserActivity.java40
-rw-r--r--java/src/com/android/intentresolver/IntentForwarderActivity.java7
-rw-r--r--java/src/com/android/intentresolver/IntentResolverApplication.kt30
-rw-r--r--java/src/com/android/intentresolver/ResolverActivity.java3
-rw-r--r--java/src/com/android/intentresolver/dagger/ActivityBinderModule.kt33
-rw-r--r--java/src/com/android/intentresolver/dagger/ActivityComponent.kt21
-rw-r--r--java/src/com/android/intentresolver/dagger/ActivityModule.kt6
-rw-r--r--java/src/com/android/intentresolver/dagger/ApplicationComponent.kt21
-rw-r--r--java/src/com/android/intentresolver/dagger/ApplicationModule.kt29
-rw-r--r--java/src/com/android/intentresolver/dagger/CoroutinesModule.kt51
-rw-r--r--java/src/com/android/intentresolver/dagger/InjectedAppComponentFactory.kt92
-rw-r--r--java/src/com/android/intentresolver/dagger/InjectedViewModelFactory.kt84
-rw-r--r--java/src/com/android/intentresolver/dagger/ReceiverBinderModule.kt12
-rw-r--r--java/src/com/android/intentresolver/dagger/ViewModelBinderModule.kt34
-rw-r--r--java/src/com/android/intentresolver/dagger/ViewModelComponent.kt57
-rw-r--r--java/src/com/android/intentresolver/dagger/ViewModelModule.kt6
-rw-r--r--java/src/com/android/intentresolver/dagger/qualifiers/Qualifiers.kt37
-rw-r--r--java/src/com/android/intentresolver/ui/ChooserViewModel.kt34
-rw-r--r--java/tests/Android.bp1
-rw-r--r--java/tests/AndroidManifest.xml8
-rw-r--r--java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java8
-rw-r--r--java/tests/src/com/android/intentresolver/ResolverWrapperActivity.java3
-rw-r--r--java/tests/src/com/android/intentresolver/TestApplication.kt7
-rw-r--r--java/tests/src/com/android/intentresolver/dagger/TestActivityBinderModule.kt40
-rw-r--r--java/tests/src/com/android/intentresolver/dagger/TestActivityComponent.kt30
-rw-r--r--java/tests/src/com/android/intentresolver/dagger/TestApplicationComponent.kt34
-rw-r--r--java/tests/src/com/android/intentresolver/dagger/TestApplicationModule.kt38
-rw-r--r--java/tests/src/com/android/intentresolver/dagger/TestViewModelComponent.kt29
-rw-r--r--java/tests/src/com/android/intentresolver/dagger/TestViewModelModule.kt6
32 files changed, 15 insertions, 820 deletions
diff --git a/Android.bp b/Android.bp
index 6aad4419..9d0a8ee6 100644
--- a/Android.bp
+++ b/Android.bp
@@ -75,9 +75,6 @@ android_library {
"androidx.lifecycle_lifecycle-extensions",
"androidx.lifecycle_lifecycle-runtime-ktx",
"androidx.lifecycle_lifecycle-viewmodel-ktx",
- "androidx.savedstate_savedstate-ktx",
- "dagger2",
- "jsr330",
"kotlin-stdlib",
"kotlinx_coroutines",
"kotlinx-coroutines-android",
@@ -86,8 +83,6 @@ android_library {
"SystemUIFlagsLib",
],
- plugins: ["dagger2-compiler"],
-
lint: {
strict_updatability_linting: false,
},
diff --git a/AndroidManifest-app.xml b/AndroidManifest-app.xml
index ba9afe28..57ea497b 100644
--- a/AndroidManifest-app.xml
+++ b/AndroidManifest-app.xml
@@ -17,22 +17,18 @@
*/
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.android.intentresolver"
- android:versionCode="0"
- android:versionName="2021-11"
- coreApp="true">
+ package="com.android.intentresolver"
+ android:versionCode="0"
+ android:versionName="2021-11"
+ coreApp="true">
<application
- android:name=".IntentResolverApplication"
android:hardwareAccelerated="true"
android:label="@string/app_label"
android:directBootAware="true"
android:forceQueryable="true"
android:requiredForAllUsers="true"
- android:supportsRtl="true"
- tools:replace="android:appComponentFactory"
- android:appComponentFactory=".dagger.InjectedAppComponentFactory">
+ android:supportsRtl="true">
<!-- This alias needs to be maintained until there are no more devices that could be
upgrading from T QPR3. (b/283722356) -->
diff --git a/java/src/com/android/intentresolver/ApplicationComponentOwner.kt b/java/src/com/android/intentresolver/ApplicationComponentOwner.kt
deleted file mode 100644
index fb39814c..00000000
--- a/java/src/com/android/intentresolver/ApplicationComponentOwner.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.android.intentresolver
-
-import com.android.intentresolver.dagger.ApplicationComponent
-
-/**
- * Interface that should be implemented by the [Application][android.app.Application] object as the
- * owner of the [ApplicationComponent].
- */
-interface ApplicationComponentOwner {
- /**
- * Invokes the given [action] when the [ApplicationComponent] has been created. If it has
- * already been created, then it invokes [action] immediately.
- */
- fun doWhenApplicationComponentReady(action: (ApplicationComponent) -> Unit)
-}
diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java
index 8edbba08..d302233f 100644
--- a/java/src/com/android/intentresolver/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/ChooserActivity.java
@@ -72,7 +72,6 @@ import android.view.animation.LinearInterpolator;
import android.widget.TextView;
import androidx.annotation.MainThread;
-import androidx.lifecycle.HasDefaultViewModelProviderFactory;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -88,8 +87,6 @@ import com.android.intentresolver.contentpreview.BasePreviewViewModel;
import com.android.intentresolver.contentpreview.ChooserContentPreviewUi;
import com.android.intentresolver.contentpreview.HeadlineGeneratorImpl;
import com.android.intentresolver.contentpreview.PreviewViewModel;
-import com.android.intentresolver.dagger.InjectedViewModelFactory;
-import com.android.intentresolver.dagger.ViewModelComponent;
import com.android.intentresolver.flags.FeatureFlagRepository;
import com.android.intentresolver.flags.FeatureFlagRepositoryFactory;
import com.android.intentresolver.grid.ChooserGridAdapter;
@@ -102,14 +99,11 @@ import com.android.intentresolver.model.AppPredictionServiceResolverComparator;
import com.android.intentresolver.model.ResolverRankerServiceResolverComparator;
import com.android.intentresolver.shortcuts.AppPredictorFactory;
import com.android.intentresolver.shortcuts.ShortcutLoader;
-import com.android.intentresolver.ui.ChooserViewModel;
import com.android.intentresolver.widget.ImagePreviewView;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.content.PackageMonitor;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
-import org.jetbrains.annotations.NotNull;
-
import java.io.File;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -125,15 +119,13 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.Consumer;
-import javax.inject.Inject;
-
/**
* The Chooser Activity handles intent resolution specifically for sharing intents -
* for example, as generated by {@see android.content.Intent#createChooser(Intent, CharSequence)}.
*
*/
public class ChooserActivity extends ResolverActivity implements
- ResolverListAdapter.ResolverListCommunicator, HasDefaultViewModelProviderFactory {
+ ResolverListAdapter.ResolverListCommunicator {
private static final String TAG = "ChooserActivity";
/**
@@ -173,11 +165,6 @@ public class ChooserActivity extends ResolverActivity implements
private static final int SCROLL_STATUS_SCROLLING_VERTICAL = 1;
private static final int SCROLL_STATUS_SCROLLING_HORIZONTAL = 2;
- private ViewModelProvider.Factory mViewModelFactory;
- private final ViewModelComponent.Builder mViewModelComponentBuilder;
-
- private ChooserViewModel mViewModel;
-
@IntDef(flag = false, prefix = { "TARGET_TYPE_" }, value = {
TARGET_TYPE_DEFAULT,
TARGET_TYPE_CHOOSER_TARGET,
@@ -239,33 +226,16 @@ public class ChooserActivity extends ResolverActivity implements
private boolean mExcludeSharedText = false;
- @Inject
- public ChooserActivity(ViewModelComponent.Builder builder) {
- mViewModelComponentBuilder = builder;
- }
-
- @NotNull
- @Override
- public final ViewModelProvider.Factory getDefaultViewModelProviderFactory() {
- if (mViewModelFactory == null) {
- mViewModelFactory = new InjectedViewModelFactory(mViewModelComponentBuilder,
- getDefaultViewModelCreationExtras(),
- getReferrer());
- }
- return mViewModelFactory;
- }
+ public ChooserActivity() {}
@Override
protected void onCreate(Bundle savedInstanceState) {
- Log.d(TAG, "onCreate");
Tracer.INSTANCE.markLaunched();
final long intentReceivedTime = System.currentTimeMillis();
mLatencyTracker.onActionStart(ACTION_LOAD_SHARE_SHEET);
getEventLog().logSharesheetTriggered();
- mViewModel = new ViewModelProvider(this).get(ChooserViewModel.class);
-
mFeatureFlagRepository = createFeatureFlagRepository();
mIntegratedDeviceComponents = getIntegratedDeviceComponents();
@@ -282,9 +252,7 @@ public class ChooserActivity extends ResolverActivity implements
return;
}
- // Note: Uses parent ViewModelProvider.Factory because RefinementManager is not injectable
- mRefinementManager = new ViewModelProvider(this, super.getDefaultViewModelProviderFactory())
- .get(ChooserRefinementManager.class);
+ mRefinementManager = new ViewModelProvider(this).get(ChooserRefinementManager.class);
mRefinementManager.getRefinementCompletion().observe(this, completion -> {
if (completion.consume()) {
@@ -306,7 +274,7 @@ public class ChooserActivity extends ResolverActivity implements
BasePreviewViewModel previewViewModel =
new ViewModelProvider(this, createPreviewViewModelFactory())
- .get(PreviewViewModel.class);
+ .get(BasePreviewViewModel.class);
mChooserContentPreviewUi = new ChooserContentPreviewUi(
getLifecycle(),
previewViewModel.createOrReuseProvider(mChooserRequest),
diff --git a/java/src/com/android/intentresolver/IntentForwarderActivity.java b/java/src/com/android/intentresolver/IntentForwarderActivity.java
index d69a6c71..5e8945f1 100644
--- a/java/src/com/android/intentresolver/IntentForwarderActivity.java
+++ b/java/src/com/android/intentresolver/IntentForwarderActivity.java
@@ -57,8 +57,6 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import javax.inject.Inject;
-
/**
* This is used in conjunction with
* {@link DevicePolicyManager#addCrossProfileIntentFilter} to enable intents to
@@ -86,11 +84,6 @@ public class IntentForwarderActivity extends Activity {
private MetricsLogger mMetricsLogger;
protected ExecutorService mExecutorService;
- @Inject
- public IntentForwarderActivity() {
- super();
- }
-
@Override
protected void onDestroy() {
super.onDestroy();
diff --git a/java/src/com/android/intentresolver/IntentResolverApplication.kt b/java/src/com/android/intentresolver/IntentResolverApplication.kt
deleted file mode 100644
index 61df7fff..00000000
--- a/java/src/com/android/intentresolver/IntentResolverApplication.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.android.intentresolver
-
-import android.app.Application
-import com.android.intentresolver.dagger.ApplicationComponent
-import com.android.intentresolver.dagger.DaggerApplicationComponent
-
-/** [Application] that maintains the [ApplicationComponent]. */
-open class IntentResolverApplication : Application(), ApplicationComponentOwner {
-
- private lateinit var applicationComponent: ApplicationComponent
-
- private val pendingDaggerActions = mutableSetOf<(ApplicationComponent) -> Unit>()
-
- open fun createApplicationComponentBuilder() = DaggerApplicationComponent.builder()
-
- override fun onCreate() {
- super.onCreate()
- applicationComponent = createApplicationComponentBuilder().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)
- }
- }
-}
diff --git a/java/src/com/android/intentresolver/ResolverActivity.java b/java/src/com/android/intentresolver/ResolverActivity.java
index 252d0a41..35c7e897 100644
--- a/java/src/com/android/intentresolver/ResolverActivity.java
+++ b/java/src/com/android/intentresolver/ResolverActivity.java
@@ -127,8 +127,6 @@ import java.util.Objects;
import java.util.Set;
import java.util.function.Supplier;
-import javax.inject.Inject;
-
/**
* This is a copy of ResolverActivity to support IntentResolver's ChooserActivity. This code is
* *not* the resolver that is actually triggered by the system right now (you want
@@ -139,7 +137,6 @@ import javax.inject.Inject;
public class ResolverActivity extends FragmentActivity implements
ResolverListAdapter.ResolverListCommunicator {
- @Inject
public ResolverActivity() {
mIsIntentPicker = getClass().equals(ResolverActivity.class);
}
diff --git a/java/src/com/android/intentresolver/dagger/ActivityBinderModule.kt b/java/src/com/android/intentresolver/dagger/ActivityBinderModule.kt
deleted file mode 100644
index 7c997ef7..00000000
--- a/java/src/com/android/intentresolver/dagger/ActivityBinderModule.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.android.intentresolver.dagger
-
-import android.app.Activity
-import com.android.intentresolver.ChooserActivity
-import com.android.intentresolver.IntentForwarderActivity
-import com.android.intentresolver.ResolverActivity
-import dagger.Binds
-import dagger.Module
-import dagger.multibindings.ClassKey
-import dagger.multibindings.IntoMap
-
-/** Injection instructions for injectable [Activities][Activity]. */
-@Module
-interface ActivityBinderModule {
-
- @Binds
- @IntoMap
- @ClassKey(ChooserActivity::class)
- @ActivityScope
- fun bindChooserActivity(activity: ChooserActivity): Activity
-
- @Binds
- @IntoMap
- @ClassKey(ResolverActivity::class)
- @ActivityScope
- fun bindResolverActivity(activity: ResolverActivity): Activity
-
- @Binds
- @IntoMap
- @ClassKey(IntentForwarderActivity::class)
- @ActivityScope
- fun bindIntentForwarderActivity(activity: IntentForwarderActivity): Activity
-}
diff --git a/java/src/com/android/intentresolver/dagger/ActivityComponent.kt b/java/src/com/android/intentresolver/dagger/ActivityComponent.kt
deleted file mode 100644
index bf5ff761..00000000
--- a/java/src/com/android/intentresolver/dagger/ActivityComponent.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.android.intentresolver.dagger
-
-import android.app.Activity
-import dagger.Subcomponent
-import javax.inject.Provider
-import javax.inject.Scope
-
-@MustBeDocumented @Retention(AnnotationRetention.RUNTIME) @Scope annotation class ActivityScope
-
-/** Subcomponent for injections across the life of an Activity. */
-@ActivityScope
-@Subcomponent(modules = [ActivityModule::class, ActivityBinderModule::class])
-interface ActivityComponent {
-
- @Subcomponent.Factory
- interface Factory {
- fun create(): ActivityComponent
- }
-
- fun activities(): Map<Class<*>, @JvmSuppressWildcards Provider<Activity>>
-}
diff --git a/java/src/com/android/intentresolver/dagger/ActivityModule.kt b/java/src/com/android/intentresolver/dagger/ActivityModule.kt
deleted file mode 100644
index f6a2229d..00000000
--- a/java/src/com/android/intentresolver/dagger/ActivityModule.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.android.intentresolver.dagger
-
-import dagger.Module
-
-/** Bindings provided to [@ActivityScope][ActivityScope]. */
-@Module interface ActivityModule
diff --git a/java/src/com/android/intentresolver/dagger/ApplicationComponent.kt b/java/src/com/android/intentresolver/dagger/ApplicationComponent.kt
deleted file mode 100644
index 9fc57712..00000000
--- a/java/src/com/android/intentresolver/dagger/ApplicationComponent.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.android.intentresolver.dagger
-
-import android.app.Application
-import dagger.BindsInstance
-import dagger.Component
-import javax.inject.Singleton
-
-/** Top level component for injections across the life of the process. */
-@Singleton
-@Component(modules = [ApplicationModule::class])
-interface ApplicationComponent {
-
- @Component.Builder
- interface Builder {
- @BindsInstance fun application(application: Application): Builder
-
- fun build(): ApplicationComponent
- }
-
- fun inject(appComponentFactory: InjectedAppComponentFactory)
-}
diff --git a/java/src/com/android/intentresolver/dagger/ApplicationModule.kt b/java/src/com/android/intentresolver/dagger/ApplicationModule.kt
deleted file mode 100644
index 4986d7e1..00000000
--- a/java/src/com/android/intentresolver/dagger/ApplicationModule.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.android.intentresolver.dagger
-
-import android.app.Application
-import android.content.Context
-import com.android.intentresolver.dagger.qualifiers.App
-import dagger.Module
-import dagger.Provides
-import javax.inject.Singleton
-
-/**
- * Bindings provided to [ApplicationComponent] and children.
- *
- * These are all @Singleton scope, one for the duration of the process.
- */
-@Module(
- subcomponents = [ActivityComponent::class, ViewModelComponent::class],
- includes = [ReceiverBinderModule::class, CoroutinesModule::class],
-)
-interface ApplicationModule {
-
- companion object {
-
- @JvmStatic
- @Provides
- @Singleton
- @App
- fun applicationContext(app: Application): Context = app.applicationContext
- }
-}
diff --git a/java/src/com/android/intentresolver/dagger/CoroutinesModule.kt b/java/src/com/android/intentresolver/dagger/CoroutinesModule.kt
deleted file mode 100644
index 5fda2c30..00000000
--- a/java/src/com/android/intentresolver/dagger/CoroutinesModule.kt
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.intentresolver.dagger
-
-import com.android.intentresolver.dagger.qualifiers.Background
-import com.android.intentresolver.dagger.qualifiers.Main
-import dagger.Module
-import dagger.Provides
-import javax.inject.Singleton
-import kotlinx.coroutines.CoroutineDispatcher
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.SupervisorJob
-
-@Module
-interface CoroutinesModule {
- companion object {
- @JvmStatic
- @Provides
- @Singleton
- @Main
- fun mainDispatcher(): CoroutineDispatcher = Dispatchers.Main.immediate
-
- @JvmStatic
- @Provides
- @Singleton
- @Main
- fun mainCoroutineScope(@Main mainDispatcher: CoroutineDispatcher) =
- CoroutineScope(SupervisorJob() + mainDispatcher)
-
- @JvmStatic
- @Provides
- @Singleton
- @Background
- fun backgroundDispatcher(): CoroutineDispatcher = Dispatchers.IO
- }
-}
diff --git a/java/src/com/android/intentresolver/dagger/InjectedAppComponentFactory.kt b/java/src/com/android/intentresolver/dagger/InjectedAppComponentFactory.kt
deleted file mode 100644
index db209ef0..00000000
--- a/java/src/com/android/intentresolver/dagger/InjectedAppComponentFactory.kt
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.intentresolver.dagger
-
-import android.app.Activity
-import android.app.Application
-import android.content.BroadcastReceiver
-import android.content.Intent
-import android.util.Log
-import androidx.core.app.AppComponentFactory
-import com.android.intentresolver.ApplicationComponentOwner
-import javax.inject.Inject
-import javax.inject.Provider
-
-/** Provides instances of application components, delegates construction to Dagger. */
-class InjectedAppComponentFactory : AppComponentFactory() {
-
- @set:Inject lateinit var activityComponentBuilder: ActivityComponent.Factory
-
- @set:Inject
- lateinit var receivers: Map<Class<*>, @JvmSuppressWildcards Provider<BroadcastReceiver>>
-
- override fun instantiateApplicationCompat(cl: ClassLoader, className: String): Application {
- val app = super.instantiateApplicationCompat(cl, className)
- if (app !is ApplicationComponentOwner) {
- throw RuntimeException("App must be ApplicationComponentOwner")
- }
- app.doWhenApplicationComponentReady { it.inject(this) }
- return app
- }
-
- override fun instantiateActivityCompat(
- cl: ClassLoader,
- className: String,
- intent: Intent?,
- ): Activity {
- return runCatching {
- val activities = activityComponentBuilder.create().activities()
- instantiate(className, activities)
- }
- .onFailure {
- if (it is UninitializedPropertyAccessException) {
- // This should never happen but if it did it would cause errors that could
- // be very difficult to identify, so we log it out of an abundance of
- // caution.
- Log.e(TAG, "Tried to instantiate $className before AppComponent", it)
- }
- }
- .getOrNull()
- ?: super.instantiateActivityCompat(cl, className, intent)
- }
-
- override fun instantiateReceiverCompat(
- cl: ClassLoader,
- className: String,
- intent: Intent?,
- ): BroadcastReceiver {
- return instantiate(className, receivers)
- ?: super.instantiateReceiverCompat(cl, className, intent)
- }
-
- private fun <T> instantiate(className: String, providers: Map<Class<*>, Provider<T>>): T? {
- return runCatching { providers[Class.forName(className)]?.get() }
- .onFailure {
- if (it is UninitializedPropertyAccessException) {
- // This should never happen but if it did it would cause errors that could
- // be very difficult to identify, so we log it out of an abundance of
- // caution.
- Log.e(TAG, "Tried to instantiate $className before AppComponent", it)
- }
- }
- .getOrNull()
- }
-
- companion object {
- private const val TAG = "AppComponentFactory"
- }
-}
diff --git a/java/src/com/android/intentresolver/dagger/InjectedViewModelFactory.kt b/java/src/com/android/intentresolver/dagger/InjectedViewModelFactory.kt
deleted file mode 100644
index f0906d3e..00000000
--- a/java/src/com/android/intentresolver/dagger/InjectedViewModelFactory.kt
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.intentresolver.dagger
-
-import android.net.Uri
-import android.os.Bundle
-import androidx.lifecycle.DEFAULT_ARGS_KEY
-import androidx.lifecycle.ViewModel
-import androidx.lifecycle.ViewModelProvider
-import androidx.lifecycle.viewmodel.CreationExtras
-import java.io.Closeable
-import javax.inject.Provider
-import kotlin.coroutines.CoroutineContext
-import kotlinx.coroutines.CoroutineName
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.SupervisorJob
-import kotlinx.coroutines.cancel
-import kotlinx.coroutines.isActive
-
-/** Instantiates new ViewModel instances using Dagger. */
-class InjectedViewModelFactory(
- private val viewModelComponentBuilder: ViewModelComponent.Builder,
- creationExtras: CreationExtras,
- private val referrer: Uri,
-) : ViewModelProvider.Factory {
-
- private val defaultArgs = creationExtras[DEFAULT_ARGS_KEY] ?: Bundle()
-
- private fun viewModelScope(viewModelClass: Class<*>) =
- CloseableCoroutineScope(
- SupervisorJob() + CoroutineName(viewModelClass.simpleName) + Dispatchers.Main.immediate
- )
-
- private fun <T> newViewModel(
- providerMap: Map<Class<*>, Provider<ViewModel>>,
- modelClass: Class<T>
- ): T {
- val provider =
- providerMap[modelClass]
- ?: error(
- "Unable to create an instance of $modelClass. " +
- "Does the class have a binding in ViewModelComponent?"
- )
- return modelClass.cast(provider.get())
- }
-
- override fun <T : ViewModel> create(modelClass: Class<T>): T {
- val viewModelScope = viewModelScope(modelClass)
- val viewModelComponent =
- viewModelComponentBuilder
- .coroutineScope(viewModelScope)
- .intentExtras(defaultArgs)
- .referrer(referrer)
- .build()
- val viewModel = newViewModel(viewModelComponent.viewModels(), modelClass)
- viewModel.addCloseable(viewModelScope)
- return viewModel
- }
-}
-
-internal class CloseableCoroutineScope(context: CoroutineContext) : Closeable, CoroutineScope {
- override val coroutineContext: CoroutineContext = context
-
- override fun close() {
- if (isActive) {
- coroutineContext.cancel()
- }
- }
-}
diff --git a/java/src/com/android/intentresolver/dagger/ReceiverBinderModule.kt b/java/src/com/android/intentresolver/dagger/ReceiverBinderModule.kt
deleted file mode 100644
index 32ce2f45..00000000
--- a/java/src/com/android/intentresolver/dagger/ReceiverBinderModule.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.android.intentresolver.dagger
-
-import android.content.BroadcastReceiver
-import dagger.Module
-import dagger.multibindings.Multibinds
-
-/** Injection instructions for injectable [BroadcastReceivers][BroadcastReceiver] */
-@Module
-interface ReceiverBinderModule {
-
- @Multibinds fun bindReceivers(): Map<Class<*>, @JvmSuppressWildcards BroadcastReceiver>
-}
diff --git a/java/src/com/android/intentresolver/dagger/ViewModelBinderModule.kt b/java/src/com/android/intentresolver/dagger/ViewModelBinderModule.kt
deleted file mode 100644
index 91ba039c..00000000
--- a/java/src/com/android/intentresolver/dagger/ViewModelBinderModule.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.intentresolver.dagger
-
-import androidx.lifecycle.ViewModel
-import com.android.intentresolver.ui.ChooserViewModel
-import dagger.Binds
-import dagger.Module
-import dagger.multibindings.ClassKey
-import dagger.multibindings.IntoMap
-
-/** Defines a map of injectable ViewModel classes. */
-@Module
-interface ViewModelBinderModule {
- @Binds
- @IntoMap
- @ClassKey(ChooserViewModel::class)
- @ViewModelScope
- fun chooserViewModel(viewModel: ChooserViewModel): ViewModel
-}
diff --git a/java/src/com/android/intentresolver/dagger/ViewModelComponent.kt b/java/src/com/android/intentresolver/dagger/ViewModelComponent.kt
deleted file mode 100644
index 3e2e2681..00000000
--- a/java/src/com/android/intentresolver/dagger/ViewModelComponent.kt
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.intentresolver.dagger
-
-import android.net.Uri
-import android.os.Bundle
-import com.android.intentresolver.dagger.qualifiers.Referrer
-import com.android.intentresolver.dagger.qualifiers.ViewModel
-import dagger.BindsInstance
-import dagger.Subcomponent
-import javax.inject.Provider
-import javax.inject.Scope
-import kotlin.annotation.AnnotationRetention.RUNTIME
-import kotlinx.coroutines.CoroutineScope
-
-@Scope @Retention(RUNTIME) @MustBeDocumented annotation class ViewModelScope
-
-/**
- * Provides dependencies within [ViewModelScope] within a [ViewModel].
- *
- * @see InjectedViewModelFactory
- */
-@ViewModelScope
-@Subcomponent(modules = [ViewModelModule::class, ViewModelBinderModule::class])
-interface ViewModelComponent {
-
- /**
- * Binds instance values from the creating Activity to make them available for injection within
- * [ViewModelScope].
- */
- @Subcomponent.Builder
- interface Builder {
- @BindsInstance fun intentExtras(@ViewModel intentExtras: Bundle): Builder
-
- @BindsInstance fun referrer(@Referrer uri: Uri): Builder
-
- @BindsInstance fun coroutineScope(@ViewModel scope: CoroutineScope): Builder
-
- fun build(): ViewModelComponent
- }
-
- fun viewModels(): Map<Class<*>, @JvmSuppressWildcards Provider<androidx.lifecycle.ViewModel>>
-}
diff --git a/java/src/com/android/intentresolver/dagger/ViewModelModule.kt b/java/src/com/android/intentresolver/dagger/ViewModelModule.kt
deleted file mode 100644
index 23320311..00000000
--- a/java/src/com/android/intentresolver/dagger/ViewModelModule.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.android.intentresolver.dagger
-
-import dagger.Module
-
-/** Provides bindings shared among components within [@ViewModelScope][ViewModelScope]. */
-@Module abstract class ViewModelModule
diff --git a/java/src/com/android/intentresolver/dagger/qualifiers/Qualifiers.kt b/java/src/com/android/intentresolver/dagger/qualifiers/Qualifiers.kt
deleted file mode 100644
index fa50170e..00000000
--- a/java/src/com/android/intentresolver/dagger/qualifiers/Qualifiers.kt
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.intentresolver.dagger.qualifiers
-
-import javax.inject.Qualifier
-
-// Note: 'qualifiers' package avoids name collisions in Dagger code.
-
-@Qualifier @MustBeDocumented @Retention(AnnotationRetention.RUNTIME) annotation class App
-
-@Qualifier @MustBeDocumented @Retention(AnnotationRetention.RUNTIME) annotation class Activity
-
-@Qualifier @MustBeDocumented @Retention(AnnotationRetention.RUNTIME) annotation class ViewModel
-
-@Qualifier @MustBeDocumented @Retention(AnnotationRetention.RUNTIME) annotation class Main
-
-@Qualifier @MustBeDocumented @Retention(AnnotationRetention.RUNTIME) annotation class Background
-
-@Qualifier @MustBeDocumented @Retention(AnnotationRetention.RUNTIME) annotation class Delegate
-
-@Qualifier @MustBeDocumented @Retention(AnnotationRetention.RUNTIME) annotation class Default
-
-@Qualifier @MustBeDocumented @Retention(AnnotationRetention.RUNTIME) annotation class Referrer
diff --git a/java/src/com/android/intentresolver/ui/ChooserViewModel.kt b/java/src/com/android/intentresolver/ui/ChooserViewModel.kt
deleted file mode 100644
index 817f0b6c..00000000
--- a/java/src/com/android/intentresolver/ui/ChooserViewModel.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.intentresolver.ui
-
-import android.util.Log
-import androidx.lifecycle.ViewModel
-import com.android.intentresolver.dagger.qualifiers.ViewModel as ViewModelQualifier
-import javax.inject.Inject
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.awaitCancellation
-import kotlinx.coroutines.launch
-
-const val TAG = "ChooserViewModel"
-
-/** The primary container for ViewModelScope dependencies. */
-class ChooserViewModel
-@Inject
-constructor(
- @ViewModelQualifier val viewModelScope: CoroutineScope,
-) : ViewModel() \ No newline at end of file
diff --git a/java/tests/Android.bp b/java/tests/Android.bp
index 3936b38e..90c7fb7a 100644
--- a/java/tests/Android.bp
+++ b/java/tests/Android.bp
@@ -20,6 +20,7 @@ android_test {
static_libs: [
"IntentResolver-core",
"androidx.test.core",
+ "androidx.test.rules",
"androidx.test.ext.junit",
"androidx.test.ext.truth",
"androidx.test.espresso.contrib",
diff --git a/java/tests/AndroidManifest.xml b/java/tests/AndroidManifest.xml
index 9f8dd41c..05830c4c 100644
--- a/java/tests/AndroidManifest.xml
+++ b/java/tests/AndroidManifest.xml
@@ -15,8 +15,7 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.android.intentresolver.tests">
+ package="com.android.intentresolver.tests">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="30" />
@@ -26,10 +25,7 @@
<uses-permission android:name="android.permission.WRITE_DEVICE_CONFIG"/>
<uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
- <application
- android:name="com.android.intentresolver.TestApplication"
- tools:replace="android:appComponentFactory"
- android:appComponentFactory="com.android.intentresolver.dagger.InjectedAppComponentFactory">
+ <application android:name="com.android.intentresolver.TestApplication">
<uses-library android:name="android.test.runner" />
<activity android:name="com.android.intentresolver.ChooserWrapperActivity" />
<activity android:name="com.android.intentresolver.ResolverWrapperActivity" />
diff --git a/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java b/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java
index 49305a6c..8608cf72 100644
--- a/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java
+++ b/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java
@@ -37,7 +37,6 @@ import androidx.lifecycle.ViewModelProvider;
import com.android.intentresolver.AbstractMultiProfilePagerAdapter.CrossProfileIntentsChecker;
import com.android.intentresolver.chooser.DisplayResolveInfo;
import com.android.intentresolver.chooser.TargetInfo;
-import com.android.intentresolver.dagger.TestViewModelComponent;
import com.android.intentresolver.flags.FeatureFlagRepository;
import com.android.intentresolver.grid.ChooserGridAdapter;
import com.android.intentresolver.icons.TargetDataLoader;
@@ -48,8 +47,6 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import java.util.List;
import java.util.function.Consumer;
-import javax.inject.Inject;
-
/**
* Simple wrapper around chooser activity to be able to initiate it under test. For more
* information, see {@code com.android.internal.app.ChooserWrapperActivity}.
@@ -59,11 +56,6 @@ public class ChooserWrapperActivity
static final ChooserActivityOverrideData sOverrides = ChooserActivityOverrideData.getInstance();
private UsageStatsManager mUsm;
- @Inject
- public ChooserWrapperActivity(TestViewModelComponent.Builder builder) {
- super(builder);
- }
-
// ResolverActivity (the base class of ChooserActivity) inspects the launched-from UID at
// onCreate and needs to see some non-negative value in the test.
@Override
diff --git a/java/tests/src/com/android/intentresolver/ResolverWrapperActivity.java b/java/tests/src/com/android/intentresolver/ResolverWrapperActivity.java
index 11e7dffd..401ede26 100644
--- a/java/tests/src/com/android/intentresolver/ResolverWrapperActivity.java
+++ b/java/tests/src/com/android/intentresolver/ResolverWrapperActivity.java
@@ -44,8 +44,6 @@ import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
-import javax.inject.Inject;
-
/*
* Simple wrapper around chooser activity to be able to initiate it under test
*/
@@ -55,7 +53,6 @@ public class ResolverWrapperActivity extends ResolverActivity {
private final CountingIdlingResource mLabelIdlingResource =
new CountingIdlingResource("LoadLabelTask");
- @Inject
public ResolverWrapperActivity() {
super(/* isIntentPicker= */ true);
}
diff --git a/java/tests/src/com/android/intentresolver/TestApplication.kt b/java/tests/src/com/android/intentresolver/TestApplication.kt
index 4f5aefb9..849cfbab 100644
--- a/java/tests/src/com/android/intentresolver/TestApplication.kt
+++ b/java/tests/src/com/android/intentresolver/TestApplication.kt
@@ -16,13 +16,12 @@
package com.android.intentresolver
+import android.app.Application
import android.content.Context
import android.os.UserHandle
-import com.android.intentresolver.dagger.DaggerTestApplicationComponent
-class TestApplication : IntentResolverApplication() {
- override fun createApplicationComponentBuilder() = DaggerTestApplicationComponent.builder()
+class TestApplication : Application() {
// 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
diff --git a/java/tests/src/com/android/intentresolver/dagger/TestActivityBinderModule.kt b/java/tests/src/com/android/intentresolver/dagger/TestActivityBinderModule.kt
deleted file mode 100644
index c08bc3b2..00000000
--- a/java/tests/src/com/android/intentresolver/dagger/TestActivityBinderModule.kt
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.intentresolver.dagger
-
-import android.app.Activity
-import com.android.intentresolver.ChooserWrapperActivity
-import com.android.intentresolver.ResolverWrapperActivity
-import dagger.Binds
-import dagger.Module
-import dagger.multibindings.ClassKey
-import dagger.multibindings.IntoMap
-
-@Module
-interface TestActivityBinderModule {
- @Binds
- @IntoMap
- @ClassKey(ResolverWrapperActivity::class)
- @ActivityScope
- fun resolverWrapperActivity(activity: ResolverWrapperActivity): Activity
-
- @Binds
- @IntoMap
- @ClassKey(ChooserWrapperActivity::class)
- @ActivityScope
- fun chooserWrapperActivity(activity: ChooserWrapperActivity): Activity
-}
diff --git a/java/tests/src/com/android/intentresolver/dagger/TestActivityComponent.kt b/java/tests/src/com/android/intentresolver/dagger/TestActivityComponent.kt
deleted file mode 100644
index 4416c852..00000000
--- a/java/tests/src/com/android/intentresolver/dagger/TestActivityComponent.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.intentresolver.dagger
-
-import dagger.Subcomponent
-
-@ActivityScope
-@Subcomponent(
- modules = [ActivityModule::class, ActivityBinderModule::class, TestActivityBinderModule::class]
-)
-interface TestActivityComponent : ActivityComponent {
- @Subcomponent.Factory
- interface Factory : ActivityComponent.Factory {
- override fun create(): TestActivityComponent
- }
-}
diff --git a/java/tests/src/com/android/intentresolver/dagger/TestApplicationComponent.kt b/java/tests/src/com/android/intentresolver/dagger/TestApplicationComponent.kt
deleted file mode 100644
index 224c46c6..00000000
--- a/java/tests/src/com/android/intentresolver/dagger/TestApplicationComponent.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.intentresolver.dagger
-
-import android.app.Application
-import dagger.BindsInstance
-import dagger.Component
-import javax.inject.Singleton
-
-@Singleton
-@Component(modules = [TestApplicationModule::class])
-interface TestApplicationComponent : ApplicationComponent {
- @Component.Builder
- interface Builder : ApplicationComponent.Builder {
- @BindsInstance
- override fun application(application: Application): TestApplicationComponent.Builder
-
- override fun build(): TestApplicationComponent
- }
-}
diff --git a/java/tests/src/com/android/intentresolver/dagger/TestApplicationModule.kt b/java/tests/src/com/android/intentresolver/dagger/TestApplicationModule.kt
deleted file mode 100644
index 714748d2..00000000
--- a/java/tests/src/com/android/intentresolver/dagger/TestApplicationModule.kt
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.intentresolver.dagger
-
-import dagger.Binds
-import dagger.Module
-import javax.inject.Singleton
-
-@Module(
- subcomponents = [TestActivityComponent::class, TestViewModelComponent::class],
- includes = [ReceiverBinderModule::class, CoroutinesModule::class]
-)
-interface TestApplicationModule : ApplicationModule {
-
- /** Required to support field injection of [InjectedAppComponentFactory] */
- @Binds
- @Singleton
- fun activityComponent(component: TestActivityComponent.Factory): ActivityComponent.Factory
-
- /** Required to support injection into Activity instances */
- @Binds
- @Singleton
- fun viewModelComponent(component: TestViewModelComponent.Builder): ViewModelComponent.Builder
-}
diff --git a/java/tests/src/com/android/intentresolver/dagger/TestViewModelComponent.kt b/java/tests/src/com/android/intentresolver/dagger/TestViewModelComponent.kt
deleted file mode 100644
index 539b3f36..00000000
--- a/java/tests/src/com/android/intentresolver/dagger/TestViewModelComponent.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2023 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.intentresolver.dagger
-
-import dagger.Subcomponent
-
-/** A ViewModelComponent for tests which replaces ViewModelModule -> TestViewModelModule */
-@ViewModelScope
-@Subcomponent(modules = [TestViewModelModule::class, ViewModelBinderModule::class])
-interface TestViewModelComponent : ViewModelComponent {
- @Subcomponent.Builder
- interface Builder : ViewModelComponent.Builder {
- override fun build(): TestViewModelComponent
- }
-}
diff --git a/java/tests/src/com/android/intentresolver/dagger/TestViewModelModule.kt b/java/tests/src/com/android/intentresolver/dagger/TestViewModelModule.kt
deleted file mode 100644
index 28f4fa73..00000000
--- a/java/tests/src/com/android/intentresolver/dagger/TestViewModelModule.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.android.intentresolver.dagger
-
-import dagger.Module
-
-/** Provides bindings shared among components within [@ViewModelScope][ViewModelScope]. */
-@Module abstract class TestViewModelModule