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