summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ravindra Nallabilli <nallabilli@google.com> 2023-04-19 02:31:52 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-04-19 02:31:52 +0000
commit7de412dce7e98131740b281e87641ef0f792d6b1 (patch)
tree25fab3230054eebf65577aae7e0eb3c882a9e7a4
parentcd42caeb00aa0bdd33f565816bdbfb46ccbbad24 (diff)
Revert "Move Nearby to the front of the app list."
This reverts commit cd42caeb00aa0bdd33f565816bdbfb46ccbbad24. Reason for revert: ACA session : https://android-build.googleplex.com/builds/culprit-assistant/run/4189ac3b-b57c-43f8-acb6-3467d8140574 Bug id: b/278790605 Change-Id: I3398de7f7699a129f47cb047ce206493931aa00e
-rw-r--r--java/src/com/android/intentresolver/ChooserActionFactory.java94
-rw-r--r--java/src/com/android/intentresolver/ChooserActivity.java7
-rw-r--r--java/src/com/android/intentresolver/ChooserRequestParameters.java32
-rw-r--r--java/src/com/android/intentresolver/ResolverActivity.java3
-rw-r--r--java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java4
-rw-r--r--java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java15
-rw-r--r--java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java4
-rw-r--r--java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java8
-rw-r--r--java/src/com/android/intentresolver/model/AbstractResolverComparator.java37
-rw-r--r--java/src/com/android/intentresolver/model/AppPredictionServiceResolverComparator.java8
-rw-r--r--java/src/com/android/intentresolver/model/ResolverRankerServiceResolverComparator.java10
-rw-r--r--java/tests/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt1
-rw-r--r--java/tests/src/com/android/intentresolver/model/AbstractResolverComparatorTest.java74
13 files changed, 203 insertions, 94 deletions
diff --git a/java/src/com/android/intentresolver/ChooserActionFactory.java b/java/src/com/android/intentresolver/ChooserActionFactory.java
index f355d9d4..23e04560 100644
--- a/java/src/com/android/intentresolver/ChooserActionFactory.java
+++ b/java/src/com/android/intentresolver/ChooserActionFactory.java
@@ -26,9 +26,12 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.net.Uri;
+import android.os.Bundle;
import android.service.chooser.ChooserAction;
import android.text.TextUtils;
import android.util.Log;
@@ -89,6 +92,8 @@ public final class ChooserActionFactory implements ChooserContentPreviewUi.Actio
private final Runnable mOnCopyButtonClicked;
private final TargetInfo mEditSharingTarget;
private final Runnable mOnEditButtonClicked;
+ private final TargetInfo mNearbySharingTarget;
+ private final Runnable mOnNearbyButtonClicked;
private final ImmutableList<ChooserAction> mCustomActions;
private final @Nullable ChooserAction mModifyShareAction;
private final Consumer<Boolean> mExcludeSharedTextAction;
@@ -139,6 +144,18 @@ public final class ChooserActionFactory implements ChooserContentPreviewUi.Actio
firstVisibleImageQuery,
activityStarter,
logger),
+ getNearbySharingTarget(
+ context,
+ chooserRequest.getTargetIntent(),
+ integratedDeviceComponents),
+ makeOnNearbyShareRunnable(
+ getNearbySharingTarget(
+ context,
+ chooserRequest.getTargetIntent(),
+ integratedDeviceComponents),
+ activityStarter,
+ finishCallback,
+ logger),
chooserRequest.getChooserActions(),
chooserRequest.getModifyShareAction(),
onUpdateSharedTextIsExcluded,
@@ -154,6 +171,8 @@ public final class ChooserActionFactory implements ChooserContentPreviewUi.Actio
Runnable onCopyButtonClicked,
TargetInfo editSharingTarget,
Runnable onEditButtonClicked,
+ TargetInfo nearbySharingTarget,
+ Runnable onNearbyButtonClicked,
List<ChooserAction> customActions,
@Nullable ChooserAction modifyShareAction,
Consumer<Boolean> onUpdateSharedTextIsExcluded,
@@ -165,6 +184,8 @@ public final class ChooserActionFactory implements ChooserContentPreviewUi.Actio
mOnCopyButtonClicked = onCopyButtonClicked;
mEditSharingTarget = editSharingTarget;
mOnEditButtonClicked = onEditButtonClicked;
+ mNearbySharingTarget = nearbySharingTarget;
+ mOnNearbyButtonClicked = onNearbyButtonClicked;
mCustomActions = ImmutableList.copyOf(customActions);
mModifyShareAction = modifyShareAction;
mExcludeSharedTextAction = onUpdateSharedTextIsExcluded;
@@ -197,6 +218,21 @@ public final class ChooserActionFactory implements ChooserContentPreviewUi.Actio
mOnEditButtonClicked);
}
+ /** Create a "Share to Nearby" action. */
+ @Override
+ @Nullable
+ public ActionRow.Action createNearbyButton() {
+ if (mNearbySharingTarget == null) {
+ return null;
+ }
+
+ return new ActionRow.Action(
+ com.android.internal.R.id.chooser_nearby_button,
+ mNearbySharingTarget.getDisplayLabel(),
+ mNearbySharingTarget.getDisplayIconHolder().getDisplayIcon(),
+ mOnNearbyButtonClicked);
+ }
+
/** Create custom actions */
@Override
public List<ActionRow.Action> createCustomActions() {
@@ -367,6 +403,64 @@ public final class ChooserActionFactory implements ChooserContentPreviewUi.Actio
};
}
+ private static TargetInfo getNearbySharingTarget(
+ Context context,
+ Intent originalIntent,
+ ChooserIntegratedDeviceComponents integratedComponents) {
+ final ComponentName cn = integratedComponents.getNearbySharingComponent();
+ if (cn == null) {
+ return null;
+ }
+
+ final Intent resolveIntent = new Intent(originalIntent);
+ resolveIntent.setComponent(cn);
+ final ResolveInfo ri = context.getPackageManager().resolveActivity(
+ resolveIntent, PackageManager.GET_META_DATA);
+ if (ri == null || ri.activityInfo == null) {
+ Log.e(TAG, "Device-specified nearby sharing component (" + cn
+ + ") not available");
+ return null;
+ }
+
+ // Allow the nearby sharing component to provide a more appropriate icon and label
+ // for the chip.
+ CharSequence name = null;
+ Drawable icon = null;
+ final Bundle metaData = ri.activityInfo.metaData;
+ if (metaData != null) {
+ try {
+ final Resources pkgRes = context.getPackageManager().getResourcesForActivity(cn);
+ final int nameResId = metaData.getInt(CHIP_LABEL_METADATA_KEY);
+ name = pkgRes.getString(nameResId);
+ final int resId = metaData.getInt(CHIP_ICON_METADATA_KEY);
+ icon = pkgRes.getDrawable(resId);
+ } catch (NameNotFoundException | Resources.NotFoundException ex) { /* ignore */ }
+ }
+ if (TextUtils.isEmpty(name)) {
+ name = ri.loadLabel(context.getPackageManager());
+ }
+ if (icon == null) {
+ icon = ri.loadIcon(context.getPackageManager());
+ }
+
+ final DisplayResolveInfo dri = DisplayResolveInfo.newDisplayResolveInfo(
+ originalIntent, ri, name, "", resolveIntent, null);
+ dri.getDisplayIconHolder().setDisplayIcon(icon);
+ return dri;
+ }
+
+ private static Runnable makeOnNearbyShareRunnable(
+ TargetInfo nearbyShareTarget,
+ ActionActivityStarter activityStarter,
+ Consumer<Integer> finishCallback,
+ ChooserActivityLogger logger) {
+ return () -> {
+ logger.logActionSelected(ChooserActivityLogger.SELECTION_TYPE_NEARBY);
+ // Action bar is user-independent; always start as primary.
+ activityStarter.safelyStartActivityAsPersonalProfileUser(nearbyShareTarget);
+ };
+ }
+
@Nullable
private static ActionRow.Action createCustomAction(
Context context,
diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java
index ab2ba91e..404d6da3 100644
--- a/java/src/com/android/intentresolver/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/ChooserActivity.java
@@ -239,6 +239,7 @@ public class ChooserActivity extends ResolverActivity implements
getIntent(),
getReferrerPackageName(),
getReferrer(),
+ mIntegratedDeviceComponents,
mFeatureFlagRepository);
} catch (IllegalArgumentException e) {
Log.e(TAG, "Caller provided invalid Chooser request parameters", e);
@@ -1260,8 +1261,7 @@ public class ChooserActivity extends ResolverActivity implements
AbstractResolverComparator resolverComparator;
if (appPredictor != null) {
resolverComparator = new AppPredictionServiceResolverComparator(this, getTargetIntent(),
- getReferrerPackageName(), appPredictor, userHandle, getChooserActivityLogger(),
- getIntegratedDeviceComponents().getNearbySharingComponent());
+ getReferrerPackageName(), appPredictor, userHandle, getChooserActivityLogger());
} else {
resolverComparator =
new ResolverRankerServiceResolverComparator(
@@ -1270,8 +1270,7 @@ public class ChooserActivity extends ResolverActivity implements
getReferrerPackageName(),
null,
getChooserActivityLogger(),
- getResolverRankerServiceUserHandleList(userHandle),
- getIntegratedDeviceComponents().getNearbySharingComponent());
+ getResolverRankerServiceUserHandleList(userHandle));
}
return new ChooserListController(
diff --git a/java/src/com/android/intentresolver/ChooserRequestParameters.java b/java/src/com/android/intentresolver/ChooserRequestParameters.java
index 039f50e9..f9004a9b 100644
--- a/java/src/com/android/intentresolver/ChooserRequestParameters.java
+++ b/java/src/com/android/intentresolver/ChooserRequestParameters.java
@@ -69,6 +69,7 @@ public class ChooserRequestParameters {
Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
private final Intent mTarget;
+ private final ChooserIntegratedDeviceComponents mIntegratedDeviceComponents;
private final String mReferrerPackageName;
private final Pair<CharSequence, Integer> mTitleSpec;
private final Intent mReferrerFillInIntent;
@@ -103,11 +104,14 @@ public class ChooserRequestParameters {
final Intent clientIntent,
String referrerPackageName,
final Uri referrer,
+ ChooserIntegratedDeviceComponents integratedDeviceComponents,
FeatureFlagRepository featureFlags) {
final Intent requestedTarget = parseTargetIntentExtra(
clientIntent.getParcelableExtra(Intent.EXTRA_INTENT));
mTarget = intentWithModifiedLaunchFlags(requestedTarget);
+ mIntegratedDeviceComponents = integratedDeviceComponents;
+
mReferrerPackageName = referrerPackageName;
mAdditionalTargets = intentsWithModifiedLaunchFlagsFromExtraIfPresent(
@@ -129,11 +133,8 @@ public class ChooserRequestParameters {
mRefinementIntentSender = clientIntent.getParcelableExtra(
Intent.EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER);
- ComponentName[] filteredComponents = clientIntent.getParcelableArrayExtra(
- Intent.EXTRA_EXCLUDE_COMPONENTS, ComponentName.class);
- mFilteredComponentNames = filteredComponents != null
- ? ImmutableList.copyOf(filteredComponents)
- : ImmutableList.of();
+ mFilteredComponentNames = getFilteredComponentNames(
+ clientIntent, mIntegratedDeviceComponents.getNearbySharingComponent());
mCallerChooserTargets = parseCallerTargetsFromClientIntent(clientIntent);
@@ -251,6 +252,10 @@ public class ChooserRequestParameters {
return mTargetIntentFilter;
}
+ public ChooserIntegratedDeviceComponents getIntegratedDeviceComponents() {
+ return mIntegratedDeviceComponents;
+ }
+
private static boolean isSendAction(@Nullable String action) {
return (Intent.ACTION_SEND.equals(action) || Intent.ACTION_SEND_MULTIPLE.equals(action));
}
@@ -304,6 +309,23 @@ public class ChooserRequestParameters {
return Pair.create(requestedTitle, defaultTitleRes);
}
+ private static ImmutableList<ComponentName> getFilteredComponentNames(
+ Intent clientIntent, @Nullable ComponentName nearbySharingComponent) {
+ Stream<ComponentName> filteredComponents = streamParcelableArrayExtra(
+ clientIntent, Intent.EXTRA_EXCLUDE_COMPONENTS, ComponentName.class, true, true);
+
+ if (nearbySharingComponent != null) {
+ // Exclude Nearby from main list if chip is present, to avoid duplication.
+ // TODO: we don't have an explicit guarantee that the chip will be displayed just
+ // because we have a non-null component; that's ultimately determined by the preview
+ // layout. Maybe we can make that decision further upstream?
+ filteredComponents = Stream.concat(
+ filteredComponents, Stream.of(nearbySharingComponent));
+ }
+
+ return filteredComponents.collect(toImmutableList());
+ }
+
private static ImmutableList<ChooserTarget> parseCallerTargetsFromClientIntent(
Intent clientIntent) {
return
diff --git a/java/src/com/android/intentresolver/ResolverActivity.java b/java/src/com/android/intentresolver/ResolverActivity.java
index 66eae92d..3b9d2a53 100644
--- a/java/src/com/android/intentresolver/ResolverActivity.java
+++ b/java/src/com/android/intentresolver/ResolverActivity.java
@@ -871,8 +871,7 @@ public class ResolverActivity extends FragmentActivity implements
getReferrerPackageName(),
null,
null,
- getResolverRankerServiceUserHandleList(userHandle),
- null);
+ getResolverRankerServiceUserHandleList(userHandle));
return new ResolverListController(
this,
mPm,
diff --git a/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java
index 3c2ee343..56027a16 100644
--- a/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java
@@ -66,6 +66,10 @@ public final class ChooserContentPreviewUi {
@Nullable
ActionRow.Action createEditButton();
+ /** Create an "Share to Nearby" action. */
+ @Nullable
+ ActionRow.Action createNearbyButton();
+
/** Create custom actions */
List<ActionRow.Action> createCustomActions();
diff --git a/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java
index cae9403a..e9d65eed 100644
--- a/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java
@@ -103,8 +103,21 @@ class FileContentPreviewUi extends ContentPreviewUi {
final ActionRow actionRow =
contentPreviewLayout.findViewById(com.android.internal.R.id.chooser_action_row);
actionRow.setActions(
- createActions(new ArrayList<>(), mActionFactory.createCustomActions()));
+ createActions(
+ createFilePreviewActions(),
+ mActionFactory.createCustomActions()));
return contentPreviewLayout;
}
+
+ private List<ActionRow.Action> createFilePreviewActions() {
+ List<ActionRow.Action> actions = new ArrayList<>(1);
+ //TODO(b/120417119):
+ // add action buttonFactory.createCopyButton()
+ ActionRow.Action action = mActionFactory.createNearbyButton();
+ if (action != null) {
+ actions.add(action);
+ }
+ return actions;
+ }
}
diff --git a/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java
index 44a9e654..ece0c312 100644
--- a/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java
@@ -125,6 +125,10 @@ class TextContentPreviewUi extends ContentPreviewUi {
private List<ActionRow.Action> createTextPreviewActions() {
ArrayList<ActionRow.Action> actions = new ArrayList<>(2);
actions.add(mActionFactory.createCopyButton());
+ ActionRow.Action nearbyAction = mActionFactory.createNearbyButton();
+ if (nearbyAction != null) {
+ actions.add(nearbyAction);
+ }
return actions;
}
}
diff --git a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java
index ebf9bf11..9ce875c8 100644
--- a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java
@@ -152,10 +152,14 @@ class UnifiedContentPreviewUi extends ContentPreviewUi {
}
private List<ActionRow.Action> createImagePreviewActions() {
- ArrayList<ActionRow.Action> actions = new ArrayList<>(1);
+ ArrayList<ActionRow.Action> actions = new ArrayList<>(2);
//TODO: add copy action;
+ ActionRow.Action action = mActionFactory.createNearbyButton();
+ if (action != null) {
+ actions.add(action);
+ }
if (mFiles.size() == 1 && mTypeClassifier.isImageType(mFiles.get(0).getMimeType())) {
- ActionRow.Action action = mActionFactory.createEditButton();
+ action = mActionFactory.createEditButton();
if (action != null) {
actions.add(action);
}
diff --git a/java/src/com/android/intentresolver/model/AbstractResolverComparator.java b/java/src/com/android/intentresolver/model/AbstractResolverComparator.java
index bc54e01e..7357fde9 100644
--- a/java/src/com/android/intentresolver/model/AbstractResolverComparator.java
+++ b/java/src/com/android/intentresolver/model/AbstractResolverComparator.java
@@ -16,7 +16,6 @@
package com.android.intentresolver.model;
-import android.annotation.Nullable;
import android.app.usage.UsageStatsManager;
import android.content.ComponentName;
import android.content.Context;
@@ -35,6 +34,8 @@ import com.android.intentresolver.ResolvedComponentInfo;
import com.android.intentresolver.ResolverActivity;
import com.android.intentresolver.chooser.TargetInfo;
+import com.google.android.collect.Lists;
+
import java.text.Collator;
import java.util.ArrayList;
import java.util.Comparator;
@@ -58,7 +59,6 @@ public abstract class AbstractResolverComparator implements Comparator<ResolvedC
protected final Map<UserHandle, UsageStatsManager> mUsmMap = new HashMap<>();
protected String[] mAnnotations;
protected String mContentType;
- protected final ComponentName mPromoteToFirst;
// True if the current share is a link.
private final boolean mHttp;
@@ -109,18 +109,32 @@ public abstract class AbstractResolverComparator implements Comparator<ResolvedC
* Constructor to initialize the comparator.
* @param launchedFromContext the activity calling this comparator
* @param intent original intent
+ * @param resolvedActivityUserSpace refers to the userSpace used by the comparator for
+ * fetching activity stats and recording activity selection.
+ * The latter could be different from the userSpace provided by
+ * context.
+ */
+ public AbstractResolverComparator(
+ Context launchedFromContext,
+ Intent intent,
+ UserHandle resolvedActivityUserSpace) {
+ this(launchedFromContext, intent, Lists.newArrayList(resolvedActivityUserSpace));
+ }
+
+
+ /**
+ * Constructor to initialize the comparator.
+ * @param launchedFromContext the activity calling this comparator
+ * @param intent original intent
* @param resolvedActivityUserSpaceList refers to the userSpace(s) used by the comparator for
* fetching activity stats and recording activity
* selection. The latter could be different from the
* userSpace provided by context.
- * @param promoteToFirst a component to be moved to the front of the app list if it's being
- * ranked. Unlike pinned apps, this cannot be modified by the user.
*/
public AbstractResolverComparator(
Context launchedFromContext,
Intent intent,
- List<UserHandle> resolvedActivityUserSpaceList,
- @Nullable ComponentName promoteToFirst) {
+ List<UserHandle> resolvedActivityUserSpaceList) {
String scheme = intent.getScheme();
mHttp = "http".equals(scheme) || "https".equals(scheme);
mContentType = intent.getType();
@@ -133,7 +147,6 @@ public abstract class AbstractResolverComparator implements Comparator<ResolvedC
(UsageStatsManager) userContext.getSystemService(Context.USAGE_STATS_SERVICE));
}
mAzComparator = new AzInfoComparator(launchedFromContext);
- mPromoteToFirst = promoteToFirst;
}
// get annotations of content from intent.
@@ -189,16 +202,6 @@ public abstract class AbstractResolverComparator implements Comparator<ResolvedC
return -1;
}
- if (mPromoteToFirst != null) {
- // A single component can be cemented to the front of the list. If it is seen, let it
- // always get priority.
- if (mPromoteToFirst.equals(lhs.activityInfo.getComponentName())) {
- return -1;
- } else if (mPromoteToFirst.equals(rhs.activityInfo.getComponentName())) {
- return 1;
- }
- }
-
if (mHttp) {
final boolean lhsSpecific = ResolverActivity.isSpecificUriMatch(lhs.match);
final boolean rhsSpecific = ResolverActivity.isSpecificUriMatch(rhs.match);
diff --git a/java/src/com/android/intentresolver/model/AppPredictionServiceResolverComparator.java b/java/src/com/android/intentresolver/model/AppPredictionServiceResolverComparator.java
index ba054731..84dca3ff 100644
--- a/java/src/com/android/intentresolver/model/AppPredictionServiceResolverComparator.java
+++ b/java/src/com/android/intentresolver/model/AppPredictionServiceResolverComparator.java
@@ -72,9 +72,8 @@ public class AppPredictionServiceResolverComparator extends AbstractResolverComp
String referrerPackage,
AppPredictor appPredictor,
UserHandle user,
- ChooserActivityLogger chooserActivityLogger,
- @Nullable ComponentName promoteToFirst) {
- super(context, intent, Lists.newArrayList(user), promoteToFirst);
+ ChooserActivityLogger chooserActivityLogger) {
+ super(context, intent, Lists.newArrayList(user));
mContext = context;
mIntent = intent;
mAppPredictor = appPredictor;
@@ -117,8 +116,7 @@ public class AppPredictionServiceResolverComparator extends AbstractResolverComp
mReferrerPackage,
() -> mHandler.sendEmptyMessage(RANKER_SERVICE_RESULT),
getChooserActivityLogger(),
- mUser,
- mPromoteToFirst);
+ mUser);
mComparatorModel = buildUpdatedModel();
mResolverRankerService.compute(targets);
} else {
diff --git a/java/src/com/android/intentresolver/model/ResolverRankerServiceResolverComparator.java b/java/src/com/android/intentresolver/model/ResolverRankerServiceResolverComparator.java
index ebaffc36..725212e4 100644
--- a/java/src/com/android/intentresolver/model/ResolverRankerServiceResolverComparator.java
+++ b/java/src/com/android/intentresolver/model/ResolverRankerServiceResolverComparator.java
@@ -102,10 +102,9 @@ public class ResolverRankerServiceResolverComparator extends AbstractResolverCom
*/
public ResolverRankerServiceResolverComparator(Context launchedFromContext, Intent intent,
String referrerPackage, Runnable afterCompute,
- ChooserActivityLogger chooserActivityLogger, UserHandle targetUserSpace,
- ComponentName promoteToFirst) {
+ ChooserActivityLogger chooserActivityLogger, UserHandle targetUserSpace) {
this(launchedFromContext, intent, referrerPackage, afterCompute, chooserActivityLogger,
- Lists.newArrayList(targetUserSpace), promoteToFirst);
+ Lists.newArrayList(targetUserSpace));
}
/**
@@ -118,9 +117,8 @@ public class ResolverRankerServiceResolverComparator extends AbstractResolverCom
*/
public ResolverRankerServiceResolverComparator(Context launchedFromContext, Intent intent,
String referrerPackage, Runnable afterCompute,
- ChooserActivityLogger chooserActivityLogger, List<UserHandle> targetUserSpaceList,
- @Nullable ComponentName promoteToFirst) {
- super(launchedFromContext, intent, targetUserSpaceList, promoteToFirst);
+ ChooserActivityLogger chooserActivityLogger, List<UserHandle> targetUserSpaceList) {
+ super(launchedFromContext, intent, targetUserSpaceList);
mCollator = Collator.getInstance(
launchedFromContext.getResources().getConfiguration().locale);
mReferrerPackage = referrerPackage;
diff --git a/java/tests/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt b/java/tests/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt
index a7273a86..7b9a0ce6 100644
--- a/java/tests/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt
+++ b/java/tests/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt
@@ -53,6 +53,7 @@ class ChooserContentPreviewUiTest {
private val actionFactory = object : ActionFactory {
override fun createCopyButton() = ActionRow.Action(label = "Copy", icon = null) {}
override fun createEditButton(): ActionRow.Action? = null
+ override fun createNearbyButton(): ActionRow.Action? = null
override fun createCustomActions(): List<ActionRow.Action> = emptyList()
override fun getModifyShareAction(): ActionRow.Action? = null
override fun getExcludeSharedTextAction(): Consumer<Boolean> = Consumer<Boolean> {}
diff --git a/java/tests/src/com/android/intentresolver/model/AbstractResolverComparatorTest.java b/java/tests/src/com/android/intentresolver/model/AbstractResolverComparatorTest.java
index 5f0ead7b..892a2e28 100644
--- a/java/tests/src/com/android/intentresolver/model/AbstractResolverComparatorTest.java
+++ b/java/tests/src/com/android/intentresolver/model/AbstractResolverComparatorTest.java
@@ -40,82 +40,52 @@ public class AbstractResolverComparatorTest {
@Test
public void testPinned() {
- ResolvedComponentInfo r1 = createResolvedComponentInfo(
- new ComponentName("package", "class"));
+ ResolvedComponentInfo r1 = new ResolvedComponentInfo(
+ new ComponentName("package", "class"), new Intent(), new ResolveInfo()
+ );
r1.setPinned(true);
- ResolvedComponentInfo r2 = createResolvedComponentInfo(
- new ComponentName("zackage", "zlass"));
+ ResolvedComponentInfo r2 = new ResolvedComponentInfo(
+ new ComponentName("zackage", "zlass"), new Intent(), new ResolveInfo()
+ );
Context context = InstrumentationRegistry.getTargetContext();
- AbstractResolverComparator comparator = getTestComparator(context, null);
+ AbstractResolverComparator comparator = getTestComparator(context);
assertEquals("Pinned ranks over unpinned", -1, comparator.compare(r1, r2));
assertEquals("Unpinned ranks under pinned", 1, comparator.compare(r2, r1));
}
+
@Test
public void testBothPinned() {
- ResolvedComponentInfo r1 = createResolvedComponentInfo(
- new ComponentName("package", "class"));
+ ResolveInfo pmInfo1 = new ResolveInfo();
+ pmInfo1.activityInfo = new ActivityInfo();
+ pmInfo1.activityInfo.packageName = "aaa";
+
+ ResolvedComponentInfo r1 = new ResolvedComponentInfo(
+ new ComponentName("package", "class"), new Intent(), pmInfo1);
r1.setPinned(true);
- ResolvedComponentInfo r2 = createResolvedComponentInfo(
- new ComponentName("zackage", "zlass"));
+ ResolveInfo pmInfo2 = new ResolveInfo();
+ pmInfo2.activityInfo = new ActivityInfo();
+ pmInfo2.activityInfo.packageName = "zzz";
+ ResolvedComponentInfo r2 = new ResolvedComponentInfo(
+ new ComponentName("zackage", "zlass"), new Intent(), pmInfo2);
r2.setPinned(true);
Context context = InstrumentationRegistry.getTargetContext();
- AbstractResolverComparator comparator = getTestComparator(context, null);
+ AbstractResolverComparator comparator = getTestComparator(context);
assertEquals("Both pinned should rank alphabetically", -1, comparator.compare(r1, r2));
}
- @Test
- public void testPromoteToFirst() {
- ComponentName promoteToFirst = new ComponentName("promoted-package", "class");
- ResolvedComponentInfo r1 = createResolvedComponentInfo(promoteToFirst);
-
- ResolvedComponentInfo r2 = createResolvedComponentInfo(
- new ComponentName("package", "class"));
-
- Context context = InstrumentationRegistry.getTargetContext();
- AbstractResolverComparator comparator = getTestComparator(context, promoteToFirst);
-
- assertEquals("PromoteToFirst ranks over non-cemented", -1, comparator.compare(r1, r2));
- assertEquals("Non-cemented ranks under PromoteToFirst", 1, comparator.compare(r2, r1));
- }
-
- @Test
- public void testPromoteToFirstOverPinned() {
- ComponentName cementedComponent = new ComponentName("promoted-package", "class");
- ResolvedComponentInfo r1 = createResolvedComponentInfo(cementedComponent);
-
- ResolvedComponentInfo r2 = createResolvedComponentInfo(
- new ComponentName("package", "class"));
- r2.setPinned(true);
-
- Context context = InstrumentationRegistry.getTargetContext();
- AbstractResolverComparator comparator = getTestComparator(context, cementedComponent);
-
- assertEquals("PromoteToFirst ranks over pinned", -1, comparator.compare(r1, r2));
- assertEquals("Pinned ranks under PromoteToFirst", 1, comparator.compare(r2, r1));
- }
-
- private ResolvedComponentInfo createResolvedComponentInfo(ComponentName component) {
- ResolveInfo info = new ResolveInfo();
- info.activityInfo = new ActivityInfo();
- info.activityInfo.packageName = component.getPackageName();
- info.activityInfo.name = component.getClassName();
- return new ResolvedComponentInfo(component, new Intent(), info);
- }
-
- private AbstractResolverComparator getTestComparator(
- Context context, ComponentName promoteToFirst) {
+ private AbstractResolverComparator getTestComparator(Context context) {
Intent intent = new Intent();
AbstractResolverComparator testComparator =
new AbstractResolverComparator(context, intent,
- Lists.newArrayList(context.getUser()), promoteToFirst) {
+ Lists.newArrayList(context.getUser())) {
@Override
int compare(ResolveInfo lhs, ResolveInfo rhs) {