From 215b44a1c2c883e628e1ab5b945a1a4aa04ee392 Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Tue, 4 Aug 2015 19:03:40 -0700 Subject: [PATCH] Fix app ops regressions introduced by the per UID policy change 1. Add a missing statement in the parsing code 2. Notify for all packages on UID ap op policy change bug:22957162 Change-Id: Ic2bd5d07ef52be207e66b63ffe45fd8a456eb5a8 --- .../core/java/com/android/server/AppOpsService.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/AppOpsService.java b/services/core/java/com/android/server/AppOpsService.java index 2a3492b4f06b2..45c020c8cfc2c 100644 --- a/services/core/java/com/android/server/AppOpsService.java +++ b/services/core/java/com/android/server/AppOpsService.java @@ -25,6 +25,7 @@ import java.io.IOException; import java.io.PrintWriter; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -509,6 +510,7 @@ public class AppOpsService extends IAppOpsService.Stub { } } + String[] uidPackageNames = getPackagesForUid(uid); ArrayMap> callbackSpecs = null; ArrayList callbacks = mOpModeWatchers.get(code); @@ -516,12 +518,13 @@ public class AppOpsService extends IAppOpsService.Stub { final int callbackCount = callbacks.size(); for (int i = 0; i < callbackCount; i++) { Callback callback = callbacks.get(i); + ArraySet changedPackages = new ArraySet<>(); + Collections.addAll(changedPackages, uidPackageNames); callbackSpecs = new ArrayMap<>(); - callbackSpecs.put(callback, null); + callbackSpecs.put(callback, changedPackages); } } - String[] uidPackageNames = getPackagesForUid(uid); for (String uidPackageName : uidPackageNames) { callbacks = mPackageModeWatchers.get(uidPackageName); if (callbacks != null) { @@ -931,7 +934,6 @@ public class AppOpsService extends IAppOpsService.Stub { } return noteOperationUnchecked(code, proxiedUid, proxiedPackageName, Binder.getCallingUid(), proxyPackageName); - } @Override @@ -1266,7 +1268,7 @@ public class AppOpsService extends IAppOpsService.Stub { String tagName = parser.getName(); if (tagName.equals("pkg")) { readPackage(parser); - } if (tagName.equals("uid")) { + } else if (tagName.equals("uid")) { readUidOps(parser); } else { Slog.w(TAG, "Unknown element under : "