summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Pedowitz <ijpedowitz@google.com>2015-08-21 17:33:02 +0000
committerThe Android Automerger <android-build@google.com>2015-08-21 10:53:20 -0700
commitcc257aa7960422795202de35ddc691fe2bce4e6c (patch)
treef39759200479d79430438534379028d998bec836
parent32c4cb1558a9446d538ab1db9647d355ba85a6bd (diff)
downloadandroid_packages_apps_PackageInstaller-cc257aa7960422795202de35ddc691fe2bce4e6c.tar.gz
android_packages_apps_PackageInstaller-cc257aa7960422795202de35ddc691fe2bce4e6c.tar.bz2
android_packages_apps_PackageInstaller-cc257aa7960422795202de35ddc691fe2bce4e6c.zip
Revert "Show multi-permission UI in the requested order."
This reverts commit dda78230999da573318594c7cfcdbc738bab864e. Bug: 23314383 Bug: 23397858 Change-Id: I8d06936ad8a51299148f0a311da81d8868840e78
-rw-r--r--src/com/android/packageinstaller/permission/model/AppPermissions.java58
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java18
2 files changed, 36 insertions, 40 deletions
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissions.java b/src/com/android/packageinstaller/permission/model/AppPermissions.java
index 125a6bd8..bca06c0c 100644
--- a/src/com/android/packageinstaller/permission/model/AppPermissions.java
+++ b/src/com/android/packageinstaller/permission/model/AppPermissions.java
@@ -19,16 +19,18 @@ 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 LinkedHashMap<String, AppPermissionGroup> mNameToGroupMap = new LinkedHashMap<>();
+ private final ArrayMap<String, AppPermissionGroup> mNameToGroupMap = new ArrayMap<>();
private final Context mContext;
@@ -93,40 +95,36 @@ public final class AppPermissions {
return;
}
- if (mFilterPermissions != null) {
- for (String filterPermission : mFilterPermissions) {
- for (String requestedPerm : mPackageInfo.requestedPermissions) {
- if (!filterPermission.equals(requestedPerm)) {
- continue;
- }
+ for (int i = 0; i < mPackageInfo.requestedPermissions.length; i++) {
+ String requestedPerm = mPackageInfo.requestedPermissions[i];
- if (hasGroupForPermission(requestedPerm)) {
- break;
- }
+ if (hasGroupForPermission(requestedPerm)) {
+ continue;
+ }
+
+ AppPermissionGroup group = AppPermissionGroup.create(mContext,
+ mPackageInfo, requestedPerm);
+ if (group == null) {
+ continue;
+ }
- AppPermissionGroup group = AppPermissionGroup.create(mContext,
- mPackageInfo, requestedPerm);
- if (group == null) {
+ mGroups.add(group);
+ }
+
+ 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;
break;
}
-
- mGroups.add(group);
- break;
}
- }
- } else {
- for (String requestedPerm : mPackageInfo.requestedPermissions) {
- if (hasGroupForPermission(requestedPerm)) {
- continue;
+ if (!groupHasPermission) {
+ mGroups.remove(i);
}
-
- AppPermissionGroup group = AppPermissionGroup.create(mContext,
- mPackageInfo, requestedPerm);
- if (group == null) {
- continue;
- }
-
- mGroups.add(group);
}
}
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
index 0c087350..a61432e3 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
@@ -31,6 +31,7 @@ import android.hardware.camera2.utils.ArrayUtils;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.style.ForegroundColorSpan;
+import android.util.ArrayMap;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
@@ -46,7 +47,6 @@ import com.android.packageinstaller.permission.utils.SafetyNetLogger;
import com.android.packageinstaller.permission.utils.Utils;
import java.util.ArrayList;
-import java.util.LinkedHashMap;
import java.util.List;
public class GrantPermissionsActivity extends OverlayTouchActivity
@@ -57,7 +57,7 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
private String[] mRequestedPermissions;
private int[] mGrantResults;
- private LinkedHashMap<String, GroupState> mRequestGrantPermissionGroups = new LinkedHashMap<>();
+ private ArrayMap<String, GroupState> mRequestGrantPermissionGroups = new ArrayMap<>();
private GrantPermissionsViewHandler mViewHandler;
private AppPermissions mAppPermissions;
@@ -187,8 +187,8 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
private boolean showNextPermissionGroupGrantRequest() {
final int groupCount = mRequestGrantPermissionGroups.size();
- int currentIndex = 0;
- for (GroupState groupState : mRequestGrantPermissionGroups.values()) {
+ for (int i = 0; i < groupCount; i++) {
+ GroupState groupState = mRequestGrantPermissionGroups.valueAt(i);
if (groupState.mState == GroupState.STATE_UNKNOWN) {
CharSequence appLabel = mAppPermissions.getAppLabel();
SpannableString message = new SpannableString(getString(
@@ -215,13 +215,11 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
}
int icon = groupState.mGroup.getIconResId();
- mViewHandler.updateUi(groupState.mGroup.getName(), groupCount, currentIndex,
+ mViewHandler.updateUi(groupState.mGroup.getName(), groupCount, i,
Icon.createWithResource(resources, icon), message,
groupState.mGroup.isUserSet());
- return true;
+ return true;
}
-
- currentIndex++;
}
return false;
@@ -361,8 +359,8 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
final int groupCount = mRequestGrantPermissionGroups.size();
List<AppPermissionGroup> groups = new ArrayList<>(groupCount);
- for (GroupState groupState : mRequestGrantPermissionGroups.values()) {
- groups.add(groupState.mGroup);
+ for (int i = 0; i < groupCount; i++) {
+ groups.add(mRequestGrantPermissionGroups.valueAt(i).mGroup);
}
SafetyNetLogger.logPermissionsRequested(mAppPermissions.getPackageInfo(), groups);