diff options
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 { |