From e3f9071e0daef6e5fe38aa4d40aabd3716eb3e54 Mon Sep 17 00:00:00 2001 From: Ben Murdoch Date: Wed, 5 Jun 2013 14:19:48 +0100 Subject: [PATCH] Plumb View.getAccessibilityNodeProvider though WebViewProvider. This is needed to make use of the new Accessibility implementation in the Chromium WebView. nos for WebView Classic. Change-Id: I96bd2426d2de3b26dc9b72d0fdbacefa9bbe20f7 --- core/java/android/webkit/WebView.java | 8 ++++++++ core/java/android/webkit/WebViewClassic.java | 6 ++++++ core/java/android/webkit/WebViewProvider.java | 3 +++ 3 files changed, 17 insertions(+) diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 49987428ceef2..0149f033fc425 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -41,6 +41,7 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; +import android.view.accessibility.AccessibilityNodeProvider; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; import android.widget.AbsoluteLayout; @@ -2051,6 +2052,13 @@ public class WebView extends AbsoluteLayout } */ + @Override + public AccessibilityNodeProvider getAccessibilityNodeProvider() { + AccessibilityNodeProvider provider = + mProvider.getViewDelegate().getAccessibilityNodeProvider(); + return provider == null ? super.getAccessibilityNodeProvider() : provider; + } + @Deprecated @Override public boolean shouldDelayChildPressedState() { diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java index 3afab09820780..5a9e6c97813bd 100644 --- a/core/java/android/webkit/WebViewClassic.java +++ b/core/java/android/webkit/WebViewClassic.java @@ -90,6 +90,7 @@ import android.view.ViewRootImpl; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; +import android.view.accessibility.AccessibilityNodeProvider; import android.view.inputmethod.BaseInputConnection; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; @@ -1768,6 +1769,11 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc return mWebViewPrivate.super_performAccessibilityAction(action, arguments); } + @Override + public AccessibilityNodeProvider getAccessibilityNodeProvider() { + return null; + } + @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { if (!mWebView.isEnabled()) { diff --git a/core/java/android/webkit/WebViewProvider.java b/core/java/android/webkit/WebViewProvider.java index fa17ab9626d64..41d63338d2f84 100644 --- a/core/java/android/webkit/WebViewProvider.java +++ b/core/java/android/webkit/WebViewProvider.java @@ -32,6 +32,7 @@ import android.view.View; import android.view.ViewGroup.LayoutParams; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; +import android.view.accessibility.AccessibilityNodeProvider; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; import android.webkit.WebView.HitTestResult; @@ -279,6 +280,8 @@ public interface WebViewProvider { interface ViewDelegate { public boolean shouldDelayChildPressedState(); + public AccessibilityNodeProvider getAccessibilityNodeProvider(); + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info); public void onInitializeAccessibilityEvent(AccessibilityEvent event);