OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/exo/pointer.h" | 5 #include "components/exo/pointer.h" |
6 | 6 |
7 #include "ash/public/cpp/shell_window_ids.h" | 7 #include "ash/public/cpp/shell_window_ids.h" |
8 #include "ash/shell.h" | 8 #include "ash/shell.h" |
9 #include "ash/shell_port.h" | 9 #include "ash/shell_port.h" |
10 #include "ash/wm/window_positioning_utils.h" | 10 #include "ash/wm/window_positioning_utils.h" |
(...skipping 19 matching lines...) Expand all Loading... |
30 | 30 |
31 // Overridden from PointerDelegate: | 31 // Overridden from PointerDelegate: |
32 MOCK_METHOD1(OnPointerDestroying, void(Pointer*)); | 32 MOCK_METHOD1(OnPointerDestroying, void(Pointer*)); |
33 MOCK_CONST_METHOD1(CanAcceptPointerEventsForSurface, bool(Surface*)); | 33 MOCK_CONST_METHOD1(CanAcceptPointerEventsForSurface, bool(Surface*)); |
34 MOCK_METHOD3(OnPointerEnter, void(Surface*, const gfx::PointF&, int)); | 34 MOCK_METHOD3(OnPointerEnter, void(Surface*, const gfx::PointF&, int)); |
35 MOCK_METHOD1(OnPointerLeave, void(Surface*)); | 35 MOCK_METHOD1(OnPointerLeave, void(Surface*)); |
36 MOCK_METHOD2(OnPointerMotion, void(base::TimeTicks, const gfx::PointF&)); | 36 MOCK_METHOD2(OnPointerMotion, void(base::TimeTicks, const gfx::PointF&)); |
37 MOCK_METHOD3(OnPointerButton, void(base::TimeTicks, int, bool)); | 37 MOCK_METHOD3(OnPointerButton, void(base::TimeTicks, int, bool)); |
38 MOCK_METHOD3(OnPointerScroll, | 38 MOCK_METHOD3(OnPointerScroll, |
39 void(base::TimeTicks, const gfx::Vector2dF&, bool)); | 39 void(base::TimeTicks, const gfx::Vector2dF&, bool)); |
40 MOCK_METHOD1(OnPointerScrollCancel, void(base::TimeTicks)); | |
41 MOCK_METHOD1(OnPointerScrollStop, void(base::TimeTicks)); | 40 MOCK_METHOD1(OnPointerScrollStop, void(base::TimeTicks)); |
42 MOCK_METHOD0(OnPointerFrame, void()); | 41 MOCK_METHOD0(OnPointerFrame, void()); |
43 }; | 42 }; |
44 | 43 |
45 TEST_F(PointerTest, SetCursor) { | 44 TEST_F(PointerTest, SetCursor) { |
46 std::unique_ptr<Surface> surface(new Surface); | 45 std::unique_ptr<Surface> surface(new Surface); |
47 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); | 46 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); |
48 gfx::Size buffer_size(10, 10); | 47 gfx::Size buffer_size(10, 10); |
49 std::unique_ptr<Buffer> buffer( | 48 std::unique_ptr<Buffer> buffer( |
50 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); | 49 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 surface->Attach(buffer.get()); | 237 surface->Attach(buffer.get()); |
239 surface->Commit(); | 238 surface->Commit(); |
240 | 239 |
241 MockPointerDelegate delegate; | 240 MockPointerDelegate delegate; |
242 std::unique_ptr<Pointer> pointer(new Pointer(&delegate)); | 241 std::unique_ptr<Pointer> pointer(new Pointer(&delegate)); |
243 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); | 242 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); |
244 gfx::Point location = surface->window()->GetBoundsInScreen().origin(); | 243 gfx::Point location = surface->window()->GetBoundsInScreen().origin(); |
245 | 244 |
246 EXPECT_CALL(delegate, CanAcceptPointerEventsForSurface(surface.get())) | 245 EXPECT_CALL(delegate, CanAcceptPointerEventsForSurface(surface.get())) |
247 .WillRepeatedly(testing::Return(true)); | 246 .WillRepeatedly(testing::Return(true)); |
248 EXPECT_CALL(delegate, OnPointerFrame()).Times(4); | 247 EXPECT_CALL(delegate, OnPointerFrame()).Times(3); |
249 | 248 |
250 EXPECT_CALL(delegate, OnPointerEnter(surface.get(), gfx::PointF(), 0)); | 249 EXPECT_CALL(delegate, OnPointerEnter(surface.get(), gfx::PointF(), 0)); |
251 generator.MoveMouseTo(location); | 250 generator.MoveMouseTo(location); |
252 | 251 |
253 { | 252 { |
254 // Expect fling stop followed by scroll and scroll stop. | 253 // Expect fling stop followed by scroll and scroll stop. |
255 testing::InSequence sequence; | 254 testing::InSequence sequence; |
256 | 255 |
257 EXPECT_CALL(delegate, OnPointerScrollCancel(testing::_)); | |
258 EXPECT_CALL(delegate, | 256 EXPECT_CALL(delegate, |
259 OnPointerScroll(testing::_, gfx::Vector2dF(1.2, 1.2), false)); | 257 OnPointerScroll(testing::_, gfx::Vector2dF(1.2, 1.2), false)); |
260 EXPECT_CALL(delegate, OnPointerScrollStop(testing::_)); | 258 EXPECT_CALL(delegate, OnPointerScrollStop(testing::_)); |
261 } | 259 } |
262 generator.ScrollSequence(location, base::TimeDelta(), 1, 1, 1, 1); | 260 generator.ScrollSequence(location, base::TimeDelta(), 1, 1, 1, 1); |
263 | 261 |
264 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); | 262 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); |
265 pointer.reset(); | 263 pointer.reset(); |
266 } | 264 } |
267 | 265 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 testing::InSequence sequence; | 343 testing::InSequence sequence; |
346 EXPECT_CALL(delegate, | 344 EXPECT_CALL(delegate, |
347 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, true)); | 345 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, true)); |
348 EXPECT_CALL(delegate, | 346 EXPECT_CALL(delegate, |
349 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, false)); | 347 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, false)); |
350 } | 348 } |
351 generator.ClickLeftButton(); | 349 generator.ClickLeftButton(); |
352 | 350 |
353 { | 351 { |
354 testing::InSequence sequence; | 352 testing::InSequence sequence; |
355 EXPECT_CALL(delegate, OnPointerScrollCancel(testing::_)); | |
356 EXPECT_CALL(delegate, | 353 EXPECT_CALL(delegate, |
357 OnPointerScroll(testing::_, gfx::Vector2dF(1.2, 1.2), false)); | 354 OnPointerScroll(testing::_, gfx::Vector2dF(1.2, 1.2), false)); |
358 EXPECT_CALL(delegate, OnPointerScrollStop(testing::_)); | 355 EXPECT_CALL(delegate, OnPointerScrollStop(testing::_)); |
359 } | 356 } |
360 generator.ScrollSequence(location2, base::TimeDelta(), 1, 1, 1, 1); | 357 generator.ScrollSequence(location2, base::TimeDelta(), 1, 1, 1, 1); |
361 | 358 |
362 { | 359 { |
363 testing::InSequence sequence; | 360 testing::InSequence sequence; |
364 EXPECT_CALL(delegate, OnPointerLeave(surface2.get())); | 361 EXPECT_CALL(delegate, OnPointerLeave(surface2.get())); |
365 } | 362 } |
(...skipping 20 matching lines...) Expand all Loading... |
386 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, true)) | 383 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, true)) |
387 .Times(0); | 384 .Times(0); |
388 EXPECT_CALL(delegate, | 385 EXPECT_CALL(delegate, |
389 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, false)) | 386 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, false)) |
390 .Times(0); | 387 .Times(0); |
391 } | 388 } |
392 generator.ClickLeftButton(); | 389 generator.ClickLeftButton(); |
393 | 390 |
394 { | 391 { |
395 testing::InSequence sequence; | 392 testing::InSequence sequence; |
396 EXPECT_CALL(delegate, OnPointerScrollCancel(testing::_)).Times(0); | |
397 EXPECT_CALL(delegate, | 393 EXPECT_CALL(delegate, |
398 OnPointerScroll(testing::_, gfx::Vector2dF(1.2, 1.2), false)) | 394 OnPointerScroll(testing::_, gfx::Vector2dF(1.2, 1.2), false)) |
399 .Times(0); | 395 .Times(0); |
400 EXPECT_CALL(delegate, OnPointerScrollStop(testing::_)).Times(0); | 396 EXPECT_CALL(delegate, OnPointerScrollStop(testing::_)).Times(0); |
401 } | 397 } |
402 generator.ScrollSequence(location, base::TimeDelta(), 1, 1, 1, 1); | 398 generator.ScrollSequence(location, base::TimeDelta(), 1, 1, 1, 1); |
403 | 399 |
404 { | 400 { |
405 testing::InSequence sequence; | 401 testing::InSequence sequence; |
406 EXPECT_CALL(delegate, OnPointerLeave(surface.get())).Times(0); | 402 EXPECT_CALL(delegate, OnPointerLeave(surface.get())).Times(0); |
(...skipping 21 matching lines...) Expand all Loading... |
428 testing::InSequence sequence; | 424 testing::InSequence sequence; |
429 EXPECT_CALL(delegate, | 425 EXPECT_CALL(delegate, |
430 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, true)); | 426 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, true)); |
431 EXPECT_CALL(delegate, | 427 EXPECT_CALL(delegate, |
432 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, false)); | 428 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, false)); |
433 } | 429 } |
434 generator.ClickLeftButton(); | 430 generator.ClickLeftButton(); |
435 | 431 |
436 { | 432 { |
437 testing::InSequence sequence; | 433 testing::InSequence sequence; |
438 EXPECT_CALL(delegate, OnPointerScrollCancel(testing::_)); | |
439 EXPECT_CALL(delegate, | 434 EXPECT_CALL(delegate, |
440 OnPointerScroll(testing::_, gfx::Vector2dF(1.2, 1.2), false)); | 435 OnPointerScroll(testing::_, gfx::Vector2dF(1.2, 1.2), false)); |
441 EXPECT_CALL(delegate, OnPointerScrollStop(testing::_)); | 436 EXPECT_CALL(delegate, OnPointerScrollStop(testing::_)); |
442 } | 437 } |
443 generator.ScrollSequence(location, base::TimeDelta(), 1, 1, 1, 1); | 438 generator.ScrollSequence(location, base::TimeDelta(), 1, 1, 1, 1); |
444 | 439 |
445 { | 440 { |
446 testing::InSequence sequence; | 441 testing::InSequence sequence; |
447 EXPECT_CALL(delegate, OnPointerLeave(surface.get())); | 442 EXPECT_CALL(delegate, OnPointerLeave(surface.get())); |
448 } | 443 } |
449 generator.MoveMouseTo(surface->window()->GetBoundsInScreen().bottom_right()); | 444 generator.MoveMouseTo(surface->window()->GetBoundsInScreen().bottom_right()); |
450 | 445 |
451 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); | 446 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); |
452 pointer.reset(); | 447 pointer.reset(); |
453 } | 448 } |
454 | 449 |
455 } // namespace | 450 } // namespace |
456 } // namespace exo | 451 } // namespace exo |
OLD | NEW |