Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit cecf5aa

Browse files
authored
Move PointerDataPacketConverter from PlatformView to RuntimeController (#51952)
This is a refactor that moves the `PointerDataPacketConverter` from `PlatformView` to `RuntimeController`. This change is made for the following reasons: - Currently, the pointer data conversion contains no platform specific logic (because the current converter's only responsibility is to make the event sequence conform Flutter's protocol). Therefore these logics should reside in a platform-independent place. - The converter typically converts one event to many. It's better to have this conversion later than earlier. - It removes a member from `PlatformView`, making it closer to a pure virtual class. The reason to choose `RuntimeController` as the destination is because `RuntimeController` manages a map for views, which is required for the converter to implement a later patch #51925. [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
1 parent 8af10eb commit cecf5aa

File tree

8 files changed

+24
-24
lines changed

8 files changed

+24
-24
lines changed

lib/ui/window/pointer_data_packet_converter.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ PointerDataPacketConverter::PointerDataPacketConverter() {}
1616
PointerDataPacketConverter::~PointerDataPacketConverter() = default;
1717

1818
std::unique_ptr<PointerDataPacket> PointerDataPacketConverter::Convert(
19-
std::unique_ptr<PointerDataPacket> packet) {
19+
const PointerDataPacket& packet) {
2020
std::vector<PointerData> converted_pointers;
2121
// Converts each pointer data in the buffer and stores it in the
2222
// converted_pointers.
23-
for (size_t i = 0; i < packet->GetLength(); i++) {
24-
PointerData pointer_data = packet->GetPointerData(i);
23+
for (size_t i = 0; i < packet.GetLength(); i++) {
24+
PointerData pointer_data = packet.GetPointerData(i);
2525
ConvertPointerData(pointer_data, converted_pointers);
2626
}
2727

lib/ui/window/pointer_data_packet_converter.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,10 @@ class PointerDataPacketConverter {
8989
/// embedding.
9090
///
9191
/// @return A full converted packet with all the required information
92-
/// filled.
93-
/// It may contain synthetic pointer data as the result of
92+
/// filled. It may contain synthetic pointer data as the result of
9493
/// converter's attempt to correct illegal pointer transitions.
9594
///
96-
std::unique_ptr<PointerDataPacket> Convert(
97-
std::unique_ptr<PointerDataPacket> packet);
95+
std::unique_ptr<PointerDataPacket> Convert(const PointerDataPacket& packet);
9896

9997
private:
10098
std::map<int64_t, PointerState> states_;

lib/ui/window/pointer_data_packet_converter_unittests.cc

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ TEST(PointerDataPacketConverterTest, CanConvertPointerDataPacket) {
160160
CreateSimulatedPointerData(data, PointerData::Change::kRemove, 0, 3.0, 4.0,
161161
0);
162162
packet->SetPointerData(5, data);
163-
auto converted_packet = converter.Convert(std::move(packet));
163+
auto converted_packet = converter.Convert(*packet);
164164

165165
std::vector<PointerData> result;
166166
UnpackPointerPacket(result, std::move(converted_packet));
@@ -205,7 +205,7 @@ TEST(PointerDataPacketConverterTest, CanSynthesizeDownAndUp) {
205205
CreateSimulatedPointerData(data, PointerData::Change::kRemove, 0, 3.0, 4.0,
206206
0);
207207
packet->SetPointerData(3, data);
208-
auto converted_packet = converter.Convert(std::move(packet));
208+
auto converted_packet = converter.Convert(*packet);
209209

210210
std::vector<PointerData> result;
211211
UnpackPointerPacket(result, std::move(converted_packet));
@@ -262,7 +262,7 @@ TEST(PointerDataPacketConverterTest, CanUpdatePointerIdentifier) {
262262
CreateSimulatedPointerData(data, PointerData::Change::kRemove, 0, 3.0, 0.0,
263263
0);
264264
packet->SetPointerData(6, data);
265-
auto converted_packet = converter.Convert(std::move(packet));
265+
auto converted_packet = converter.Convert(*packet);
266266

267267
std::vector<PointerData> result;
268268
UnpackPointerPacket(result, std::move(converted_packet));
@@ -312,7 +312,7 @@ TEST(PointerDataPacketConverterTest, AlwaysForwardMoveEvent) {
312312
CreateSimulatedPointerData(data, PointerData::Change::kUp, 0, 0.0, 0.0, 0);
313313
packet->SetPointerData(3, data);
314314

315-
auto converted_packet = converter.Convert(std::move(packet));
315+
auto converted_packet = converter.Convert(*packet);
316316

317317
std::vector<PointerData> result;
318318
UnpackPointerPacket(result, std::move(converted_packet));
@@ -365,7 +365,7 @@ TEST(PointerDataPacketConverterTest, CanWorkWithDifferentDevices) {
365365
CreateSimulatedPointerData(data, PointerData::Change::kRemove, 1, 0.0, 4.0,
366366
0);
367367
packet->SetPointerData(11, data);
368-
auto converted_packet = converter.Convert(std::move(packet));
368+
auto converted_packet = converter.Convert(*packet);
369369

370370
std::vector<PointerData> result;
371371
UnpackPointerPacket(result, std::move(converted_packet));
@@ -441,7 +441,7 @@ TEST(PointerDataPacketConverterTest, CanSynthesizeAdd) {
441441
packet->SetPointerData(0, data);
442442
CreateSimulatedPointerData(data, PointerData::Change::kUp, 0, 0.0, 0.0, 0);
443443
packet->SetPointerData(1, data);
444-
auto converted_packet = converter.Convert(std::move(packet));
444+
auto converted_packet = converter.Convert(*packet);
445445

446446
std::vector<PointerData> result;
447447
UnpackPointerPacket(result, std::move(converted_packet));
@@ -485,14 +485,14 @@ TEST(PointerDataPacketConverterTest, CanHandleThreeFingerGesture) {
485485
auto packet = std::make_unique<PointerDataPacket>(1);
486486
CreateSimulatedPointerData(data, PointerData::Change::kDown, 0, 0.0, 0.0, 1);
487487
packet->SetPointerData(0, data);
488-
auto converted_packet = converter.Convert(std::move(packet));
488+
auto converted_packet = converter.Convert(*packet);
489489
UnpackPointerPacket(result, std::move(converted_packet));
490490
// Second finger down.
491491
packet = std::make_unique<PointerDataPacket>(1);
492492
CreateSimulatedPointerData(data, PointerData::Change::kDown, 1, 33.0, 44.0,
493493
1);
494494
packet->SetPointerData(0, data);
495-
converted_packet = converter.Convert(std::move(packet));
495+
converted_packet = converter.Convert(*packet);
496496
UnpackPointerPacket(result, std::move(converted_packet));
497497
// Triggers three cancels.
498498
packet = std::make_unique<PointerDataPacket>(3);
@@ -505,7 +505,7 @@ TEST(PointerDataPacketConverterTest, CanHandleThreeFingerGesture) {
505505
CreateSimulatedPointerData(data, PointerData::Change::kCancel, 2, 40.0, 50.0,
506506
0);
507507
packet->SetPointerData(2, data);
508-
converted_packet = converter.Convert(std::move(packet));
508+
converted_packet = converter.Convert(*packet);
509509
UnpackPointerPacket(result, std::move(converted_packet));
510510

511511
ASSERT_EQ(result.size(), (size_t)6);
@@ -582,7 +582,7 @@ TEST(PointerDataPacketConverterTest, CanConvertPointerSignals) {
582582
CreateSimulatedMousePointerData(data, PointerData::Change::kHover, kind, 2,
583583
10.0, 20.0, 30.0, 40.0, 0);
584584
packet->SetPointerData(5, data);
585-
auto converted_packet = converter.Convert(std::move(packet));
585+
auto converted_packet = converter.Convert(*packet);
586586

587587
std::vector<PointerData> result;
588588
UnpackPointerPacket(result, std::move(converted_packet));
@@ -678,7 +678,7 @@ TEST(PointerDataPacketConverterTest, CanConvertTrackpadGesture) {
678678
CreateSimulatedTrackpadGestureData(data, PointerData::Change::kPanZoomEnd, 0,
679679
0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
680680
packet->SetPointerData(2, data);
681-
auto converted_packet = converter.Convert(std::move(packet));
681+
auto converted_packet = converter.Convert(*packet);
682682

683683
std::vector<PointerData> result;
684684
UnpackPointerPacket(result, std::move(converted_packet));
@@ -726,7 +726,7 @@ TEST(PointerDataPacketConverterTest, CanConvertViewId) {
726726
CreateSimulatedPointerData(data, PointerData::Change::kHover, 0, 1.0, 0.0, 0);
727727
data.view_id = 200;
728728
packet->SetPointerData(1, data);
729-
auto converted_packet = converter.Convert(std::move(packet));
729+
auto converted_packet = converter.Convert(*packet);
730730

731731
std::vector<PointerData> result;
732732
UnpackPointerPacket(result, std::move(converted_packet));

runtime/runtime_controller.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,9 @@ bool RuntimeController::DispatchPointerDataPacket(
358358
const PointerDataPacket& packet) {
359359
if (auto* platform_configuration = GetPlatformConfigurationIfAvailable()) {
360360
TRACE_EVENT0("flutter", "RuntimeController::DispatchPointerDataPacket");
361-
platform_configuration->DispatchPointerDataPacket(packet);
361+
std::unique_ptr<PointerDataPacket> converted_packet =
362+
pointer_data_packet_converter_.Convert(packet);
363+
platform_configuration->DispatchPointerDataPacket(*converted_packet);
362364
return true;
363365
}
364366

runtime/runtime_controller.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "flutter/lib/ui/volatile_path_tracker.h"
2121
#include "flutter/lib/ui/window/platform_configuration.h"
2222
#include "flutter/lib/ui/window/pointer_data_packet.h"
23+
#include "flutter/lib/ui/window/pointer_data_packet_converter.h"
2324
#include "flutter/runtime/dart_vm.h"
2425
#include "flutter/runtime/platform_data.h"
2526
#include "flutter/runtime/platform_isolate_manager.h"
@@ -687,6 +688,7 @@ class RuntimeController : public PlatformConfigurationClient {
687688
const fml::closure isolate_shutdown_callback_;
688689
std::shared_ptr<const fml::Mapping> persistent_isolate_data_;
689690
UIDartState::Context context_;
691+
PointerDataPacketConverter pointer_data_packet_converter_;
690692
std::shared_ptr<PlatformIsolateManager> platform_isolate_manager_ =
691693
std::shared_ptr<PlatformIsolateManager>(new PlatformIsolateManager());
692694
bool has_flushed_runtime_state_ = false;

shell/common/input_events_unittests.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ static void TestSimulatedInputEvents(
146146

147147
// Make sure that all events have been consumed so
148148
// https://github.com/flutter/flutter/issues/40863 won't happen again.
149+
ASSERT_GT(events_consumed_at_frame.size(), 0u);
149150
ASSERT_EQ(events_consumed_at_frame.back(), num_events);
150151
}
151152

shell/common/platform_view.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ void PlatformView::DispatchPlatformMessage(
3232

3333
void PlatformView::DispatchPointerDataPacket(
3434
std::unique_ptr<PointerDataPacket> packet) {
35-
delegate_.OnPlatformViewDispatchPointerDataPacket(
36-
pointer_data_packet_converter_.Convert(std::move(packet)));
35+
delegate_.OnPlatformViewDispatchPointerDataPacket(std::move(packet));
3736
}
3837

3938
void PlatformView::DispatchSemanticsAction(int32_t node_id,

shell/common/platform_view.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
#include "flutter/lib/ui/window/key_data_packet.h"
2121
#include "flutter/lib/ui/window/platform_message.h"
2222
#include "flutter/lib/ui/window/pointer_data_packet.h"
23-
#include "flutter/lib/ui/window/pointer_data_packet_converter.h"
2423
#include "flutter/lib/ui/window/viewport_metrics.h"
2524
#include "flutter/shell/common/platform_message_handler.h"
2625
#include "flutter/shell/common/pointer_data_dispatcher.h"
@@ -961,7 +960,6 @@ class PlatformView {
961960

962961
PlatformView::Delegate& delegate_;
963962
const TaskRunners task_runners_;
964-
PointerDataPacketConverter pointer_data_packet_converter_;
965963
fml::WeakPtrFactory<PlatformView> weak_factory_; // Must be the last member.
966964

967965
private:

0 commit comments

Comments
 (0)