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

Commit 64034c6e authored by Jiuyu Sun's avatar Jiuyu Sun Committed by android-build-merger
Browse files

Merge "Add grant and revoke default permissions to active LUI app." into pi-dev

am: b1adae54

Change-Id: Ic58c98fac6a1b792ca9525653b3e07e5839741f4
parents 39441a9d b1adae54
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -619,6 +619,8 @@ interface IPackageManager {
            in String[] packageNames, int userId);
    void revokeDefaultPermissionsFromDisabledTelephonyDataServices(
            in String[] packageNames, int userId);
    void grantDefaultPermissionsToActiveLuiApp(in String packageName, int userId);
    void revokeDefaultPermissionsFromLuiApps(in String[] packageNames, int userId);

    boolean isPermissionRevokedByPolicy(String permission, String packageName, int userId);

+27 −0
Original line number Diff line number Diff line
@@ -24105,6 +24105,33 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
        }
    }
    @Override
    public void grantDefaultPermissionsToActiveLuiApp(String packageName, int userId) {
        enforceSystemOrPhoneCaller("grantDefaultPermissionsToActiveLuiApp");
        synchronized (mPackages) {
            final long identity = Binder.clearCallingIdentity();
            try {
                mDefaultPermissionPolicy.grantDefaultPermissionsToActiveLuiApp(
                        packageName, userId);
            } finally {
                Binder.restoreCallingIdentity(identity);
            }
        }
    }
    @Override
    public void revokeDefaultPermissionsFromLuiApps(String[] packageNames, int userId) {
        enforceSystemOrPhoneCaller("revokeDefaultPermissionsFromLuiApps");
        synchronized (mPackages) {
            final long identity = Binder.clearCallingIdentity();
            try {
                mDefaultPermissionPolicy.revokeDefaultPermissionsFromLuiApps(packageNames, userId);
            } finally {
                Binder.restoreCallingIdentity(identity);
            }
        }
    }
    private static void enforceSystemOrPhoneCaller(String tag) {
        int callingUid = Binder.getCallingUid();
        if (callingUid != Process.PHONE_UID && callingUid != Process.SYSTEM_UID) {
+26 −0
Original line number Diff line number Diff line
@@ -1010,6 +1010,32 @@ public final class DefaultPermissionGrantPolicy {
        }
    }

    public void grantDefaultPermissionsToActiveLuiApp(String packageName, int userId) {
        Log.i(TAG, "Granting permissions to active LUI app for user:" + userId);
        if (packageName == null) {
            return;
        }
        PackageParser.Package luiAppPackage = getSystemPackage(packageName);
        if (luiAppPackage != null
                && doesPackageSupportRuntimePermissions(luiAppPackage)) {
            grantRuntimePermissions(luiAppPackage, CAMERA_PERMISSIONS, true, userId);
        }
    }

    public void revokeDefaultPermissionsFromLuiApps(String[] packageNames, int userId) {
        Log.i(TAG, "Revoke permissions from LUI apps for user:" + userId);
        if (packageNames == null) {
            return;
        }
        for (String packageName : packageNames) {
            PackageParser.Package luiAppPackage = getSystemPackage(packageName);
            if (luiAppPackage != null
                    && doesPackageSupportRuntimePermissions(luiAppPackage)) {
                revokeRuntimePermissions(luiAppPackage, CAMERA_PERMISSIONS, true, userId);
            }
        }
    }

    public void grantDefaultPermissionsToDefaultBrowser(String packageName, int userId) {
        Log.i(TAG, "Granting permissions to default browser for user:" + userId);
        if (packageName == null) {