| 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 "chrome/browser/ui/views/sync/one_click_signin_bubble_view.h" |
| 6 |
| 7 #include "base/bind.h" |
| 5 #include "chrome/browser/ui/browser.h" | 8 #include "chrome/browser/ui/browser.h" |
| 6 #include "chrome/browser/ui/browser_window.h" | 9 #include "chrome/browser/ui/browser_window.h" |
| 7 #include "chrome/browser/ui/views/sync/one_click_signin_bubble_view.h" | |
| 8 #include "chrome/test/base/in_process_browser_test.h" | 10 #include "chrome/test/base/in_process_browser_test.h" |
| 9 #include "chrome/test/base/ui_test_utils.h" | 11 #include "chrome/test/base/ui_test_utils.h" |
| 12 #include "content/public/common/page_transition_types.h" |
| 10 #include "ui/views/controls/button/text_button.h" | 13 #include "ui/views/controls/button/text_button.h" |
| 11 #include "ui/views/events/event.h" | 14 #include "ui/views/events/event.h" |
| 12 | 15 |
| 16 namespace { |
| 17 |
| 18 void OnClickLink(Browser* browser) { |
| 19 browser->AddSelectedTabWithURL(GURL("http://www.example.com"), |
| 20 content::PAGE_TRANSITION_AUTO_BOOKMARK); |
| 21 } |
| 22 |
| 23 } // namespace |
| 24 |
| 13 class OneClickSigninBubbleViewBrowserTest : public InProcessBrowserTest { | 25 class OneClickSigninBubbleViewBrowserTest : public InProcessBrowserTest { |
| 14 public: | 26 public: |
| 15 OneClickSigninBubbleViewBrowserTest() : InProcessBrowserTest() { } | 27 OneClickSigninBubbleViewBrowserTest() {} |
| 28 |
| 29 void ShowOneClickSigninBubble() { |
| 30 base::Closure on_click_link_callback = |
| 31 base::Bind(&OnClickLink, base::Unretained(browser())); |
| 32 browser()->window()->ShowOneClickSigninBubble(on_click_link_callback, |
| 33 on_click_link_callback); |
| 34 } |
| 16 | 35 |
| 17 private: | 36 private: |
| 18 DISALLOW_COPY_AND_ASSIGN(OneClickSigninBubbleViewBrowserTest); | 37 DISALLOW_COPY_AND_ASSIGN(OneClickSigninBubbleViewBrowserTest); |
| 19 }; | 38 }; |
| 20 | 39 |
| 21 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, Show) { | 40 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, Show) { |
| 22 browser()->window()->ShowOneClickSigninBubble(); | 41 ShowOneClickSigninBubble(); |
| 23 ui_test_utils::RunAllPendingInMessageLoop(); | 42 ui_test_utils::RunAllPendingInMessageLoop(); |
| 24 EXPECT_TRUE(OneClickSigninBubbleView::IsShowing()); | 43 EXPECT_TRUE(OneClickSigninBubbleView::IsShowing()); |
| 25 | 44 |
| 26 OneClickSigninBubbleView::Hide(); | 45 OneClickSigninBubbleView::Hide(); |
| 27 ui_test_utils::RunAllPendingInMessageLoop(); | 46 ui_test_utils::RunAllPendingInMessageLoop(); |
| 28 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing()); | 47 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing()); |
| 29 } | 48 } |
| 30 | 49 |
| 31 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, CloseButton) { | 50 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, CloseButton) { |
| 32 int initial_tab_count = browser()->tab_count(); | 51 int initial_tab_count = browser()->tab_count(); |
| 33 | 52 |
| 34 browser()->window()->ShowOneClickSigninBubble(); | 53 ShowOneClickSigninBubble(); |
| 35 ui_test_utils::RunAllPendingInMessageLoop(); | 54 ui_test_utils::RunAllPendingInMessageLoop(); |
| 36 EXPECT_TRUE(OneClickSigninBubbleView::IsShowing()); | 55 EXPECT_TRUE(OneClickSigninBubbleView::IsShowing()); |
| 37 | 56 |
| 38 OneClickSigninBubbleView* view = OneClickSigninBubbleView::view_for_testing(); | 57 OneClickSigninBubbleView* view = OneClickSigninBubbleView::view_for_testing(); |
| 39 EXPECT_TRUE(view != NULL); | 58 EXPECT_TRUE(view != NULL); |
| 40 EXPECT_EQ(initial_tab_count, browser()->tab_count()); | 59 EXPECT_EQ(initial_tab_count, browser()->tab_count()); |
| 41 | 60 |
| 42 // Simulate pressing the OK button. Set the message loop in the bubble | 61 // Simulate pressing the OK button. Set the message loop in the bubble |
| 43 // view so that it can be quit once the bubble is hidden. | 62 // view so that it can be quit once the bubble is hidden. |
| 44 view->set_message_loop_for_testing(MessageLoop::current()); | 63 view->set_message_loop_for_testing(MessageLoop::current()); |
| 45 views::ButtonListener* listener = view; | 64 views::ButtonListener* listener = view; |
| 46 views::MouseEvent event(ui::ET_MOUSE_PRESSED, 0, 0, 0); | 65 views::MouseEvent event(ui::ET_MOUSE_PRESSED, 0, 0, 0); |
| 47 listener->ButtonPressed(view->close_button_for_testing(), event); | 66 listener->ButtonPressed(view->close_button_for_testing(), event); |
| 48 | 67 |
| 49 // View should no longer be showing. The message loop will exit once the | 68 // View should no longer be showing. The message loop will exit once the |
| 50 // fade animation of the bubble is done. | 69 // fade animation of the bubble is done. |
| 51 ui_test_utils::RunMessageLoop(); | 70 ui_test_utils::RunMessageLoop(); |
| 52 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing()); | 71 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing()); |
| 53 EXPECT_EQ(initial_tab_count, browser()->tab_count()); | 72 EXPECT_EQ(initial_tab_count, browser()->tab_count()); |
| 54 } | 73 } |
| 55 | 74 |
| 56 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, ViewLink) { | 75 IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, ViewLink) { |
| 57 int initial_tab_count = browser()->tab_count(); | 76 int initial_tab_count = browser()->tab_count(); |
| 58 | 77 |
| 59 browser()->window()->ShowOneClickSigninBubble(); | 78 ShowOneClickSigninBubble(); |
| 60 ui_test_utils::RunAllPendingInMessageLoop(); | 79 ui_test_utils::RunAllPendingInMessageLoop(); |
| 61 EXPECT_TRUE(OneClickSigninBubbleView::IsShowing()); | 80 EXPECT_TRUE(OneClickSigninBubbleView::IsShowing()); |
| 62 | 81 |
| 63 OneClickSigninBubbleView* view = OneClickSigninBubbleView::view_for_testing(); | 82 OneClickSigninBubbleView* view = OneClickSigninBubbleView::view_for_testing(); |
| 64 EXPECT_TRUE(view != NULL); | 83 EXPECT_TRUE(view != NULL); |
| 65 EXPECT_EQ(initial_tab_count, browser()->tab_count()); | 84 EXPECT_EQ(initial_tab_count, browser()->tab_count()); |
| 66 | 85 |
| 67 // Simulate pressing a link in the bubble. This should open a new tab. | 86 // Simulate pressing a link in the bubble. This should open a new tab. |
| 68 views::LinkListener* listener = view; | 87 views::LinkListener* listener = view; |
| 69 listener->LinkClicked(view->learn_more_link_for_testing(), 0); | 88 listener->LinkClicked(view->learn_more_link_for_testing(), 0); |
| 70 | 89 |
| 71 // View should no longer be showing and a new tab should be opened. | 90 // View should no longer be showing and a new tab should be opened. |
| 72 ui_test_utils::RunAllPendingInMessageLoop(); | 91 ui_test_utils::RunAllPendingInMessageLoop(); |
| 73 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing()); | 92 EXPECT_FALSE(OneClickSigninBubbleView::IsShowing()); |
| 74 EXPECT_EQ(initial_tab_count + 1, browser()->tab_count()); | 93 EXPECT_EQ(initial_tab_count + 1, browser()->tab_count()); |
| 75 } | 94 } |
| OLD | NEW |