Merge "Fix an override filter bug." into oc-dev am: 5cc0a122d3

am: 23c2cf1d68

Change-Id: I88545ebb5e3a1b05268b7485c0d7dc4323ff661f
This commit is contained in:
Daniel Nishi
2017-05-30 19:54:19 +00:00
committed by android-build-merger
2 changed files with 44 additions and 17 deletions

View File

@@ -418,14 +418,14 @@ public class ManageApplications extends InstrumentedPreferenceFragment
mFilterAdapter.enableFilter(FILTER_APPS_POWER_WHITELIST_ALL); mFilterAdapter.enableFilter(FILTER_APPS_POWER_WHITELIST_ALL);
} }
AppFilter overrideFilter = getOverrideFilter(mListType, mStorageType, mVolumeUuid); AppFilter compositeFilter = getCompositeFilter(mListType, mStorageType, mVolumeUuid);
if (overrideFilter != null) { if (compositeFilter != null) {
mApplications.setOverrideFilter(overrideFilter); mApplications.setCompositeFilter(compositeFilter);
} }
} }
@VisibleForTesting @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); AppFilter filter = new VolumeFilter(volumeUuid);
if (listType == LIST_TYPE_STORAGE) { if (listType == LIST_TYPE_STORAGE) {
if (storageType == STORAGE_TYPE_MUSIC) { if (storageType == STORAGE_TYPE_MUSIC) {
@@ -840,7 +840,7 @@ public class ManageApplications extends InstrumentedPreferenceFragment
private int mWhichSize = SIZE_TOTAL; private int mWhichSize = SIZE_TOTAL;
CharSequence mCurFilterPrefix; CharSequence mCurFilterPrefix;
private PackageManager mPm; private PackageManager mPm;
private AppFilter mOverrideFilter; private AppFilter mCompositeFilter;
private boolean mHasReceivedLoadEntries; private boolean mHasReceivedLoadEntries;
private boolean mHasReceivedBridgeCallback; private boolean mHasReceivedBridgeCallback;
private FileViewHolderController mExtraViewController; private FileViewHolderController mExtraViewController;
@@ -904,8 +904,8 @@ public class ManageApplications extends InstrumentedPreferenceFragment
} }
} }
public void setOverrideFilter(AppFilter overrideFilter) { public void setCompositeFilter(AppFilter compositeFilter) {
mOverrideFilter = overrideFilter; mCompositeFilter = compositeFilter;
rebuild(true); rebuild(true);
} }
@@ -983,8 +983,8 @@ public class ManageApplications extends InstrumentedPreferenceFragment
mWhichSize = SIZE_INTERNAL; mWhichSize = SIZE_INTERNAL;
} }
filterObj = FILTERS[mFilterMode]; filterObj = FILTERS[mFilterMode];
if (mOverrideFilter != null) { if (mCompositeFilter != null) {
filterObj = mOverrideFilter; filterObj = new CompoundFilter(filterObj, mCompositeFilter);
} }
if (!mManageApplications.mShowSystem) { if (!mManageApplications.mShowSystem) {
if (LIST_TYPES_WITH_INSTANT.contains(mManageApplications.mListType)) { if (LIST_TYPES_WITH_INSTANT.contains(mManageApplications.mListType)) {

View File

@@ -20,9 +20,13 @@ import android.content.pm.ApplicationInfo;
import android.support.test.filters.SmallTest; import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4; import android.support.test.runner.AndroidJUnit4;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.ApplicationsState.AppFilter; 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; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -33,9 +37,9 @@ import static org.mockito.Mockito.mock;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class ManageApplicationsUnitTest { public class ManageApplicationsUnitTest {
@Test @Test
public void getOverrideFilter_filtersVolumeForAudio() { public void getCompositeFilter_filtersVolumeForAudio() {
AppFilter filter = AppFilter filter =
ManageApplications.getOverrideFilter( ManageApplications.getCompositeFilter(
ManageApplications.LIST_TYPE_STORAGE, ManageApplications.LIST_TYPE_STORAGE,
ManageApplications.STORAGE_TYPE_MUSIC, ManageApplications.STORAGE_TYPE_MUSIC,
"uuid"); "uuid");
@@ -49,9 +53,9 @@ public class ManageApplicationsUnitTest {
} }
@Test @Test
public void getOverrideFilter_filtersVolumeForVideo() { public void getCompositeFilter_filtersVolumeForVideo() {
AppFilter filter = AppFilter filter =
ManageApplications.getOverrideFilter( ManageApplications.getCompositeFilter(
ManageApplications.LIST_TYPE_MOVIES, ManageApplications.LIST_TYPE_MOVIES,
ManageApplications.STORAGE_TYPE_DEFAULT, ManageApplications.STORAGE_TYPE_DEFAULT,
"uuid"); "uuid");
@@ -65,9 +69,9 @@ public class ManageApplicationsUnitTest {
} }
@Test @Test
public void getOverrideFilter_filtersVolumeForGames() { public void getCompositeFilter_filtersVolumeForGames() {
ApplicationsState.AppFilter filter = ApplicationsState.AppFilter filter =
ManageApplications.getOverrideFilter( ManageApplications.getCompositeFilter(
ManageApplications.LIST_TYPE_GAMES, ManageApplications.LIST_TYPE_GAMES,
ManageApplications.STORAGE_TYPE_DEFAULT, ManageApplications.STORAGE_TYPE_DEFAULT,
"uuid"); "uuid");
@@ -81,12 +85,35 @@ public class ManageApplicationsUnitTest {
} }
@Test @Test
public void getOverrideFilter_isEmptyNormally() { public void getCompositeFilter_isEmptyNormally() {
ApplicationsState.AppFilter filter = ApplicationsState.AppFilter filter =
ManageApplications.getOverrideFilter( ManageApplications.getCompositeFilter(
ManageApplications.LIST_TYPE_MAIN, ManageApplications.LIST_TYPE_MAIN,
ManageApplications.STORAGE_TYPE_DEFAULT, ManageApplications.STORAGE_TYPE_DEFAULT,
"uuid"); "uuid");
assertThat(filter).isNull(); 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();
}
} }