Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5623)

Unified Diff: chrome/browser/ui/views/sync/one_click_signin_bubble_view_unittest.cc

Issue 18558009: Fix flaky test OneClickSigninBubbleViewBrowserTest::ShowBubble (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Improve style Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/sync/one_click_signin_bubble_view_unittest.cc
diff --git a/chrome/browser/ui/views/sync/one_click_signin_bubble_view_browsertest.cc b/chrome/browser/ui/views/sync/one_click_signin_bubble_view_unittest.cc
similarity index 60%
rename from chrome/browser/ui/views/sync/one_click_signin_bubble_view_browsertest.cc
rename to chrome/browser/ui/views/sync/one_click_signin_bubble_view_unittest.cc
index a2ed79f11006dbee2e0afd1962346b8bb3516d65..9cb74b8b5a8b3b36ec0323d4dcc6ec081b073199 100644
--- a/chrome/browser/ui/views/sync/one_click_signin_bubble_view_browsertest.cc
+++ b/chrome/browser/ui/views/sync/one_click_signin_bubble_view_unittest.cc
@@ -1,32 +1,66 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/views/sync/one_click_signin_bubble_view.h"
#include "base/bind.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_window.h"
-#include "chrome/browser/ui/tabs/tab_strip_model.h"
-#include "chrome/test/base/in_process_browser_test.h"
+#include "base/bind_helpers.h"
+#include "base/memory/scoped_ptr.h"
+#include "chrome/browser/ui/sync/one_click_signin_bubble_delegate.h"
#include "chrome/test/base/ui_test_utils.h"
#include "content/public/common/page_transition_types.h"
#include "ui/views/controls/button/label_button.h"
+#include "ui/views/test/views_test_base.h"
+#include "ui/views/widget/widget.h"
-class OneClickSigninBubbleViewBrowserTest : public InProcessBrowserTest {
+class OneClickSigninBubbleViewTest : public views::ViewsTestBase,
+ public views::WidgetDelegate {
public:
- OneClickSigninBubbleViewBrowserTest()
+ OneClickSigninBubbleViewTest()
: on_start_sync_called_(false),
- mode_(OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST) {
+ mode_(OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST),
+ bubble_learn_more_click_count_(0),
+ dialog_learn_more_click_count_(0),
+ advanced_click_count_(0),
+ anchor_view_(NULL) {
}
+ virtual void SetUp() OVERRIDE {
+ views::ViewsTestBase::SetUp();
+
+ anchor_view_ = new views::View();
+
+ // Create a widget to host the anchor view.
+ views::Widget* widget = new views::Widget;
+ views::Widget::InitParams widget_params = CreateParams(
+ views::Widget::InitParams::TYPE_WINDOW);
+ widget_params.delegate = this;
+ widget->Init(widget_params);
+ widget->Show();
+ }
+
+ virtual void TearDown() OVERRIDE {
+ OneClickSigninBubbleView::Hide();
+ GetWidget()->Close();
+ views::ViewsTestBase::TearDown();
+ }
+
+ protected:
OneClickSigninBubbleView* ShowOneClickSigninBubble(
BrowserWindow::OneClickSigninBubbleType bubble_type) {
- browser()->window()->ShowOneClickSigninBubble(
+
+ scoped_ptr<OneClickSigninBubbleDelegate> delegate;
+ delegate.reset(new OneClickSigninBubbleTestDelegate(this));
+
+ OneClickSigninBubbleView::ShowBubble(
bubble_type,
string16(),
string16(),
- base::Bind(&OneClickSigninBubbleViewBrowserTest::OnStartSync, this));
+ delegate.Pass(),
+ anchor_view_,
+ base::Bind(&OneClickSigninBubbleViewTest::OnStartSync,
+ base::Unretained(this)));
OneClickSigninBubbleView* view =
OneClickSigninBubbleView::view_for_testing();
@@ -40,28 +74,72 @@ class OneClickSigninBubbleViewBrowserTest : public InProcessBrowserTest {
mode_ = mode;
}
- protected:
bool on_start_sync_called_;
OneClickSigninSyncStarter::StartSyncMode mode_;
+ int bubble_learn_more_click_count_;
+ int dialog_learn_more_click_count_;
+ int advanced_click_count_;
private:
- DISALLOW_COPY_AND_ASSIGN(OneClickSigninBubbleViewBrowserTest);
+ friend class OneClickSigninBubbleTestDelegate;
+
+ class OneClickSigninBubbleTestDelegate
+ : public OneClickSigninBubbleDelegate {
+ public:
+ // |test| is not owned by this object.
+ explicit OneClickSigninBubbleTestDelegate(
+ OneClickSigninBubbleViewTest* test) : test_(test) {}
+
+ // OneClickSigninBubbleDelegate:
+ virtual void OnLearnMoreLinkClicked(bool is_dialog) OVERRIDE {
+ if (is_dialog)
+ ++test_->dialog_learn_more_click_count_;
+ else
+ ++test_->bubble_learn_more_click_count_;
+ }
+ virtual void OnAdvancedLinkClicked() OVERRIDE {
+ ++test_->advanced_click_count_;
+ }
+
+ private:
+ OneClickSigninBubbleViewTest* test_;
+
+ DISALLOW_COPY_AND_ASSIGN(OneClickSigninBubbleTestDelegate);
+ };
+
+ // views::WidgetDelegate:
+ virtual views::View* GetContentsView() OVERRIDE {
+ return anchor_view_;
+ }
+
+ virtual views::Widget* GetWidget() OVERRIDE {
+ return anchor_view_->GetWidget();
+ }
+
+ virtual const views::Widget* GetWidget() const OVERRIDE {
+ return anchor_view_->GetWidget();
+ }
+
+ // Anchor view of the bubble.
+ views::View* anchor_view_;
+
+ DISALLOW_COPY_AND_ASSIGN(OneClickSigninBubbleViewTest);
};
-IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, ShowBubble) {
+TEST_F(OneClickSigninBubbleViewTest, ShowBubble) {
ShowOneClickSigninBubble(BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE);
content::RunAllPendingInMessageLoop();
EXPECT_TRUE(OneClickSigninBubbleView::IsShowing());
}
-IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, ShowDialog) {
+TEST_F(OneClickSigninBubbleViewTest, ShowDialog) {
ShowOneClickSigninBubble(
BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);
content::RunAllPendingInMessageLoop();
EXPECT_TRUE(OneClickSigninBubbleView::IsShowing());
}
-IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, HideBubble) {
+TEST_F(OneClickSigninBubbleViewTest, HideBubble) {
ShowOneClickSigninBubble(BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE);
OneClickSigninBubbleView::Hide();
@@ -69,7 +147,7 @@ IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, HideBubble) {
EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
}
-IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, HideDialog) {
+TEST_F(OneClickSigninBubbleViewTest, HideDialog) {
ShowOneClickSigninBubble(
BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);
@@ -80,7 +158,7 @@ IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, HideDialog) {
EXPECT_EQ(OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS, mode_);
}
-IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, BubbleOkButton) {
+TEST_F(OneClickSigninBubbleViewTest, BubbleOkButton) {
OneClickSigninBubbleView* view =
ShowOneClickSigninBubble(
BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE);
@@ -99,7 +177,7 @@ IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, BubbleOkButton) {
EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
}
-IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, DialogOkButton) {
+TEST_F(OneClickSigninBubbleViewTest, DialogOkButton) {
OneClickSigninBubbleView* view = ShowOneClickSigninBubble(
BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);
@@ -119,8 +197,7 @@ IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest, DialogOkButton) {
EXPECT_EQ(OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS, mode_);
}
-IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
- DialogUndoButton) {
+TEST_F(OneClickSigninBubbleViewTest, DialogUndoButton) {
OneClickSigninBubbleView* view = ShowOneClickSigninBubble(
BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);
@@ -140,63 +217,69 @@ IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
EXPECT_EQ(OneClickSigninSyncStarter::UNDO_SYNC, mode_);
}
-IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
- BubbleAdvancedLink) {
- int starting_tab_count = browser()->tab_strip_model()->count();
-
+TEST_F(OneClickSigninBubbleViewTest, BubbleAdvancedLink) {
OneClickSigninBubbleView* view = ShowOneClickSigninBubble(
BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE);
- // Simulate pressing a link in the bubble.This should replace the current tab.
+ // Simulate pressing a link in the bubble.
views::LinkListener* listener = view;
listener->LinkClicked(view->advanced_link_, 0);
- // View should no longer be showing and the current tab should be replaced.
+ // View should no longer be showing and the OnAdvancedLinkClicked method
+ // of the delegate should have been called.
content::RunAllPendingInMessageLoop();
EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
- int tab_count = browser()->tab_strip_model()->count();
- EXPECT_EQ(starting_tab_count, tab_count);
+ EXPECT_EQ(1, advanced_click_count_);
}
-IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
- DialogAdvancedLink) {
- int starting_tab_count = browser()->tab_strip_model()->count();
-
+TEST_F(OneClickSigninBubbleViewTest, DialogAdvancedLink) {
OneClickSigninBubbleView* view = ShowOneClickSigninBubble(
BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);
- // Simulate pressing a link in the bubble. This should open a new tab.
+ // Simulate pressing a link in the bubble.
views::LinkListener* listener = view;
listener->LinkClicked(view->advanced_link_, 0);
- // View should no longer be showing and a new tab should be opened.
+ // View should no longer be showing. No delegate method should have been
+ // called: the callback is responsible to open the settings page.
content::RunAllPendingInMessageLoop();
EXPECT_TRUE(on_start_sync_called_);
EXPECT_EQ(OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST, mode_);
EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
- int tab_count = browser()->tab_strip_model()->count();
- EXPECT_EQ(starting_tab_count, tab_count);
+ EXPECT_EQ(0, advanced_click_count_);
}
-IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
- BubbleLearnMoreLink) {
- int starting_tab_count = browser()->tab_strip_model()->count();
-
+TEST_F(OneClickSigninBubbleViewTest, BubbleLearnMoreLink) {
OneClickSigninBubbleView* view = ShowOneClickSigninBubble(
BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE);
- // View should no longer be showing and a new tab should be added.
views::LinkListener* listener = view;
listener->LinkClicked(view->learn_more_link_, 0);
+ // View should no longer be showing and the OnLearnMoreLinkClicked method
+ // of the delegate should have been called with |is_dialog| == false.
content::RunAllPendingInMessageLoop();
EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
- int tab_count = browser()->tab_strip_model()->count();
- EXPECT_EQ(starting_tab_count + 1, tab_count);
+ EXPECT_EQ(1, bubble_learn_more_click_count_);
+ EXPECT_EQ(0, dialog_learn_more_click_count_);
+}
+
+TEST_F(OneClickSigninBubbleViewTest, DialogLearnMoreLink) {
+ OneClickSigninBubbleView* view = ShowOneClickSigninBubble(
+ BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);
+
+ views::LinkListener* listener = view;
+ listener->LinkClicked(view->learn_more_link_, 0);
+
+ // View should still be showing and the OnLearnMoreLinkClicked method
+ // of the delegate should have been called with |is_dialog| == true.
+ content::RunAllPendingInMessageLoop();
+ EXPECT_TRUE(OneClickSigninBubbleView::IsShowing());
+ EXPECT_EQ(0, bubble_learn_more_click_count_);
+ EXPECT_EQ(1, dialog_learn_more_click_count_);
}
-IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
- BubblePressEnterKey) {
+TEST_F(OneClickSigninBubbleViewTest, BubblePressEnterKey) {
OneClickSigninBubbleView* one_click_view = ShowOneClickSigninBubble(
BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE);
@@ -211,8 +294,7 @@ IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
}
-IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
- DialogPressEnterKey) {
+TEST_F(OneClickSigninBubbleViewTest, DialogPressEnterKey) {
OneClickSigninBubbleView* one_click_view = ShowOneClickSigninBubble(
BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);
@@ -229,8 +311,7 @@ IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
EXPECT_EQ(OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS, mode_);
}
-IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
- BubblePressEscapeKey) {
+TEST_F(OneClickSigninBubbleViewTest, BubblePressEscapeKey) {
OneClickSigninBubbleView* one_click_view = ShowOneClickSigninBubble(
BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE);
@@ -245,8 +326,7 @@ IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
EXPECT_FALSE(OneClickSigninBubbleView::IsShowing());
}
-IN_PROC_BROWSER_TEST_F(OneClickSigninBubbleViewBrowserTest,
- DialogPressEscapeKey) {
+TEST_F(OneClickSigninBubbleViewTest, DialogPressEscapeKey) {
OneClickSigninBubbleView* one_click_view = ShowOneClickSigninBubble(
BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG);

Powered by Google App Engine
This is Rietveld 408576698