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

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: Rebase Created 7 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
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 40f5bea32ab11a5c7d11f03c3d6cd28dcf96973d..682fc59c5837b8e68cf7be70f3eb491641f7d06b 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.
@@ -655,7 +660,7 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient {
initializeContainerView(internalDispatcher, inputEventDeliveryMode);
mAccessibilityInjector = AccessibilityInjector.newInstance(this);
- mAccessibilityInjector.addOrRemoveAccessibilityApisIfNecessary();
+ //mAccessibilityInjector.addOrRemoveAccessibilityApisIfNecessary();
David Trainor- moved to gerrit 2013/06/04 20:27:18 Uncomment.
dmazzoni 2013/06/07 20:23:16 Done. Alice is fixing it so that either native acc
String contentDescription = "Web View";
if (R.string.accessibility_content_view == 0) {
@@ -1107,7 +1112,7 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient {
* Reload the current page.
*/
public void reload() {
- mAccessibilityInjector.addOrRemoveAccessibilityApisIfNecessary();
+ //mAccessibilityInjector.addOrRemoveAccessibilityApisIfNecessary();
David Trainor- moved to gerrit 2013/06/04 20:27:18 Uncomment.
dmazzoni 2013/06/07 20:23:16 Done.
if (mNativeContentViewCore != 0) nativeReload(mNativeContentViewCore);
}
@@ -1666,6 +1671,16 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient {
}
/**
+ * @see View#dispatchHoverEvent(MotionEvent)
+ */
+ public boolean dispatchHoverEvent(MotionEvent event) {
+ if (mBrowserAccessibilityManager != null)
David Trainor- moved to gerrit 2013/06/04 20:27:18 Is this a proper check to tell if accessibility is
dmazzoni 2013/06/07 20:23:16 I think this one is fine. We should fix the code s
+ return mBrowserAccessibilityManager.dispatchHoverEvent(event);
David Trainor- moved to gerrit 2013/06/04 20:27:18 { } around if blocks in Java (unless you can fit t
+ else
+ return false; // TODO: call super on ContentView's dispatchHoverEvent?
David Trainor- moved to gerrit 2013/06/04 20:27:18 Probably, since it would have hit the root view in
dmazzoni 2013/06/07 20:23:16 Done.
+ }
+
+ /**
* @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()
@@ -2199,6 +2214,7 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient {
controlsOffsetPix, contentOffsetYPix, overdrawBottomHeightPix);
mPendingRendererFrame = true;
+ mBrowserAccessibilityManager.notifyFrameInfoInitialized();
David Trainor- moved to gerrit 2013/06/04 20:27:18 null check? You do it above.
dmazzoni 2013/06/07 20:23:16 Done.
}
@SuppressWarnings("unused")
@@ -2601,17 +2617,34 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient {
* the super {@link View} class.
*/
public boolean performAccessibilityAction(int action, Bundle arguments) {
+ /*
David Trainor- moved to gerrit 2013/06/04 20:27:18 Uncomment before landing. IMO Add a boolean above
dmazzoni 2013/06/07 20:23:16 Done.
if (mAccessibilityInjector.supportsAccessibilityAction(action)) {
return mAccessibilityInjector.performAccessibilityAction(action, arguments);
- }
+ }*/
return false;
}
+ public void setBrowserAccessibilityManager(BrowserAccessibilityManager manager) {
David Trainor- moved to gerrit 2013/06/04 20:27:18 Javadoc.
dmazzoni 2013/06/07 20:23:16 Done.
+ mBrowserAccessibilityManager = manager;
+ }
+
+ public BrowserAccessibilityManager getBrowserAccessibilityManager() {
David Trainor- moved to gerrit 2013/06/04 20:27:18 Javadoc
dmazzoni 2013/06/07 20:23:16 Done.
+ return mBrowserAccessibilityManager;
+ }
+
+ /**
+ * @see View#getAccessibilityNodeProvider(View host)
+ */
+ public AccessibilityNodeProvider getAccessibilityNodeProvider(View host) {
benm (inactive) 2013/06/05 10:52:40 Do we need the |host| param here?
dmazzoni 2013/06/07 20:23:16 Done.
+ 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);
}
@@ -2619,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