diff options
author | 2024-10-23 14:28:52 -0700 | |
---|---|---|
committer | 2024-10-29 14:44:57 -0700 | |
commit | dc5cdc53ca218c912d9ffe0d3fcc0a99538cdb60 (patch) | |
tree | 33b3963d28b6a3aa444569513d9763fedc6320d7 /java | |
parent | 76271ceb801fe192c5a34edf1a1e6d9bec7019ab (diff) |
Make DefaultTargetDataLoader assist-injectable
A preparation step for an alternative implementation.
Bug: 349847176
Test: atest IntentResolver-tests-activity
Flag: EXEMPT refactoring
Change-Id: I2b23a27edb6d2d9711af79f06643413861403add
Diffstat (limited to 'java')
3 files changed, 21 insertions, 15 deletions
diff --git a/java/src/com/android/intentresolver/ResolverActivity.java b/java/src/com/android/intentresolver/ResolverActivity.java index 2f220cf1..38259281 100644 --- a/java/src/com/android/intentresolver/ResolverActivity.java +++ b/java/src/com/android/intentresolver/ResolverActivity.java @@ -150,6 +150,7 @@ public class ResolverActivity extends Hilt_ResolverActivity implements @Inject public IntentForwarding mIntentForwarding; @Inject public FeatureFlags mFeatureFlags; @Inject public ActivityModelRepository mActivityModelRepository; + @Inject public DefaultTargetDataLoader.Factory mTargetDataLoaderFactory; private ResolverViewModel mViewModel; private ResolverRequest mRequest; @@ -334,10 +335,7 @@ public class ResolverActivity extends Hilt_ResolverActivity implements mProfileAvailability.setOnProfileStatusChange(this::onWorkProfileStatusUpdated); mResolvingHome = mRequest.isResolvingHome(); - mTargetDataLoader = new DefaultTargetDataLoader( - this, - getLifecycle(), - mRequest.isAudioCaptureDevice()); + mTargetDataLoader = mTargetDataLoaderFactory.create(mRequest.isAudioCaptureDevice()); // The last argument of createResolverListAdapter is whether to do special handling // of the last used choice to highlight it in the list. We need to always diff --git a/java/src/com/android/intentresolver/icons/DefaultTargetDataLoader.kt b/java/src/com/android/intentresolver/icons/DefaultTargetDataLoader.kt index e181f4f3..e80a4a7c 100644 --- a/java/src/com/android/intentresolver/icons/DefaultTargetDataLoader.kt +++ b/java/src/com/android/intentresolver/icons/DefaultTargetDataLoader.kt @@ -33,6 +33,11 @@ import com.android.intentresolver.R import com.android.intentresolver.TargetPresentationGetter import com.android.intentresolver.chooser.DisplayResolveInfo import com.android.intentresolver.chooser.SelectableTargetInfo +import com.android.intentresolver.inject.ActivityOwned +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import dagger.hilt.android.qualifiers.ActivityContext import java.util.concurrent.atomic.AtomicInteger import java.util.function.Consumer import kotlinx.coroutines.Dispatchers @@ -40,10 +45,12 @@ import kotlinx.coroutines.asExecutor /** An actual [TargetDataLoader] implementation. */ // TODO: replace async tasks with coroutines. -class DefaultTargetDataLoader( - private val context: Context, - private val lifecycle: Lifecycle, - private val isAudioCaptureDevice: Boolean, +class DefaultTargetDataLoader +@AssistedInject +constructor( + @ActivityContext private val context: Context, + @ActivityOwned private val lifecycle: Lifecycle, + @Assisted private val isAudioCaptureDevice: Boolean, ) : TargetDataLoader { private val presentationFactory = TargetPresentationGetter.Factory( @@ -146,4 +153,9 @@ class DefaultTargetDataLoader( BitmapDrawable(context.resources, this) } } + + @AssistedFactory + interface Factory { + fun create(isAudioCaptureDevice: Boolean): DefaultTargetDataLoader + } } diff --git a/java/src/com/android/intentresolver/icons/TargetDataLoaderModule.kt b/java/src/com/android/intentresolver/icons/TargetDataLoaderModule.kt index d0bd9740..21ff654f 100644 --- a/java/src/com/android/intentresolver/icons/TargetDataLoaderModule.kt +++ b/java/src/com/android/intentresolver/icons/TargetDataLoaderModule.kt @@ -17,8 +17,6 @@ package com.android.intentresolver.icons import android.content.Context -import androidx.lifecycle.Lifecycle -import com.android.intentresolver.inject.ActivityOwned import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -34,10 +32,8 @@ object TargetDataLoaderModule { @Caching fun cachingTargetDataLoader( @ActivityContext context: Context, - @ActivityOwned lifecycle: Lifecycle, + dataLoaderFactory: DefaultTargetDataLoader.Factory, ): TargetDataLoader = - CachingTargetDataLoader( - context, - DefaultTargetDataLoader(context, lifecycle, isAudioCaptureDevice = false), - ) + // Intended to be used in Chooser only thus the hardcoded isAudioCaptureDevice value. + CachingTargetDataLoader(context, dataLoaderFactory.create(isAudioCaptureDevice = false)) } |