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

Commit 2fae605f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Stop resetting default browser for browser installation/clearing...

Merge "Stop resetting default browser for browser installation/clearing data/reset app preferences." into sc-dev am: 4c224aa3

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13957766

Change-Id: I48a783e1438aa1b1df3f782b4f8e3b47fbf53135
parents 2a356500 4c224aa3
Loading
Loading
Loading
Loading
+3 −61
Original line number Diff line number Diff line
@@ -778,16 +778,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;
@@ -5636,7 +5626,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);
                }
            }
@@ -7752,19 +7742,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 {
@@ -15618,7 +15595,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);
@@ -21184,7 +21161,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);
@@ -21742,7 +21718,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,
@@ -22259,36 +22234,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);
@@ -22322,11 +22269,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);