| 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 // Test that we can load the two kinds of prompts correctly, that the outlets | 31 // Test that we can load the two kinds of prompts correctly, that the outlets |
| 32 // are hooked up, and that the dialog calls cancel when cancel is pressed. | 32 // are hooked up, and that the dialog calls cancel when cancel is pressed. |
| 33 TEST_F(ExtensionInstallViewControllerTest, BasicsNormalCancel) { | 33 TEST_F(ExtensionInstallViewControllerTest, BasicsNormalCancel) { |
| 34 chrome::MockExtensionInstallPromptDelegate delegate; | 34 chrome::MockExtensionInstallPromptDelegate delegate; |
| 35 | 35 |
| 36 ExtensionInstallPrompt::Prompt prompt = | 36 ExtensionInstallPrompt::Prompt prompt = |
| 37 chrome::BuildExtensionInstallPrompt(extension_.get()); | 37 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 38 | 38 |
| 39 std::vector<string16> permissions; | 39 std::vector<string16> permissions; |
| 40 permissions.push_back(UTF8ToUTF16("warning 1")); | 40 permissions.push_back(UTF8ToUTF16("warning 1")); |
| 41 prompt.SetPermissions(permissions); | 41 prompt.SetPermissions(permissions, false); |
| 42 | 42 |
| 43 base::scoped_nsobject<ExtensionInstallViewController> controller( | 43 base::scoped_nsobject<ExtensionInstallViewController> controller( |
| 44 [[ExtensionInstallViewController alloc] initWithNavigator:browser() | 44 [[ExtensionInstallViewController alloc] initWithNavigator:browser() |
| 45 delegate:&delegate | 45 delegate:&delegate |
| 46 prompt:prompt]); | 46 prompt:prompt]); |
| 47 | 47 |
| 48 [controller view]; // Force nib load. | 48 [controller view]; // Force nib load. |
| 49 | 49 |
| 50 // Test the right nib loaded. | 50 // Test the right nib loaded. |
| 51 EXPECT_NSEQ(@"ExtensionInstallPrompt", [controller nibName]); | 51 EXPECT_NSEQ(@"ExtensionInstallPrompt", [controller nibName]); |
| 52 | 52 |
| 53 // Check all the controls. | 53 // Check all the controls. |
| 54 // Make sure everything is non-nil, and that the fields that are | 54 // Make sure everything is non-nil, and that the fields that are |
| 55 // auto-translated don't start with a caret (that would indicate that they | 55 // auto-translated don't start with a caret (that would indicate that they |
| 56 // were not translated). | 56 // were not translated). |
| 57 EXPECT_TRUE([controller iconView]); | 57 EXPECT_TRUE([controller iconView]); |
| 58 EXPECT_TRUE([[controller iconView] image]); | 58 EXPECT_TRUE([[controller iconView] image]); |
| 59 | 59 |
| 60 EXPECT_TRUE([controller titleField]); | 60 EXPECT_TRUE([controller titleField]); |
| 61 EXPECT_NE(0u, [[[controller titleField] stringValue] length]); | 61 EXPECT_NE(0u, [[[controller titleField] stringValue] length]); |
| 62 | 62 |
| 63 NSOutlineView* outlineView = [controller outlineView]; | 63 NSOutlineView* outlineView = [controller outlineView]; |
| 64 EXPECT_TRUE(outlineView); | 64 EXPECT_TRUE(outlineView); |
| 65 EXPECT_EQ(2, [outlineView numberOfRows]); | 65 EXPECT_EQ(2, [outlineView numberOfRows]); |
| 66 EXPECT_NSEQ([[outlineView dataSource] outlineView:outlineView | 66 EXPECT_NSEQ([[outlineView dataSource] outlineView:outlineView |
| 67 objectValueForTableColumn:nil | 67 objectValueForTableColumn:nil |
| 68 byItem:[outlineView itemAtRow:1]], | 68 byItem:[outlineView itemAtRow:1]], |
| 69 base::SysUTF16ToNSString(prompt.GetPermission(0))); | 69 base::SysUTF16ToNSString(prompt.GetPermission(0, false))); |
| 70 | 70 |
| 71 EXPECT_TRUE([controller cancelButton]); | 71 EXPECT_TRUE([controller cancelButton]); |
| 72 EXPECT_NE(0u, [[[controller cancelButton] stringValue] length]); | 72 EXPECT_NE(0u, [[[controller cancelButton] stringValue] length]); |
| 73 EXPECT_NE('^', [[[controller cancelButton] stringValue] characterAtIndex:0]); | 73 EXPECT_NE('^', [[[controller cancelButton] stringValue] characterAtIndex:0]); |
| 74 | 74 |
| 75 EXPECT_TRUE([controller okButton]); | 75 EXPECT_TRUE([controller okButton]); |
| 76 EXPECT_NE(0u, [[[controller okButton] stringValue] length]); | 76 EXPECT_NE(0u, [[[controller okButton] stringValue] length]); |
| 77 EXPECT_NE('^', [[[controller okButton] stringValue] characterAtIndex:0]); | 77 EXPECT_NE('^', [[[controller okButton] stringValue] characterAtIndex:0]); |
| 78 | 78 |
| 79 // Test that cancel calls our delegate. | 79 // Test that cancel calls our delegate. |
| 80 [controller cancel:nil]; | 80 [controller cancel:nil]; |
| 81 EXPECT_EQ(1, delegate.abort_count()); | 81 EXPECT_EQ(1, delegate.abort_count()); |
| 82 EXPECT_EQ(0, delegate.proceed_count()); | 82 EXPECT_EQ(0, delegate.proceed_count()); |
| 83 } | 83 } |
| 84 | 84 |
| 85 | 85 |
| 86 TEST_F(ExtensionInstallViewControllerTest, BasicsNormalOK) { | 86 TEST_F(ExtensionInstallViewControllerTest, BasicsNormalOK) { |
| 87 chrome::MockExtensionInstallPromptDelegate delegate; | 87 chrome::MockExtensionInstallPromptDelegate delegate; |
| 88 | 88 |
| 89 ExtensionInstallPrompt::Prompt prompt = | 89 ExtensionInstallPrompt::Prompt prompt = |
| 90 chrome::BuildExtensionInstallPrompt(extension_.get()); | 90 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 91 std::vector<string16> permissions; | 91 std::vector<string16> permissions; |
| 92 permissions.push_back(UTF8ToUTF16("warning 1")); | 92 permissions.push_back(UTF8ToUTF16("warning 1")); |
| 93 prompt.SetPermissions(permissions); | 93 prompt.SetPermissions(permissions, false); |
| 94 | 94 |
| 95 base::scoped_nsobject<ExtensionInstallViewController> controller( | 95 base::scoped_nsobject<ExtensionInstallViewController> controller( |
| 96 [[ExtensionInstallViewController alloc] initWithNavigator:browser() | 96 [[ExtensionInstallViewController alloc] initWithNavigator:browser() |
| 97 delegate:&delegate | 97 delegate:&delegate |
| 98 prompt:prompt]); | 98 prompt:prompt]); |
| 99 | 99 |
| 100 [controller view]; // Force nib load. | 100 [controller view]; // Force nib load. |
| 101 [controller ok:nil]; | 101 [controller ok:nil]; |
| 102 | 102 |
| 103 EXPECT_EQ(0, delegate.abort_count()); | 103 EXPECT_EQ(0, delegate.abort_count()); |
| 104 EXPECT_EQ(1, delegate.proceed_count()); | 104 EXPECT_EQ(1, delegate.proceed_count()); |
| 105 } | 105 } |
| 106 | 106 |
| 107 // Test that controls get repositioned when there are two warnings vs one | 107 // Test that controls get repositioned when there are two warnings vs one |
| 108 // warning. | 108 // warning. |
| 109 TEST_F(ExtensionInstallViewControllerTest, MultipleWarnings) { | 109 TEST_F(ExtensionInstallViewControllerTest, MultipleWarnings) { |
| 110 chrome::MockExtensionInstallPromptDelegate delegate1; | 110 chrome::MockExtensionInstallPromptDelegate delegate1; |
| 111 chrome::MockExtensionInstallPromptDelegate delegate2; | 111 chrome::MockExtensionInstallPromptDelegate delegate2; |
| 112 | 112 |
| 113 ExtensionInstallPrompt::Prompt one_warning_prompt = | 113 ExtensionInstallPrompt::Prompt one_warning_prompt = |
| 114 chrome::BuildExtensionInstallPrompt(extension_.get()); | 114 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 115 std::vector<string16> permissions; | 115 std::vector<string16> permissions; |
| 116 permissions.push_back(UTF8ToUTF16("warning 1")); | 116 permissions.push_back(UTF8ToUTF16("warning 1")); |
| 117 one_warning_prompt.SetPermissions(permissions); | 117 one_warning_prompt.SetPermissions(permissions, false); |
| 118 | 118 |
| 119 ExtensionInstallPrompt::Prompt two_warnings_prompt = | 119 ExtensionInstallPrompt::Prompt two_warnings_prompt = |
| 120 chrome::BuildExtensionInstallPrompt(extension_.get()); | 120 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 121 permissions.push_back(UTF8ToUTF16("warning 2")); | 121 permissions.push_back(UTF8ToUTF16("warning 2")); |
| 122 two_warnings_prompt.SetPermissions(permissions); | 122 two_warnings_prompt.SetPermissions(permissions, false); |
| 123 | 123 |
| 124 base::scoped_nsobject<ExtensionInstallViewController> controller1( | 124 base::scoped_nsobject<ExtensionInstallViewController> controller1( |
| 125 [[ExtensionInstallViewController alloc] | 125 [[ExtensionInstallViewController alloc] |
| 126 initWithNavigator:browser() | 126 initWithNavigator:browser() |
| 127 delegate:&delegate1 | 127 delegate:&delegate1 |
| 128 prompt:one_warning_prompt]); | 128 prompt:one_warning_prompt]); |
| 129 | 129 |
| 130 [controller1 view]; // Force nib load. | 130 [controller1 view]; // Force nib load. |
| 131 | 131 |
| 132 base::scoped_nsobject<ExtensionInstallViewController> controller2( | 132 base::scoped_nsobject<ExtensionInstallViewController> controller2( |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 247 EXPECT_TRUE([[controller warningsSeparator] isHidden]); | 247 EXPECT_TRUE([[controller warningsSeparator] isHidden]); |
| 248 } | 248 } |
| 249 | 249 |
| 250 TEST_F(ExtensionInstallViewControllerTest, OAuthIssues) { | 250 TEST_F(ExtensionInstallViewControllerTest, OAuthIssues) { |
| 251 chrome::MockExtensionInstallPromptDelegate delegate; | 251 chrome::MockExtensionInstallPromptDelegate delegate; |
| 252 | 252 |
| 253 ExtensionInstallPrompt::Prompt prompt = | 253 ExtensionInstallPrompt::Prompt prompt = |
| 254 chrome::BuildExtensionInstallPrompt(extension_.get()); | 254 chrome::BuildExtensionInstallPrompt(extension_.get()); |
| 255 std::vector<string16> permissions; | 255 std::vector<string16> permissions; |
| 256 permissions.push_back(UTF8ToUTF16("warning 1")); | 256 permissions.push_back(UTF8ToUTF16("warning 1")); |
| 257 prompt.SetPermissions(permissions); | 257 prompt.SetPermissions(permissions, false); |
| 258 IssueAdviceInfoEntry issue; | 258 IssueAdviceInfoEntry issue; |
| 259 issue.description = UTF8ToUTF16("issue description 1"); | 259 issue.description = UTF8ToUTF16("issue description 1"); |
| 260 issue.details.push_back(UTF8ToUTF16("issue detail 1")); | 260 issue.details.push_back(UTF8ToUTF16("issue detail 1")); |
| 261 IssueAdviceInfo issues; | 261 IssueAdviceInfo issues; |
| 262 issues.push_back(issue); | 262 issues.push_back(issue); |
| 263 prompt.SetOAuthIssueAdvice(issues); | 263 prompt.SetOAuthIssueAdvice(issues); |
| 264 | 264 |
| 265 base::scoped_nsobject<ExtensionInstallViewController> controller( | 265 base::scoped_nsobject<ExtensionInstallViewController> controller( |
| 266 [[ExtensionInstallViewController alloc] initWithNavigator:browser() | 266 [[ExtensionInstallViewController alloc] initWithNavigator:browser() |
| 267 delegate:&delegate | 267 delegate:&delegate |
| 268 prompt:prompt]); | 268 prompt:prompt]); |
| 269 | 269 |
| 270 [controller view]; // Force nib load. | 270 [controller view]; // Force nib load. |
| 271 NSOutlineView* outlineView = [controller outlineView]; | 271 NSOutlineView* outlineView = [controller outlineView]; |
| 272 EXPECT_TRUE(outlineView); | 272 EXPECT_TRUE(outlineView); |
| 273 EXPECT_EQ(4, [outlineView numberOfRows]); | 273 EXPECT_EQ(4, [outlineView numberOfRows]); |
| 274 EXPECT_NSEQ([[outlineView dataSource] outlineView:outlineView | 274 EXPECT_NSEQ([[outlineView dataSource] outlineView:outlineView |
| 275 objectValueForTableColumn:nil | 275 objectValueForTableColumn:nil |
| 276 byItem:[outlineView itemAtRow:3]], | 276 byItem:[outlineView itemAtRow:3]], |
| 277 base::SysUTF16ToNSString(prompt.GetOAuthIssue(0).description)); | 277 base::SysUTF16ToNSString(prompt.GetOAuthIssue(0).description)); |
| 278 } | 278 } |
| 279 | 279 |
| 280 TEST_F(ExtensionInstallViewControllerTest, PostInstallPermissionsPrompt) { | 280 TEST_F(ExtensionInstallViewControllerTest, PostInstallPermissionsPrompt) { |
| 281 chrome::MockExtensionInstallPromptDelegate delegate; | 281 chrome::MockExtensionInstallPromptDelegate delegate; |
| 282 | 282 |
| 283 ExtensionInstallPrompt::Prompt prompt = | 283 ExtensionInstallPrompt::Prompt prompt = |
| 284 chrome::BuildExtensionPostInstallPermissionsPrompt(extension_.get()); | 284 chrome::BuildExtensionPostInstallPermissionsPrompt(extension_.get()); |
| 285 std::vector<string16> permissions; | 285 std::vector<string16> permissions; |
| 286 permissions.push_back(UTF8ToUTF16("warning 1")); | 286 permissions.push_back(UTF8ToUTF16("warning 1")); |
| 287 prompt.SetPermissions(permissions); | 287 prompt.SetPermissions(permissions, false); |
| 288 | 288 |
| 289 base::scoped_nsobject<ExtensionInstallViewController> controller( | 289 base::scoped_nsobject<ExtensionInstallViewController> controller( |
| 290 [[ExtensionInstallViewController alloc] initWithNavigator:browser() | 290 [[ExtensionInstallViewController alloc] initWithNavigator:browser() |
| 291 delegate:&delegate | 291 delegate:&delegate |
| 292 prompt:prompt]); | 292 prompt:prompt]); |
| 293 | 293 |
| 294 [controller view]; // Force nib load. | 294 [controller view]; // Force nib load. |
| 295 | 295 |
| 296 EXPECT_TRUE([controller cancelButton]); | 296 EXPECT_TRUE([controller cancelButton]); |
| 297 EXPECT_FALSE([controller okButton]); | 297 EXPECT_FALSE([controller okButton]); |
| 298 | 298 |
| 299 [controller cancel:nil]; | 299 [controller cancel:nil]; |
| 300 EXPECT_EQ(1, delegate.abort_count()); | 300 EXPECT_EQ(1, delegate.abort_count()); |
| 301 } | 301 } |
| OLD | NEW |