Reduce raciness of accessibility service cts tests

The tests were relying on AccessibilityService#onDestroy to
remove references to actively running test services. That meant
that disconnected, but not destroyed, services were indistinguishable
from active, running services. If onDestroy wasn't called before
trying to set up another service, the test would fail because the
service is was trying to start appears already to be running.

Bug: 28621277
Change-Id: I3afa535203ca66efb58995a2d98988b9e5f00ac5
diff --git a/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityMagnificationTest.java b/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityMagnificationTest.java
index c021922..8bff397 100644
--- a/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityMagnificationTest.java
+++ b/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityMagnificationTest.java
@@ -47,7 +47,7 @@
 
     @Override
     protected void tearDown() throws Exception {
-        mService.runOnServiceSync(() -> mService.disableSelf());
+        mService.runOnServiceSync(() -> mService.disableSelfAndRemove());
         mService = null;
 
         super.tearDown();
diff --git a/tests/accessibilityservice/src/android/accessibilityservice/cts/InstrumentedAccessibilityService.java b/tests/accessibilityservice/src/android/accessibilityservice/cts/InstrumentedAccessibilityService.java
index 99efb2c..4a9ce08 100644
--- a/tests/accessibilityservice/src/android/accessibilityservice/cts/InstrumentedAccessibilityService.java
+++ b/tests/accessibilityservice/src/android/accessibilityservice/cts/InstrumentedAccessibilityService.java
@@ -56,6 +56,14 @@
         // Stub method.
     }
 
+    public void disableSelfAndRemove() {
+        disableSelf();
+
+        synchronized (sInstances) {
+            sInstances.remove(getClass());
+        }
+    }
+
     public void runOnServiceSync(Runnable runner) {
         final SyncRunnable sr = new SyncRunnable(runner, TIMEOUT_SERVICE_PERFORM_SYNC);
         mHandler.post(sr);
@@ -112,6 +120,10 @@
 
                 final T instance = getInstanceForClass(clazz, TIMEOUT_SERVICE_ENABLE);
                 if (instance == null) {
+                    ShellCommandBuilder.create(testCase)
+                            .putSecureSetting(Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
+                                    enabledServices)
+                            .run();
                     throw new RuntimeException("Starting accessibility service " + serviceName
                             + " took longer than " + TIMEOUT_SERVICE_ENABLE + "ms");
                 }