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 d71649d625a40cc0fd81e60771119e3355d91a24..e4a89d29114e631e9d2c7138c2b59adefc607540 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; |
@@ -360,6 +362,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. |
@@ -624,7 +629,7 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient { |
initializeContainerView(internalDispatcher, inputEventDeliveryMode); |
mAccessibilityInjector = AccessibilityInjector.newInstance(this); |
- mAccessibilityInjector.addOrRemoveAccessibilityApisIfNecessary(); |
+ //mAccessibilityInjector.addOrRemoveAccessibilityApisIfNecessary(); |
String contentDescription = "Web View"; |
if (R.string.accessibility_content_view == 0) { |
@@ -1074,7 +1079,7 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient { |
* Reload the current page. |
*/ |
public void reload() { |
- mAccessibilityInjector.addOrRemoveAccessibilityApisIfNecessary(); |
+ //mAccessibilityInjector.addOrRemoveAccessibilityApisIfNecessary(); |
if (mNativeContentViewCore != 0) nativeReload(mNativeContentViewCore); |
} |
@@ -1634,6 +1639,16 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient { |
} |
/** |
+ * @see View#dispatchHoverEvent(MotionEvent) |
+ */ |
+ public boolean dispatchHoverEvent(MotionEvent event) { |
+ if (mBrowserAccessibilityManager != null) |
+ return mBrowserAccessibilityManager.dispatchHoverEvent(event); |
+ else |
+ return false; // TODO: call super on ContentView's dispatchHoverEvent? |
+ } |
+ |
+ /** |
* @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() |
@@ -2167,6 +2182,7 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient { |
controlsOffsetPix, contentOffsetYPix, overdrawBottomHeightPix); |
mPendingRendererFrame = true; |
+ mBrowserAccessibilityManager.notifyFrameInfoInitialized(); |
} |
@SuppressWarnings("unused") |
@@ -2569,17 +2585,34 @@ public class ContentViewCore implements MotionEventDelegate, NavigationClient { |
* the super {@link View} class. |
*/ |
public boolean performAccessibilityAction(int action, Bundle arguments) { |
+ /* |
if (mAccessibilityInjector.supportsAccessibilityAction(action)) { |
return mAccessibilityInjector.performAccessibilityAction(action, arguments); |
- } |
+ }*/ |
return false; |
} |
+ public void setBrowserAccessibilityManager(BrowserAccessibilityManager manager) { |
+ mBrowserAccessibilityManager = manager; |
+ } |
+ |
+ public BrowserAccessibilityManager getBrowserAccessibilityManager() { |
+ return mBrowserAccessibilityManager; |
+ } |
+ |
+ /** |
+ * @see View#getAccessibilityNodeProvider(View host) |
+ */ |
+ public AccessibilityNodeProvider getAccessibilityNodeProvider(View host) { |
+ 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); |
} |
@@ -2587,6 +2620,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. |