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

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

Issue 15741009: Native Android accessibility. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address most reviewer feedback Created 7 years, 6 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
Index: content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
index 58ff66c09d8348ca5fb86e39c65c6ffe30f28198..d7c6b769de41cecd9f089bd0c2502122fb045d52 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
@@ -31,6 +31,7 @@ import android.view.Window;
import android.view.WindowManager;
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.view.inputmethod.InputMethodManager;
@@ -44,6 +45,7 @@ import org.chromium.base.WeakContext;
import org.chromium.content.R;
import org.chromium.content.browser.ContentViewGestureHandler.MotionEventDelegate;
import org.chromium.content.browser.accessibility.AccessibilityInjector;
+import org.chromium.content.browser.accessibility.BrowserAccessibilityManager;
import org.chromium.content.browser.input.AdapterInputConnection;
import org.chromium.content.browser.input.HandleView;
import org.chromium.content.browser.input.ImeAdapter;
@@ -374,6 +376,9 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient {
private ViewAndroid mViewAndroid;
+ // Handles native accessibility, i.e. without any script injection.
+ private BrowserAccessibilityManager mBrowserAccessibilityManager;
+
/**
* Constructs a new ContentViewCore. Embedders must call initialize() after constructing
* a ContentViewCore and before using it.
@@ -1651,6 +1656,18 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient {
}
/**
+ * @see View#dispatchHoverEvent(MotionEvent)
+ */
+ public boolean dispatchHoverEvent(MotionEvent event) {
+ if (mBrowserAccessibilityManager != null) {
+ return mBrowserAccessibilityManager.dispatchHoverEvent(event);
+ } else {
+ // ContentView.dispatchHoverEvent will call super.
+ return false;
+ }
+ }
+
+ /**
* @see View#scrollBy(int, int)
* Currently the ContentView scrolling happens in the native side. In
* the Java view system, it is always pinned at (0, 0). scrollBy() and scrollTo()
@@ -2184,6 +2201,9 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient {
controlsOffsetPix, contentOffsetYPix, overdrawBottomHeightPix);
mPendingRendererFrame = true;
+ if (mBrowserAccessibilityManager != null) {
+ mBrowserAccessibilityManager.notifyFrameInfoInitialized();
+ }
}
@SuppressWarnings("unused")
@@ -2594,9 +2614,37 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient {
}
/**
+ * Set the BrowserAccessibilityManager, used for native accessibility
+ * (not script injection). This is only set when system accessibility
+ * has been enabled.
+ * @param manager The new BrowserAccessibilityManager.
+ */
+ public void setBrowserAccessibilityManager(BrowserAccessibilityManager manager) {
+ mBrowserAccessibilityManager = manager;
benm (inactive) 2013/06/10 14:24:24 Where do we check if the embedder has the INTERNET
dmazzoni 2013/06/18 20:22:35 This is all handled correctly in ContentViewCore n
+ }
+
+ /**
+ * Get the BrowserAccessibilityManager, used for native accessibility
+ * (not script injection). This will return null when system accessibility
+ * is not enabled.
+ * @return This view's BrowserAccessibilityManager.
+ */
+ public BrowserAccessibilityManager getBrowserAccessibilityManager() {
+ return mBrowserAccessibilityManager;
+ }
+
+ /**
+ * @see View#getAccessibilityNodeProvider(View host)
+ */
+ public AccessibilityNodeProvider getAccessibilityNodeProvider() {
+ return mBrowserAccessibilityManager;
+ }
+
+ /**
* @see View#onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo)
*/
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
+ // Note: this is only used by the script-injecting accessibility code.
mAccessibilityInjector.onInitializeAccessibilityNodeInfo(info);
}
@@ -2604,6 +2652,7 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient {
* @see View#onInitializeAccessibilityEvent(AccessibilityEvent)
*/
public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
+ // Note: this is only used by the script-injecting accessibility code.
event.setClassName(this.getClass().getName());
// Identify where the top-left of the screen currently points to.

Powered by Google App Engine
This is Rietveld 408576698