summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authordfalcantara@chromium.org <dfalcantara@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-02 03:13:50 +0000
committerdfalcantara@chromium.org <dfalcantara@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-02 03:13:50 +0000
commit96304cda2ad262004f6961d82b062f1278c5ab2a (patch)
tree37ec25c726675b9451d4d525d4da131b9de1d7ee /content
parentfda1adc906991ae6524a67d8fde2c10e891ccdca (diff)
downloadchromium_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')
-rw-r--r--content/public/android/java/src/org/chromium/content/browser/accessibility/AccessibilityInjector.java18
-rw-r--r--content/public/android/java/src/org/chromium/content/common/CommandLine.java16
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 '--' !