Skip to content

Commit

Permalink
WebMouseEvent coordinates are now fractional & private
Browse files Browse the repository at this point in the history
This CL moves WebMouseEvent coordinates (former (x,y) &
(globalX,globalY) into private members in the class, and
made them fractional in the /internal/ plumbing. There is
no change in behavior here since all coordinates
are truncated to integers on "input" to avoid regressions
(we will get rid of the truncation in a future CL).

BUG=456625
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_site_isolation

Review-Url: https://codereview.chromium.org/2782893002
Cr-Commit-Position: refs/heads/master@{#462082}
  • Loading branch information
mustaqahmed authored and Commit bot committed Apr 5, 2017
1 parent 9b658f0 commit c51f3aa
Show file tree
Hide file tree
Showing 84 changed files with 565 additions and 597 deletions.
6 changes: 3 additions & 3 deletions chrome/browser/android/vr_shell/android_ui_gesture_target.cc
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,15 @@ void AndroidUiGestureTarget::DispatchWebInputEvent(
// Flings are automatically generated for android UI. Ignore this input.
break;
case blink::WebMouseEvent::MouseEnter:
SetPointer(env, mouse->x, mouse->y);
SetPointer(env, mouse->positionInWidget().x, mouse->positionInWidget().y);
Inject(env, Action::HoverEnter, gesture->timeStampSeconds());
break;
case blink::WebMouseEvent::MouseMove:
SetPointer(env, mouse->x, mouse->y);
SetPointer(env, mouse->positionInWidget().x, mouse->positionInWidget().y);
Inject(env, Action::HoverMove, gesture->timeStampSeconds());
break;
case blink::WebMouseEvent::MouseLeave:
SetPointer(env, mouse->x, mouse->y);
SetPointer(env, mouse->positionInWidget().x, mouse->positionInWidget().y);
Inject(env, Action::HoverExit, gesture->timeStampSeconds());
break;
default:
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/android/vr_shell/vr_shell_gl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,7 @@ std::unique_ptr<blink::WebMouseEvent> MakeMouseEvent(WebInputEvent::Type type,
std::unique_ptr<blink::WebMouseEvent> mouse_event(new blink::WebMouseEvent(
type, blink::WebInputEvent::NoModifiers, timestamp));
mouse_event->pointerType = blink::WebPointerProperties::PointerType::Mouse;
mouse_event->x = x;
mouse_event->y = y;
mouse_event->setPositionInWidget(x, y);
mouse_event->clickCount = 1;

return mouse_event;
Expand Down
13 changes: 5 additions & 8 deletions chrome/browser/apps/guest_view/web_view_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -309,11 +309,10 @@ class LeftMouseClick {
DCHECK(click_completed_);
click_completed_ = false;
mouse_event_.setType(blink::WebInputEvent::MouseDown);
mouse_event_.x = point.x();
mouse_event_.y = point.y();
mouse_event_.setPositionInWidget(point.x(), point.y());
const gfx::Rect offset = web_contents_->GetContainerBounds();
mouse_event_.globalX = point.x() + offset.x();
mouse_event_.globalY = point.y() + offset.y();
mouse_event_.setPositionInScreen(point.x() + offset.x(),
point.y() + offset.y());
mouse_event_.clickCount = 1;
web_contents_->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(
mouse_event_);
Expand Down Expand Up @@ -781,8 +780,7 @@ class WebViewTestBase : public extensions::PlatformAppBrowserTest {
blink::WebInputEvent::NoModifiers,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = blink::WebMouseEvent::Button::Right;
mouse_event.x = 1;
mouse_event.y = 1;
mouse_event.setPositionInWidget(1, 1);
web_contents->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(
mouse_event);
mouse_event.setType(blink::WebInputEvent::MouseUp);
Expand Down Expand Up @@ -3456,8 +3454,7 @@ IN_PROC_BROWSER_TEST_P(WebViewAccessibilityTest, DISABLED_TouchAccessibility) {
blink::WebInputEvent::MouseMove,
blink::WebInputEvent::IsTouchAccessibility,
blink::WebInputEvent::TimeStampForTesting);
accessibility_touch_event.x = 95;
accessibility_touch_event.y = 55;
accessibility_touch_event.setPositionInWidget(95, 55);
web_contents->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(
accessibility_touch_event);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -301,12 +301,10 @@ class WebViewInteractiveTestBase : public extensions::PlatformAppBrowserTest {
blink::WebInputEvent::NoModifiers,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = button;
mouse_event.x = x;
mouse_event.y = y;
mouse_event.setPositionInWidget(x, y);
// Needed for the WebViewTest.ContextMenuPositionAfterCSSTransforms
gfx::Rect rect = rwh->GetView()->GetViewBounds();
mouse_event.globalX = x + rect.x();
mouse_event.globalY = y + rect.y();
mouse_event.setPositionInScreen(x + rect.x(), y + rect.y());
rwh->ForwardMouseEvent(mouse_event);
mouse_event.setType(blink::WebInputEvent::MouseUp);
rwh->ForwardMouseEvent(mouse_event);
Expand Down
4 changes: 2 additions & 2 deletions chrome/browser/chromeos/input_method/textinput_test_helper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -200,8 +200,8 @@ bool TextInputTestHelper::ClickElement(const std::string& id,
blink::WebInputEvent::NoModifiers,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = blink::WebMouseEvent::Button::Left;
mouse_event.x = rect.CenterPoint().x();
mouse_event.y = rect.CenterPoint().y();
mouse_event.setPositionInWidget(rect.CenterPoint().x(),
rect.CenterPoint().y());
mouse_event.clickCount = 1;
tab->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(mouse_event);

Expand Down
9 changes: 3 additions & 6 deletions chrome/browser/download/download_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2630,8 +2630,7 @@ IN_PROC_BROWSER_TEST_F(DownloadTest, LoadURLExternallyReferrerPolicy) {
blink::WebInputEvent::AltKey,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = blink::WebMouseEvent::Button::Left;
mouse_event.x = 15;
mouse_event.y = 15;
mouse_event.setPositionInWidget(15, 15);
mouse_event.clickCount = 1;
tab->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(mouse_event);
mouse_event.setType(blink::WebInputEvent::MouseUp);
Expand Down Expand Up @@ -2687,8 +2686,7 @@ IN_PROC_BROWSER_TEST_F(DownloadTest, SaveLinkAsReferrerPolicyOrigin) {
blink::WebInputEvent::NoModifiers,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = blink::WebMouseEvent::Button::Right;
mouse_event.x = 15;
mouse_event.y = 15;
mouse_event.setPositionInWidget(15, 15);
mouse_event.clickCount = 1;
tab->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(mouse_event);
mouse_event.setType(blink::WebInputEvent::MouseUp);
Expand Down Expand Up @@ -2792,8 +2790,7 @@ IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadCrossDomainReferrerPolicy) {
blink::WebInputEvent::AltKey,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = blink::WebMouseEvent::Button::Left;
mouse_event.x = 15;
mouse_event.y = 15;
mouse_event.setPositionInWidget(15, 15);
mouse_event.clickCount = 1;
tab->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(mouse_event);
mouse_event.setType(blink::WebInputEvent::MouseUp);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -573,8 +573,7 @@ IN_PROC_BROWSER_TEST_F(WebNavigationApiTest, RequestOpenTab) {
blink::WebInputEvent::NoModifiers,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = blink::WebMouseEvent::Button::Middle;
mouse_event.x = 7;
mouse_event.y = 7;
mouse_event.setPositionInWidget(7, 7);
mouse_event.clickCount = 1;
tab->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(mouse_event);
mouse_event.setType(blink::WebInputEvent::MouseUp);
Expand Down Expand Up @@ -606,8 +605,7 @@ IN_PROC_BROWSER_TEST_F(WebNavigationApiTest, TargetBlank) {
blink::WebInputEvent::NoModifiers,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = blink::WebMouseEvent::Button::Left;
mouse_event.x = 7;
mouse_event.y = 7;
mouse_event.setPositionInWidget(7, 7);
mouse_event.clickCount = 1;
tab->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(mouse_event);
mouse_event.setType(blink::WebInputEvent::MouseUp);
Expand Down Expand Up @@ -637,8 +635,7 @@ IN_PROC_BROWSER_TEST_F(WebNavigationApiTest, TargetBlankIncognito) {
blink::WebInputEvent::NoModifiers,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = blink::WebMouseEvent::Button::Left;
mouse_event.x = 7;
mouse_event.y = 7;
mouse_event.setPositionInWidget(7, 7);
mouse_event.clickCount = 1;
tab->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(mouse_event);
mouse_event.setType(blink::WebInputEvent::MouseUp);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,8 +278,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionWebRequestApiTest, MAYBE_WebRequestNewTab) {
blink::WebInputEvent::NoModifiers,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = blink::WebMouseEvent::Button::Left;
mouse_event.x = 7;
mouse_event.y = 7;
mouse_event.setPositionInWidget(7, 7);
mouse_event.clickCount = 1;
tab->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(mouse_event);
mouse_event.setType(blink::WebInputEvent::MouseUp);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,7 @@ class FromGWSPageLoadMetricsObserverTest
blink::WebInputEvent::NoModifiers,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = blink::WebMouseEvent::Button::Left;
mouse_event.x = 7;
mouse_event.y = 7;
mouse_event.setPositionInWidget(7, 7);
mouse_event.clickCount = 1;
SimulateInputEvent(mouse_event);
}
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/policy/policy_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -783,8 +783,7 @@ class PolicyTest : public InProcessBrowserTest {
blink::WebInputEvent::TimeStampForTesting);
click_event.button = blink::WebMouseEvent::Button::Left;
click_event.clickCount = 1;
click_event.x = x;
click_event.y = y;
click_event.setPositionInWidget(x, y);
contents->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(click_event);
click_event.setType(blink::WebInputEvent::MouseUp);
contents->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(click_event);
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/referrer_policy_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -181,8 +181,7 @@ class ReferrerPolicyTest : public InProcessBrowserTest {
blink::WebInputEvent::MouseDown, blink::WebInputEvent::NoModifiers,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = button;
mouse_event.x = 15;
mouse_event.y = 15;
mouse_event.setPositionInWidget(15, 15);
mouse_event.clickCount = 1;
tab->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(mouse_event);
mouse_event.setType(blink::WebInputEvent::MouseUp);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -214,13 +214,11 @@ IN_PROC_BROWSER_TEST_F(ContextMenuBrowserTest, RealMenu) {
blink::WebInputEvent::NoModifiers,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = blink::WebMouseEvent::Button::Right;
mouse_event.x = 15;
mouse_event.y = 15;
mouse_event.setPositionInWidget(15, 15);
content::WebContents* tab =
browser()->tab_strip_model()->GetActiveWebContents();
gfx::Rect offset = tab->GetContainerBounds();
mouse_event.globalX = 15 + offset.x();
mouse_event.globalY = 15 + offset.y();
mouse_event.setPositionInScreen(15 + offset.x(), 15 + offset.y());
mouse_event.clickCount = 1;
tab->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(mouse_event);
mouse_event.setType(blink::WebInputEvent::MouseUp);
Expand Down Expand Up @@ -356,8 +354,7 @@ IN_PROC_BROWSER_TEST_F(ContextMenuBrowserTest, SuggestedFileName) {
blink::WebInputEvent::NoModifiers,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = blink::WebMouseEvent::Button::Right;
mouse_event.x = 15;
mouse_event.y = 15;
mouse_event.setPositionInWidget(15, 15);
content::WebContents* tab =
browser()->tab_strip_model()->GetActiveWebContents();
tab->GetRenderViewHost()->GetWidget()->ForwardMouseEvent(mouse_event);
Expand Down
7 changes: 3 additions & 4 deletions chrome/browser/site_per_process_interactive_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1100,8 +1100,7 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessInteractivePDFTest,
auto send_right_mouse_event = [](content::RenderWidgetHost* host, int x,
int y, blink::WebInputEvent::Type type) {
blink::WebMouseEvent event;
event.x = x;
event.y = y;
event.setPositionInWidget(x, y);
event.button = blink::WebMouseEvent::Button::Right;
event.setType(type);
host->ForwardMouseEvent(event);
Expand All @@ -1123,7 +1122,7 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessInteractivePDFTest,
class SitePerProcessAutofillTest : public SitePerProcessInteractiveBrowserTest {
public:
SitePerProcessAutofillTest() : SitePerProcessInteractiveBrowserTest() {}
~SitePerProcessAutofillTest() override{};
~SitePerProcessAutofillTest() override {}

void SetUpCommandLine(base::CommandLine* command_line) override {
SitePerProcessInteractiveBrowserTest::SetUpCommandLine(command_line);
Expand All @@ -1137,7 +1136,7 @@ class SitePerProcessAutofillTest : public SitePerProcessInteractiveBrowserTest {
protected:
class TestAutofillClient : public autofill::TestAutofillClient {
public:
TestAutofillClient() : popup_shown_(false){};
TestAutofillClient() : popup_shown_(false) {}
~TestAutofillClient() override {}

void WaitForNextPopup() {
Expand Down
2 changes: 1 addition & 1 deletion chrome/renderer/plugins/chrome_plugin_placeholder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ void ChromePluginPlaceholder::ShowContextMenu(
hide_item.label = l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_PLUGIN_HIDE);
params.custom_items.push_back(hide_item);

blink::WebPoint point(event.x, event.y);
blink::WebPoint point(event.positionInWidget().x, event.positionInWidget().y);
if (plugin() && plugin()->container())
point = plugin()->container()->localToRootFramePoint(point);

Expand Down
8 changes: 4 additions & 4 deletions components/printing/test/print_web_view_helper_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -359,8 +359,8 @@ TEST_F(MAYBE_PrintWebViewHelperTest, AllowUserOriginatedPrinting) {
blink::WebInputEvent::NoModifiers,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = blink::WebMouseEvent::Button::Left;
mouse_event.x = bounds.CenterPoint().x();
mouse_event.y = bounds.CenterPoint().y();
mouse_event.setPositionInWidget(bounds.CenterPoint().x(),
bounds.CenterPoint().y());
mouse_event.clickCount = 1;
SendWebMouseEvent(mouse_event);
mouse_event.setType(blink::WebInputEvent::MouseUp);
Expand Down Expand Up @@ -666,8 +666,8 @@ TEST_F(MAYBE_PrintWebViewHelperPreviewTest, PrintWithJavaScript) {
blink::WebInputEvent::NoModifiers,
blink::WebInputEvent::TimeStampForTesting);
mouse_event.button = blink::WebMouseEvent::Button::Left;
mouse_event.x = bounds.CenterPoint().x();
mouse_event.y = bounds.CenterPoint().y();
mouse_event.setPositionInWidget(bounds.CenterPoint().x(),
bounds.CenterPoint().y());
mouse_event.clickCount = 1;
SendWebMouseEvent(mouse_event);
mouse_event.setType(blink::WebInputEvent::MouseUp);
Expand Down
5 changes: 3 additions & 2 deletions content/browser/browser_plugin/browser_plugin_guest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -468,8 +468,9 @@ void BrowserPluginGuest::ResendEventToEmbedder(
} else if (event.type() == blink::WebInputEvent::MouseWheel) {
blink::WebMouseWheelEvent resent_wheel_event;
memcpy(&resent_wheel_event, &event, sizeof(blink::WebMouseWheelEvent));
resent_wheel_event.x += offset_from_embedder.x();
resent_wheel_event.y += offset_from_embedder.y();
resent_wheel_event.setPositionInWidget(
resent_wheel_event.positionInWidget().x + offset_from_embedder.x(),
resent_wheel_event.positionInWidget().y + offset_from_embedder.y());
resent_wheel_event.resendingPluginId = browser_plugin_instance_id_;
// TODO(wjmaclean): Initialize latency info correctly for OOPIFs.
// https://crbug.com/613628
Expand Down
4 changes: 2 additions & 2 deletions content/browser/devtools/protocol/color_picker.cc
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,8 @@ void ColorPicker::FrameUpdated(const SkBitmap& bitmap,
}

bool ColorPicker::HandleMouseEvent(const blink::WebMouseEvent& event) {
last_cursor_x_ = event.x;
last_cursor_y_ = event.y;
last_cursor_x_ = event.positionInWidget().x;
last_cursor_y_ = event.positionInWidget().y;
if (frame_.drawsNothing())
return true;

Expand Down
12 changes: 4 additions & 8 deletions content/browser/devtools/protocol/input_handler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -362,10 +362,8 @@ void InputHandler::DispatchMouseEvent(
GetEventTimestamp(std::move(timestamp)));

event.button = event_button;
event.x = x * page_scale_factor_;
event.y = y * page_scale_factor_;
event.globalX = x * page_scale_factor_;
event.globalY = y * page_scale_factor_;
event.setPositionInWidget(x * page_scale_factor_, y * page_scale_factor_);
event.setPositionInScreen(x * page_scale_factor_, y * page_scale_factor_);
event.clickCount = click_count.fromMaybe(0);
event.pointerType = blink::WebPointerProperties::PointerType::Mouse;

Expand Down Expand Up @@ -440,11 +438,9 @@ Response InputHandler::EmulateTouchFromMouseEvent(const std::string& type,
event.reset(mouse_event);
}

mouse_event->x = x;
mouse_event->y = y;
mouse_event->setPositionInWidget(x, y);
mouse_event->button = event_button;
mouse_event->globalX = x;
mouse_event->globalY = y;
mouse_event->setPositionInScreen(x, y);
mouse_event->clickCount = click_count.fromMaybe(0);
mouse_event->pointerType = blink::WebPointerProperties::PointerType::Touch;

Expand Down
14 changes: 7 additions & 7 deletions content/browser/frame_host/render_widget_host_view_guest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -184,9 +184,8 @@ void RenderWidgetHostViewGuest::ProcessMouseEvent(
// click. Sends a synthetic event for the focusing side effect.
// TODO(wjmaclean): When we remove BrowserPlugin, delete this code.
// http://crbug.com/533069
MaybeSendSyntheticTapGesture(
blink::WebFloatPoint(event.x, event.y),
blink::WebFloatPoint(event.globalX, event.globalY));
MaybeSendSyntheticTapGesture(event.positionInWidget(),
event.positionInScreen());
}
host_->ForwardMouseEventWithLatencyInfo(event, latency);
}
Expand Down Expand Up @@ -564,8 +563,9 @@ void RenderWidgetHostViewGuest::OnHandleInputEvent(
event->type() == blink::WebInputEvent::MouseWheel) {
blink::WebMouseWheelEvent rescaled_event =
*static_cast<const blink::WebMouseWheelEvent*>(event);
rescaled_event.x /= current_device_scale_factor();
rescaled_event.y /= current_device_scale_factor();
rescaled_event.setPositionInWidget(
rescaled_event.positionInWidget().x / current_device_scale_factor(),
rescaled_event.positionInWidget().y / current_device_scale_factor());
rescaled_event.deltaX /= current_device_scale_factor();
rescaled_event.deltaY /= current_device_scale_factor();
rescaled_event.wheelTicksX /= current_device_scale_factor();
Expand All @@ -592,8 +592,8 @@ void RenderWidgetHostViewGuest::OnHandleInputEvent(
if (guest_ && mouse_event.type() == blink::WebInputEvent::MouseDown &&
mouse_event.button == blink::WebPointerProperties::Button::Right)
guest_->SetContextMenuPosition(
gfx::Point(mouse_event.globalX - GetViewBounds().x(),
mouse_event.globalY - GetViewBounds().y()));
gfx::Point(mouse_event.positionInScreen().x - GetViewBounds().x(),
mouse_event.positionInScreen().y - GetViewBounds().y()));
host_->ForwardMouseEvent(mouse_event);
return;
}
Expand Down
Loading

0 comments on commit c51f3aa

Please sign in to comment.