Merge "Notify system when uiAutomation terminates"
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 972a426..270a762 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -772,7 +772,6 @@
public void unregisterUiTestAutomationService(IAccessibilityServiceClient serviceClient) {
synchronized (mLock) {
mUiAutomationManager.unregisterUiTestAutomationServiceLocked(serviceClient);
- onUserStateChangedLocked(getCurrentUserStateLocked());
}
}
diff --git a/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java b/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
index f057112..56a9534 100644
--- a/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
+++ b/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
@@ -28,6 +28,7 @@
import android.util.Slog;
import android.view.accessibility.AccessibilityEvent;
+import com.android.internal.util.DumpUtils;
import com.android.server.wm.WindowManagerInternal;
import java.io.FileDescriptor;
@@ -45,6 +46,8 @@
private AccessibilityServiceInfo mUiAutomationServiceInfo;
+ private AccessibilityClientConnection.SystemSupport mSystemSupport;
+
private int mUiAutomationFlags;
private IBinder mUiAutomationServiceOwner;
@@ -92,6 +95,7 @@
return;
}
+ mSystemSupport = systemSupport;
mUiAutomationService = new UiAutomationService(context, accessibilityServiceInfo, id,
mainHandler, lock, securityPolicy, systemSupport, windowManagerInternal,
globalActionPerfomer);
@@ -169,6 +173,7 @@
mUiAutomationServiceOwner.unlinkToDeath(mUiAutomationServiceOwnerDeathRecipient, 0);
mUiAutomationServiceOwner = null;
}
+ mSystemSupport.onClientChange(false);
}
private class UiAutomationService extends AccessibilityClientConnection {
@@ -224,6 +229,17 @@
return true;
}
+ @Override
+ public void dump(FileDescriptor fd, final PrintWriter pw, String[] args) {
+ if (!DumpUtils.checkDumpPermission(mContext, LOG_TAG, pw)) return;
+ synchronized (mLock) {
+ pw.append("Ui Automation[eventTypes="
+ + AccessibilityEvent.eventTypeToString(mEventTypes));
+ pw.append(", notificationTimeout=" + mNotificationTimeout);
+ pw.append("]");
+ }
+ }
+
// Since this isn't really an accessibility service, several methods are just stubbed here.
@Override
public boolean setSoftKeyboardShowMode(int mode) {
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/UiAutomationManagerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/UiAutomationManagerTest.java
index dbebd01..45ecbfb 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/UiAutomationManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/UiAutomationManagerTest.java
@@ -153,13 +153,14 @@
}
@Test
- public void uiAutomationBinderDiesBeforeConnecting_shouldNotCrash() throws Exception {
+ public void uiAutomationBinderDiesBeforeConnecting_notifiesSystem() throws Exception {
register(0);
ArgumentCaptor<IBinder.DeathRecipient> captor = ArgumentCaptor.forClass(
IBinder.DeathRecipient.class);
verify(mMockOwner).linkToDeath(captor.capture(), anyInt());
captor.getValue().binderDied();
mMessageCapturingHandler.sendAllMessages();
+ verify(mMockSystemSupport).onClientChange(false);
}
private void register(int flags) {