Only inject accessibility when speaking service enabled.

Bug: 6922883
Change-Id: I48d03a2da9bcf7375156c84219802bf20af4ddc6
This commit is contained in:
alanv
2012-08-09 18:05:17 -07:00
parent 6624afe37b
commit fdfd0d8535

View File

@@ -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);
}