Loading src/com/android/settings/applications/ManageApplications.java +9 −9 Original line number Diff line number Diff line Loading @@ -418,14 +418,14 @@ public class ManageApplications extends InstrumentedPreferenceFragment mFilterAdapter.enableFilter(FILTER_APPS_POWER_WHITELIST_ALL); } AppFilter overrideFilter = getOverrideFilter(mListType, mStorageType, mVolumeUuid); if (overrideFilter != null) { mApplications.setOverrideFilter(overrideFilter); AppFilter compositeFilter = getCompositeFilter(mListType, mStorageType, mVolumeUuid); if (compositeFilter != null) { mApplications.setCompositeFilter(compositeFilter); } } @VisibleForTesting static @Nullable AppFilter getOverrideFilter(int listType, int storageType, String volumeUuid) { static @Nullable AppFilter getCompositeFilter(int listType, int storageType, String volumeUuid) { AppFilter filter = new VolumeFilter(volumeUuid); if (listType == LIST_TYPE_STORAGE) { if (storageType == STORAGE_TYPE_MUSIC) { Loading Loading @@ -845,7 +845,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment private int mWhichSize = SIZE_TOTAL; CharSequence mCurFilterPrefix; private PackageManager mPm; private AppFilter mOverrideFilter; private AppFilter mCompositeFilter; private boolean mHasReceivedLoadEntries; private boolean mHasReceivedBridgeCallback; private FileViewHolderController mExtraViewController; Loading Loading @@ -909,8 +909,8 @@ public class ManageApplications extends InstrumentedPreferenceFragment } } public void setOverrideFilter(AppFilter overrideFilter) { mOverrideFilter = overrideFilter; public void setCompositeFilter(AppFilter compositeFilter) { mCompositeFilter = compositeFilter; rebuild(true); } Loading Loading @@ -988,8 +988,8 @@ public class ManageApplications extends InstrumentedPreferenceFragment mWhichSize = SIZE_INTERNAL; } filterObj = FILTERS[mFilterMode]; if (mOverrideFilter != null) { filterObj = mOverrideFilter; if (mCompositeFilter != null) { filterObj = new CompoundFilter(filterObj, mCompositeFilter); } if (!mManageApplications.mShowSystem) { if (LIST_TYPES_WITH_INSTANT.contains(mManageApplications.mListType)) { Loading tests/unit/src/com/android/settings/applications/ManageApplicationsTest.java +35 −8 Original line number Diff line number Diff line Loading @@ -22,16 +22,20 @@ import static org.mockito.Mockito.mock; import android.content.pm.ApplicationInfo; import com.android.settingslib.applications.AppUtils; import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.ApplicationsState.AppFilter; import com.android.settingslib.applications.ApplicationsState.CompoundFilter; import com.android.settingslib.applications.instantapps.InstantAppDataProvider; import java.lang.reflect.Field; import org.junit.Test; public class ManageApplicationsTest { @Test public void getOverrideFilter_filtersVolumeForAudio() { public void getCompositeFilter_filtersVolumeForAudio() { AppFilter filter = ManageApplications.getOverrideFilter( ManageApplications.getCompositeFilter( ManageApplications.LIST_TYPE_STORAGE, ManageApplications.STORAGE_TYPE_MUSIC, "uuid"); Loading @@ -45,9 +49,9 @@ public class ManageApplicationsTest { } @Test public void getOverrideFilter_filtersVolumeForVideo() { public void getCompositeFilter_filtersVolumeForVideo() { AppFilter filter = ManageApplications.getOverrideFilter( ManageApplications.getCompositeFilter( ManageApplications.LIST_TYPE_MOVIES, ManageApplications.STORAGE_TYPE_DEFAULT, "uuid"); Loading @@ -61,9 +65,9 @@ public class ManageApplicationsTest { } @Test public void getOverrideFilter_filtersVolumeForGames() { public void getCompositeFilter_filtersVolumeForGames() { ApplicationsState.AppFilter filter = ManageApplications.getOverrideFilter( ManageApplications.getCompositeFilter( ManageApplications.LIST_TYPE_GAMES, ManageApplications.STORAGE_TYPE_DEFAULT, "uuid"); Loading @@ -77,12 +81,35 @@ public class ManageApplicationsTest { } @Test public void getOverrideFilter_isEmptyNormally() { public void getCompositeFilter_isEmptyNormally() { ApplicationsState.AppFilter filter = ManageApplications.getOverrideFilter( ManageApplications.getCompositeFilter( ManageApplications.LIST_TYPE_MAIN, ManageApplications.STORAGE_TYPE_DEFAULT, "uuid"); assertThat(filter).isNull(); } @Test public void getCompositeFilter_worksWithInstantApps() throws Exception { Field field = AppUtils.class.getDeclaredField("sInstantAppDataProvider"); field.setAccessible(true); field.set(AppUtils.class, (InstantAppDataProvider) (i -> true)); AppFilter filter = ManageApplications.getCompositeFilter( ManageApplications.LIST_TYPE_STORAGE, ManageApplications.STORAGE_TYPE_MUSIC, "uuid"); AppFilter composedFilter = new CompoundFilter(ApplicationsState.FILTER_INSTANT, filter); final ApplicationInfo info = new ApplicationInfo(); info.volumeUuid = "uuid"; info.category = ApplicationInfo.CATEGORY_AUDIO; info.privateFlags = ApplicationInfo.PRIVATE_FLAG_INSTANT; final ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class); appEntry.info = info; assertThat(composedFilter.filterApp(appEntry)).isTrue(); } } Loading
src/com/android/settings/applications/ManageApplications.java +9 −9 Original line number Diff line number Diff line Loading @@ -418,14 +418,14 @@ public class ManageApplications extends InstrumentedPreferenceFragment mFilterAdapter.enableFilter(FILTER_APPS_POWER_WHITELIST_ALL); } AppFilter overrideFilter = getOverrideFilter(mListType, mStorageType, mVolumeUuid); if (overrideFilter != null) { mApplications.setOverrideFilter(overrideFilter); AppFilter compositeFilter = getCompositeFilter(mListType, mStorageType, mVolumeUuid); if (compositeFilter != null) { mApplications.setCompositeFilter(compositeFilter); } } @VisibleForTesting static @Nullable AppFilter getOverrideFilter(int listType, int storageType, String volumeUuid) { static @Nullable AppFilter getCompositeFilter(int listType, int storageType, String volumeUuid) { AppFilter filter = new VolumeFilter(volumeUuid); if (listType == LIST_TYPE_STORAGE) { if (storageType == STORAGE_TYPE_MUSIC) { Loading Loading @@ -845,7 +845,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment private int mWhichSize = SIZE_TOTAL; CharSequence mCurFilterPrefix; private PackageManager mPm; private AppFilter mOverrideFilter; private AppFilter mCompositeFilter; private boolean mHasReceivedLoadEntries; private boolean mHasReceivedBridgeCallback; private FileViewHolderController mExtraViewController; Loading Loading @@ -909,8 +909,8 @@ public class ManageApplications extends InstrumentedPreferenceFragment } } public void setOverrideFilter(AppFilter overrideFilter) { mOverrideFilter = overrideFilter; public void setCompositeFilter(AppFilter compositeFilter) { mCompositeFilter = compositeFilter; rebuild(true); } Loading Loading @@ -988,8 +988,8 @@ public class ManageApplications extends InstrumentedPreferenceFragment mWhichSize = SIZE_INTERNAL; } filterObj = FILTERS[mFilterMode]; if (mOverrideFilter != null) { filterObj = mOverrideFilter; if (mCompositeFilter != null) { filterObj = new CompoundFilter(filterObj, mCompositeFilter); } if (!mManageApplications.mShowSystem) { if (LIST_TYPES_WITH_INSTANT.contains(mManageApplications.mListType)) { Loading
tests/unit/src/com/android/settings/applications/ManageApplicationsTest.java +35 −8 Original line number Diff line number Diff line Loading @@ -22,16 +22,20 @@ import static org.mockito.Mockito.mock; import android.content.pm.ApplicationInfo; import com.android.settingslib.applications.AppUtils; import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.ApplicationsState.AppFilter; import com.android.settingslib.applications.ApplicationsState.CompoundFilter; import com.android.settingslib.applications.instantapps.InstantAppDataProvider; import java.lang.reflect.Field; import org.junit.Test; public class ManageApplicationsTest { @Test public void getOverrideFilter_filtersVolumeForAudio() { public void getCompositeFilter_filtersVolumeForAudio() { AppFilter filter = ManageApplications.getOverrideFilter( ManageApplications.getCompositeFilter( ManageApplications.LIST_TYPE_STORAGE, ManageApplications.STORAGE_TYPE_MUSIC, "uuid"); Loading @@ -45,9 +49,9 @@ public class ManageApplicationsTest { } @Test public void getOverrideFilter_filtersVolumeForVideo() { public void getCompositeFilter_filtersVolumeForVideo() { AppFilter filter = ManageApplications.getOverrideFilter( ManageApplications.getCompositeFilter( ManageApplications.LIST_TYPE_MOVIES, ManageApplications.STORAGE_TYPE_DEFAULT, "uuid"); Loading @@ -61,9 +65,9 @@ public class ManageApplicationsTest { } @Test public void getOverrideFilter_filtersVolumeForGames() { public void getCompositeFilter_filtersVolumeForGames() { ApplicationsState.AppFilter filter = ManageApplications.getOverrideFilter( ManageApplications.getCompositeFilter( ManageApplications.LIST_TYPE_GAMES, ManageApplications.STORAGE_TYPE_DEFAULT, "uuid"); Loading @@ -77,12 +81,35 @@ public class ManageApplicationsTest { } @Test public void getOverrideFilter_isEmptyNormally() { public void getCompositeFilter_isEmptyNormally() { ApplicationsState.AppFilter filter = ManageApplications.getOverrideFilter( ManageApplications.getCompositeFilter( ManageApplications.LIST_TYPE_MAIN, ManageApplications.STORAGE_TYPE_DEFAULT, "uuid"); assertThat(filter).isNull(); } @Test public void getCompositeFilter_worksWithInstantApps() throws Exception { Field field = AppUtils.class.getDeclaredField("sInstantAppDataProvider"); field.setAccessible(true); field.set(AppUtils.class, (InstantAppDataProvider) (i -> true)); AppFilter filter = ManageApplications.getCompositeFilter( ManageApplications.LIST_TYPE_STORAGE, ManageApplications.STORAGE_TYPE_MUSIC, "uuid"); AppFilter composedFilter = new CompoundFilter(ApplicationsState.FILTER_INSTANT, filter); final ApplicationInfo info = new ApplicationInfo(); info.volumeUuid = "uuid"; info.category = ApplicationInfo.CATEGORY_AUDIO; info.privateFlags = ApplicationInfo.PRIVATE_FLAG_INSTANT; final ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class); appEntry.info = info; assertThat(composedFilter.filterApp(appEntry)).isTrue(); } }