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

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

Issue 10388252: Refactoring ExtenionInstallUI to abstract the Browser references. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Synced + mac fix Created 8 years, 6 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 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/json/json_file_value_serializer.h" 10 #include "base/json/json_file_value_serializer.h"
11 #import "base/memory/scoped_nsobject.h" 11 #import "base/memory/scoped_nsobject.h"
12 #include "base/path_service.h" 12 #include "base/path_service.h"
13 #include "base/sys_string_conversions.h" 13 #include "base/sys_string_conversions.h"
14 #include "base/utf_string_conversions.h" 14 #include "base/utf_string_conversions.h"
15 #include "base/values.h" 15 #include "base/values.h"
16 #import "chrome/browser/extensions/extension_install_ui.h" 16 #import "chrome/browser/extensions/extension_install_prompt.h"
17 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" 17 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
18 #import "chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller. h" 18 #import "chrome/browser/ui/cocoa/extensions/extension_install_dialog_controller. h"
19 #include "chrome/common/chrome_paths.h" 19 #include "chrome/common/chrome_paths.h"
20 #include "chrome/common/extensions/extension.h" 20 #include "chrome/common/extensions/extension.h"
21 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
22 #import "testing/gtest_mac.h" 22 #import "testing/gtest_mac.h"
23 #include "testing/platform_test.h" 23 #include "testing/platform_test.h"
24 #include "third_party/skia/include/core/SkBitmap.h" 24 #include "third_party/skia/include/core/SkBitmap.h"
25 #include "ui/gfx/image/image.h" 25 #include "ui/gfx/image/image.h"
26 #include "webkit/glue/image_decoder.h" 26 #include "webkit/glue/image_decoder.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 return; 71 return;
72 } 72 }
73 } 73 }
74 74
75 FilePath test_data_dir_; 75 FilePath test_data_dir_;
76 gfx::Image icon_; 76 gfx::Image icon_;
77 scoped_refptr<Extension> extension_; 77 scoped_refptr<Extension> extension_;
78 }; 78 };
79 79
80 80
81 // Mock out the ExtensionInstallUI::Delegate interface so we can ensure the 81 // Mock out the ExtensionInstallPrompt::Delegate interface so we can ensure the
82 // dialog is interacting with it correctly. 82 // dialog is interacting with it correctly.
83 class MockExtensionInstallUIDelegate : public ExtensionInstallUI::Delegate { 83 class MockExtensionInstallPromptDelegate
84 : public ExtensionInstallPrompt::Delegate {
84 public: 85 public:
85 MockExtensionInstallUIDelegate() 86 MockExtensionInstallPromptDelegate()
86 : proceed_count_(0), 87 : proceed_count_(0),
87 abort_count_(0) {} 88 abort_count_(0) {}
88 89
89 // ExtensionInstallUI::Delegate overrides. 90 // ExtensionInstallPrompt::Delegate overrides.
90 virtual void InstallUIProceed() OVERRIDE { 91 virtual void InstallUIProceed() OVERRIDE {
91 proceed_count_++; 92 proceed_count_++;
92 } 93 }
93 94
94 virtual void InstallUIAbort(bool user_initiated) OVERRIDE { 95 virtual void InstallUIAbort(bool user_initiated) OVERRIDE {
95 abort_count_++; 96 abort_count_++;
96 } 97 }
97 98
98 int proceed_count() { return proceed_count_; } 99 int proceed_count() { return proceed_count_; }
99 int abort_count() { return abort_count_; } 100 int abort_count() { return abort_count_; }
100 101
101 protected: 102 protected:
102 int proceed_count_; 103 int proceed_count_;
103 int abort_count_; 104 int abort_count_;
104 }; 105 };
105 106
106 // Test that we can load the two kinds of prompts correctly, that the outlets 107 // Test that we can load the two kinds of prompts correctly, that the outlets
107 // are hooked up, and that the dialog calls cancel when cancel is pressed. 108 // are hooked up, and that the dialog calls cancel when cancel is pressed.
108 TEST_F(ExtensionInstallDialogControllerTest, BasicsNormalCancel) { 109 TEST_F(ExtensionInstallDialogControllerTest, BasicsNormalCancel) {
109 MockExtensionInstallUIDelegate delegate; 110 MockExtensionInstallPromptDelegate delegate;
110 111
111 ExtensionInstallUI::Prompt prompt(ExtensionInstallUI::INSTALL_PROMPT); 112 ExtensionInstallPrompt::Prompt prompt(ExtensionInstallPrompt::INSTALL_PROMPT);
112 std::vector<string16> permissions; 113 std::vector<string16> permissions;
113 permissions.push_back(UTF8ToUTF16("warning 1")); 114 permissions.push_back(UTF8ToUTF16("warning 1"));
114 prompt.SetPermissions(permissions); 115 prompt.SetPermissions(permissions);
115 prompt.set_extension(extension_.get()); 116 prompt.set_extension(extension_.get());
116 prompt.set_icon(icon_); 117 prompt.set_icon(icon_);
117 118
118 scoped_nsobject<ExtensionInstallDialogController> 119 scoped_nsobject<ExtensionInstallDialogController>
119 controller([[ExtensionInstallDialogController alloc] 120 controller([[ExtensionInstallDialogController alloc]
120 initWithParentWindow:test_window() 121 initWithParentWindow:test_window()
121 profile:profile() 122 profile:profile()
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 EXPECT_NE('^', [[[controller okButton] stringValue] characterAtIndex:0]); 155 EXPECT_NE('^', [[[controller okButton] stringValue] characterAtIndex:0]);
155 156
156 // Test that cancel calls our delegate. 157 // Test that cancel calls our delegate.
157 [controller cancel:nil]; 158 [controller cancel:nil];
158 EXPECT_EQ(1, delegate.abort_count()); 159 EXPECT_EQ(1, delegate.abort_count());
159 EXPECT_EQ(0, delegate.proceed_count()); 160 EXPECT_EQ(0, delegate.proceed_count());
160 } 161 }
161 162
162 163
163 TEST_F(ExtensionInstallDialogControllerTest, BasicsNormalOK) { 164 TEST_F(ExtensionInstallDialogControllerTest, BasicsNormalOK) {
164 MockExtensionInstallUIDelegate delegate; 165 MockExtensionInstallPromptDelegate delegate;
165 166
166 ExtensionInstallUI::Prompt prompt(ExtensionInstallUI::INSTALL_PROMPT); 167 ExtensionInstallPrompt::Prompt prompt(
168 ExtensionInstallPrompt::INSTALL_PROMPT);
167 std::vector<string16> permissions; 169 std::vector<string16> permissions;
168 permissions.push_back(UTF8ToUTF16("warning 1")); 170 permissions.push_back(UTF8ToUTF16("warning 1"));
169 prompt.SetPermissions(permissions); 171 prompt.SetPermissions(permissions);
170 prompt.set_extension(extension_.get()); 172 prompt.set_extension(extension_.get());
171 prompt.set_icon(icon_); 173 prompt.set_icon(icon_);
172 174
173 scoped_nsobject<ExtensionInstallDialogController> 175 scoped_nsobject<ExtensionInstallDialogController>
174 controller([[ExtensionInstallDialogController alloc] 176 controller([[ExtensionInstallDialogController alloc]
175 initWithParentWindow:test_window() 177 initWithParentWindow:test_window()
176 profile:profile() 178 profile:profile()
177 delegate:&delegate 179 delegate:&delegate
178 prompt:prompt]); 180 prompt:prompt]);
179 181
180 [controller window]; // force nib load 182 [controller window]; // force nib load
181 [controller ok:nil]; 183 [controller ok:nil];
182 184
183 EXPECT_EQ(0, delegate.abort_count()); 185 EXPECT_EQ(0, delegate.abort_count());
184 EXPECT_EQ(1, delegate.proceed_count()); 186 EXPECT_EQ(1, delegate.proceed_count());
185 } 187 }
186 188
187 // Test that controls get repositioned when there are two warnings vs one 189 // Test that controls get repositioned when there are two warnings vs one
188 // warning. 190 // warning.
189 TEST_F(ExtensionInstallDialogControllerTest, MultipleWarnings) { 191 TEST_F(ExtensionInstallDialogControllerTest, MultipleWarnings) {
190 MockExtensionInstallUIDelegate delegate1; 192 MockExtensionInstallPromptDelegate delegate1;
191 MockExtensionInstallUIDelegate delegate2; 193 MockExtensionInstallPromptDelegate delegate2;
192 194
193 ExtensionInstallUI::Prompt one_warning_prompt( 195 ExtensionInstallPrompt::Prompt one_warning_prompt(
194 ExtensionInstallUI::INSTALL_PROMPT); 196 ExtensionInstallPrompt::INSTALL_PROMPT);
195 std::vector<string16> permissions; 197 std::vector<string16> permissions;
196 permissions.push_back(UTF8ToUTF16("warning 1")); 198 permissions.push_back(UTF8ToUTF16("warning 1"));
197 one_warning_prompt.SetPermissions(permissions); 199 one_warning_prompt.SetPermissions(permissions);
198 one_warning_prompt.set_extension(extension_.get()); 200 one_warning_prompt.set_extension(extension_.get());
199 one_warning_prompt.set_icon(icon_); 201 one_warning_prompt.set_icon(icon_);
200 202
201 ExtensionInstallUI::Prompt two_warnings_prompt( 203 ExtensionInstallPrompt::Prompt two_warnings_prompt(
202 ExtensionInstallUI::INSTALL_PROMPT); 204 ExtensionInstallPrompt::INSTALL_PROMPT);
203 permissions.push_back(UTF8ToUTF16("warning 2")); 205 permissions.push_back(UTF8ToUTF16("warning 2"));
204 two_warnings_prompt.SetPermissions(permissions); 206 two_warnings_prompt.SetPermissions(permissions);
205 two_warnings_prompt.set_extension(extension_.get()); 207 two_warnings_prompt.set_extension(extension_.get());
206 two_warnings_prompt.set_icon(icon_); 208 two_warnings_prompt.set_icon(icon_);
207 209
208 scoped_nsobject<ExtensionInstallDialogController> 210 scoped_nsobject<ExtensionInstallDialogController>
209 controller1([[ExtensionInstallDialogController alloc] 211 controller1([[ExtensionInstallDialogController alloc]
210 initWithParentWindow:test_window() 212 initWithParentWindow:test_window()
211 profile:profile() 213 profile:profile()
212 delegate:&delegate1 214 delegate:&delegate1
(...skipping 22 matching lines...) Expand all
235 ASSERT_LT([[controller1 subtitleField] frame].origin.y, 237 ASSERT_LT([[controller1 subtitleField] frame].origin.y,
236 [[controller2 subtitleField] frame].origin.y); 238 [[controller2 subtitleField] frame].origin.y);
237 239
238 ASSERT_LT([[controller1 titleField] frame].origin.y, 240 ASSERT_LT([[controller1 titleField] frame].origin.y,
239 [[controller2 titleField] frame].origin.y); 241 [[controller2 titleField] frame].origin.y);
240 } 242 }
241 243
242 // Test that we can load the skinny prompt correctly, and that the outlets are 244 // Test that we can load the skinny prompt correctly, and that the outlets are
243 // are hooked up. 245 // are hooked up.
244 TEST_F(ExtensionInstallDialogControllerTest, BasicsSkinny) { 246 TEST_F(ExtensionInstallDialogControllerTest, BasicsSkinny) {
245 MockExtensionInstallUIDelegate delegate; 247 MockExtensionInstallPromptDelegate delegate;
246 248
247 // No warnings should trigger skinny prompt. 249 // No warnings should trigger skinny prompt.
248 ExtensionInstallUI::Prompt no_warnings_prompt( 250 ExtensionInstallPrompt::Prompt no_warnings_prompt(
249 ExtensionInstallUI::INSTALL_PROMPT); 251 ExtensionInstallPrompt::INSTALL_PROMPT);
250 no_warnings_prompt.set_extension(extension_.get()); 252 no_warnings_prompt.set_extension(extension_.get());
251 no_warnings_prompt.set_icon(icon_); 253 no_warnings_prompt.set_icon(icon_);
252 254
253 scoped_nsobject<ExtensionInstallDialogController> 255 scoped_nsobject<ExtensionInstallDialogController>
254 controller([[ExtensionInstallDialogController alloc] 256 controller([[ExtensionInstallDialogController alloc]
255 initWithParentWindow:test_window() 257 initWithParentWindow:test_window()
256 profile:profile() 258 profile:profile()
257 delegate:&delegate 259 delegate:&delegate
258 prompt:no_warnings_prompt]); 260 prompt:no_warnings_prompt]);
259 261
(...skipping 20 matching lines...) Expand all
280 EXPECT_NE('^', [[[controller okButton] stringValue] characterAtIndex:0]); 282 EXPECT_NE('^', [[[controller okButton] stringValue] characterAtIndex:0]);
281 283
282 EXPECT_TRUE([controller subtitleField] == nil); 284 EXPECT_TRUE([controller subtitleField] == nil);
283 EXPECT_TRUE([controller warningsField] == nil); 285 EXPECT_TRUE([controller warningsField] == nil);
284 } 286 }
285 287
286 288
287 // Test that we can load the inline prompt correctly, and that the outlets are 289 // Test that we can load the inline prompt correctly, and that the outlets are
288 // are hooked up. 290 // are hooked up.
289 TEST_F(ExtensionInstallDialogControllerTest, BasicsInline) { 291 TEST_F(ExtensionInstallDialogControllerTest, BasicsInline) {
290 MockExtensionInstallUIDelegate delegate; 292 MockExtensionInstallPromptDelegate delegate;
291 293
292 // No warnings should trigger skinny prompt. 294 // No warnings should trigger skinny prompt.
293 ExtensionInstallUI::Prompt inline_prompt( 295 ExtensionInstallPrompt::Prompt inline_prompt(
294 ExtensionInstallUI::INLINE_INSTALL_PROMPT); 296 ExtensionInstallPrompt::INLINE_INSTALL_PROMPT);
295 inline_prompt.SetInlineInstallWebstoreData("1,000", 3.5, 200); 297 inline_prompt.SetInlineInstallWebstoreData("1,000", 3.5, 200);
296 inline_prompt.set_extension(extension_.get()); 298 inline_prompt.set_extension(extension_.get());
297 inline_prompt.set_icon(icon_); 299 inline_prompt.set_icon(icon_);
298 300
299 scoped_nsobject<ExtensionInstallDialogController> 301 scoped_nsobject<ExtensionInstallDialogController>
300 controller([[ExtensionInstallDialogController alloc] 302 controller([[ExtensionInstallDialogController alloc]
301 initWithParentWindow:test_window() 303 initWithParentWindow:test_window()
302 profile:profile() 304 profile:profile()
303 delegate:&delegate 305 delegate:&delegate
304 prompt:inline_prompt]); 306 prompt:inline_prompt]);
(...skipping 29 matching lines...) Expand all
334 336
335 // Though we have no permissions warnings, these should still be hooked up, 337 // Though we have no permissions warnings, these should still be hooked up,
336 // just invisible. 338 // just invisible.
337 EXPECT_TRUE([controller subtitleField] != nil); 339 EXPECT_TRUE([controller subtitleField] != nil);
338 EXPECT_TRUE([[controller subtitleField] isHidden]); 340 EXPECT_TRUE([[controller subtitleField] isHidden]);
339 EXPECT_TRUE([controller warningsField] != nil); 341 EXPECT_TRUE([controller warningsField] != nil);
340 EXPECT_TRUE([[controller warningsField] isHidden]); 342 EXPECT_TRUE([[controller warningsField] isHidden]);
341 EXPECT_TRUE([controller warningsSeparator] != nil); 343 EXPECT_TRUE([controller warningsSeparator] != nil);
342 EXPECT_TRUE([[controller warningsSeparator] isHidden]); 344 EXPECT_TRUE([[controller warningsSeparator] isHidden]);
343 } 345 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698