| 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 |