diff options
author | dfalcantara@chromium.org <dfalcantara@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-02 03:13:50 +0000 |
---|---|---|
committer | dfalcantara@chromium.org <dfalcantara@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-02 03:13:50 +0000 |
commit | 96304cda2ad262004f6961d82b062f1278c5ab2a (patch) | |
tree | 37ec25c726675b9451d4d525d4da131b9de1d7ee /content | |
parent | fda1adc906991ae6524a67d8fde2c10e891ccdca (diff) | |
download | chromium_src-96304cda2ad262004f6961d82b062f1278c5ab2a.zip chromium_src-96304cda2ad262004f6961d82b062f1278c5ab2a.tar.gz chromium_src-96304cda2ad262004f6961d82b062f1278c5ab2a.tar.bz2 |
Upstreaming AccessibilityInjector
Changes landed downstream to change the URL on demand
but never made it upstream.
BUG=
Review URL: https://chromiumcodereview.appspot.com/11034015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@159634 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
2 files changed, 27 insertions, 7 deletions
diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/AccessibilityInjector.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/AccessibilityInjector.java index 457492a..405bc91 100644 --- a/content/public/android/java/src/org/chromium/content/browser/accessibility/AccessibilityInjector.java +++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/AccessibilityInjector.java @@ -7,7 +7,6 @@ package org.chromium.content.browser.accessibility; import android.content.Context; import android.os.Build; import android.os.Bundle; -import android.os.SystemClock; import android.os.Vibrator; import android.provider.Settings; import android.speech.tts.TextToSpeech; @@ -20,6 +19,7 @@ import org.apache.http.client.utils.URLEncodedUtils; import org.chromium.content.browser.ContentViewCore; import org.chromium.content.browser.JavascriptInterface; import org.chromium.content.browser.WebContentsObserverAndroid; +import org.chromium.content.common.CommandLine; import org.json.JSONException; import org.json.JSONObject; @@ -27,9 +27,7 @@ import java.lang.reflect.Field; import java.net.URI; import java.net.URISyntaxException; import java.util.HashMap; -import java.util.Iterator; import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; /** * Responsible for accessibility injection and management of a {@link ContentViewCore}. @@ -49,6 +47,8 @@ public class AccessibilityInjector extends WebContentsObserverAndroid { protected boolean mInjectedScriptEnabled; protected boolean mScriptInjected; + private final String mAccessibilityScreenReaderUrl; + // constants for determining script injection strategy private static final int ACCESSIBILITY_SCRIPT_INJECTION_UNDEFINED = -1; private static final int ACCESSIBILITY_SCRIPT_INJECTION_OPTED_OUT = 0; @@ -57,7 +57,7 @@ public class AccessibilityInjector extends WebContentsObserverAndroid { private static final String ALIAS_ACCESSIBILITY_JS_INTERFACE_2 = "accessibility2"; // Template for JavaScript that injects a screen-reader. - private static final String ACCESSIBILITY_SCREEN_READER_URL = + private static final String DEFAULT_ACCESSIBILITY_SCREEN_READER_URL = "https://ssl.gstatic.com/accessibility/javascript/android/chromeandroidvox.js"; private static final String ACCESSIBILITY_SCREEN_READER_JAVASCRIPT_TEMPLATE = @@ -96,6 +96,9 @@ public class AccessibilityInjector extends WebContentsObserverAndroid { protected AccessibilityInjector(ContentViewCore view) { super(view); mContentViewCore = view; + + mAccessibilityScreenReaderUrl = CommandLine.getInstance().getSwitchValue( + CommandLine.ACCESSIBILITY_JAVASCRIPT_URL, DEFAULT_ACCESSIBILITY_SCREEN_READER_URL); } /** @@ -137,8 +140,9 @@ public class AccessibilityInjector extends WebContentsObserverAndroid { /** * Handles adding or removing accessibility related Java objects ({@link TextToSpeech} and * {@link Vibrator}) interfaces from Javascript. This method should be called at a time when it - * is safe to add or remove these interfaces, specifically when the {@link ContentView} is first - * initialized or right before the {@link ContentView} is about to navigate to a URL or reload. + * is safe to add or remove these interfaces, specifically when the {@link ContentViewCore} is + * first initialized or right before the {@link ContentViewCore} is about to navigate to a URL + * or reload. * <p> * If this method is called at other times, the interfaces might not be correctly removed, * meaning that Javascript can still access these Java objects that may have been already @@ -299,7 +303,7 @@ public class AccessibilityInjector extends WebContentsObserverAndroid { private String getScreenReaderInjectingJs() { return String.format(ACCESSIBILITY_SCREEN_READER_JAVASCRIPT_TEMPLATE, - ACCESSIBILITY_SCREEN_READER_URL); + mAccessibilityScreenReaderUrl); } private AccessibilityManager getAccessibilityManager() { diff --git a/content/public/android/java/src/org/chromium/content/common/CommandLine.java b/content/public/android/java/src/org/chromium/content/common/CommandLine.java index 901f7e0..ba966ab 100644 --- a/content/public/android/java/src/org/chromium/content/common/CommandLine.java +++ b/content/public/android/java/src/org/chromium/content/common/CommandLine.java @@ -4,6 +4,7 @@ package org.chromium.content.common; +import android.text.TextUtils; import android.util.Log; import java.io.File; @@ -46,6 +47,9 @@ public abstract class CommandLine { // Whether Chromium should use a mobile user agent. public static final String USE_MOBILE_UA = "use-mobile-user-agent"; + // Change the url of the JavaScript that gets injected when accessibility mode is enabled. + public static final String ACCESSIBILITY_JAVASCRIPT_URL = "accessibility-js-url"; + // Public abstract interface, implemented in derived classes. // All these methods reflect their native-side counterparts. /** @@ -62,6 +66,18 @@ public abstract class CommandLine { public abstract String getSwitchValue(String switchString); /** + * Return the value associated with the given switch, or {@code defaultValue} if the switch + * was not specified. + * @param switchString The switch key to lookup. It should NOT start with '--' ! + * @param defaultValue The default value to return if the switch isn't set. + * @return Switch value, or {@code defaultValue} if the switch is not set or set to empty. + */ + public String getSwitchValue(String switchString, String defaultValue) { + String value = getSwitchValue(switchString); + return TextUtils.isEmpty(value) ? defaultValue : value; + } + + /** * Append a switch to the command line. There is no guarantee * this action happens before the switch is needed. * @param switchString the switch to add. It should NOT start with '--' ! |