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

Side by Side Diff: chrome/browser/ui/cocoa/one_click_signin_bubble_controller_unittest.mm

Issue 10332185: Update behavior of one-click infobar to remove modal dialog, add "undo". (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 #import "chrome/browser/ui/cocoa/one_click_signin_bubble_controller.h" 5 #import "chrome/browser/ui/cocoa/one_click_signin_bubble_controller.h"
6 6
7 #import <Cocoa/Cocoa.h> 7 #import <Cocoa/Cocoa.h>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
11 #import "base/memory/scoped_nsobject.h" 11 #import "base/memory/scoped_nsobject.h"
12 #include "base/memory/weak_ptr.h" 12 #include "base/memory/weak_ptr.h"
13 #import "chrome/browser/ui/cocoa/browser_window_cocoa.h" 13 #import "chrome/browser/ui/cocoa/browser_window_cocoa.h"
14 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" 14 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
15 #include "chrome/browser/ui/sync/one_click_signin_sync_starter.h"
15 #include "testing/gmock/include/gmock/gmock.h" 16 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
17 #import "testing/gtest_mac.h" 18 #import "testing/gtest_mac.h"
18 19
19 namespace { 20 namespace {
20 21
21 class OneClickSigninBubbleControllerTest : public CocoaProfileTest { 22 class OneClickSigninBubbleControllerTest : public CocoaProfileTest {
22 public: 23 public:
23 OneClickSigninBubbleControllerTest() 24 OneClickSigninBubbleControllerTest()
24 : weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), 25 : weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
25 learn_more_callback_( 26 start_sync_callback_(
26 base::Bind(&OneClickSigninBubbleControllerTest::OnLearnMore, 27 base::Bind(&OneClickSigninBubbleControllerTest::OnStartSync,
27 weak_ptr_factory_.GetWeakPtr())),
28 advanced_callback_(
29 base::Bind(&OneClickSigninBubbleControllerTest::OnAdvanced,
30 weak_ptr_factory_.GetWeakPtr())) {} 28 weak_ptr_factory_.GetWeakPtr())) {}
31 29
32 virtual void SetUp() { 30 virtual void SetUp() {
33 CocoaProfileTest::SetUp(); 31 CocoaProfileTest::SetUp();
34 BrowserWindowCocoa* browser_window = 32 BrowserWindowCocoa* browser_window =
35 static_cast<BrowserWindowCocoa*>(CreateBrowserWindow()); 33 static_cast<BrowserWindowCocoa*>(CreateBrowserWindow());
36 controller_.reset( 34 controller_.reset(
37 [[OneClickSigninBubbleController alloc] 35 [[OneClickSigninBubbleController alloc]
38 initWithBrowserWindowController:browser_window->cocoa_controller() 36 initWithBrowserWindowController:browser_window->cocoa_controller()
39 learnMoreCallback:learn_more_callback_ 37 start_sync_callback:start_sync_callback_]);
40 advancedCallback:advanced_callback_]);
41 } 38 }
42 39
43 virtual void TearDown() { 40 virtual void TearDown() {
44 controller_.reset(); 41 controller_.reset();
45 CocoaProfileTest::TearDown(); 42 CocoaProfileTest::TearDown();
46 } 43 }
47 44
48 MOCK_METHOD0(OnLearnMore, void()); 45 MOCK_METHOD1(OnStartSync, void(OneClickSigninSyncStarter::StartSyncMode));
49 MOCK_METHOD0(OnAdvanced, void());
50 46
51 protected: 47 protected:
52 base::WeakPtrFactory<OneClickSigninBubbleControllerTest> weak_ptr_factory_; 48 base::WeakPtrFactory<OneClickSigninBubbleControllerTest> weak_ptr_factory_;
53 base::Closure learn_more_callback_; 49 BrowserWindow::StartSyncCallback start_sync_callback_;
54 base::Closure advanced_callback_;
55 scoped_nsobject<OneClickSigninBubbleController> controller_; 50 scoped_nsobject<OneClickSigninBubbleController> controller_;
56 }; 51 };
57 52
58 // Test that the dialog loads from its nib properly. 53 // Test that the dialog loads from its nib properly.
59 TEST_F(OneClickSigninBubbleControllerTest, NibLoad) { 54 TEST_F(OneClickSigninBubbleControllerTest, NibLoad) {
60 EXPECT_CALL(*this, OnLearnMore()).Times(0); 55 EXPECT_CALL(*this, OnStartSync(testing::_)).Times(0);
61 EXPECT_CALL(*this, OnAdvanced()).Times(0);
62 56
63 // Force nib load. 57 // Force nib load.
64 [controller_ window]; 58 [controller_ window];
65 EXPECT_NSEQ(@"OneClickSigninBubble", [controller_ windowNibName]); 59 EXPECT_NSEQ(@"OneClickSigninBubble", [controller_ windowNibName]);
66 } 60 }
67 61
68 // Test that the dialog doesn't call any callback if the OK button is 62 // Test that the dialog calls the callback if the OK button is clicked.
69 // clicked.
70 TEST_F(OneClickSigninBubbleControllerTest, ShowAndOK) { 63 TEST_F(OneClickSigninBubbleControllerTest, ShowAndOK) {
71 EXPECT_CALL(*this, OnLearnMore()).Times(0); 64 EXPECT_CALL(*this, OnStartSync(
72 EXPECT_CALL(*this, OnAdvanced()).Times(0); 65 OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS)).Times(1);
73 66
74 [controller_ showWindow:nil]; 67 [controller_ showWindow:nil];
75 [controller_.release() ok:nil]; 68 [controller_.release() ok:nil];
76 } 69 }
77 70
78 // Test that the learn more callback is run if its corresponding 71 // TODO(akalin): Test that the dialog doesn't call the callback if the Undo
79 // button is clicked. 72 // button is clicked.
80 TEST_F(OneClickSigninBubbleControllerTest, ShowAndClickLearnMore) {
81 EXPECT_CALL(*this, OnLearnMore()).Times(1);
82 EXPECT_CALL(*this, OnAdvanced()).Times(0);
83
84 [controller_ showWindow:nil];
85 [controller_ onClickLearnMoreLink:nil];
86 [controller_.release() ok:nil];
87 }
88 73
89 // Test that the advanced callback is run if its corresponding button 74 // Test that the advanced callback is run if its corresponding button
90 // is clicked. 75 // is clicked.
91 TEST_F(OneClickSigninBubbleControllerTest, ShowAndClickAdvanced) { 76 TEST_F(OneClickSigninBubbleControllerTest, ShowAndClickAdvanced) {
92 EXPECT_CALL(*this, OnLearnMore()).Times(0); 77 EXPECT_CALL(*this, OnStartSync(
93 EXPECT_CALL(*this, OnAdvanced()).Times(1); 78 OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST)).Times(1);
94 79
95 [controller_ showWindow:nil]; 80 [controller_ showWindow:nil];
96 [controller_ onClickAdvancedLink:nil]; 81 [controller_.release() onClickAdvancedLink:nil];
97 [controller_.release() ok:nil];
98 }
99
100 // Test that the callbacks can be run multiple times.
101 TEST_F(OneClickSigninBubbleControllerTest, ShowAndClickMultiple) {
102 EXPECT_CALL(*this, OnLearnMore()).Times(3);
103 EXPECT_CALL(*this, OnAdvanced()).Times(4);
104
105 [controller_ showWindow:nil];
106 for (int i = 0; i < 3; ++i) {
107 [controller_ onClickLearnMoreLink:nil];
108 [controller_ onClickAdvancedLink:nil];
109 }
110 [controller_ onClickAdvancedLink:nil];
111 [controller_.release() ok:nil];
112 } 82 }
113 83
114 } // namespace 84 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/one_click_signin_bubble_controller.mm ('k') | chrome/browser/ui/gtk/browser_window_gtk.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698