diff options
Diffstat (limited to 'chrome/browser/net/dns_host_info.cc')
-rw-r--r-- | chrome/browser/net/dns_host_info.cc | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/chrome/browser/net/dns_host_info.cc b/chrome/browser/net/dns_host_info.cc index d40acd7..dbfde3b 100644 --- a/chrome/browser/net/dns_host_info.cc +++ b/chrome/browser/net/dns_host_info.cc @@ -77,6 +77,7 @@ void DnsHostInfo::set_cache_expiration(TimeDelta time) { void DnsHostInfo::SetQueuedState(ResolutionMotivation motivation) { DCHECK(PENDING == state_ || FOUND == state_ || NO_SUCH_NAME == state_); + old_prequeue_state_ = state_; state_ = QUEUED; queue_duration_ = resolve_duration_ = kNullDuration; SetMotivation(motivation); @@ -92,6 +93,24 @@ void DnsHostInfo::SetAssignedState() { UMA_HISTOGRAM_TIMES("DNS.PrefetchQueue", queue_duration_); } +void DnsHostInfo::RemoveFromQueue() { + DCHECK(ASSIGNED == state_); + state_ = old_prequeue_state_; + DLogResultsStats("DNS Prefetch reset to prequeue"); + static const TimeDelta kBoundary = TimeDelta::FromSeconds(2); + if (queue_duration_ > kBoundary) { + UMA_HISTOGRAM_MEDIUM_TIMES("DNS.QueueRecycledDeltaOver2", + queue_duration_ - kBoundary); + return; + } + // Make a custom linear histogram for the region from 0 to boundary. + const size_t kBucketCount = 52; + static LinearHistogram histogram("DNS.QueueRecycledUnder2", TimeDelta(), + kBoundary, kBucketCount); + histogram.SetFlags(kUmaTargetedHistogramFlag); + histogram.AddTime(queue_duration_); +} + void DnsHostInfo::SetPendingDeleteState() { DCHECK(ASSIGNED == state_ || ASSIGNED_BUT_MARKED == state_); state_ = ASSIGNED_BUT_MARKED; @@ -143,7 +162,7 @@ void DnsHostInfo::SetFinishedState(bool was_resolved) { void DnsHostInfo::SetHostname(const std::string& hostname) { if (hostname != hostname_) { - DCHECK(hostname_.size() == 0); // Not yet initialized. + DCHECK_EQ(hostname_.size(), 0u); // Not yet initialized. hostname_ = hostname; } } @@ -171,7 +190,7 @@ bool DnsHostInfo::IsStillCached() const { DnsBenefit DnsHostInfo::AccruePrefetchBenefits(DnsHostInfo* navigation_info) { DCHECK(FINISHED == navigation_info->state_ || FINISHED_UNRESOLVED == navigation_info->state_); - DCHECK(0 == navigation_info->hostname_.compare(hostname_.data())); + DCHECK_EQ(navigation_info->hostname_, hostname_.data()); if ((0 == benefits_remaining_.InMilliseconds()) || (FOUND != state_ && NO_SUCH_NAME != state_)) { |