diff options
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)) } |