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

Commit 53d52c8f authored by Christopher Tate's avatar Christopher Tate
Browse files

Clear default-browser state when it's uninstalled

When the default browser is uninstalled, make sure to clean up that
bit of state in the package manager.  Failing to do this was giving
the settings UI problems.

Also, don't bother twiddling intent-filter verification state around
default-browser change: that state is intentionally ignored for
browser apps anyway.

Bug 35193618
Test: manual

Change-Id: I0cedc4efdc5a7e2aa0d322e9976b68e000e6eca7
parent 9870d0be
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -14117,9 +14117,6 @@ public class PackageManagerService extends IPackageManager.Stub
        synchronized (mPackages) {
            boolean result = mSettings.setDefaultBrowserPackageNameLPw(packageName, userId);
            if (packageName != null) {
                result |= updateIntentVerificationStatus(packageName,
                        PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS,
                        userId);
                mDefaultPermissionPolicy.grantDefaultPermissionsToDefaultBrowserLPr(
                        packageName, userId);
            }
@@ -18588,6 +18585,7 @@ public class PackageManagerService extends IPackageManager.Stub
            destroyAppDataLIF(pkg, userId,
                    StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE);
            destroyAppProfilesLIF(pkg, userId);
            clearDefaultBrowserIfNeededForUser(ps.name, userId);
            removeKeystoreDataIfNeeded(nextUserId, ps.appId);
            schedulePackageCleaning(ps.name, nextUserId, false);
            synchronized (mPackages) {
@@ -19309,12 +19307,18 @@ public class PackageManagerService extends IPackageManager.Stub
        }
    }
    /** Clears state for all users, and touches intent filter verification policy */
    void clearDefaultBrowserIfNeeded(String packageName) {
        for (int oneUserId : sUserManager.getUserIds()) {
            String defaultBrowserPackageName = getDefaultBrowserPackageName(oneUserId);
            if (TextUtils.isEmpty(defaultBrowserPackageName)) continue;
            clearDefaultBrowserIfNeededForUser(packageName, oneUserId);
        }
    }
    private void clearDefaultBrowserIfNeededForUser(String packageName, int userId) {
        final String defaultBrowserPackageName = getDefaultBrowserPackageName(userId);
        if (!TextUtils.isEmpty(defaultBrowserPackageName)) {
            if (packageName.equals(defaultBrowserPackageName)) {
                setDefaultBrowserPackageName(null, oneUserId);
                setDefaultBrowserPackageName(null, userId);
            }
        }
    }
+5 −1
Original line number Diff line number Diff line
@@ -1386,7 +1386,11 @@ final class Settings {
        if (userId == UserHandle.USER_ALL) {
            return false;
        }
        if (packageName != null) {
            mDefaultBrowserApp.put(userId, packageName);
        } else {
            mDefaultBrowserApp.remove(userId);
        }
        writePackageRestrictionsLPr(userId);
        return true;
    }