Merge "Updating the WebView accessibility key bindings after discussion with the access-eng team" into honeycomb
diff --git a/core/tests/coretests/src/android/webkit/AccessibilityInjectorTest.java b/core/tests/coretests/src/android/webkit/AccessibilityInjectorTest.java
index 955f5e8..4edd127 100644
--- a/core/tests/coretests/src/android/webkit/AccessibilityInjectorTest.java
+++ b/core/tests/coretests/src/android/webkit/AccessibilityInjectorTest.java
@@ -19,6 +19,7 @@
import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.ComponentName;
+import android.content.ContentResolver;
import android.content.Intent;
import android.os.Handler;
import android.os.Looper;
@@ -29,6 +30,8 @@
import android.view.KeyEvent;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
/**
* This is a test for the behavior of the {@link AccessibilityInjector}
@@ -60,6 +63,17 @@
/** Lock for locking the test. */
private static final Object sTestLock = new Object();
+ /** Key bindings used for testing. */
+ private static final String TEST_KEY_DINDINGS =
+ "0x13=0x01000100;" +
+ "0x14=0x01010100;" +
+ "0x15=0x04000000;" +
+ "0x16=0x04000000;" +
+ "0x200000013=0x03020701:0x03010201:0x03000101:0x03030001:0x03040001:0x03050001:0x03060001;" +
+ "0x200000014=0x03010001:0x03020101:0x03070201:0x03030701:0x03040701:0x03050701:0x03060701;" +
+ "0x200000015=0x03040301:0x03050401:0x03060501:0x03000601:0x03010601:0x03020601:0x03070601;" +
+ "0x200000016=0x03050601:0x03040501:0x03030401:0x03020301:0x03070301:0x03010301:0x03000301;";
+
/** Handle to the test for use by the mock service. */
private static AccessibilityInjectorTest sInstance;
@@ -75,6 +89,9 @@
/** Handle to the {@link WebView} to load data in. */
private WebView mWebView;
+ /** Used for caching the default bindings so they can be restored. */
+ private String mDefaultKeyBindings;
+
/** The received selection string for assertion checking. */
private static String sReceivedSelectionString = SELECTION_STRING_UNKNOWN;
@@ -87,6 +104,7 @@
// until JUnit4 comes to play with @BeforeTest
disableAccessibilityAndMockAccessibilityService();
enableAccessibilityAndMockAccessibilityService();
+ injectTestWebContentKeyBindings();
}
}
@@ -98,6 +116,7 @@
if (sExecutedTestCount == TEST_CASE_COUNT) {
// until JUnit4 comes to play with @AfterTest
disableAccessibilityAndMockAccessibilityService();
+ restoreDefaultWebContentKeyBindings();
}
super.tearDown();
}
@@ -852,6 +871,26 @@
}
/**
+ * Injects web content key bindings used for testing. This is required
+ * to ensure that this test will be agnostic to changes of the bindings.
+ */
+ private void injectTestWebContentKeyBindings() {
+ ContentResolver contentResolver = getContext().getContentResolver();
+ mDefaultKeyBindings = Settings.Secure.getString(contentResolver,
+ Settings.Secure.ACCESSIBILITY_WEB_CONTENT_KEY_BINDINGS);
+ Settings.Secure.putString(contentResolver,
+ Settings.Secure.ACCESSIBILITY_WEB_CONTENT_KEY_BINDINGS, TEST_KEY_DINDINGS);
+ }
+
+ /**
+ * Restores the default web content key bindings.
+ */
+ private void restoreDefaultWebContentKeyBindings() {
+ Settings.Secure.putString(getContext().getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_WEB_CONTENT_KEY_BINDINGS, mDefaultKeyBindings);
+ }
+
+ /**
* This is a worker thread responsible for creating the {@link WebView}.
*/
private class Worker implements Runnable {
diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
index ec5f853..5981139 100644
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -81,26 +81,34 @@
<!-- Default for Settings.Secure.ACCESSIBILITY_WEB_CONTENT_KEY_BINDINGS -->
<string name="def_accessibility_web_content_key_bindings" translatable="false">
- <!-- DPAD/Trackball UP maps to traverse previous on current axis and send an event. -->
+ <!-- DPAD/Trackball UP - traverse previous on current axis and send an event. -->
0x13=0x01000100;
- <!-- DPAD/Trackball DOWN maps to traverse next on current axis and send an event. -->
+ <!-- DPAD/Trackball DOWN - traverse next on current axis and send an event. -->
0x14=0x01010100;
- <!-- DPAD/Trackball LEFT maps to action in the android default navigation axis. -->
- 0x15=0x04000100;
- <!-- DPAD/Trackball RIGHT maps to no action in the android default navigation axis. -->
- 0x16=0x04010100;
- <!-- Left Alt+DPAD/Trackball UP transitions from an axis to another and sends an event. -->
- <!-- Axis transitions: 2 -> 7; 1 -> 2; 0 -> 1; 3 -> 0; 4 -> 0; 5 -> 0; 6 -> 0; -->
- 0x200000013=0x03020701:0x03010201:0x03000101:0x03030001:0x03040001:0x03050001:0x03060001;
- <!-- Left Alt+DPAD/Trackball DOWN transitions from an axis to another and sends an event. -->
- <!-- Axis transitions: 1 -> 0; 2 -> 1; 7 -> 2; 3 -> 7; 4 -> 7; 5 -> 7; 6 -> 7; -->
- 0x200000014=0x03010001:0x03020101:0x03070201:0x03030701:0x03040701:0x03050701:0x03060701;
- <!-- Left Alt+DPAD/Trackball LEFT transitions from an axis to another and sends an event. -->
- <!-- Axis transitions: 4 -> 3; 5 -> 4; 6 -> 5; 0 -> 6; 1 -> 6; 2 -> 6; 7 -> 6; -->
- 0x200000015=0x03040301:0x03050401:0x03060501:0x03000601:0x03010601:0x03020601:0x03070601;
- <!-- Left Alt+DPAD/Trackball RIGHT transitions from an axis to another and sends an event. -->
- <!-- Axis transitions: 5 -> 6; 4 -> 5; 3 -> 4; 2 -> 3; 7 -> 3; 1 -> 3; 0 -> 3; -->
- 0x200000016=0x03050601:0x03040501:0x03030401:0x03020301:0x03070301:0x03010301:0x03000301;
+ <!-- DPAD/Trackball LEFT - traverse previous on the character navigation axis and send event. -->
+ 0x15=0x02000001;
+ <!-- DPAD/Trackball RIGHT - traverse next on the character navigation axis end send event. -->
+ 0x16=0x02010001;
+ <!-- Alt+DPAD/Trackball UP - go to the top of the document. -->
+ 0x200000013=0x02000601;
+ <!-- Alt+DPAD/Trackball DOWN - go to the bottom of the document. -->
+ 0x200000014=0x02010601;
+ <!-- Alt+DPAD/Trackball LEFT - transition from an axis to another and sends an event.-->
+ <!-- Axis transitions: 2 -> 1; -->
+ 0x200000015=0x03020101;
+ <!-- Alt+DPAD/Trackball RIGHT - transition from an axis to another and sends an event. -->
+ <!-- Axis transitions: 1 -> 2; -->
+ 0x200000016=0x03010201;
+ <!-- Alt+g - go to the previous heading and send an event. -->
+ 0x200000023=0x02000301;
+ <!-- Alt+h - go to the next heading and send an event. -->
+ 0x200000024=0x02010301;
+ <!-- Alt+COMMA - transition to sentence navigation axis and send an event. -->
+ <!-- Axis transitions: 7 -> 2; -->
+ 0x200000037=0x03070201;
+ <!-- Alt+PERIOD - transition to default web view behavior axis and send an event. -->
+ <!-- Axis transitions: 0 -> 7; 1 - > 7; 2 -> 7; -->
+ 0x200000038=0x03000701:0x03010701:0x03020701;
</string>
<!-- Default for Settings.System.USER_ROTATION -->