diff options
| author | 2018-06-08 21:50:19 +0000 | |
|---|---|---|
| committer | 2018-06-08 21:50:19 +0000 | |
| commit | 91cee2b54125816624b33a74ae115d9ff78da900 (patch) | |
| tree | 0bf1e6f1ce39152cb43e2ec8052af18ae9e95399 | |
| parent | 54d918d36ad2f4e22716d551d236eeb3f3b96f4b (diff) | |
| parent | fba2c8fb58412a314d6ce2c722d6614d21bdc99d (diff) | |
Merge "After an ax service permanently crashes, it won't eat keys"
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); } |