summaryrefslogtreecommitdiffstats
path: root/core/java/android/webkit/WebViewClassic.java
diff options
context:
space:
mode:
authoralanv <alanv@google.com>2012-08-09 18:05:17 -0700
committeralanv <alanv@google.com>2012-08-09 18:05:17 -0700
commitfdfd0d853539399429119a013985ef024254f4dc (patch)
tree86e1331b1aaf6b0cd71533f26abe97e99ed49e04 /core/java/android/webkit/WebViewClassic.java
parent6624afe37b3be7c469a3613298a2246663a2d409 (diff)
downloadframeworks_base-fdfd0d853539399429119a013985ef024254f4dc.zip
frameworks_base-fdfd0d853539399429119a013985ef024254f4dc.tar.gz
frameworks_base-fdfd0d853539399429119a013985ef024254f4dc.tar.bz2
Only inject accessibility when speaking service enabled.
Bug: 6922883 Change-Id: I48d03a2da9bcf7375156c84219802bf20af4ddc6
Diffstat (limited to 'core/java/android/webkit/WebViewClassic.java')
-rw-r--r--core/java/android/webkit/WebViewClassic.java32
1 files changed, 23 insertions, 9 deletions
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index 5b8764b..3740cfb 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -16,6 +16,7 @@
package android.webkit;
+import android.accessibilityservice.AccessibilityServiceInfo;
import android.animation.ObjectAnimator;
import android.annotation.Widget;
import android.app.ActivityManager;
@@ -1743,8 +1744,21 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
event.setMaxScrollY(Math.max(convertedContentHeight - adjustedViewHeight, 0));
}
- private boolean isAccessibilityEnabled() {
- return AccessibilityManager.getInstance(mContext).isEnabled();
+ private boolean isAccessibilityInjectionEnabled() {
+ final AccessibilityManager manager = AccessibilityManager.getInstance(mContext);
+ if (!manager.isEnabled()) {
+ return false;
+ }
+
+ // Accessibility scripts should be injected only when a speaking service
+ // is enabled. This may need to change later to accommodate Braille.
+ final List<AccessibilityServiceInfo> services = manager.getEnabledAccessibilityServiceList(
+ AccessibilityServiceInfo.FEEDBACK_SPOKEN);
+ if (services.isEmpty()) {
+ return false;
+ }
+
+ return true;
}
private AccessibilityInjector getAccessibilityInjector() {
@@ -3930,7 +3944,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
// reset the flag since we set to true in if need after
// loading is see onPageFinished(Url)
- if (isAccessibilityEnabled()) {
+ if (isAccessibilityInjectionEnabled()) {
getAccessibilityInjector().onPageStarted(url);
}
@@ -3945,7 +3959,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
/* package */ void onPageFinished(String url) {
mZoomManager.onPageFinished(url);
- if (isAccessibilityEnabled()) {
+ if (isAccessibilityInjectionEnabled()) {
getAccessibilityInjector().onPageFinished(url);
}
}
@@ -4986,7 +5000,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
}
// See if the accessibility injector needs to handle this event.
- if (isAccessibilityEnabled()
+ if (isAccessibilityInjectionEnabled()
&& getAccessibilityInjector().handleKeyEventIfNecessary(event)) {
return true;
}
@@ -5093,7 +5107,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
}
// See if the accessibility injector needs to handle this event.
- if (isAccessibilityEnabled()
+ if (isAccessibilityInjectionEnabled()
&& getAccessibilityInjector().handleKeyEventIfNecessary(event)) {
return true;
}
@@ -5344,7 +5358,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
public void onAttachedToWindow() {
if (mWebView.hasWindowFocus()) setActive(true);
- if (isAccessibilityEnabled()) {
+ if (isAccessibilityInjectionEnabled()) {
getAccessibilityInjector().addAccessibilityApisIfNecessary();
}
@@ -5357,7 +5371,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
mZoomManager.dismissZoomPicker();
if (mWebView.hasWindowFocus()) setActive(false);
- if (isAccessibilityEnabled()) {
+ if (isAccessibilityInjectionEnabled()) {
getAccessibilityInjector().removeAccessibilityApisIfNecessary();
} else {
// Ensure the injector is cleared if we're detaching from the window
@@ -7439,7 +7453,7 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
break;
case SELECTION_STRING_CHANGED:
- if (isAccessibilityEnabled()) {
+ if (isAccessibilityInjectionEnabled()) {
getAccessibilityInjector()
.handleSelectionChangedIfNecessary((String) msg.obj);
}