OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "ui/views/controls/button/menu_button.h" | 5 #include "ui/views/controls/button/menu_button.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 generator()->ClickLeftButton(); | 335 generator()->ClickLeftButton(); |
336 | 336 |
337 // Check that MenuButton has notified the listener, while it was in pressed | 337 // Check that MenuButton has notified the listener, while it was in pressed |
338 // state. | 338 // state. |
339 EXPECT_EQ(button(), menu_button_listener.last_source()); | 339 EXPECT_EQ(button(), menu_button_listener.last_source()); |
340 EXPECT_EQ(Button::STATE_HOVERED, menu_button_listener.last_source_state()); | 340 EXPECT_EQ(Button::STATE_HOVERED, menu_button_listener.last_source_state()); |
341 } | 341 } |
342 | 342 |
343 // Test that the MenuButton stays pressed while there are any PressedLocks. | 343 // Test that the MenuButton stays pressed while there are any PressedLocks. |
344 TEST_F(MenuButtonTest, ButtonStateForMenuButtonsWithPressedLocks) { | 344 TEST_F(MenuButtonTest, ButtonStateForMenuButtonsWithPressedLocks) { |
345 // Hovered-state is not updated under mus when EventGenerator send a | 345 // Similarly for aura-mus-client the location of the cursor is not updated by |
346 // mouse-move event. https://crbug.com/615033 | 346 // EventGenerator so that IsMouseHovered() checks the wrong thing. |
| 347 // https://crbug.com/615033. |
347 if (IsMus()) | 348 if (IsMus()) |
348 return; | 349 return; |
349 | 350 |
350 // Similarly for aura-mus-client the location of the cursor is not updated by | |
351 // EventGenerator so that IsMouseHovered() checks the wrong thing. | |
352 // https://crbug.com/615033. | |
353 if (IsAuraMusClient()) | |
354 return; | |
355 | |
356 CreateMenuButtonWithNoListener(); | 351 CreateMenuButtonWithNoListener(); |
357 | 352 |
358 // Move the mouse over the button; the button should be in a hovered state. | 353 // Move the mouse over the button; the button should be in a hovered state. |
359 generator()->MoveMouseTo(gfx::Point(10, 10)); | 354 generator()->MoveMouseTo(gfx::Point(10, 10)); |
360 EXPECT_EQ(Button::STATE_HOVERED, button()->state()); | 355 EXPECT_EQ(Button::STATE_HOVERED, button()->state()); |
361 | 356 |
362 // Introduce a PressedLock, which should make the button pressed. | 357 // Introduce a PressedLock, which should make the button pressed. |
363 std::unique_ptr<MenuButton::PressedLock> pressed_lock1( | 358 std::unique_ptr<MenuButton::PressedLock> pressed_lock1( |
364 new MenuButton::PressedLock(button())); | 359 new MenuButton::PressedLock(button())); |
365 EXPECT_EQ(Button::STATE_PRESSED, button()->state()); | 360 EXPECT_EQ(Button::STATE_PRESSED, button()->state()); |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 button()->Activate(nullptr); | 529 button()->Activate(nullptr); |
535 | 530 |
536 EXPECT_EQ(InkDropState::ACTIVATED, ink_drop()->GetTargetInkDropState()); | 531 EXPECT_EQ(InkDropState::ACTIVATED, ink_drop()->GetTargetInkDropState()); |
537 } | 532 } |
538 | 533 |
539 #if defined(USE_AURA) | 534 #if defined(USE_AURA) |
540 | 535 |
541 // Tests that the MenuButton does not become pressed if it can be dragged, and a | 536 // Tests that the MenuButton does not become pressed if it can be dragged, and a |
542 // DragDropClient is processing the events. | 537 // DragDropClient is processing the events. |
543 TEST_F(MenuButtonTest, DraggableMenuButtonDoesNotActivateOnDrag) { | 538 TEST_F(MenuButtonTest, DraggableMenuButtonDoesNotActivateOnDrag) { |
544 // The test uses drag-n-drop, which isn't yet supported on mus. | |
545 // https://crbug.com/614037. | |
546 if (IsMus()) | |
547 return; | |
548 // TODO: test uses GetContext(), which is not applicable to aura-mus. | 539 // TODO: test uses GetContext(), which is not applicable to aura-mus. |
549 // http://crbug.com/663809. | 540 // http://crbug.com/663809. |
550 if (IsAuraMusClient()) | 541 if (IsMus()) |
551 return; | 542 return; |
552 TestMenuButtonListener menu_button_listener; | 543 TestMenuButtonListener menu_button_listener; |
553 CreateMenuButtonWithMenuButtonListener(&menu_button_listener); | 544 CreateMenuButtonWithMenuButtonListener(&menu_button_listener); |
554 TestDragController drag_controller; | 545 TestDragController drag_controller; |
555 button()->set_drag_controller(&drag_controller); | 546 button()->set_drag_controller(&drag_controller); |
556 | 547 |
557 TestDragDropClient drag_client; | 548 TestDragDropClient drag_client; |
558 SetDragDropClient(GetContext(), &drag_client); | 549 SetDragDropClient(GetContext(), &drag_client); |
559 button()->PrependPreTargetHandler(&drag_client); | 550 button()->PrependPreTargetHandler(&drag_client); |
560 | 551 |
561 generator()->DragMouseBy(10, 0); | 552 generator()->DragMouseBy(10, 0); |
562 EXPECT_EQ(nullptr, menu_button_listener.last_source()); | 553 EXPECT_EQ(nullptr, menu_button_listener.last_source()); |
563 EXPECT_EQ(Button::STATE_NORMAL, menu_button_listener.last_source_state()); | 554 EXPECT_EQ(Button::STATE_NORMAL, menu_button_listener.last_source_state()); |
564 } | 555 } |
565 | 556 |
566 #endif // USE_AURA | 557 #endif // USE_AURA |
567 | 558 |
568 // No touch on desktop Mac. Tracked in http://crbug.com/445520. | 559 // No touch on desktop Mac. Tracked in http://crbug.com/445520. |
569 #if !defined(OS_MACOSX) || defined(USE_AURA) | 560 #if !defined(OS_MACOSX) || defined(USE_AURA) |
570 | 561 |
571 // Tests if the listener is notified correctly when a gesture tap happens on a | 562 // Tests if the listener is notified correctly when a gesture tap happens on a |
572 // MenuButton that has a MenuButtonListener. | 563 // MenuButton that has a MenuButtonListener. |
573 TEST_F(MenuButtonTest, ActivateDropDownOnGestureTap) { | 564 TEST_F(MenuButtonTest, ActivateDropDownOnGestureTap) { |
574 // Hovered-state is not updated under mus when EventGenerator send a | |
575 // mouse-move event. https://crbug.com/615033 | |
576 if (IsMus()) | |
577 return; | |
578 // Similarly for aura-mus-client the location of the cursor is not updated by | 565 // Similarly for aura-mus-client the location of the cursor is not updated by |
579 // EventGenerator so that IsMouseHovered() checks the wrong thing. | 566 // EventGenerator so that IsMouseHovered() checks the wrong thing. |
580 // https://crbug.com/615033. | 567 // https://crbug.com/615033. |
581 if (IsAuraMusClient()) | 568 if (IsMus()) |
582 return; | 569 return; |
583 TestMenuButtonListener menu_button_listener; | 570 TestMenuButtonListener menu_button_listener; |
584 CreateMenuButtonWithMenuButtonListener(&menu_button_listener); | 571 CreateMenuButtonWithMenuButtonListener(&menu_button_listener); |
585 | 572 |
586 // Move the mouse outside the menu button so that it doesn't impact the | 573 // Move the mouse outside the menu button so that it doesn't impact the |
587 // button state. | 574 // button state. |
588 generator()->MoveMouseTo(400, 400); | 575 generator()->MoveMouseTo(400, 400); |
589 EXPECT_FALSE(button()->IsMouseHovered()); | 576 EXPECT_FALSE(button()->IsMouseHovered()); |
590 | 577 |
591 generator()->GestureTapAt(gfx::Point(10, 10)); | 578 generator()->GestureTapAt(gfx::Point(10, 10)); |
(...skipping 29 matching lines...) Expand all Loading... |
621 | 608 |
622 generator()->MoveTouch(gfx::Point(10, 30)); | 609 generator()->MoveTouch(gfx::Point(10, 30)); |
623 generator()->ReleaseTouch(); | 610 generator()->ReleaseTouch(); |
624 EXPECT_EQ(Button::STATE_NORMAL, button()->state()); | 611 EXPECT_EQ(Button::STATE_NORMAL, button()->state()); |
625 EXPECT_EQ(nullptr, menu_button_listener.last_source()); | 612 EXPECT_EQ(nullptr, menu_button_listener.last_source()); |
626 } | 613 } |
627 | 614 |
628 #endif // !defined(OS_MACOSX) || defined(USE_AURA) | 615 #endif // !defined(OS_MACOSX) || defined(USE_AURA) |
629 | 616 |
630 } // namespace views | 617 } // namespace views |
OLD | NEW |