summaryrefslogtreecommitdiff
path: root/chromium/content/browser/accessibility/web_contents_accessibility_android.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/accessibility/web_contents_accessibility_android.cc')
-rw-r--r--chromium/content/browser/accessibility/web_contents_accessibility_android.cc24
1 files changed, 18 insertions, 6 deletions
diff --git a/chromium/content/browser/accessibility/web_contents_accessibility_android.cc b/chromium/content/browser/accessibility/web_contents_accessibility_android.cc
index 5e7ccb79c98..c1be0a5d63f 100644
--- a/chromium/content/browser/accessibility/web_contents_accessibility_android.cc
+++ b/chromium/content/browser/accessibility/web_contents_accessibility_android.cc
@@ -551,6 +551,7 @@ bool WebContentsAccessibilityAndroid::OnHoverEvent(
root_manager_) {
gfx::PointF point =
IsUseZoomForDSFEnabled() ? event.GetPointPix() : event.GetPoint();
+ point.Scale(1 / page_scale_);
root_manager_->HitTest(gfx::ToFlooredPoint(point));
}
return true;
@@ -1042,15 +1043,25 @@ jboolean WebContentsAccessibilityAndroid::PreviousAtGranularity(
return false;
}
-void WebContentsAccessibilityAndroid::SetAccessibilityFocus(
+void WebContentsAccessibilityAndroid::MoveAccessibilityFocus(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
- jint unique_id) {
+ jint old_unique_id,
+ jint new_unique_id) {
+ BrowserAccessibilityAndroid* old_node = GetAXFromUniqueID(old_unique_id);
+ if (old_node)
+ old_node->manager()->ClearAccessibilityFocus(*old_node);
+
+ BrowserAccessibilityAndroid* node = GetAXFromUniqueID(new_unique_id);
+ if (!node)
+ return;
+ node->manager()->SetAccessibilityFocus(*node);
+
// When Android sets accessibility focus to a node, we load inline text
// boxes for that node so that subsequent requests for character bounding
- // boxes will succeed.
- BrowserAccessibilityAndroid* node = GetAXFromUniqueID(unique_id);
- if (node)
+ // boxes will succeed. However, don't do that for the root of the tree,
+ // as that will result in loading inline text boxes for the whole tree.
+ if (node != node->manager()->GetRoot())
node->manager()->LoadInlineTextBoxes(*node);
}
@@ -1196,7 +1207,8 @@ BrowserAccessibilityAndroid* WebContentsAccessibilityAndroid::GetAXFromUniqueID(
BrowserAccessibilityAndroid::GetFromUniqueId(unique_id));
}
-void WebContentsAccessibilityAndroid::UpdateFrameInfo() {
+void WebContentsAccessibilityAndroid::UpdateFrameInfo(float page_scale) {
+ page_scale_ = page_scale;
if (frame_info_initialized_)
return;