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

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: Add enum 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 "testing/gmock/include/gmock/gmock.h" 15 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 #import "testing/gtest_mac.h" 17 #import "testing/gtest_mac.h"
18 18
19 using testing::_;
20
19 namespace { 21 namespace {
20 22
21 class OneClickSigninBubbleControllerTest : public CocoaProfileTest { 23 class OneClickSigninBubbleControllerTest : public CocoaProfileTest {
22 public: 24 public:
23 OneClickSigninBubbleControllerTest() 25 OneClickSigninBubbleControllerTest()
24 : weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), 26 : weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
25 learn_more_callback_( 27 start_sync_callback_(
26 base::Bind(&OneClickSigninBubbleControllerTest::OnLearnMore, 28 base::Bind(&OneClickSigninBubbleControllerTest::OnStartSync,
27 weak_ptr_factory_.GetWeakPtr())),
28 advanced_callback_(
29 base::Bind(&OneClickSigninBubbleControllerTest::OnAdvanced,
30 weak_ptr_factory_.GetWeakPtr())) {} 29 weak_ptr_factory_.GetWeakPtr())) {}
31 30
32 virtual void SetUp() { 31 virtual void SetUp() {
33 CocoaProfileTest::SetUp(); 32 CocoaProfileTest::SetUp();
34 BrowserWindowCocoa* browser_window = 33 BrowserWindowCocoa* browser_window =
35 static_cast<BrowserWindowCocoa*>(CreateBrowserWindow()); 34 static_cast<BrowserWindowCocoa*>(CreateBrowserWindow());
36 controller_.reset( 35 controller_.reset(
37 [[OneClickSigninBubbleController alloc] 36 [[OneClickSigninBubbleController alloc]
38 initWithBrowserWindowController:browser_window->cocoa_controller() 37 initWithBrowserWindowController:browser_window->cocoa_controller()
39 learnMoreCallback:learn_more_callback_ 38 start_sync_callback:start_sync_callback_]);
40 advancedCallback:advanced_callback_]);
41 } 39 }
42 40
43 virtual void TearDown() { 41 virtual void TearDown() {
44 controller_.reset(); 42 controller_.reset();
45 CocoaProfileTest::TearDown(); 43 CocoaProfileTest::TearDown();
46 } 44 }
47 45
48 MOCK_METHOD0(OnLearnMore, void()); 46 MOCK_METHOD1(OnStartSync, void(bool));
akalin 2012/05/24 18:42:04 bool -> enum
Roger Tawa OOO till Jul 10th 2012/05/24 19:08:33 Done in lastest patchset.
49 MOCK_METHOD0(OnAdvanced, void());
50 47
51 protected: 48 protected:
52 base::WeakPtrFactory<OneClickSigninBubbleControllerTest> weak_ptr_factory_; 49 base::WeakPtrFactory<OneClickSigninBubbleControllerTest> weak_ptr_factory_;
53 base::Closure learn_more_callback_; 50 BrowserWindow::StartSyncCallback start_sync_callback_;
54 base::Closure advanced_callback_;
55 scoped_nsobject<OneClickSigninBubbleController> controller_; 51 scoped_nsobject<OneClickSigninBubbleController> controller_;
56 }; 52 };
57 53
58 // Test that the dialog loads from its nib properly. 54 // Test that the dialog loads from its nib properly.
59 TEST_F(OneClickSigninBubbleControllerTest, NibLoad) { 55 TEST_F(OneClickSigninBubbleControllerTest, NibLoad) {
60 EXPECT_CALL(*this, OnLearnMore()).Times(0); 56 EXPECT_CALL(*this, OnStartSync(_)).Times(0);
61 EXPECT_CALL(*this, OnAdvanced()).Times(0);
62 57
63 // Force nib load. 58 // Force nib load.
64 [controller_ window]; 59 [controller_ window];
65 EXPECT_NSEQ(@"OneClickSigninBubble", [controller_ windowNibName]); 60 EXPECT_NSEQ(@"OneClickSigninBubble", [controller_ windowNibName]);
66 } 61 }
67 62
68 // Test that the dialog doesn't call any callback if the OK button is 63 // Test that the dialog calls the callback if the OK button is clicked.
69 // clicked.
70 TEST_F(OneClickSigninBubbleControllerTest, ShowAndOK) { 64 TEST_F(OneClickSigninBubbleControllerTest, ShowAndOK) {
71 EXPECT_CALL(*this, OnLearnMore()).Times(0); 65 EXPECT_CALL(*this, OnStartSync(true)).Times(1);
akalin 2012/05/24 18:42:04 true -> enum value
Roger Tawa OOO till Jul 10th 2012/05/24 19:08:33 Done in lastest patchset.
72 EXPECT_CALL(*this, OnAdvanced()).Times(0);
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 calls 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(false)).Times(1);
akalin 2012/05/24 18:42:04 here too
Roger Tawa OOO till Jul 10th 2012/05/24 19:08:33 Done in lastest patchset.
93 EXPECT_CALL(*this, OnAdvanced()).Times(1);
94 78
95 [controller_ showWindow:nil]; 79 [controller_ showWindow:nil];
96 [controller_ onClickAdvancedLink:nil]; 80 [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 } 81 }
113 82
114 } // namespace 83 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698