OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "base/keyboard_codes.h" | 5 #include "base/keyboard_codes.h" |
6 #include "base/string_util.h" | 6 #include "base/string_util.h" |
7 #include "chrome/browser/automation/ui_controls.h" | 7 #include "chrome/browser/automation/ui_controls.h" |
8 #include "chrome/browser/bookmarks/bookmark_model.h" | 8 #include "chrome/browser/bookmarks/bookmark_model.h" |
9 #include "chrome/browser/bookmarks/bookmark_utils.h" | 9 #include "chrome/browser/bookmarks/bookmark_utils.h" |
10 #include "chrome/browser/pref_service.h" | 10 #include "chrome/browser/pref_service.h" |
11 #include "chrome/browser/profile.h" | 11 #include "chrome/browser/profile.h" |
12 #include "chrome/browser/tab_contents/page_navigator.h" | 12 #include "chrome/browser/tab_contents/page_navigator.h" |
13 #include "chrome/browser/views/bookmark_bar_view.h" | 13 #include "chrome/browser/views/bookmark_bar_view.h" |
| 14 #include "chrome/common/notification_service.h" |
14 #include "chrome/common/pref_names.h" | 15 #include "chrome/common/pref_names.h" |
15 #include "chrome/test/testing_profile.h" | 16 #include "chrome/test/testing_profile.h" |
16 #include "chrome/test/interactive_ui/view_event_test_base.h" | 17 #include "chrome/test/interactive_ui/view_event_test_base.h" |
| 18 #include "chrome/test/ui_test_utils.h" |
17 #include "grit/generated_resources.h" | 19 #include "grit/generated_resources.h" |
18 #include "views/controls/button/menu_button.h" | 20 #include "views/controls/button/menu_button.h" |
19 #include "views/controls/button/text_button.h" | 21 #include "views/controls/button/text_button.h" |
20 #include "views/controls/menu/menu_controller.h" | 22 #include "views/controls/menu/menu_controller.h" |
21 #include "views/controls/menu/menu_item_view.h" | 23 #include "views/controls/menu/menu_item_view.h" |
22 #include "views/controls/menu/submenu_view.h" | 24 #include "views/controls/menu/submenu_view.h" |
23 #include "views/window/window.h" | 25 #include "views/window/window.h" |
24 | 26 |
| 27 #if defined(OS_LINUX) |
| 28 // See http://crbug.com/40040 for details. |
| 29 #define MAYBE_DND DISABLED_DND |
| 30 #define MAYBE_DNDToDifferentMenu DISABLED_DNDToDifferentMenu |
| 31 #define MAYBE_DNDBackToOriginatingMenu DISABLED_DNDBackToOriginatingMenu |
| 32 |
| 33 // See http://crbug.com/40039 for details. |
| 34 #define MAYBE_KeyEvents DISABLED_KeyEvents |
| 35 |
| 36 #else |
| 37 |
| 38 #define MAYBE_DND DND |
| 39 #define MAYBE_DNDToDifferentMenu DNDToDifferentMenu |
| 40 #define MAYBE_DNDBackToOriginatingMenu DNDBackToOriginatingMenu |
| 41 #define MAYBE_DNDBackToOriginatingMenu DNDBackToOriginatingMenu |
| 42 #define MAYBE_KeyEvents KeyEvents |
| 43 |
| 44 #endif |
| 45 |
25 namespace { | 46 namespace { |
26 | 47 |
27 // PageNavigator implementation that records the URL. | 48 // PageNavigator implementation that records the URL. |
28 class TestingPageNavigator : public PageNavigator { | 49 class TestingPageNavigator : public PageNavigator { |
29 public: | 50 public: |
30 virtual void OpenURL(const GURL& url, const GURL& referrer, | 51 virtual void OpenURL(const GURL& url, const GURL& referrer, |
31 WindowOpenDisposition disposition, | 52 WindowOpenDisposition disposition, |
32 PageTransition::Type transition) { | 53 PageTransition::Type transition) { |
33 url_ = url; | 54 url_ = url; |
34 } | 55 } |
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 menu->GetSubmenu()->GetMenuItemAt(1); | 359 menu->GetSubmenu()->GetMenuItemAt(1); |
339 ASSERT_TRUE(child_menu->GetSubmenu() != NULL); | 360 ASSERT_TRUE(child_menu->GetSubmenu() != NULL); |
340 ASSERT_FALSE(child_menu->GetSubmenu()->IsShowing()); | 361 ASSERT_FALSE(child_menu->GetSubmenu()->IsShowing()); |
341 | 362 |
342 // And submenu we last clicked is showing. | 363 // And submenu we last clicked is showing. |
343 child_menu = menu->GetSubmenu()->GetMenuItemAt(2); | 364 child_menu = menu->GetSubmenu()->GetMenuItemAt(2); |
344 ASSERT_TRUE(child_menu != NULL); | 365 ASSERT_TRUE(child_menu != NULL); |
345 ASSERT_TRUE(child_menu->GetSubmenu()->IsShowing()); | 366 ASSERT_TRUE(child_menu->GetSubmenu()->IsShowing()); |
346 | 367 |
347 // Nothing should have been selected. | 368 // Nothing should have been selected. |
348 ASSERT_TRUE(navigator_.url_ == GURL()); | 369 EXPECT_EQ(GURL(), navigator_.url_); |
349 | 370 |
350 // Hide menu. | 371 // Hide menu. |
351 menu->GetMenuController()->Cancel(true); | 372 menu->GetMenuController()->Cancel(true); |
352 | 373 |
353 Done(); | 374 Done(); |
354 } | 375 } |
355 }; | 376 }; |
356 | 377 |
357 VIEW_TEST(BookmarkBarViewTest3, Submenus) | 378 VIEW_TEST(BookmarkBarViewTest3, Submenus) |
358 | 379 |
| 380 // Observer that posts task upon the context menu creation. |
| 381 // This is necessary for Linux as the context menu has to check |
| 382 // the clipboard, which invokes the event loop. |
| 383 class ContextMenuNotificationObserver : public NotificationObserver { |
| 384 public: |
| 385 explicit ContextMenuNotificationObserver(Task* task) : task_(task) { |
| 386 registrar_.Add(this, |
| 387 NotificationType::BOOKMARK_CONTEXT_MENU_SHOWN, |
| 388 NotificationService::AllSources()); |
| 389 } |
| 390 |
| 391 virtual void Observe(NotificationType type, |
| 392 const NotificationSource& source, |
| 393 const NotificationDetails& details) { |
| 394 MessageLoop::current()->PostTask(FROM_HERE, task_); |
| 395 } |
| 396 |
| 397 private: |
| 398 NotificationRegistrar registrar_; |
| 399 Task* task_; |
| 400 |
| 401 DISALLOW_COPY_AND_ASSIGN(ContextMenuNotificationObserver); |
| 402 }; |
| 403 |
359 // Tests context menus by way of opening a context menu for a bookmark, | 404 // Tests context menus by way of opening a context menu for a bookmark, |
360 // then right clicking to get context menu and selecting the first menu item | 405 // then right clicking to get context menu and selecting the first menu item |
361 // (open). | 406 // (open). |
362 class BookmarkBarViewTest4 : public BookmarkBarViewEventTestBase { | 407 class BookmarkBarViewTest4 : public BookmarkBarViewEventTestBase { |
| 408 public: |
| 409 BookmarkBarViewTest4() |
| 410 : ALLOW_THIS_IN_INITIALIZER_LIST( |
| 411 observer_(CreateEventTask(this, &BookmarkBarViewTest4::Step3))) { |
| 412 } |
| 413 |
363 protected: | 414 protected: |
364 virtual void DoTestOnMessageLoop() { | 415 virtual void DoTestOnMessageLoop() { |
365 // Move the mouse to the first folder on the bookmark bar and press the | 416 // Move the mouse to the first folder on the bookmark bar and press the |
366 // mouse. | 417 // mouse. |
367 views::TextButton* button = bb_view_->other_bookmarked_button(); | 418 views::TextButton* button = bb_view_->other_bookmarked_button(); |
368 ui_controls::MoveMouseToCenterAndPress(button, ui_controls::LEFT, | 419 ui_controls::MoveMouseToCenterAndPress(button, ui_controls::LEFT, |
369 ui_controls::DOWN | ui_controls::UP, | 420 ui_controls::DOWN | ui_controls::UP, |
370 CreateEventTask(this, &BookmarkBarViewTest4::Step2)); | 421 CreateEventTask(this, &BookmarkBarViewTest4::Step2)); |
371 } | 422 } |
372 | 423 |
373 private: | 424 private: |
374 void Step2() { | 425 void Step2() { |
375 // Menu should be showing. | 426 // Menu should be showing. |
376 views::MenuItemView* menu = bb_view_->GetMenu(); | 427 views::MenuItemView* menu = bb_view_->GetMenu(); |
377 ASSERT_TRUE(menu != NULL); | 428 ASSERT_TRUE(menu != NULL); |
378 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); | 429 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); |
379 | 430 |
380 views::MenuItemView* child_menu = | 431 views::MenuItemView* child_menu = |
381 menu->GetSubmenu()->GetMenuItemAt(0); | 432 menu->GetSubmenu()->GetMenuItemAt(0); |
382 ASSERT_TRUE(child_menu != NULL); | 433 ASSERT_TRUE(child_menu != NULL); |
383 | 434 |
384 // Right click on the first child to get its context menu. | 435 // Right click on the first child to get its context menu. |
385 ui_controls::MoveMouseToCenterAndPress(child_menu, ui_controls::RIGHT, | 436 ui_controls::MoveMouseToCenterAndPress(child_menu, ui_controls::RIGHT, |
386 ui_controls::DOWN | ui_controls::UP, | 437 ui_controls::DOWN | ui_controls::UP, NULL); |
387 CreateEventTask(this, &BookmarkBarViewTest4::Step3)); | 438 // Step3 will be invoked by ContextMenuNotificationObserver. |
388 } | 439 } |
389 | 440 |
390 void Step3() { | 441 void Step3() { |
391 // Make sure the context menu is showing. | 442 // Make sure the context menu is showing. |
392 views::MenuItemView* menu = bb_view_->GetContextMenu(); | 443 views::MenuItemView* menu = bb_view_->GetContextMenu(); |
393 ASSERT_TRUE(menu != NULL); | 444 ASSERT_TRUE(menu != NULL); |
394 ASSERT_TRUE(menu->GetSubmenu()); | 445 ASSERT_TRUE(menu->GetSubmenu()); |
395 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); | 446 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); |
396 | 447 |
397 // Select the first menu item (open). | 448 // Select the first menu item (open). |
398 ui_controls::MoveMouseToCenterAndPress(menu->GetSubmenu()->GetMenuItemAt(0), | 449 ui_controls::MoveMouseToCenterAndPress(menu->GetSubmenu()->GetMenuItemAt(0), |
399 ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP, | 450 ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP, |
400 CreateEventTask(this, &BookmarkBarViewTest4::Step4)); | 451 CreateEventTask(this, &BookmarkBarViewTest4::Step4)); |
401 } | 452 } |
402 | 453 |
403 void Step4() { | 454 void Step4() { |
404 ASSERT_TRUE(navigator_.url_ == | 455 EXPECT_EQ(navigator_.url_, |
405 model_->other_node()->GetChild(0)->GetURL()); | 456 model_->other_node()->GetChild(0)->GetURL()); |
406 | 457 |
407 Done(); | 458 Done(); |
408 } | 459 } |
| 460 |
| 461 ContextMenuNotificationObserver observer_; |
409 }; | 462 }; |
410 | 463 |
411 VIEW_TEST(BookmarkBarViewTest4, ContextMenus) | 464 VIEW_TEST(BookmarkBarViewTest4, ContextMenus) |
412 | 465 |
413 // Tests drag and drop within the same menu. | 466 // Tests drag and drop within the same menu. |
414 class BookmarkBarViewTest5 : public BookmarkBarViewEventTestBase { | 467 class BookmarkBarViewTest5 : public BookmarkBarViewEventTestBase { |
415 protected: | 468 protected: |
416 virtual void DoTestOnMessageLoop() { | 469 virtual void DoTestOnMessageLoop() { |
417 url_dragging_ = | 470 url_dragging_ = |
418 model_->GetBookmarkBarNode()->GetChild(0)->GetChild(0)->GetURL(); | 471 model_->GetBookmarkBarNode()->GetChild(0)->GetChild(0)->GetURL(); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
451 // Start a drag. | 504 // Start a drag. |
452 ui_controls::SendMouseMoveNotifyWhenDone(loc.x() + 10, loc.y(), | 505 ui_controls::SendMouseMoveNotifyWhenDone(loc.x() + 10, loc.y(), |
453 CreateEventTask(this, &BookmarkBarViewTest5::Step4)); | 506 CreateEventTask(this, &BookmarkBarViewTest5::Step4)); |
454 | 507 |
455 // See comment above this method as to why we do this. | 508 // See comment above this method as to why we do this. |
456 ScheduleMouseMoveInBackground(loc.x(), loc.y()); | 509 ScheduleMouseMoveInBackground(loc.x(), loc.y()); |
457 } | 510 } |
458 | 511 |
459 void Step4() { | 512 void Step4() { |
460 // Drop the item so that it's now the second item. | 513 // Drop the item so that it's now the second item. |
461 views::MenuItemView* target_menu = | 514 views::MenuItemView* target_menu = |
462 bb_view_->GetMenu()->GetSubmenu()->GetMenuItemAt(1); | 515 bb_view_->GetMenu()->GetSubmenu()->GetMenuItemAt(1); |
463 gfx::Point loc(1, target_menu->height() - 1); | 516 gfx::Point loc(1, target_menu->height() - 1); |
464 views::View::ConvertPointToScreen(target_menu, &loc); | 517 views::View::ConvertPointToScreen(target_menu, &loc); |
465 ui_controls::SendMouseMove(loc.x(), loc.y()); | 518 ui_controls::SendMouseMove(loc.x(), loc.y()); |
466 | 519 |
467 ui_controls::SendMouseEventsNotifyWhenDone(ui_controls::LEFT, | 520 ui_controls::SendMouseEventsNotifyWhenDone(ui_controls::LEFT, |
468 ui_controls::UP, | 521 ui_controls::UP, |
469 CreateEventTask(this, &BookmarkBarViewTest5::Step5)); | 522 CreateEventTask(this, &BookmarkBarViewTest5::Step5)); |
470 } | 523 } |
471 | 524 |
472 void Step5() { | 525 void Step5() { |
473 GURL url = model_->GetBookmarkBarNode()->GetChild(0)->GetChild(1)->GetURL(); | 526 GURL url = model_->GetBookmarkBarNode()->GetChild(0)->GetChild(1)->GetURL(); |
474 ASSERT_TRUE(url == url_dragging_); | 527 EXPECT_EQ(url_dragging_, url); |
475 Done(); | 528 Done(); |
476 } | 529 } |
477 | 530 |
478 GURL url_dragging_; | 531 GURL url_dragging_; |
479 }; | 532 }; |
480 | 533 |
481 VIEW_TEST(BookmarkBarViewTest5, DND) | 534 VIEW_TEST(BookmarkBarViewTest5, MAYBE_DND) |
482 | 535 |
483 // Tests holding mouse down on overflow button, dragging such that menu pops up | 536 // Tests holding mouse down on overflow button, dragging such that menu pops up |
484 // then selecting an item. | 537 // then selecting an item. |
485 class BookmarkBarViewTest6 : public BookmarkBarViewEventTestBase { | 538 class BookmarkBarViewTest6 : public BookmarkBarViewEventTestBase { |
486 protected: | 539 protected: |
487 virtual void DoTestOnMessageLoop() { | 540 virtual void DoTestOnMessageLoop() { |
488 // Press the mouse button on the overflow button. Don't release it though. | 541 // Press the mouse button on the overflow button. Don't release it though. |
489 views::TextButton* button = bb_view_->overflow_button(); | 542 views::TextButton* button = bb_view_->overflow_button(); |
490 ui_controls::MoveMouseToCenterAndPress(button, ui_controls::LEFT, | 543 ui_controls::MoveMouseToCenterAndPress(button, ui_controls::LEFT, |
491 ui_controls::DOWN, CreateEventTask(this, &BookmarkBarViewTest6::Step2)); | 544 ui_controls::DOWN, CreateEventTask(this, &BookmarkBarViewTest6::Step2)); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
581 } | 634 } |
582 | 635 |
583 void Step5() { | 636 void Step5() { |
584 ASSERT_TRUE(model_->other_node()->GetChild(0)->GetURL() == url_dragging_); | 637 ASSERT_TRUE(model_->other_node()->GetChild(0)->GetURL() == url_dragging_); |
585 Done(); | 638 Done(); |
586 } | 639 } |
587 | 640 |
588 GURL url_dragging_; | 641 GURL url_dragging_; |
589 }; | 642 }; |
590 | 643 |
591 VIEW_TEST(BookmarkBarViewTest7, DNDToDifferentMenu) | 644 VIEW_TEST(BookmarkBarViewTest7, MAYBE_DNDToDifferentMenu) |
592 | 645 |
593 // Drags from one menu to next so that original menu closes, then back to | 646 // Drags from one menu to next so that original menu closes, then back to |
594 // original menu. | 647 // original menu. |
595 class BookmarkBarViewTest8 : public BookmarkBarViewEventTestBase { | 648 class BookmarkBarViewTest8 : public BookmarkBarViewEventTestBase { |
596 protected: | 649 protected: |
597 virtual void DoTestOnMessageLoop() { | 650 virtual void DoTestOnMessageLoop() { |
598 url_dragging_ = | 651 url_dragging_ = |
599 model_->GetBookmarkBarNode()->GetChild(0)->GetChild(0)->GetURL(); | 652 model_->GetBookmarkBarNode()->GetChild(0)->GetChild(0)->GetURL(); |
600 | 653 |
601 // Move the mouse to the first folder on the bookmark bar and press the | 654 // Move the mouse to the first folder on the bookmark bar and press the |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
668 // Make sure drop was processed. | 721 // Make sure drop was processed. |
669 GURL final_url = model_->GetBookmarkBarNode()->GetChild(0)->GetChild(0)-> | 722 GURL final_url = model_->GetBookmarkBarNode()->GetChild(0)->GetChild(0)-> |
670 GetChild(1)->GetURL(); | 723 GetChild(1)->GetURL(); |
671 ASSERT_TRUE(final_url == url_dragging_); | 724 ASSERT_TRUE(final_url == url_dragging_); |
672 Done(); | 725 Done(); |
673 } | 726 } |
674 | 727 |
675 GURL url_dragging_; | 728 GURL url_dragging_; |
676 }; | 729 }; |
677 | 730 |
678 VIEW_TEST(BookmarkBarViewTest8, DNDBackToOriginatingMenu) | 731 VIEW_TEST(BookmarkBarViewTest8, MAYBE_DNDBackToOriginatingMenu) |
679 | 732 |
680 // Moves the mouse over the scroll button and makes sure we get scrolling. | 733 // Moves the mouse over the scroll button and makes sure we get scrolling. |
681 class BookmarkBarViewTest9 : public BookmarkBarViewEventTestBase { | 734 class BookmarkBarViewTest9 : public BookmarkBarViewEventTestBase { |
682 protected: | 735 protected: |
683 virtual bool CreateBigMenu() { return true; } | 736 virtual bool CreateBigMenu() { return true; } |
684 | 737 |
685 virtual void DoTestOnMessageLoop() { | 738 virtual void DoTestOnMessageLoop() { |
686 // Move the mouse to the first folder on the bookmark bar and press the | 739 // Move the mouse to the first folder on the bookmark bar and press the |
687 // mouse. | 740 // mouse. |
688 views::TextButton* button = bb_view_->GetBookmarkButton(0); | 741 views::TextButton* button = bb_view_->GetBookmarkButton(0); |
(...skipping 17 matching lines...) Expand all Loading... |
706 // Move the mouse over the scroll button. | 759 // Move the mouse over the scroll button. |
707 views::View* scroll_container = menu->GetSubmenu()->GetParent(); | 760 views::View* scroll_container = menu->GetSubmenu()->GetParent(); |
708 ASSERT_TRUE(scroll_container != NULL); | 761 ASSERT_TRUE(scroll_container != NULL); |
709 scroll_container = scroll_container->GetParent(); | 762 scroll_container = scroll_container->GetParent(); |
710 ASSERT_TRUE(scroll_container != NULL); | 763 ASSERT_TRUE(scroll_container != NULL); |
711 views::View* scroll_down_button = scroll_container->GetChildViewAt(1); | 764 views::View* scroll_down_button = scroll_container->GetChildViewAt(1); |
712 ASSERT_TRUE(scroll_down_button); | 765 ASSERT_TRUE(scroll_down_button); |
713 gfx::Point loc(scroll_down_button->width() / 2, | 766 gfx::Point loc(scroll_down_button->width() / 2, |
714 scroll_down_button->height() / 2); | 767 scroll_down_button->height() / 2); |
715 views::View::ConvertPointToScreen(scroll_down_button, &loc); | 768 views::View::ConvertPointToScreen(scroll_down_button, &loc); |
| 769 |
| 770 // On linux, the sending one location isn't enough. |
| 771 ui_controls::SendMouseMove(loc.x() - 1 , loc.y() - 1); |
716 ui_controls::SendMouseMoveNotifyWhenDone( | 772 ui_controls::SendMouseMoveNotifyWhenDone( |
717 loc.x(), loc.y(), CreateEventTask(this, &BookmarkBarViewTest9::Step3)); | 773 loc.x(), loc.y(), CreateEventTask(this, &BookmarkBarViewTest9::Step3)); |
718 } | 774 } |
719 | 775 |
720 void Step3() { | 776 void Step3() { |
721 MessageLoop::current()->PostDelayedTask(FROM_HERE, | 777 MessageLoop::current()->PostDelayedTask(FROM_HERE, |
722 NewRunnableMethod(this, &BookmarkBarViewTest9::Step4), 200); | 778 NewRunnableMethod(this, &BookmarkBarViewTest9::Step4), 200); |
723 } | 779 } |
724 | 780 |
725 void Step4() { | 781 void Step4() { |
726 gfx::Point menu_loc; | 782 gfx::Point menu_loc; |
727 views::View::ConvertPointToScreen(first_menu_, &menu_loc); | 783 views::View::ConvertPointToScreen(first_menu_, &menu_loc); |
728 ASSERT_NE(start_y_, menu_loc.y()); | 784 ASSERT_NE(start_y_, menu_loc.y()); |
729 | 785 |
730 // Hide menu. | 786 // Hide menu. |
731 bb_view_->GetMenu()->GetMenuController()->Cancel(true); | 787 bb_view_->GetMenu()->GetMenuController()->Cancel(true); |
732 | 788 |
733 Done(); | 789 // On linux, Cancelling menu will call Quit on the message loop, |
| 790 // which can interfere with Done. We need to run Done in the |
| 791 // next execution loop. |
| 792 MessageLoop::current()->PostTask( |
| 793 FROM_HERE, |
| 794 NewRunnableMethod(this, &ViewEventTestBase::Done)); |
734 } | 795 } |
735 | 796 |
736 int start_y_; | 797 int start_y_; |
737 views::MenuItemView* first_menu_; | 798 views::MenuItemView* first_menu_; |
738 }; | 799 }; |
739 | 800 |
740 VIEW_TEST(BookmarkBarViewTest9, ScrollButtonScrolls) | 801 VIEW_TEST(BookmarkBarViewTest9, ScrollButtonScrolls) |
741 | 802 |
742 // Tests up/down/left/enter key messages. | 803 // Tests up/down/left/enter key messages. |
743 class BookmarkBarViewTest10 : public BookmarkBarViewEventTestBase { | 804 class BookmarkBarViewTest10 : public BookmarkBarViewEventTestBase { |
744 protected: | 805 protected: |
745 virtual void DoTestOnMessageLoop() { | 806 virtual void DoTestOnMessageLoop() { |
746 // Move the mouse to the first folder on the bookmark bar and press the | 807 // Move the mouse to the first folder on the bookmark bar and press the |
747 // mouse. | 808 // mouse. |
748 views::TextButton* button = bb_view_->GetBookmarkButton(0); | 809 views::TextButton* button = bb_view_->GetBookmarkButton(0); |
749 ui_controls::MoveMouseToCenterAndPress(button, ui_controls::LEFT, | 810 ui_controls::MoveMouseToCenterAndPress(button, ui_controls::LEFT, |
750 ui_controls::DOWN | ui_controls::UP, | 811 ui_controls::DOWN | ui_controls::UP, |
751 CreateEventTask(this, &BookmarkBarViewTest10::Step2)); | 812 CreateEventTask(this, &BookmarkBarViewTest10::Step2)); |
| 813 MessageLoop::current()->RunAllPending(); |
752 } | 814 } |
753 | 815 |
754 private: | 816 private: |
755 void Step2() { | 817 void Step2() { |
756 // Menu should be showing. | 818 // Menu should be showing. |
757 views::MenuItemView* menu = bb_view_->GetMenu(); | 819 views::MenuItemView* menu = bb_view_->GetMenu(); |
758 ASSERT_TRUE(menu != NULL); | 820 ASSERT_TRUE(menu != NULL); |
759 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); | 821 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); |
760 | 822 |
761 // Send a down event, which should select the first item. | 823 // Send a down event, which should select the first item. |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
835 } | 897 } |
836 | 898 |
837 void Step8() { | 899 void Step8() { |
838 ASSERT_TRUE( | 900 ASSERT_TRUE( |
839 model_->GetBookmarkBarNode()->GetChild(0)->GetChild(0)->GetURL() == | 901 model_->GetBookmarkBarNode()->GetChild(0)->GetChild(0)->GetURL() == |
840 navigator_.url_); | 902 navigator_.url_); |
841 Done(); | 903 Done(); |
842 } | 904 } |
843 }; | 905 }; |
844 | 906 |
845 VIEW_TEST(BookmarkBarViewTest10, KeyEvents) | 907 VIEW_TEST(BookmarkBarViewTest10, MAYBE_KeyEvents) |
846 | 908 |
847 // Make sure the menu closes with the following sequence: show menu, show | 909 // Make sure the menu closes with the following sequence: show menu, show |
848 // context menu, close context menu (via escape), then click else where. This | 910 // context menu, close context menu (via escape), then click else where. This |
849 // effectively verifies we maintain mouse capture after the context menu is | 911 // effectively verifies we maintain mouse capture after the context menu is |
850 // hidden. | 912 // hidden. |
851 class BookmarkBarViewTest11 : public BookmarkBarViewEventTestBase { | 913 class BookmarkBarViewTest11 : public BookmarkBarViewEventTestBase { |
| 914 public: |
| 915 BookmarkBarViewTest11() |
| 916 : ALLOW_THIS_IN_INITIALIZER_LIST( |
| 917 observer_(CreateEventTask(this, &BookmarkBarViewTest11::Step3))) { |
| 918 } |
| 919 |
852 protected: | 920 protected: |
853 virtual void DoTestOnMessageLoop() { | 921 virtual void DoTestOnMessageLoop() { |
854 // Move the mouse to the first folder on the bookmark bar and press the | 922 // Move the mouse to the first folder on the bookmark bar and press the |
855 // mouse. | 923 // mouse. |
856 views::TextButton* button = bb_view_->other_bookmarked_button(); | 924 views::TextButton* button = bb_view_->other_bookmarked_button(); |
857 ui_controls::MoveMouseToCenterAndPress(button, ui_controls::LEFT, | 925 ui_controls::MoveMouseToCenterAndPress(button, ui_controls::LEFT, |
858 ui_controls::DOWN | ui_controls::UP, | 926 ui_controls::DOWN | ui_controls::UP, |
859 CreateEventTask(this, &BookmarkBarViewTest11::Step2)); | 927 CreateEventTask(this, &BookmarkBarViewTest11::Step2)); |
860 } | 928 } |
861 | 929 |
862 private: | 930 private: |
863 void Step2() { | 931 void Step2() { |
864 // Menu should be showing. | 932 // Menu should be showing. |
865 views::MenuItemView* menu = bb_view_->GetMenu(); | 933 views::MenuItemView* menu = bb_view_->GetMenu(); |
866 ASSERT_TRUE(menu != NULL); | 934 ASSERT_TRUE(menu != NULL); |
867 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); | 935 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); |
868 | 936 |
869 views::MenuItemView* child_menu = | 937 views::MenuItemView* child_menu = |
870 menu->GetSubmenu()->GetMenuItemAt(0); | 938 menu->GetSubmenu()->GetMenuItemAt(0); |
871 ASSERT_TRUE(child_menu != NULL); | 939 ASSERT_TRUE(child_menu != NULL); |
872 | 940 |
873 // Right click on the first child to get its context menu. | 941 // Right click on the first child to get its context menu. |
874 ui_controls::MoveMouseToCenterAndPress(child_menu, ui_controls::RIGHT, | 942 ui_controls::MoveMouseToCenterAndPress(child_menu, ui_controls::RIGHT, |
875 ui_controls::DOWN | ui_controls::UP, | 943 ui_controls::DOWN | ui_controls::UP, NULL); |
876 CreateEventTask(this, &BookmarkBarViewTest11::Step3)); | 944 // Step3 will be invoked by ContextMenuNotificationObserver. |
877 } | 945 } |
878 | 946 |
879 void Step3() { | 947 void Step3() { |
880 // Send escape so that the context menu hides. | 948 // Send escape so that the context menu hides. |
881 ui_controls::SendKeyPressNotifyWhenDone( | 949 ui_controls::SendKeyPressNotifyWhenDone( |
882 NULL, base::VKEY_ESCAPE, false, false, false, | 950 NULL, base::VKEY_ESCAPE, false, false, false, |
883 CreateEventTask(this, &BookmarkBarViewTest11::Step4)); | 951 CreateEventTask(this, &BookmarkBarViewTest11::Step4)); |
884 } | 952 } |
885 | 953 |
886 void Step4() { | 954 void Step4() { |
(...skipping 15 matching lines...) Expand all Loading... |
902 CreateEventTask(this, &BookmarkBarViewTest11::Step5)); | 970 CreateEventTask(this, &BookmarkBarViewTest11::Step5)); |
903 } | 971 } |
904 | 972 |
905 void Step5() { | 973 void Step5() { |
906 // Make sure the menu is not showing. | 974 // Make sure the menu is not showing. |
907 views::MenuItemView* menu = bb_view_->GetMenu(); | 975 views::MenuItemView* menu = bb_view_->GetMenu(); |
908 ASSERT_TRUE(!menu || !menu->GetSubmenu() || | 976 ASSERT_TRUE(!menu || !menu->GetSubmenu() || |
909 !menu->GetSubmenu()->IsShowing()); | 977 !menu->GetSubmenu()->IsShowing()); |
910 Done(); | 978 Done(); |
911 } | 979 } |
| 980 |
| 981 ContextMenuNotificationObserver observer_; |
912 }; | 982 }; |
913 | 983 |
914 VIEW_TEST(BookmarkBarViewTest11, CloseMenuAfterClosingContextMenu) | 984 VIEW_TEST(BookmarkBarViewTest11, CloseMenuAfterClosingContextMenu) |
915 | 985 |
916 // Tests showing a modal dialog from a context menu. | 986 // Tests showing a modal dialog from a context menu. |
917 class BookmarkBarViewTest12 : public BookmarkBarViewEventTestBase { | 987 class BookmarkBarViewTest12 : public BookmarkBarViewEventTestBase { |
918 protected: | 988 protected: |
919 virtual void DoTestOnMessageLoop() { | 989 virtual void DoTestOnMessageLoop() { |
920 // Open up the other folder. | 990 // Open up the other folder. |
921 views::TextButton* button = bb_view_->other_bookmarked_button(); | 991 views::TextButton* button = bb_view_->other_bookmarked_button(); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
989 void Step7() { | 1059 void Step7() { |
990 Done(); | 1060 Done(); |
991 } | 1061 } |
992 }; | 1062 }; |
993 | 1063 |
994 VIEW_TEST(BookmarkBarViewTest12, CloseWithModalDialog) | 1064 VIEW_TEST(BookmarkBarViewTest12, CloseWithModalDialog) |
995 | 1065 |
996 // Tests clicking on the separator of a context menu (this is for coverage of | 1066 // Tests clicking on the separator of a context menu (this is for coverage of |
997 // bug 17862). | 1067 // bug 17862). |
998 class BookmarkBarViewTest13 : public BookmarkBarViewEventTestBase { | 1068 class BookmarkBarViewTest13 : public BookmarkBarViewEventTestBase { |
| 1069 public: |
| 1070 BookmarkBarViewTest13() |
| 1071 : ALLOW_THIS_IN_INITIALIZER_LIST( |
| 1072 observer_(CreateEventTask(this, &BookmarkBarViewTest13::Step3))) { |
| 1073 } |
| 1074 |
999 protected: | 1075 protected: |
1000 virtual void DoTestOnMessageLoop() { | 1076 virtual void DoTestOnMessageLoop() { |
1001 // Move the mouse to the first folder on the bookmark bar and press the | 1077 // Move the mouse to the first folder on the bookmark bar and press the |
1002 // mouse. | 1078 // mouse. |
1003 views::TextButton* button = bb_view_->other_bookmarked_button(); | 1079 views::TextButton* button = bb_view_->other_bookmarked_button(); |
1004 ui_controls::MoveMouseToCenterAndPress(button, ui_controls::LEFT, | 1080 ui_controls::MoveMouseToCenterAndPress(button, ui_controls::LEFT, |
1005 ui_controls::DOWN | ui_controls::UP, | 1081 ui_controls::DOWN | ui_controls::UP, |
1006 CreateEventTask(this, &BookmarkBarViewTest13::Step2)); | 1082 CreateEventTask(this, &BookmarkBarViewTest13::Step2)); |
1007 } | 1083 } |
1008 | 1084 |
1009 private: | 1085 private: |
1010 void Step2() { | 1086 void Step2() { |
1011 // Menu should be showing. | 1087 // Menu should be showing. |
1012 views::MenuItemView* menu = bb_view_->GetMenu(); | 1088 views::MenuItemView* menu = bb_view_->GetMenu(); |
1013 ASSERT_TRUE(menu != NULL); | 1089 ASSERT_TRUE(menu != NULL); |
1014 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); | 1090 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); |
1015 | 1091 |
1016 views::MenuItemView* child_menu = | 1092 views::MenuItemView* child_menu = |
1017 menu->GetSubmenu()->GetMenuItemAt(0); | 1093 menu->GetSubmenu()->GetMenuItemAt(0); |
1018 ASSERT_TRUE(child_menu != NULL); | 1094 ASSERT_TRUE(child_menu != NULL); |
1019 | 1095 |
1020 // Right click on the first child to get its context menu. | 1096 // Right click on the first child to get its context menu. |
1021 ui_controls::MoveMouseToCenterAndPress(child_menu, ui_controls::RIGHT, | 1097 ui_controls::MoveMouseToCenterAndPress(child_menu, ui_controls::RIGHT, |
1022 ui_controls::DOWN | ui_controls::UP, | 1098 ui_controls::DOWN | ui_controls::UP, NULL); |
1023 CreateEventTask(this, &BookmarkBarViewTest13::Step3)); | 1099 // Step3 will be invoked by ContextMenuNotificationObserver. |
1024 } | 1100 } |
1025 | 1101 |
1026 void Step3() { | 1102 void Step3() { |
1027 // Make sure the context menu is showing. | 1103 // Make sure the context menu is showing. |
1028 views::MenuItemView* menu = bb_view_->GetContextMenu(); | 1104 views::MenuItemView* menu = bb_view_->GetContextMenu(); |
1029 ASSERT_TRUE(menu != NULL); | 1105 ASSERT_TRUE(menu != NULL); |
1030 ASSERT_TRUE(menu->GetSubmenu()); | 1106 ASSERT_TRUE(menu->GetSubmenu()); |
1031 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); | 1107 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); |
1032 | 1108 |
1033 // Find the first separator. | 1109 // Find the first separator. |
(...skipping 22 matching lines...) Expand all Loading... |
1056 ASSERT_TRUE(menu->GetSubmenu()); | 1132 ASSERT_TRUE(menu->GetSubmenu()); |
1057 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); | 1133 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); |
1058 | 1134 |
1059 // Select the first context menu item. | 1135 // Select the first context menu item. |
1060 ui_controls::MoveMouseToCenterAndPress(menu->GetSubmenu()->GetMenuItemAt(0), | 1136 ui_controls::MoveMouseToCenterAndPress(menu->GetSubmenu()->GetMenuItemAt(0), |
1061 ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP, | 1137 ui_controls::LEFT, ui_controls::DOWN | ui_controls::UP, |
1062 CreateEventTask(this, &BookmarkBarViewTest13::Step5)); | 1138 CreateEventTask(this, &BookmarkBarViewTest13::Step5)); |
1063 } | 1139 } |
1064 | 1140 |
1065 void Step5() { | 1141 void Step5() { |
1066 DLOG(WARNING) << " DONE"; | |
1067 Done(); | 1142 Done(); |
1068 } | 1143 } |
| 1144 |
| 1145 ContextMenuNotificationObserver observer_; |
1069 }; | 1146 }; |
1070 | 1147 |
1071 VIEW_TEST(BookmarkBarViewTest13, ClickOnContextMenuSeparator) | 1148 VIEW_TEST(BookmarkBarViewTest13, ClickOnContextMenuSeparator) |
1072 | 1149 |
1073 // Makes sure right cliking on a folder on the bookmark bar doesn't result in | 1150 // Makes sure right cliking on a folder on the bookmark bar doesn't result in |
1074 // both a context menu and showing the menu. | 1151 // both a context menu and showing the menu. |
1075 class BookmarkBarViewTest14 : public BookmarkBarViewEventTestBase { | 1152 class BookmarkBarViewTest14 : public BookmarkBarViewEventTestBase { |
| 1153 public: |
| 1154 BookmarkBarViewTest14() |
| 1155 : ALLOW_THIS_IN_INITIALIZER_LIST( |
| 1156 observer_(CreateEventTask(this, &BookmarkBarViewTest14::Step2))) { |
| 1157 } |
| 1158 |
1076 protected: | 1159 protected: |
1077 virtual void DoTestOnMessageLoop() { | 1160 virtual void DoTestOnMessageLoop() { |
1078 // Move the mouse to the first folder on the bookmark bar and press the | 1161 // Move the mouse to the first folder on the bookmark bar and press the |
1079 // right mouse button. | 1162 // right mouse button. |
1080 views::TextButton* button = bb_view_->GetBookmarkButton(0); | 1163 views::TextButton* button = bb_view_->GetBookmarkButton(0); |
1081 ui_controls::MoveMouseToCenterAndPress(button, ui_controls::RIGHT, | 1164 ui_controls::MoveMouseToCenterAndPress(button, ui_controls::RIGHT, |
1082 ui_controls::DOWN | ui_controls::UP, | 1165 ui_controls::DOWN | ui_controls::UP, NULL); |
1083 CreateEventTask(this, &BookmarkBarViewTest14::Step2)); | 1166 // Step2 will be invoked by ContextMenuNotificationObserver. |
1084 } | 1167 } |
1085 | 1168 |
1086 private: | 1169 private: |
| 1170 |
1087 void Step2() { | 1171 void Step2() { |
1088 // Menu should NOT be showing. | 1172 // Menu should NOT be showing. |
1089 views::MenuItemView* menu = bb_view_->GetMenu(); | 1173 views::MenuItemView* menu = bb_view_->GetMenu(); |
1090 ASSERT_TRUE(menu == NULL); | 1174 ASSERT_TRUE(menu == NULL); |
1091 | 1175 |
1092 // Send escape so that the context menu hides. | 1176 // Send escape so that the context menu hides. |
1093 ui_controls::SendKeyPressNotifyWhenDone( | 1177 ui_controls::SendKeyPressNotifyWhenDone( |
1094 NULL, base::VKEY_ESCAPE, false, false, false, | 1178 NULL, base::VKEY_ESCAPE, false, false, false, |
1095 CreateEventTask(this, &BookmarkBarViewTest14::Step3)); | 1179 CreateEventTask(this, &BookmarkBarViewTest14::Step3)); |
1096 } | 1180 } |
1097 | 1181 |
1098 void Step3() { | 1182 void Step3() { |
1099 Done(); | 1183 Done(); |
1100 } | 1184 } |
| 1185 |
| 1186 ContextMenuNotificationObserver observer_; |
1101 }; | 1187 }; |
1102 | 1188 |
1103 VIEW_TEST(BookmarkBarViewTest14, ContextMenus2) | 1189 VIEW_TEST(BookmarkBarViewTest14, ContextMenus2) |
1104 | 1190 |
1105 // Makes sure deleting from the context menu keeps the bookmark menu showing. | 1191 // Makes sure deleting from the context menu keeps the bookmark menu showing. |
1106 class BookmarkBarViewTest15 : public BookmarkBarViewEventTestBase { | 1192 class BookmarkBarViewTest15 : public BookmarkBarViewEventTestBase { |
1107 public: | 1193 public: |
1108 BookmarkBarViewTest15() : deleted_menu_id_(0) {} | 1194 BookmarkBarViewTest15() |
| 1195 : deleted_menu_id_(0), |
| 1196 ALLOW_THIS_IN_INITIALIZER_LIST( |
| 1197 observer_(CreateEventTask(this, &BookmarkBarViewTest15::Step3))) { |
| 1198 } |
1109 | 1199 |
1110 protected: | 1200 protected: |
1111 virtual void DoTestOnMessageLoop() { | 1201 virtual void DoTestOnMessageLoop() { |
1112 // Show the other bookmarks. | 1202 // Show the other bookmarks. |
1113 views::TextButton* button = bb_view_->other_bookmarked_button(); | 1203 views::TextButton* button = bb_view_->other_bookmarked_button(); |
1114 ui_controls::MoveMouseToCenterAndPress(button, ui_controls::LEFT, | 1204 ui_controls::MoveMouseToCenterAndPress(button, ui_controls::LEFT, |
1115 ui_controls::DOWN | ui_controls::UP, | 1205 ui_controls::DOWN | ui_controls::UP, |
1116 CreateEventTask(this, &BookmarkBarViewTest15::Step2)); | 1206 CreateEventTask(this, &BookmarkBarViewTest15::Step2)); |
1117 } | 1207 } |
1118 | 1208 |
1119 private: | 1209 private: |
1120 void Step2() { | 1210 void Step2() { |
1121 // Menu should be showing. | 1211 // Menu should be showing. |
1122 views::MenuItemView* menu = bb_view_->GetMenu(); | 1212 views::MenuItemView* menu = bb_view_->GetMenu(); |
1123 ASSERT_TRUE(menu != NULL); | 1213 ASSERT_TRUE(menu != NULL); |
1124 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); | 1214 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); |
1125 | 1215 |
1126 views::MenuItemView* child_menu = | 1216 views::MenuItemView* child_menu = |
1127 menu->GetSubmenu()->GetMenuItemAt(1); | 1217 menu->GetSubmenu()->GetMenuItemAt(1); |
1128 ASSERT_TRUE(child_menu != NULL); | 1218 ASSERT_TRUE(child_menu != NULL); |
1129 | 1219 |
1130 deleted_menu_id_ = child_menu->GetCommand(); | 1220 deleted_menu_id_ = child_menu->GetCommand(); |
1131 | 1221 |
1132 // Right click on the second child to get its context menu. | 1222 // Right click on the second child to get its context menu. |
1133 ui_controls::MoveMouseToCenterAndPress(child_menu, ui_controls::RIGHT, | 1223 ui_controls::MoveMouseToCenterAndPress(child_menu, ui_controls::RIGHT, |
1134 ui_controls::DOWN | ui_controls::UP, | 1224 ui_controls::DOWN | ui_controls::UP, NULL); |
1135 CreateEventTask(this, &BookmarkBarViewTest15::Step3)); | 1225 // Step3 will be invoked by ContextMenuNotificationObserver. |
1136 } | 1226 } |
1137 | 1227 |
1138 void Step3() { | 1228 void Step3() { |
1139 // Make sure the context menu is showing. | 1229 // Make sure the context menu is showing. |
1140 views::MenuItemView* menu = bb_view_->GetContextMenu(); | 1230 views::MenuItemView* menu = bb_view_->GetContextMenu(); |
1141 ASSERT_TRUE(menu != NULL); | 1231 ASSERT_TRUE(menu != NULL); |
1142 ASSERT_TRUE(menu->GetSubmenu()); | 1232 ASSERT_TRUE(menu->GetSubmenu()); |
1143 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); | 1233 ASSERT_TRUE(menu->GetSubmenu()->IsShowing()); |
1144 | 1234 |
1145 views::MenuItemView* delete_menu = | 1235 views::MenuItemView* delete_menu = |
(...skipping 18 matching lines...) Expand all Loading... |
1164 | 1254 |
1165 // And the deleted_menu_id_ should have been removed. | 1255 // And the deleted_menu_id_ should have been removed. |
1166 ASSERT_TRUE(menu->GetMenuItemByID(deleted_menu_id_) == NULL); | 1256 ASSERT_TRUE(menu->GetMenuItemByID(deleted_menu_id_) == NULL); |
1167 | 1257 |
1168 bb_view_->GetMenu()->GetMenuController()->Cancel(true); | 1258 bb_view_->GetMenu()->GetMenuController()->Cancel(true); |
1169 | 1259 |
1170 Done(); | 1260 Done(); |
1171 } | 1261 } |
1172 | 1262 |
1173 int deleted_menu_id_; | 1263 int deleted_menu_id_; |
| 1264 ContextMenuNotificationObserver observer_; |
1174 }; | 1265 }; |
1175 | 1266 |
1176 VIEW_TEST(BookmarkBarViewTest15, MenuStaysVisibleAfterDelete) | 1267 VIEW_TEST(BookmarkBarViewTest15, MenuStaysVisibleAfterDelete) |
OLD | NEW |