From 6f3900f6b552f09357227335b77c121728d7134e Mon Sep 17 00:00:00 2001 From: Daniel Nishi Date: Tue, 11 Jul 2017 13:38:38 -0700 Subject: [PATCH] Fix filter bug for non-internal app filtering. By default, the filter would show all non-categorized apps. This, however, regressed the external storage apps view which does not have categorization (yet). By adding back in a legacy option to use the old purely UUID filtering, we can fix the regression. Change-Id: I72d8d3bc08fbdff53374eb1e973bce9f8d7e2e79 Fixes: 63542896 Test: Settings unit test --- .../applications/ManageApplications.java | 5 +++-- .../deviceinfo/PrivateVolumeSettings.java | 3 +++ .../applications/ManageApplicationsUnitTest.java | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java index 07632da6bf9..c0df50c5f24 100644 --- a/src/com/android/settings/applications/ManageApplications.java +++ b/src/com/android/settings/applications/ManageApplications.java @@ -214,8 +214,9 @@ public class ManageApplications extends InstrumentedPreferenceFragment } // Storage types. Used to determine what the extra item in the list of preferences is. - public static final int STORAGE_TYPE_DEFAULT = 0; + public static final int STORAGE_TYPE_DEFAULT = 0; // Show all apps that are not categorized. public static final int STORAGE_TYPE_MUSIC = 1; + public static final int STORAGE_TYPE_LEGACY = 2; // Show apps even if they can be categorized. // sort order private int mSortOrder = R.id.sort_order_alpha; @@ -433,7 +434,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment if (listType == LIST_TYPE_STORAGE) { if (storageType == STORAGE_TYPE_MUSIC) { filter = new CompoundFilter(ApplicationsState.FILTER_AUDIO, filter); - } else { + } else if (storageType == STORAGE_TYPE_DEFAULT) { filter = new CompoundFilter(ApplicationsState.FILTER_OTHER_APPS, filter); } return filter; diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java index 10df004b1b5..04da586726e 100644 --- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java +++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java @@ -473,6 +473,9 @@ public class PrivateVolumeSettings extends SettingsPreferenceFragment { StorageUseActivity.class.getName()); args.putString(ManageApplications.EXTRA_VOLUME_UUID, mVolume.getFsUuid()); args.putString(ManageApplications.EXTRA_VOLUME_NAME, mVolume.getDescription()); + args.putInt( + ManageApplications.EXTRA_STORAGE_TYPE, + ManageApplications.STORAGE_TYPE_LEGACY); intent = Utils.onBuildStartFragmentIntent(getActivity(), ManageApplications.class.getName(), args, null, R.string.apps_storage, null, false, getMetricsCategory()); diff --git a/tests/unit/src/com/android/settings/applications/ManageApplicationsUnitTest.java b/tests/unit/src/com/android/settings/applications/ManageApplicationsUnitTest.java index c65f9ea3504..ce8603bde9a 100644 --- a/tests/unit/src/com/android/settings/applications/ManageApplicationsUnitTest.java +++ b/tests/unit/src/com/android/settings/applications/ManageApplicationsUnitTest.java @@ -116,4 +116,20 @@ public class ManageApplicationsUnitTest { assertThat(composedFilter.filterApp(appEntry)).isTrue(); } + + @Test + public void getCompositeFilter_worksForLegacyPrivateSettings() throws Exception { + ApplicationsState.AppFilter filter = + ManageApplications.getCompositeFilter( + ManageApplications.LIST_TYPE_STORAGE, + ManageApplications.STORAGE_TYPE_LEGACY, + "uuid"); + final ApplicationInfo info = new ApplicationInfo(); + info.volumeUuid = "uuid"; + info.category = ApplicationInfo.CATEGORY_GAME; + final ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class); + appEntry.info = info; + + assertThat(filter.filterApp(appEntry)).isTrue(); + } }