| 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 20 matching lines...) Expand all Loading... |
| 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 ExtensionInstallPrompt::Prompt prompt = | 37 ExtensionInstallPrompt::Prompt prompt = |
| 38 chrome::BuildExtensionInstallPrompt(extension_.get()); | 38 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 39 | 39 |
| 40 std::vector<base::string16> permissions; | 40 std::vector<base::string16> permissions; |
| 41 permissions.push_back(UTF8ToUTF16("warning 1")); | 41 permissions.push_back(base::UTF8ToUTF16("warning 1")); |
| 42 prompt.SetPermissions(permissions); | 42 prompt.SetPermissions(permissions); |
| 43 // No details provided with this permission. | 43 // No details provided with this permission. |
| 44 std::vector<base::string16> details; | 44 std::vector<base::string16> details; |
| 45 details.push_back(base::string16()); | 45 details.push_back(base::string16()); |
| 46 prompt.SetPermissionsDetails(details); | 46 prompt.SetPermissionsDetails(details); |
| 47 | 47 |
| 48 base::scoped_nsobject<ExtensionInstallViewController> controller( | 48 base::scoped_nsobject<ExtensionInstallViewController> controller( |
| 49 [[ExtensionInstallViewController alloc] initWithNavigator:browser() | 49 [[ExtensionInstallViewController alloc] initWithNavigator:browser() |
| 50 delegate:&delegate | 50 delegate:&delegate |
| 51 prompt:prompt]); | 51 prompt:prompt]); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 EXPECT_EQ(1, delegate.abort_count()); | 86 EXPECT_EQ(1, delegate.abort_count()); |
| 87 EXPECT_EQ(0, delegate.proceed_count()); | 87 EXPECT_EQ(0, delegate.proceed_count()); |
| 88 } | 88 } |
| 89 | 89 |
| 90 TEST_F(ExtensionInstallViewControllerTest, BasicsNormalOK) { | 90 TEST_F(ExtensionInstallViewControllerTest, BasicsNormalOK) { |
| 91 chrome::MockExtensionInstallPromptDelegate delegate; | 91 chrome::MockExtensionInstallPromptDelegate delegate; |
| 92 | 92 |
| 93 ExtensionInstallPrompt::Prompt prompt = | 93 ExtensionInstallPrompt::Prompt prompt = |
| 94 chrome::BuildExtensionInstallPrompt(extension_.get()); | 94 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 95 std::vector<base::string16> permissions; | 95 std::vector<base::string16> permissions; |
| 96 permissions.push_back(UTF8ToUTF16("warning 1")); | 96 permissions.push_back(base::UTF8ToUTF16("warning 1")); |
| 97 prompt.SetPermissions(permissions); | 97 prompt.SetPermissions(permissions); |
| 98 // No details provided with this permission. | 98 // No details provided with this permission. |
| 99 std::vector<base::string16> details; | 99 std::vector<base::string16> details; |
| 100 details.push_back(base::string16()); | 100 details.push_back(base::string16()); |
| 101 prompt.SetPermissionsDetails(details); | 101 prompt.SetPermissionsDetails(details); |
| 102 | 102 |
| 103 base::scoped_nsobject<ExtensionInstallViewController> controller( | 103 base::scoped_nsobject<ExtensionInstallViewController> controller( |
| 104 [[ExtensionInstallViewController alloc] initWithNavigator:browser() | 104 [[ExtensionInstallViewController alloc] initWithNavigator:browser() |
| 105 delegate:&delegate | 105 delegate:&delegate |
| 106 prompt:prompt]); | 106 prompt:prompt]); |
| 107 | 107 |
| 108 [controller view]; // Force nib load. | 108 [controller view]; // Force nib load. |
| 109 [controller ok:nil]; | 109 [controller ok:nil]; |
| 110 | 110 |
| 111 EXPECT_EQ(0, delegate.abort_count()); | 111 EXPECT_EQ(0, delegate.abort_count()); |
| 112 EXPECT_EQ(1, delegate.proceed_count()); | 112 EXPECT_EQ(1, delegate.proceed_count()); |
| 113 } | 113 } |
| 114 | 114 |
| 115 // Test that controls get repositioned when there are two warnings vs one | 115 // Test that controls get repositioned when there are two warnings vs one |
| 116 // warning. | 116 // warning. |
| 117 TEST_F(ExtensionInstallViewControllerTest, MultipleWarnings) { | 117 TEST_F(ExtensionInstallViewControllerTest, MultipleWarnings) { |
| 118 chrome::MockExtensionInstallPromptDelegate delegate1; | 118 chrome::MockExtensionInstallPromptDelegate delegate1; |
| 119 chrome::MockExtensionInstallPromptDelegate delegate2; | 119 chrome::MockExtensionInstallPromptDelegate delegate2; |
| 120 | 120 |
| 121 ExtensionInstallPrompt::Prompt one_warning_prompt = | 121 ExtensionInstallPrompt::Prompt one_warning_prompt = |
| 122 chrome::BuildExtensionInstallPrompt(extension_.get()); | 122 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 123 std::vector<base::string16> permissions; | 123 std::vector<base::string16> permissions; |
| 124 permissions.push_back(UTF8ToUTF16("warning 1")); | 124 permissions.push_back(base::UTF8ToUTF16("warning 1")); |
| 125 one_warning_prompt.SetPermissions(permissions); | 125 one_warning_prompt.SetPermissions(permissions); |
| 126 // No details provided with this permission. | 126 // No details provided with this permission. |
| 127 std::vector<base::string16> details; | 127 std::vector<base::string16> details; |
| 128 details.push_back(base::string16()); | 128 details.push_back(base::string16()); |
| 129 one_warning_prompt.SetPermissionsDetails(details); | 129 one_warning_prompt.SetPermissionsDetails(details); |
| 130 | 130 |
| 131 ExtensionInstallPrompt::Prompt two_warnings_prompt = | 131 ExtensionInstallPrompt::Prompt two_warnings_prompt = |
| 132 chrome::BuildExtensionInstallPrompt(extension_.get()); | 132 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 133 permissions.push_back(UTF8ToUTF16("warning 2")); | 133 permissions.push_back(base::UTF8ToUTF16("warning 2")); |
| 134 two_warnings_prompt.SetPermissions(permissions); | 134 two_warnings_prompt.SetPermissions(permissions); |
| 135 // No details provided with this permission. | 135 // No details provided with this permission. |
| 136 details.push_back(base::string16()); | 136 details.push_back(base::string16()); |
| 137 two_warnings_prompt.SetPermissionsDetails(details); | 137 two_warnings_prompt.SetPermissionsDetails(details); |
| 138 | 138 |
| 139 base::scoped_nsobject<ExtensionInstallViewController> controller1( | 139 base::scoped_nsobject<ExtensionInstallViewController> controller1( |
| 140 [[ExtensionInstallViewController alloc] | 140 [[ExtensionInstallViewController alloc] |
| 141 initWithNavigator:browser() | 141 initWithNavigator:browser() |
| 142 delegate:&delegate1 | 142 delegate:&delegate1 |
| 143 prompt:one_warning_prompt]); | 143 prompt:one_warning_prompt]); |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 EXPECT_TRUE([controller warningsSeparator]); | 261 EXPECT_TRUE([controller warningsSeparator]); |
| 262 EXPECT_TRUE([[controller warningsSeparator] isHidden]); | 262 EXPECT_TRUE([[controller warningsSeparator] isHidden]); |
| 263 } | 263 } |
| 264 | 264 |
| 265 TEST_F(ExtensionInstallViewControllerTest, OAuthIssues) { | 265 TEST_F(ExtensionInstallViewControllerTest, OAuthIssues) { |
| 266 chrome::MockExtensionInstallPromptDelegate delegate; | 266 chrome::MockExtensionInstallPromptDelegate delegate; |
| 267 | 267 |
| 268 ExtensionInstallPrompt::Prompt prompt = | 268 ExtensionInstallPrompt::Prompt prompt = |
| 269 chrome::BuildExtensionInstallPrompt(extension_.get()); | 269 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 270 std::vector<base::string16> permissions; | 270 std::vector<base::string16> permissions; |
| 271 permissions.push_back(UTF8ToUTF16("warning 1")); | 271 permissions.push_back(base::UTF8ToUTF16("warning 1")); |
| 272 prompt.SetPermissions(permissions); | 272 prompt.SetPermissions(permissions); |
| 273 // No details provided with this permission. | 273 // No details provided with this permission. |
| 274 std::vector<base::string16> details; | 274 std::vector<base::string16> details; |
| 275 details.push_back(base::string16()); | 275 details.push_back(base::string16()); |
| 276 prompt.SetPermissionsDetails(details); | 276 prompt.SetPermissionsDetails(details); |
| 277 | 277 |
| 278 IssueAdviceInfoEntry issue; | 278 IssueAdviceInfoEntry issue; |
| 279 issue.description = UTF8ToUTF16("issue description 1"); | 279 issue.description = base::UTF8ToUTF16("issue description 1"); |
| 280 issue.details.push_back(UTF8ToUTF16("issue detail 1")); | 280 issue.details.push_back(base::UTF8ToUTF16("issue detail 1")); |
| 281 IssueAdviceInfo issues; | 281 IssueAdviceInfo issues; |
| 282 issues.push_back(issue); | 282 issues.push_back(issue); |
| 283 prompt.SetOAuthIssueAdvice(issues); | 283 prompt.SetOAuthIssueAdvice(issues); |
| 284 prompt.SetIsShowingDetails( | 284 prompt.SetIsShowingDetails( |
| 285 ExtensionInstallPrompt::OAUTH_DETAILS, 0, true); | 285 ExtensionInstallPrompt::OAUTH_DETAILS, 0, true); |
| 286 | 286 |
| 287 base::scoped_nsobject<ExtensionInstallViewController> controller( | 287 base::scoped_nsobject<ExtensionInstallViewController> controller( |
| 288 [[ExtensionInstallViewController alloc] initWithNavigator:browser() | 288 [[ExtensionInstallViewController alloc] initWithNavigator:browser() |
| 289 delegate:&delegate | 289 delegate:&delegate |
| 290 prompt:prompt]); | 290 prompt:prompt]); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 303 objectValueForTableColumn:nil | 303 objectValueForTableColumn:nil |
| 304 byItem:[outlineView itemAtRow:4]]); | 304 byItem:[outlineView itemAtRow:4]]); |
| 305 } | 305 } |
| 306 | 306 |
| 307 TEST_F(ExtensionInstallViewControllerTest, PostInstallPermissionsPrompt) { | 307 TEST_F(ExtensionInstallViewControllerTest, PostInstallPermissionsPrompt) { |
| 308 chrome::MockExtensionInstallPromptDelegate delegate; | 308 chrome::MockExtensionInstallPromptDelegate delegate; |
| 309 | 309 |
| 310 ExtensionInstallPrompt::Prompt prompt = | 310 ExtensionInstallPrompt::Prompt prompt = |
| 311 chrome::BuildExtensionPostInstallPermissionsPrompt(extension_.get()); | 311 chrome::BuildExtensionPostInstallPermissionsPrompt(extension_.get()); |
| 312 std::vector<base::string16> permissions; | 312 std::vector<base::string16> permissions; |
| 313 permissions.push_back(UTF8ToUTF16("warning 1")); | 313 permissions.push_back(base::UTF8ToUTF16("warning 1")); |
| 314 prompt.SetPermissions(permissions); | 314 prompt.SetPermissions(permissions); |
| 315 // No details provided with this permission. | 315 // No details provided with this permission. |
| 316 std::vector<base::string16> details; | 316 std::vector<base::string16> details; |
| 317 details.push_back(base::string16()); | 317 details.push_back(base::string16()); |
| 318 prompt.SetPermissionsDetails(details); | 318 prompt.SetPermissionsDetails(details); |
| 319 | 319 |
| 320 base::scoped_nsobject<ExtensionInstallViewController> controller( | 320 base::scoped_nsobject<ExtensionInstallViewController> controller( |
| 321 [[ExtensionInstallViewController alloc] initWithNavigator:browser() | 321 [[ExtensionInstallViewController alloc] initWithNavigator:browser() |
| 322 delegate:&delegate | 322 delegate:&delegate |
| 323 prompt:prompt]); | 323 prompt:prompt]); |
| 324 | 324 |
| 325 [controller view]; // Force nib load. | 325 [controller view]; // Force nib load. |
| 326 | 326 |
| 327 EXPECT_TRUE([controller cancelButton]); | 327 EXPECT_TRUE([controller cancelButton]); |
| 328 EXPECT_FALSE([controller okButton]); | 328 EXPECT_FALSE([controller okButton]); |
| 329 | 329 |
| 330 [controller cancel:nil]; | 330 [controller cancel:nil]; |
| 331 EXPECT_EQ(1, delegate.abort_count()); | 331 EXPECT_EQ(1, delegate.abort_count()); |
| 332 } | 332 } |
| 333 | 333 |
| 334 // Test that permission details show up. | 334 // Test that permission details show up. |
| 335 TEST_F(ExtensionInstallViewControllerTest, PermissionsDetails) { | 335 TEST_F(ExtensionInstallViewControllerTest, PermissionsDetails) { |
| 336 chrome::MockExtensionInstallPromptDelegate delegate; | 336 chrome::MockExtensionInstallPromptDelegate delegate; |
| 337 | 337 |
| 338 ExtensionInstallPrompt::Prompt prompt = | 338 ExtensionInstallPrompt::Prompt prompt = |
| 339 chrome::BuildExtensionInstallPrompt(extension_.get()); | 339 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 340 | 340 |
| 341 std::vector<base::string16> permissions; | 341 std::vector<base::string16> permissions; |
| 342 permissions.push_back(UTF8ToUTF16("warning 1")); | 342 permissions.push_back(base::UTF8ToUTF16("warning 1")); |
| 343 std::vector<base::string16> permissions_details; | 343 std::vector<base::string16> permissions_details; |
| 344 permissions_details.push_back(UTF8ToUTF16("Detail 1")); | 344 permissions_details.push_back(base::UTF8ToUTF16("Detail 1")); |
| 345 prompt.SetPermissions(permissions); | 345 prompt.SetPermissions(permissions); |
| 346 prompt.SetPermissionsDetails(permissions_details); | 346 prompt.SetPermissionsDetails(permissions_details); |
| 347 prompt.SetIsShowingDetails( | 347 prompt.SetIsShowingDetails( |
| 348 ExtensionInstallPrompt::PERMISSIONS_DETAILS, 0, true); | 348 ExtensionInstallPrompt::PERMISSIONS_DETAILS, 0, true); |
| 349 | 349 |
| 350 base::scoped_nsobject<ExtensionInstallViewController> controller( | 350 base::scoped_nsobject<ExtensionInstallViewController> controller( |
| 351 [[ExtensionInstallViewController alloc] initWithNavigator:browser() | 351 [[ExtensionInstallViewController alloc] initWithNavigator:browser() |
| 352 delegate:&delegate | 352 delegate:&delegate |
| 353 prompt:prompt]); | 353 prompt:prompt]); |
| 354 | 354 |
| 355 [controller view]; // Force nib load. | 355 [controller view]; // Force nib load. |
| 356 | 356 |
| 357 NSOutlineView* outlineView = [controller outlineView]; | 357 NSOutlineView* outlineView = [controller outlineView]; |
| 358 EXPECT_TRUE(outlineView); | 358 EXPECT_TRUE(outlineView); |
| 359 EXPECT_EQ(4, [outlineView numberOfRows]); | 359 EXPECT_EQ(4, [outlineView numberOfRows]); |
| 360 EXPECT_NSEQ(base::SysUTF16ToNSString(prompt.GetPermissionsDetails(0)), | 360 EXPECT_NSEQ(base::SysUTF16ToNSString(prompt.GetPermissionsDetails(0)), |
| 361 [[outlineView dataSource] outlineView:outlineView | 361 [[outlineView dataSource] outlineView:outlineView |
| 362 objectValueForTableColumn:nil | 362 objectValueForTableColumn:nil |
| 363 byItem:[outlineView itemAtRow:2]]); | 363 byItem:[outlineView itemAtRow:2]]); |
| 364 } | 364 } |
| OLD | NEW |