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

Side by Side Diff: chrome/browser/custom_handlers/protocol_handler_registry_unittest.cc

Issue 7033018: Handler settings page. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove UNIT_TEST flag, replace with in_unit_test_ variable Created 9 years, 7 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" 5 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
6 6
7 #include "base/scoped_ptr.h" 7 #include "base/scoped_ptr.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
9 #include "chrome/browser/custom_handlers/protocol_handler.h" 9 #include "chrome/browser/custom_handlers/protocol_handler.h"
10 #include "chrome/test/testing_browser_process.h" 10 #include "chrome/test/testing_browser_process.h"
(...skipping 22 matching lines...) Expand all
33 } 33 }
34 34
35 void Reset() { 35 void Reset() {
36 registered_protocols_.clear(); 36 registered_protocols_.clear();
37 } 37 }
38 38
39 private: 39 private:
40 std::set<std::string> registered_protocols_; 40 std::set<std::string> registered_protocols_;
41 }; 41 };
42 42
43 class NotificationCounter : public NotificationObserver {
44 public:
45 NotificationCounter()
46 : events_(0),
47 notification_registrar_() {
48 notification_registrar_.Add(this,
49 NotificationType::PROTOCOL_HANDLER_REGISTRY_CHANGED,
50 NotificationService::AllSources());
51 }
52
53 ~NotificationCounter() {
54 notification_registrar_.Remove(this,
55 NotificationType::PROTOCOL_HANDLER_REGISTRY_CHANGED,
56 NotificationService::AllSources());
57 }
58
59 int events() { return events_; }
60 virtual void Observe(NotificationType type,
61 const NotificationSource& source,
62 const NotificationDetails& details) {
63 ++events_;
64 }
65
66 int events_;
67 NotificationRegistrar notification_registrar_;
68 };
69
43 70
44 class ProtocolHandlerRegistryTest : public testing::Test { 71 class ProtocolHandlerRegistryTest : public testing::Test {
45 protected: 72 protected:
46 ProtocolHandlerRegistryTest() 73 ProtocolHandlerRegistryTest()
47 : test_protocol_handler_(CreateProtocolHandler("test", "test")) {} 74 : test_protocol_handler_(CreateProtocolHandler("test", "test")) {}
48 75
49 FakeDelegate* delegate() const { return delegate_; } 76 FakeDelegate* delegate() const { return delegate_; }
50 TestingProfile* profile() const { return profile_.get(); } 77 TestingProfile* profile() const { return profile_.get(); }
51 PrefService* pref_service() const { return profile_->GetPrefs(); } 78 PrefService* pref_service() const { return profile_->GetPrefs(); }
52 ProtocolHandlerRegistry* registry() const { return registry_.get(); } 79 ProtocolHandlerRegistry* registry() const { return registry_.get(); }
(...skipping 10 matching lines...) Expand all
63 90
64 ProtocolHandler CreateProtocolHandler(const std::string& protocol, 91 ProtocolHandler CreateProtocolHandler(const std::string& protocol,
65 const std::string& name) { 92 const std::string& name) {
66 return CreateProtocolHandler(protocol, GURL("http://" + name + "/%s"), 93 return CreateProtocolHandler(protocol, GURL("http://" + name + "/%s"),
67 name); 94 name);
68 } 95 }
69 96
70 void ReloadProtocolHandlerRegistry() { 97 void ReloadProtocolHandlerRegistry() {
71 delegate_ = new FakeDelegate(); 98 delegate_ = new FakeDelegate();
72 registry_ = new ProtocolHandlerRegistry(profile(), delegate()); 99 registry_ = new ProtocolHandlerRegistry(profile(), delegate());
100 registry_->set_in_unit_test(true);
73 registry_->Load(); 101 registry_->Load();
74 } 102 }
75 103
76 virtual void SetUp() { 104 virtual void SetUp() {
77 profile_.reset(new TestingProfile()); 105 profile_.reset(new TestingProfile());
78 profile_->SetPrefService(new TestingPrefService()); 106 profile_->SetPrefService(new TestingPrefService());
79 delegate_ = new FakeDelegate(); 107 delegate_ = new FakeDelegate();
80 registry_ = new ProtocolHandlerRegistry(profile(), delegate()); 108 registry_ = new ProtocolHandlerRegistry(profile(), delegate());
109 registry_->set_in_unit_test(true);
81 registry_->Load(); 110 registry_->Load();
82 test_protocol_handler_ = CreateProtocolHandler("test", GURL("http://test.com /%s"), "Test"); 111 test_protocol_handler_ = CreateProtocolHandler("test", GURL("http://test.com /%s"), "Test");
83 112
84 ProtocolHandlerRegistry::RegisterPrefs(pref_service()); 113 ProtocolHandlerRegistry::RegisterPrefs(pref_service());
85 } 114 }
86 115
87 FakeDelegate* delegate_; 116 FakeDelegate* delegate_;
88 scoped_ptr<TestingProfile> profile_; 117 scoped_ptr<TestingProfile> profile_;
89 scoped_refptr<ProtocolHandlerRegistry> registry_; 118 scoped_refptr<ProtocolHandlerRegistry> registry_;
90 ProtocolHandler test_protocol_handler_; 119 ProtocolHandler test_protocol_handler_;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 registry()->Enable(); 163 registry()->Enable();
135 ASSERT_TRUE(registry()->enabled()); 164 ASSERT_TRUE(registry()->enabled());
136 } 165 }
137 166
138 TEST_F(ProtocolHandlerRegistryTest, 167 TEST_F(ProtocolHandlerRegistryTest,
139 DisallowRegisteringExternallyHandledProtocols) { 168 DisallowRegisteringExternallyHandledProtocols) {
140 delegate()->RegisterExternalHandler("test"); 169 delegate()->RegisterExternalHandler("test");
141 ASSERT_FALSE(registry()->CanSchemeBeOverridden("test")); 170 ASSERT_FALSE(registry()->CanSchemeBeOverridden("test"));
142 } 171 }
143 172
173 TEST_F(ProtocolHandlerRegistryTest, RemovingHandlerMeansItCanBeAddedAgain) {
174 registry()->OnAcceptRegisterProtocolHandler(test_protocol_handler());
175 ASSERT_TRUE(registry()->CanSchemeBeOverridden("test"));
176 registry()->RemoveHandler(test_protocol_handler());
177 ASSERT_TRUE(registry()->CanSchemeBeOverridden("test"));
178 }
179
144 TEST_F(ProtocolHandlerRegistryTest, TestStartsAsDefault) { 180 TEST_F(ProtocolHandlerRegistryTest, TestStartsAsDefault) {
145 registry()->OnAcceptRegisterProtocolHandler(test_protocol_handler()); 181 registry()->OnAcceptRegisterProtocolHandler(test_protocol_handler());
146 ASSERT_TRUE(registry()->IsDefault(test_protocol_handler())); 182 ASSERT_TRUE(registry()->IsDefault(test_protocol_handler()));
147 } 183 }
148 184
149 TEST_F(ProtocolHandlerRegistryTest, 185 TEST_F(ProtocolHandlerRegistryTest,
150 TestClearDefaultDoesntClearImplicitDefault) { 186 TestClearDefaultDoesntClearImplicitDefault) {
151 registry()->OnAcceptRegisterProtocolHandler(test_protocol_handler()); 187 registry()->OnAcceptRegisterProtocolHandler(test_protocol_handler());
152 registry()->ClearDefault("test"); 188 registry()->ClearDefault("test");
153 ASSERT_TRUE(registry()->IsDefault(test_protocol_handler())); 189 ASSERT_TRUE(registry()->IsDefault(test_protocol_handler()));
154 } 190 }
155 191
156 TEST_F(ProtocolHandlerRegistryTest, TestClearDefault) { 192 TEST_F(ProtocolHandlerRegistryTest, TestClearDefault) {
157 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1"); 193 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1");
158 ProtocolHandler ph2 = CreateProtocolHandler("test", "test2"); 194 ProtocolHandler ph2 = CreateProtocolHandler("test", "test2");
159 registry()->OnAcceptRegisterProtocolHandler(ph1); 195 registry()->OnAcceptRegisterProtocolHandler(ph1);
160 registry()->OnAcceptRegisterProtocolHandler(ph2); 196 registry()->OnAcceptRegisterProtocolHandler(ph2);
161 197
162 registry()->SetDefault(ph2); 198 registry()->SetDefault(ph1);
163 registry()->ClearDefault("test"); 199 registry()->ClearDefault("test");
164 ASSERT_FALSE(registry()->IsDefault(ph2)); 200 ASSERT_FALSE(registry()->IsDefault(ph1));
201 ASSERT_TRUE(registry()->IsDefault(ph2));
165 } 202 }
166 203
167 TEST_F(ProtocolHandlerRegistryTest, TestGetHandlerFor) { 204 TEST_F(ProtocolHandlerRegistryTest, TestGetHandlerFor) {
168 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1"); 205 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1");
169 ProtocolHandler ph2 = CreateProtocolHandler("test", "test2"); 206 ProtocolHandler ph2 = CreateProtocolHandler("test", "test2");
170 registry()->OnAcceptRegisterProtocolHandler(ph1); 207 registry()->OnAcceptRegisterProtocolHandler(ph1);
171 registry()->OnAcceptRegisterProtocolHandler(ph2); 208 registry()->OnAcceptRegisterProtocolHandler(ph2);
172 209
173 registry()->SetDefault(ph2); 210 registry()->SetDefault(ph2);
174 ASSERT_EQ(ph2, registry()->GetHandlerFor("test")); 211 ASSERT_EQ(ph2, registry()->GetHandlerFor("test"));
175 ASSERT_TRUE(registry()->HasDefault("test")); 212 ASSERT_TRUE(registry()->HasDefault("test"));
176 } 213 }
177 214
178 TEST_F(ProtocolHandlerRegistryTest, TestMultipleHandlersClearsDefault) { 215 TEST_F(ProtocolHandlerRegistryTest, TestMostRecentHandlerIsDefault) {
179 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1"); 216 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1");
180 ProtocolHandler ph2 = CreateProtocolHandler("test", "test2"); 217 ProtocolHandler ph2 = CreateProtocolHandler("test", "test2");
181 registry()->OnAcceptRegisterProtocolHandler(ph1); 218 registry()->OnAcceptRegisterProtocolHandler(ph1);
182 registry()->OnAcceptRegisterProtocolHandler(ph2); 219 registry()->OnAcceptRegisterProtocolHandler(ph2);
183 ASSERT_FALSE(registry()->IsDefault(ph1)); 220 ASSERT_FALSE(registry()->IsDefault(ph1));
184 ASSERT_FALSE(registry()->IsDefault(ph2)); 221 ASSERT_TRUE(registry()->IsDefault(ph2));
185 } 222 }
186 223
187 TEST_F(ProtocolHandlerRegistryTest, TestSetDefault) { 224 TEST_F(ProtocolHandlerRegistryTest, TestSetDefault) {
188 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1"); 225 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1");
189 ProtocolHandler ph2 = CreateProtocolHandler("test", "test2"); 226 ProtocolHandler ph2 = CreateProtocolHandler("test", "test2");
190 registry()->OnAcceptRegisterProtocolHandler(ph1); 227 registry()->OnAcceptRegisterProtocolHandler(ph1);
191 registry()->OnAcceptRegisterProtocolHandler(ph2); 228 registry()->OnAcceptRegisterProtocolHandler(ph2);
192 229
193 registry()->SetDefault(ph1); 230 registry()->SetDefault(ph1);
194 ASSERT_TRUE(registry()->IsDefault(ph1)); 231 ASSERT_TRUE(registry()->IsDefault(ph1));
(...skipping 18 matching lines...) Expand all
213 ASSERT_TRUE(registry()->IsDefault(ph2)); 250 ASSERT_TRUE(registry()->IsDefault(ph2));
214 } 251 }
215 252
216 TEST_F(ProtocolHandlerRegistryTest, TestRemoveHandler) { 253 TEST_F(ProtocolHandlerRegistryTest, TestRemoveHandler) {
217 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1"); 254 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1");
218 registry()->OnAcceptRegisterProtocolHandler(ph1); 255 registry()->OnAcceptRegisterProtocolHandler(ph1);
219 registry()->OnAcceptRegisterProtocolHandler(ph1); 256 registry()->OnAcceptRegisterProtocolHandler(ph1);
220 257
221 registry()->RemoveHandler(ph1); 258 registry()->RemoveHandler(ph1);
222 ASSERT_FALSE(registry()->IsRegistered(ph1)); 259 ASSERT_FALSE(registry()->IsRegistered(ph1));
223 ASSERT_FALSE(registry()->HasHandler("test")); 260 ASSERT_FALSE(registry()->IsHandledProtocol("test"));
224 } 261 }
225 262
226 TEST_F(ProtocolHandlerRegistryTest, TestIsRegistered) { 263 TEST_F(ProtocolHandlerRegistryTest, TestIsRegistered) {
227 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1"); 264 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1");
228 ProtocolHandler ph2 = CreateProtocolHandler("test", "test2"); 265 ProtocolHandler ph2 = CreateProtocolHandler("test", "test2");
229 registry()->OnAcceptRegisterProtocolHandler(ph1); 266 registry()->OnAcceptRegisterProtocolHandler(ph1);
230 registry()->OnAcceptRegisterProtocolHandler(ph2); 267 registry()->OnAcceptRegisterProtocolHandler(ph2);
231 268
232 ASSERT_TRUE(registry()->IsRegistered(ph1)); 269 ASSERT_TRUE(registry()->IsRegistered(ph1));
233 } 270 }
234 271
235 TEST_F(ProtocolHandlerRegistryTest, TestRemoveHandlerRemovesDefault) { 272 TEST_F(ProtocolHandlerRegistryTest, TestRemoveHandlerRemovesDefault) {
236 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1"); 273 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1");
237 ProtocolHandler ph2 = CreateProtocolHandler("test", "test2"); 274 ProtocolHandler ph2 = CreateProtocolHandler("test", "test2");
238 ProtocolHandler ph3 = CreateProtocolHandler("test", "test3"); 275 ProtocolHandler ph3 = CreateProtocolHandler("test", "test3");
276
239 registry()->OnAcceptRegisterProtocolHandler(ph1); 277 registry()->OnAcceptRegisterProtocolHandler(ph1);
240 registry()->OnAcceptRegisterProtocolHandler(ph2); 278 registry()->OnAcceptRegisterProtocolHandler(ph2);
241 registry()->OnAcceptRegisterProtocolHandler(ph3); 279 registry()->OnAcceptRegisterProtocolHandler(ph3);
242 280
243 registry()->SetDefault(ph1); 281 registry()->SetDefault(ph1);
244 registry()->RemoveHandler(ph1); 282 registry()->RemoveHandler(ph1);
245 ASSERT_FALSE(registry()->IsDefault(ph1)); 283 ASSERT_FALSE(registry()->IsDefault(ph1));
246 } 284 }
285
286 TEST_F(ProtocolHandlerRegistryTest, TestGetHandlersFor) {
287 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1");
288 ProtocolHandler ph2 = CreateProtocolHandler("test", "test2");
289 ProtocolHandler ph3 = CreateProtocolHandler("test", "test3");
290 registry()->OnAcceptRegisterProtocolHandler(ph1);
291 registry()->OnAcceptRegisterProtocolHandler(ph2);
292 registry()->OnAcceptRegisterProtocolHandler(ph3);
293
294 const ProtocolHandlerRegistry::ProtocolHandlerList* handlers =
295 registry()->GetHandlersFor("test");
296 ASSERT_TRUE(handlers != NULL);
297 ASSERT_EQ(ph1, (*handlers)[0]);
298 ASSERT_EQ(ph2, (*handlers)[1]);
299 ASSERT_EQ(ph3, (*handlers)[2]);
300 }
301
302 TEST_F(ProtocolHandlerRegistryTest, TestGetHandledProtocols) {
303 std::vector<std::string> protocols;
304 registry()->GetHandledProtocols(&protocols);
305 ASSERT_EQ((size_t) 0, protocols.size());
306
307 registry()->GetHandlersFor("test");
308
309 protocols.clear();
310 registry()->GetHandledProtocols(&protocols);
311 ASSERT_EQ((size_t) 0, protocols.size());
312 }
313
314 TEST_F(ProtocolHandlerRegistryTest, TestIsHandledProtocol) {
315 registry()->GetHandlersFor("test");
316 ASSERT_FALSE(registry()->IsHandledProtocol("test"));
317 }
318
319 TEST_F(ProtocolHandlerRegistryTest, TestNotifications) {
320 ProtocolHandler ph1 = CreateProtocolHandler("test", "test1");
321 NotificationCounter counter;
322
323 registry()->OnAcceptRegisterProtocolHandler(ph1);
324 ASSERT_EQ(1, counter.events());
325
326 registry()->Disable();
327 ASSERT_EQ(2, counter.events());
328
329 registry()->Enable();
330 ASSERT_EQ(3, counter.events());
331
332 registry()->RemoveHandler(ph1);
333 ASSERT_EQ(4, counter.events());
334 }
335 // TODO add unit tests for notifications
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698