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 18 matching lines...) Expand all Loading... |
29 scoped_refptr<extensions::Extension> extension_; | 29 scoped_refptr<extensions::Extension> extension_; |
30 }; | 30 }; |
31 | 31 |
32 // Test that we can load the two kinds of prompts correctly, that the outlets | 32 // Test that we can load the two kinds of prompts correctly, that the outlets |
33 // are hooked up, and that the dialog calls cancel when cancel is pressed. | 33 // are hooked up, and that the dialog calls cancel when cancel is pressed. |
34 TEST_F(ExtensionInstallViewControllerTest, BasicsNormalCancel) { | 34 TEST_F(ExtensionInstallViewControllerTest, BasicsNormalCancel) { |
35 chrome::MockExtensionInstallPromptDelegate delegate; | 35 chrome::MockExtensionInstallPromptDelegate delegate; |
36 | 36 |
37 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = | 37 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = |
38 chrome::BuildExtensionInstallPrompt(extension_.get()); | 38 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 39 ExtensionInstallPrompt::PermissionsType type = |
| 40 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS; |
39 | 41 |
40 std::vector<base::string16> permissions; | 42 std::vector<base::string16> permissions; |
41 permissions.push_back(base::UTF8ToUTF16("warning 1")); | 43 permissions.push_back(base::UTF8ToUTF16("warning 1")); |
42 prompt->SetPermissions(permissions); | 44 prompt->SetPermissions(permissions, type); |
43 // No details provided with this permission. | 45 // No details provided with this permission. |
44 std::vector<base::string16> details; | 46 std::vector<base::string16> details; |
45 details.push_back(base::string16()); | 47 details.push_back(base::string16()); |
46 prompt->SetPermissionsDetails(details); | 48 prompt->SetPermissionsDetails(details, type); |
47 | 49 |
48 base::scoped_nsobject<ExtensionInstallViewController> controller( | 50 base::scoped_nsobject<ExtensionInstallViewController> controller( |
49 [[ExtensionInstallViewController alloc] initWithNavigator:browser() | 51 [[ExtensionInstallViewController alloc] initWithNavigator:browser() |
50 delegate:&delegate | 52 delegate:&delegate |
51 prompt:prompt]); | 53 prompt:prompt]); |
52 | 54 |
53 [controller view]; // Force nib load. | 55 [controller view]; // Force nib load. |
54 | 56 |
55 // Test the right nib loaded. | 57 // Test the right nib loaded. |
56 EXPECT_NSEQ(@"ExtensionInstallPrompt", [controller nibName]); | 58 EXPECT_NSEQ(@"ExtensionInstallPrompt", [controller nibName]); |
57 | 59 |
58 // Check all the controls. | 60 // Check all the controls. |
59 // Make sure everything is non-nil, and that the fields that are | 61 // Make sure everything is non-nil, and that the fields that are |
60 // auto-translated don't start with a caret (that would indicate that they | 62 // auto-translated don't start with a caret (that would indicate that they |
61 // were not translated). | 63 // were not translated). |
62 EXPECT_TRUE([controller iconView]); | 64 EXPECT_TRUE([controller iconView]); |
63 EXPECT_TRUE([[controller iconView] image]); | 65 EXPECT_TRUE([[controller iconView] image]); |
64 | 66 |
65 EXPECT_TRUE([controller titleField]); | 67 EXPECT_TRUE([controller titleField]); |
66 EXPECT_NE(0u, [[[controller titleField] stringValue] length]); | 68 EXPECT_NE(0u, [[[controller titleField] stringValue] length]); |
67 | 69 |
68 NSOutlineView* outlineView = [controller outlineView]; | 70 NSOutlineView* outlineView = [controller outlineView]; |
69 EXPECT_TRUE(outlineView); | 71 EXPECT_TRUE(outlineView); |
70 EXPECT_EQ(2, [outlineView numberOfRows]); | 72 EXPECT_EQ(2, [outlineView numberOfRows]); |
71 EXPECT_NSEQ(base::SysUTF16ToNSString(prompt->GetPermission(0)), | 73 EXPECT_NSEQ(base::SysUTF16ToNSString(prompt->GetPermission(0, type)), |
72 [[outlineView dataSource] outlineView:outlineView | 74 [[outlineView dataSource] outlineView:outlineView |
73 objectValueForTableColumn:nil | 75 objectValueForTableColumn:nil |
74 byItem:[outlineView itemAtRow:1]]); | 76 byItem:[outlineView itemAtRow:1]]); |
75 | 77 |
76 EXPECT_TRUE([controller cancelButton]); | 78 EXPECT_TRUE([controller cancelButton]); |
77 EXPECT_NE(0u, [[[controller cancelButton] stringValue] length]); | 79 EXPECT_NE(0u, [[[controller cancelButton] stringValue] length]); |
78 EXPECT_NE('^', [[[controller cancelButton] stringValue] characterAtIndex:0]); | 80 EXPECT_NE('^', [[[controller cancelButton] stringValue] characterAtIndex:0]); |
79 | 81 |
80 EXPECT_TRUE([controller okButton]); | 82 EXPECT_TRUE([controller okButton]); |
81 EXPECT_NE(0u, [[[controller okButton] stringValue] length]); | 83 EXPECT_NE(0u, [[[controller okButton] stringValue] length]); |
82 EXPECT_NE('^', [[[controller okButton] stringValue] characterAtIndex:0]); | 84 EXPECT_NE('^', [[[controller okButton] stringValue] characterAtIndex:0]); |
83 | 85 |
84 // Test that cancel calls our delegate. | 86 // Test that cancel calls our delegate. |
85 [controller cancel:nil]; | 87 [controller cancel:nil]; |
86 EXPECT_EQ(1, delegate.abort_count()); | 88 EXPECT_EQ(1, delegate.abort_count()); |
87 EXPECT_EQ(0, delegate.proceed_count()); | 89 EXPECT_EQ(0, delegate.proceed_count()); |
88 } | 90 } |
89 | 91 |
90 TEST_F(ExtensionInstallViewControllerTest, BasicsNormalOK) { | 92 TEST_F(ExtensionInstallViewControllerTest, BasicsNormalOK) { |
91 chrome::MockExtensionInstallPromptDelegate delegate; | 93 chrome::MockExtensionInstallPromptDelegate delegate; |
92 | 94 |
93 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = | 95 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = |
94 chrome::BuildExtensionInstallPrompt(extension_.get()); | 96 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 97 ExtensionInstallPrompt::PermissionsType type = |
| 98 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS; |
| 99 |
95 std::vector<base::string16> permissions; | 100 std::vector<base::string16> permissions; |
96 permissions.push_back(base::UTF8ToUTF16("warning 1")); | 101 permissions.push_back(base::UTF8ToUTF16("warning 1")); |
97 prompt->SetPermissions(permissions); | 102 prompt->SetPermissions(permissions, type); |
98 // No details provided with this permission. | 103 // No details provided with this permission. |
99 std::vector<base::string16> details; | 104 std::vector<base::string16> details; |
100 details.push_back(base::string16()); | 105 details.push_back(base::string16()); |
101 prompt->SetPermissionsDetails(details); | 106 prompt->SetPermissionsDetails(details, type); |
102 | 107 |
103 base::scoped_nsobject<ExtensionInstallViewController> controller( | 108 base::scoped_nsobject<ExtensionInstallViewController> controller( |
104 [[ExtensionInstallViewController alloc] initWithNavigator:browser() | 109 [[ExtensionInstallViewController alloc] initWithNavigator:browser() |
105 delegate:&delegate | 110 delegate:&delegate |
106 prompt:prompt]); | 111 prompt:prompt]); |
107 | 112 |
108 [controller view]; // Force nib load. | 113 [controller view]; // Force nib load. |
109 [controller ok:nil]; | 114 [controller ok:nil]; |
110 | 115 |
111 EXPECT_EQ(0, delegate.abort_count()); | 116 EXPECT_EQ(0, delegate.abort_count()); |
112 EXPECT_EQ(1, delegate.proceed_count()); | 117 EXPECT_EQ(1, delegate.proceed_count()); |
113 } | 118 } |
114 | 119 |
115 // Test that controls get repositioned when there are two warnings vs one | 120 // Test that controls get repositioned when there are two warnings vs one |
116 // warning. | 121 // warning. |
117 TEST_F(ExtensionInstallViewControllerTest, MultipleWarnings) { | 122 TEST_F(ExtensionInstallViewControllerTest, MultipleWarnings) { |
118 chrome::MockExtensionInstallPromptDelegate delegate1; | 123 chrome::MockExtensionInstallPromptDelegate delegate1; |
119 chrome::MockExtensionInstallPromptDelegate delegate2; | 124 chrome::MockExtensionInstallPromptDelegate delegate2; |
120 | 125 |
121 scoped_refptr<ExtensionInstallPrompt::Prompt> one_warning_prompt = | 126 scoped_refptr<ExtensionInstallPrompt::Prompt> one_warning_prompt = |
122 chrome::BuildExtensionInstallPrompt(extension_.get()); | 127 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 128 ExtensionInstallPrompt::PermissionsType type = |
| 129 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS; |
| 130 |
123 std::vector<base::string16> permissions; | 131 std::vector<base::string16> permissions; |
124 permissions.push_back(base::UTF8ToUTF16("warning 1")); | 132 permissions.push_back(base::UTF8ToUTF16("warning 1")); |
125 one_warning_prompt->SetPermissions(permissions); | 133 one_warning_prompt->SetPermissions(permissions, type); |
126 // No details provided with this permission. | 134 // No details provided with this permission. |
127 std::vector<base::string16> details; | 135 std::vector<base::string16> details; |
128 details.push_back(base::string16()); | 136 details.push_back(base::string16()); |
129 one_warning_prompt->SetPermissionsDetails(details); | 137 one_warning_prompt->SetPermissionsDetails(details, type); |
130 | 138 |
131 scoped_refptr<ExtensionInstallPrompt::Prompt> two_warnings_prompt = | 139 scoped_refptr<ExtensionInstallPrompt::Prompt> two_warnings_prompt = |
132 chrome::BuildExtensionInstallPrompt(extension_.get()); | 140 chrome::BuildExtensionInstallPrompt(extension_.get()); |
133 permissions.push_back(base::UTF8ToUTF16("warning 2")); | 141 permissions.push_back(base::UTF8ToUTF16("warning 2")); |
134 two_warnings_prompt->SetPermissions(permissions); | 142 two_warnings_prompt->SetPermissions(permissions, type); |
135 // No details provided with this permission. | 143 // No details provided with this permission. |
136 details.push_back(base::string16()); | 144 details.push_back(base::string16()); |
137 two_warnings_prompt->SetPermissionsDetails(details); | 145 two_warnings_prompt->SetPermissionsDetails(details, type); |
138 | 146 |
139 base::scoped_nsobject<ExtensionInstallViewController> controller1( | 147 base::scoped_nsobject<ExtensionInstallViewController> controller1( |
140 [[ExtensionInstallViewController alloc] | 148 [[ExtensionInstallViewController alloc] |
141 initWithNavigator:browser() | 149 initWithNavigator:browser() |
142 delegate:&delegate1 | 150 delegate:&delegate1 |
143 prompt:one_warning_prompt]); | 151 prompt:one_warning_prompt]); |
144 | 152 |
145 [controller1 view]; // Force nib load. | 153 [controller1 view]; // Force nib load. |
146 | 154 |
147 base::scoped_nsobject<ExtensionInstallViewController> controller2( | 155 base::scoped_nsobject<ExtensionInstallViewController> controller2( |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 EXPECT_TRUE([[[controller outlineView] enclosingScrollView] isHidden]); | 269 EXPECT_TRUE([[[controller outlineView] enclosingScrollView] isHidden]); |
262 EXPECT_TRUE([controller warningsSeparator]); | 270 EXPECT_TRUE([controller warningsSeparator]); |
263 EXPECT_TRUE([[controller warningsSeparator] isHidden]); | 271 EXPECT_TRUE([[controller warningsSeparator] isHidden]); |
264 } | 272 } |
265 | 273 |
266 TEST_F(ExtensionInstallViewControllerTest, PostInstallPermissionsPrompt) { | 274 TEST_F(ExtensionInstallViewControllerTest, PostInstallPermissionsPrompt) { |
267 chrome::MockExtensionInstallPromptDelegate delegate; | 275 chrome::MockExtensionInstallPromptDelegate delegate; |
268 | 276 |
269 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = | 277 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = |
270 chrome::BuildExtensionPostInstallPermissionsPrompt(extension_.get()); | 278 chrome::BuildExtensionPostInstallPermissionsPrompt(extension_.get()); |
| 279 ExtensionInstallPrompt::PermissionsType type = |
| 280 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS; |
| 281 |
271 std::vector<base::string16> permissions; | 282 std::vector<base::string16> permissions; |
272 permissions.push_back(base::UTF8ToUTF16("warning 1")); | 283 permissions.push_back(base::UTF8ToUTF16("warning 1")); |
273 prompt->SetPermissions(permissions); | 284 prompt->SetPermissions(permissions, type); |
274 // No details provided with this permission. | 285 // No details provided with this permission. |
275 std::vector<base::string16> details; | 286 std::vector<base::string16> details; |
276 details.push_back(base::string16()); | 287 details.push_back(base::string16()); |
277 prompt->SetPermissionsDetails(details); | 288 prompt->SetPermissionsDetails(details, type); |
278 | 289 |
279 base::scoped_nsobject<ExtensionInstallViewController> controller( | 290 base::scoped_nsobject<ExtensionInstallViewController> controller( |
280 [[ExtensionInstallViewController alloc] initWithNavigator:browser() | 291 [[ExtensionInstallViewController alloc] initWithNavigator:browser() |
281 delegate:&delegate | 292 delegate:&delegate |
282 prompt:prompt]); | 293 prompt:prompt]); |
283 | 294 |
284 [controller view]; // Force nib load. | 295 [controller view]; // Force nib load. |
285 | 296 |
286 EXPECT_TRUE([controller cancelButton]); | 297 EXPECT_TRUE([controller cancelButton]); |
287 EXPECT_FALSE([controller okButton]); | 298 EXPECT_FALSE([controller okButton]); |
288 | 299 |
289 [controller cancel:nil]; | 300 [controller cancel:nil]; |
290 EXPECT_EQ(1, delegate.abort_count()); | 301 EXPECT_EQ(1, delegate.abort_count()); |
291 } | 302 } |
292 | 303 |
293 // Test that permission details show up. | 304 // Test that permission details show up. |
294 TEST_F(ExtensionInstallViewControllerTest, PermissionsDetails) { | 305 TEST_F(ExtensionInstallViewControllerTest, PermissionsDetails) { |
295 chrome::MockExtensionInstallPromptDelegate delegate; | 306 chrome::MockExtensionInstallPromptDelegate delegate; |
296 | 307 |
297 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = | 308 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = |
298 chrome::BuildExtensionInstallPrompt(extension_.get()); | 309 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 310 ExtensionInstallPrompt::PermissionsType type = |
| 311 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS; |
299 | 312 |
300 std::vector<base::string16> permissions; | 313 std::vector<base::string16> permissions; |
301 permissions.push_back(base::UTF8ToUTF16("warning 1")); | 314 permissions.push_back(base::UTF8ToUTF16("warning 1")); |
302 std::vector<base::string16> permissions_details; | 315 std::vector<base::string16> permissions_details; |
303 permissions_details.push_back(base::UTF8ToUTF16("Detail 1")); | 316 permissions_details.push_back(base::UTF8ToUTF16("Detail 1")); |
304 prompt->SetPermissions(permissions); | 317 prompt->SetPermissions(permissions, type); |
305 prompt->SetPermissionsDetails(permissions_details); | 318 prompt->SetPermissionsDetails(permissions_details, type); |
306 prompt->SetIsShowingDetails( | 319 prompt->SetIsShowingDetails( |
307 ExtensionInstallPrompt::PERMISSIONS_DETAILS, 0, true); | 320 ExtensionInstallPrompt::PERMISSIONS_DETAILS, 0, true); |
308 | 321 |
309 base::scoped_nsobject<ExtensionInstallViewController> controller( | 322 base::scoped_nsobject<ExtensionInstallViewController> controller( |
310 [[ExtensionInstallViewController alloc] initWithNavigator:browser() | 323 [[ExtensionInstallViewController alloc] initWithNavigator:browser() |
311 delegate:&delegate | 324 delegate:&delegate |
312 prompt:prompt]); | 325 prompt:prompt]); |
313 | 326 |
314 [controller view]; // Force nib load. | 327 [controller view]; // Force nib load. |
315 | 328 |
316 NSOutlineView* outlineView = [controller outlineView]; | 329 NSOutlineView* outlineView = [controller outlineView]; |
317 EXPECT_TRUE(outlineView); | 330 EXPECT_TRUE(outlineView); |
318 EXPECT_EQ(4, [outlineView numberOfRows]); | 331 EXPECT_EQ(4, [outlineView numberOfRows]); |
319 EXPECT_NSEQ(base::SysUTF16ToNSString(prompt->GetPermissionsDetails(0)), | 332 EXPECT_NSEQ(base::SysUTF16ToNSString(prompt->GetPermissionsDetails(0, type)), |
320 [[outlineView dataSource] outlineView:outlineView | 333 [[outlineView dataSource] outlineView:outlineView |
321 objectValueForTableColumn:nil | 334 objectValueForTableColumn:nil |
322 byItem:[outlineView itemAtRow:2]]); | 335 byItem:[outlineView itemAtRow:2]]); |
323 } | 336 } |
OLD | NEW |