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

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: Make GTK ok and undo buttons the same size horizontally Created 8 years, 7 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
20 using testing::_;
Peter Kasting 2012/05/24 22:25:18 Nit: Just explicitly-qualify the one usage
Roger Tawa OOO till Jul 10th 2012/05/25 16:04:08 Done.
21
19 namespace { 22 namespace {
20 23
21 class OneClickSigninBubbleControllerTest : public CocoaProfileTest { 24 class OneClickSigninBubbleControllerTest : public CocoaProfileTest {
22 public: 25 public:
23 OneClickSigninBubbleControllerTest() 26 OneClickSigninBubbleControllerTest()
24 : weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), 27 : weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
25 learn_more_callback_( 28 start_sync_callback_(
26 base::Bind(&OneClickSigninBubbleControllerTest::OnLearnMore, 29 base::Bind(&OneClickSigninBubbleControllerTest::OnStartSync,
27 weak_ptr_factory_.GetWeakPtr())),
28 advanced_callback_(
29 base::Bind(&OneClickSigninBubbleControllerTest::OnAdvanced,
30 weak_ptr_factory_.GetWeakPtr())) {} 30 weak_ptr_factory_.GetWeakPtr())) {}
31 31
32 virtual void SetUp() { 32 virtual void SetUp() {
33 CocoaProfileTest::SetUp(); 33 CocoaProfileTest::SetUp();
34 BrowserWindowCocoa* browser_window = 34 BrowserWindowCocoa* browser_window =
35 static_cast<BrowserWindowCocoa*>(CreateBrowserWindow()); 35 static_cast<BrowserWindowCocoa*>(CreateBrowserWindow());
36 controller_.reset( 36 controller_.reset(
37 [[OneClickSigninBubbleController alloc] 37 [[OneClickSigninBubbleController alloc]
38 initWithBrowserWindowController:browser_window->cocoa_controller() 38 initWithBrowserWindowController:browser_window->cocoa_controller()
39 learnMoreCallback:learn_more_callback_ 39 start_sync_callback:start_sync_callback_]);
40 advancedCallback:advanced_callback_]);
41 } 40 }
42 41
43 virtual void TearDown() { 42 virtual void TearDown() {
44 controller_.reset(); 43 controller_.reset();
45 CocoaProfileTest::TearDown(); 44 CocoaProfileTest::TearDown();
46 } 45 }
47 46
48 MOCK_METHOD0(OnLearnMore, void()); 47 MOCK_METHOD1(OnStartSync, void(OneClickSigninSyncStarter::StartSyncMode));
49 MOCK_METHOD0(OnAdvanced, void());
50 48
51 protected: 49 protected:
52 base::WeakPtrFactory<OneClickSigninBubbleControllerTest> weak_ptr_factory_; 50 base::WeakPtrFactory<OneClickSigninBubbleControllerTest> weak_ptr_factory_;
53 base::Closure learn_more_callback_; 51 BrowserWindow::StartSyncCallback start_sync_callback_;
54 base::Closure advanced_callback_;
55 scoped_nsobject<OneClickSigninBubbleController> controller_; 52 scoped_nsobject<OneClickSigninBubbleController> controller_;
56 }; 53 };
57 54
58 // Test that the dialog loads from its nib properly. 55 // Test that the dialog loads from its nib properly.
59 TEST_F(OneClickSigninBubbleControllerTest, NibLoad) { 56 TEST_F(OneClickSigninBubbleControllerTest, NibLoad) {
60 EXPECT_CALL(*this, OnLearnMore()).Times(0); 57 EXPECT_CALL(*this, OnStartSync(_)).Times(0);
61 EXPECT_CALL(*this, OnAdvanced()).Times(0);
62 58
63 // Force nib load. 59 // Force nib load.
64 [controller_ window]; 60 [controller_ window];
65 EXPECT_NSEQ(@"OneClickSigninBubble", [controller_ windowNibName]); 61 EXPECT_NSEQ(@"OneClickSigninBubble", [controller_ windowNibName]);
66 } 62 }
67 63
68 // Test that the dialog doesn't call any callback if the OK button is 64 // Test that the dialog calls the callback if the OK button is clicked.
69 // clicked.
70 TEST_F(OneClickSigninBubbleControllerTest, ShowAndOK) { 65 TEST_F(OneClickSigninBubbleControllerTest, ShowAndOK) {
71 EXPECT_CALL(*this, OnLearnMore()).Times(0); 66 EXPECT_CALL(*this,
72 EXPECT_CALL(*this, OnAdvanced()).Times(0); 67 OnStartSync(
Peter Kasting 2012/05/24 22:25:18 Nit: Weird indenting; how about: EXPECT_CALL(*t
Roger Tawa OOO till Jul 10th 2012/05/25 16:04:08 That leaves the second line beyond 80 chars. The
Peter Kasting 2012/05/25 16:58:06 No it doesn't: 1234567890123456789012345678901234
Roger Tawa OOO till Jul 10th 2012/05/25 18:49:51 Done.
68 OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS)).
69 Times(1);
73 70
74 [controller_ showWindow:nil]; 71 [controller_ showWindow:nil];
75 [controller_.release() ok:nil]; 72 [controller_.release() ok:nil];
76 } 73 }
77 74
78 // Test that the learn more callback is run if its corresponding 75 // TODO(akalin): Test that the dialog doesn't calls the callback if the Undo
Peter Kasting 2012/05/24 22:25:18 Nit: calls -> call
Roger Tawa OOO till Jul 10th 2012/05/25 16:04:08 Done.
79 // button is clicked. 76 // 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 77
89 // Test that the advanced callback is run if its corresponding button 78 // Test that the advanced callback is run if its corresponding button
90 // is clicked. 79 // is clicked.
91 TEST_F(OneClickSigninBubbleControllerTest, ShowAndClickAdvanced) { 80 TEST_F(OneClickSigninBubbleControllerTest, ShowAndClickAdvanced) {
92 EXPECT_CALL(*this, OnLearnMore()).Times(0); 81 EXPECT_CALL(*this,
93 EXPECT_CALL(*this, OnAdvanced()).Times(1); 82 OnStartSync(
83 OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST)).
84 Times(1);
94 85
95 [controller_ showWindow:nil]; 86 [controller_ showWindow:nil];
96 [controller_ onClickAdvancedLink:nil]; 87 [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 } 88 }
113 89
114 } // namespace 90 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698