Commit 733e8096 authored by Ella Ge's avatar Ella Ge Committed by Commit Bot

remove frame_scale from movementX/Y

The pointerlock spec defines MovementX/Y follow the scale of
screenX/Y, which is not scaled by pinch-zoom scale.
https://w3c.github.io/pointerlock/#dom-mouseevent-movementx
Although currently in chrome, it is movement is in physical
pixel, it should still be unscaled value. We should not apply
frame_scale to movement_x/y.

Note that right now WebMouseEvent::MovementInRootFrame is not used
anywhere other than test. we only scales the touch PointerEvent
but not mouse event.

This CL removes unused WebMouseEvent::MovementInRootFrame, and also
makes touch pointer event movementX/Y not scaled by pinch zoom.

Bug: 837004
Change-Id: I4bb39b3b01ecbd77c58fd4501a5c63ccb44e5a5b
Reviewed-on: https://chromium-review.googlesource.com/c/1313280Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarMustaq Ahmed <mustaq@chromium.org>
Reviewed-by: default avatarDavid Bokan <bokan@chromium.org>
Commit-Queue: Ella Ge <eirage@chromium.org>
Cr-Commit-Position: refs/heads/master@{#605901}
parent 81b1765d
......@@ -75,7 +75,6 @@ class WebMouseEvent : public WebInputEvent, public WebPointerProperties {
base::TimeTicks time_stamp_param,
PointerId id_param = kMousePointerId);
BLINK_PLATFORM_EXPORT WebFloatPoint MovementInRootFrame() const;
BLINK_PLATFORM_EXPORT WebFloatPoint PositionInRootFrame() const;
// Sets any scaled values to be their computed values and sets |frame_scale_|
......
......@@ -148,10 +148,8 @@ TEST(WebInputEventConversionTest, InputEventsScaling) {
EXPECT_EQ(15, transformed_event.PositionInScreen().x);
EXPECT_EQ(15, transformed_event.PositionInScreen().y);
IntPoint movement =
FlooredIntPoint(transformed_event.MovementInRootFrame());
EXPECT_EQ(5, movement.X());
EXPECT_EQ(5, movement.Y());
EXPECT_EQ(15, transformed_event.movement_x);
EXPECT_EQ(15, transformed_event.movement_y);
}
{
......@@ -322,8 +320,8 @@ TEST(WebInputEventConversionTest, InputEventsScaling) {
EXPECT_FLOAT_EQ(3.5f, transformed_event.PositionInWidget().y);
EXPECT_FLOAT_EQ(2.2f, transformed_event.width);
EXPECT_FLOAT_EQ(3.3f, transformed_event.height);
EXPECT_EQ(10, transformed_event.movement_x);
EXPECT_EQ(10, transformed_event.movement_y);
EXPECT_EQ(30, transformed_event.movement_x);
EXPECT_EQ(30, transformed_event.movement_y);
}
}
......@@ -363,11 +361,8 @@ TEST(WebInputEventConversionTest, InputEventsTransform) {
EXPECT_FLOAT_EQ(30, position.Y());
EXPECT_EQ(90, transformed_event.PositionInScreen().x);
EXPECT_EQ(90, transformed_event.PositionInScreen().y);
IntPoint movement =
FlooredIntPoint(transformed_event.MovementInRootFrame());
EXPECT_EQ(20, movement.X());
EXPECT_EQ(20, movement.Y());
EXPECT_EQ(60, transformed_event.movement_x);
EXPECT_EQ(60, transformed_event.movement_y);
}
{
......@@ -400,10 +395,8 @@ TEST(WebInputEventConversionTest, InputEventsTransform) {
EXPECT_EQ(90, coalescedevents[0].PositionInScreen().x);
EXPECT_EQ(90, coalescedevents[0].PositionInScreen().y);
IntPoint movement =
FlooredIntPoint(coalescedevents[0].MovementInRootFrame());
EXPECT_EQ(20, movement.X());
EXPECT_EQ(20, movement.Y());
EXPECT_EQ(60, coalescedevents[0].movement_x);
EXPECT_EQ(60, coalescedevents[0].movement_y);
position = coalescedevents[1].PositionInRootFrame();
EXPECT_FLOAT_EQ(30, position.X());
......@@ -411,9 +404,8 @@ TEST(WebInputEventConversionTest, InputEventsTransform) {
EXPECT_EQ(90, coalescedevents[1].PositionInScreen().x);
EXPECT_EQ(120, coalescedevents[1].PositionInScreen().y);
movement = FlooredIntPoint(coalescedevents[1].MovementInRootFrame());
EXPECT_EQ(20, movement.X());
EXPECT_EQ(10, movement.Y());
EXPECT_EQ(60, coalescedevents[1].movement_x);
EXPECT_EQ(30, coalescedevents[1].movement_y);
}
{
......
......@@ -66,6 +66,8 @@ class PointerEventCoordinateListenerCallback final : public EventListener {
last_screen_y_ = pointer_event->screenY();
last_width_ = pointer_event->width();
last_height_ = pointer_event->height();
last_movement_x_ = pointer_event->movementX();
last_movement_y_ = pointer_event->movementY();
}
double last_client_x_ = 0;
......@@ -76,6 +78,8 @@ class PointerEventCoordinateListenerCallback final : public EventListener {
double last_screen_y_ = 0;
double last_width_ = 0;
double last_height_ = 0;
double last_movement_x_ = 0;
double last_movement_y_ = 0;
private:
PointerEventCoordinateListenerCallback()
......@@ -199,6 +203,8 @@ TEST_F(PointerEventManagerTest, PointerEventCoordinates) {
ASSERT_EQ(callback->last_screen_y_, 50);
ASSERT_EQ(callback->last_width_, 8);
ASSERT_EQ(callback->last_height_, 12);
ASSERT_EQ(callback->last_movement_x_, 10);
ASSERT_EQ(callback->last_movement_y_, 10);
}
} // namespace blink
......@@ -29,11 +29,6 @@ WebMouseEvent::WebMouseEvent(WebInputEvent::Type type,
SetMenuSourceType(gesture_event.GetType());
}
WebFloatPoint WebMouseEvent::MovementInRootFrame() const {
return WebFloatPoint((movement_x / frame_scale_),
(movement_y / frame_scale_));
}
WebFloatPoint WebMouseEvent::PositionInRootFrame() const {
return WebFloatPoint(
(position_in_widget_.x / frame_scale_) + frame_translate_.x,
......
......@@ -90,8 +90,6 @@ WebPointerEvent WebPointerEvent::WebPointerEventInRootFrame() const {
transformed_event.width /= frame_scale_;
if (HasHeight())
transformed_event.height /= frame_scale_;
transformed_event.movement_x /= frame_scale_;
transformed_event.movement_y /= frame_scale_;
transformed_event.position_in_widget_ =
WebFloatPoint((transformed_event.PositionInWidget().x / frame_scale_) +
frame_translate_.x,
......
......@@ -26,8 +26,6 @@ WebTouchPoint WebTouchEvent::TouchPointInRootFrame(unsigned point) const {
WebTouchPoint transformed_point = touches[point];
transformed_point.radius_x /= frame_scale_;
transformed_point.radius_y /= frame_scale_;
transformed_point.movement_x /= frame_scale_;
transformed_point.movement_y /= frame_scale_;
transformed_point.SetPositionInWidget(
(transformed_point.PositionInWidget().x / frame_scale_) +
frame_translate_.x,
......
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