summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-09-21 23:17:25 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-09-21 23:17:25 +0000
commite11ee801db6f3c19119a7a55034a23671a41baee (patch)
tree9b6e6448d10822e8cdace1f7e56464cdd882bb5d
parente67fb262bfaf610c52bcc0a1c28cefb3f2340423 (diff)
parentddb202551ae029dccbbe592274cdea20e30bc606 (diff)
downloadandroid_packages_apps_PackageInstaller-e11ee801db6f3c19119a7a55034a23671a41baee.tar.gz
android_packages_apps_PackageInstaller-e11ee801db6f3c19119a7a55034a23671a41baee.tar.bz2
android_packages_apps_PackageInstaller-e11ee801db6f3c19119a7a55034a23671a41baee.zip
Snap for 5892339 from ddb202551ae029dccbbe592274cdea20e30bc606 to qt-qpr1-release
Change-Id: I4de8c7097d8844392473ee459504e638a1061b37
-rw-r--r--src/com/android/packageinstaller/permission/service/PermissionControllerServiceImpl.java4
-rw-r--r--src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java44
-rw-r--r--src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java5
3 files changed, 47 insertions, 6 deletions
diff --git a/src/com/android/packageinstaller/permission/service/PermissionControllerServiceImpl.java b/src/com/android/packageinstaller/permission/service/PermissionControllerServiceImpl.java
index d0ee1809..d846ce09 100644
--- a/src/com/android/packageinstaller/permission/service/PermissionControllerServiceImpl.java
+++ b/src/com/android/packageinstaller/permission/service/PermissionControllerServiceImpl.java
@@ -34,7 +34,6 @@ import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
-import android.os.Process;
import android.os.UserHandle;
import android.permission.PermissionControllerService;
import android.permission.PermissionManager;
@@ -570,9 +569,6 @@ public final class PermissionControllerServiceImpl extends PermissionControllerS
AsyncTask.execute(() -> {
onGrantOrUpgradeDefaultRuntimePermissions();
callback.run();
-
- // Async part
- Utils.updateUserSensitive(getApplication(), Process.myUserHandle());
});
}
diff --git a/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java b/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java
index ff72b980..438487ec 100644
--- a/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java
+++ b/src/com/android/packageinstaller/permission/service/RuntimePermissionsUpgradeController.java
@@ -33,6 +33,7 @@ import androidx.annotation.NonNull;
import com.android.packageinstaller.PermissionControllerStatsLog;
import com.android.packageinstaller.permission.model.AppPermissionGroup;
import com.android.packageinstaller.permission.model.Permission;
+import com.android.packageinstaller.permission.utils.ArrayUtils;
import com.android.packageinstaller.permission.utils.Utils;
import java.util.ArrayList;
@@ -45,7 +46,7 @@ class RuntimePermissionsUpgradeController {
private static final String LOG_TAG = RuntimePermissionsUpgradeController.class.getSimpleName();
// The latest version of the runtime permissions database
- private static final int LATEST_VERSION = 7;
+ private static final int LATEST_VERSION = 8;
private RuntimePermissionsUpgradeController() {
/* do nothing - hide constructor */
@@ -280,16 +281,55 @@ class RuntimePermissionsUpgradeController {
currentVersion = 7;
}
+ if (currentVersion == 7) {
+ Log.i(LOG_TAG, "Expanding read storage to access media location");
+
+ for (int i = 0; i < appCount; i++) {
+ final PackageInfo pkgInfo = apps.get(i);
+
+ if (!ArrayUtils.contains(pkgInfo.requestedPermissions,
+ Manifest.permission.ACCESS_MEDIA_LOCATION)) {
+ continue;
+ }
+
+ if (context.checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, 0,
+ pkgInfo.applicationInfo.uid) != PackageManager.PERMISSION_GRANTED) {
+ continue;
+ }
+
+ final AppPermissionGroup group = AppPermissionGroup.create(context, pkgInfo,
+ Manifest.permission.ACCESS_MEDIA_LOCATION, false);
+ final Permission perm = group.getPermission(
+ Manifest.permission.ACCESS_MEDIA_LOCATION);
+
+ if (!perm.isUserSet() && !perm.isSystemFixed() && !perm.isPolicyFixed()
+ && !perm.isGrantedIncludingAppOp()) {
+ group.grantRuntimePermissions(false,
+ new String[]{Manifest.permission.ACCESS_MEDIA_LOCATION});
+
+ logRuntimePermissionUpgradeResult(group,
+ pkgInfo.applicationInfo.uid, pkgInfo.packageName,
+ Manifest.permission.ACCESS_MEDIA_LOCATION);
+ }
+ }
+
+ currentVersion = 8;
+ }
+
// XXX: Add new upgrade steps above this point.
return currentVersion;
}
private static void logRuntimePermissionUpgradeResult(AppPermissionGroup permissionGroup,
- int uid, String packageName) {
+ int uid, String packageName, String... filterPermissions) {
ArrayList<Permission> permissions = permissionGroup.getPermissions();
int numPermissions = permissions.size();
for (int i = 0; i < numPermissions; i++) {
+ if (filterPermissions != null && !ArrayUtils.contains(filterPermissions, permissions)) {
+ continue;
+ }
+
Permission permission = permissions.get(i);
PermissionControllerStatsLog.write(RUNTIME_PERMISSIONS_UPGRADE_RESULT,
permission.getName(), uid, packageName);
diff --git a/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java b/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java
index fde630b5..bee43205 100644
--- a/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java
+++ b/src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java
@@ -19,6 +19,7 @@ package com.android.packageinstaller.role.service;
import android.app.role.RoleControllerService;
import android.app.role.RoleManager;
import android.content.pm.ApplicationInfo;
+import android.os.AsyncTask;
import android.os.Process;
import android.os.UserHandle;
import android.util.ArrayMap;
@@ -29,6 +30,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.WorkerThread;
import com.android.packageinstaller.permission.utils.CollectionUtils;
+import com.android.packageinstaller.permission.utils.Utils;
import com.android.packageinstaller.role.model.Role;
import com.android.packageinstaller.role.model.Roles;
import com.android.packageinstaller.role.utils.PackageUtils;
@@ -168,6 +170,9 @@ public class RoleControllerServiceImpl extends RoleControllerService {
}
}
+ AsyncTask.execute(
+ () -> Utils.updateUserSensitive(getApplication(), Process.myUserHandle()));
+
return true;
}