summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mark Renouf <mrenouf@google.com> 2024-01-10 08:47:19 -0500
committer Mark Renouf <mrenouf@google.com> 2024-01-10 14:36:15 +0000
commit99c9828d732ff25c87e8b41e386131dae70b4652 (patch)
treed25aed1097b55371315b13b181f8b40680b5b84f
parent6d0e03bb3eba2bfea7ac63755f390ca88a4b7faa (diff)
Removes TargetDataLoader from adapter factory method chain
TargetDataLoader is removed from ActivityLogic since it is now only used via direct constructor call by ResolverActivity, and injected directly to a field of ChooserActivity. Since it is only needed to pass to the ChooserListAdapter or ResolverListAdapter constructor, this removes the parameter from being forwarded through a sequence of functions and instead references the injected parameter directly when calling the contructor. This allows smoother transition to an assisted-inject factory. Bug: 300157408 Test: atest IntentResolver-tests-activity:com.android.intentresolver.v2 Change-Id: I18b230eaf97bf8e26e23e2e1cd1372e7d078520f
-rw-r--r--java/src/com/android/intentresolver/v2/ActivityLogic.kt3
-rw-r--r--java/src/com/android/intentresolver/v2/ChooserActivity.java48
-rw-r--r--java/src/com/android/intentresolver/v2/ChooserActivityLogic.kt5
-rw-r--r--java/src/com/android/intentresolver/v2/ResolverActivity.java47
-rw-r--r--java/src/com/android/intentresolver/v2/ResolverActivityLogic.kt14
-rw-r--r--tests/activity/src/com/android/intentresolver/v2/ChooserWrapperActivity.java7
-rw-r--r--tests/activity/src/com/android/intentresolver/v2/ResolverWrapperActivity.java5
-rw-r--r--tests/activity/src/com/android/intentresolver/v2/TestChooserActivityLogic.kt3
8 files changed, 51 insertions, 81 deletions
diff --git a/java/src/com/android/intentresolver/v2/ActivityLogic.kt b/java/src/com/android/intentresolver/v2/ActivityLogic.kt
index 495c39e6..7062da33 100644
--- a/java/src/com/android/intentresolver/v2/ActivityLogic.kt
+++ b/java/src/com/android/intentresolver/v2/ActivityLogic.kt
@@ -8,7 +8,6 @@ import androidx.activity.ComponentActivity
import androidx.core.content.getSystemService
import com.android.intentresolver.AnnotatedUserHandles
import com.android.intentresolver.WorkProfileAvailabilityManager
-import com.android.intentresolver.icons.TargetDataLoader
/**
* Logic for IntentResolver Activities. Anything that is not the same across activities (including
@@ -27,8 +26,6 @@ interface ActivityLogic : CommonActivityLogic {
val defaultTitleResId: Int
/** Intents received to be processed. */
val initialIntents: List<Intent>?
- /** Fetches display info for processed candidates. */
- val targetDataLoader: TargetDataLoader
/** The intents for potential actual targets. [targetIntent] must be first. */
val payloadIntents: List<Intent>
}
diff --git a/java/src/com/android/intentresolver/v2/ChooserActivity.java b/java/src/com/android/intentresolver/v2/ChooserActivity.java
index fe55a936..e093058a 100644
--- a/java/src/com/android/intentresolver/v2/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/v2/ChooserActivity.java
@@ -317,8 +317,7 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
return new ChooserActivityLogic(
TAG,
/* activity = */ this,
- this::onWorkProfileStatusUpdated,
- mTargetDataLoader);
+ this::onWorkProfileStatusUpdated);
}
@Override
@@ -365,7 +364,6 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
Intent intent = mLogic.getTargetIntent();
List<Intent> initialIntents = mLogic.getInitialIntents();
- TargetDataLoader targetDataLoader = mLogic.getTargetDataLoader();
// Calling UID did not have valid permissions
if (mLogic.getAnnotatedUserHandles() == null) {
@@ -376,10 +374,9 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
mChooserMultiProfilePagerAdapter = createMultiProfilePagerAdapter(
requireNonNullElse(initialIntents, emptyList()).toArray(new Intent[0]),
/* resolutionList = */ null,
- false,
- targetDataLoader
+ false
);
- if (!configureContentView(targetDataLoader)) {
+ if (!configureContentView(mTargetDataLoader)) {
mPersonalPackageMonitor = createPackageMonitor(
mChooserMultiProfilePagerAdapter.getPersonalListAdapter());
mPersonalPackageMonitor.register(
@@ -659,7 +656,7 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
private CharSequence getOrLoadDisplayLabel(TargetInfo info) {
if (info.isDisplayResolveInfo()) {
- mLogic.getTargetDataLoader().getOrLoadLabel((DisplayResolveInfo) info);
+ mTargetDataLoader.getOrLoadLabel((DisplayResolveInfo) info);
}
CharSequence displayLabel = info.getDisplayLabel();
return displayLabel == null ? "" : displayLabel;
@@ -1225,14 +1222,13 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
protected ChooserMultiProfilePagerAdapter createMultiProfilePagerAdapter(
Intent[] initialIntents,
List<ResolveInfo> rList,
- boolean filterLastUsed,
- TargetDataLoader targetDataLoader) {
+ boolean filterLastUsed) {
if (hasWorkProfile()) {
mChooserMultiProfilePagerAdapter = createChooserMultiProfilePagerAdapterForTwoProfiles(
- initialIntents, rList, filterLastUsed, targetDataLoader);
+ initialIntents, rList, filterLastUsed);
} else {
mChooserMultiProfilePagerAdapter = createChooserMultiProfilePagerAdapterForOneProfile(
- initialIntents, rList, filterLastUsed, targetDataLoader);
+ initialIntents, rList, filterLastUsed);
}
return mChooserMultiProfilePagerAdapter;
}
@@ -1277,16 +1273,15 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
private ChooserMultiProfilePagerAdapter createChooserMultiProfilePagerAdapterForOneProfile(
Intent[] initialIntents,
List<ResolveInfo> rList,
- boolean filterLastUsed,
- TargetDataLoader targetDataLoader) {
+ boolean filterLastUsed) {
ChooserGridAdapter adapter = createChooserGridAdapter(
/* context */ this,
mLogic.getPayloadIntents(),
initialIntents,
rList,
filterLastUsed,
- /* userHandle */ requireAnnotatedUserHandles().personalProfileUserHandle,
- targetDataLoader);
+ /* userHandle */ requireAnnotatedUserHandles().personalProfileUserHandle
+ );
return new ChooserMultiProfilePagerAdapter(
/* context */ this,
mDevicePolicyResources.getPersonalTabLabel(),
@@ -1304,8 +1299,7 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
private ChooserMultiProfilePagerAdapter createChooserMultiProfilePagerAdapterForTwoProfiles(
Intent[] initialIntents,
List<ResolveInfo> rList,
- boolean filterLastUsed,
- TargetDataLoader targetDataLoader) {
+ boolean filterLastUsed) {
int selectedProfile = findSelectedProfile();
ChooserGridAdapter personalAdapter = createChooserGridAdapter(
/* context */ this,
@@ -1313,16 +1307,16 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
selectedProfile == PROFILE_PERSONAL ? initialIntents : null,
rList,
filterLastUsed,
- /* userHandle */ requireAnnotatedUserHandles().personalProfileUserHandle,
- targetDataLoader);
+ /* userHandle */ requireAnnotatedUserHandles().personalProfileUserHandle
+ );
ChooserGridAdapter workAdapter = createChooserGridAdapter(
/* context */ this,
mLogic.getPayloadIntents(),
selectedProfile == PROFILE_WORK ? initialIntents : null,
rList,
filterLastUsed,
- /* userHandle */ requireAnnotatedUserHandles().workProfileUserHandle,
- targetDataLoader);
+ /* userHandle */ requireAnnotatedUserHandles().workProfileUserHandle
+ );
return new ChooserMultiProfilePagerAdapter(
/* context */ this,
mDevicePolicyResources.getPersonalTabLabel(),
@@ -1960,8 +1954,7 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
Intent[] initialIntents,
List<ResolveInfo> rList,
boolean filterLastUsed,
- UserHandle userHandle,
- TargetDataLoader targetDataLoader) {
+ UserHandle userHandle) {
ChooserRequestParameters parameters = requireChooserRequest();
ChooserListAdapter chooserListAdapter = createChooserListAdapter(
context,
@@ -1973,8 +1966,8 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
userHandle,
mLogic.getTargetIntent(),
parameters.getReferrerFillInIntent(),
- mMaxTargetsPerRow,
- targetDataLoader);
+ mMaxTargetsPerRow
+ );
return new ChooserGridAdapter(
context,
@@ -2025,8 +2018,7 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
UserHandle userHandle,
Intent targetIntent,
Intent referrerFillInIntent,
- int maxTargetsPerRow,
- TargetDataLoader targetDataLoader) {
+ int maxTargetsPerRow) {
UserHandle initialIntentsUserSpace = isLaunchedAsCloneProfile()
&& userHandle.equals(requireAnnotatedUserHandles().personalProfileUserHandle)
? requireAnnotatedUserHandles().cloneProfileUserHandle : userHandle;
@@ -2045,7 +2037,7 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
getEventLog(),
maxTargetsPerRow,
initialIntentsUserSpace,
- targetDataLoader,
+ mTargetDataLoader,
() -> {
ProfileRecord record = getProfileRecord(userHandle);
if (record != null && record.shortcutLoader != null) {
diff --git a/java/src/com/android/intentresolver/v2/ChooserActivityLogic.kt b/java/src/com/android/intentresolver/v2/ChooserActivityLogic.kt
index 2cc75fab..a8150f52 100644
--- a/java/src/com/android/intentresolver/v2/ChooserActivityLogic.kt
+++ b/java/src/com/android/intentresolver/v2/ChooserActivityLogic.kt
@@ -6,8 +6,6 @@ import android.util.Log
import androidx.activity.ComponentActivity
import androidx.annotation.OpenForTesting
import com.android.intentresolver.ChooserRequestParameters
-import com.android.intentresolver.icons.TargetDataLoader
-import com.android.intentresolver.v2.util.mutableLazy
private const val TAG = "ChooserActivityLogic"
@@ -22,8 +20,7 @@ private const val TAG = "ChooserActivityLogic"
open class ChooserActivityLogic(
tag: String,
activity: ComponentActivity,
- onWorkProfileStatusUpdated: () -> Unit,
- override val targetDataLoader: TargetDataLoader,
+ onWorkProfileStatusUpdated: () -> Unit
) :
ActivityLogic,
CommonActivityLogic by CommonActivityLogicImpl(
diff --git a/java/src/com/android/intentresolver/v2/ResolverActivity.java b/java/src/com/android/intentresolver/v2/ResolverActivity.java
index c3654f3f..9672e9d6 100644
--- a/java/src/com/android/intentresolver/v2/ResolverActivity.java
+++ b/java/src/com/android/intentresolver/v2/ResolverActivity.java
@@ -96,6 +96,7 @@ import com.android.intentresolver.emptystate.CompositeEmptyStateProvider;
import com.android.intentresolver.emptystate.CrossProfileIntentsChecker;
import com.android.intentresolver.emptystate.EmptyState;
import com.android.intentresolver.emptystate.EmptyStateProvider;
+import com.android.intentresolver.icons.DefaultTargetDataLoader;
import com.android.intentresolver.icons.TargetDataLoader;
import com.android.intentresolver.model.ResolverRankerServiceResolverComparator;
import com.android.intentresolver.v2.MultiProfilePagerAdapter.OnSwitchOnWorkSelectedListener;
@@ -139,6 +140,7 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
@Inject public IntentForwarding mIntentForwarding;
protected ActivityLogic mLogic;
+ protected TargetDataLoader mTargetDataLoader;
private Button mAlwaysButton;
private Button mOnceButton;
@@ -233,6 +235,13 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
super.onCreate(savedInstanceState);
setTheme(R.style.Theme_DeviceDefault_Resolver);
mLogic = createActivityLogic();
+ mTargetDataLoader = new DefaultTargetDataLoader(
+ this,
+ getLifecycle(),
+ getIntent().getBooleanExtra(
+ ResolverActivity.EXTRA_IS_AUDIO_CAPTURE_DEVICE,
+ /* defaultValue = */ false)
+ );
}
@Override
@@ -245,7 +254,6 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
private void init() {
Intent intent = mLogic.getTargetIntent();
List<Intent> initialIntents = mLogic.getInitialIntents();
- TargetDataLoader targetDataLoader = mLogic.getTargetDataLoader();
// Calling UID did not have valid permissions
if (mLogic.getAnnotatedUserHandles() == null) {
@@ -267,10 +275,9 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
mMultiProfilePagerAdapter = createMultiProfilePagerAdapter(
requireNonNullElse(initialIntents, emptyList()).toArray(new Intent[0]),
/* resolutionList = */ null,
- filterLastUsed,
- targetDataLoader
+ filterLastUsed
);
- if (configureContentView(targetDataLoader)) {
+ if (configureContentView(mTargetDataLoader)) {
return;
}
@@ -342,16 +349,15 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
protected ResolverMultiProfilePagerAdapter createMultiProfilePagerAdapter(
Intent[] initialIntents,
List<ResolveInfo> resolutionList,
- boolean filterLastUsed,
- TargetDataLoader targetDataLoader) {
+ boolean filterLastUsed) {
ResolverMultiProfilePagerAdapter resolverMultiProfilePagerAdapter = null;
if (hasWorkProfile()) {
resolverMultiProfilePagerAdapter =
createResolverMultiProfilePagerAdapterForTwoProfiles(
- initialIntents, resolutionList, filterLastUsed, targetDataLoader);
+ initialIntents, resolutionList, filterLastUsed);
} else {
resolverMultiProfilePagerAdapter = createResolverMultiProfilePagerAdapterForOneProfile(
- initialIntents, resolutionList, filterLastUsed, targetDataLoader);
+ initialIntents, resolutionList, filterLastUsed);
}
return resolverMultiProfilePagerAdapter;
}
@@ -886,8 +892,7 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
Intent[] initialIntents,
List<ResolveInfo> resolutionList,
boolean filterLastUsed,
- UserHandle userHandle,
- TargetDataLoader targetDataLoader) {
+ UserHandle userHandle) {
UserHandle initialIntentsUserSpace = isLaunchedAsCloneProfile()
&& userHandle.equals(requireAnnotatedUserHandles().personalProfileUserHandle)
? requireAnnotatedUserHandles().cloneProfileUserHandle : userHandle;
@@ -902,7 +907,7 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
mLogic.getTargetIntent(),
this,
initialIntentsUserSpace,
- targetDataLoader);
+ mTargetDataLoader);
}
protected final EmptyStateProvider createEmptyStateProvider(
@@ -940,16 +945,15 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
createResolverMultiProfilePagerAdapterForOneProfile(
Intent[] initialIntents,
List<ResolveInfo> resolutionList,
- boolean filterLastUsed,
- TargetDataLoader targetDataLoader) {
+ boolean filterLastUsed) {
ResolverListAdapter personalAdapter = createResolverListAdapter(
/* context */ this,
mLogic.getPayloadIntents(),
initialIntents,
resolutionList,
filterLastUsed,
- /* userHandle */ requireAnnotatedUserHandles().personalProfileUserHandle,
- targetDataLoader);
+ /* userHandle */ requireAnnotatedUserHandles().personalProfileUserHandle
+ );
return new ResolverMultiProfilePagerAdapter(
/* context */ this,
mDevicePolicyResources.getPersonalTabLabel(),
@@ -971,8 +975,7 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
private ResolverMultiProfilePagerAdapter createResolverMultiProfilePagerAdapterForTwoProfiles(
Intent[] initialIntents,
List<ResolveInfo> resolutionList,
- boolean filterLastUsed,
- TargetDataLoader targetDataLoader) {
+ boolean filterLastUsed) {
// In the edge case when we have 0 apps in the current profile and >1 apps in the other,
// the intent resolver is started in the other profile. Since this is the only case when
// this happens, we check for it here and set the current profile's tab.
@@ -1000,8 +1003,8 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
resolutionList,
(filterLastUsed && UserHandle.myUserId()
== requireAnnotatedUserHandles().personalProfileUserHandle.getIdentifier()),
- /* userHandle */ requireAnnotatedUserHandles().personalProfileUserHandle,
- targetDataLoader);
+ /* userHandle */ requireAnnotatedUserHandles().personalProfileUserHandle
+ );
UserHandle workProfileUserHandle = requireAnnotatedUserHandles().workProfileUserHandle;
ResolverListAdapter workAdapter = createResolverListAdapter(
/* context */ this,
@@ -1010,8 +1013,8 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
resolutionList,
(filterLastUsed && UserHandle.myUserId()
== workProfileUserHandle.getIdentifier()),
- /* userHandle */ workProfileUserHandle,
- targetDataLoader);
+ /* userHandle */ workProfileUserHandle
+ );
return new ResolverMultiProfilePagerAdapter(
/* context */ this,
mDevicePolicyResources.getPersonalTabLabel(),
@@ -1954,7 +1957,7 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
private CharSequence getOrLoadDisplayLabel(TargetInfo info) {
if (info.isDisplayResolveInfo()) {
- mLogic.getTargetDataLoader().getOrLoadLabel((DisplayResolveInfo) info);
+ mTargetDataLoader.getOrLoadLabel((DisplayResolveInfo) info);
}
CharSequence displayLabel = info.getDisplayLabel();
return displayLabel == null ? "" : displayLabel;
diff --git a/java/src/com/android/intentresolver/v2/ResolverActivityLogic.kt b/java/src/com/android/intentresolver/v2/ResolverActivityLogic.kt
index 51288e51..cf843043 100644
--- a/java/src/com/android/intentresolver/v2/ResolverActivityLogic.kt
+++ b/java/src/com/android/intentresolver/v2/ResolverActivityLogic.kt
@@ -3,9 +3,6 @@ package com.android.intentresolver.v2
import android.content.Intent
import androidx.activity.ComponentActivity
import androidx.annotation.OpenForTesting
-import com.android.intentresolver.icons.DefaultTargetDataLoader
-import com.android.intentresolver.icons.TargetDataLoader
-import com.android.intentresolver.v2.util.mutableLazy
/** Activity logic for [ResolverActivity]. */
@OpenForTesting
@@ -41,7 +38,7 @@ open class ResolverActivityLogic(
override val resolvingHome: Boolean =
targetIntent.action == Intent.ACTION_MAIN &&
- targetIntent.categories.singleOrNull() == Intent.CATEGORY_HOME
+ targetIntent.categories.singleOrNull() == Intent.CATEGORY_HOME
override val title: CharSequence? = null
@@ -49,14 +46,5 @@ open class ResolverActivityLogic(
override val initialIntents: List<Intent>? = null
- override val targetDataLoader: TargetDataLoader = DefaultTargetDataLoader(
- activity,
- activity.lifecycle,
- activity.intent.getBooleanExtra(
- ResolverActivity.EXTRA_IS_AUDIO_CAPTURE_DEVICE,
- /* defaultValue = */ false,
- ),
- )
-
override val payloadIntents: List<Intent> = listOf(targetIntent)
}
diff --git a/tests/activity/src/com/android/intentresolver/v2/ChooserWrapperActivity.java b/tests/activity/src/com/android/intentresolver/v2/ChooserWrapperActivity.java
index b045c801..0b268905 100644
--- a/tests/activity/src/com/android/intentresolver/v2/ChooserWrapperActivity.java
+++ b/tests/activity/src/com/android/intentresolver/v2/ChooserWrapperActivity.java
@@ -39,7 +39,6 @@ import com.android.intentresolver.TestContentPreviewViewModel;
import com.android.intentresolver.chooser.DisplayResolveInfo;
import com.android.intentresolver.chooser.TargetInfo;
import com.android.intentresolver.emptystate.CrossProfileIntentsChecker;
-import com.android.intentresolver.icons.TargetDataLoader;
import com.android.intentresolver.shortcuts.ShortcutLoader;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -60,7 +59,6 @@ public class ChooserWrapperActivity extends ChooserActivity implements IChooserW
"ChooserWrapper",
/* activity = */ this,
this::onWorkProfileStatusUpdated,
- mTargetDataLoader,
sOverrides);
}
@@ -82,8 +80,7 @@ public class ChooserWrapperActivity extends ChooserActivity implements IChooserW
UserHandle userHandle,
Intent targetIntent,
Intent referrerFillInIntent,
- int maxTargetsPerRow,
- TargetDataLoader targetDataLoader) {
+ int maxTargetsPerRow) {
return new ChooserListAdapter(
context,
@@ -100,7 +97,7 @@ public class ChooserWrapperActivity extends ChooserActivity implements IChooserW
getEventLog(),
maxTargetsPerRow,
userHandle,
- targetDataLoader,
+ mTargetDataLoader,
null,
mFeatureFlags);
}
diff --git a/tests/activity/src/com/android/intentresolver/v2/ResolverWrapperActivity.java b/tests/activity/src/com/android/intentresolver/v2/ResolverWrapperActivity.java
index fcd6205c..d06b7929 100644
--- a/tests/activity/src/com/android/intentresolver/v2/ResolverWrapperActivity.java
+++ b/tests/activity/src/com/android/intentresolver/v2/ResolverWrapperActivity.java
@@ -84,8 +84,7 @@ public class ResolverWrapperActivity extends ResolverActivity {
Intent[] initialIntents,
List<ResolveInfo> rList,
boolean filterLastUsed,
- UserHandle userHandle,
- TargetDataLoader targetDataLoader) {
+ UserHandle userHandle) {
return new ResolverListAdapter(
context,
payloadIntents,
@@ -97,7 +96,7 @@ public class ResolverWrapperActivity extends ResolverActivity {
payloadIntents.get(0), // TODO: extract upstream
this,
userHandle,
- new TargetDataLoaderWrapper(targetDataLoader, mLabelIdlingResource));
+ new TargetDataLoaderWrapper(mTargetDataLoader, mLabelIdlingResource));
}
@Override
diff --git a/tests/activity/src/com/android/intentresolver/v2/TestChooserActivityLogic.kt b/tests/activity/src/com/android/intentresolver/v2/TestChooserActivityLogic.kt
index b6354c7a..0849e511 100644
--- a/tests/activity/src/com/android/intentresolver/v2/TestChooserActivityLogic.kt
+++ b/tests/activity/src/com/android/intentresolver/v2/TestChooserActivityLogic.kt
@@ -3,21 +3,18 @@ package com.android.intentresolver.v2
import androidx.activity.ComponentActivity
import com.android.intentresolver.AnnotatedUserHandles
import com.android.intentresolver.WorkProfileAvailabilityManager
-import com.android.intentresolver.icons.TargetDataLoader
/** Activity logic for use when testing [ChooserActivity]. */
class TestChooserActivityLogic(
tag: String,
activity: ComponentActivity,
onWorkProfileStatusUpdated: () -> Unit,
- targetDataLoader: TargetDataLoader,
private val overrideData: ChooserActivityOverrideData,
) :
ChooserActivityLogic(
tag,
activity,
onWorkProfileStatusUpdated,
- targetDataLoader,
) {
override val annotatedUserHandles: AnnotatedUserHandles? by lazy {