summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller/permission/model/AppPermissions.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/packageinstaller/permission/model/AppPermissions.java')
-rw-r--r--src/com/android/packageinstaller/permission/model/AppPermissions.java58
1 files changed, 30 insertions, 28 deletions
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissions.java b/src/com/android/packageinstaller/permission/model/AppPermissions.java
index bca06c0c..125a6bd8 100644
--- a/src/com/android/packageinstaller/permission/model/AppPermissions.java
+++ b/src/com/android/packageinstaller/permission/model/AppPermissions.java
@@ -19,18 +19,16 @@ package com.android.packageinstaller.permission.model;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
-import android.util.ArrayMap;
-
-import com.android.internal.util.ArrayUtils;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.LinkedHashMap;
import java.util.List;
public final class AppPermissions {
private final ArrayList<AppPermissionGroup> mGroups = new ArrayList<>();
- private final ArrayMap<String, AppPermissionGroup> mNameToGroupMap = new ArrayMap<>();
+ private final LinkedHashMap<String, AppPermissionGroup> mNameToGroupMap = new LinkedHashMap<>();
private final Context mContext;
@@ -95,36 +93,40 @@ public final class AppPermissions {
return;
}
- for (int i = 0; i < mPackageInfo.requestedPermissions.length; i++) {
- String requestedPerm = mPackageInfo.requestedPermissions[i];
-
- if (hasGroupForPermission(requestedPerm)) {
- continue;
- }
-
- AppPermissionGroup group = AppPermissionGroup.create(mContext,
- mPackageInfo, requestedPerm);
- if (group == null) {
- continue;
- }
+ if (mFilterPermissions != null) {
+ for (String filterPermission : mFilterPermissions) {
+ for (String requestedPerm : mPackageInfo.requestedPermissions) {
+ if (!filterPermission.equals(requestedPerm)) {
+ continue;
+ }
- mGroups.add(group);
- }
+ if (hasGroupForPermission(requestedPerm)) {
+ break;
+ }
- if (!ArrayUtils.isEmpty(mFilterPermissions)) {
- final int groupCount = mGroups.size();
- for (int i = groupCount - 1; i >= 0; i--) {
- AppPermissionGroup group = mGroups.get(i);
- boolean groupHasPermission = false;
- for (String filterPerm : mFilterPermissions) {
- if (group.hasPermission(filterPerm)) {
- groupHasPermission = true;
+ AppPermissionGroup group = AppPermissionGroup.create(mContext,
+ mPackageInfo, requestedPerm);
+ if (group == null) {
break;
}
+
+ mGroups.add(group);
+ break;
}
- if (!groupHasPermission) {
- mGroups.remove(i);
+ }
+ } else {
+ for (String requestedPerm : mPackageInfo.requestedPermissions) {
+ if (hasGroupForPermission(requestedPerm)) {
+ continue;
}
+
+ AppPermissionGroup group = AppPermissionGroup.create(mContext,
+ mPackageInfo, requestedPerm);
+ if (group == null) {
+ continue;
+ }
+
+ mGroups.add(group);
}
}