Merge "Fix an override filter bug." into oc-dev
am: 5cc0a122d3
Change-Id: I9188da01862ae2af964ac09b84f5b3c6078572cc
This commit is contained in:
@@ -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) {
|
||||||
@@ -845,7 +845,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;
|
||||||
@@ -909,8 +909,8 @@ public class ManageApplications extends InstrumentedPreferenceFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOverrideFilter(AppFilter overrideFilter) {
|
public void setCompositeFilter(AppFilter compositeFilter) {
|
||||||
mOverrideFilter = overrideFilter;
|
mCompositeFilter = compositeFilter;
|
||||||
rebuild(true);
|
rebuild(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -988,8 +988,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)) {
|
||||||
|
@@ -22,16 +22,20 @@ import static org.mockito.Mockito.mock;
|
|||||||
|
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
public class ManageApplicationsTest {
|
public class ManageApplicationsTest {
|
||||||
@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");
|
||||||
@@ -45,9 +49,9 @@ public class ManageApplicationsTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@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");
|
||||||
@@ -61,9 +65,9 @@ public class ManageApplicationsTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@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");
|
||||||
@@ -77,12 +81,35 @@ public class ManageApplicationsTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user