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

This commit is contained in:
Svet Ganov
2015-06-30 19:24:02 +00:00
committed by Android (Google) Code Review
2 changed files with 25 additions and 11 deletions

View File

@@ -6473,20 +6473,22 @@ public class Activity extends ContextThemeWrapper
} }
private void dispatchRequestPermissionsResult(int requestCode, Intent data) { private void dispatchRequestPermissionsResult(int requestCode, Intent data) {
String[] permissions = data.getStringArrayExtra( // If the package installer crashed we may have not data - best effort.
PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES); String[] permissions = (data != null) ? data.getStringArrayExtra(
final int[] grantResults = data.getIntArrayExtra( PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES) : new String[0];
PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS); final int[] grantResults = (data != null) ? data.getIntArrayExtra(
PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS) : new int[0];
onRequestPermissionsResult(requestCode, permissions, grantResults); onRequestPermissionsResult(requestCode, permissions, grantResults);
} }
private void dispatchRequestPermissionsResultToFragment(int requestCode, Intent data, private void dispatchRequestPermissionsResultToFragment(int requestCode, Intent data,
Fragment fragement) { Fragment fragment) {
String[] permissions = data.getStringArrayExtra( // If the package installer crashed we may have not data - best effort.
PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES); String[] permissions = (data != null) ? data.getStringArrayExtra(
final int[] grantResults = data.getIntArrayExtra( PackageManager.EXTRA_REQUEST_PERMISSIONS_NAMES) : new String[0];
PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS); final int[] grantResults = (data != null) ? data.getIntArrayExtra(
fragement.onRequestPermissionsResult(requestCode, permissions, grantResults); PackageManager.EXTRA_REQUEST_PERMISSIONS_RESULTS) : new int[0];
fragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
} }
class HostCallbacks extends FragmentHostCallback<Activity> { class HostCallbacks extends FragmentHostCallback<Activity> {

View File

@@ -247,7 +247,7 @@ final class DefaultPermissionGrantPolicy {
for (int i = 0; i < installerCount; i++) { for (int i = 0; i < installerCount; i++) {
PackageParser.Package installPackage = installerPackages.get(i); PackageParser.Package installPackage = installerPackages.get(i);
grantInstallPermissionsLPw(installPackage, INSTALLER_PERMISSIONS, userId); grantInstallPermissionsLPw(installPackage, INSTALLER_PERMISSIONS, userId);
grantRuntimePermissionsLPw(installPackage, STORAGE_PERMISSIONS, userId); grantRuntimePermissionsLPw(installPackage, STORAGE_PERMISSIONS, true, userId);
} }
// Verifiers // Verifiers
@@ -614,6 +614,12 @@ final class DefaultPermissionGrantPolicy {
private void grantRuntimePermissionsLPw(PackageParser.Package pkg, Set<String> permissions, private void grantRuntimePermissionsLPw(PackageParser.Package pkg, Set<String> permissions,
int userId) { 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; List<String> requestedPermissions = pkg.requestedPermissions;
if (pkg.isUpdatedSystemApp()) { if (pkg.isUpdatedSystemApp()) {
@@ -638,6 +644,12 @@ final class DefaultPermissionGrantPolicy {
Log.i(TAG, "Granted " + permission + " to default handler " Log.i(TAG, "Granted " + permission + " to default handler "
+ pkg.packageName); + pkg.packageName);
} }
if (systemFixed) {
mService.updatePermissionFlags(permission, pkg.packageName,
PackageManager.FLAG_PERMISSION_SYSTEM_FIXED,
PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, userId);
}
} }
} }
} }