From 0359aae24dbee17caa7f5f95b7eec875111ae449 Mon Sep 17 00:00:00 2001 From: chaopeng Date: Mon, 27 Jun 2022 13:47:27 -0400 Subject: [PATCH 01/16] [WIP][Fuchsia] Support scroll_physical_pixel fields --- .../fuchsia/flutter/pointer_delegate.cc | 48 ++++++++++++++----- 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/shell/platform/fuchsia/flutter/pointer_delegate.cc b/shell/platform/fuchsia/flutter/pointer_delegate.cc index f85f141a57100..40d580eef2ce4 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate.cc @@ -287,22 +287,46 @@ flutter::PointerData CreateMouseDraft(const fup_MouseEvent& event, ptr.buttons = flutter_buttons; } - // Fuchsia currently provides scroll data in "ticks", not physical pixels. - // However, Flutter expects scroll data in physical pixels. To compensate for - // lack of guidance, we make up a "reasonable amount". - // TODO(fxbug.dev/85388): Replace with physical pixel scroll. + // TODO(fxbug.dev/103443): Fuchsia previously only provides scroll data in + // "ticks", not physical pixels. Keep the tick bases scrolling and remove + // after the transistion done. const int kScrollOffsetMultiplier = 20; - if (sample.has_scroll_v()) { - ptr.signal_kind = flutter::PointerData::SignalKind::kScroll; - double dy = -sample.scroll_v() * kScrollOffsetMultiplier; // logical amount - ptr.scroll_delta_y = dy; // Not yet physical; adjusted in Platform View. + double dy; + double dx; + bool is_scroll; + + if (sample.has_scroll_v_physical_pixel()) { + dy = -sample.scroll_v_physical_pixel(); + is_scroll = true; + } else if (sample.has_scroll_v()) { + dy = -sample.scroll_v() * + kScrollOffsetMultiplier; // logical amount, not yet physical; adjusted + // in Platform View. + is_scroll = true; } - if (sample.has_scroll_h()) { - ptr.signal_kind = flutter::PointerData::SignalKind::kScroll; - double dx = sample.scroll_h() * kScrollOffsetMultiplier; // logical amount - ptr.scroll_delta_x = dx; // Not yet physical; adjusted in Platform View. + if (sample.scroll_h_physical_pixel) { + dx = sample.scroll_h_physical_pixel(); + is_scroll = true; + } else if (sample.has_scroll_h()) { + dx = sample.scroll_h() * kScrollOffsetMultiplier; // logical amount + is_scroll = true; + } + + if (is_scroll) { + bool is_trackpad_scroll = + sample.has_is_precision_scroll() && sample.is_precision_scroll(); + + if (is_trackpad_scroll) { + ptr.kind = flutter::PointerData::DeviceKind::kTrackpad; + ptr.pan_y = dy; + ptr.pan_x = dx; + } else { + ptr.signal_kind = flutter::PointerData::SignalKind::kScroll; + ptr.scroll_delta_y = dy; + ptr.scroll_delta_x = dx; + } } return ptr; From c0c21526cbaa2bf94c870f9f73f6b93073acf230 Mon Sep 17 00:00:00 2001 From: chaopeng Date: Tue, 28 Jun 2022 12:36:46 -0400 Subject: [PATCH 02/16] add test --- .../flutter/pointer_delegate_unittests.cc | 167 ++++++++++++++++++ .../flutter/tests/pointer_event_utility.cc | 113 ++++++++++-- .../flutter/tests/pointer_event_utility.h | 28 +++ 3 files changed, 298 insertions(+), 10 deletions(-) diff --git a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc index 763958c37ebf2..88b9f918493a2 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc @@ -37,6 +37,12 @@ constexpr fup_TouchIxnId kIxnOne = {.device_id = 1u, .pointer_id = 1u, .interaction_id = 2u}; +constexpr uint32_t kMouseDeviceId = 123; +constexpr std::array kNoScrollDelta = {0, 0}; +constexpr std::array kNoScrollInPhysicalPixelDelta = {0, 0}; +const bool kNotPrecisionScroll = false; +const bool kPrecisionScroll = true; + // Fixture to exercise Flutter runner's implementation for // fuchsia.ui.pointer.TouchSource. class PointerDelegateTest : public ::testing::Test { @@ -676,4 +682,165 @@ TEST_F(PointerDelegateTest, Protocol_PointersAreIndependent) { pointers = {}; } +TEST_F(PointerDelegateTest, MouseWheel_TickBased) { + std::optional> pointers; + pointer_delegate_->WatchLoop( + [&pointers](std::vector events) { + pointers = std::move(events); + }); + RunLoopUntilIdle(); // Server gets watch call. + + std::vector events = + MouseEventBuilder() + .AddTime(1111789u) + .AddViewParameters(kRect, kRect, kIdentity) + .AddSample(kMouseDeviceId, {10.f, 10.f}, {}, {0, 1}, + kNoScrollInPhysicalPixelDelta, kNotPrecisionScroll) + .AddMouseDeviceInfo(kMouseDeviceId, {0, 1, 2}) + .BuildAsVector(); + mouse_source_->ScheduleCallback(std::move(events)); + RunLoopUntilIdle(); + + ASSERT_TRUE(pointers.has_value()); + ASSERT_EQ(pointers.value().size(), 1u); + EXPECT_EQ(pointers.value()[0].change, flutter::PointerData::Change::kHover); + EXPECT_EQ(pointers.value()[0].signal_kind, + flutter::PointerData::SignalKind::kScroll); + EXPECT_EQ(pointers.value()[0].kind, flutter::PointerData::DeviceKind::kMouse); + EXPECT_EQ(pointers.value()[0].buttons, 0); + EXPECT_EQ(pointers.value()[0].scroll_delta_x, 0); + EXPECT_EQ(pointers.value()[0].scroll_delta_y, 20); + pointers = {}; + + // receive a horizontal scroll + events = MouseEventBuilder() + .AddTime(1111789u) + .AddViewParameters(kRect, kRect, kIdentity) + .AddSample(kMouseDeviceId, {10.f, 10.f}, {}, {1, 0}, + kNoScrollInPhysicalPixelDelta, kNotPrecisionScroll) + .AddMouseDeviceInfo(kMouseDeviceId, {0, 1, 2}) + .BuildAsVector(); + mouse_source_->ScheduleCallback(std::move(events)); + RunLoopUntilIdle(); + + ASSERT_TRUE(pointers.has_value()); + ASSERT_EQ(pointers.value().size(), 1u); + EXPECT_EQ(pointers.value()[0].change, flutter::PointerData::Change::kHover); + EXPECT_EQ(pointers.value()[0].signal_kind, + flutter::PointerData::SignalKind::kScroll); + EXPECT_EQ(pointers.value()[0].kind, flutter::PointerData::DeviceKind::kMouse); + EXPECT_EQ(pointers.value()[0].buttons, 0); + EXPECT_EQ(pointers.value()[0].scroll_delta_x, 20); + EXPECT_EQ(pointers.value()[0].scroll_delta_y, 0); + pointers = {}; +} + +TEST_F(PointerDelegateTest, MouseWheel_PixelBased) { + std::optional> pointers; + pointer_delegate_->WatchLoop( + [&pointers](std::vector events) { + pointers = std::move(events); + }); + RunLoopUntilIdle(); // Server gets watch call. + + std::vector events = + MouseEventBuilder() + .AddTime(1111789u) + .AddViewParameters(kRect, kRect, kIdentity) + .AddSample(kMouseDeviceId, {10.f, 10.f}, {}, {0, 1}, {0, 120}, + kNotPrecisionScroll) + .AddMouseDeviceInfo(kMouseDeviceId, {0, 1, 2}) + .BuildAsVector(); + mouse_source_->ScheduleCallback(std::move(events)); + RunLoopUntilIdle(); + + ASSERT_TRUE(pointers.has_value()); + ASSERT_EQ(pointers.value().size(), 1u); + EXPECT_EQ(pointers.value()[0].change, flutter::PointerData::Change::kHover); + EXPECT_EQ(pointers.value()[0].signal_kind, + flutter::PointerData::SignalKind::kScroll); + EXPECT_EQ(pointers.value()[0].kind, flutter::PointerData::DeviceKind::kMouse); + EXPECT_EQ(pointers.value()[0].buttons, 0); + EXPECT_EQ(pointers.value()[0].scroll_delta_x, 0); + EXPECT_EQ(pointers.value()[0].scroll_delta_y, 120); + pointers = {}; + + // receive a horizontal scroll + events = MouseEventBuilder() + .AddTime(1111789u) + .AddViewParameters(kRect, kRect, kIdentity) + .AddSample(kMouseDeviceId, {10.f, 10.f}, {}, {1, 0}, {120, 0}, + kNotPrecisionScroll) + .AddMouseDeviceInfo(kMouseDeviceId, {0, 1, 2}) + .BuildAsVector(); + mouse_source_->ScheduleCallback(std::move(events)); + RunLoopUntilIdle(); + + ASSERT_TRUE(pointers.has_value()); + ASSERT_EQ(pointers.value().size(), 1u); + EXPECT_EQ(pointers.value()[0].change, flutter::PointerData::Change::kHover); + EXPECT_EQ(pointers.value()[0].signal_kind, + flutter::PointerData::SignalKind::kScroll); + EXPECT_EQ(pointers.value()[0].kind, flutter::PointerData::DeviceKind::kMouse); + EXPECT_EQ(pointers.value()[0].buttons, 0); + EXPECT_EQ(pointers.value()[0].scroll_delta_x, 120); + EXPECT_EQ(pointers.value()[0].scroll_delta_y, 0); + pointers = {}; +} + +TEST_F(PointerDelegateTest, MouseWheel_TouchpadPixelBased) { + std::optional> pointers; + pointer_delegate_->WatchLoop( + [&pointers](std::vector events) { + pointers = std::move(events); + }); + RunLoopUntilIdle(); // Server gets watch call. + + std::vector events = + MouseEventBuilder() + .AddTime(1111789u) + .AddViewParameters(kRect, kRect, kIdentity) + .AddSample(kMouseDeviceId, {10.f, 10.f}, {}, {0, 1}, {0, 120}, + kNotPrecisionScroll) + .AddMouseDeviceInfo(kMouseDeviceId, {0, 1, 2}) + .BuildAsVector(); + mouse_source_->ScheduleCallback(std::move(events)); + RunLoopUntilIdle(); + + ASSERT_TRUE(pointers.has_value()); + ASSERT_EQ(pointers.value().size(), 1u); + EXPECT_EQ(pointers.value()[0].change, flutter::PointerData::Change::kHover); + EXPECT_EQ(pointers.value()[0].signal_kind, + flutter::PointerData::SignalKind::kScroll); + EXPECT_EQ(pointers.value()[0].kind, + flutter::PointerData::DeviceKind::kTrackpad); + EXPECT_EQ(pointers.value()[0].buttons, 0); + EXPECT_EQ(pointers.value()[0].scroll_delta_x, 0); + EXPECT_EQ(pointers.value()[0].scroll_delta_y, 120); + pointers = {}; + + // receive a horizontal scroll + events = MouseEventBuilder() + .AddTime(1111789u) + .AddViewParameters(kRect, kRect, kIdentity) + .AddSample(kMouseDeviceId, {10.f, 10.f}, {}, {1, 0}, {120, 0}, + kNotPrecisionScroll) + .AddMouseDeviceInfo(kMouseDeviceId, {0, 1, 2}) + .BuildAsVector(); + mouse_source_->ScheduleCallback(std::move(events)); + RunLoopUntilIdle(); + + ASSERT_TRUE(pointers.has_value()); + ASSERT_EQ(pointers.value().size(), 1u); + EXPECT_EQ(pointers.value()[0].change, flutter::PointerData::Change::kHover); + EXPECT_EQ(pointers.value()[0].signal_kind, + flutter::PointerData::SignalKind::kScroll); + EXPECT_EQ(pointers.value()[0].kind, + flutter::PointerData::DeviceKind::kTrackpad); + EXPECT_EQ(pointers.value()[0].buttons, 0); + EXPECT_EQ(pointers.value()[0].scroll_delta_x, 120); + EXPECT_EQ(pointers.value()[0].scroll_delta_y, 0); + pointers = {}; +} + } // namespace flutter_runner::testing diff --git a/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc b/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc index 6e003bfea0d56..80fd6bddd3f00 100644 --- a/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc +++ b/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc @@ -13,6 +13,27 @@ using fup_TouchIxnResult = fuchsia::ui::pointer::TouchInteractionResult; using fup_TouchPointerSample = fuchsia::ui::pointer::TouchPointerSample; using fup_ViewParameters = fuchsia::ui::pointer::ViewParameters; +namespace { + +fup_ViewParameters CreateViewParameters( + std::array, 2> view, + std::array, 2> viewport, + std::array transform) { + fup_ViewParameters params; + fuchsia::ui::pointer::Rectangle view_rect; + view_rect.min = view[0]; + view_rect.max = view[1]; + params.view = view_rect; + fuchsia::ui::pointer::Rectangle viewport_rect; + viewport_rect.min = viewport[0]; + viewport_rect.max = viewport[1]; + params.viewport = viewport_rect; + params.viewport_to_view_transform = transform; + return params; +} + +} // namespace + TouchEventBuilder TouchEventBuilder::New() { return TouchEventBuilder(); } @@ -36,16 +57,8 @@ TouchEventBuilder& TouchEventBuilder::AddViewParameters( std::array, 2> view, std::array, 2> viewport, std::array transform) { - params_ = std::make_optional(); - fuchsia::ui::pointer::Rectangle view_rect; - view_rect.min = view[0]; - view_rect.max = view[1]; - params_->view = view_rect; - fuchsia::ui::pointer::Rectangle viewport_rect; - viewport_rect.min = viewport[0]; - viewport_rect.max = viewport[1]; - params_->viewport = viewport_rect; - params_->viewport_to_view_transform = transform; + params_ = CreateViewParameters(std::move(view), std::move(viewport), + std::move(transform)); return *this; } @@ -77,4 +90,84 @@ std::vector TouchEventBuilder::BuildAsVector() { return events; } +MouseEventBuilder::MouseEventBuilder() = default; + +MouseEventBuilder::~MouseEventBuilder() = default; + +MouseEventBuilder& MouseEventBuilder::AddTime(zx_time_t time) { + time_ = time; + return *this; +} + +MouseEventBuilder& MouseEventBuilder::AddSample( + uint32_t id, + std::array position, + std::vector pressed_buttons, + std::array scroll, + std::array scroll_in_physical_pixel, + bool is_precision_scroll) { + sample_ = absl::make_optional(); + sample_->set_device_id(id); + if (!pressed_buttons.empty()) { + sample_->set_pressed_buttons(pressed_buttons); + } + sample_->set_position_in_viewport(position); + if (scroll[0] != 0) { + sample_->set_scroll_h(scroll[0]); + } + if (scroll[1] != 0) { + sample_->set_scroll_v(scroll[1]); + } + if (scroll_in_physical_pixel[0] != 0) { + sample_->set_scroll_h_physical_pixel(scroll_in_physical_pixel[0]); + } + if (scroll_in_physical_pixel[1] != 0) { + sample_->set_scroll_v_physical_pixel(scroll_in_physical_pixel[1]); + } + sample_->set_is_precision_scroll(is_precision_scroll); + return *this; +} + +MouseEventBuilder& MouseEventBuilder::AddViewParameters( + std::array, 2> view, + std::array, 2> viewport, + std::array transform) { + params_ = CreateViewParameters(std::move(view), std::move(viewport), + std::move(transform)); + return *this; +} + +MouseEventBuilder& MouseEventBuilder::AddMouseDeviceInfo( + uint32_t id, + std::vector buttons) { + device_info_ = absl::make_optional(); + device_info_->set_id(id); + device_info_->set_buttons(buttons); + return *this; +} + +fup::MouseEvent MouseEventBuilder::Build() { + fup::MouseEvent event; + if (time_) { + event.set_timestamp(time_.value()); + } + if (params_) { + event.set_view_parameters(std::move(params_.value())); + } + if (sample_) { + event.set_pointer_sample(std::move(sample_.value())); + } + if (device_info_) { + event.set_device_info(std::move(device_info_.value())); + } + event.set_trace_flow_id(123); + return event; +} + +std::vector MouseEventBuilder::BuildAsVector() { + std::vector events; + events.emplace_back(Build()); + return events; +} + } // namespace flutter_runner::testing diff --git a/shell/platform/fuchsia/flutter/tests/pointer_event_utility.h b/shell/platform/fuchsia/flutter/tests/pointer_event_utility.h index f1702a74c67ed..243638436bf27 100644 --- a/shell/platform/fuchsia/flutter/tests/pointer_event_utility.h +++ b/shell/platform/fuchsia/flutter/tests/pointer_event_utility.h @@ -40,6 +40,34 @@ class TouchEventBuilder { std::optional result_; }; +// A helper class for crafting a fuchsia.ui.pointer.MouseEventBuilder table. +class MouseEventBuilder { + public: + static MouseEventBuilder New(); + + MouseEventBuilder& AddTime(zx_time_t time); + MouseEventBuilder& AddSample(uint32_t id, + std::array position, + std::vector pressed_buttons, + std::array scroll, + std::array scroll_in_physical_pixel, + bool is_precision_scroll); + MouseEventBuilder& AddViewParameters( + std::array, 2> view, + std::array, 2> viewport, + std::array transform); + MouseEventBuilder& AddMouseDeviceInfo(uint32_t id, + std::vector buttons); + fuchsia::ui::pointer::MouseEvent Build(); + std::vector BuildAsVector(); + + private: + std::optional time_; + std::optional sample_; + std::optional params_; + std::optional device_info_; +}; + } // namespace flutter_runner::testing #endif // FLUTTER_SHELL_PLATFORM_FUCHSIA_TESTS_POINTER_EVENT_UTILITY_H_ From 947282bd1660cf3879e4125b2359c79655551a49 Mon Sep 17 00:00:00 2001 From: chaopeng Date: Tue, 12 Jul 2022 09:49:32 -0400 Subject: [PATCH 03/16] update --- .../platform/fuchsia/flutter/pointer_delegate.cc | 2 +- .../fuchsia/flutter/pointer_delegate_unittests.cc | 7 ++++--- .../flutter/tests/pointer_event_utility.cc | 15 +++++++++------ 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/shell/platform/fuchsia/flutter/pointer_delegate.cc b/shell/platform/fuchsia/flutter/pointer_delegate.cc index 40d580eef2ce4..3eded10cf1dc9 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate.cc @@ -306,7 +306,7 @@ flutter::PointerData CreateMouseDraft(const fup_MouseEvent& event, is_scroll = true; } - if (sample.scroll_h_physical_pixel) { + if (sample.scroll_h_physical_pixel()) { dx = sample.scroll_h_physical_pixel(); is_scroll = true; } else if (sample.has_scroll_h()) { diff --git a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc index 88b9f918493a2..b76ab35a5c3cf 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc @@ -30,6 +30,7 @@ using fup_TouchPointerSample = fuchsia::ui::pointer::TouchPointerSample; using fup_TouchResponse = fuchsia::ui::pointer::TouchResponse; using fup_TouchResponseType = fuchsia::ui::pointer::TouchResponseType; using fup_ViewParameters = fuchsia::ui::pointer::ViewParameters; +using fup_MouseEvent = fuchsia::ui::pointer::MouseEvent; constexpr std::array, 2> kRect = {{{0, 0}, {20, 20}}}; constexpr std::array kIdentity = {1, 0, 0, 0, 1, 0, 0, 0, 1}; @@ -690,7 +691,7 @@ TEST_F(PointerDelegateTest, MouseWheel_TickBased) { }); RunLoopUntilIdle(); // Server gets watch call. - std::vector events = + std::vector events = MouseEventBuilder() .AddTime(1111789u) .AddViewParameters(kRect, kRect, kIdentity) @@ -743,7 +744,7 @@ TEST_F(PointerDelegateTest, MouseWheel_PixelBased) { }); RunLoopUntilIdle(); // Server gets watch call. - std::vector events = + std::vector events = MouseEventBuilder() .AddTime(1111789u) .AddViewParameters(kRect, kRect, kIdentity) @@ -796,7 +797,7 @@ TEST_F(PointerDelegateTest, MouseWheel_TouchpadPixelBased) { }); RunLoopUntilIdle(); // Server gets watch call. - std::vector events = + std::vector events = MouseEventBuilder() .AddTime(1111789u) .AddViewParameters(kRect, kRect, kIdentity) diff --git a/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc b/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc index 80fd6bddd3f00..a08d933240ab8 100644 --- a/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc +++ b/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc @@ -12,6 +12,8 @@ using fup_TouchIxnId = fuchsia::ui::pointer::TouchInteractionId; using fup_TouchIxnResult = fuchsia::ui::pointer::TouchInteractionResult; using fup_TouchPointerSample = fuchsia::ui::pointer::TouchPointerSample; using fup_ViewParameters = fuchsia::ui::pointer::ViewParameters; +using fup_MouseEvent = fuchsia::ui::pointer::MouseEvent; + namespace { @@ -90,9 +92,10 @@ std::vector TouchEventBuilder::BuildAsVector() { return events; } -MouseEventBuilder::MouseEventBuilder() = default; +MouseEventBuilder MouseEventBuilder::New() { + return MouseEventBuilder(); +} -MouseEventBuilder::~MouseEventBuilder() = default; MouseEventBuilder& MouseEventBuilder::AddTime(zx_time_t time) { time_ = time; @@ -146,8 +149,8 @@ MouseEventBuilder& MouseEventBuilder::AddMouseDeviceInfo( return *this; } -fup::MouseEvent MouseEventBuilder::Build() { - fup::MouseEvent event; +fup_MouseEvent MouseEventBuilder::Build() { + fup_MouseEvent event; if (time_) { event.set_timestamp(time_.value()); } @@ -164,8 +167,8 @@ fup::MouseEvent MouseEventBuilder::Build() { return event; } -std::vector MouseEventBuilder::BuildAsVector() { - std::vector events; +std::vector MouseEventBuilder::BuildAsVector() { + std::vector events; events.emplace_back(Build()); return events; } From 5eb7a41c918ed44e18ecd7e0a6097f13be3276af Mon Sep 17 00:00:00 2001 From: chaopeng Date: Tue, 12 Jul 2022 09:51:00 -0400 Subject: [PATCH 04/16] update --- shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc b/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc index a08d933240ab8..3c094a3e0b2e4 100644 --- a/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc +++ b/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc @@ -14,7 +14,6 @@ using fup_TouchPointerSample = fuchsia::ui::pointer::TouchPointerSample; using fup_ViewParameters = fuchsia::ui::pointer::ViewParameters; using fup_MouseEvent = fuchsia::ui::pointer::MouseEvent; - namespace { fup_ViewParameters CreateViewParameters( From 7c924118b23215394abda30b8b08bf0bb973604d Mon Sep 17 00:00:00 2001 From: chaopeng Date: Tue, 12 Jul 2022 09:51:32 -0400 Subject: [PATCH 05/16] update --- shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc b/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc index 3c094a3e0b2e4..f63f5be06de05 100644 --- a/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc +++ b/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc @@ -95,7 +95,6 @@ MouseEventBuilder MouseEventBuilder::New() { return MouseEventBuilder(); } - MouseEventBuilder& MouseEventBuilder::AddTime(zx_time_t time) { time_ = time; return *this; From d3acc36639b35d30b719e3d9ff4e16f3c8668e36 Mon Sep 17 00:00:00 2001 From: chaopeng Date: Tue, 12 Jul 2022 10:21:14 -0400 Subject: [PATCH 06/16] update --- shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc | 5 ++--- .../platform/fuchsia/flutter/tests/pointer_event_utility.cc | 5 +++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc index b76ab35a5c3cf..7a58c7f04e00f 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc @@ -39,7 +39,6 @@ constexpr fup_TouchIxnId kIxnOne = {.device_id = 1u, .interaction_id = 2u}; constexpr uint32_t kMouseDeviceId = 123; -constexpr std::array kNoScrollDelta = {0, 0}; constexpr std::array kNoScrollInPhysicalPixelDelta = {0, 0}; const bool kNotPrecisionScroll = false; const bool kPrecisionScroll = true; @@ -802,7 +801,7 @@ TEST_F(PointerDelegateTest, MouseWheel_TouchpadPixelBased) { .AddTime(1111789u) .AddViewParameters(kRect, kRect, kIdentity) .AddSample(kMouseDeviceId, {10.f, 10.f}, {}, {0, 1}, {0, 120}, - kNotPrecisionScroll) + kPrecisionScroll) .AddMouseDeviceInfo(kMouseDeviceId, {0, 1, 2}) .BuildAsVector(); mouse_source_->ScheduleCallback(std::move(events)); @@ -825,7 +824,7 @@ TEST_F(PointerDelegateTest, MouseWheel_TouchpadPixelBased) { .AddTime(1111789u) .AddViewParameters(kRect, kRect, kIdentity) .AddSample(kMouseDeviceId, {10.f, 10.f}, {}, {1, 0}, {120, 0}, - kNotPrecisionScroll) + kPrecisionScroll) .AddMouseDeviceInfo(kMouseDeviceId, {0, 1, 2}) .BuildAsVector(); mouse_source_->ScheduleCallback(std::move(events)); diff --git a/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc b/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc index f63f5be06de05..7af6dcd1b272d 100644 --- a/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc +++ b/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc @@ -13,6 +13,7 @@ using fup_TouchIxnResult = fuchsia::ui::pointer::TouchInteractionResult; using fup_TouchPointerSample = fuchsia::ui::pointer::TouchPointerSample; using fup_ViewParameters = fuchsia::ui::pointer::ViewParameters; using fup_MouseEvent = fuchsia::ui::pointer::MouseEvent; +using fup_MousePointerSample = fuchsia::ui::pointer::MousePointerSample; namespace { @@ -107,7 +108,7 @@ MouseEventBuilder& MouseEventBuilder::AddSample( std::array scroll, std::array scroll_in_physical_pixel, bool is_precision_scroll) { - sample_ = absl::make_optional(); + sample_ = std::make_optional(); sample_->set_device_id(id); if (!pressed_buttons.empty()) { sample_->set_pressed_buttons(pressed_buttons); @@ -141,7 +142,7 @@ MouseEventBuilder& MouseEventBuilder::AddViewParameters( MouseEventBuilder& MouseEventBuilder::AddMouseDeviceInfo( uint32_t id, std::vector buttons) { - device_info_ = absl::make_optional(); + device_info_ = std::make_optional(); device_info_->set_id(id); device_info_->set_buttons(buttons); return *this; From 06d5f50661269fafc409dbbee0b09db176f617d8 Mon Sep 17 00:00:00 2001 From: chaopeng Date: Tue, 12 Jul 2022 10:38:13 -0400 Subject: [PATCH 07/16] update --- shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc b/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc index 7af6dcd1b272d..a1e3023113089 100644 --- a/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc +++ b/shell/platform/fuchsia/flutter/tests/pointer_event_utility.cc @@ -14,6 +14,7 @@ using fup_TouchPointerSample = fuchsia::ui::pointer::TouchPointerSample; using fup_ViewParameters = fuchsia::ui::pointer::ViewParameters; using fup_MouseEvent = fuchsia::ui::pointer::MouseEvent; using fup_MousePointerSample = fuchsia::ui::pointer::MousePointerSample; +using fup_MouseDeviceInfo = fuchsia::ui::pointer::MouseDeviceInfo; namespace { @@ -142,7 +143,7 @@ MouseEventBuilder& MouseEventBuilder::AddViewParameters( MouseEventBuilder& MouseEventBuilder::AddMouseDeviceInfo( uint32_t id, std::vector buttons) { - device_info_ = std::make_optional(); + device_info_ = std::make_optional(); device_info_->set_id(id); device_info_->set_buttons(buttons); return *this; From 1ea79ef6c3aa6d26d22abe3aca9466f3637d43ef Mon Sep 17 00:00:00 2001 From: chaopeng Date: Tue, 12 Jul 2022 16:38:37 -0400 Subject: [PATCH 08/16] update --- shell/platform/fuchsia/flutter/pointer_delegate.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/fuchsia/flutter/pointer_delegate.cc b/shell/platform/fuchsia/flutter/pointer_delegate.cc index 3eded10cf1dc9..ec47ee685248b 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate.cc @@ -306,7 +306,7 @@ flutter::PointerData CreateMouseDraft(const fup_MouseEvent& event, is_scroll = true; } - if (sample.scroll_h_physical_pixel()) { + if (sample.has_scroll_h_physical_pixel()) { dx = sample.scroll_h_physical_pixel(); is_scroll = true; } else if (sample.has_scroll_h()) { From 5ec8e0197ec117d9b010ae2208eaf5da0f7e477e Mon Sep 17 00:00:00 2001 From: chaopeng Date: Tue, 12 Jul 2022 17:12:45 -0400 Subject: [PATCH 09/16] update --- shell/platform/fuchsia/flutter/pointer_delegate.cc | 6 +++--- .../platform/fuchsia/flutter/pointer_delegate_unittests.cc | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/shell/platform/fuchsia/flutter/pointer_delegate.cc b/shell/platform/fuchsia/flutter/pointer_delegate.cc index ec47ee685248b..4c1b383928da5 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate.cc @@ -292,8 +292,8 @@ flutter::PointerData CreateMouseDraft(const fup_MouseEvent& event, // after the transistion done. const int kScrollOffsetMultiplier = 20; - double dy; - double dx; + double dy = 0; + double dx = 0; bool is_scroll; if (sample.has_scroll_v_physical_pixel()) { @@ -315,6 +315,7 @@ flutter::PointerData CreateMouseDraft(const fup_MouseEvent& event, } if (is_scroll) { + ptr.signal_kind = flutter::PointerData::SignalKind::kScroll; bool is_trackpad_scroll = sample.has_is_precision_scroll() && sample.is_precision_scroll(); @@ -323,7 +324,6 @@ flutter::PointerData CreateMouseDraft(const fup_MouseEvent& event, ptr.pan_y = dy; ptr.pan_x = dx; } else { - ptr.signal_kind = flutter::PointerData::SignalKind::kScroll; ptr.scroll_delta_y = dy; ptr.scroll_delta_x = dx; } diff --git a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc index 7a58c7f04e00f..fe3c339c41a6d 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc @@ -709,7 +709,7 @@ TEST_F(PointerDelegateTest, MouseWheel_TickBased) { EXPECT_EQ(pointers.value()[0].kind, flutter::PointerData::DeviceKind::kMouse); EXPECT_EQ(pointers.value()[0].buttons, 0); EXPECT_EQ(pointers.value()[0].scroll_delta_x, 0); - EXPECT_EQ(pointers.value()[0].scroll_delta_y, 20); + EXPECT_EQ(pointers.value()[0].scroll_delta_y, -20); pointers = {}; // receive a horizontal scroll @@ -762,7 +762,7 @@ TEST_F(PointerDelegateTest, MouseWheel_PixelBased) { EXPECT_EQ(pointers.value()[0].kind, flutter::PointerData::DeviceKind::kMouse); EXPECT_EQ(pointers.value()[0].buttons, 0); EXPECT_EQ(pointers.value()[0].scroll_delta_x, 0); - EXPECT_EQ(pointers.value()[0].scroll_delta_y, 120); + EXPECT_EQ(pointers.value()[0].scroll_delta_y, -120); pointers = {}; // receive a horizontal scroll @@ -816,7 +816,7 @@ TEST_F(PointerDelegateTest, MouseWheel_TouchpadPixelBased) { flutter::PointerData::DeviceKind::kTrackpad); EXPECT_EQ(pointers.value()[0].buttons, 0); EXPECT_EQ(pointers.value()[0].scroll_delta_x, 0); - EXPECT_EQ(pointers.value()[0].scroll_delta_y, 120); + EXPECT_EQ(pointers.value()[0].scroll_delta_y, -120); pointers = {}; // receive a horizontal scroll From c48a046a54698dc2e5f30abdabd420c0a075b028 Mon Sep 17 00:00:00 2001 From: chaopeng Date: Wed, 13 Jul 2022 00:10:25 -0400 Subject: [PATCH 10/16] update --- .../fuchsia/flutter/pointer_delegate_unittests.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc index fe3c339c41a6d..17fac9e15cac5 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc @@ -815,8 +815,8 @@ TEST_F(PointerDelegateTest, MouseWheel_TouchpadPixelBased) { EXPECT_EQ(pointers.value()[0].kind, flutter::PointerData::DeviceKind::kTrackpad); EXPECT_EQ(pointers.value()[0].buttons, 0); - EXPECT_EQ(pointers.value()[0].scroll_delta_x, 0); - EXPECT_EQ(pointers.value()[0].scroll_delta_y, -120); + EXPECT_EQ(pointers.value()[0].pan_x, 0); + EXPECT_EQ(pointers.value()[0].pan_y, -120); pointers = {}; // receive a horizontal scroll @@ -838,8 +838,8 @@ TEST_F(PointerDelegateTest, MouseWheel_TouchpadPixelBased) { EXPECT_EQ(pointers.value()[0].kind, flutter::PointerData::DeviceKind::kTrackpad); EXPECT_EQ(pointers.value()[0].buttons, 0); - EXPECT_EQ(pointers.value()[0].scroll_delta_x, 120); - EXPECT_EQ(pointers.value()[0].scroll_delta_y, 0); + EXPECT_EQ(pointers.value()[0].pan_x, 120); + EXPECT_EQ(pointers.value()[0].pan_y, 0); pointers = {}; } From 8fa6bc11d14e03e43914201941e4a3194492f8dd Mon Sep 17 00:00:00 2001 From: chaopeng Date: Wed, 13 Jul 2022 09:48:30 -0400 Subject: [PATCH 11/16] use scroll_delta instead of pan --- shell/platform/fuchsia/flutter/pointer_delegate.cc | 8 +++----- .../fuchsia/flutter/pointer_delegate_unittests.cc | 8 ++++---- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/shell/platform/fuchsia/flutter/pointer_delegate.cc b/shell/platform/fuchsia/flutter/pointer_delegate.cc index 4c1b383928da5..8fd139e171294 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate.cc @@ -321,12 +321,10 @@ flutter::PointerData CreateMouseDraft(const fup_MouseEvent& event, if (is_trackpad_scroll) { ptr.kind = flutter::PointerData::DeviceKind::kTrackpad; - ptr.pan_y = dy; - ptr.pan_x = dx; - } else { - ptr.scroll_delta_y = dy; - ptr.scroll_delta_x = dx; } + + ptr.scroll_delta_y = dy; + ptr.scroll_delta_x = dx; } return ptr; diff --git a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc index 17fac9e15cac5..fe3c339c41a6d 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc @@ -815,8 +815,8 @@ TEST_F(PointerDelegateTest, MouseWheel_TouchpadPixelBased) { EXPECT_EQ(pointers.value()[0].kind, flutter::PointerData::DeviceKind::kTrackpad); EXPECT_EQ(pointers.value()[0].buttons, 0); - EXPECT_EQ(pointers.value()[0].pan_x, 0); - EXPECT_EQ(pointers.value()[0].pan_y, -120); + EXPECT_EQ(pointers.value()[0].scroll_delta_x, 0); + EXPECT_EQ(pointers.value()[0].scroll_delta_y, -120); pointers = {}; // receive a horizontal scroll @@ -838,8 +838,8 @@ TEST_F(PointerDelegateTest, MouseWheel_TouchpadPixelBased) { EXPECT_EQ(pointers.value()[0].kind, flutter::PointerData::DeviceKind::kTrackpad); EXPECT_EQ(pointers.value()[0].buttons, 0); - EXPECT_EQ(pointers.value()[0].pan_x, 120); - EXPECT_EQ(pointers.value()[0].pan_y, 0); + EXPECT_EQ(pointers.value()[0].scroll_delta_x, 120); + EXPECT_EQ(pointers.value()[0].scroll_delta_y, 0); pointers = {}; } From 4872aa0050c8cccdf62cdd61360d7446556d57d8 Mon Sep 17 00:00:00 2001 From: chaopeng Date: Wed, 13 Jul 2022 20:12:54 -0400 Subject: [PATCH 12/16] use kMouse --- shell/platform/fuchsia/flutter/pointer_delegate.cc | 7 ------- .../platform/fuchsia/flutter/pointer_delegate_unittests.cc | 4 ++-- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/shell/platform/fuchsia/flutter/pointer_delegate.cc b/shell/platform/fuchsia/flutter/pointer_delegate.cc index 8fd139e171294..3452000ebdf4b 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate.cc @@ -316,13 +316,6 @@ flutter::PointerData CreateMouseDraft(const fup_MouseEvent& event, if (is_scroll) { ptr.signal_kind = flutter::PointerData::SignalKind::kScroll; - bool is_trackpad_scroll = - sample.has_is_precision_scroll() && sample.is_precision_scroll(); - - if (is_trackpad_scroll) { - ptr.kind = flutter::PointerData::DeviceKind::kTrackpad; - } - ptr.scroll_delta_y = dy; ptr.scroll_delta_x = dx; } diff --git a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc index fe3c339c41a6d..ab88b358cdc9b 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc @@ -813,7 +813,7 @@ TEST_F(PointerDelegateTest, MouseWheel_TouchpadPixelBased) { EXPECT_EQ(pointers.value()[0].signal_kind, flutter::PointerData::SignalKind::kScroll); EXPECT_EQ(pointers.value()[0].kind, - flutter::PointerData::DeviceKind::kTrackpad); + flutter::PointerData::DeviceKind::kMouse); EXPECT_EQ(pointers.value()[0].buttons, 0); EXPECT_EQ(pointers.value()[0].scroll_delta_x, 0); EXPECT_EQ(pointers.value()[0].scroll_delta_y, -120); @@ -836,7 +836,7 @@ TEST_F(PointerDelegateTest, MouseWheel_TouchpadPixelBased) { EXPECT_EQ(pointers.value()[0].signal_kind, flutter::PointerData::SignalKind::kScroll); EXPECT_EQ(pointers.value()[0].kind, - flutter::PointerData::DeviceKind::kTrackpad); + flutter::PointerData::DeviceKind::kMouse); EXPECT_EQ(pointers.value()[0].buttons, 0); EXPECT_EQ(pointers.value()[0].scroll_delta_x, 120); EXPECT_EQ(pointers.value()[0].scroll_delta_y, 0); From e84f48cb1b9d0a62db4f94ef14581fb7711ddbd6 Mon Sep 17 00:00:00 2001 From: chaopeng Date: Wed, 13 Jul 2022 20:19:16 -0400 Subject: [PATCH 13/16] use kMouse --- .../platform/fuchsia/flutter/pointer_delegate_unittests.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc index ab88b358cdc9b..112192bca3d3f 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate_unittests.cc @@ -812,8 +812,7 @@ TEST_F(PointerDelegateTest, MouseWheel_TouchpadPixelBased) { EXPECT_EQ(pointers.value()[0].change, flutter::PointerData::Change::kHover); EXPECT_EQ(pointers.value()[0].signal_kind, flutter::PointerData::SignalKind::kScroll); - EXPECT_EQ(pointers.value()[0].kind, - flutter::PointerData::DeviceKind::kMouse); + EXPECT_EQ(pointers.value()[0].kind, flutter::PointerData::DeviceKind::kMouse); EXPECT_EQ(pointers.value()[0].buttons, 0); EXPECT_EQ(pointers.value()[0].scroll_delta_x, 0); EXPECT_EQ(pointers.value()[0].scroll_delta_y, -120); @@ -835,8 +834,7 @@ TEST_F(PointerDelegateTest, MouseWheel_TouchpadPixelBased) { EXPECT_EQ(pointers.value()[0].change, flutter::PointerData::Change::kHover); EXPECT_EQ(pointers.value()[0].signal_kind, flutter::PointerData::SignalKind::kScroll); - EXPECT_EQ(pointers.value()[0].kind, - flutter::PointerData::DeviceKind::kMouse); + EXPECT_EQ(pointers.value()[0].kind, flutter::PointerData::DeviceKind::kMouse); EXPECT_EQ(pointers.value()[0].buttons, 0); EXPECT_EQ(pointers.value()[0].scroll_delta_x, 120); EXPECT_EQ(pointers.value()[0].scroll_delta_y, 0); From a963af261cf40dda596e605df555ea1b1d1255e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A2=E9=B9=8F?= Date: Fri, 15 Jul 2022 09:01:18 -0400 Subject: [PATCH 14/16] Update shell/platform/fuchsia/flutter/pointer_delegate.cc Co-authored-by: Tong Mu --- shell/platform/fuchsia/flutter/pointer_delegate.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/shell/platform/fuchsia/flutter/pointer_delegate.cc b/shell/platform/fuchsia/flutter/pointer_delegate.cc index 3452000ebdf4b..fb7567e32441d 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate.cc @@ -287,9 +287,10 @@ flutter::PointerData CreateMouseDraft(const fup_MouseEvent& event, ptr.buttons = flutter_buttons; } - // TODO(fxbug.dev/103443): Fuchsia previously only provides scroll data in - // "ticks", not physical pixels. Keep the tick bases scrolling and remove - // after the transistion done. + // Fuchsia previously only provided scroll data in "ticks", not physical pixels. + // On legacy platforms, since Flutter expects scroll data in physical pixels, + // to compensate for lack of guidance, we make up a "reasonable amount". + // TODO(fxbug.dev/103443): Remove the tick based scrolling after the transition. const int kScrollOffsetMultiplier = 20; double dy = 0; From 24e484c1b61a790b9e426c89c2bb550609e6f5ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=A2=E9=B9=8F?= Date: Fri, 15 Jul 2022 09:01:28 -0400 Subject: [PATCH 15/16] Update shell/platform/fuchsia/flutter/pointer_delegate.cc Co-authored-by: Callum Moffat --- shell/platform/fuchsia/flutter/pointer_delegate.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/fuchsia/flutter/pointer_delegate.cc b/shell/platform/fuchsia/flutter/pointer_delegate.cc index fb7567e32441d..18ecee41d689f 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate.cc @@ -295,7 +295,7 @@ flutter::PointerData CreateMouseDraft(const fup_MouseEvent& event, double dy = 0; double dx = 0; - bool is_scroll; + bool is_scroll = false; if (sample.has_scroll_v_physical_pixel()) { dy = -sample.scroll_v_physical_pixel(); From c6d5e9d2f783007ca45dd06230bc7adce08c6ba8 Mon Sep 17 00:00:00 2001 From: chaopeng Date: Fri, 15 Jul 2022 10:09:54 -0400 Subject: [PATCH 16/16] format --- shell/platform/fuchsia/flutter/pointer_delegate.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/shell/platform/fuchsia/flutter/pointer_delegate.cc b/shell/platform/fuchsia/flutter/pointer_delegate.cc index 18ecee41d689f..71cdb63d73eb1 100644 --- a/shell/platform/fuchsia/flutter/pointer_delegate.cc +++ b/shell/platform/fuchsia/flutter/pointer_delegate.cc @@ -287,10 +287,12 @@ flutter::PointerData CreateMouseDraft(const fup_MouseEvent& event, ptr.buttons = flutter_buttons; } - // Fuchsia previously only provided scroll data in "ticks", not physical pixels. - // On legacy platforms, since Flutter expects scroll data in physical pixels, - // to compensate for lack of guidance, we make up a "reasonable amount". - // TODO(fxbug.dev/103443): Remove the tick based scrolling after the transition. + // Fuchsia previously only provided scroll data in "ticks", not physical + // pixels. On legacy platforms, since Flutter expects scroll data in physical + // pixels, to compensate for lack of guidance, we make up a "reasonable + // amount". + // TODO(fxbug.dev/103443): Remove the tick based scrolling after the + // transition. const int kScrollOffsetMultiplier = 20; double dy = 0;