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

Side by Side Diff: chrome/browser/ui/cocoa/extensions/extension_install_view_controller_unittest.mm

Issue 660643002: [Refactor] Move creating a browser if necessary to ExtensionInstallDialogView (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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
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 <Cocoa/Cocoa.h> 5 #import <Cocoa/Cocoa.h>
6 6
7 #import "base/mac/scoped_nsobject.h" 7 #import "base/mac/scoped_nsobject.h"
8 #include "base/strings/sys_string_conversions.h" 8 #include "base/strings/sys_string_conversions.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #import "chrome/browser/extensions/extension_install_prompt.h" 10 #import "chrome/browser/extensions/extension_install_prompt.h"
(...skipping 30 matching lines...) Expand all
41 41
42 std::vector<base::string16> permissions; 42 std::vector<base::string16> permissions;
43 permissions.push_back(base::UTF8ToUTF16("warning 1")); 43 permissions.push_back(base::UTF8ToUTF16("warning 1"));
44 prompt->SetPermissions(permissions, type); 44 prompt->SetPermissions(permissions, type);
45 // No details provided with this permission. 45 // No details provided with this permission.
46 std::vector<base::string16> details; 46 std::vector<base::string16> details;
47 details.push_back(base::string16()); 47 details.push_back(base::string16());
48 prompt->SetPermissionsDetails(details, type); 48 prompt->SetPermissionsDetails(details, type);
49 49
50 base::scoped_nsobject<ExtensionInstallViewController> controller( 50 base::scoped_nsobject<ExtensionInstallViewController> controller(
51 [[ExtensionInstallViewController alloc] initWithNavigator:browser() 51 [[ExtensionInstallViewController alloc] initWithProfile:profile()
52 delegate:&delegate 52 navigator:browser()
53 prompt:prompt]); 53 delegate:&delegate
54 prompt:prompt]);
54 55
55 [controller view]; // Force nib load. 56 [controller view]; // Force nib load.
56 57
57 // Test the right nib loaded. 58 // Test the right nib loaded.
58 EXPECT_NSEQ(@"ExtensionInstallPrompt", [controller nibName]); 59 EXPECT_NSEQ(@"ExtensionInstallPrompt", [controller nibName]);
59 60
60 // Check all the controls. 61 // Check all the controls.
61 // Make sure everything is non-nil, and that the fields that are 62 // Make sure everything is non-nil, and that the fields that are
62 // auto-translated don't start with a caret (that would indicate that they 63 // auto-translated don't start with a caret (that would indicate that they
63 // were not translated). 64 // were not translated).
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 100
100 std::vector<base::string16> permissions; 101 std::vector<base::string16> permissions;
101 permissions.push_back(base::UTF8ToUTF16("warning 1")); 102 permissions.push_back(base::UTF8ToUTF16("warning 1"));
102 prompt->SetPermissions(permissions, type); 103 prompt->SetPermissions(permissions, type);
103 // No details provided with this permission. 104 // No details provided with this permission.
104 std::vector<base::string16> details; 105 std::vector<base::string16> details;
105 details.push_back(base::string16()); 106 details.push_back(base::string16());
106 prompt->SetPermissionsDetails(details, type); 107 prompt->SetPermissionsDetails(details, type);
107 108
108 base::scoped_nsobject<ExtensionInstallViewController> controller( 109 base::scoped_nsobject<ExtensionInstallViewController> controller(
109 [[ExtensionInstallViewController alloc] initWithNavigator:browser() 110 [[ExtensionInstallViewController alloc] initWithProfile:profile()
110 delegate:&delegate 111 navigator:browser()
111 prompt:prompt]); 112 delegate:&delegate
113 prompt:prompt]);
112 114
113 [controller view]; // Force nib load. 115 [controller view]; // Force nib load.
114 [controller ok:nil]; 116 [controller ok:nil];
115 117
116 EXPECT_EQ(0, delegate.abort_count()); 118 EXPECT_EQ(0, delegate.abort_count());
117 EXPECT_EQ(1, delegate.proceed_count()); 119 EXPECT_EQ(1, delegate.proceed_count());
118 } 120 }
119 121
120 // Test that controls get repositioned when there are two warnings vs one 122 // Test that controls get repositioned when there are two warnings vs one
121 // warning. 123 // warning.
(...skipping 17 matching lines...) Expand all
139 scoped_refptr<ExtensionInstallPrompt::Prompt> two_warnings_prompt = 141 scoped_refptr<ExtensionInstallPrompt::Prompt> two_warnings_prompt =
140 chrome::BuildExtensionInstallPrompt(extension_.get()); 142 chrome::BuildExtensionInstallPrompt(extension_.get());
141 permissions.push_back(base::UTF8ToUTF16("warning 2")); 143 permissions.push_back(base::UTF8ToUTF16("warning 2"));
142 two_warnings_prompt->SetPermissions(permissions, type); 144 two_warnings_prompt->SetPermissions(permissions, type);
143 // No details provided with this permission. 145 // No details provided with this permission.
144 details.push_back(base::string16()); 146 details.push_back(base::string16());
145 two_warnings_prompt->SetPermissionsDetails(details, type); 147 two_warnings_prompt->SetPermissionsDetails(details, type);
146 148
147 base::scoped_nsobject<ExtensionInstallViewController> controller1( 149 base::scoped_nsobject<ExtensionInstallViewController> controller1(
148 [[ExtensionInstallViewController alloc] 150 [[ExtensionInstallViewController alloc]
149 initWithNavigator:browser() 151 initWithProfile:profile()
150 delegate:&delegate1 152 navigator:browser()
151 prompt:one_warning_prompt]); 153 delegate:&delegate1
154 prompt:one_warning_prompt]);
152 155
153 [controller1 view]; // Force nib load. 156 [controller1 view]; // Force nib load.
154 157
155 base::scoped_nsobject<ExtensionInstallViewController> controller2( 158 base::scoped_nsobject<ExtensionInstallViewController> controller2(
156 [[ExtensionInstallViewController alloc] 159 [[ExtensionInstallViewController alloc]
157 initWithNavigator:browser() 160 initWithProfile:profile()
158 delegate:&delegate2 161 navigator:browser()
159 prompt:two_warnings_prompt]); 162 delegate:&delegate2
163 prompt:two_warnings_prompt]);
160 164
161 [controller2 view]; // Force nib load. 165 [controller2 view]; // Force nib load.
162 166
163 // Test control positioning. We don't test exact positioning because we don't 167 // Test control positioning. We don't test exact positioning because we don't
164 // want this to depend on string details and localization. But we do know the 168 // want this to depend on string details and localization. But we do know the
165 // relative effect that adding a second warning should have on the layout. 169 // relative effect that adding a second warning should have on the layout.
166 ASSERT_LT([[controller1 view] frame].size.height, 170 ASSERT_LT([[controller1 view] frame].size.height,
167 [[controller2 view] frame].size.height); 171 [[controller2 view] frame].size.height);
168 172
169 ASSERT_LT([[controller1 view] frame].size.height, 173 ASSERT_LT([[controller1 view] frame].size.height,
170 [[controller2 view] frame].size.height); 174 [[controller2 view] frame].size.height);
171 } 175 }
172 176
173 // Test that we can load the skinny prompt correctly, and that the outlets are 177 // Test that we can load the skinny prompt correctly, and that the outlets are
174 // are hooked up. 178 // are hooked up.
175 TEST_F(ExtensionInstallViewControllerTest, BasicsSkinny) { 179 TEST_F(ExtensionInstallViewControllerTest, BasicsSkinny) {
176 chrome::MockExtensionInstallPromptDelegate delegate; 180 chrome::MockExtensionInstallPromptDelegate delegate;
177 181
178 // No warnings should trigger skinny prompt. 182 // No warnings should trigger skinny prompt.
179 scoped_refptr<ExtensionInstallPrompt::Prompt> no_warnings_prompt = 183 scoped_refptr<ExtensionInstallPrompt::Prompt> no_warnings_prompt =
180 chrome::BuildExtensionInstallPrompt(extension_.get()); 184 chrome::BuildExtensionInstallPrompt(extension_.get());
181 185
182 base::scoped_nsobject<ExtensionInstallViewController> controller( 186 base::scoped_nsobject<ExtensionInstallViewController> controller(
183 [[ExtensionInstallViewController alloc] 187 [[ExtensionInstallViewController alloc]
184 initWithNavigator:browser() 188 initWithProfile:profile()
185 delegate:&delegate 189 navigator:browser()
186 prompt:no_warnings_prompt]); 190 delegate:&delegate
191 prompt:no_warnings_prompt]);
187 192
188 [controller view]; // Force nib load. 193 [controller view]; // Force nib load.
189 194
190 // Test the right nib loaded. 195 // Test the right nib loaded.
191 EXPECT_NSEQ(@"ExtensionInstallPromptNoWarnings", [controller nibName]); 196 EXPECT_NSEQ(@"ExtensionInstallPromptNoWarnings", [controller nibName]);
192 197
193 // Check all the controls. 198 // Check all the controls.
194 // In the skinny prompt, only the icon, title and buttons are non-nill. 199 // In the skinny prompt, only the icon, title and buttons are non-nill.
195 // Everything else is nil. 200 // Everything else is nil.
196 EXPECT_TRUE([controller iconView]); 201 EXPECT_TRUE([controller iconView]);
(...skipping 21 matching lines...) Expand all
218 223
219 // No warnings should trigger skinny prompt. 224 // No warnings should trigger skinny prompt.
220 scoped_refptr<ExtensionInstallPrompt::Prompt> inline_prompt = 225 scoped_refptr<ExtensionInstallPrompt::Prompt> inline_prompt =
221 new ExtensionInstallPrompt::Prompt( 226 new ExtensionInstallPrompt::Prompt(
222 ExtensionInstallPrompt::INLINE_INSTALL_PROMPT); 227 ExtensionInstallPrompt::INLINE_INSTALL_PROMPT);
223 inline_prompt->SetWebstoreData("1,000", true, 3.5, 200); 228 inline_prompt->SetWebstoreData("1,000", true, 3.5, 200);
224 inline_prompt->set_extension(extension_.get()); 229 inline_prompt->set_extension(extension_.get());
225 inline_prompt->set_icon(chrome::LoadInstallPromptIcon()); 230 inline_prompt->set_icon(chrome::LoadInstallPromptIcon());
226 231
227 base::scoped_nsobject<ExtensionInstallViewController> controller( 232 base::scoped_nsobject<ExtensionInstallViewController> controller(
228 [[ExtensionInstallViewController alloc] initWithNavigator:browser() 233 [[ExtensionInstallViewController alloc] initWithProfile:profile()
229 delegate:&delegate 234 navigator:browser()
230 prompt:inline_prompt]); 235 delegate:&delegate
236 prompt:inline_prompt]);
231 237
232 [controller view]; // Force nib load. 238 [controller view]; // Force nib load.
233 239
234 // Test the right nib loaded. 240 // Test the right nib loaded.
235 EXPECT_NSEQ(@"ExtensionInstallPromptWebstoreData", [controller nibName]); 241 EXPECT_NSEQ(@"ExtensionInstallPromptWebstoreData", [controller nibName]);
236 242
237 // Check all the controls. 243 // Check all the controls.
238 EXPECT_TRUE([controller iconView]); 244 EXPECT_TRUE([controller iconView]);
239 EXPECT_TRUE([[controller iconView] image]); 245 EXPECT_TRUE([[controller iconView] image]);
240 246
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 287
282 std::vector<base::string16> permissions; 288 std::vector<base::string16> permissions;
283 permissions.push_back(base::UTF8ToUTF16("warning 1")); 289 permissions.push_back(base::UTF8ToUTF16("warning 1"));
284 prompt->SetPermissions(permissions, type); 290 prompt->SetPermissions(permissions, type);
285 // No details provided with this permission. 291 // No details provided with this permission.
286 std::vector<base::string16> details; 292 std::vector<base::string16> details;
287 details.push_back(base::string16()); 293 details.push_back(base::string16());
288 prompt->SetPermissionsDetails(details, type); 294 prompt->SetPermissionsDetails(details, type);
289 295
290 base::scoped_nsobject<ExtensionInstallViewController> controller( 296 base::scoped_nsobject<ExtensionInstallViewController> controller(
291 [[ExtensionInstallViewController alloc] initWithNavigator:browser() 297 [[ExtensionInstallViewController alloc] initWithProfile:profile()
292 delegate:&delegate 298 navigator:browser()
293 prompt:prompt]); 299 delegate:&delegate
300 prompt:prompt]);
294 301
295 [controller view]; // Force nib load. 302 [controller view]; // Force nib load.
296 303
297 EXPECT_TRUE([controller cancelButton]); 304 EXPECT_TRUE([controller cancelButton]);
298 EXPECT_FALSE([controller okButton]); 305 EXPECT_FALSE([controller okButton]);
299 306
300 [controller cancel:nil]; 307 [controller cancel:nil];
301 EXPECT_EQ(1, delegate.abort_count()); 308 EXPECT_EQ(1, delegate.abort_count());
302 } 309 }
303 310
304 // Test that permission details show up. 311 // Test that permission details show up.
305 TEST_F(ExtensionInstallViewControllerTest, PermissionsDetails) { 312 TEST_F(ExtensionInstallViewControllerTest, PermissionsDetails) {
306 chrome::MockExtensionInstallPromptDelegate delegate; 313 chrome::MockExtensionInstallPromptDelegate delegate;
307 314
308 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = 315 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
309 chrome::BuildExtensionInstallPrompt(extension_.get()); 316 chrome::BuildExtensionInstallPrompt(extension_.get());
310 ExtensionInstallPrompt::PermissionsType type = 317 ExtensionInstallPrompt::PermissionsType type =
311 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS; 318 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS;
312 319
313 std::vector<base::string16> permissions; 320 std::vector<base::string16> permissions;
314 permissions.push_back(base::UTF8ToUTF16("warning 1")); 321 permissions.push_back(base::UTF8ToUTF16("warning 1"));
315 std::vector<base::string16> permissions_details; 322 std::vector<base::string16> permissions_details;
316 permissions_details.push_back(base::UTF8ToUTF16("Detail 1")); 323 permissions_details.push_back(base::UTF8ToUTF16("Detail 1"));
317 prompt->SetPermissions(permissions, type); 324 prompt->SetPermissions(permissions, type);
318 prompt->SetPermissionsDetails(permissions_details, type); 325 prompt->SetPermissionsDetails(permissions_details, type);
319 prompt->SetIsShowingDetails( 326 prompt->SetIsShowingDetails(
320 ExtensionInstallPrompt::PERMISSIONS_DETAILS, 0, true); 327 ExtensionInstallPrompt::PERMISSIONS_DETAILS, 0, true);
321 328
322 base::scoped_nsobject<ExtensionInstallViewController> controller( 329 base::scoped_nsobject<ExtensionInstallViewController> controller(
323 [[ExtensionInstallViewController alloc] initWithNavigator:browser() 330 [[ExtensionInstallViewController alloc] initWithProfile:profile()
324 delegate:&delegate 331 navigator:browser()
325 prompt:prompt]); 332 delegate:&delegate
333 prompt:prompt]);
326 334
327 [controller view]; // Force nib load. 335 [controller view]; // Force nib load.
328 336
329 NSOutlineView* outlineView = [controller outlineView]; 337 NSOutlineView* outlineView = [controller outlineView];
330 EXPECT_TRUE(outlineView); 338 EXPECT_TRUE(outlineView);
331 EXPECT_EQ(4, [outlineView numberOfRows]); 339 EXPECT_EQ(4, [outlineView numberOfRows]);
332 EXPECT_NSEQ(base::SysUTF16ToNSString(prompt->GetPermissionsDetails(0, type)), 340 EXPECT_NSEQ(base::SysUTF16ToNSString(prompt->GetPermissionsDetails(0, type)),
333 [[outlineView dataSource] outlineView:outlineView 341 [[outlineView dataSource] outlineView:outlineView
334 objectValueForTableColumn:nil 342 objectValueForTableColumn:nil
335 byItem:[outlineView itemAtRow:2]]); 343 byItem:[outlineView itemAtRow:2]]);
336 } 344 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698