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

Commit 44c9d303 authored by Jing Ji's avatar Jing Ji
Browse files

Move the lock to the individual app restriction setting's dump

The exemption check shouldn't be called with the lock held.

Bug: 220930052
Test: atest PackageManagerShellCommandTest
Test: atest FrameworksMockingServicesTests:BackgroundRestrictionTest
Change-Id: I7d45edd502acd94c7c8ef50b1c9423fc736951a3
parent deb79e30
Loading
Loading
Loading
Loading
+22 −24
Original line number Diff line number Diff line
@@ -398,8 +398,8 @@ public final class AppRestrictionController {
                return sb.toString();
            }

            @GuardedBy("mSettingsLock")
            void dump(PrintWriter pw, @ElapsedRealtimeLong long nowElapsed) {
                synchronized (mSettingsLock) {
                    pw.print(toString());
                    if (mLastRestrictionLevel != RESTRICTION_LEVEL_UNKNOWN) {
                        pw.print('/');
@@ -418,6 +418,7 @@ public final class AppRestrictionController {
                            }
                        }
                    }
                }
                pw.print(" effectiveExemption=");
                pw.print(reasonCodeToString(getBackgroundRestrictionExemptionReason(mUid)));
            }
@@ -612,10 +613,11 @@ public final class AppRestrictionController {
            }
        }

        @GuardedBy("mSettingsLock")
        void dumpLocked(PrintWriter pw, String prefix) {
        void dump(PrintWriter pw, String prefix) {
            final ArrayList<PkgSettings> settings = new ArrayList<>();
            synchronized (mSettingsLock) {
                mRestrictionLevels.forEach(setting -> settings.add(setting));
            }
            Collections.sort(settings, Comparator.comparingInt(PkgSettings::getUid));
            final long nowElapsed = SystemClock.elapsedRealtime();
            for (int i = 0, size = settings.size(); i < size; i++) {
@@ -1322,11 +1324,7 @@ public final class AppRestrictionController {
        prefix = "  " + prefix;
        pw.print(prefix);
        pw.println("BACKGROUND RESTRICTION LEVEL SETTINGS");
        /*
        synchronized (mSettingsLock) {
            mRestrictionSettings.dumpLocked(pw, "  " + prefix);
        }
        */
        mRestrictionSettings.dump(pw, "  " + prefix);
        mConstantsObserver.dump(pw, "  " + prefix);
        for (int i = 0, size = mAppStateTrackers.size(); i < size; i++) {
            pw.println();