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

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

Merge "Show basic feature warning for default granted permissions" into mnc-dev

parents cb8d2e21 77ab6a88
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -9675,11 +9675,6 @@ package android.content.pm {
    field public static final java.lang.String FEATURE_WEBVIEW = "android.software.webview";
    field public static final java.lang.String FEATURE_WIFI = "android.hardware.wifi";
    field public static final java.lang.String FEATURE_WIFI_DIRECT = "android.hardware.wifi.direct";
    field public static final int FLAG_PERMISSION_POLICY_FIXED = 4; // 0x4
    field public static final int FLAG_PERMISSION_REVOKE_ON_UPGRADE = 8; // 0x8
    field public static final int FLAG_PERMISSION_SYSTEM_FIXED = 16; // 0x10
    field public static final int FLAG_PERMISSION_USER_FIXED = 2; // 0x2
    field public static final int FLAG_PERMISSION_USER_SET = 1; // 0x1
    field public static final int GET_ACTIVITIES = 1; // 0x1
    field public static final int GET_CONFIGURATIONS = 16384; // 0x4000
    field public static final int GET_DISABLED_COMPONENTS = 512; // 0x200
+26 −6
Original line number Diff line number Diff line
@@ -1924,7 +1924,6 @@ public abstract class PackageManager {
    *
    * @hide
    */
    @SystemApi
    public static final int FLAG_PERMISSION_USER_SET = 1 << 0;

    /**
@@ -1934,7 +1933,6 @@ public abstract class PackageManager {
     *
     * @hide
     */
    @SystemApi
    public static final int FLAG_PERMISSION_USER_FIXED =  1 << 1;

    /**
@@ -1944,7 +1942,6 @@ public abstract class PackageManager {
     *
     * @hide
     */
    @SystemApi
    public static final int FLAG_PERMISSION_POLICY_FIXED =  1 << 2;

    /**
@@ -1957,7 +1954,6 @@ public abstract class PackageManager {
     *
     * @hide
     */
    @SystemApi
    public static final int FLAG_PERMISSION_REVOKE_ON_UPGRADE =  1 << 3;

    /**
@@ -1966,9 +1962,19 @@ public abstract class PackageManager {
     *
     * @hide
     */
    @SystemApi
    public static final int FLAG_PERMISSION_SYSTEM_FIXED =  1 << 4;


    /**
     * Permission flag: The permission is granted by default because it
     * enables app functionality that is expected to work out-of-the-box
     * for providing a smooth user experience. For example, the phone app
     * is expected to have the phone permission.
     *
     * @hide
     */
    public static final int FLAG_PERMISSION_GRANTED_BY_DEFAULT =  1 << 5;

    /**
     * Mask for all permission flags.
     *
@@ -2474,7 +2480,8 @@ public abstract class PackageManager {
            FLAG_PERMISSION_USER_FIXED,
            FLAG_PERMISSION_POLICY_FIXED,
            FLAG_PERMISSION_REVOKE_ON_UPGRADE,
            FLAG_PERMISSION_SYSTEM_FIXED})
            FLAG_PERMISSION_SYSTEM_FIXED,
            FLAG_PERMISSION_GRANTED_BY_DEFAULT})
    @Retention(RetentionPolicy.SOURCE)
    public @interface PermissionFlags {}

@@ -4633,6 +4640,19 @@ public abstract class PackageManager {
        }
    }

    /** {@hide} */
    public static String permissionFlagToString(int flag) {
        switch (flag) {
            case FLAG_PERMISSION_GRANTED_BY_DEFAULT: return "FLAG_PERMISSION_GRANTED_BY_DEFAULT";
            case FLAG_PERMISSION_POLICY_FIXED: return "FLAG_PERMISSION_POLICY_FIXED";
            case FLAG_PERMISSION_SYSTEM_FIXED: return "FLAG_PERMISSION_SYSTEM_FIXED";
            case FLAG_PERMISSION_USER_SET: return "FLAG_PERMISSION_USER_SET";
            case FLAG_PERMISSION_REVOKE_ON_UPGRADE: return "FLAG_PERMISSION_REVOKE_ON_UPGRADE";
            case FLAG_PERMISSION_USER_FIXED: return "FLAG_PERMISSION_USER_FIXED";
            default: return Integer.toString(flag);
        }
    }

    /** {@hide} */
    public static class LegacyPackageInstallObserver extends PackageInstallObserver {
        private final IPackageInstallObserver mLegacy;
+7 −4
Original line number Diff line number Diff line
@@ -202,7 +202,8 @@ final class DefaultPermissionGrantPolicy {
                            mService.grantRuntimePermission(pkg.packageName, permission, userId);
                            mService.updatePermissionFlags(permission, pkg.packageName,
                                    PackageManager.MASK_PERMISSION_FLAGS,
                                    PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, userId);
                                    PackageManager.FLAG_PERMISSION_SYSTEM_FIXED
                                    | PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT, userId);
                            if (DEBUG) {
                                Log.i(TAG, "Granted " + permission + " to system component "
                                        + pkg.packageName);
@@ -768,11 +769,13 @@ final class DefaultPermissionGrantPolicy {
                                + pkg.packageName);
                    }

                    int newFlags = PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT;
                    if (systemFixed) {
                        mService.updatePermissionFlags(permission, pkg.packageName,
                                PackageManager.FLAG_PERMISSION_SYSTEM_FIXED,
                                PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, userId);
                        newFlags |= PackageManager.FLAG_PERMISSION_SYSTEM_FIXED;
                    }

                    mService.updatePermissionFlags(permission, pkg.packageName,
                            newFlags, newFlags, userId);
                }
            }
        }
+15 −2
Original line number Diff line number Diff line
@@ -4333,12 +4333,25 @@ final class Settings {
                }
                pw.print(prefix); pw.print("  "); pw.print(permissionState.getName());
                pw.print(", granted="); pw.print(permissionState.isGranted());
                    pw.print(", flags=0x"); pw.println(Integer.toHexString(
                    pw.print(", flags="); pw.println(permissionFlagsToString(
                        permissionState.getFlags()));
            }
        }
    }

    private static String permissionFlagsToString(int flags) {
        StringBuilder flagsString = new StringBuilder();
        flagsString.append("[ ");
        while (flags != 0) {
            final int flag = 1 << Integer.numberOfTrailingZeros(flags);
            flags &= ~flag;
            flagsString.append(PackageManager.permissionFlagToString(flag));
            flagsString.append(' ');
        }
        flagsString.append(']');
        return flagsString.toString();
    }

    void dumpInstallPermissionsLPr(PrintWriter pw, String prefix, ArraySet<String> permissionNames,
            PermissionsState permissionsState) {
        List<PermissionState> permissionStates = permissionsState.getInstallPermissionStates();
@@ -4351,7 +4364,7 @@ final class Settings {
                }
                pw.print(prefix); pw.print("  "); pw.print(permissionState.getName());
                    pw.print(", granted="); pw.print(permissionState.isGranted());
                    pw.print(", flags=0x"); pw.println(Integer.toHexString(
                    pw.print(", flags="); pw.println(permissionFlagsToString(
                        permissionState.getFlags()));
            }
        }