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

Commit 50a0aafd authored by Raff Tsai's avatar Raff Tsai
Browse files

Fix Battery optimization page broken

- mCompositeFilter is not changed after toggling filter, so the
list items are not changing. Fixed by changing mCompositeFilter
after toggle is changed.
- Because mSession.rebuild returns null, removes some dead code.

Fixes: 149362024
Test: 1. Settings > App & notifications > Special app access >
         Battery optimization
      2. Toggle Not optimized and All apps
      3. App list should change after step 2

Change-Id: Ifd5c7b0f1d809ae7a49d62b39e34fa899700326c
parent 1e7ecc1a
Loading
Loading
Loading
Loading
+27 −28
Original line number Original line Diff line number Diff line
@@ -43,6 +43,7 @@ import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageItemInfo;
import android.content.pm.PackageItemInfo;
import android.net.Uri;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Bundle;
import android.os.Environment;
import android.os.Environment;
import android.os.IBinder;
import android.os.IBinder;
@@ -143,7 +144,7 @@ public class ManageApplications extends InstrumentedFragment
        implements View.OnClickListener, OnItemSelectedListener, SearchView.OnQueryTextListener {
        implements View.OnClickListener, OnItemSelectedListener, SearchView.OnQueryTextListener {


    static final String TAG = "ManageApplications";
    static final String TAG = "ManageApplications";
    static final boolean DEBUG = false;
    static final boolean DEBUG = Build.IS_DEBUGGABLE;


    // Intent extras.
    // Intent extras.
    public static final String EXTRA_CLASSNAME = "classname";
    public static final String EXTRA_CLASSNAME = "classname";
@@ -178,8 +179,6 @@ public class ManageApplications extends InstrumentedFragment
    public static final int STORAGE_TYPE_LEGACY = 2; // Show apps even if they can be categorized.
    public static final int STORAGE_TYPE_LEGACY = 2; // Show apps even if they can be categorized.
    public static final int STORAGE_TYPE_PHOTOS_VIDEOS = 3;
    public static final int STORAGE_TYPE_PHOTOS_VIDEOS = 3;


    private static final int NO_USER_SPECIFIED = -1;

    /**
    /**
     * Intents with action {@code android.settings.MANAGE_APP_OVERLAY_PERMISSION}
     * Intents with action {@code android.settings.MANAGE_APP_OVERLAY_PERMISSION}
     * and data URI scheme {@code package} don't go to the app-specific screen for managing the
     * and data URI scheme {@code package} don't go to the app-specific screen for managing the
@@ -461,19 +460,8 @@ public class ManageApplications extends InstrumentedFragment
        pinnedHeader.addView(mSpinnerHeader, 0);
        pinnedHeader.addView(mSpinnerHeader, 0);


        final AppFilterRegistry appFilterRegistry = AppFilterRegistry.getInstance();
        final AppFilterRegistry appFilterRegistry = AppFilterRegistry.getInstance();
        mFilterAdapter.enableFilter(appFilterRegistry.getDefaultFilterType(mListType));
        final int filterType = appFilterRegistry.getDefaultFilterType(mListType);

        mFilterAdapter.enableFilter(filterType);
        AppFilter compositeFilter = getCompositeFilter(mListType, mStorageType, mVolumeUuid);
        if (mIsWorkOnly) {
            compositeFilter = new CompoundFilter(compositeFilter, ApplicationsState.FILTER_WORK);
        }
        if (mIsPersonalOnly) {
            compositeFilter = new CompoundFilter(compositeFilter,
                    ApplicationsState.FILTER_PERSONAL);
        }
        if (compositeFilter != null) {
            mApplications.setCompositeFilter(compositeFilter);
        }


        if (mListType == LIST_TYPE_MAIN) {
        if (mListType == LIST_TYPE_MAIN) {
            if (UserManager.get(getActivity()).getUserProfiles().size() > 1 && !mIsWorkOnly
            if (UserManager.get(getActivity()).getUserProfiles().size() > 1 && !mIsWorkOnly
@@ -491,6 +479,8 @@ public class ManageApplications extends InstrumentedFragment
        if (mListType == LIST_TYPE_HIGH_POWER) {
        if (mListType == LIST_TYPE_HIGH_POWER) {
            mFilterAdapter.enableFilter(FILTER_APPS_POWER_WHITELIST_ALL);
            mFilterAdapter.enableFilter(FILTER_APPS_POWER_WHITELIST_ALL);
        }
        }

        setCompositeFilter();
    }
    }


    @VisibleForTesting
    @VisibleForTesting
@@ -511,11 +501,8 @@ public class ManageApplications extends InstrumentedFragment
            return new CompoundFilter(ApplicationsState.FILTER_MOVIES, filter);
            return new CompoundFilter(ApplicationsState.FILTER_MOVIES, filter);
        } else if (listType == LIST_TYPE_PHOTOGRAPHY) {
        } else if (listType == LIST_TYPE_PHOTOGRAPHY) {
            return new CompoundFilter(ApplicationsState.FILTER_PHOTOS, filter);
            return new CompoundFilter(ApplicationsState.FILTER_PHOTOS, filter);
        } else {
            final AppFilterRegistry appFilterRegistry = AppFilterRegistry.getInstance();
            return appFilterRegistry.get(
                    appFilterRegistry.getDefaultFilterType(listType)).getFilter();
        }
        }
        return null;
    }
    }


    @Override
    @Override
@@ -615,6 +602,21 @@ public class ManageApplications extends InstrumentedFragment
        }
        }
    }
    }


    private void setCompositeFilter() {
        AppFilter compositeFilter = getCompositeFilter(mListType, mStorageType, mVolumeUuid);
        if (compositeFilter == null) {
            compositeFilter = mFilter.getFilter();
        }
        if (mIsWorkOnly) {
            compositeFilter = new CompoundFilter(compositeFilter, ApplicationsState.FILTER_WORK);
        }
        if (mIsPersonalOnly) {
            compositeFilter = new CompoundFilter(compositeFilter,
                    ApplicationsState.FILTER_PERSONAL);
        }
        mApplications.setCompositeFilter(compositeFilter);
    }

    // utility method used to start sub activity
    // utility method used to start sub activity
    private void startApplicationDetailsActivity() {
    private void startApplicationDetailsActivity() {
        switch (mListType) {
        switch (mListType) {
@@ -823,6 +825,7 @@ public class ManageApplications extends InstrumentedFragment
    @Override
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        mFilter = mFilterAdapter.getFilter(position);
        mFilter = mFilterAdapter.getFilter(position);
        setCompositeFilter();
        mApplications.setFilter(mFilter);
        mApplications.setFilter(mFilter);


        if (DEBUG) {
        if (DEBUG) {
@@ -1227,14 +1230,10 @@ public class ManageApplications extends InstrumentedFragment
                comparatorObj = ApplicationsState.ALPHA_COMPARATOR;
                comparatorObj = ApplicationsState.ALPHA_COMPARATOR;
            }
            }


            filterObj = new CompoundFilter(filterObj, ApplicationsState.FILTER_NOT_HIDE);
            final AppFilter finalFilterObj = new CompoundFilter(filterObj,
            AppFilter finalFilterObj = filterObj;
                    ApplicationsState.FILTER_NOT_HIDE);
            ThreadUtils.postOnBackgroundThread(() -> {
            ThreadUtils.postOnBackgroundThread(() -> {
                final ArrayList<AppEntry> entries = mSession.rebuild(finalFilterObj,
                mSession.rebuild(finalFilterObj, comparatorObj, false);
                        comparatorObj, false);
                if (entries != null) {
                    ThreadUtils.postOnMainThread(() -> onRebuildComplete(entries));
                }
            });
            });
        }
        }


@@ -1284,7 +1283,7 @@ public class ManageApplications extends InstrumentedFragment
        @Override
        @Override
        public void onRebuildComplete(ArrayList<AppEntry> entries) {
        public void onRebuildComplete(ArrayList<AppEntry> entries) {
            if (DEBUG) {
            if (DEBUG) {
                Log.d(TAG, "onRebuildComplete");
                Log.d(TAG, "onRebuildComplete size=" + entries.size());
            }
            }
            final int filterType = mAppFilter.getFilterType();
            final int filterType = mAppFilter.getFilterType();
            if (filterType == FILTER_APPS_POWER_WHITELIST ||
            if (filterType == FILTER_APPS_POWER_WHITELIST ||