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

Commit 9bc6a7bd authored by Hai Zhang's avatar Hai Zhang
Browse files

Stop resetting default browser for browser installation/clearing data/reset app preferences.

Bug: 183412485
Test: manual
Test: Install 2 3p browsers, the default browser remained untouched.
Test: Uninstall the 2 3p browsers, the default browser still remained
      untouched.
Change-Id: Ifb34505561b5e2501b3f02586b11b6d70af86d62
parent df786ca1
Loading
Loading
Loading
Loading
+3 −61
Original line number Diff line number Diff line
@@ -777,16 +777,6 @@ public class PackageManagerService extends IPackageManager.Stub
    private static final String COMPANION_PACKAGE_NAME = "com.android.companiondevicemanager";
    /** Canonical intent used to identify what counts as a "web browser" app */
    private static final Intent sBrowserIntent;
    static {
        sBrowserIntent = new Intent();
        sBrowserIntent.setAction(Intent.ACTION_VIEW);
        sBrowserIntent.addCategory(Intent.CATEGORY_BROWSABLE);
        sBrowserIntent.setData(Uri.parse("http:"));
        sBrowserIntent.addFlags(Intent.FLAG_IGNORE_EPHEMERAL);
    }
    // Compilation reasons.
    public static final int REASON_UNKNOWN = -1;
    public static final int REASON_FIRST_BOOT = 0;
@@ -5635,7 +5625,7 @@ public class PackageManagerService extends IPackageManager.Stub
            // Work that needs to happen on first install within each user
            if (firstUserIds != null && firstUserIds.length > 0) {
                for (int userId : firstUserIds) {
                    clearRolesAndRestorePermissionsForNewUserInstall(packageName,
                    restorePermissionsAndUpdateRolesForNewUserInstall(packageName,
                            pkgSetting.getInstallReason(userId), userId);
                }
            }
@@ -7751,19 +7741,6 @@ public class PackageManagerService extends IPackageManager.Stub
        return matches.get(0).getComponentInfo().getComponentName();
    }
    private boolean packageIsBrowser(String packageName, int userId) {
        List<ResolveInfo> list = queryIntentActivitiesInternal(sBrowserIntent, null,
                PackageManager.MATCH_ALL, userId);
        final int N = list.size();
        for (int i = 0; i < N; i++) {
            ResolveInfo info = list.get(i);
            if (info.priority >= 0 && packageName.equals(info.activityInfo.packageName)) {
                return true;
            }
        }
        return false;
    }
    @Override
    public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
            throws RemoteException {
@@ -15611,7 +15588,7 @@ public class PackageManagerService extends IPackageManager.Stub
                PostInstallData postInstallData =
                        new PostInstallData(null, res, () -> {
                            clearRolesAndRestorePermissionsForNewUserInstall(packageName,
                            restorePermissionsAndUpdateRolesForNewUserInstall(packageName,
                                    pkgSetting.getInstallReason(userId), userId);
                            if (intentSender != null) {
                                onRestoreComplete(res.returnCode, mContext, intentSender);
@@ -21181,7 +21158,6 @@ public class PackageManagerService extends IPackageManager.Stub
                final SparseBooleanArray changedUsers = new SparseBooleanArray();
                synchronized (mLock) {
                    mDomainVerificationManager.clearPackage(deletedPs.name);
                    clearDefaultBrowserIfNeeded(packageName);
                    mSettings.getKeySetManagerService().removeAppKeySetDataLPw(packageName);
                    mAppsFilter.removePackage(getPackageSetting(packageName));
                    removedAppId = mSettings.removePackageLPw(packageName);
@@ -21739,7 +21715,6 @@ public class PackageManagerService extends IPackageManager.Stub
                destroyAppDataLIF(pkg, nextUserId,
                        FLAG_STORAGE_DE | FLAG_STORAGE_CE | FLAG_STORAGE_EXTERNAL);
            }
            clearDefaultBrowserIfNeededForUser(ps.name, nextUserId);
            removeKeystoreDataIfNeeded(mInjector.getUserManagerInternal(), nextUserId, ps.appId);
            clearPackagePreferredActivities(ps.name, nextUserId);
            mPermissionManager.onPackageUninstalled(ps.name, ps.appId, pkg, sharedUserPkgs,
@@ -22256,36 +22231,8 @@ public class PackageManagerService extends IPackageManager.Stub
        mSettings.clearPackagePreferredActivities(packageName, outUserChanged, userId);
    }
    /** Clears state for all users, and touches intent filter verification policy */
    void clearDefaultBrowserIfNeeded(String packageName) {
        for (int oneUserId : mUserManager.getUserIds()) {
            clearDefaultBrowserIfNeededForUser(packageName, oneUserId);
        }
    }
    private void clearDefaultBrowserIfNeededForUser(String packageName, int userId) {
        final String defaultBrowserPackageName = mDefaultAppProvider.getDefaultBrowser(userId);
        if (!TextUtils.isEmpty(defaultBrowserPackageName)) {
            if (packageName.equals(defaultBrowserPackageName)) {
                mDefaultAppProvider.setDefaultBrowser(null, true, userId);
            }
        }
    }
    private void clearRolesAndRestorePermissionsForNewUserInstall(String packageName,
    private void restorePermissionsAndUpdateRolesForNewUserInstall(String packageName,
            int installReason, @UserIdInt int userId) {
        // If this app is a browser and it's newly-installed for some
        // users, clear any default-browser state in those users. The
        // app's nature doesn't depend on the user, so we can just check
        // its browser nature in any user and generalize.
        if (packageIsBrowser(packageName, userId)) {
            // If this browser is restored from user's backup, do not clear
            // default-browser state for this user
            if (installReason != PackageManager.INSTALL_REASON_DEVICE_RESTORE) {
                mDefaultAppProvider.setDefaultBrowser(null, true, userId);
            }
        }
        // We may also need to apply pending (restored) runtime permission grants
        // within these users.
        mPermissionManager.restoreDelayedRuntimePermissions(packageName, userId);
@@ -22319,11 +22266,6 @@ public class PackageManagerService extends IPackageManager.Stub
                }
            }
            updateDefaultHomeNotLocked(userId);
            // TODO: We have to reset the default SMS and Phone. This requires
            // significant refactoring to keep all default apps in the package
            // manager (cleaner but more work) or have the services provide
            // callbacks to the package manager to request a default app reset.
            mDefaultAppProvider.setDefaultBrowser(null, true, userId);
            resetNetworkPolicies(userId);
            synchronized (mLock) {
                scheduleWritePackageRestrictionsLocked(userId);