diff options
author | Svet Ganov <svetoslavganov@google.com> | 2015-05-12 11:03:29 -0700 |
---|---|---|
committer | Svetoslav Ganov <svetoslavganov@google.com> | 2015-05-12 23:26:49 +0000 |
commit | 0430e255aebb6cf64f65eeaaf052786ee2834819 (patch) | |
tree | 0ac899007e15422eb8ab0153d809547cf093ec0d | |
parent | 785a9b6369db4c46a389a43ae30e1f6e8003366b (diff) | |
download | android_packages_apps_PackageInstaller-0430e255aebb6cf64f65eeaaf052786ee2834819.tar.gz android_packages_apps_PackageInstaller-0430e255aebb6cf64f65eeaaf052786ee2834819.tar.bz2 android_packages_apps_PackageInstaller-0430e255aebb6cf64f65eeaaf052786ee2834819.zip |
Runtime permissions for system components not revokable - package installer
bug:20953205
Change-Id: Ie497e3124f127843d10645a625b47f2ee77dd269
5 files changed, 29 insertions, 0 deletions
diff --git a/src/com/android/packageinstaller/permission/model/Permission.java b/src/com/android/packageinstaller/permission/model/Permission.java index bfe44af7..388ae75a 100644 --- a/src/com/android/packageinstaller/permission/model/Permission.java +++ b/src/com/android/packageinstaller/permission/model/Permission.java @@ -72,6 +72,10 @@ public final class Permission { } } + public boolean isSystemFixed() { + return (mFlags & PackageManager.FLAG_PERMISSION_SYSTEM_FIXED) != 0; + } + public boolean isPolicyFixed() { return (mFlags & PackageManager.FLAG_PERMISSION_POLICY_FIXED) != 0; } diff --git a/src/com/android/packageinstaller/permission/model/PermissionApps.java b/src/com/android/packageinstaller/permission/model/PermissionApps.java index 2ea2092d..70edbbcc 100644 --- a/src/com/android/packageinstaller/permission/model/PermissionApps.java +++ b/src/com/android/packageinstaller/permission/model/PermissionApps.java @@ -141,6 +141,10 @@ public class PermissionApps { return mPermissionGroup.isPolicyFixed(); } + public boolean isSystemFixed() { + return mPermissionGroup.isSystemFixed(); + } + @Override public int compareTo(PermissionApp another) { final int result = mLabel.compareTo(another.mLabel); diff --git a/src/com/android/packageinstaller/permission/model/PermissionGroup.java b/src/com/android/packageinstaller/permission/model/PermissionGroup.java index 749ac29e..451b5d9e 100644 --- a/src/com/android/packageinstaller/permission/model/PermissionGroup.java +++ b/src/com/android/packageinstaller/permission/model/PermissionGroup.java @@ -430,6 +430,17 @@ public final class PermissionGroup implements Comparable<PermissionGroup> { return true; } + public boolean isSystemFixed() { + final int permissionCount = mPermissions.size(); + for (int i = 0; i < permissionCount; i++) { + Permission permission = mPermissions.valueAt(i); + if (permission.isSystemFixed()) { + return true; + } + } + return false; + } + @Override public int compareTo(PermissionGroup another) { final int result = mLabel.toString().compareTo(another.mLabel.toString()); diff --git a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java index cbe098a0..8fc78a54 100644 --- a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java @@ -154,6 +154,11 @@ public final class AppPermissionsFragment extends SettingsWithHeader }); for (PermissionGroup group : mAppPermissions.getPermissionGroups()) { + // We currently will not show permissions fixed by the system + // which is what the system does for system components. + if (group.isSystemFixed()) { + continue; + } SwitchPreference preference = new SwitchPreference(activity); preference.setOnPreferenceChangeListener(this); preference.setKey(group.getName()); diff --git a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java index 85113842..f18acfe3 100644 --- a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java @@ -131,6 +131,11 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements } preferences.removeAll(); for (PermissionApp app : mPermissionApps.getApps()) { + // We currently will not show permissions fixed by the system + // which is what the system does for system components. + if (app.isSystemFixed()) { + continue; + } SwitchPreference pref = (SwitchPreference) findPreference(app.getKey()); if (pref == null) { pref = new SwitchPreference(context); |