OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ash/display/display_manager.h" | 5 #include "ash/display/display_manager.h" |
6 #include "ash/root_window_controller.h" | 6 #include "ash/root_window_controller.h" |
7 #include "ash/screen_util.h" | 7 #include "ash/screen_util.h" |
8 #include "ash/shell.h" | 8 #include "ash/shell.h" |
9 #include "ash/shell_window_ids.h" | 9 #include "ash/shell_window_ids.h" |
10 #include "ash/system/tray/system_tray.h" | 10 #include "ash/system/tray/system_tray.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 #include "ui/gfx/screen.h" | 28 #include "ui/gfx/screen.h" |
29 #include "ui/views/controls/textfield/textfield.h" | 29 #include "ui/views/controls/textfield/textfield.h" |
30 #include "ui/views/widget/widget.h" | 30 #include "ui/views/widget/widget.h" |
31 #include "ui/views/widget/widget_delegate.h" | 31 #include "ui/views/widget/widget_delegate.h" |
32 #include "ui/wm/public/activation_client.h" | 32 #include "ui/wm/public/activation_client.h" |
33 | 33 |
34 namespace ash { | 34 namespace ash { |
35 namespace { | 35 namespace { |
36 | 36 |
37 void SetSecondaryDisplayLayout(display::DisplayPlacement::Position position) { | 37 void SetSecondaryDisplayLayout(display::DisplayPlacement::Position position) { |
38 scoped_ptr<display::DisplayLayout> layout = | 38 std::unique_ptr<display::DisplayLayout> layout = |
39 Shell::GetInstance()->display_manager()->GetCurrentDisplayLayout().Copy(); | 39 Shell::GetInstance()->display_manager()->GetCurrentDisplayLayout().Copy(); |
40 layout->placement_list[0].position = position; | 40 layout->placement_list[0].position = position; |
41 Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays( | 41 Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays( |
42 std::move(layout)); | 42 std::move(layout)); |
43 } | 43 } |
44 | 44 |
45 class ModalWidgetDelegate : public views::WidgetDelegateView { | 45 class ModalWidgetDelegate : public views::WidgetDelegateView { |
46 public: | 46 public: |
47 ModalWidgetDelegate() {} | 47 ModalWidgetDelegate() {} |
48 ~ModalWidgetDelegate() override {} | 48 ~ModalWidgetDelegate() override {} |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 if (!SupportsMultipleDisplays()) | 371 if (!SupportsMultipleDisplays()) |
372 return; | 372 return; |
373 | 373 |
374 UpdateDisplay("1000x600,600x400"); | 374 UpdateDisplay("1000x600,600x400"); |
375 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 375 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
376 | 376 |
377 aura::test::EventCountDelegate r1_d1; | 377 aura::test::EventCountDelegate r1_d1; |
378 aura::test::EventCountDelegate r1_d2; | 378 aura::test::EventCountDelegate r1_d2; |
379 aura::test::EventCountDelegate r2_d1; | 379 aura::test::EventCountDelegate r2_d1; |
380 | 380 |
381 scoped_ptr<aura::Window> r1_w1(aura::test::CreateTestWindowWithDelegate( | 381 std::unique_ptr<aura::Window> r1_w1(aura::test::CreateTestWindowWithDelegate( |
382 &r1_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[0])); | 382 &r1_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[0])); |
383 scoped_ptr<aura::Window> r1_w2(aura::test::CreateTestWindowWithDelegate( | 383 std::unique_ptr<aura::Window> r1_w2(aura::test::CreateTestWindowWithDelegate( |
384 &r1_d2, 0, gfx::Rect(10, 100, 100, 100), root_windows[0])); | 384 &r1_d2, 0, gfx::Rect(10, 100, 100, 100), root_windows[0])); |
385 scoped_ptr<aura::Window> r2_w1(aura::test::CreateTestWindowWithDelegate( | 385 std::unique_ptr<aura::Window> r2_w1(aura::test::CreateTestWindowWithDelegate( |
386 &r2_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[1])); | 386 &r2_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[1])); |
387 | 387 |
388 r1_w1->SetCapture(); | 388 r1_w1->SetCapture(); |
389 | 389 |
390 EXPECT_EQ(r1_w1.get(), | 390 EXPECT_EQ(r1_w1.get(), |
391 aura::client::GetCaptureWindow(r2_w1->GetRootWindow())); | 391 aura::client::GetCaptureWindow(r2_w1->GetRootWindow())); |
392 | 392 |
393 ui::test::EventGenerator& generator = GetEventGenerator(); | 393 ui::test::EventGenerator& generator = GetEventGenerator(); |
394 generator.MoveMouseToCenterOf(r2_w1.get()); | 394 generator.MoveMouseToCenterOf(r2_w1.get()); |
395 // |r1_w1| will receive the events because it has capture. | 395 // |r1_w1| will receive the events because it has capture. |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 if (!SupportsMultipleDisplays()) | 441 if (!SupportsMultipleDisplays()) |
442 return; | 442 return; |
443 | 443 |
444 UpdateDisplay("1000x600,600x400"); | 444 UpdateDisplay("1000x600,600x400"); |
445 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 445 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
446 | 446 |
447 aura::test::EventCountDelegate r1_d1; | 447 aura::test::EventCountDelegate r1_d1; |
448 aura::test::EventCountDelegate r1_d2; | 448 aura::test::EventCountDelegate r1_d2; |
449 aura::test::EventCountDelegate r2_d1; | 449 aura::test::EventCountDelegate r2_d1; |
450 | 450 |
451 scoped_ptr<aura::Window> r1_w1(aura::test::CreateTestWindowWithDelegate( | 451 std::unique_ptr<aura::Window> r1_w1(aura::test::CreateTestWindowWithDelegate( |
452 &r1_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[0])); | 452 &r1_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[0])); |
453 scoped_ptr<aura::Window> r1_w2(aura::test::CreateTestWindowWithDelegate( | 453 std::unique_ptr<aura::Window> r1_w2(aura::test::CreateTestWindowWithDelegate( |
454 &r1_d2, 0, gfx::Rect(10, 100, 100, 100), root_windows[0])); | 454 &r1_d2, 0, gfx::Rect(10, 100, 100, 100), root_windows[0])); |
455 scoped_ptr<aura::Window> r2_w1(aura::test::CreateTestWindowWithDelegate( | 455 std::unique_ptr<aura::Window> r2_w1(aura::test::CreateTestWindowWithDelegate( |
456 &r2_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[1])); | 456 &r2_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[1])); |
457 | 457 |
458 r1_w1->SetCapture(); | 458 r1_w1->SetCapture(); |
459 | 459 |
460 ui::test::EventGenerator& generator = GetEventGenerator(); | 460 ui::test::EventGenerator& generator = GetEventGenerator(); |
461 generator.MoveMouseToCenterOf(r2_w1.get()); | 461 generator.MoveMouseToCenterOf(r2_w1.get()); |
462 EXPECT_EQ(gfx::Point(1060, 60).ToString(), | 462 EXPECT_EQ(gfx::Point(1060, 60).ToString(), |
463 generator.current_location().ToString()); | 463 generator.current_location().ToString()); |
464 | 464 |
465 EventLocationHandler location_handler; | 465 EventLocationHandler location_handler; |
(...skipping 10 matching lines...) Expand all Loading... |
476 if (!SupportsMultipleDisplays()) | 476 if (!SupportsMultipleDisplays()) |
477 return; | 477 return; |
478 | 478 |
479 UpdateDisplay("1000x600*2,600x400"); | 479 UpdateDisplay("1000x600*2,600x400"); |
480 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 480 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
481 | 481 |
482 aura::test::EventCountDelegate r1_d1; | 482 aura::test::EventCountDelegate r1_d1; |
483 aura::test::EventCountDelegate r1_d2; | 483 aura::test::EventCountDelegate r1_d2; |
484 aura::test::EventCountDelegate r2_d1; | 484 aura::test::EventCountDelegate r2_d1; |
485 | 485 |
486 scoped_ptr<aura::Window> r1_w1(aura::test::CreateTestWindowWithDelegate( | 486 std::unique_ptr<aura::Window> r1_w1(aura::test::CreateTestWindowWithDelegate( |
487 &r1_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[0])); | 487 &r1_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[0])); |
488 scoped_ptr<aura::Window> r1_w2(aura::test::CreateTestWindowWithDelegate( | 488 std::unique_ptr<aura::Window> r1_w2(aura::test::CreateTestWindowWithDelegate( |
489 &r1_d2, 0, gfx::Rect(10, 100, 100, 100), root_windows[0])); | 489 &r1_d2, 0, gfx::Rect(10, 100, 100, 100), root_windows[0])); |
490 scoped_ptr<aura::Window> r2_w1(aura::test::CreateTestWindowWithDelegate( | 490 std::unique_ptr<aura::Window> r2_w1(aura::test::CreateTestWindowWithDelegate( |
491 &r2_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[1])); | 491 &r2_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[1])); |
492 | 492 |
493 r1_w1->SetCapture(); | 493 r1_w1->SetCapture(); |
494 | 494 |
495 ui::test::EventGenerator& generator = GetEventGenerator(); | 495 ui::test::EventGenerator& generator = GetEventGenerator(); |
496 generator.MoveMouseToCenterOf(r2_w1.get()); | 496 generator.MoveMouseToCenterOf(r2_w1.get()); |
497 EXPECT_EQ(gfx::Point(560, 60).ToString(), | 497 EXPECT_EQ(gfx::Point(560, 60).ToString(), |
498 generator.current_location().ToString()); | 498 generator.current_location().ToString()); |
499 | 499 |
500 EventLocationHandler location_handler; | 500 EventLocationHandler location_handler; |
(...skipping 10 matching lines...) Expand all Loading... |
511 if (!SupportsMultipleDisplays()) | 511 if (!SupportsMultipleDisplays()) |
512 return; | 512 return; |
513 | 513 |
514 UpdateDisplay("1000x600,600x400*2"); | 514 UpdateDisplay("1000x600,600x400*2"); |
515 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 515 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
516 | 516 |
517 aura::test::EventCountDelegate r1_d1; | 517 aura::test::EventCountDelegate r1_d1; |
518 aura::test::EventCountDelegate r1_d2; | 518 aura::test::EventCountDelegate r1_d2; |
519 aura::test::EventCountDelegate r2_d1; | 519 aura::test::EventCountDelegate r2_d1; |
520 | 520 |
521 scoped_ptr<aura::Window> r1_w1(aura::test::CreateTestWindowWithDelegate( | 521 std::unique_ptr<aura::Window> r1_w1(aura::test::CreateTestWindowWithDelegate( |
522 &r1_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[0])); | 522 &r1_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[0])); |
523 scoped_ptr<aura::Window> r1_w2(aura::test::CreateTestWindowWithDelegate( | 523 std::unique_ptr<aura::Window> r1_w2(aura::test::CreateTestWindowWithDelegate( |
524 &r1_d2, 0, gfx::Rect(10, 100, 100, 100), root_windows[0])); | 524 &r1_d2, 0, gfx::Rect(10, 100, 100, 100), root_windows[0])); |
525 scoped_ptr<aura::Window> r2_w1(aura::test::CreateTestWindowWithDelegate( | 525 std::unique_ptr<aura::Window> r2_w1(aura::test::CreateTestWindowWithDelegate( |
526 &r2_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[1])); | 526 &r2_d1, 0, gfx::Rect(10, 10, 100, 100), root_windows[1])); |
527 | 527 |
528 r1_w1->SetCapture(); | 528 r1_w1->SetCapture(); |
529 | 529 |
530 ui::test::EventGenerator& generator = GetEventGenerator(); | 530 ui::test::EventGenerator& generator = GetEventGenerator(); |
531 generator.MoveMouseToCenterOf(r2_w1.get()); | 531 generator.MoveMouseToCenterOf(r2_w1.get()); |
532 EXPECT_EQ(gfx::Point(1060, 60).ToString(), | 532 EXPECT_EQ(gfx::Point(1060, 60).ToString(), |
533 generator.current_location().ToString()); | 533 generator.current_location().ToString()); |
534 | 534 |
535 EventLocationHandler location_handler; | 535 EventLocationHandler location_handler; |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
584 // Verifies if the mouse event arrives to the window even when the window | 584 // Verifies if the mouse event arrives to the window even when the window |
585 // moves to another root in a pre-target handler. See: crbug.com/157583 | 585 // moves to another root in a pre-target handler. See: crbug.com/157583 |
586 TEST_F(ExtendedDesktopTest, MoveWindowByMouseClick) { | 586 TEST_F(ExtendedDesktopTest, MoveWindowByMouseClick) { |
587 if (!SupportsMultipleDisplays()) | 587 if (!SupportsMultipleDisplays()) |
588 return; | 588 return; |
589 | 589 |
590 UpdateDisplay("1000x600,600x400"); | 590 UpdateDisplay("1000x600,600x400"); |
591 | 591 |
592 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 592 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
593 aura::test::EventCountDelegate delegate; | 593 aura::test::EventCountDelegate delegate; |
594 scoped_ptr<aura::Window> window(aura::test::CreateTestWindowWithDelegate( | 594 std::unique_ptr<aura::Window> window(aura::test::CreateTestWindowWithDelegate( |
595 &delegate, 0, gfx::Rect(10, 10, 100, 100), root_windows[0])); | 595 &delegate, 0, gfx::Rect(10, 10, 100, 100), root_windows[0])); |
596 MoveWindowByClickEventHandler event_handler(window.get()); | 596 MoveWindowByClickEventHandler event_handler(window.get()); |
597 window->AddPreTargetHandler(&event_handler); | 597 window->AddPreTargetHandler(&event_handler); |
598 | 598 |
599 ui::test::EventGenerator& event_generator(GetEventGenerator()); | 599 ui::test::EventGenerator& event_generator(GetEventGenerator()); |
600 | 600 |
601 event_generator.MoveMouseToCenterOf(window.get()); | 601 event_generator.MoveMouseToCenterOf(window.get()); |
602 event_generator.ClickLeftButton(); | 602 event_generator.ClickLeftButton(); |
603 // Both mouse pressed and released arrive at the window and its delegate. | 603 // Both mouse pressed and released arrive at the window and its delegate. |
604 EXPECT_EQ("1 1", delegate.GetMouseButtonCountsAndReset()); | 604 EXPECT_EQ("1 1", delegate.GetMouseButtonCountsAndReset()); |
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
929 generator.ReleaseLeftButton(); | 929 generator.ReleaseLeftButton(); |
930 EXPECT_EQ("-999,-999 -999,-999", event_handler.GetLocationsAndReset()); | 930 EXPECT_EQ("-999,-999 -999,-999", event_handler.GetLocationsAndReset()); |
931 | 931 |
932 generator.MoveMouseTo(400, 150); | 932 generator.MoveMouseTo(400, 150); |
933 EXPECT_EQ("100,150 100,150", event_handler.GetLocationsAndReset()); | 933 EXPECT_EQ("100,150 100,150", event_handler.GetLocationsAndReset()); |
934 | 934 |
935 ash::Shell::GetInstance()->RemovePreTargetHandler(&event_handler); | 935 ash::Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
936 } | 936 } |
937 | 937 |
938 } // namespace ash | 938 } // namespace ash |
OLD | NEW |