From 37fedf8b78dea969b97188fd3079fea5e71704be Mon Sep 17 00:00:00 2001 From: Svetoslav Ganov <svetoslavganov@google.com> Date: Wed, 14 Sep 2011 10:44:09 -0700 Subject: Disable accessibility if all accessibility serivces are disbaled. Accessibility was kept enabled even if all accessibility services are disabled (explicitly by the user or removed) which was causing the system to fire accessibility events that will never be consumed. Change-Id: Ifb03e786ac0106687252bd1979725ffd724ad1c5 --- .../accessibility/AccessibilityManagerService.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'services') diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java index 09ddc2f..1e4faad 100644 --- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -225,7 +225,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub return false; } } - + @Override public void onReceive(Context context, Intent intent) { if (intent.getAction() == Intent.ACTION_BOOT_COMPLETED) { @@ -697,6 +697,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub private void manageServicesLocked() { populateEnabledServicesLocked(mEnabledServices); updateServicesStateLocked(mInstalledServices, mEnabledServices); + disableAccessibilityIfNoEnabledServices(mEnabledServices); } /** @@ -781,6 +782,19 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } /** + * Disables accessibility if there are no enabled accessibility services which + * to consume the generated accessibility events. + * + * @param enabledServices The set of enabled services. + */ + private void disableAccessibilityIfNoEnabledServices(Set<ComponentName> enabledServices) { + if (enabledServices.isEmpty()) { + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.ACCESSIBILITY_ENABLED, 0); + } + } + + /** * Sends the state to the clients. */ private void sendStateToClientsLocked() { -- cgit v1.1