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

Commit 66250a05 authored by Song Chun Fan's avatar Song Chun Fan Committed by Android (Google) Code Review
Browse files

Merge "[pm] fix ConcurrentModificationException in AppsFilter" into udc-dev

parents 3fdc0c48 2e278e38
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -256,6 +256,7 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
        private final PackageManagerInternal mPmInternal;
        private volatile boolean mFeatureEnabled =
                PackageManager.APP_ENUMERATION_ENABLED_BY_DEFAULT;
        @GuardedBy("mDisabledPackages")
        private final ArraySet<String> mDisabledPackages = new ArraySet<>();

        @Nullable
@@ -272,7 +273,9 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
            mInjector = null;
            mPmInternal = null;
            mFeatureEnabled = orig.mFeatureEnabled;
            synchronized (orig.mDisabledPackages) {
                mDisabledPackages.addAll(orig.mDisabledPackages);
            }
            mLoggingEnabled = orig.mLoggingEnabled;
        }

@@ -319,7 +322,9 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
                Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "packageIsEnabled");
            }
            try {
                synchronized (mDisabledPackages) {
                    return !mDisabledPackages.contains(pkg.getPackageName());
                }
            } finally {
                if (DEBUG_TRACING) {
                    Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
@@ -376,11 +381,13 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
            final boolean enabled = mInjector.getCompatibility().isChangeEnabledInternalNoLogging(
                    PackageManager.FILTER_APPLICATION_QUERY,
                    AndroidPackageUtils.generateAppInfoWithoutState(pkg));
            synchronized (mDisabledPackages) {
                if (enabled) {
                    mDisabledPackages.remove(pkg.getPackageName());
                } else {
                    mDisabledPackages.add(pkg.getPackageName());
                }
            }
            if (mAppsFilter != null) {
                mAppsFilter.onChanged();
            }
@@ -393,7 +400,9 @@ public final class AppsFilterImpl extends AppsFilterLocked implements Watchable,
                    || setting.getPkg().isDebuggable());
            enableLogging(setting.getAppId(), enableLogging);
            if (removed) {
                synchronized (mDisabledPackages) {
                    mDisabledPackages.remove(setting.getPackageName());
                }
                if (mAppsFilter != null) {
                    mAppsFilter.onChanged();
                }