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

Commit 07cc9506 authored by Hani Kazmi's avatar Hani Kazmi Committed by Android (Google) Code Review
Browse files

Merge "Add ECM appOp after UidState is created" into main

parents b94a84b3 898aefda
Loading
Loading
Loading
Loading
+19 −21
Original line number Diff line number Diff line
@@ -2374,12 +2374,6 @@ final class InstallPackageHelper {
                permissionParamsBuilder.setAutoRevokePermissionsMode(autoRevokePermissionsMode);
                mPm.mPermissionManager.onPackageInstalled(pkg, installRequest.getPreviousAppId(),
                        permissionParamsBuilder.build(), userId);
                // Apply restricted settings on potentially dangerous packages.
                if (installRequest.getPackageSource() == PackageInstaller.PACKAGE_SOURCE_LOCAL_FILE
                        || installRequest.getPackageSource()
                        == PackageInstaller.PACKAGE_SOURCE_DOWNLOADED_FILE) {
                    enableRestrictedSettings(pkgName, pkg.getUid());
                }
            }
            installRequest.setName(pkgName);
            installRequest.setAppId(pkg.getUid());
@@ -2394,17 +2388,14 @@ final class InstallPackageHelper {
        Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
    }

    private void enableRestrictedSettings(String pkgName, int appId) {
    private void enableRestrictedSettings(String pkgName, int appId, int userId) {
        final AppOpsManager appOpsManager = mPm.mContext.getSystemService(AppOpsManager.class);
        final int[] allUsersList = mPm.mUserManager.getUserIds();
        for (int userId : allUsersList) {
        final int uid = UserHandle.getUid(userId, appId);
        appOpsManager.setMode(AppOpsManager.OP_ACCESS_RESTRICTED_SETTINGS,
                uid,
                pkgName,
                AppOpsManager.MODE_ERRORED);
    }
    }

    /**
     * On successful install, executes remaining steps after commit completes and the package lock
@@ -2820,14 +2811,11 @@ final class InstallPackageHelper {
                    mPm.mRequiredInstallerPackage,
                    /* packageSender= */ mPm, launchedForRestore, killApp, update, archived);


            // Work that needs to happen on first install within each user
            if (firstUserIds.length > 0) {
            for (int userId : firstUserIds) {
                mPm.restorePermissionsAndUpdateRolesForNewUserInstall(packageName,
                        userId);
            }
            }

            if (request.isAllNewUsers() && !update) {
                mPm.notifyPackageAdded(packageName, request.getAppId());
@@ -2835,6 +2823,16 @@ final class InstallPackageHelper {
                mPm.notifyPackageChanged(packageName, request.getAppId());
            }

            for (int userId : firstUserIds) {
                // Apply restricted settings on potentially dangerous packages. Needs to happen
                // after appOpsManager is notified of the new package
                if (request.getPackageSource() == PackageInstaller.PACKAGE_SOURCE_LOCAL_FILE
                        || request.getPackageSource()
                        == PackageInstaller.PACKAGE_SOURCE_DOWNLOADED_FILE) {
                    enableRestrictedSettings(packageName, request.getAppId(), userId);
                }
            }

            // Log current value of "unknown sources" setting
            EventLog.writeEvent(EventLogTags.UNKNOWN_SOURCES_ENABLED,
                    getUnknownSourcesSettings());