summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java15
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java5
2 files changed, 19 insertions, 1 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 7798cf7af3cb..b2c1beddec46 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -3743,6 +3743,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
/**
* Removes a service.
+ * There are three states to a service here: off, bound, and binding.
+ * This stops tracking the service as bound.
*
* @param serviceConnection The service.
*/
@@ -3759,6 +3761,19 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
scheduleNotifyClientsOfServicesStateChange(this);
}
+ /**
+ * Make sure a services disconnected but still 'on' state is reflected in UserState
+ * There are three states to a service here: off, bound, and binding.
+ * This drops a service from a bound state, to the binding state.
+ * The binding state describes the situation where a service is on, but not bound.
+ *
+ * @param serviceConnection The service.
+ */
+ public void serviceDisconnectedLocked(AccessibilityServiceConnection serviceConnection) {
+ removeServiceLocked(serviceConnection);
+ mBindingServices.add(serviceConnection.getComponentName());
+ }
+
public Set<ComponentName> getBindingServicesLocked() {
return mBindingServices;
}
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java
index eb18f06baae0..105df9238f8d 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java
@@ -258,7 +258,10 @@ class AccessibilityServiceConnection extends AbstractAccessibilityServiceConnect
return;
}
mWasConnectedAndDied = true;
- resetLocked();
+ UserState userState = mUserStateWeakReference.get();
+ if (userState != null) {
+ userState.serviceDisconnectedLocked(this);
+ }
if (mId == mSystemSupport.getMagnificationController().getIdOfLastServiceToMagnify()) {
mSystemSupport.getMagnificationController().resetIfNeeded(true);
}