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

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

Issue 501273002: Update extension install prompt to reflect withheld permissions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update cocoa test, add default cases for compiler Created 6 years, 3 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"
(...skipping 18 matching lines...) Expand all
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698