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

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

Issue 18854021: Making the extension permissions dialog scrollable, when needed (adding expandable sections for thi… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Polishing Created 7 years, 5 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 | Annotate | Revision Log
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 20 matching lines...) Expand all
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698