From 754186806d4e7c1a49ebbf92ef56b53de86a1889 Mon Sep 17 00:00:00 2001 From: Narayan Kamath Date: Thu, 7 May 2020 13:42:05 +0100 Subject: [PATCH] Revert ResolverActivity changes associated with browseables. Reverts changes 69df963, 0c7c5d59, 6cbef19 and others. These changes don't revert cleanly because of several refactorings layered on top of the original changes. The main objective of these change is to get rid of mUseLayoutForBrowseable and associated codepaths as we treat choosing between browseables the same as other choices. Bug: 157460946 Test: manual Test: atest ResolverActivityTest Test: atest ChooserActivityTest Change-Id: Ibe9f2289289f7f5da3986e6892a2ee4ff65765a0 --- .../app/AbstractResolverComparator.java | 31 ------- .../android/internal/app/ChooserActivity.java | 14 ++-- .../internal/app/ChooserListAdapter.java | 4 +- .../internal/app/ResolverActivity.java | 80 ++----------------- .../internal/app/ResolverListAdapter.java | 17 ---- core/res/res/values/strings.xml | 8 -- core/res/res/values/symbols.xml | 1 - .../internal/app/ChooserWrapperActivity.java | 4 +- .../internal/app/ResolverWrapperActivity.java | 6 +- .../internal/app/ResolverWrapperAdapter.java | 5 +- 10 files changed, 21 insertions(+), 149 deletions(-) diff --git a/core/java/com/android/internal/app/AbstractResolverComparator.java b/core/java/com/android/internal/app/AbstractResolverComparator.java index 28c9464fbf664..ea3f1b1fc04cc 100644 --- a/core/java/com/android/internal/app/AbstractResolverComparator.java +++ b/core/java/com/android/internal/app/AbstractResolverComparator.java @@ -54,8 +54,6 @@ public abstract class AbstractResolverComparator implements Comparator payloadIntents, Intent[] initialIntents, List rList, - boolean filterLastUsed, boolean useLayoutForBrowsables, UserHandle userHandle) { + boolean filterLastUsed, UserHandle userHandle) { ChooserListAdapter chooserListAdapter = createChooserListAdapter(context, payloadIntents, initialIntents, rList, filterLastUsed, - useLayoutForBrowsables, createListController(userHandle)); + createListController(userHandle)); AppPredictor.Callback appPredictorCallback = createAppPredictorCallback(chooserListAdapter); AppPredictor appPredictor = setupAppPredictorForUser(userHandle, appPredictorCallback); chooserListAdapter.setAppPredictor(appPredictor); @@ -2518,11 +2515,10 @@ public class ChooserActivity extends ResolverActivity implements @VisibleForTesting public ChooserListAdapter createChooserListAdapter(Context context, List payloadIntents, Intent[] initialIntents, List rList, - boolean filterLastUsed, boolean useLayoutForBrowsables, - ResolverListController resolverListController) { + boolean filterLastUsed, ResolverListController resolverListController) { return new ChooserListAdapter(context, payloadIntents, initialIntents, rList, - filterLastUsed, resolverListController, useLayoutForBrowsables, - this, this, context.getPackageManager()); + filterLastUsed, resolverListController, this, + this, context.getPackageManager()); } @VisibleForTesting diff --git a/core/java/com/android/internal/app/ChooserListAdapter.java b/core/java/com/android/internal/app/ChooserListAdapter.java index f1b716143787d..a87f8477bcf48 100644 --- a/core/java/com/android/internal/app/ChooserListAdapter.java +++ b/core/java/com/android/internal/app/ChooserListAdapter.java @@ -120,15 +120,13 @@ public class ChooserListAdapter extends ResolverListAdapter { public ChooserListAdapter(Context context, List payloadIntents, Intent[] initialIntents, List rList, boolean filterLastUsed, ResolverListController resolverListController, - boolean useLayoutForBrowsables, ChooserListCommunicator chooserListCommunicator, SelectableTargetInfo.SelectableTargetInfoCommunicator selectableTargetInfoCommunicator, PackageManager packageManager) { // Don't send the initial intents through the shared ResolverActivity path, // we want to separate them into a different section. super(context, payloadIntents, null, rList, filterLastUsed, - resolverListController, useLayoutForBrowsables, - chooserListCommunicator, false); + resolverListController, chooserListCommunicator, false); createPlaceHolders(); mMaxShortcutTargetsPerApp = diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 182c7f272186c..91204d5007790 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -133,9 +133,6 @@ public class ResolverActivity extends Activity implements private CharSequence mTitle; private int mDefaultTitleResId; - @VisibleForTesting - protected boolean mUseLayoutForBrowsables; - // Whether or not this activity supports choosing a default handler for the intent. @VisibleForTesting protected boolean mSupportsAlwaysUseOption; @@ -353,10 +350,6 @@ public class ResolverActivity extends Activity implements mTitle = title; mDefaultTitleResId = defaultTitleRes; - mUseLayoutForBrowsables = getTargetIntent() == null - ? false - : isHttpSchemeAndViewAction(getTargetIntent()); - mSupportsAlwaysUseOption = supportsAlwaysUseOption; mWorkProfileUserHandle = fetchWorkProfileUserProfile(); @@ -450,7 +443,6 @@ public class ResolverActivity extends Activity implements initialIntents, rList, filterLastUsed, - mUseLayoutForBrowsables, /* userHandle */ UserHandle.of(UserHandle.myUserId())); return new ResolverMultiProfilePagerAdapter( /* context */ this, @@ -485,7 +477,6 @@ public class ResolverActivity extends Activity implements rList, (filterLastUsed && UserHandle.myUserId() == getPersonalProfileUserHandle().getIdentifier()), - mUseLayoutForBrowsables, /* userHandle */ getPersonalProfileUserHandle()); UserHandle workProfileUserHandle = getWorkProfileUserHandle(); ResolverListAdapter workAdapter = createResolverListAdapter( @@ -495,7 +486,6 @@ public class ResolverActivity extends Activity implements rList, (filterLastUsed && UserHandle.myUserId() == workProfileUserHandle.getIdentifier()), - mUseLayoutForBrowsables, /* userHandle */ workProfileUserHandle); return new ResolverMultiProfilePagerAdapter( /* context */ this, @@ -741,26 +731,6 @@ public class ResolverActivity extends Activity implements mMultiProfilePagerAdapter.getActiveListAdapter().getFilteredPosition() >= 0; if (title == ActionTitle.DEFAULT && defaultTitleRes != 0) { return getString(defaultTitleRes); - } else if (isHttpSchemeAndViewAction(intent)) { - // If the Intent's scheme is http(s) then we need to warn the user that - // they're giving access for the activity to open URLs from this specific host - String dialogTitle = null; - if (named && !mUseLayoutForBrowsables) { - dialogTitle = getString(ActionTitle.BROWSABLE_APP_TITLE_RES, - mMultiProfilePagerAdapter.getActiveListAdapter().getFilteredItem() - .getDisplayLabel()); - } else if (named && mUseLayoutForBrowsables) { - dialogTitle = getString(ActionTitle.BROWSABLE_HOST_APP_TITLE_RES, - intent.getData().getHost(), - mMultiProfilePagerAdapter.getActiveListAdapter().getFilteredItem() - .getDisplayLabel()); - } else if (mMultiProfilePagerAdapter.getActiveListAdapter().areAllTargetsBrowsers()) { - dialogTitle = getString(ActionTitle.BROWSABLE_TITLE_RES); - } else { - dialogTitle = getString(ActionTitle.BROWSABLE_HOST_TITLE_RES, - intent.getData().getHost()); - } - return dialogTitle; } else { return named ? getString(title.namedTitleRes, mMultiProfilePagerAdapter @@ -873,12 +843,6 @@ public class ResolverActivity extends Activity implements mMultiProfilePagerAdapter.clearInactiveProfileCache(); } - private boolean isHttpSchemeAndViewAction(Intent intent) { - return (IntentFilter.SCHEME_HTTP.equals(intent.getScheme()) - || IntentFilter.SCHEME_HTTPS.equals(intent.getScheme())) - && Intent.ACTION_VIEW.equals(intent.getAction()); - } - private boolean hasManagedProfile() { UserManager userManager = (UserManager) getSystemService(Context.USER_SERVICE); if (userManager == null) { @@ -929,13 +893,9 @@ public class ResolverActivity extends Activity implements } else { enabled = true; } - if (mUseLayoutForBrowsables && !ri.handleAllWebDataURI) { - mAlwaysButton.setText(getResources() - .getString(R.string.activity_resolver_set_always)); - } else { - mAlwaysButton.setText(getResources() - .getString(R.string.activity_resolver_use_always)); - } + + mAlwaysButton.setText(getResources() + .getString(R.string.activity_resolver_use_always)); } if (ri != null) { @@ -965,31 +925,7 @@ public class ResolverActivity extends Activity implements ? currentListAdapter.getFilteredPosition() : listView.getCheckedItemPosition(); boolean hasIndexBeenFiltered = !currentListAdapter.hasFilteredItem(); - ResolveInfo ri = currentListAdapter.resolveInfoForPosition(which, hasIndexBeenFiltered); - if (mUseLayoutForBrowsables - && !ri.handleAllWebDataURI && id == R.id.button_always) { - showSettingsForSelected(ri); - } else { - startSelected(which, id == R.id.button_always, hasIndexBeenFiltered); - } - } - - private void showSettingsForSelected(ResolveInfo ri) { - Intent intent = new Intent(); - - final String packageName = ri.activityInfo.packageName; - Bundle showFragmentArgs = new Bundle(); - showFragmentArgs.putString(EXTRA_FRAGMENT_ARG_KEY, OPEN_LINKS_COMPONENT_KEY); - showFragmentArgs.putString("package", packageName); - - // For regular apps, we open the Open by Default page - intent.setAction(Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS) - .setData(Uri.fromParts("package", packageName, null)) - .addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT) - .putExtra(EXTRA_FRAGMENT_ARG_KEY, OPEN_LINKS_COMPONENT_KEY) - .putExtra(EXTRA_SHOW_FRAGMENT_ARGS, showFragmentArgs); - - startActivity(intent); + startSelected(which, id == R.id.button_always, hasIndexBeenFiltered); } public void startSelected(int which, boolean always, boolean hasIndexBeenFiltered) { @@ -1381,12 +1317,12 @@ public class ResolverActivity extends Activity implements @VisibleForTesting protected ResolverListAdapter createResolverListAdapter(Context context, List payloadIntents, Intent[] initialIntents, List rList, - boolean filterLastUsed, boolean useLayoutForBrowsables, UserHandle userHandle) { + boolean filterLastUsed, UserHandle userHandle) { Intent startIntent = getIntent(); boolean isAudioCaptureDevice = startIntent.getBooleanExtra(EXTRA_IS_AUDIO_CAPTURE_DEVICE, false); return new ResolverListAdapter(context, payloadIntents, initialIntents, rList, - filterLastUsed, createListController(userHandle), useLayoutForBrowsables, this, + filterLastUsed, createListController(userHandle), this, isAudioCaptureDevice); } @@ -1760,7 +1696,7 @@ public class ResolverActivity extends Activity implements listView.setOnItemClickListener(listener); listView.setOnItemLongClickListener(listener); - if (mSupportsAlwaysUseOption || mUseLayoutForBrowsables) { + if (mSupportsAlwaysUseOption) { listView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE); } } @@ -1801,7 +1737,7 @@ public class ResolverActivity extends Activity implements } protected void resetButtonBar() { - if (!mSupportsAlwaysUseOption && !mUseLayoutForBrowsables) { + if (!mSupportsAlwaysUseOption) { return; } final ViewGroup buttonLayout = findViewById(R.id.button_bar); diff --git a/core/java/com/android/internal/app/ResolverListAdapter.java b/core/java/com/android/internal/app/ResolverListAdapter.java index d942e859ccd05..97f43d27a9ce1 100644 --- a/core/java/com/android/internal/app/ResolverListAdapter.java +++ b/core/java/com/android/internal/app/ResolverListAdapter.java @@ -69,13 +69,11 @@ public class ResolverListAdapter extends BaseAdapter { private final PackageManager mPm; protected final Context mContext; private final ColorMatrixColorFilter mSuspendedMatrixColorFilter; - private final boolean mUseLayoutForBrowsables; private final int mIconDpi; protected ResolveInfo mLastChosen; private DisplayResolveInfo mOtherProfile; ResolverListController mResolverListController; private int mPlaceholderCount; - private boolean mAllTargetsAreBrowsers = false; protected final LayoutInflater mInflater; @@ -94,7 +92,6 @@ public class ResolverListAdapter extends BaseAdapter { Intent[] initialIntents, List rList, boolean filterLastUsed, ResolverListController resolverListController, - boolean useLayoutForBrowsables, ResolverListCommunicator resolverListCommunicator, boolean isAudioCaptureDevice) { mContext = context; @@ -107,7 +104,6 @@ public class ResolverListAdapter extends BaseAdapter { mFilterLastUsed = filterLastUsed; mResolverListController = resolverListController; mSuspendedMatrixColorFilter = createSuspendedColorMatrix(); - mUseLayoutForBrowsables = useLayoutForBrowsables; mResolverListCommunicator = resolverListCommunicator; mIsAudioCaptureDevice = isAudioCaptureDevice; final ActivityManager am = (ActivityManager) mContext.getSystemService(ACTIVITY_SERVICE); @@ -182,14 +178,6 @@ public class ResolverListAdapter extends BaseAdapter { return mUnfilteredResolveList; } - /** - * @return true if all items in the display list are defined as browsers by - * ResolveInfo.handleAllWebDataURI - */ - public boolean areAllTargetsBrowsers() { - return mAllTargetsAreBrowsers; - } - /** * Rebuild the list of resolvers. In some cases some parts will need some asynchronous work * to complete. @@ -207,7 +195,6 @@ public class ResolverListAdapter extends BaseAdapter { mOtherProfile = null; mLastChosen = null; mLastChosenPosition = -1; - mAllTargetsAreBrowsers = false; mDisplayList.clear(); mIsTabLoaded = false; @@ -322,8 +309,6 @@ public class ResolverListAdapter extends BaseAdapter { boolean doPostProcessing) { int n; if (sortedComponents != null && (n = sortedComponents.size()) != 0) { - mAllTargetsAreBrowsers = mUseLayoutForBrowsables; - // First put the initial items at the top. if (mInitialIntents != null) { for (int i = 0; i < mInitialIntents.length; i++) { @@ -353,7 +338,6 @@ public class ResolverListAdapter extends BaseAdapter { ri.noResourceId = true; ri.icon = 0; } - mAllTargetsAreBrowsers &= ri.handleAllWebDataURI; addResolveInfo(new DisplayResolveInfo(ii, ri, ri.loadLabel(mPm), null, ii, makePresentationGetter(ri))); @@ -364,7 +348,6 @@ public class ResolverListAdapter extends BaseAdapter { for (ResolvedComponentInfo rci : sortedComponents) { final ResolveInfo ri = rci.getResolveInfoAt(0); if (ri != null) { - mAllTargetsAreBrowsers &= ri.handleAllWebDataURI; addResolveInfoWithAlternates(rci); } } diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 233f72eaae1f6..3d3576e8db3a2 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -4137,18 +4137,10 @@ as the default in the activity resolver. [CHAR LIMIT=25] --> Always - - Set to always open - Just once - - Settings - %1$s doesn\'t support work profile diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 758a4f7baffc0..38667c299182f 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2552,7 +2552,6 @@ - diff --git a/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java b/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java index 071b2259e1f09..749b0e54b8807 100644 --- a/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java +++ b/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java @@ -61,12 +61,12 @@ public class ChooserWrapperActivity extends ChooserActivity { @Override public ChooserListAdapter createChooserListAdapter(Context context, List payloadIntents, Intent[] initialIntents, List rList, boolean filterLastUsed, - boolean useLayoutForBrowsables, ResolverListController resolverListController) { + ResolverListController resolverListController) { PackageManager packageManager = sOverrides.packageManager == null ? context.getPackageManager() : sOverrides.packageManager; return new ChooserListAdapter(context, payloadIntents, initialIntents, rList, - filterLastUsed, resolverListController, useLayoutForBrowsables, + filterLastUsed, resolverListController, this, this, packageManager); } diff --git a/core/tests/coretests/src/com/android/internal/app/ResolverWrapperActivity.java b/core/tests/coretests/src/com/android/internal/app/ResolverWrapperActivity.java index 208710498e1c6..0c009a055e2b1 100644 --- a/core/tests/coretests/src/com/android/internal/app/ResolverWrapperActivity.java +++ b/core/tests/coretests/src/com/android/internal/app/ResolverWrapperActivity.java @@ -42,9 +42,9 @@ public class ResolverWrapperActivity extends ResolverActivity { @Override public ResolverListAdapter createResolverListAdapter(Context context, List payloadIntents, Intent[] initialIntents, List rList, - boolean filterLastUsed, boolean useLayoutForBrowsables, UserHandle userHandle) { + boolean filterLastUsed, UserHandle userHandle) { return new ResolverWrapperAdapter(context, payloadIntents, initialIntents, rList, - filterLastUsed, createListController(userHandle), useLayoutForBrowsables, this); + filterLastUsed, createListController(userHandle), this); } @Override @@ -166,4 +166,4 @@ public class ResolverWrapperActivity extends ResolverActivity { }; } } -} \ No newline at end of file +} diff --git a/core/tests/coretests/src/com/android/internal/app/ResolverWrapperAdapter.java b/core/tests/coretests/src/com/android/internal/app/ResolverWrapperAdapter.java index a2191b5fac807..56a70708b6dfd 100644 --- a/core/tests/coretests/src/com/android/internal/app/ResolverWrapperAdapter.java +++ b/core/tests/coretests/src/com/android/internal/app/ResolverWrapperAdapter.java @@ -35,11 +35,10 @@ public class ResolverWrapperAdapter extends ResolverListAdapter { List payloadIntents, Intent[] initialIntents, List rList, boolean filterLastUsed, - ResolverListController resolverListController, boolean useLayoutForBrowsables, + ResolverListController resolverListController, ResolverListCommunicator resolverListCommunicator) { super(context, payloadIntents, initialIntents, rList, filterLastUsed, - resolverListController, - useLayoutForBrowsables, resolverListCommunicator, false); + resolverListController, resolverListCommunicator, false); } public CountingIdlingResource getLabelIdlingResource() {