| Flutter Windows Embedder |

direct_manipulation_unittests.cc
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "flutter/shell/platform/windows/direct_manipulation.h"
6
7 #include "flutter/fml/macros.h"
8 #include "flutter/shell/platform/windows/testing/mock_window_binding_handler_delegate.h"
9 #include "gtest/gtest.h"
10
11 using testing::_;
12
13 namespace flutter {
14 namespace testing {
15
16 class MockIDirectManipulationViewport : public IDirectManipulationViewport {
17 public:
18 MockIDirectManipulationViewport() {}
19
20 MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, AddRef, ULONG());
21 MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, Release, ULONG());
22 MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE,
23 QueryInterface,
24 HRESULT(REFIID, void**));
25 MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, Abandon, HRESULT());
26 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
27 ActivateConfiguration,
28 HRESULT(DIRECTMANIPULATION_CONFIGURATION));
29 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
30 AddConfiguration,
31 HRESULT(DIRECTMANIPULATION_CONFIGURATION));
32 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
33 AddContent,
34 HRESULT(IDirectManipulationContent*));
35 MOCK_METHOD3_WITH_CALLTYPE(STDMETHODCALLTYPE,
36 AddEventHandler,
37 HRESULT(HWND,
38 IDirectManipulationViewportEventHandler*,
39 DWORD*));
40 MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, Disable, HRESULT());
41 MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, Enable, HRESULT());
42 MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE,
43 GetPrimaryContent,
44 HRESULT(REFIID, void**));
45 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
46 GetStatus,
47 HRESULT(DIRECTMANIPULATION_STATUS*));
48 MOCK_METHOD3_WITH_CALLTYPE(STDMETHODCALLTYPE,
49 GetTag,
50 HRESULT(REFIID, void**, UINT32*));
51 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
52 GetViewportRect,
53 HRESULT(RECT*));
54 MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, ReleaseAllContacts, HRESULT());
55 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
56 ReleaseContact,
57 HRESULT(UINT32));
58 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
59 RemoveConfiguration,
60 HRESULT(DIRECTMANIPULATION_CONFIGURATION));
61 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
62 RemoveContent,
63 HRESULT(IDirectManipulationContent*));
64 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
65 RemoveEventHandler,
66 HRESULT(DWORD));
67 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
68 SetChaining,
69 HRESULT(DIRECTMANIPULATION_MOTION_TYPES));
70 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, SetContact, HRESULT(UINT32));
71 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
72 SetInputMode,
73 HRESULT(DIRECTMANIPULATION_INPUT_MODE));
74 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
75 SetManualGesture,
76 HRESULT(DIRECTMANIPULATION_GESTURE_CONFIGURATION));
77 MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE,
78 SetTag,
79 HRESULT(IUnknown*, UINT32));
80 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
81 SetUpdateMode,
82 HRESULT(DIRECTMANIPULATION_INPUT_MODE));
83 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
84 SetViewportOptions,
85 HRESULT(DIRECTMANIPULATION_VIEWPORT_OPTIONS));
86 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
87 SetViewportRect,
88 HRESULT(const RECT*));
89 MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE,
90 SetViewportTransform,
91 HRESULT(const float*, DWORD));
92 MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, Stop, HRESULT());
93 MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE,
94 SyncDisplayTransform,
95 HRESULT(const float*, DWORD));
96 MOCK_METHOD5_WITH_CALLTYPE(
97 STDMETHODCALLTYPE,
98 ZoomToRect,
99 HRESULT(const float, const float, const float, const float, BOOL));
100
101 private:
102 FML_DISALLOW_COPY_AND_ASSIGN(MockIDirectManipulationViewport);
103 };
104
105 class MockIDirectManipulationContent : public IDirectManipulationContent {
106 public:
107 MockIDirectManipulationContent() {}
108
109 MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, AddRef, ULONG());
110 MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, Release, ULONG());
111 MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE,
112 QueryInterface,
113 HRESULT(REFIID, void**));
114 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, GetContentRect, HRESULT(RECT*));
115 MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE,
116 GetContentTransform,
117 HRESULT(float*, DWORD));
118 MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE,
119 GetOutputTransform,
120 HRESULT(float*, DWORD));
121 MOCK_METHOD3_WITH_CALLTYPE(STDMETHODCALLTYPE,
122 GetTag,
123 HRESULT(REFIID, void**, UINT32*));
124 MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE,
125 GetViewport,
126 HRESULT(REFIID, void**));
127 MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE,
128 SetContentRect,
129 HRESULT(const RECT*));
130 MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE,
131 SetTag,
132 HRESULT(IUnknown*, UINT32));
133 MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE,
134 SyncContentTransform,
135 HRESULT(const float*, DWORD));
136
137 private:
138 FML_DISALLOW_COPY_AND_ASSIGN(MockIDirectManipulationContent);
139 };
140
141 TEST(DirectManipulationTest, TestGesture) {
142 MockIDirectManipulationContent content;
143 MockWindowBindingHandlerDelegate delegate;
144 MockIDirectManipulationViewport viewport;
145 const float scale = 1.5;
146 const float pan_x = 32.0;
147 const float pan_y = 16.0;
148 const int DISPLAY_WIDTH = 800;
149 const int DISPLAY_HEIGHT = 600;
150 auto owner = std::make_unique<DirectManipulationOwner>(nullptr);
151 owner->SetBindingHandlerDelegate(&delegate);
152 auto handler =
153 fml::MakeRefCounted<DirectManipulationEventHandler>(owner.get());
154 int32_t device_id = (int32_t)reinterpret_cast<int64_t>(handler.get());
155 EXPECT_CALL(viewport, GetPrimaryContent(_, _))
156 .WillOnce([&content](REFIID in, void** out) {
157 *out = &content;
158 return S_OK;
159 })
160 .RetiresOnSaturation();
161 EXPECT_CALL(content, GetContentTransform(_, 6))
162 .WillOnce([scale](float* transform, DWORD size) {
163 transform[0] = 1.0f;
164 transform[4] = 0.0;
165 transform[5] = 0.0;
166 return S_OK;
167 })
168 .RetiresOnSaturation();
169 EXPECT_CALL(delegate, OnPointerPanZoomStart(device_id));
170 handler->OnViewportStatusChanged((IDirectManipulationViewport*)&viewport,
171 DIRECTMANIPULATION_RUNNING,
172 DIRECTMANIPULATION_READY);
173 EXPECT_CALL(content, GetContentTransform(_, 6))
174 .WillOnce([scale, pan_x, pan_y](float* transform, DWORD size) {
175 transform[0] = scale;
176 transform[4] = pan_x;
177 transform[5] = pan_y;
178 return S_OK;
179 });
180 EXPECT_CALL(delegate,
181 OnPointerPanZoomUpdate(device_id, pan_x, pan_y, scale, 0));
182 handler->OnContentUpdated((IDirectManipulationViewport*)&viewport,
183 (IDirectManipulationContent*)&content);
184 EXPECT_CALL(delegate, OnPointerPanZoomEnd(device_id));
185 EXPECT_CALL(viewport, GetViewportRect(_))
186 .WillOnce([DISPLAY_WIDTH, DISPLAY_HEIGHT](RECT* rect) {
187 rect->left = 0;
188 rect->top = 0;
189 rect->right = DISPLAY_WIDTH;
190 rect->bottom = DISPLAY_HEIGHT;
191 return S_OK;
192 });
193 EXPECT_CALL(viewport, ZoomToRect(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT, false))
194 .WillOnce(::testing::Return(S_OK));
195 handler->OnViewportStatusChanged((IDirectManipulationViewport*)&viewport,
196 DIRECTMANIPULATION_INERTIA,
197 DIRECTMANIPULATION_RUNNING);
198 handler->OnViewportStatusChanged((IDirectManipulationViewport*)&viewport,
199 DIRECTMANIPULATION_READY,
200 DIRECTMANIPULATION_INERTIA);
201 }
202
203 // Verify that scale mantissa rounding works as expected
204 TEST(DirectManipulationTest, TestRounding) {
205 MockIDirectManipulationContent content;
206 MockWindowBindingHandlerDelegate delegate;
207 MockIDirectManipulationViewport viewport;
208 const float scale = 1.5;
209 const int DISPLAY_WIDTH = 800;
210 const int DISPLAY_HEIGHT = 600;
211 auto owner = std::make_unique<DirectManipulationOwner>(nullptr);
212 owner->SetBindingHandlerDelegate(&delegate);
213 auto handler =
214 fml::MakeRefCounted<DirectManipulationEventHandler>(owner.get());
215 int32_t device_id = (int32_t)reinterpret_cast<int64_t>(handler.get());
216 EXPECT_CALL(viewport, GetPrimaryContent(_, _))
217 .WillOnce([&content](REFIID in, void** out) {
218 *out = &content;
219 return S_OK;
220 })
221 .RetiresOnSaturation();
222 EXPECT_CALL(content, GetContentTransform(_, 6))
223 .WillOnce([scale](float* transform, DWORD size) {
224 transform[0] = 1.0f;
225 transform[4] = 0.0;
226 transform[5] = 0.0;
227 return S_OK;
228 })
229 .RetiresOnSaturation();
230 EXPECT_CALL(delegate, OnPointerPanZoomStart(device_id));
231 handler->OnViewportStatusChanged((IDirectManipulationViewport*)&viewport,
232 DIRECTMANIPULATION_RUNNING,
233 DIRECTMANIPULATION_READY);
234 EXPECT_CALL(content, GetContentTransform(_, 6))
235 .WillOnce([scale](float* transform, DWORD size) {
236 transform[0] = 1.5000001f;
237 transform[4] = 4.0;
238 transform[5] = 0.0;
239 return S_OK;
240 })
241 .RetiresOnSaturation();
242 EXPECT_CALL(delegate,
243 OnPointerPanZoomUpdate(device_id, 4.0, 0, 1.5000001f, 0))
244 .Times(0);
245 EXPECT_CALL(delegate, OnPointerPanZoomUpdate(device_id, 4.0, 0, 1.5f, 0))
246 .Times(1)
247 .RetiresOnSaturation();
248 EXPECT_CALL(content, GetContentTransform(_, 6))
249 .WillOnce([scale](float* transform, DWORD size) {
250 transform[0] = 1.50000065f;
251 transform[4] = 2.0;
252 transform[5] = 0.0;
253 return S_OK;
254 })
255 .RetiresOnSaturation();
256 EXPECT_CALL(delegate,
257 OnPointerPanZoomUpdate(device_id, 2.0, 0, 1.50000065f, 0))
258 .Times(0);
259 EXPECT_CALL(delegate,
260 OnPointerPanZoomUpdate(device_id, 2.0, 0, 1.50000047f, 0))
261 .Times(1)
262 .RetiresOnSaturation();
263 EXPECT_CALL(delegate, OnPointerPanZoomEnd(device_id));
264 EXPECT_CALL(viewport, GetViewportRect(_))
265 .WillOnce([DISPLAY_WIDTH, DISPLAY_HEIGHT](RECT* rect) {
266 rect->left = 0;
267 rect->top = 0;
268 rect->right = DISPLAY_WIDTH;
269 rect->bottom = DISPLAY_HEIGHT;
270 return S_OK;
271 });
272 EXPECT_CALL(viewport, ZoomToRect(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT, false))
273 .WillOnce(::testing::Return(S_OK));
274 handler->OnContentUpdated((IDirectManipulationViewport*)&viewport,
275 (IDirectManipulationContent*)&content);
276 handler->OnContentUpdated((IDirectManipulationViewport*)&viewport,
277 (IDirectManipulationContent*)&content);
278 handler->OnViewportStatusChanged((IDirectManipulationViewport*)&viewport,
279 DIRECTMANIPULATION_INERTIA,
280 DIRECTMANIPULATION_RUNNING);
281 handler->OnViewportStatusChanged((IDirectManipulationViewport*)&viewport,
282 DIRECTMANIPULATION_READY,
283 DIRECTMANIPULATION_INERTIA);
284 }
285
286 TEST(DirectManipulationTest, TestInertiaCancelSentForUserCancel) {
287 MockIDirectManipulationContent content;
288 MockWindowBindingHandlerDelegate delegate;
289 MockIDirectManipulationViewport viewport;
290 const int DISPLAY_WIDTH = 800;
291 const int DISPLAY_HEIGHT = 600;
292 auto owner = std::make_unique<DirectManipulationOwner>(nullptr);
293 owner->SetBindingHandlerDelegate(&delegate);
294 auto handler =
295 fml::MakeRefCounted<DirectManipulationEventHandler>(owner.get());
296 int32_t device_id = (int32_t)reinterpret_cast<int64_t>(handler.get());
297 // No need to mock the actual gesture, just start at the end.
298 EXPECT_CALL(viewport, GetViewportRect(_))
299 .WillOnce([DISPLAY_WIDTH, DISPLAY_HEIGHT](RECT* rect) {
300 rect->left = 0;
301 rect->top = 0;
302 rect->right = DISPLAY_WIDTH;
303 rect->bottom = DISPLAY_HEIGHT;
304 return S_OK;
305 });
306 EXPECT_CALL(viewport, ZoomToRect(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT, false))
307 .WillOnce(::testing::Return(S_OK));
308 EXPECT_CALL(delegate, OnPointerPanZoomEnd(device_id));
309 handler->OnViewportStatusChanged((IDirectManipulationViewport*)&viewport,
310 DIRECTMANIPULATION_INERTIA,
311 DIRECTMANIPULATION_RUNNING);
312 // Have pan_y change by 10 between inertia updates.
313 EXPECT_CALL(content, GetContentTransform(_, 6))
314 .WillOnce([](float* transform, DWORD size) {
315 transform[0] = 1;
316 transform[4] = 0;
317 transform[5] = 100;
318 return S_OK;
319 });
320 handler->OnContentUpdated((IDirectManipulationViewport*)&viewport,
321 (IDirectManipulationContent*)&content);
322 EXPECT_CALL(content, GetContentTransform(_, 6))
323 .WillOnce([](float* transform, DWORD size) {
324 transform[0] = 1;
325 transform[4] = 0;
326 transform[5] = 110;
327 return S_OK;
328 });
329 handler->OnContentUpdated((IDirectManipulationViewport*)&viewport,
330 (IDirectManipulationContent*)&content);
331 // This looks like an interruption in the middle of synthetic inertia because
332 // of user input.
333 EXPECT_CALL(delegate, OnScrollInertiaCancel(device_id));
334 handler->OnViewportStatusChanged((IDirectManipulationViewport*)&viewport,
335 DIRECTMANIPULATION_READY,
336 DIRECTMANIPULATION_INERTIA);
337 }
338
339 TEST(DirectManipulationTest, TestInertiaCamcelNotSentAtInertiaEnd) {
340 MockIDirectManipulationContent content;
341 MockWindowBindingHandlerDelegate delegate;
342 MockIDirectManipulationViewport viewport;
343 const int DISPLAY_WIDTH = 800;
344 const int DISPLAY_HEIGHT = 600;
345 auto owner = std::make_unique<DirectManipulationOwner>(nullptr);
346 owner->SetBindingHandlerDelegate(&delegate);
347 auto handler =
348 fml::MakeRefCounted<DirectManipulationEventHandler>(owner.get());
349 int32_t device_id = (int32_t)reinterpret_cast<int64_t>(handler.get());
350 // No need to mock the actual gesture, just start at the end.
351 EXPECT_CALL(viewport, GetViewportRect(_))
352 .WillOnce([DISPLAY_WIDTH, DISPLAY_HEIGHT](RECT* rect) {
353 rect->left = 0;
354 rect->top = 0;
355 rect->right = DISPLAY_WIDTH;
356 rect->bottom = DISPLAY_HEIGHT;
357 return S_OK;
358 });
359 EXPECT_CALL(viewport, ZoomToRect(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT, false))
360 .WillOnce(::testing::Return(S_OK));
361 EXPECT_CALL(delegate, OnPointerPanZoomEnd(device_id));
362 handler->OnViewportStatusChanged((IDirectManipulationViewport*)&viewport,
363 DIRECTMANIPULATION_INERTIA,
364 DIRECTMANIPULATION_RUNNING);
365 // Have no change in pan between events.
366 EXPECT_CALL(content, GetContentTransform(_, 6))
367 .WillOnce([](float* transform, DWORD size) {
368 transform[0] = 1;
369 transform[4] = 0;
370 transform[5] = 140;
371 return S_OK;
372 });
373 handler->OnContentUpdated((IDirectManipulationViewport*)&viewport,
374 (IDirectManipulationContent*)&content);
375 EXPECT_CALL(content, GetContentTransform(_, 6))
376 .WillOnce([](float* transform, DWORD size) {
377 transform[0] = 1;
378 transform[4] = 0;
379 transform[5] = 140;
380 return S_OK;
381 });
382 handler->OnContentUpdated((IDirectManipulationViewport*)&viewport,
383 (IDirectManipulationContent*)&content);
384 // OnScrollInertiaCancel should not be called.
385 EXPECT_CALL(delegate, OnScrollInertiaCancel(device_id)).Times(0);
386 handler->OnViewportStatusChanged((IDirectManipulationViewport*)&viewport,
387 DIRECTMANIPULATION_READY,
388 DIRECTMANIPULATION_INERTIA);
389 }
390
391 // Have some initial values in the matrix, only the differences should be
392 // reported.
393 TEST(DirectManipulationTest, TestGestureWithInitialData) {
394 MockIDirectManipulationContent content;
395 MockWindowBindingHandlerDelegate delegate;
396 MockIDirectManipulationViewport viewport;
397 const float scale = 1.5;
398 const float pan_x = 32.0;
399 const float pan_y = 16.0;
400 const int DISPLAY_WIDTH = 800;
401 const int DISPLAY_HEIGHT = 600;
402 auto owner = std::make_unique<DirectManipulationOwner>(nullptr);
403 owner->SetBindingHandlerDelegate(&delegate);
404 auto handler =
405 fml::MakeRefCounted<DirectManipulationEventHandler>(owner.get());
406 int32_t device_id = (int32_t)reinterpret_cast<int64_t>(handler.get());
407 EXPECT_CALL(viewport, GetPrimaryContent(_, _))
408 .WillOnce([&content](REFIID in, void** out) {
409 *out = &content;
410 return S_OK;
411 })
412 .RetiresOnSaturation();
413 EXPECT_CALL(content, GetContentTransform(_, 6))
414 .WillOnce([scale](float* transform, DWORD size) {
415 transform[0] = 2.0f;
416 transform[4] = 234.0;
417 transform[5] = 345.0;
418 return S_OK;
419 })
420 .RetiresOnSaturation();
421 EXPECT_CALL(delegate, OnPointerPanZoomStart(device_id));
422 handler->OnViewportStatusChanged((IDirectManipulationViewport*)&viewport,
423 DIRECTMANIPULATION_RUNNING,
424 DIRECTMANIPULATION_READY);
425 EXPECT_CALL(content, GetContentTransform(_, 6))
426 .WillOnce([scale, pan_x, pan_y](float* transform, DWORD size) {
427 transform[0] = 2.0f * scale;
428 transform[4] = 234.0 + pan_x;
429 transform[5] = 345.0 + pan_y;
430 return S_OK;
431 });
432 EXPECT_CALL(delegate,
433 OnPointerPanZoomUpdate(device_id, pan_x, pan_y, scale, 0));
434 handler->OnContentUpdated((IDirectManipulationViewport*)&viewport,
435 (IDirectManipulationContent*)&content);
436 EXPECT_CALL(delegate, OnPointerPanZoomEnd(device_id));
437 EXPECT_CALL(viewport, GetViewportRect(_))
438 .WillOnce([DISPLAY_WIDTH, DISPLAY_HEIGHT](RECT* rect) {
439 rect->left = 0;
440 rect->top = 0;
441 rect->right = DISPLAY_WIDTH;
442 rect->bottom = DISPLAY_HEIGHT;
443 return S_OK;
444 });
445 EXPECT_CALL(viewport, ZoomToRect(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT, false))
446 .WillOnce(::testing::Return(S_OK));
447 handler->OnViewportStatusChanged((IDirectManipulationViewport*)&viewport,
448 DIRECTMANIPULATION_INERTIA,
449 DIRECTMANIPULATION_RUNNING);
450 handler->OnViewportStatusChanged((IDirectManipulationViewport*)&viewport,
451 DIRECTMANIPULATION_READY,
452 DIRECTMANIPULATION_INERTIA);
453 }
454
455 } // namespace testing
456 } // namespace flutter
flutter::testing::MockIDirectManipulationContent
Definition: direct_manipulation_unittests.cc:105
flutter::testing::MockIDirectManipulationContent::MOCK_METHOD2_WITH_CALLTYPE
MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE, QueryInterface, HRESULT(REFIID, void **))
flutter::testing::MockIDirectManipulationContent::MOCK_METHOD2_WITH_CALLTYPE
MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE, GetContentTransform, HRESULT(float *, DWORD))
flutter::testing::MockIDirectManipulationContent::MOCK_METHOD2_WITH_CALLTYPE
MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE, GetOutputTransform, HRESULT(float *, DWORD))
flutter::testing::MockIDirectManipulationContent::MOCK_METHOD0_WITH_CALLTYPE
MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, Release, ULONG())
flutter::testing::MockIDirectManipulationContent::MOCK_METHOD3_WITH_CALLTYPE
MOCK_METHOD3_WITH_CALLTYPE(STDMETHODCALLTYPE, GetTag, HRESULT(REFIID, void **, UINT32 *))
flutter::testing::MockIDirectManipulationContent::MOCK_METHOD2_WITH_CALLTYPE
MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE, SyncContentTransform, HRESULT(const float *, DWORD))
flutter::testing::MockIDirectManipulationContent::MockIDirectManipulationContent
MockIDirectManipulationContent()
Definition: direct_manipulation_unittests.cc:107
flutter::testing::MockIDirectManipulationContent::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, GetContentRect, HRESULT(RECT *))
flutter::testing::MockIDirectManipulationContent::MOCK_METHOD0_WITH_CALLTYPE
MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, AddRef, ULONG())
flutter::testing::MockIDirectManipulationContent::MOCK_METHOD2_WITH_CALLTYPE
MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE, SetTag, HRESULT(IUnknown *, UINT32))
flutter::testing::MockIDirectManipulationContent::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, SetContentRect, HRESULT(const RECT *))
flutter::testing::MockIDirectManipulationContent::MOCK_METHOD2_WITH_CALLTYPE
MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE, GetViewport, HRESULT(REFIID, void **))
flutter::testing::MockIDirectManipulationViewport
Definition: direct_manipulation_unittests.cc:16
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD2_WITH_CALLTYPE
MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE, QueryInterface, HRESULT(REFIID, void **))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD0_WITH_CALLTYPE
MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, Abandon, HRESULT())
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD0_WITH_CALLTYPE
MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, AddRef, ULONG())
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, SetViewportRect, HRESULT(const RECT *))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD2_WITH_CALLTYPE
MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE, SyncDisplayTransform, HRESULT(const float *, DWORD))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD5_WITH_CALLTYPE
MOCK_METHOD5_WITH_CALLTYPE(STDMETHODCALLTYPE, ZoomToRect, HRESULT(const float, const float, const float, const float, BOOL))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD0_WITH_CALLTYPE
MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, Enable, HRESULT())
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD0_WITH_CALLTYPE
MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, Disable, HRESULT())
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, RemoveEventHandler, HRESULT(DWORD))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, AddConfiguration, HRESULT(DIRECTMANIPULATION_CONFIGURATION))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, SetViewportOptions, HRESULT(DIRECTMANIPULATION_VIEWPORT_OPTIONS))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, RemoveContent, HRESULT(IDirectManipulationContent *))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD2_WITH_CALLTYPE
MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE, SetTag, HRESULT(IUnknown *, UINT32))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD3_WITH_CALLTYPE
MOCK_METHOD3_WITH_CALLTYPE(STDMETHODCALLTYPE, GetTag, HRESULT(REFIID, void **, UINT32 *))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, SetInputMode, HRESULT(DIRECTMANIPULATION_INPUT_MODE))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD0_WITH_CALLTYPE
MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, Stop, HRESULT())
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD2_WITH_CALLTYPE
MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE, SetViewportTransform, HRESULT(const float *, DWORD))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD0_WITH_CALLTYPE
MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, ReleaseAllContacts, HRESULT())
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, SetUpdateMode, HRESULT(DIRECTMANIPULATION_INPUT_MODE))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD0_WITH_CALLTYPE
MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, Release, ULONG())
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, ActivateConfiguration, HRESULT(DIRECTMANIPULATION_CONFIGURATION))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, RemoveConfiguration, HRESULT(DIRECTMANIPULATION_CONFIGURATION))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, AddContent, HRESULT(IDirectManipulationContent *))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD3_WITH_CALLTYPE
MOCK_METHOD3_WITH_CALLTYPE(STDMETHODCALLTYPE, AddEventHandler, HRESULT(HWND, IDirectManipulationViewportEventHandler *, DWORD *))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, SetChaining, HRESULT(DIRECTMANIPULATION_MOTION_TYPES))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, GetStatus, HRESULT(DIRECTMANIPULATION_STATUS *))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD2_WITH_CALLTYPE
MOCK_METHOD2_WITH_CALLTYPE(STDMETHODCALLTYPE, GetPrimaryContent, HRESULT(REFIID, void **))
flutter::testing::MockIDirectManipulationViewport::MockIDirectManipulationViewport
MockIDirectManipulationViewport()
Definition: direct_manipulation_unittests.cc:18
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, ReleaseContact, HRESULT(UINT32))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, GetViewportRect, HRESULT(RECT *))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, SetContact, HRESULT(UINT32))
flutter::testing::MockIDirectManipulationViewport::MOCK_METHOD1_WITH_CALLTYPE
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, SetManualGesture, HRESULT(DIRECTMANIPULATION_GESTURE_CONFIGURATION))
direct_manipulation.h
content
union flutter::testing::@100::KeyboardChange::@0 content
flutter::testing::TEST
TEST(AccessibilityBridgeWindows, GetParent)
Definition: accessibility_bridge_windows_unittests.cc:247
flutter
Definition: accessibility_bridge_windows.cc:11