OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |