| Index: components/cronet/host_cache_persistence_manager.cc
|
| diff --git a/components/cronet/host_cache_persistence_manager.cc b/components/cronet/host_cache_persistence_manager.cc
|
| index 97e3bdca06adaee546c63c6e3681bf3c278f7b87..a804875224dafea82147b0f6da7557e1cfe18687 100644
|
| --- a/components/cronet/host_cache_persistence_manager.cc
|
| +++ b/components/cronet/host_cache_persistence_manager.cc
|
| @@ -7,8 +7,10 @@
|
| #include <memory>
|
|
|
| #include "base/memory/ptr_util.h"
|
| +#include "base/metrics/histogram_macros.h"
|
| #include "base/values.h"
|
| #include "components/prefs/pref_service.h"
|
| +#include "net/log/net_log.h"
|
|
|
| namespace cronet {
|
|
|
| @@ -16,12 +18,16 @@ HostCachePersistenceManager::HostCachePersistenceManager(
|
| net::HostCache* cache,
|
| PrefService* pref_service,
|
| std::string pref_name,
|
| - base::TimeDelta delay)
|
| + base::TimeDelta delay,
|
| + net::NetLog* net_log)
|
| : cache_(cache),
|
| pref_service_(pref_service),
|
| pref_name_(pref_name),
|
| writing_pref_(false),
|
| delay_(delay),
|
| + net_log_(net::NetLogWithSource::Make(
|
| + net_log,
|
| + net::NetLogSourceType::HOST_CACHE_PERSISTENCE_MANAGER)),
|
| weak_factory_(this) {
|
| DCHECK(cache_);
|
| DCHECK(pref_service_);
|
| @@ -51,8 +57,14 @@ void HostCachePersistenceManager::ReadFromDisk() {
|
| if (writing_pref_)
|
| return;
|
|
|
| + net_log_.BeginEvent(net::NetLogEventType::HOST_CACHE_PREF_READ);
|
| const base::ListValue* pref_value = pref_service_->GetList(pref_name_);
|
| - cache_->RestoreFromListValue(*pref_value);
|
| + bool success = cache_->RestoreFromListValue(*pref_value);
|
| + net_log_.EndEvent(net::NetLogEventType::HOST_CACHE_PREF_READ,
|
| + net::NetLog::BoolCallback("success", success));
|
| +
|
| + UMA_HISTOGRAM_BOOLEAN("DNS.HostCache.RestoreSuccess", success);
|
| + UMA_HISTOGRAM_COUNTS_1000("DNS.HostCache.RestoreSize", pref_value->GetSize());
|
| }
|
|
|
| void HostCachePersistenceManager::ScheduleWrite() {
|
| @@ -61,6 +73,7 @@ void HostCachePersistenceManager::ScheduleWrite() {
|
| if (timer_.IsRunning())
|
| return;
|
|
|
| + net_log_.AddEvent(net::NetLogEventType::HOST_CACHE_PERSISTENCE_START_TIMER);
|
| timer_.Start(FROM_HERE, delay_,
|
| base::Bind(&HostCachePersistenceManager::WriteToDisk,
|
| weak_factory_.GetWeakPtr()));
|
| @@ -69,6 +82,7 @@ void HostCachePersistenceManager::ScheduleWrite() {
|
| void HostCachePersistenceManager::WriteToDisk() {
|
| DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
|
|
| + net_log_.AddEvent(net::NetLogEventType::HOST_CACHE_PREF_WRITE);
|
| base::ListValue value;
|
| cache_->GetAsListValue(&value, false);
|
| writing_pref_ = true;
|
|
|