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

Side by Side Diff: chrome/browser/net/http_server_properties_manager_unittest.cc

Issue 275953002: Remove HTTP pipelining support. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix line endings Created 6 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 #include "chrome/browser/net/http_server_properties_manager.h" 5 #include "chrome/browser/net/http_server_properties_manager.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/prefs/pref_registry_simple.h" 9 #include "base/prefs/pref_registry_simple.h"
10 #include "base/prefs/testing_pref_service.h" 10 #include "base/prefs/testing_pref_service.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 HttpServerPropertiesManager::StartCacheUpdateTimerOnUI( 54 HttpServerPropertiesManager::StartCacheUpdateTimerOnUI(
55 base::TimeDelta()); 55 base::TimeDelta());
56 } 56 }
57 57
58 void UpdatePrefsFromCacheOnIOConcrete(const base::Closure& callback) { 58 void UpdatePrefsFromCacheOnIOConcrete(const base::Closure& callback) {
59 HttpServerPropertiesManager::UpdatePrefsFromCacheOnIO(callback); 59 HttpServerPropertiesManager::UpdatePrefsFromCacheOnIO(callback);
60 } 60 }
61 61
62 MOCK_METHOD0(UpdateCacheFromPrefsOnUI, void()); 62 MOCK_METHOD0(UpdateCacheFromPrefsOnUI, void());
63 MOCK_METHOD1(UpdatePrefsFromCacheOnIO, void(const base::Closure&)); 63 MOCK_METHOD1(UpdatePrefsFromCacheOnIO, void(const base::Closure&));
64 MOCK_METHOD6(UpdateCacheFromPrefsOnIO, 64 MOCK_METHOD5(UpdateCacheFromPrefsOnIO,
65 void(std::vector<std::string>* spdy_servers, 65 void(std::vector<std::string>* spdy_servers,
66 net::SpdySettingsMap* spdy_settings_map, 66 net::SpdySettingsMap* spdy_settings_map,
67 net::AlternateProtocolMap* alternate_protocol_map, 67 net::AlternateProtocolMap* alternate_protocol_map,
68 net::PipelineCapabilityMap* pipeline_capability_map,
69 net::AlternateProtocolExperiment experiment, 68 net::AlternateProtocolExperiment experiment,
70 bool detected_corrupted_prefs)); 69 bool detected_corrupted_prefs));
71 MOCK_METHOD4(UpdatePrefsOnUI, 70 MOCK_METHOD3(UpdatePrefsOnUI,
72 void(base::ListValue* spdy_server_list, 71 void(base::ListValue* spdy_server_list,
73 net::SpdySettingsMap* spdy_settings_map, 72 net::SpdySettingsMap* spdy_settings_map,
74 net::AlternateProtocolMap* alternate_protocol_map, 73 net::AlternateProtocolMap* alternate_protocol_map));
75 net::PipelineCapabilityMap* pipeline_capability_map));
76 74
77 private: 75 private:
78 DISALLOW_COPY_AND_ASSIGN(TestingHttpServerPropertiesManager); 76 DISALLOW_COPY_AND_ASSIGN(TestingHttpServerPropertiesManager);
79 }; 77 };
80 78
81 class HttpServerPropertiesManagerTest : public testing::Test { 79 class HttpServerPropertiesManagerTest : public testing::Test {
82 protected: 80 protected:
83 HttpServerPropertiesManagerTest() 81 HttpServerPropertiesManagerTest()
84 : ui_thread_(BrowserThread::UI, &loop_), 82 : ui_thread_(BrowserThread::UI, &loop_),
85 io_thread_(BrowserThread::IO, &loop_) { 83 io_thread_(BrowserThread::IO, &loop_) {
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 // Set supports_spdy for www.google.com:80. 148 // Set supports_spdy for www.google.com:80.
151 server_pref_dict->SetBoolean("supports_spdy", true); 149 server_pref_dict->SetBoolean("supports_spdy", true);
152 150
153 // Set up alternate_protocol for www.google.com:80. 151 // Set up alternate_protocol for www.google.com:80.
154 base::DictionaryValue* alternate_protocol = new base::DictionaryValue; 152 base::DictionaryValue* alternate_protocol = new base::DictionaryValue;
155 alternate_protocol->SetInteger("port", 443); 153 alternate_protocol->SetInteger("port", 443);
156 alternate_protocol->SetString("protocol_str", "npn-spdy/3"); 154 alternate_protocol->SetString("protocol_str", "npn-spdy/3");
157 server_pref_dict->SetWithoutPathExpansion( 155 server_pref_dict->SetWithoutPathExpansion(
158 "alternate_protocol", alternate_protocol); 156 "alternate_protocol", alternate_protocol);
159 157
160 // Set pipeline capability for www.google.com:80.
161 server_pref_dict->SetInteger("pipeline_capability", net::PIPELINE_CAPABLE);
162
163 // Set the server preference for www.google.com:80. 158 // Set the server preference for www.google.com:80.
164 base::DictionaryValue* servers_dict = new base::DictionaryValue; 159 base::DictionaryValue* servers_dict = new base::DictionaryValue;
165 servers_dict->SetWithoutPathExpansion( 160 servers_dict->SetWithoutPathExpansion(
166 "www.google.com:80", server_pref_dict); 161 "www.google.com:80", server_pref_dict);
167 162
168 // Set the preference for mail.google.com server. 163 // Set the preference for mail.google.com server.
169 base::DictionaryValue* server_pref_dict1 = new base::DictionaryValue; 164 base::DictionaryValue* server_pref_dict1 = new base::DictionaryValue;
170 165
171 // Set supports_spdy for mail.google.com:80 166 // Set supports_spdy for mail.google.com:80
172 server_pref_dict1->SetBoolean("supports_spdy", true); 167 server_pref_dict1->SetBoolean("supports_spdy", true);
173 168
174 // Set up alternate_protocol for mail.google.com:80 169 // Set up alternate_protocol for mail.google.com:80
175 base::DictionaryValue* alternate_protocol1 = new base::DictionaryValue; 170 base::DictionaryValue* alternate_protocol1 = new base::DictionaryValue;
176 alternate_protocol1->SetInteger("port", 444); 171 alternate_protocol1->SetInteger("port", 444);
177 alternate_protocol1->SetString("protocol_str", "npn-spdy/3.1"); 172 alternate_protocol1->SetString("protocol_str", "npn-spdy/3.1");
178 173
179 server_pref_dict1->SetWithoutPathExpansion( 174 server_pref_dict1->SetWithoutPathExpansion(
180 "alternate_protocol", alternate_protocol1); 175 "alternate_protocol", alternate_protocol1);
181 176
182 // Set pipelining capability for mail.google.com:80
183 server_pref_dict1->SetInteger("pipeline_capability", net::PIPELINE_INCAPABLE);
184
185 // Set the server preference for mail.google.com:80. 177 // Set the server preference for mail.google.com:80.
186 servers_dict->SetWithoutPathExpansion( 178 servers_dict->SetWithoutPathExpansion(
187 "mail.google.com:80", server_pref_dict1); 179 "mail.google.com:80", server_pref_dict1);
188 180
189 base::DictionaryValue* http_server_properties_dict = 181 base::DictionaryValue* http_server_properties_dict =
190 new base::DictionaryValue; 182 new base::DictionaryValue;
191 HttpServerPropertiesManager::SetVersion(http_server_properties_dict, -1); 183 HttpServerPropertiesManager::SetVersion(http_server_properties_dict, -1);
192 http_server_properties_dict->SetWithoutPathExpansion("servers", servers_dict); 184 http_server_properties_dict->SetWithoutPathExpansion("servers", servers_dict);
193 185
194 // Set the same value for kHttpServerProperties multiple times. 186 // Set the same value for kHttpServerProperties multiple times.
(...skipping 23 matching lines...) Expand all
218 net::PortAlternateProtocolPair port_alternate_protocol = 210 net::PortAlternateProtocolPair port_alternate_protocol =
219 http_server_props_manager_->GetAlternateProtocol( 211 http_server_props_manager_->GetAlternateProtocol(
220 net::HostPortPair::FromString("www.google.com:80")); 212 net::HostPortPair::FromString("www.google.com:80"));
221 EXPECT_EQ(443, port_alternate_protocol.port); 213 EXPECT_EQ(443, port_alternate_protocol.port);
222 EXPECT_EQ(net::NPN_SPDY_3, port_alternate_protocol.protocol); 214 EXPECT_EQ(net::NPN_SPDY_3, port_alternate_protocol.protocol);
223 port_alternate_protocol = 215 port_alternate_protocol =
224 http_server_props_manager_->GetAlternateProtocol( 216 http_server_props_manager_->GetAlternateProtocol(
225 net::HostPortPair::FromString("mail.google.com:80")); 217 net::HostPortPair::FromString("mail.google.com:80"));
226 EXPECT_EQ(444, port_alternate_protocol.port); 218 EXPECT_EQ(444, port_alternate_protocol.port);
227 EXPECT_EQ(net::NPN_SPDY_3_1, port_alternate_protocol.protocol); 219 EXPECT_EQ(net::NPN_SPDY_3_1, port_alternate_protocol.protocol);
228
229 // Verify pipeline capability.
230 EXPECT_EQ(net::PIPELINE_CAPABLE,
231 http_server_props_manager_->GetPipelineCapability(
232 net::HostPortPair::FromString("www.google.com:80")));
233 EXPECT_EQ(net::PIPELINE_INCAPABLE,
234 http_server_props_manager_->GetPipelineCapability(
235 net::HostPortPair::FromString("mail.google.com:80")));
236 } 220 }
237 221
238 TEST_F(HttpServerPropertiesManagerTest, SupportsSpdy) { 222 TEST_F(HttpServerPropertiesManagerTest, SupportsSpdy) {
239 ExpectPrefsUpdate(); 223 ExpectPrefsUpdate();
240 224
241 // Post an update task to the IO thread. SetSupportsSpdy calls 225 // Post an update task to the IO thread. SetSupportsSpdy calls
242 // ScheduleUpdatePrefsOnIO. 226 // ScheduleUpdatePrefsOnIO.
243 227
244 // Add mail.google.com:443 as a supporting spdy server. 228 // Add mail.google.com:443 as a supporting spdy server.
245 net::HostPortPair spdy_server_mail("mail.google.com", 443); 229 net::HostPortPair spdy_server_mail("mail.google.com", 443);
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 352 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
369 353
370 ASSERT_TRUE( 354 ASSERT_TRUE(
371 http_server_props_manager_->HasAlternateProtocol(spdy_server_mail)); 355 http_server_props_manager_->HasAlternateProtocol(spdy_server_mail));
372 net::PortAlternateProtocolPair port_alternate_protocol = 356 net::PortAlternateProtocolPair port_alternate_protocol =
373 http_server_props_manager_->GetAlternateProtocol(spdy_server_mail); 357 http_server_props_manager_->GetAlternateProtocol(spdy_server_mail);
374 EXPECT_EQ(443, port_alternate_protocol.port); 358 EXPECT_EQ(443, port_alternate_protocol.port);
375 EXPECT_EQ(net::NPN_SPDY_3, port_alternate_protocol.protocol); 359 EXPECT_EQ(net::NPN_SPDY_3, port_alternate_protocol.protocol);
376 } 360 }
377 361
378 TEST_F(HttpServerPropertiesManagerTest, PipelineCapability) {
379 ExpectPrefsUpdate();
380
381 net::HostPortPair known_pipeliner("pipeline.com", 8080);
382 net::HostPortPair bad_pipeliner("wordpress.com", 80);
383 EXPECT_EQ(net::PIPELINE_UNKNOWN,
384 http_server_props_manager_->GetPipelineCapability(known_pipeliner));
385 EXPECT_EQ(net::PIPELINE_UNKNOWN,
386 http_server_props_manager_->GetPipelineCapability(bad_pipeliner));
387
388 // Post an update task to the IO thread. SetPipelineCapability calls
389 // ScheduleUpdatePrefsOnIO.
390 http_server_props_manager_->SetPipelineCapability(known_pipeliner,
391 net::PIPELINE_CAPABLE);
392 http_server_props_manager_->SetPipelineCapability(bad_pipeliner,
393 net::PIPELINE_INCAPABLE);
394
395 // Run the task.
396 loop_.RunUntilIdle();
397
398 EXPECT_EQ(net::PIPELINE_CAPABLE,
399 http_server_props_manager_->GetPipelineCapability(known_pipeliner));
400 EXPECT_EQ(net::PIPELINE_INCAPABLE,
401 http_server_props_manager_->GetPipelineCapability(bad_pipeliner));
402 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
403 }
404
405 TEST_F(HttpServerPropertiesManagerTest, Clear) { 362 TEST_F(HttpServerPropertiesManagerTest, Clear) {
406 ExpectPrefsUpdate(); 363 ExpectPrefsUpdate();
407 364
408 net::HostPortPair spdy_server_mail("mail.google.com", 443); 365 net::HostPortPair spdy_server_mail("mail.google.com", 443);
409 http_server_props_manager_->SetSupportsSpdy(spdy_server_mail, true); 366 http_server_props_manager_->SetSupportsSpdy(spdy_server_mail, true);
410 http_server_props_manager_->SetAlternateProtocol( 367 http_server_props_manager_->SetAlternateProtocol(
411 spdy_server_mail, 443, net::NPN_SPDY_3); 368 spdy_server_mail, 443, net::NPN_SPDY_3);
412 369
413 const net::SpdySettingsIds id1 = net::SETTINGS_UPLOAD_BANDWIDTH; 370 const net::SpdySettingsIds id1 = net::SETTINGS_UPLOAD_BANDWIDTH;
414 const net::SpdySettingsFlags flags1 = net::SETTINGS_FLAG_PLEASE_PERSIST; 371 const net::SpdySettingsFlags flags1 = net::SETTINGS_FLAG_PLEASE_PERSIST;
415 const uint32 value1 = 31337; 372 const uint32 value1 = 31337;
416 http_server_props_manager_->SetSpdySetting( 373 http_server_props_manager_->SetSpdySetting(
417 spdy_server_mail, id1, flags1, value1); 374 spdy_server_mail, id1, flags1, value1);
418 375
419 net::HostPortPair known_pipeliner("pipeline.com", 8080);
420 http_server_props_manager_->SetPipelineCapability(known_pipeliner,
421 net::PIPELINE_CAPABLE);
422
423 // Run the task. 376 // Run the task.
424 loop_.RunUntilIdle(); 377 loop_.RunUntilIdle();
425 378
426 EXPECT_TRUE(http_server_props_manager_->SupportsSpdy(spdy_server_mail)); 379 EXPECT_TRUE(http_server_props_manager_->SupportsSpdy(spdy_server_mail));
427 EXPECT_TRUE( 380 EXPECT_TRUE(
428 http_server_props_manager_->HasAlternateProtocol(spdy_server_mail)); 381 http_server_props_manager_->HasAlternateProtocol(spdy_server_mail));
429 382
430 // Check SPDY settings values. 383 // Check SPDY settings values.
431 const net::SettingsMap& settings_map1_ret = 384 const net::SettingsMap& settings_map1_ret =
432 http_server_props_manager_->GetSpdySettings(spdy_server_mail); 385 http_server_props_manager_->GetSpdySettings(spdy_server_mail);
433 ASSERT_EQ(1U, settings_map1_ret.size()); 386 ASSERT_EQ(1U, settings_map1_ret.size());
434 net::SettingsMap::const_iterator it1_ret = settings_map1_ret.find(id1); 387 net::SettingsMap::const_iterator it1_ret = settings_map1_ret.find(id1);
435 EXPECT_TRUE(it1_ret != settings_map1_ret.end()); 388 EXPECT_TRUE(it1_ret != settings_map1_ret.end());
436 net::SettingsFlagsAndValue flags_and_value1_ret = it1_ret->second; 389 net::SettingsFlagsAndValue flags_and_value1_ret = it1_ret->second;
437 EXPECT_EQ(net::SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first); 390 EXPECT_EQ(net::SETTINGS_FLAG_PERSISTED, flags_and_value1_ret.first);
438 EXPECT_EQ(value1, flags_and_value1_ret.second); 391 EXPECT_EQ(value1, flags_and_value1_ret.second);
439 392
440 EXPECT_EQ(net::PIPELINE_CAPABLE,
441 http_server_props_manager_->GetPipelineCapability(known_pipeliner));
442
443 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 393 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
444 394
445 ExpectPrefsUpdate(); 395 ExpectPrefsUpdate();
446 396
447 // Clear http server data, time out if we do not get a completion callback. 397 // Clear http server data, time out if we do not get a completion callback.
448 http_server_props_manager_->Clear(base::MessageLoop::QuitClosure()); 398 http_server_props_manager_->Clear(base::MessageLoop::QuitClosure());
449 loop_.Run(); 399 loop_.Run();
450 400
451 EXPECT_FALSE(http_server_props_manager_->SupportsSpdy(spdy_server_mail)); 401 EXPECT_FALSE(http_server_props_manager_->SupportsSpdy(spdy_server_mail));
452 EXPECT_FALSE( 402 EXPECT_FALSE(
453 http_server_props_manager_->HasAlternateProtocol(spdy_server_mail)); 403 http_server_props_manager_->HasAlternateProtocol(spdy_server_mail));
454 404
455 const net::SettingsMap& settings_map2_ret = 405 const net::SettingsMap& settings_map2_ret =
456 http_server_props_manager_->GetSpdySettings(spdy_server_mail); 406 http_server_props_manager_->GetSpdySettings(spdy_server_mail);
457 EXPECT_EQ(0U, settings_map2_ret.size()); 407 EXPECT_EQ(0U, settings_map2_ret.size());
458 408
459 EXPECT_EQ(net::PIPELINE_UNKNOWN,
460 http_server_props_manager_->GetPipelineCapability(known_pipeliner));
461
462 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 409 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
463 } 410 }
464 411
465 TEST_F(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache0) { 412 TEST_F(HttpServerPropertiesManagerTest, ShutdownWithPendingUpdateCache0) {
466 // Post an update task to the UI thread. 413 // Post an update task to the UI thread.
467 http_server_props_manager_->ScheduleUpdateCacheOnUI(); 414 http_server_props_manager_->ScheduleUpdateCacheOnUI();
468 // Shutdown comes before the task is executed. 415 // Shutdown comes before the task is executed.
469 http_server_props_manager_->ShutdownOnUIThread(); 416 http_server_props_manager_->ShutdownOnUIThread();
470 http_server_props_manager_.reset(); 417 http_server_props_manager_.reset();
471 // Run the task after shutdown and deletion. 418 // Run the task after shutdown and deletion.
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 // Run the task after shutdown, but before deletion. 476 // Run the task after shutdown, but before deletion.
530 loop_.RunUntilIdle(); 477 loop_.RunUntilIdle();
531 Mock::VerifyAndClearExpectations(http_server_props_manager_.get()); 478 Mock::VerifyAndClearExpectations(http_server_props_manager_.get());
532 http_server_props_manager_.reset(); 479 http_server_props_manager_.reset();
533 loop_.RunUntilIdle(); 480 loop_.RunUntilIdle();
534 } 481 }
535 482
536 } // namespace 483 } // namespace
537 484
538 } // namespace chrome_browser_net 485 } // namespace chrome_browser_net
OLDNEW
« no previous file with comments | « chrome/browser/net/http_server_properties_manager.cc ('k') | chrome/browser/resources/net_internals/browser_bridge.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698