diff options
| author | 2017-09-20 20:14:17 +0000 | |
|---|---|---|
| committer | 2017-09-20 20:14:17 +0000 | |
| commit | 1f8c8eab29b65a07402051e9d8105bd5db36806a (patch) | |
| tree | 59bf8aca71a32a5716faf79438515e98cbd92fa0 | |
| parent | c323c9f4e90c8c2105ff5209d089bc7103b397ed (diff) | |
| parent | 098dae1b3ef9b2948d230435e072d473aa408013 (diff) | |
Merge "DND apps might not have a service, and that's ok" into oc-mr1-dev
am: 098dae1b3e
Change-Id: I2bc381f8f155033fa218d43af8842044626e3404
| -rw-r--r-- | services/core/java/com/android/server/notification/ConditionProviders.java | 5 | ||||
| -rw-r--r-- | services/core/java/com/android/server/notification/ManagedServices.java | 35 |
2 files changed, 23 insertions, 17 deletions
diff --git a/services/core/java/com/android/server/notification/ConditionProviders.java b/services/core/java/com/android/server/notification/ConditionProviders.java index 3444ef3ec2fa..c0fbfbb20b95 100644 --- a/services/core/java/com/android/server/notification/ConditionProviders.java +++ b/services/core/java/com/android/server/notification/ConditionProviders.java @@ -186,6 +186,11 @@ public class ConditionProviders extends ManagedServices { super.onPackagesChanged(removingPackage, pkgList, uid); } + @Override + protected boolean isValidEntry(String packageOrComponent, int userId) { + return true; + } + public ManagedServiceInfo checkServiceToken(IConditionProvider provider) { synchronized(mMutex) { return checkServiceTokenLocked(provider); diff --git a/services/core/java/com/android/server/notification/ManagedServices.java b/services/core/java/com/android/server/notification/ManagedServices.java index add4184fc129..b7b91a76ebf3 100644 --- a/services/core/java/com/android/server/notification/ManagedServices.java +++ b/services/core/java/com/android/server/notification/ManagedServices.java @@ -294,6 +294,7 @@ abstract public class ManagedServices { } if (type == XmlPullParser.START_TAG) { if (TAG_MANAGED_SERVICES.equals(tag)) { + Slog.i(TAG, "Read " + mConfig.caption + " permissions from xml"); final String approved = XmlUtils.readStringAttribute(parser, ATT_APPROVED_LIST); final int userId = XmlUtils.readIntAttribute(parser, ATT_USER_ID, 0); final boolean isPrimary = @@ -353,6 +354,8 @@ abstract public class ManagedServices { protected void setPackageOrComponentEnabled(String pkgOrComponent, int userId, boolean isPrimary, boolean enabled) { + Slog.i(TAG, + (enabled ? " Allowing " : "Disallowing ") + mConfig.caption + " " + pkgOrComponent); ArrayMap<Boolean, ArraySet<String>> allowedByType = mApproved.get(userId); if (allowedByType == null) { allowedByType = new ArrayMap<>(); @@ -460,6 +463,7 @@ abstract public class ManagedServices { } public void onUserRemoved(int user) { + Slog.i(TAG, "Removing approved services for removed user " + user); mApproved.remove(user); rebindServices(true); } @@ -543,10 +547,8 @@ abstract public class ManagedServices { } // State changed - if (DEBUG) { - Slog.d(TAG, ((enabled) ? "Enabling " : "Disabling ") + "component " + - component.flattenToShortString()); - } + Slog.d(TAG, ((enabled) ? "Enabling " : "Disabling ") + "component " + + component.flattenToShortString()); synchronized (mMutex) { final int[] userIds = mUserProfiles.getCurrentProfileIds(); @@ -628,12 +630,10 @@ abstract public class ManagedServices { int P = approved.size(); for (int k = P - 1; k >= 0; k--) { final String approvedPackageOrComponent = approved.valueAt(k); - if (!hasMatchingServices(approvedPackageOrComponent, userId)){ + if (!isValidEntry(approvedPackageOrComponent, userId)){ approved.removeAt(k); - if (DEBUG) { - Slog.v(TAG, "Removing " + approvedPackageOrComponent - + " from approved list; no matching services found"); - } + Slog.v(TAG, "Removing " + approvedPackageOrComponent + + " from approved list; no matching services found"); } else { if (DEBUG) { Slog.v(TAG, "Keeping " + approvedPackageOrComponent @@ -678,6 +678,10 @@ abstract public class ManagedServices { } } + protected boolean isValidEntry(String packageOrComponent, int userId) { + return hasMatchingServices(packageOrComponent, userId); + } + private boolean hasMatchingServices(String packageOrComponent, int userId) { if (!TextUtils.isEmpty(packageOrComponent)) { final String packageName = getPackageName(packageOrComponent); @@ -830,8 +834,7 @@ abstract public class ManagedServices { if (name.equals(info.component) && info.userid == userid) { // cut old connections - if (DEBUG) Slog.v(TAG, " disconnecting old " + getCaption() + ": " - + info.service); + Slog.v(TAG, " disconnecting old " + getCaption() + ": " + info.service); removeServiceLocked(i); if (info.connection != null) { mContext.unbindService(info.connection); @@ -859,7 +862,7 @@ abstract public class ManagedServices { appInfo != null ? appInfo.targetSdkVersion : Build.VERSION_CODES.BASE; try { - if (DEBUG) Slog.v(TAG, "binding: " + intent); + Slog.v(TAG, "binding: " + intent); ServiceConnection serviceConnection = new ServiceConnection() { IInterface mService; @@ -917,8 +920,7 @@ abstract public class ManagedServices { final int N = mServices.size(); for (int i = N - 1; i >= 0; i--) { final ManagedServiceInfo info = mServices.get(i); - if (name.equals(info.component) - && info.userid == userid) { + if (name.equals(info.component) && info.userid == userid) { removeServiceLocked(i); if (info.connection != null) { try { @@ -945,9 +947,8 @@ abstract public class ManagedServices { final int N = mServices.size(); for (int i = N - 1; i >= 0; i--) { final ManagedServiceInfo info = mServices.get(i); - if (info.service.asBinder() == service.asBinder() - && info.userid == userid) { - if (DEBUG) Slog.d(TAG, "Removing active service " + info.component); + if (info.service.asBinder() == service.asBinder() && info.userid == userid) { + Slog.d(TAG, "Removing active service " + info.component); serviceInfo = removeServiceLocked(i); } } |