summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
author Andrey Yepin <ayepin@google.com> 2024-10-23 14:28:52 -0700
committer Andrey Yepin <ayepin@google.com> 2024-10-29 14:44:57 -0700
commitdc5cdc53ca218c912d9ffe0d3fcc0a99538cdb60 (patch)
tree33b3963d28b6a3aa444569513d9763fedc6320d7 /java
parent76271ceb801fe192c5a34edf1a1e6d9bec7019ab (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')
-rw-r--r--java/src/com/android/intentresolver/ResolverActivity.java6
-rw-r--r--java/src/com/android/intentresolver/icons/DefaultTargetDataLoader.kt20
-rw-r--r--java/src/com/android/intentresolver/icons/TargetDataLoaderModule.kt10
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))
}