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

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

Issue 2902533002: Expose the language to Android accessibility services using LocaleSpans (Closed)
Patch Set: Init after setting up listener Created 3 years, 7 months 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
« no previous file with comments | « content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/public/android/java/src/org/chromium/content/browser/accessibility/LollipopBrowserAccessibilityManager.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/LollipopBrowserAccessibilityManager.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/LollipopBrowserAccessibilityManager.java
index 841b211d199571b35db7a9b582357fa013c6d686..ef925f895ef0322f965141a051f04e5d343b0363 100644
--- a/content/public/android/java/src/org/chromium/content/browser/accessibility/LollipopBrowserAccessibilityManager.java
+++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/LollipopBrowserAccessibilityManager.java
@@ -5,7 +5,13 @@
package org.chromium.content.browser.accessibility;
import android.annotation.TargetApi;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.os.Build;
+import android.text.SpannableString;
+import android.text.style.LocaleSpan;
import android.util.SparseArray;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
@@ -14,6 +20,8 @@ import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.content.browser.ContentViewCore;
+import java.util.Locale;
+
/**
* Subclass of BrowserAccessibilityManager for Lollipop.
*/
@@ -22,10 +30,21 @@ import org.chromium.content.browser.ContentViewCore;
public class LollipopBrowserAccessibilityManager extends KitKatBrowserAccessibilityManager {
private static SparseArray<AccessibilityAction> sAccessibilityActionMap =
new SparseArray<AccessibilityAction>();
+ private String mSystemLanguageTag;
LollipopBrowserAccessibilityManager(long nativeBrowserAccessibilityManagerAndroid,
ContentViewCore contentViewCore) {
super(nativeBrowserAccessibilityManagerAndroid, contentViewCore);
+
+ // Cache the system language and set up a listener for when it changes.
+ IntentFilter filter = new IntentFilter(Intent.ACTION_LOCALE_CHANGED);
+ mContentViewCore.getContext().registerReceiver(new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ mSystemLanguageTag = Locale.getDefault().toLanguageTag();
+ }
+ }, filter);
+ mSystemLanguageTag = Locale.getDefault().toLanguageTag();
}
@Override
@@ -123,4 +142,21 @@ public class LollipopBrowserAccessibilityManager extends KitKatBrowserAccessibil
}
node.addAction(action);
}
+
+ @Override
+ protected CharSequence computeText(String text, boolean annotateAsLink, String language) {
+ CharSequence charSequence = super.computeText(text, annotateAsLink, language);
+ if (!language.isEmpty() && !language.equals(mSystemLanguageTag)) {
+ SpannableString spannable;
+ if (charSequence instanceof SpannableString) {
+ spannable = (SpannableString) charSequence;
+ } else {
+ spannable = new SpannableString(charSequence);
+ }
+ Locale locale = Locale.forLanguageTag(language);
+ spannable.setSpan(new LocaleSpan(locale), 0, spannable.length(), 0);
+ return spannable;
+ }
+ return charSequence;
+ }
}
« no previous file with comments | « content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698