Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(721)

Unified Diff: content/public/android/java/src/org/chromium/content/browser/accessibility/AccessibilityInjector.java

Issue 11365055: Initial braille support (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Clean up gyp, add android OS condition Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/public/android/java/src/org/chromium/content/browser/accessibility/AccessibilityInjector.java
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 3196a80f918b52df6ee63d79cbbfd5f5c666e18a..06b9916d4beeadfca4dbdfb2f6ad8f859195c62a 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
@@ -10,10 +10,14 @@ import android.os.Bundle;
import android.os.Vibrator;
import android.provider.Settings;
import android.speech.tts.TextToSpeech;
+import android.util.Log;
import android.view.View;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityNodeInfo;
+import com.googlecode.eyesfree.braille.selfbraille.SelfBrailleClient;
+import com.googlecode.eyesfree.braille.selfbraille.WriteData;
+
import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
import org.chromium.content.browser.ContentViewCore;
@@ -33,6 +37,8 @@ import java.util.List;
* Responsible for accessibility injection and management of a {@link ContentViewCore}.
*/
public class AccessibilityInjector extends WebContentsObserverAndroid {
+ private static final String TAG = AccessibilityInjector.class.getSimpleName();
+
// The ContentView this injector is responsible for managing.
protected ContentViewCore mContentViewCore;
@@ -253,7 +259,8 @@ public class AccessibilityInjector extends WebContentsObserverAndroid {
if (context != null) {
// Enabled, we should try to add if we have to.
if (mTextToSpeech == null) {
- mTextToSpeech = new TextToSpeechWrapper(context);
+ mTextToSpeech = new TextToSpeechWrapper(mContentViewCore.getContainerView(),
+ context);
mContentViewCore.addJavascriptInterface(mTextToSpeech,
ALIAS_ACCESSIBILITY_JS_INTERFACE);
}
@@ -367,9 +374,14 @@ public class AccessibilityInjector extends WebContentsObserverAndroid {
*/
private static class TextToSpeechWrapper {
private TextToSpeech mTextToSpeech;
+ private SelfBrailleClient mSelfBrailleClient;
+ private View mView;
- public TextToSpeechWrapper(Context context) {
+ public TextToSpeechWrapper(View view, Context context) {
+ mView = view;
mTextToSpeech = new TextToSpeech(context, null, null);
+ mSelfBrailleClient = new SelfBrailleClient(context, CommandLine.getInstance().hasSwitch(
+ CommandLine.ACCESSIBILITY_DEBUG_BRAILLE_SERVICE));
}
@JavascriptInterface
@@ -390,9 +402,26 @@ public class AccessibilityInjector extends WebContentsObserverAndroid {
return mTextToSpeech.stop();
}
+ @JavascriptInterface
+ @SuppressWarnings("unused")
+ public void braille(String jsonString) {
+ try {
+ JSONObject jsonObj = new JSONObject(jsonString);
+
+ WriteData data = WriteData.forView(mView);
+ data.setText(jsonObj.getString("text"));
+ data.setSelectionStart(jsonObj.getInt("startIndex"));
+ data.setSelectionEnd(jsonObj.getInt("endIndex"));
+ mSelfBrailleClient.write(data);
+ } catch (JSONException ex) {
+ Log.w(TAG, "Error parsing JS JSON object", ex);
+ }
+ }
+
@SuppressWarnings("unused")
protected void shutdownInternal() {
mTextToSpeech.shutdown();
+ mSelfBrailleClient.shutdown();
}
}
}

Powered by Google App Engine
This is Rietveld 408576698