Index: content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java |
index 63deca865b67ba0a772f2fce6225320f780b215b..6f4723369ce1bc00f9f45a8435c8beebc875c66f 100644 |
--- a/content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java |
+++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/BrowserAccessibilityManager.java |
@@ -248,18 +248,12 @@ public class BrowserAccessibilityManager { |
float y = event.getY(); |
// Convert to CSS coordinates. |
- int cssX = (int) (mRenderCoordinates.fromPixToLocalCss(x) + |
- mRenderCoordinates.getScrollX()); |
- int cssY = (int) (mRenderCoordinates.fromPixToLocalCss(y) + |
- mRenderCoordinates.getScrollY()); |
- int id = nativeHitTest(mNativeObj, cssX, cssY); |
- if (mLastHoverId != id) { |
- // Always send the ENTER and then the EXIT event, to match a standard Android View. |
- sendAccessibilityEvent(id, AccessibilityEvent.TYPE_VIEW_HOVER_ENTER); |
- sendAccessibilityEvent(mLastHoverId, AccessibilityEvent.TYPE_VIEW_HOVER_EXIT); |
- mLastHoverId = id; |
- } |
+ int cssX = (int) (mRenderCoordinates.fromPixToLocalCss(x)); |
+ int cssY = (int) (mRenderCoordinates.fromPixToLocalCss(y)); |
+ // This sends an IPC to the render process to do the hit testing. |
+ // The response is handled by handleHover. |
+ nativeHitTest(mNativeObj, cssX, cssY); |
return true; |
} |
@@ -441,6 +435,16 @@ public class BrowserAccessibilityManager { |
} |
@CalledByNative |
+ private void handleHover(int id) { |
+ if (mLastHoverId == id) return; |
+ |
+ // Always send the ENTER and then the EXIT event, to match a standard Android View. |
+ sendAccessibilityEvent(id, AccessibilityEvent.TYPE_VIEW_HOVER_ENTER); |
+ sendAccessibilityEvent(mLastHoverId, AccessibilityEvent.TYPE_VIEW_HOVER_EXIT); |
+ mLastHoverId = id; |
+ } |
+ |
+ @CalledByNative |
private void announceLiveRegionText(String text) { |
mView.announceForAccessibility(text); |
} |
@@ -682,7 +686,7 @@ public class BrowserAccessibilityManager { |
private native int nativeGetRootId(long nativeBrowserAccessibilityManagerAndroid); |
private native boolean nativeIsNodeValid(long nativeBrowserAccessibilityManagerAndroid, int id); |
- private native int nativeHitTest(long nativeBrowserAccessibilityManagerAndroid, int x, int y); |
+ private native void nativeHitTest(long nativeBrowserAccessibilityManagerAndroid, int x, int y); |
private native boolean nativePopulateAccessibilityNodeInfo( |
long nativeBrowserAccessibilityManagerAndroid, AccessibilityNodeInfo info, int id); |
private native boolean nativePopulateAccessibilityEvent( |