Commit 83d61787 authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Commit Bot

Android: Fix wrong tap postion in a11y mode

https://crrev.com/c/517683 introduced a bug in accessibility mode
when page scale factor is not 1. Before the patch, the hover event
coordinate is converted to CSS (https://goo.gl/ER8wu5) but after
the patch the unit was DIP by mistake. (https://goo.gl/ER8wu5).
This CL fixes it by applying the page scale factor to set the unit
right to CSS.

Bug: 840609
Change-Id: Iaa17882e2ffb2d5637e59df1ebe7cf677f4a76a3
Reviewed-on: https://chromium-review.googlesource.com/1055067
Commit-Queue: Jinsuk Kim <jinsukkim@chromium.org>
Reviewed-by: default avatarBo <boliu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#558165}
parent 4e83f498
...@@ -551,6 +551,7 @@ bool WebContentsAccessibilityAndroid::OnHoverEvent( ...@@ -551,6 +551,7 @@ bool WebContentsAccessibilityAndroid::OnHoverEvent(
root_manager_) { root_manager_) {
gfx::PointF point = gfx::PointF point =
IsUseZoomForDSFEnabled() ? event.GetPointPix() : event.GetPoint(); IsUseZoomForDSFEnabled() ? event.GetPointPix() : event.GetPoint();
point.Scale(1 / page_scale_);
root_manager_->HitTest(gfx::ToFlooredPoint(point)); root_manager_->HitTest(gfx::ToFlooredPoint(point));
} }
return true; return true;
...@@ -1196,7 +1197,8 @@ BrowserAccessibilityAndroid* WebContentsAccessibilityAndroid::GetAXFromUniqueID( ...@@ -1196,7 +1197,8 @@ BrowserAccessibilityAndroid* WebContentsAccessibilityAndroid::GetAXFromUniqueID(
BrowserAccessibilityAndroid::GetFromUniqueId(unique_id)); BrowserAccessibilityAndroid::GetFromUniqueId(unique_id));
} }
void WebContentsAccessibilityAndroid::UpdateFrameInfo() { void WebContentsAccessibilityAndroid::UpdateFrameInfo(float page_scale) {
page_scale_ = page_scale;
if (frame_info_initialized_) if (frame_info_initialized_)
return; return;
......
...@@ -213,7 +213,7 @@ class CONTENT_EXPORT WebContentsAccessibilityAndroid ...@@ -213,7 +213,7 @@ class CONTENT_EXPORT WebContentsAccessibilityAndroid
jint start, jint start,
jint len); jint len);
void UpdateFrameInfo(); void UpdateFrameInfo(float page_scale);
void set_root_manager(BrowserAccessibilityManagerAndroid* manager) { void set_root_manager(BrowserAccessibilityManagerAndroid* manager) {
root_manager_ = manager; root_manager_ = manager;
...@@ -253,6 +253,8 @@ class CONTENT_EXPORT WebContentsAccessibilityAndroid ...@@ -253,6 +253,8 @@ class CONTENT_EXPORT WebContentsAccessibilityAndroid
bool frame_info_initialized_; bool frame_info_initialized_;
float page_scale_ = 1.f;
BrowserAccessibilityManagerAndroid* root_manager_; BrowserAccessibilityManagerAndroid* root_manager_;
// Manages the connection between web contents and the RenderFrameHost that // Manages the connection between web contents and the RenderFrameHost that
......
...@@ -1233,7 +1233,7 @@ void RenderWidgetHostViewAndroid::OnFrameMetadataUpdated( ...@@ -1233,7 +1233,7 @@ void RenderWidgetHostViewAndroid::OnFrameMetadataUpdated(
auto* wcax = GetWebContentsAccessibilityAndroid(); auto* wcax = GetWebContentsAccessibilityAndroid();
if (wcax) if (wcax)
wcax->UpdateFrameInfo(); wcax->UpdateFrameInfo(frame_metadata.page_scale_factor);
if (!gesture_listener_manager_) if (!gesture_listener_manager_)
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment