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

Commit f132eb3f authored by Nishant Kumar Singh's avatar Nishant Kumar Singh Committed by Nishant Singh
Browse files

Clear persisted conf when app data is cleared.

We should remove the persisted configurations (night mode and
app-locales for now) when user data is cleared for a package.

Bug: 202059887
Bug: 203767772
Test: Manual
Change-Id: I43e39f64aff60877caca19e8690b5a59366e0ca8
parent 1a6add77
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -13302,7 +13302,7 @@ public class ActivityManagerService extends IActivityManager.Stub
                                        mAtmInternal.removeRecentTasksByPackageName(ssp, userId);
                                        mServices.forceStopPackageLocked(ssp, userId);
                                        mAtmInternal.onPackageUninstalled(ssp);
                                        mAtmInternal.onPackageUninstalled(ssp, userId);
                                        mBatteryStatsService.notePackageUninstalled(ssp);
                                    }
                                } else {
@@ -13387,7 +13387,7 @@ public class ActivityManagerService extends IActivityManager.Stub
                    Uri data = intent.getData();
                    String ssp;
                    if (data != null && (ssp = data.getSchemeSpecificPart()) != null) {
                        mAtmInternal.onPackageDataCleared(ssp);
                        mAtmInternal.onPackageDataCleared(ssp, userId);
                    }
                    break;
                }
+2 −2
Original line number Diff line number Diff line
@@ -342,8 +342,8 @@ public abstract class ActivityTaskManagerInternal {
    public abstract void onProcessMapped(int pid, WindowProcessController proc);
    public abstract void onProcessUnMapped(int pid);

    public abstract void onPackageDataCleared(String name);
    public abstract void onPackageUninstalled(String name);
    public abstract void onPackageDataCleared(String name, int userId);
    public abstract void onPackageUninstalled(String name, int userId);
    public abstract void onPackageAdded(String name, boolean replacing);
    public abstract void onPackageReplaced(ApplicationInfo aInfo);

+4 −3
Original line number Diff line number Diff line
@@ -5656,19 +5656,20 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        }

        @Override
        public void onPackageDataCleared(String name) {
        public void onPackageDataCleared(String name, int userId) {
            synchronized (mGlobalLock) {
                mCompatModePackages.handlePackageDataClearedLocked(name);
                mAppWarnings.onPackageDataCleared(name);
                mPackageConfigPersister.onPackageDataCleared(name, userId);
            }
        }

        @Override
        public void onPackageUninstalled(String name) {
        public void onPackageUninstalled(String name, int userId) {
            synchronized (mGlobalLock) {
                mAppWarnings.onPackageUninstalled(name);
                mCompatModePackages.handlePackageUninstalledLocked(name);
                mPackageConfigPersister.onPackageUninstall(name);
                mPackageConfigPersister.onPackageUninstall(name, userId);
            }
        }

+9 −5
Original line number Diff line number Diff line
@@ -243,13 +243,17 @@ public class PackageConfigPersister {
    }

    @GuardedBy("mLock")
    void onPackageUninstall(String packageName) {
    void onPackageUninstall(String packageName, int userId) {
        synchronized (mLock) {
            for (int i = mModified.size() - 1; i >= 0; i--) {
                final int userId = mModified.keyAt(i);
            removePackage(packageName, userId);
        }
    }

    @GuardedBy("mLock")
    void onPackageDataCleared(String packageName, int userId) {
        synchronized (mLock) {
            removePackage(packageName, userId);
        }
    }

    private void removePackage(String packageName, int userId) {
+1 −1
Original line number Diff line number Diff line
@@ -623,7 +623,7 @@ public class ActivityTaskManagerServiceTests extends WindowTestsBase {
                wpcAfterConfigChange1.getConfiguration().getLocales());
        assertTrue(wpcAfterConfigChange1.getConfiguration().isNightModeActive());

        mAtm.mInternal.onPackageUninstalled(DEFAULT_PACKAGE_NAME);
        mAtm.mInternal.onPackageUninstalled(DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID);

        WindowProcessController wpcAfterConfigChange2 = createWindowProcessController(
                DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID);