OLD | NEW |
| (Empty) |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #import "chrome/browser/ui/cocoa/profile_signin_confirmation_view_controller.h" | |
6 | |
7 #import <Cocoa/Cocoa.h> | |
8 | |
9 #include "base/mac/scoped_nsobject.h" | |
10 #include "base/strings/sys_string_conversions.h" | |
11 #include "base/strings/utf_string_conversions.h" | |
12 #include "chrome/browser/ui/browser.h" | |
13 #include "chrome/browser/ui/sync/profile_signin_confirmation_helper.h" | |
14 #include "chrome/test/base/in_process_browser_test.h" | |
15 #include "grit/chromium_strings.h" | |
16 #include "grit/generated_resources.h" | |
17 #import "testing/gtest_mac.h" | |
18 #include "ui/base/l10n/l10n_util.h" | |
19 | |
20 class ProfileSigninConfirmationViewControllerTest | |
21 : public InProcessBrowserTest, | |
22 public ui::ProfileSigninConfirmationDelegate { | |
23 | |
24 public: | |
25 ProfileSigninConfirmationViewControllerTest() | |
26 : window_(nil), | |
27 continued_(false), | |
28 cancelled_(false), | |
29 created_(false), | |
30 closed_(false) { | |
31 } | |
32 | |
33 protected: | |
34 virtual void SetUpOnMainThread() OVERRIDE { | |
35 } | |
36 | |
37 void SetupDialog(bool offerProfileCreation = true) { | |
38 window_.reset( | |
39 [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 400, 600) | |
40 styleMask:NSBorderlessWindowMask | |
41 backing:NSBackingStoreBuffered | |
42 defer:NO]); | |
43 base::Closure close = base::Bind( | |
44 &ProfileSigninConfirmationViewControllerTest::OnClose, this); | |
45 controller_.reset([[ProfileSigninConfirmationViewController alloc] | |
46 initWithBrowser:browser() | |
47 username:username() | |
48 delegate:this | |
49 closeDialogCallback:close | |
50 offerProfileCreation:offerProfileCreation]); | |
51 [[window_ contentView] addSubview:[controller_ view]]; | |
52 [window_ makeKeyAndOrderFront:NSApp]; | |
53 ASSERT_TRUE([window_ isVisible]); | |
54 } | |
55 | |
56 // Test helpers. | |
57 std::string username() { | |
58 return "foo@bar.com"; | |
59 } | |
60 base::string16 learn_more() { | |
61 return l10n_util::GetStringUTF16( | |
62 IDS_ENTERPRISE_SIGNIN_PROFILE_LINK_LEARN_MORE); | |
63 } | |
64 | |
65 // ui::ProfileSigninConfirmationDelegate: | |
66 virtual void OnContinueSignin() OVERRIDE { continued_ = true; } | |
67 virtual void OnCancelSignin() OVERRIDE { cancelled_ = true; } | |
68 virtual void OnSigninWithNewProfile() OVERRIDE { created_ = true; } | |
69 void OnClose() { closed_ = true; } | |
70 | |
71 // The window containing the dialog. | |
72 base::scoped_nsobject<NSWindow> window_; | |
73 | |
74 // Dialog under test. | |
75 base::scoped_nsobject<ProfileSigninConfirmationViewController> controller_; | |
76 | |
77 // Visible for testing UI interactions. | |
78 bool continued_; | |
79 bool cancelled_; | |
80 bool created_; | |
81 bool closed_; | |
82 | |
83 private: | |
84 DISALLOW_COPY_AND_ASSIGN(ProfileSigninConfirmationViewControllerTest); | |
85 }; | |
86 | |
87 IN_PROC_BROWSER_TEST_F(ProfileSigninConfirmationViewControllerTest, | |
88 ContinueClicked) { | |
89 SetupDialog(); | |
90 | |
91 // Click should invoke and clear delegate and close the dialog. | |
92 [controller_ ok:nil]; | |
93 EXPECT_TRUE(continued_); | |
94 EXPECT_TRUE(closed_); | |
95 EXPECT_FALSE([controller_ delegate]); | |
96 | |
97 // Another click should have no effect. | |
98 continued_ = false; | |
99 closed_ = false; | |
100 [controller_ ok:nil]; | |
101 EXPECT_FALSE(continued_); | |
102 EXPECT_FALSE(closed_); | |
103 } | |
104 | |
105 IN_PROC_BROWSER_TEST_F(ProfileSigninConfirmationViewControllerTest, | |
106 CancelClicked) { | |
107 SetupDialog(); | |
108 | |
109 // Click should invoke and clear delegate and close the dialog. | |
110 [controller_ cancel:nil]; | |
111 EXPECT_TRUE(cancelled_); | |
112 EXPECT_TRUE(closed_); | |
113 EXPECT_FALSE([controller_ delegate]); | |
114 | |
115 // Another click should have no effect. | |
116 cancelled_ = false; | |
117 closed_ = false; | |
118 [controller_ cancel:nil]; | |
119 EXPECT_FALSE(cancelled_); | |
120 EXPECT_FALSE(closed_); | |
121 } | |
122 | |
123 IN_PROC_BROWSER_TEST_F(ProfileSigninConfirmationViewControllerTest, | |
124 CreateClicked) { | |
125 SetupDialog(); | |
126 | |
127 // Click should invoke and clear delegate and close the dialog. | |
128 [controller_ createProfile:nil]; | |
129 EXPECT_TRUE(created_); | |
130 EXPECT_TRUE(closed_); | |
131 EXPECT_FALSE([controller_ delegate]); | |
132 | |
133 // Another click should have no effect. | |
134 created_ = false; | |
135 closed_ = false; | |
136 [controller_ createProfile:nil]; | |
137 EXPECT_FALSE(created_); | |
138 EXPECT_FALSE(closed_); | |
139 } | |
140 | |
141 IN_PROC_BROWSER_TEST_F(ProfileSigninConfirmationViewControllerTest, | |
142 CloseClicked) { | |
143 SetupDialog(); | |
144 | |
145 // Click should invoke and clear delegate and close the dialog. | |
146 [controller_ cancel:nil]; | |
147 EXPECT_TRUE(cancelled_); | |
148 EXPECT_TRUE(closed_); | |
149 EXPECT_FALSE([controller_ delegate]); | |
150 | |
151 // Another click should close the dialog but not invoke the delegate. | |
152 cancelled_ = false; | |
153 closed_ = false; | |
154 [controller_ close:nil]; | |
155 EXPECT_FALSE(cancelled_); | |
156 EXPECT_TRUE(closed_); | |
157 } | |
158 | |
159 IN_PROC_BROWSER_TEST_F(ProfileSigninConfirmationViewControllerTest, | |
160 DoNotOfferNewProfile) { | |
161 SetupDialog(/*offerProfileCreation = */ false); | |
162 // Create Profile button shouldn't exist. | |
163 EXPECT_NSEQ(nil, [controller_ createProfileButton]); | |
164 // Explanation shouldn't mention creating a new profile. | |
165 NSString* explanationWithoutCreateProfile = base::SysUTF16ToNSString( | |
166 l10n_util::GetStringFUTF16( | |
167 IDS_ENTERPRISE_SIGNIN_EXPLANATION_WITHOUT_PROFILE_CREATION_NEW_STYLE, | |
168 base::UTF8ToUTF16(username()), learn_more())); | |
169 EXPECT_NSEQ(explanationWithoutCreateProfile, | |
170 [[[controller_ explanationField] textStorage] string]); | |
171 } | |
172 | |
173 IN_PROC_BROWSER_TEST_F(ProfileSigninConfirmationViewControllerTest, | |
174 OfferNewProfile) { | |
175 SetupDialog(/*offerProfileCreation = */ true); | |
176 // Create Profile button should exist and be visible. | |
177 EXPECT_NSNE(nil, [controller_ createProfileButton]); | |
178 EXPECT_TRUE([[[controller_ view] subviews] | |
179 containsObject:[controller_ createProfileButton]]); | |
180 NSString* explanationWithCreateProfile = base::SysUTF16ToNSString( | |
181 l10n_util::GetStringFUTF16( | |
182 IDS_ENTERPRISE_SIGNIN_EXPLANATION_WITH_PROFILE_CREATION_NEW_STYLE, | |
183 base::UTF8ToUTF16(username()), learn_more())); | |
184 EXPECT_NSEQ(explanationWithCreateProfile, | |
185 [[[controller_ explanationField] textStorage] string]); | |
186 } | |
OLD | NEW |