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

Commit 4a23ac45 authored by Svet Ganov's avatar Svet Ganov Committed by Android (Google) Code Review
Browse files

Merge "Installer is a part of the system with unrevocable permissions" into mnc-dev

parents a81c2e16 6a166af8
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -6473,20 +6473,22 @@ public class Activity extends ContextThemeWrapper
    }

    private void dispatchRequestPermissionsResult(int requestCode, Intent data) {
        String[] permissions = data.getStringArrayExtra(
                PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES);
        final int[] grantResults = data.getIntArrayExtra(
                PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS);
        // If the package installer crashed we may have not data - best effort.
        String[] permissions = (data != null) ? data.getStringArrayExtra(
                PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES) : new String[0];
        final int[] grantResults = (data != null) ? data.getIntArrayExtra(
                PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS) : new int[0];
        onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

    private void dispatchRequestPermissionsResultToFragment(int requestCode, Intent data,
            Fragment fragement) {
        String[] permissions = data.getStringArrayExtra(
                PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES);
        final int[] grantResults = data.getIntArrayExtra(
                PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS);
        fragement.onRequestPermissionsResult(requestCode, permissions, grantResults);
            Fragment fragment) {
        // If the package installer crashed we may have not data - best effort.
        String[] permissions = (data != null) ? data.getStringArrayExtra(
                PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES) : new String[0];
        final int[] grantResults = (data != null) ? data.getIntArrayExtra(
                PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS) : new int[0];
        fragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

    class HostCallbacks extends FragmentHostCallback<Activity> {
+13 −1
Original line number Diff line number Diff line
@@ -247,7 +247,7 @@ final class DefaultPermissionGrantPolicy {
            for (int i = 0; i < installerCount; i++) {
                PackageParser.Package installPackage = installerPackages.get(i);
                grantInstallPermissionsLPw(installPackage, INSTALLER_PERMISSIONS, userId);
                grantRuntimePermissionsLPw(installPackage, STORAGE_PERMISSIONS, userId);
                grantRuntimePermissionsLPw(installPackage, STORAGE_PERMISSIONS, true, userId);
            }

            // Verifiers
@@ -614,6 +614,12 @@ final class DefaultPermissionGrantPolicy {

    private void grantRuntimePermissionsLPw(PackageParser.Package pkg, Set<String> permissions,
            int userId) {
        grantRuntimePermissionsLPw(pkg, permissions, false, userId);

    }

    private void grantRuntimePermissionsLPw(PackageParser.Package pkg, Set<String> permissions,
            boolean systemFixed, int userId) {
        List<String> requestedPermissions = pkg.requestedPermissions;

        if (pkg.isUpdatedSystemApp()) {
@@ -638,6 +644,12 @@ final class DefaultPermissionGrantPolicy {
                        Log.i(TAG, "Granted " + permission + " to default handler "
                                + pkg.packageName);
                    }

                    if (systemFixed) {
                        mService.updatePermissionFlags(permission, pkg.packageName,
                                PackageManager.FLAG_PERMISSION_SYSTEM_FIXED,
                                PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, userId);
                    }
                }
            }
        }