summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/AppOpsService.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2013-08-08 16:21:19 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-08-08 16:21:19 -0700
commit53b9065acf8646ca541c0262dba4f81dd022c626 (patch)
tree162f7d445eba20708c42aa04d05403edfce04d00 /services/java/com/android/server/AppOpsService.java
parent541ba710731c484926440fbb9b2c39d69f38b652 (diff)
parent42380b6de656ca1336b8b99dbc7995cfbf875924 (diff)
am 42380b6d: am 9f11f105: am 7f09ec39: Fix issue #10226007: Reset apps restores most of the changed settings...
* commit '42380b6de656ca1336b8b99dbc7995cfbf875924': Fix issue #10226007: Reset apps restores most of the changed settings...
Diffstat (limited to 'services/java/com/android/server/AppOpsService.java')
-rw-r--r--services/java/com/android/server/AppOpsService.java18
1 files changed, 14 insertions, 4 deletions
diff --git a/services/java/com/android/server/AppOpsService.java b/services/java/com/android/server/AppOpsService.java
index 81572c51d22d..7af95f3f84e6 100644
--- a/services/java/com/android/server/AppOpsService.java
+++ b/services/java/com/android/server/AppOpsService.java
@@ -426,12 +426,14 @@ public class AppOpsService extends IAppOpsService.Stub {
HashMap<Callback, ArrayList<Pair<String, Integer>>> callbacks = null;
synchronized (this) {
boolean changed = false;
- for (int i=0; i<mUidOps.size(); i++) {
+ for (int i=mUidOps.size()-1; i>=0; i--) {
HashMap<String, Ops> packages = mUidOps.valueAt(i);
- for (Map.Entry<String, Ops> ent : packages.entrySet()) {
+ Iterator<Map.Entry<String, Ops>> it = packages.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry<String, Ops> ent = it.next();
String packageName = ent.getKey();
Ops pkgOps = ent.getValue();
- for (int j=0; j<pkgOps.size(); j++) {
+ for (int j=pkgOps.size()-1; j>=0; j--) {
Op curOp = pkgOps.valueAt(j);
if (curOp.mode != AppOpsManager.MODE_ALLOWED) {
curOp.mode = AppOpsManager.MODE_ALLOWED;
@@ -440,9 +442,17 @@ public class AppOpsService extends IAppOpsService.Stub {
mOpModeWatchers.get(curOp.op));
callbacks = addCallbacks(callbacks, packageName, curOp.op,
mPackageModeWatchers.get(packageName));
- pruneOp(curOp, mUidOps.keyAt(i), packageName);
+ if (curOp.time == 0 && curOp.rejectTime == 0) {
+ pkgOps.removeAt(j);
+ }
}
}
+ if (pkgOps.size() == 0) {
+ it.remove();
+ }
+ }
+ if (packages.size() == 0) {
+ mUidOps.removeAt(i);
}
}
if (changed) {