summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/packageinstaller/permission/model/AppPermissions.java40
-rw-r--r--src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java2
-rw-r--r--src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java3
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java2
4 files changed, 27 insertions, 20 deletions
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissions.java b/src/com/android/packageinstaller/permission/model/AppPermissions.java
index 17014774..bca06c0c 100644
--- a/src/com/android/packageinstaller/permission/model/AppPermissions.java
+++ b/src/com/android/packageinstaller/permission/model/AppPermissions.java
@@ -28,7 +28,9 @@ import java.util.Collections;
import java.util.List;
public final class AppPermissions {
- private final ArrayMap<String, AppPermissionGroup> mGroups = new ArrayMap<>();
+ private final ArrayList<AppPermissionGroup> mGroups = new ArrayList<>();
+
+ private final ArrayMap<String, AppPermissionGroup> mNameToGroupMap = new ArrayMap<>();
private final Context mContext;
@@ -38,14 +40,17 @@ public final class AppPermissions {
private final Runnable mOnErrorCallback;
+ private final boolean mSortGroups;
+
private PackageInfo mPackageInfo;
public AppPermissions(Context context, PackageInfo packageInfo, String[] permissions,
- Runnable onErrorCallback) {
+ boolean sortGroups, Runnable onErrorCallback) {
mContext = context;
mPackageInfo = packageInfo;
mFilterPermissions = permissions;
mAppLabel = packageInfo.applicationInfo.loadLabel(context.getPackageManager());
+ mSortGroups = sortGroups;
mOnErrorCallback = onErrorCallback;
loadPermissionGroups();
}
@@ -64,11 +69,11 @@ public final class AppPermissions {
}
public AppPermissionGroup getPermissionGroup(String name) {
- return mGroups.get(name);
+ return mNameToGroupMap.get(name);
}
public List<AppPermissionGroup> getPermissionGroups() {
- return new ArrayList<>(mGroups.values());
+ return mGroups;
}
@@ -84,7 +89,7 @@ public final class AppPermissions {
}
private void loadPermissionGroups() {
- List<AppPermissionGroup> groups = new ArrayList<>();
+ mGroups.clear();
if (mPackageInfo.requestedPermissions == null) {
return;
@@ -93,7 +98,7 @@ public final class AppPermissions {
for (int i = 0; i < mPackageInfo.requestedPermissions.length; i++) {
String requestedPerm = mPackageInfo.requestedPermissions[i];
- if (hasGroupForPermission(requestedPerm, groups)) {
+ if (hasGroupForPermission(requestedPerm)) {
continue;
}
@@ -103,13 +108,13 @@ public final class AppPermissions {
continue;
}
- groups.add(group);
+ mGroups.add(group);
}
if (!ArrayUtils.isEmpty(mFilterPermissions)) {
- final int groupCount = groups.size();
+ final int groupCount = mGroups.size();
for (int i = groupCount - 1; i >= 0; i--) {
- AppPermissionGroup group = groups.get(i);
+ AppPermissionGroup group = mGroups.get(i);
boolean groupHasPermission = false;
for (String filterPerm : mFilterPermissions) {
if (group.hasPermission(filterPerm)) {
@@ -118,22 +123,23 @@ public final class AppPermissions {
}
}
if (!groupHasPermission) {
- groups.remove(i);
+ mGroups.remove(i);
}
}
}
- Collections.sort(groups);
+ if (mSortGroups) {
+ Collections.sort(mGroups);
+ }
- mGroups.clear();
- for (AppPermissionGroup group : groups) {
- mGroups.put(group.getName(), group);
+ mNameToGroupMap.clear();
+ for (AppPermissionGroup group : mGroups) {
+ mNameToGroupMap.put(group.getName(), group);
}
}
- private static boolean hasGroupForPermission(String permission,
- List<AppPermissionGroup> groups) {
- for (AppPermissionGroup group : groups) {
+ private boolean hasGroupForPermission(String permission) {
+ for (AppPermissionGroup group : mGroups) {
if (group.hasPermission(permission)) {
return true;
}
diff --git a/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java b/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java
index 9e2bfd13..15a33540 100644
--- a/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java
+++ b/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java
@@ -51,7 +51,7 @@ public class PermissionStatusReceiver extends BroadcastReceiver {
PackageInfo packageInfo =
context.getPackageManager().getPackageInfo(pkg, PackageManager.GET_PERMISSIONS);
AppPermissions appPermissions =
- new AppPermissions(context, packageInfo, null, null);
+ new AppPermissions(context, packageInfo, null, false, null);
int grantedCount = 0;
int totalCount = 0;
for (AppPermissionGroup group : appPermissions.getPermissionGroups()) {
diff --git a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java
index 50aa2afd..e83641f1 100644
--- a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java
+++ b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java
@@ -186,7 +186,8 @@ public final class AppPermissionsFragment extends SettingsWithHeader
breadcrumbView.setText(label);
}
- mAppPermissions = new AppPermissions(activity, packageInfo, null, new Runnable() {
+ mAppPermissions = new AppPermissions(activity, packageInfo, null, true,
+ new Runnable() {
@Override
public void run() {
getActivity().finish();
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
index fca3d138..7d516b29 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
@@ -99,7 +99,7 @@ public class GrantPermissionsActivity extends Activity
return;
}
- mAppPermissions = new AppPermissions(this, callingPackageInfo, mRequestedPermissions,
+ mAppPermissions = new AppPermissions(this, callingPackageInfo, mRequestedPermissions, false,
new Runnable() {
@Override
public void run() {