| 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 | 4 |
| 5 #include "net/dns/host_cache.h" | 5 #include "net/dns/host_cache.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 // String constants for dictionary keys. | 34 // String constants for dictionary keys. |
| 35 const char kHostnameKey[] = "hostname"; | 35 const char kHostnameKey[] = "hostname"; |
| 36 const char kAddressFamilyKey[] = "address_family"; | 36 const char kAddressFamilyKey[] = "address_family"; |
| 37 const char kFlagsKey[] = "flags"; | 37 const char kFlagsKey[] = "flags"; |
| 38 const char kExpirationKey[] = "expiration"; | 38 const char kExpirationKey[] = "expiration"; |
| 39 const char kTtlKey[] = "ttl"; | 39 const char kTtlKey[] = "ttl"; |
| 40 const char kNetworkChangesKey[] = "network_changes"; | 40 const char kNetworkChangesKey[] = "network_changes"; |
| 41 const char kErrorKey[] = "error"; | 41 const char kErrorKey[] = "error"; |
| 42 const char kAddressesKey[] = "addresses"; | 42 const char kAddressesKey[] = "addresses"; |
| 43 | 43 |
| 44 bool AddressListFromListValue(base::ListValue* value, AddressList* list) { | 44 bool AddressListFromListValue(const base::ListValue* value, AddressList* list) { |
| 45 list->clear(); | 45 list->clear(); |
| 46 for (base::ListValue::const_iterator it = value->begin(); it != value->end(); | 46 for (base::ListValue::const_iterator it = value->begin(); it != value->end(); |
| 47 it++) { | 47 it++) { |
| 48 IPAddress address; | 48 IPAddress address; |
| 49 std::string addr_string; | 49 std::string addr_string; |
| 50 if (!it->GetAsString(&addr_string) || | 50 if (!it->GetAsString(&addr_string) || |
| 51 !address.AssignFromIPLiteral(addr_string)) { | 51 !address.AssignFromIPLiteral(addr_string)) { |
| 52 return false; | 52 return false; |
| 53 } | 53 } |
| 54 list->push_back(IPEndPoint(address, 0)); | 54 list->push_back(IPEndPoint(address, 0)); |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 entry_dict->SetList(kAddressesKey, std::move(addresses_value)); | 308 entry_dict->SetList(kAddressesKey, std::move(addresses_value)); |
| 309 } | 309 } |
| 310 | 310 |
| 311 entry_list->Append(std::move(entry_dict)); | 311 entry_list->Append(std::move(entry_dict)); |
| 312 } | 312 } |
| 313 | 313 |
| 314 return entry_list; | 314 return entry_list; |
| 315 } | 315 } |
| 316 | 316 |
| 317 // TODO(mgersh): Add histograms to track failures. | 317 // TODO(mgersh): Add histograms to track failures. |
| 318 bool HostCache::RestoreFromListValue(base::ListValue& old_cache) { | 318 bool HostCache::RestoreFromListValue(const base::ListValue& old_cache) { |
| 319 for (base::ListValue::iterator it = old_cache.begin(); it != old_cache.end(); | 319 for (auto it = old_cache.begin(); it != old_cache.end(); it++) { |
| 320 it++) { | 320 const base::DictionaryValue* entry_dict; |
| 321 base::DictionaryValue* entry_dict; | |
| 322 if (!it->GetAsDictionary(&entry_dict)) | 321 if (!it->GetAsDictionary(&entry_dict)) |
| 323 return false; | 322 return false; |
| 324 | 323 |
| 325 std::string hostname; | 324 std::string hostname; |
| 326 int address_family; | 325 int address_family; |
| 327 HostResolverFlags flags; | 326 HostResolverFlags flags; |
| 328 int error = OK; | 327 int error = OK; |
| 329 std::string expiration; | 328 std::string expiration; |
| 330 base::ListValue empty_list; | 329 base::ListValue empty_list; |
| 331 base::ListValue* addresses_value = &empty_list; | 330 const base::ListValue* addresses_value = &empty_list; |
| 332 AddressList address_list; | 331 AddressList address_list; |
| 333 | 332 |
| 334 if (!entry_dict->GetString(kHostnameKey, &hostname) || | 333 if (!entry_dict->GetString(kHostnameKey, &hostname) || |
| 335 !entry_dict->GetInteger(kFlagsKey, &flags) || | 334 !entry_dict->GetInteger(kFlagsKey, &flags) || |
| 336 !entry_dict->GetInteger(kAddressFamilyKey, &address_family) || | 335 !entry_dict->GetInteger(kAddressFamilyKey, &address_family) || |
| 337 !entry_dict->GetString(kExpirationKey, &expiration)) { | 336 !entry_dict->GetString(kExpirationKey, &expiration)) { |
| 338 return false; | 337 return false; |
| 339 } | 338 } |
| 340 | 339 |
| 341 // Only one of these fields should be in the dictionary. | 340 // Only one of these fields should be in the dictionary. |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 510 CACHE_HISTOGRAM_TIME("EraseValid.ValidFor", -stale.expired_by); | 509 CACHE_HISTOGRAM_TIME("EraseValid.ValidFor", -stale.expired_by); |
| 511 } | 510 } |
| 512 } | 511 } |
| 513 | 512 |
| 514 void HostCache::RecordEraseAll(EraseReason reason, base::TimeTicks now) { | 513 void HostCache::RecordEraseAll(EraseReason reason, base::TimeTicks now) { |
| 515 for (const auto& it : entries_) | 514 for (const auto& it : entries_) |
| 516 RecordErase(reason, now, it.second); | 515 RecordErase(reason, now, it.second); |
| 517 } | 516 } |
| 518 | 517 |
| 519 } // namespace net | 518 } // namespace net |
| OLD | NEW |