Index: content/browser/web_contents/web_contents_android.cc |
diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc |
index 63e45013eb0e644f764c8f74a9f3367c34abd78f..33296c100ab1fde8f60151aee7c38d474b1afd0a 100644 |
--- a/content/browser/web_contents/web_contents_android.cc |
+++ b/content/browser/web_contents/web_contents_android.cc |
@@ -62,7 +62,8 @@ void JavaScriptResultCallback(const ScopedJavaGlobalRef<jobject>& callback, |
} |
ScopedJavaLocalRef<jobject> WalkAXTreeDepthFirst(JNIEnv* env, |
- BrowserAccessibilityAndroid* node, float scale_factor) { |
+ BrowserAccessibilityAndroid* node, float scale_factor, |
+ float y_offset, float x_scroll) { |
ScopedJavaLocalRef<jstring> j_text = |
ConvertUTF16ToJavaString(env, node->GetText()); |
ScopedJavaLocalRef<jstring> j_class = |
@@ -83,7 +84,8 @@ ScopedJavaLocalRef<jobject> WalkAXTreeDepthFirst(JNIEnv* env, |
} |
ScopedJavaLocalRef<jobject> j_node = |
Java_WebContentsImpl_createAccessibilitySnapshotNode(env, |
- scale_factor * location.x(), scale_factor * location.y(), |
+ scale_factor * location.x() - x_scroll, |
+ scale_factor * location.y() + y_offset, |
scale_factor * node->GetScrollX(), scale_factor * node->GetScrollY(), |
scale_factor * location.width(), scale_factor * location.height(), |
j_text.obj(), color, bgcolor, scale_factor * size, text_style, |
@@ -94,7 +96,8 @@ ScopedJavaLocalRef<jobject> WalkAXTreeDepthFirst(JNIEnv* env, |
static_cast<BrowserAccessibilityAndroid*>( |
node->PlatformGetChild(i)); |
Java_WebContentsImpl_addAccessibilityNodeAsChild(env, |
- j_node.obj(), WalkAXTreeDepthFirst(env, child, scale_factor).obj()); |
+ j_node.obj(), WalkAXTreeDepthFirst(env, child, scale_factor, y_offset, |
+ x_scroll).obj()); |
} |
return j_node; |
} |
@@ -102,6 +105,8 @@ ScopedJavaLocalRef<jobject> WalkAXTreeDepthFirst(JNIEnv* env, |
// Walks over the AXTreeUpdate and creates a light weight snapshot. |
void AXTreeSnapshotCallback(const ScopedJavaGlobalRef<jobject>& callback, |
float scale_factor, |
+ float y_offset, |
+ float x_scroll, |
const ui::AXTreeUpdate& result) { |
JNIEnv* env = base::android::AttachCurrentThread(); |
if (result.nodes.empty()) { |
@@ -115,7 +120,7 @@ void AXTreeSnapshotCallback(const ScopedJavaGlobalRef<jobject>& callback, |
BrowserAccessibilityAndroid* root = |
static_cast<BrowserAccessibilityAndroid*>(manager->GetRoot()); |
ScopedJavaLocalRef<jobject> j_root = |
- WalkAXTreeDepthFirst(env, root, scale_factor); |
+ WalkAXTreeDepthFirst(env, root, scale_factor, y_offset, x_scroll); |
Java_WebContentsImpl_onAccessibilitySnapshot( |
env, j_root.obj(), callback.obj()); |
} |
@@ -460,7 +465,9 @@ jint WebContentsAndroid::GetThemeColor(JNIEnv* env, jobject obj) { |
void WebContentsAndroid::RequestAccessibilitySnapshot(JNIEnv* env, |
jobject obj, |
- jobject callback) { |
+ jobject callback, |
+ jfloat y_offset, |
+ jfloat x_scroll) { |
// Secure the Java callback in a scoped object and give ownership of it to the |
// base::Callback. |
ScopedJavaGlobalRef<jobject> j_callback; |
@@ -470,7 +477,7 @@ void WebContentsAndroid::RequestAccessibilitySnapshot(JNIEnv* env, |
ContentViewCoreImpl::FromWebContents(web_contents_); |
WebContentsImpl::AXTreeSnapshotCallback snapshot_callback = |
base::Bind(&AXTreeSnapshotCallback, j_callback, |
- contentViewCore->GetScaleFactor()); |
+ contentViewCore->GetScaleFactor(), y_offset, x_scroll); |
static_cast<WebContentsImpl*>(web_contents_)->RequestAXTreeSnapshot( |
snapshot_callback); |
} |