@@ -86,6 +86,51 @@ void CreateSimulatedMousePointerData(PointerData& data, // NOLINT
8686 data.scroll_delta_y = scroll_delta_y;
8787}
8888
89+ void CreateSimulatedTrackpadGestureData (PointerData& data, // NOLINT
90+ PointerData::Change change,
91+ int64_t device,
92+ double dx,
93+ double dy,
94+ double pan_x,
95+ double pan_y,
96+ double scale,
97+ double angle) {
98+ data.time_stamp = 0 ;
99+ data.change = change;
100+ data.kind = PointerData::DeviceKind::kMouse ;
101+ data.signal_kind = PointerData::SignalKind::kNone ;
102+ data.device = device;
103+ data.pointer_identifier = 0 ;
104+ data.physical_x = dx;
105+ data.physical_y = dy;
106+ data.physical_delta_x = 0.0 ;
107+ data.physical_delta_y = 0.0 ;
108+ data.buttons = 0 ;
109+ data.obscured = 0 ;
110+ data.synthesized = 0 ;
111+ data.pressure = 0.0 ;
112+ data.pressure_min = 0.0 ;
113+ data.pressure_max = 0.0 ;
114+ data.distance = 0.0 ;
115+ data.distance_max = 0.0 ;
116+ data.size = 0.0 ;
117+ data.radius_major = 0.0 ;
118+ data.radius_minor = 0.0 ;
119+ data.radius_min = 0.0 ;
120+ data.radius_max = 0.0 ;
121+ data.orientation = 0.0 ;
122+ data.tilt = 0.0 ;
123+ data.platformData = 0 ;
124+ data.scroll_delta_x = 0.0 ;
125+ data.scroll_delta_y = 0.0 ;
126+ data.pan_x = pan_x;
127+ data.pan_y = pan_y;
128+ data.pan_delta_x = 0.0 ;
129+ data.pan_delta_y = 0.0 ;
130+ data.scale = scale;
131+ data.angle = angle;
132+ }
133+
89134void UnpackPointerPacket (std::vector<PointerData>& output, // NOLINT
90135 std::unique_ptr<PointerDataPacket> packet) {
91136 size_t kBytesPerPointerData = kPointerDataFieldCount * kBytesPerField ;
@@ -599,5 +644,56 @@ TEST(PointerDataPacketConverterTest, CanConvetScroll) {
599644 ASSERT_EQ (result[6 ].scroll_delta_y , 0.0 );
600645}
601646
647+ TEST (PointerDataPacketConverterTest, CanConvertTrackpadGesture) {
648+ PointerDataPacketConverter converter;
649+ auto packet = std::make_unique<PointerDataPacket>(3 );
650+ PointerData data;
651+ CreateSimulatedTrackpadGestureData (data, PointerData::Change::kFlowStart , 0 ,
652+ 0.0 , 0.0 , 0.0 , 0.0 , 1.0 , 0.0 );
653+ packet->SetPointerData (0 , data);
654+ CreateSimulatedTrackpadGestureData (data, PointerData::Change::kFlowUpdate , 0 ,
655+ 0.0 , 0.0 , 3.0 , 4.0 , 1.0 , 0.0 );
656+ packet->SetPointerData (1 , data);
657+ CreateSimulatedTrackpadGestureData (data, PointerData::Change::kFlowEnd , 0 ,
658+ 0.0 , 0.0 , 0.0 , 0.0 , 1.0 , 0.0 );
659+ packet->SetPointerData (2 , data);
660+ auto converted_packet = converter.Convert (std::move (packet));
661+
662+ std::vector<PointerData> result;
663+ UnpackPointerPacket (result, std::move (converted_packet));
664+
665+ ASSERT_EQ (result.size (), (size_t )4 );
666+ ASSERT_EQ (result[0 ].change , PointerData::Change::kAdd );
667+ ASSERT_EQ (result[0 ].device , 0 );
668+ ASSERT_EQ (result[0 ].synthesized , 1 );
669+
670+ ASSERT_EQ (result[1 ].change , PointerData::Change::kFlowStart );
671+ ASSERT_EQ (result[1 ].signal_kind , PointerData::SignalKind::kNone );
672+ ASSERT_EQ (result[1 ].device , 0 );
673+ ASSERT_EQ (result[1 ].physical_x , 0.0 );
674+ ASSERT_EQ (result[1 ].physical_y , 0.0 );
675+ ASSERT_EQ (result[1 ].synthesized , 0 );
676+
677+ ASSERT_EQ (result[2 ].change , PointerData::Change::kFlowUpdate );
678+ ASSERT_EQ (result[2 ].signal_kind , PointerData::SignalKind::kNone );
679+ ASSERT_EQ (result[2 ].device , 0 );
680+ ASSERT_EQ (result[2 ].physical_x , 0.0 );
681+ ASSERT_EQ (result[2 ].physical_y , 0.0 );
682+ ASSERT_EQ (result[2 ].pan_x , 3.0 );
683+ ASSERT_EQ (result[2 ].pan_y , 4.0 );
684+ ASSERT_EQ (result[2 ].pan_delta_x , 3.0 );
685+ ASSERT_EQ (result[2 ].pan_delta_y , 4.0 );
686+ ASSERT_EQ (result[2 ].scale , 1.0 );
687+ ASSERT_EQ (result[2 ].angle , 0.0 );
688+ ASSERT_EQ (result[2 ].synthesized , 0 );
689+
690+ ASSERT_EQ (result[3 ].change , PointerData::Change::kFlowEnd );
691+ ASSERT_EQ (result[3 ].signal_kind , PointerData::SignalKind::kNone );
692+ ASSERT_EQ (result[3 ].device , 0 );
693+ ASSERT_EQ (result[3 ].physical_x , 0.0 );
694+ ASSERT_EQ (result[3 ].physical_y , 0.0 );
695+ ASSERT_EQ (result[3 ].synthesized , 0 );
696+ }
697+
602698} // namespace testing
603699} // namespace flutter
0 commit comments