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

Side by Side Diff: chrome/browser/ui/cocoa/content_exceptions_window_controller_unittest.mm

Issue 6339002: [Mac] Consolidate all files relating to preferences in a subdir of c/b/ui/coc... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "chrome/browser/ui/cocoa/content_exceptions_window_controller.h"
6
7 #import <Cocoa/Cocoa.h>
8
9 #import "base/scoped_nsobject.h"
10 #include "base/ref_counted.h"
11 #include "chrome/browser/ui/cocoa/browser_test_helper.h"
12 #include "chrome/browser/ui/cocoa/cocoa_test_helper.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "testing/platform_test.h"
15
16 namespace {
17
18 void ProcessEvents() {
19 for (;;) {
20 base::mac::ScopedNSAutoreleasePool pool;
21 NSEvent* next_event = [NSApp nextEventMatchingMask:NSAnyEventMask
22 untilDate:nil
23 inMode:NSDefaultRunLoopMode
24 dequeue:YES];
25 if (!next_event)
26 break;
27 [NSApp sendEvent:next_event];
28 }
29 }
30
31 void SendKeyEvents(NSString* characters) {
32 for (NSUInteger i = 0; i < [characters length]; ++i) {
33 unichar character = [characters characterAtIndex:i];
34 NSString* charString = [NSString stringWithCharacters:&character length:1];
35 NSEvent* event = [NSEvent keyEventWithType:NSKeyDown
36 location:NSZeroPoint
37 modifierFlags:0
38 timestamp:0.0
39 windowNumber:0
40 context:nil
41 characters:charString
42 charactersIgnoringModifiers:charString
43 isARepeat:NO
44 keyCode:0];
45 [NSApp sendEvent:event];
46 }
47 }
48
49 class ContentExceptionsWindowControllerTest : public CocoaTest {
50 public:
51 virtual void SetUp() {
52 CocoaTest::SetUp();
53 TestingProfile* profile = browser_helper_.profile();
54 settingsMap_ = new HostContentSettingsMap(profile);
55 }
56
57 ContentExceptionsWindowController* GetController(ContentSettingsType type) {
58 id controller = [ContentExceptionsWindowController
59 controllerForType:type
60 settingsMap:settingsMap_.get()
61 otrSettingsMap:NULL];
62 [controller showWindow:nil];
63 return controller;
64 }
65
66 void ClickAdd(ContentExceptionsWindowController* controller) {
67 [controller addException:nil];
68 ProcessEvents();
69 }
70
71 void ClickRemove(ContentExceptionsWindowController* controller) {
72 [controller removeException:nil];
73 ProcessEvents();
74 }
75
76 void ClickRemoveAll(ContentExceptionsWindowController* controller) {
77 [controller removeAllExceptions:nil];
78 ProcessEvents();
79 }
80
81 void EnterText(NSString* str) {
82 SendKeyEvents(str);
83 ProcessEvents();
84 }
85
86 void HitEscape(ContentExceptionsWindowController* controller) {
87 [controller cancel:nil];
88 ProcessEvents();
89 }
90
91 protected:
92 BrowserTestHelper browser_helper_;
93 scoped_refptr<HostContentSettingsMap> settingsMap_;
94 };
95
96 TEST_F(ContentExceptionsWindowControllerTest, Construction) {
97 ContentExceptionsWindowController* controller =
98 [ContentExceptionsWindowController
99 controllerForType:CONTENT_SETTINGS_TYPE_PLUGINS
100 settingsMap:settingsMap_.get()
101 otrSettingsMap:NULL];
102 [controller showWindow:nil];
103 [controller close]; // Should autorelease.
104 }
105
106 // Regression test for http://crbug.com/37137
107 TEST_F(ContentExceptionsWindowControllerTest, AddRemove) {
108 ContentExceptionsWindowController* controller =
109 GetController(CONTENT_SETTINGS_TYPE_PLUGINS);
110
111 HostContentSettingsMap::SettingsForOneType settings;
112
113 ClickAdd(controller);
114 settingsMap_->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_PLUGINS,
115 "",
116 &settings);
117 EXPECT_EQ(0u, settings.size());
118
119 ClickRemove(controller);
120
121 EXPECT_FALSE([controller editingNewException]);
122 [controller close];
123
124 settingsMap_->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_PLUGINS,
125 "",
126 &settings);
127 EXPECT_EQ(0u, settings.size());
128 }
129
130 // Regression test for http://crbug.com/37137
131 TEST_F(ContentExceptionsWindowControllerTest, AddRemoveAll) {
132 ContentExceptionsWindowController* controller =
133 GetController(CONTENT_SETTINGS_TYPE_PLUGINS);
134
135 ClickAdd(controller);
136 ClickRemoveAll(controller);
137
138 EXPECT_FALSE([controller editingNewException]);
139 [controller close];
140
141 HostContentSettingsMap::SettingsForOneType settings;
142 settingsMap_->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_PLUGINS,
143 "",
144 &settings);
145 EXPECT_EQ(0u, settings.size());
146 }
147
148 TEST_F(ContentExceptionsWindowControllerTest, Add) {
149 ContentExceptionsWindowController* controller =
150 GetController(CONTENT_SETTINGS_TYPE_PLUGINS);
151
152 ClickAdd(controller);
153 EnterText(@"addedhost\n");
154
155 EXPECT_FALSE([controller editingNewException]);
156 [controller close];
157
158 HostContentSettingsMap::SettingsForOneType settings;
159 settingsMap_->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_PLUGINS,
160 "",
161 &settings);
162 EXPECT_EQ(1u, settings.size());
163 EXPECT_EQ(ContentSettingsPattern("addedhost"), settings[0].first);
164 }
165
166 TEST_F(ContentExceptionsWindowControllerTest, AddEscDoesNotAdd) {
167 ContentExceptionsWindowController* controller =
168 GetController(CONTENT_SETTINGS_TYPE_PLUGINS);
169
170 ClickAdd(controller);
171 EnterText(@"addedhost"); // but do not press enter
172 HitEscape(controller);
173
174 HostContentSettingsMap::SettingsForOneType settings;
175 settingsMap_->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_PLUGINS,
176 "",
177 &settings);
178 EXPECT_EQ(0u, settings.size());
179 EXPECT_FALSE([controller editingNewException]);
180
181 [controller close];
182 }
183
184 // Regression test for http://crbug.com/37208
185 TEST_F(ContentExceptionsWindowControllerTest, AddEditAddAdd) {
186 ContentExceptionsWindowController* controller =
187 GetController(CONTENT_SETTINGS_TYPE_PLUGINS);
188
189 ClickAdd(controller);
190 EnterText(@"testtesttest"); // but do not press enter
191 ClickAdd(controller);
192 ClickAdd(controller);
193
194 EXPECT_TRUE([controller editingNewException]);
195 [controller close];
196
197 HostContentSettingsMap::SettingsForOneType settings;
198 settingsMap_->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_PLUGINS,
199 "",
200 &settings);
201 EXPECT_EQ(0u, settings.size());
202 }
203
204 TEST_F(ContentExceptionsWindowControllerTest, AddExistingEditAdd) {
205 settingsMap_->SetContentSetting(ContentSettingsPattern("myhost"),
206 CONTENT_SETTINGS_TYPE_PLUGINS,
207 "",
208 CONTENT_SETTING_BLOCK);
209
210 ContentExceptionsWindowController* controller =
211 GetController(CONTENT_SETTINGS_TYPE_PLUGINS);
212
213 ClickAdd(controller);
214 EnterText(@"myhost"); // but do not press enter
215 ClickAdd(controller);
216
217 EXPECT_TRUE([controller editingNewException]);
218 [controller close];
219
220
221 HostContentSettingsMap::SettingsForOneType settings;
222 settingsMap_->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_PLUGINS,
223 "",
224 &settings);
225 EXPECT_EQ(1u, settings.size());
226 }
227
228 TEST_F(ContentExceptionsWindowControllerTest, AddExistingDoesNotOverwrite) {
229 settingsMap_->SetContentSetting(ContentSettingsPattern("myhost"),
230 CONTENT_SETTINGS_TYPE_COOKIES,
231 "",
232 CONTENT_SETTING_SESSION_ONLY);
233
234 ContentExceptionsWindowController* controller =
235 GetController(CONTENT_SETTINGS_TYPE_COOKIES);
236
237 ClickAdd(controller);
238 EnterText(@"myhost\n");
239
240 EXPECT_FALSE([controller editingNewException]);
241 [controller close];
242
243 HostContentSettingsMap::SettingsForOneType settings;
244 settingsMap_->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_COOKIES,
245 "",
246 &settings);
247 EXPECT_EQ(1u, settings.size());
248 EXPECT_EQ(CONTENT_SETTING_SESSION_ONLY, settings[0].second);
249 }
250
251
252 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698