summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Svetoslav Ganov <svetoslavganov@google.com> 2011-09-14 11:41:29 -0700
committer Svetoslav Ganov <svetoslavganov@google.com> 2011-09-14 11:41:40 -0700
commitd07d60b9bc0fd2e88f58d6e68dbfadad1bdd31cf (patch)
tree6f691d8e32ca2a05c14dab3dae877bc4c228f951
parent37fedf8b78dea969b97188fd3079fea5e71704be (diff)
AccessibilityManagerService not registered for removed packages.
The pakcage monitor in the AccessibilityManagerService was not watching for packages that are removed. This is needes since 1) we need to remove the package from the enabled accessibility serivces and clean up after the removed serivice; 2) we need to disable accessibility if the last access serivices went away. Change-Id: I06d33b411ce60703e5a2843107323ffc87046c16
-rw-r--r--services/java/com/android/server/accessibility/AccessibilityManagerService.java44
1 files changed, 32 insertions, 12 deletions
diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
index 1e4faad55f31..10d384b47502 100644
--- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -190,6 +190,22 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
}
@Override
+ public void onPackageRemoved(String packageName, int uid) {
+ synchronized (mLock) {
+ Iterator<ComponentName> it = mEnabledServices.iterator();
+ while (it.hasNext()) {
+ ComponentName comp = it.next();
+ String compPkg = comp.getPackageName();
+ if (compPkg.equals(packageName)) {
+ it.remove();
+ updateEnabledAccessibilitySerivcesSettingLocked(mEnabledServices);
+ return;
+ }
+ }
+ }
+ }
+
+ @Override
public boolean onHandleForceStop(Intent intent, String[] packages,
int uid, boolean doit) {
synchronized (mLock) {
@@ -209,18 +225,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
}
}
if (changed) {
- it = mEnabledServices.iterator();
- StringBuilder str = new StringBuilder();
- while (it.hasNext()) {
- if (str.length() > 0) {
- str.append(':');
- }
- str.append(it.next().flattenToShortString());
- }
- Settings.Secure.putString(mContext.getContentResolver(),
- Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
- str.toString());
- manageServicesLocked();
+ updateEnabledAccessibilitySerivcesSettingLocked(mEnabledServices);
}
return false;
}
@@ -252,6 +257,21 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
super.onReceive(context, intent);
}
+
+ private void updateEnabledAccessibilitySerivcesSettingLocked(
+ Set<ComponentName> enabledServices) {
+ Iterator<ComponentName> it = enabledServices.iterator();
+ StringBuilder str = new StringBuilder();
+ while (it.hasNext()) {
+ if (str.length() > 0) {
+ str.append(':');
+ }
+ str.append(it.next().flattenToShortString());
+ }
+ Settings.Secure.putString(mContext.getContentResolver(),
+ Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
+ str.toString());
+ }
};
// package changes