OLD | NEW |
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 #include "chrome/browser/net/http_server_properties_manager.h" | 4 #include "chrome/browser/net/http_server_properties_manager.h" |
5 | 5 |
6 #include "base/bind.h" | 6 #include "base/bind.h" |
7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" |
8 #include "base/values.h" | 8 #include "base/values.h" |
9 #include "chrome/browser/prefs/pref_service.h" | 9 #include "chrome/browser/prefs/pref_service.h" |
10 #include "chrome/common/chrome_notification_types.h" | 10 #include "chrome/common/chrome_notification_types.h" |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 continue; | 271 continue; |
272 } | 272 } |
273 | 273 |
274 // Get if server supports Spdy. | 274 // Get if server supports Spdy. |
275 bool supports_spdy = false; | 275 bool supports_spdy = false; |
276 if ((server_pref_dict->GetBoolean( | 276 if ((server_pref_dict->GetBoolean( |
277 "supports_spdy", &supports_spdy)) && supports_spdy) { | 277 "supports_spdy", &supports_spdy)) && supports_spdy) { |
278 spdy_servers->push_back(server_str); | 278 spdy_servers->push_back(server_str); |
279 } | 279 } |
280 | 280 |
281 // Get SpdySettings. | 281 // TODO(rtenneti): Implement reading of SpdySettings. |
282 DCHECK(!ContainsKey(*spdy_settings_map, server)); | 282 DCHECK(!ContainsKey(*spdy_settings_map, server)); |
283 base::ListValue* spdy_settings_list = NULL; | |
284 if (server_pref_dict->GetListWithoutPathExpansion( | |
285 "settings", &spdy_settings_list)) { | |
286 spdy::SpdySettings spdy_settings; | |
287 | |
288 for (base::ListValue::const_iterator list_it = | |
289 spdy_settings_list->begin(); | |
290 list_it != spdy_settings_list->end(); ++list_it) { | |
291 if ((*list_it)->GetType() != Value::TYPE_DICTIONARY) { | |
292 DVLOG(1) << "Malformed SpdySettingsList for server: " << server_str; | |
293 detected_corrupted_prefs = true; | |
294 continue; | |
295 } | |
296 | |
297 const base::DictionaryValue* spdy_setting_dict = | |
298 static_cast<const base::DictionaryValue*>(*list_it); | |
299 | |
300 int id = 0; | |
301 if (!spdy_setting_dict->GetIntegerWithoutPathExpansion("id", &id)) { | |
302 DVLOG(1) << "Malformed id in SpdySettings for server: " << server_str; | |
303 detected_corrupted_prefs = true; | |
304 continue; | |
305 } | |
306 | |
307 int value = 0; | |
308 if (!spdy_setting_dict->GetIntegerWithoutPathExpansion("value", | |
309 &value)) { | |
310 DVLOG(1) << "Malformed value in SpdySettings for server: " << | |
311 server_str; | |
312 detected_corrupted_prefs = true; | |
313 continue; | |
314 } | |
315 | |
316 spdy::SettingsFlagsAndId flags_and_id( | |
317 spdy::SETTINGS_FLAG_PERSISTED, id); | |
318 spdy_settings.push_back(spdy::SpdySetting(flags_and_id, value)); | |
319 } | |
320 | |
321 (*spdy_settings_map)[server] = spdy_settings; | |
322 } | |
323 | 283 |
324 int pipeline_capability = net::PIPELINE_UNKNOWN; | 284 int pipeline_capability = net::PIPELINE_UNKNOWN; |
325 if ((server_pref_dict->GetInteger( | 285 if ((server_pref_dict->GetInteger( |
326 "pipeline_capability", &pipeline_capability)) && | 286 "pipeline_capability", &pipeline_capability)) && |
327 pipeline_capability != net::PIPELINE_UNKNOWN) { | 287 pipeline_capability != net::PIPELINE_UNKNOWN) { |
328 (*pipeline_capability_map)[server] = | 288 (*pipeline_capability_map)[server] = |
329 static_cast<net::HttpPipelinedHostCapability>(pipeline_capability); | 289 static_cast<net::HttpPipelinedHostCapability>(pipeline_capability); |
330 } | 290 } |
331 | 291 |
332 // Get alternate_protocol server. | 292 // Get alternate_protocol server. |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
568 server_pref_map.begin(); | 528 server_pref_map.begin(); |
569 map_it != server_pref_map.end(); ++map_it) { | 529 map_it != server_pref_map.end(); ++map_it) { |
570 const net::HostPortPair& server = map_it->first; | 530 const net::HostPortPair& server = map_it->first; |
571 const ServerPref& server_pref = map_it->second; | 531 const ServerPref& server_pref = map_it->second; |
572 | 532 |
573 base::DictionaryValue* server_pref_dict = new base::DictionaryValue; | 533 base::DictionaryValue* server_pref_dict = new base::DictionaryValue; |
574 | 534 |
575 // Save supports_spdy. | 535 // Save supports_spdy. |
576 server_pref_dict->SetBoolean("supports_spdy", server_pref.supports_spdy); | 536 server_pref_dict->SetBoolean("supports_spdy", server_pref.supports_spdy); |
577 | 537 |
578 // Save SpdySettings. | 538 // TODO(rtenneti): Implement save SpdySettings. |
579 if (server_pref.settings) { | |
580 base::ListValue* spdy_settings_list = new ListValue(); | |
581 for (spdy::SpdySettings::const_iterator it = | |
582 server_pref.settings->begin(); | |
583 it != server_pref.settings->end(); ++it) { | |
584 uint32 id = it->first.id(); | |
585 uint32 value = it->second; | |
586 base::DictionaryValue* spdy_setting_dict = new base::DictionaryValue; | |
587 spdy_setting_dict->SetInteger("id", id); | |
588 spdy_setting_dict->SetInteger("value", value); | |
589 spdy_settings_list->Append(spdy_setting_dict); | |
590 } | |
591 server_pref_dict->Set("settings", spdy_settings_list); | |
592 } | |
593 | 539 |
594 // Save alternate_protocol. | 540 // Save alternate_protocol. |
595 if (server_pref.alternate_protocol) { | 541 if (server_pref.alternate_protocol) { |
596 base::DictionaryValue* port_alternate_protocol_dict = | 542 base::DictionaryValue* port_alternate_protocol_dict = |
597 new base::DictionaryValue; | 543 new base::DictionaryValue; |
598 const net::PortAlternateProtocolPair* port_alternate_protocol = | 544 const net::PortAlternateProtocolPair* port_alternate_protocol = |
599 server_pref.alternate_protocol; | 545 server_pref.alternate_protocol; |
600 port_alternate_protocol_dict->SetInteger( | 546 port_alternate_protocol_dict->SetInteger( |
601 "port", port_alternate_protocol->port); | 547 "port", port_alternate_protocol->port); |
602 port_alternate_protocol_dict->SetInteger( | 548 port_alternate_protocol_dict->SetInteger( |
(...skipping 28 matching lines...) Expand all Loading... |
631 std::string* pref_name = content::Details<std::string>(details).ptr(); | 577 std::string* pref_name = content::Details<std::string>(details).ptr(); |
632 if (*pref_name == prefs::kHttpServerProperties) { | 578 if (*pref_name == prefs::kHttpServerProperties) { |
633 if (!setting_prefs_) | 579 if (!setting_prefs_) |
634 ScheduleUpdateCacheOnUI(); | 580 ScheduleUpdateCacheOnUI(); |
635 } else { | 581 } else { |
636 NOTREACHED(); | 582 NOTREACHED(); |
637 } | 583 } |
638 } | 584 } |
639 | 585 |
640 } // namespace chrome_browser_net | 586 } // namespace chrome_browser_net |
OLD | NEW |