diff options
| author | 2016-06-30 23:54:24 +0000 | |
|---|---|---|
| committer | 2016-06-30 23:54:25 +0000 | |
| commit | d6340b4226d907ef6728221635d072523fb03d52 (patch) | |
| tree | 7d68b2a6755b7abcb7d3a510f5e01c3b3f45e107 | |
| parent | e04822dbd3fe84107297dd6c5c107d86df64fc4b (diff) | |
| parent | 5b1f11086019b60cd85ad573140c8752b463d2f9 (diff) | |
Merge "Merge \"Performance optimizations in generatePackageInfo\" into nyc-mr1-dev am: 4d9af67fe2" into nyc-mr1-dev-plus-aosp
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 9 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/PermissionsState.java | 3 |
2 files changed, 7 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 56406caeeaf6..2ebb9f6ace58 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -3217,10 +3217,11 @@ public class PackageManagerService extends IPackageManager.Stub { final PermissionsState permissionsState = ps.getPermissionsState(); // Compute GIDs only if requested - final int[] gids = (flags & PackageManager.GET_GIDS) != 0 - ? permissionsState.computeGids(userId) : EMPTY_INT_ARRAY; - // TODO b/29879962 Calculate granted permissions only if needed in generatePackageInfo - final Set<String> permissions = permissionsState.getPermissions(userId); + final int[] gids = (flags & PackageManager.GET_GIDS) == 0 + ? EMPTY_INT_ARRAY : permissionsState.computeGids(userId); + // Compute granted permissions only if package has requested permissions + final Set<String> permissions = ArrayUtils.isEmpty(p.requestedPermissions) + ? Collections.<String>emptySet() : permissionsState.getPermissions(userId); final PackageUserState state = ps.readUserState(userId); return PackageParser.generatePackageInfo(p, gids, flags, diff --git a/services/core/java/com/android/server/pm/PermissionsState.java b/services/core/java/com/android/server/pm/PermissionsState.java index 007b73814256..8f9968ecf7fd 100644 --- a/services/core/java/com/android/server/pm/PermissionsState.java +++ b/services/core/java/com/android/server/pm/PermissionsState.java @@ -274,7 +274,7 @@ public final class PermissionsState { return Collections.emptySet(); } - Set<String> permissions = new ArraySet<>(); + Set<String> permissions = new ArraySet<>(mPermissions.size()); final int permissionCount = mPermissions.size(); for (int i = 0; i < permissionCount; i++) { @@ -282,6 +282,7 @@ public final class PermissionsState { if (hasInstallPermission(permission)) { permissions.add(permission); + continue; } if (userId != UserHandle.USER_ALL) { |