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