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

Commit 00e3e1b2 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Force apps to request permissions for teamfooding."

parents 07e23a0e 669e6b11
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
@@ -228,6 +228,24 @@ public class PackageParser {
        CHILD_PACKAGE_TAGS.add(TAG_EAT_COMMENT);
    }

    // STOPSHIP(b/112545973): remove once feature enabled by default
    private static final Set<String> FORCE_AUDIO_PACKAGES;
    private static final Set<String> FORCE_VIDEO_PACKAGES;
    private static final Set<String> FORCE_IMAGES_PACKAGES;
    static {
        FORCE_AUDIO_PACKAGES = parsePackageList(
                SystemProperties.get(StorageManager.PROP_FORCE_AUDIO));
        FORCE_VIDEO_PACKAGES = parsePackageList(
                SystemProperties.get(StorageManager.PROP_FORCE_VIDEO));
        FORCE_IMAGES_PACKAGES = parsePackageList(
                SystemProperties.get(StorageManager.PROP_FORCE_IMAGES));
    }

    private static Set<String> parsePackageList(String pkgs) {
        if (TextUtils.isEmpty(pkgs)) return Collections.emptySet();
        return new ArraySet<String>(Arrays.asList(pkgs.split(",")));
    }

    private static final boolean LOG_UNSAFE_BROADCASTS = false;

    /**
@@ -2534,6 +2552,34 @@ public class PackageParser {
                    }
                }
            }
        } else {
            if (FORCE_AUDIO_PACKAGES.contains(pkg.packageName)) {
                pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_AUDIO);
                pkg.requestedPermissions.add(android.Manifest.permission.WRITE_MEDIA_AUDIO);
            }
            if (FORCE_VIDEO_PACKAGES.contains(pkg.packageName)) {
                pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_VIDEO);
                pkg.requestedPermissions.add(android.Manifest.permission.WRITE_MEDIA_VIDEO);
            }
            if (FORCE_IMAGES_PACKAGES.contains(pkg.packageName)) {
                pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_IMAGES);
                pkg.requestedPermissions.add(android.Manifest.permission.WRITE_MEDIA_IMAGES);
            }

            if (SystemProperties.getBoolean(StorageManager.PROP_FORCE_LEGACY, false)) {
                if (pkg.requestedPermissions
                        .contains(android.Manifest.permission.READ_EXTERNAL_STORAGE)) {
                    pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_AUDIO);
                    pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_VIDEO);
                    pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_IMAGES);
                }
                if (pkg.requestedPermissions
                        .contains(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
                    pkg.requestedPermissions.add(android.Manifest.permission.WRITE_MEDIA_AUDIO);
                    pkg.requestedPermissions.add(android.Manifest.permission.WRITE_MEDIA_VIDEO);
                    pkg.requestedPermissions.add(android.Manifest.permission.WRITE_MEDIA_IMAGES);
                }
            }
        }

        return pkg;
+9 −0
Original line number Diff line number Diff line
@@ -131,6 +131,15 @@ public class StorageManager {
    /** {@hide} */
    public static final String PROP_ISOLATED_STORAGE = "persist.sys.isolated_storage";

    /** {@hide} */
    public static final String PROP_FORCE_AUDIO = "persist.fw.force_audio";
    /** {@hide} */
    public static final String PROP_FORCE_VIDEO = "persist.fw.force_video";
    /** {@hide} */
    public static final String PROP_FORCE_IMAGES = "persist.fw.force_images";
    /** {@hide} */
    public static final String PROP_FORCE_LEGACY = "persist.fw.force_legacy";

    /** {@hide} */
    public static final String UUID_PRIVATE_INTERNAL = null;
    /** {@hide} */