Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(172)

Side by Side Diff: chrome/browser/ui/cocoa/extensions/extension_install_view_controller_unittest.mm

Issue 1004123003: Extensions: Switch to new permission message system, part III (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permissions_tests
Patch Set: Mac Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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"
11 #include "chrome/browser/ui/browser.h" 11 #include "chrome/browser/ui/browser.h"
12 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" 12 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
13 #import "chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils. h" 13 #import "chrome/browser/ui/cocoa/extensions/extension_install_prompt_test_utils. h"
14 #import "chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h" 14 #import "chrome/browser/ui/cocoa/extensions/extension_install_view_controller.h"
15 #include "extensions/common/extension.h" 15 #include "extensions/common/extension.h"
16 #include "extensions/common/permissions/permission_message_provider.h"
16 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
17 #import "testing/gtest_mac.h" 18 #import "testing/gtest_mac.h"
18 19
19 using extensions::Extension; 20 using extensions::Extension;
21 using extensions::PermissionMessageString;
22 using extensions::PermissionMessageStrings;
20 23
21 // Base class for our tests. 24 // Base class for our tests.
22 class ExtensionInstallViewControllerTest : public CocoaProfileTest { 25 class ExtensionInstallViewControllerTest : public CocoaProfileTest {
23 public: 26 public:
24 ExtensionInstallViewControllerTest() { 27 ExtensionInstallViewControllerTest() {
25 extension_ = chrome::LoadInstallPromptExtension(); 28 extension_ = chrome::LoadInstallPromptExtension();
26 } 29 }
27 30
28 protected: 31 protected:
29 scoped_refptr<extensions::Extension> extension_; 32 scoped_refptr<extensions::Extension> extension_;
30 }; 33 };
31 34
32 // Test that we can load the two kinds of prompts correctly, that the outlets 35 // 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. 36 // are hooked up, and that the dialog calls cancel when cancel is pressed.
34 TEST_F(ExtensionInstallViewControllerTest, BasicsNormalCancel) { 37 TEST_F(ExtensionInstallViewControllerTest, BasicsNormalCancel) {
35 chrome::MockExtensionInstallPromptDelegate delegate; 38 chrome::MockExtensionInstallPromptDelegate delegate;
36 39
37 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = 40 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
38 chrome::BuildExtensionInstallPrompt(extension_.get()); 41 chrome::BuildExtensionInstallPrompt(extension_.get());
39 ExtensionInstallPrompt::PermissionsType type = 42 ExtensionInstallPrompt::PermissionsType type =
40 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS; 43 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS;
41 44
42 std::vector<base::string16> permissions; 45 PermissionMessageStrings permissions;
43 permissions.push_back(base::UTF8ToUTF16("warning 1")); 46 permissions.push_back(
47 PermissionMessageString(base::UTF8ToUTF16("warning 1")));
44 prompt->SetPermissions(permissions, type); 48 prompt->SetPermissions(permissions, type);
45 // No details provided with this permission.
46 std::vector<base::string16> details;
47 details.push_back(base::string16());
48 prompt->SetPermissionsDetails(details, type);
49 49
50 base::scoped_nsobject<ExtensionInstallViewController> controller( 50 base::scoped_nsobject<ExtensionInstallViewController> controller(
51 [[ExtensionInstallViewController alloc] initWithProfile:profile() 51 [[ExtensionInstallViewController alloc] initWithProfile:profile()
52 navigator:browser() 52 navigator:browser()
53 delegate:&delegate 53 delegate:&delegate
54 prompt:prompt]); 54 prompt:prompt]);
55 55
56 [controller view]; // Force nib load. 56 [controller view]; // Force nib load.
57 57
58 // Test the right nib loaded. 58 // Test the right nib loaded.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 } 91 }
92 92
93 TEST_F(ExtensionInstallViewControllerTest, BasicsNormalOK) { 93 TEST_F(ExtensionInstallViewControllerTest, BasicsNormalOK) {
94 chrome::MockExtensionInstallPromptDelegate delegate; 94 chrome::MockExtensionInstallPromptDelegate delegate;
95 95
96 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = 96 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
97 chrome::BuildExtensionInstallPrompt(extension_.get()); 97 chrome::BuildExtensionInstallPrompt(extension_.get());
98 ExtensionInstallPrompt::PermissionsType type = 98 ExtensionInstallPrompt::PermissionsType type =
99 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS; 99 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS;
100 100
101 std::vector<base::string16> permissions; 101 PermissionMessageStrings permissions;
102 permissions.push_back(base::UTF8ToUTF16("warning 1")); 102 permissions.push_back(
103 PermissionMessageString(base::UTF8ToUTF16("warning 1")));
103 prompt->SetPermissions(permissions, type); 104 prompt->SetPermissions(permissions, type);
104 // No details provided with this permission.
105 std::vector<base::string16> details;
106 details.push_back(base::string16());
107 prompt->SetPermissionsDetails(details, type);
108 105
109 base::scoped_nsobject<ExtensionInstallViewController> controller( 106 base::scoped_nsobject<ExtensionInstallViewController> controller(
110 [[ExtensionInstallViewController alloc] initWithProfile:profile() 107 [[ExtensionInstallViewController alloc] initWithProfile:profile()
111 navigator:browser() 108 navigator:browser()
112 delegate:&delegate 109 delegate:&delegate
113 prompt:prompt]); 110 prompt:prompt]);
114 111
115 [controller view]; // Force nib load. 112 [controller view]; // Force nib load.
116 [controller ok:nil]; 113 [controller ok:nil];
117 114
118 EXPECT_EQ(0, delegate.abort_count()); 115 EXPECT_EQ(0, delegate.abort_count());
119 EXPECT_EQ(1, delegate.proceed_count()); 116 EXPECT_EQ(1, delegate.proceed_count());
120 } 117 }
121 118
122 // Test that controls get repositioned when there are two warnings vs one 119 // Test that controls get repositioned when there are two warnings vs one
123 // warning. 120 // warning.
124 TEST_F(ExtensionInstallViewControllerTest, MultipleWarnings) { 121 TEST_F(ExtensionInstallViewControllerTest, MultipleWarnings) {
125 chrome::MockExtensionInstallPromptDelegate delegate1; 122 chrome::MockExtensionInstallPromptDelegate delegate1;
126 chrome::MockExtensionInstallPromptDelegate delegate2; 123 chrome::MockExtensionInstallPromptDelegate delegate2;
127 124
128 scoped_refptr<ExtensionInstallPrompt::Prompt> one_warning_prompt = 125 scoped_refptr<ExtensionInstallPrompt::Prompt> one_warning_prompt =
129 chrome::BuildExtensionInstallPrompt(extension_.get()); 126 chrome::BuildExtensionInstallPrompt(extension_.get());
130 ExtensionInstallPrompt::PermissionsType type = 127 ExtensionInstallPrompt::PermissionsType type =
131 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS; 128 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS;
132 129
133 std::vector<base::string16> permissions; 130 PermissionMessageStrings permissions;
134 permissions.push_back(base::UTF8ToUTF16("warning 1")); 131 permissions.push_back(
132 PermissionMessageString(base::UTF8ToUTF16("warning 1")));
135 one_warning_prompt->SetPermissions(permissions, type); 133 one_warning_prompt->SetPermissions(permissions, type);
136 // No details provided with this permission.
137 std::vector<base::string16> details;
138 details.push_back(base::string16());
139 one_warning_prompt->SetPermissionsDetails(details, type);
140 134
141 scoped_refptr<ExtensionInstallPrompt::Prompt> two_warnings_prompt = 135 scoped_refptr<ExtensionInstallPrompt::Prompt> two_warnings_prompt =
142 chrome::BuildExtensionInstallPrompt(extension_.get()); 136 chrome::BuildExtensionInstallPrompt(extension_.get());
143 permissions.push_back(base::UTF8ToUTF16("warning 2")); 137 permissions.push_back(
138 PermissionMessageString(base::UTF8ToUTF16("warning 2")));
144 two_warnings_prompt->SetPermissions(permissions, type); 139 two_warnings_prompt->SetPermissions(permissions, type);
145 // No details provided with this permission.
146 details.push_back(base::string16());
147 two_warnings_prompt->SetPermissionsDetails(details, type);
148 140
149 base::scoped_nsobject<ExtensionInstallViewController> controller1( 141 base::scoped_nsobject<ExtensionInstallViewController> controller1(
150 [[ExtensionInstallViewController alloc] 142 [[ExtensionInstallViewController alloc]
151 initWithProfile:profile() 143 initWithProfile:profile()
152 navigator:browser() 144 navigator:browser()
153 delegate:&delegate1 145 delegate:&delegate1
154 prompt:one_warning_prompt]); 146 prompt:one_warning_prompt]);
155 147
156 [controller1 view]; // Force nib load. 148 [controller1 view]; // Force nib load.
157 149
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 } 270 }
279 271
280 TEST_F(ExtensionInstallViewControllerTest, PostInstallPermissionsPrompt) { 272 TEST_F(ExtensionInstallViewControllerTest, PostInstallPermissionsPrompt) {
281 chrome::MockExtensionInstallPromptDelegate delegate; 273 chrome::MockExtensionInstallPromptDelegate delegate;
282 274
283 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = 275 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
284 chrome::BuildExtensionPostInstallPermissionsPrompt(extension_.get()); 276 chrome::BuildExtensionPostInstallPermissionsPrompt(extension_.get());
285 ExtensionInstallPrompt::PermissionsType type = 277 ExtensionInstallPrompt::PermissionsType type =
286 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS; 278 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS;
287 279
288 std::vector<base::string16> permissions; 280 PermissionMessageStrings permissions;
289 permissions.push_back(base::UTF8ToUTF16("warning 1")); 281 permissions.push_back(
282 PermissionMessageString(base::UTF8ToUTF16("warning 1")));
290 prompt->SetPermissions(permissions, type); 283 prompt->SetPermissions(permissions, type);
291 // No details provided with this permission.
292 std::vector<base::string16> details;
293 details.push_back(base::string16());
294 prompt->SetPermissionsDetails(details, type);
295 284
296 base::scoped_nsobject<ExtensionInstallViewController> controller( 285 base::scoped_nsobject<ExtensionInstallViewController> controller(
297 [[ExtensionInstallViewController alloc] initWithProfile:profile() 286 [[ExtensionInstallViewController alloc] initWithProfile:profile()
298 navigator:browser() 287 navigator:browser()
299 delegate:&delegate 288 delegate:&delegate
300 prompt:prompt]); 289 prompt:prompt]);
301 290
302 [controller view]; // Force nib load. 291 [controller view]; // Force nib load.
303 292
304 EXPECT_TRUE([controller cancelButton]); 293 EXPECT_TRUE([controller cancelButton]);
305 EXPECT_FALSE([controller okButton]); 294 EXPECT_FALSE([controller okButton]);
306 295
307 [controller cancel:nil]; 296 [controller cancel:nil];
308 EXPECT_EQ(1, delegate.abort_count()); 297 EXPECT_EQ(1, delegate.abort_count());
309 } 298 }
310 299
311 // Test that permission details show up. 300 // Test that permission details show up.
312 TEST_F(ExtensionInstallViewControllerTest, PermissionsDetails) { 301 TEST_F(ExtensionInstallViewControllerTest, PermissionsDetails) {
313 chrome::MockExtensionInstallPromptDelegate delegate; 302 chrome::MockExtensionInstallPromptDelegate delegate;
314 303
315 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt = 304 scoped_refptr<ExtensionInstallPrompt::Prompt> prompt =
316 chrome::BuildExtensionInstallPrompt(extension_.get()); 305 chrome::BuildExtensionInstallPrompt(extension_.get());
317 ExtensionInstallPrompt::PermissionsType type = 306 ExtensionInstallPrompt::PermissionsType type =
318 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS; 307 ExtensionInstallPrompt::PermissionsType::REGULAR_PERMISSIONS;
319 308
320 std::vector<base::string16> permissions; 309 PermissionMessageStrings permissions;
321 permissions.push_back(base::UTF8ToUTF16("warning 1")); 310 permissions.push_back(
322 std::vector<base::string16> permissions_details; 311 PermissionMessageString(base::UTF8ToUTF16("warning 1"),
323 permissions_details.push_back(base::UTF8ToUTF16("Detail 1")); 312 base::UTF8ToUTF16("Detail 1")));
324 prompt->SetPermissions(permissions, type); 313 prompt->SetPermissions(permissions, type);
325 prompt->SetPermissionsDetails(permissions_details, type);
326 prompt->SetIsShowingDetails( 314 prompt->SetIsShowingDetails(
327 ExtensionInstallPrompt::PERMISSIONS_DETAILS, 0, true); 315 ExtensionInstallPrompt::PERMISSIONS_DETAILS, 0, true);
328 316
329 base::scoped_nsobject<ExtensionInstallViewController> controller( 317 base::scoped_nsobject<ExtensionInstallViewController> controller(
330 [[ExtensionInstallViewController alloc] initWithProfile:profile() 318 [[ExtensionInstallViewController alloc] initWithProfile:profile()
331 navigator:browser() 319 navigator:browser()
332 delegate:&delegate 320 delegate:&delegate
333 prompt:prompt]); 321 prompt:prompt]);
334 322
335 [controller view]; // Force nib load. 323 [controller view]; // Force nib load.
336 324
337 NSOutlineView* outlineView = [controller outlineView]; 325 NSOutlineView* outlineView = [controller outlineView];
338 EXPECT_TRUE(outlineView); 326 EXPECT_TRUE(outlineView);
339 EXPECT_EQ(4, [outlineView numberOfRows]); 327 EXPECT_EQ(4, [outlineView numberOfRows]);
340 EXPECT_NSEQ(base::SysUTF16ToNSString(prompt->GetPermissionsDetails(0, type)), 328 EXPECT_NSEQ(base::SysUTF16ToNSString(prompt->GetPermissionsDetails(0, type)),
341 [[outlineView dataSource] outlineView:outlineView 329 [[outlineView dataSource] outlineView:outlineView
342 objectValueForTableColumn:nil 330 objectValueForTableColumn:nil
343 byItem:[outlineView itemAtRow:2]]); 331 byItem:[outlineView itemAtRow:2]]);
344 } 332 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698