Merge "Add BidiFormatter utility"
diff --git a/tests/accessibility/AndroidManifest.xml b/tests/accessibility/AndroidManifest.xml
index dde1de8..0d18cef 100644
--- a/tests/accessibility/AndroidManifest.xml
+++ b/tests/accessibility/AndroidManifest.xml
@@ -19,6 +19,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.view.accessibility.services">
 
+  <uses-permission android:name="android.permission.CAN_REQUEST_TOUCH_EXPLORATION_MODE"/>
+
   <application>
 
     <service android:name=".SpeakingAccessibilityService"
diff --git a/tests/accessibility/res/xml/speaking_accessibilityservice.xml b/tests/accessibility/res/xml/speaking_accessibilityservice.xml
index 630940b..d43d3e7 100644
--- a/tests/accessibility/res/xml/speaking_accessibilityservice.xml
+++ b/tests/accessibility/res/xml/speaking_accessibilityservice.xml
@@ -16,5 +16,5 @@
 <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
     android:accessibilityEventTypes="typeAllMask"
     android:accessibilityFeedbackType="feedbackSpoken"
-    android:accessibilityFlags="flagDefault"
+    android:accessibilityFlags="flagDefault|flagRequestTouchExplorationMode"
     android:canRetrieveWindowContent="true" />
diff --git a/tests/accessibility/res/xml/vibrating_accessibilityservice.xml b/tests/accessibility/res/xml/vibrating_accessibilityservice.xml
index 4ccec76..c2f8799 100644
--- a/tests/accessibility/res/xml/vibrating_accessibilityservice.xml
+++ b/tests/accessibility/res/xml/vibrating_accessibilityservice.xml
@@ -14,7 +14,7 @@
      limitations under the License.
 -->
 <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
-    android:accessibilityEventTypes="typeAllMask"
+    android:accessibilityEventTypes="typeAllMask|"
     android:accessibilityFeedbackType="feedbackHaptic"
-    android:accessibilityFlags="flagDefault"
+    android:accessibilityFlags="flagDefault|flagRequestTouchExplorationMode"
     android:canRetrieveWindowContent="true" />
diff --git a/tests/accessibilityservice/AndroidManifest.xml b/tests/accessibilityservice/AndroidManifest.xml
index 805f697..117578e 100644
--- a/tests/accessibilityservice/AndroidManifest.xml
+++ b/tests/accessibilityservice/AndroidManifest.xml
@@ -19,6 +19,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.accessibilityservice.delegate">
 
+  <uses-permission android:name="android.permission.CAN_REQUEST_TOUCH_EXPLORATION_MODE"/>
+
   <application>
 
     <uses-library android:name="android.test.runner"/>
diff --git a/tests/accessibilityservice/res/xml/accessibilityservice.xml b/tests/accessibilityservice/res/xml/accessibilityservice.xml
index 395d022..69e0651 100644
--- a/tests/accessibilityservice/res/xml/accessibilityservice.xml
+++ b/tests/accessibilityservice/res/xml/accessibilityservice.xml
@@ -16,7 +16,7 @@
 <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
     android:accessibilityEventTypes="typeAllMask"
     android:accessibilityFeedbackType="feedbackGeneric"
-    android:accessibilityFlags="flagDefault"
+    android:accessibilityFlags="flagDefault|flagRequestTouchExplorationMode"
     android:canRetrieveWindowContent="true"
     android:notificationTimeout="50"
     android:settingsActivity="android.accessibilityservice.delegate.SomeActivity"
diff --git a/tests/tests/accessibility/src/android/view/accessibility/cts/AccessibilityManagerTest.java b/tests/tests/accessibility/src/android/view/accessibility/cts/AccessibilityManagerTest.java
index 28e26eb..7ac0572 100644
--- a/tests/tests/accessibility/src/android/view/accessibility/cts/AccessibilityManagerTest.java
+++ b/tests/tests/accessibility/src/android/view/accessibility/cts/AccessibilityManagerTest.java
@@ -52,10 +52,6 @@
         assertEquals("Accessibility should have been enabled by the test runner.",
                 1, Settings.Secure.getInt(mContext.getContentResolver(),
                         Settings.Secure.ACCESSIBILITY_ENABLED));
-
-        assertEquals("Touch exploration should have been enabled by the test runner.",
-                1, Settings.Secure.getInt(mContext.getContentResolver(),
-                        Settings.Secure.TOUCH_EXPLORATION_ENABLED));
     }
 
     public void testAddAndRemoveAccessibilityStateChangeListener() throws Exception {
diff --git a/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityServiceInfoTest.java b/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityServiceInfoTest.java
index 0f687d0..1d28470 100644
--- a/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityServiceInfoTest.java
+++ b/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityServiceInfoTest.java
@@ -110,7 +110,9 @@
         AccessibilityServiceInfo speakingService = enabledServices.get(0);
         assertSame(AccessibilityEvent.TYPES_ALL_MASK, speakingService.eventTypes);
         assertSame(AccessibilityServiceInfo.FEEDBACK_GENERIC, speakingService.feedbackType);
-        assertSame(AccessibilityServiceInfo.DEFAULT, speakingService.flags);
+        assertSame(AccessibilityServiceInfo.DEFAULT
+                | AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE,
+                speakingService.flags);
         assertSame(50l, speakingService.notificationTimeout);
         assertEquals("Delegating Accessibility Service", speakingService.getDescription());
         assertNull(speakingService.packageNames /*all packages*/);
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityServiceTestRunner.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityServiceTestRunner.java
index 7490f18..d333943 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityServiceTestRunner.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityServiceTestRunner.java
@@ -67,7 +67,7 @@
     }
 
     private void afterTest() throws DeviceNotAvailableException {
-        AccessibilityTestRunner.disableAccessibilityAndServicesAndTouchExploration(getDevice());
+        AccessibilityTestRunner.disableAccessibilityAndServices(getDevice());
         uninstallAndAssert(DELEGATING_ACCESSIBLITY_SERVICE_PACKAGE_NAME);
     }
 
@@ -85,7 +85,7 @@
     private void enableAccessibilityAndDelegatingService() throws DeviceNotAvailableException {
         String componentName = DELEGATING_ACCESSIBLITY_SERVICE_PACKAGE_NAME + "/"
             + DELEGATING_ACCESSIBLITY_SERVICE_NAME;
-        AccessibilityTestRunner.enableAccessibilityAndServicesAndTouchExploration(getDevice(),
+        AccessibilityTestRunner.enableAccessibilityAndServices(getDevice(),
                 componentName);
     }
 }
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityTestRunner.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityTestRunner.java
index ca4f9e1..2a4239a 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityTestRunner.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/AccessibilityTestRunner.java
@@ -68,11 +68,11 @@
 
     private void beforeTest() throws DeviceNotAvailableException {
         installApkAndAssert(SOME_ACCESSIBLITY_SERVICES_APK);
-        enableAccessibilityAndServicesAndTouchExploration();
+        enableAccessibilityAndServices();
     }
 
     private void afterTest() throws DeviceNotAvailableException {
-        disableAccessibilityAndServicesAndTouchExploration(getDevice());
+        disableAccessibilityAndServices(getDevice());
         uninstallAndAssert(SOME_ACCESSIBLITY_SERVICES_PACKAGE_NAME);
     }
 
@@ -87,26 +87,27 @@
         TestCase.assertNull("Error uninstalling: " + packageName, errorMessage);
     }
 
-    private void enableAccessibilityAndServicesAndTouchExploration()
-            throws DeviceNotAvailableException {
+    private void enableAccessibilityAndServices() throws DeviceNotAvailableException {
         String enabledServicesValue =
               SOME_ACCESSIBLITY_SERVICES_PACKAGE_NAME + "/" + SPEAKING_ACCESSIBLITY_SERVICE_NAME
             + ":"
             + SOME_ACCESSIBLITY_SERVICES_PACKAGE_NAME + "/" + VIBRATING_ACCESSIBLITY_SERVICE_NAME;
-        enableAccessibilityAndServicesAndTouchExploration(getDevice(), enabledServicesValue);
+        enableAccessibilityAndServices(getDevice(), enabledServicesValue);
     }
 
-    static void enableAccessibilityAndServicesAndTouchExploration(ITestDevice device, String value)
+    static void enableAccessibilityAndServices(ITestDevice device, String value)
             throws DeviceNotAvailableException {
         SettingsToggler.setSecureString(device, "enabled_accessibility_services", value);
+        SettingsToggler.setSecureString(device,
+                "touch_exploration_granted_accessibility_services", value);
         SettingsToggler.setSecureInt(device, "accessibility_enabled", 1);
-        SettingsToggler.setSecureInt(device, "touch_exploration_enabled", 1);
     }
 
-    static void disableAccessibilityAndServicesAndTouchExploration(ITestDevice device)
+    static void disableAccessibilityAndServices(ITestDevice device)
             throws DeviceNotAvailableException {
         SettingsToggler.updateSecureString(device, "enabled_accessibility_services", "");
+        SettingsToggler.updateSecureString(device,
+                "touch_exploration_granted_accessibility_services", "");
         SettingsToggler.updateSecureInt(device, "accessibility_enabled", 0);
-        SettingsToggler.updateSecureInt(device, "touch_exploration_enabled", 0);
     }
 }