Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 23c2cf1d authored by Daniel Nishi's avatar Daniel Nishi Committed by android-build-merger
Browse files

Merge "Fix an override filter bug." into oc-dev

am: 5cc0a122

Change-Id: I9188da01862ae2af964ac09b84f5b3c6078572cc
parents f51db284 5cc0a122
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -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) {
@@ -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;
@@ -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);
        }

@@ -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)) {
+35 −8
Original line number Diff line number Diff line
@@ -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");
@@ -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");
@@ -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");
@@ -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();
    }
}