diff options
author | Svetoslav Ganov <svetoslavganov@google.com> | 2012-10-24 19:45:07 -0700 |
---|---|---|
committer | Svetoslav Ganov <svetoslavganov@google.com> | 2012-10-25 09:41:11 -0700 |
commit | 7fd9882ba3e97423901e06188c6dbaaca661ecbd (patch) | |
tree | b580140b9ed579388dc06755cd52b10671cb4b09 /services/java/com/android/server/accessibility/AccessibilityManagerService.java | |
parent | ead7d90e8b049c9689560015dbb761242fd86c99 (diff) |
Accessibility layer in inconsistent state after running UI test automation tests.
1. The accessibility layer has a back door for a UI test automation code running
from the shell to attach. The unregister code does an incorrect identity check
and as a result the register UI test automation service is not disconnected
until its process is killed. The fix is super safe and simple.
bug:7409261
Change-Id: I4b1da18be6c5619dadd4a58fca6724529bc59dea
Diffstat (limited to 'services/java/com/android/server/accessibility/AccessibilityManagerService.java')
-rw-r--r-- | services/java/com/android/server/accessibility/AccessibilityManagerService.java | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java index 7c482f58f80b..6b277c7887e2 100644 --- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -558,8 +558,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { public void unregisterUiTestAutomationService(IAccessibilityServiceClient serviceClient) { synchronized (mLock) { // Automation service is not bound, so pretend it died to perform clean up. - if (mUiAutomationService != null - && mUiAutomationService.mServiceInterface == serviceClient) { + if (mUiAutomationService != null && mUiAutomationService.mServiceInterface != null + && serviceClient != null && mUiAutomationService.mServiceInterface + .asBinder() == serviceClient.asBinder()) { mUiAutomationService.binderDied(); } } |