| Index: content/browser/loader/resource_dispatcher_host_impl.cc
|
| diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc
|
| index 300a222f6acc42fbebe46bb6efe44d9f17e486ca..39108877eb551027f55ebfd7e6d29a13dc89690d 100644
|
| --- a/content/browser/loader/resource_dispatcher_host_impl.cc
|
| +++ b/content/browser/loader/resource_dispatcher_host_impl.cc
|
| @@ -272,6 +272,42 @@ void HandleSyncLoadResult(base::WeakPtr<ResourceMessageFilter> filter,
|
| filter->Send(sync_result.release());
|
| }
|
|
|
| +// Used to log the cache flags for back-forward navigation requests.
|
| +// Because this enum is used to back a histogrma, DO NOT REMOVE OR RENAME VALUES
|
| +// in this enum. Instead, add a new one at the end.
|
| +// TODO(clamy): Remove this once we know the reason behind PlzNavigate's
|
| +// regression on PLT for back forward navigations.
|
| +enum HistogramCacheFlag {
|
| + HISTOGRAM_VALIDATE_CACHE,
|
| + HISTOGRAM_BYPASS_CACHE,
|
| + HISTOGRAM_SKIP_CACHE_VALIDATION,
|
| + HISTOGRAM_ONLY_FROM_CACHE,
|
| + HISTOGRAM_DISABLE_CACHE,
|
| + HISTOGRAM_CACHE_FLAG_MAX = HISTOGRAM_DISABLE_CACHE,
|
| +};
|
| +
|
| +void RecordCacheFlags(HistogramCacheFlag flag) {
|
| + UMA_HISTOGRAM_ENUMERATION("Navigation.BackForward.CacheFlags", flag,
|
| + HISTOGRAM_CACHE_FLAG_MAX);
|
| +}
|
| +
|
| +void LogBackForwardNavigationFlagsHistogram(int load_flags) {
|
| + if (load_flags & net::LOAD_VALIDATE_CACHE)
|
| + RecordCacheFlags(HISTOGRAM_VALIDATE_CACHE);
|
| +
|
| + if (load_flags & net::LOAD_BYPASS_CACHE)
|
| + RecordCacheFlags(HISTOGRAM_BYPASS_CACHE);
|
| +
|
| + if (load_flags & net::LOAD_SKIP_CACHE_VALIDATION)
|
| + RecordCacheFlags(HISTOGRAM_SKIP_CACHE_VALIDATION);
|
| +
|
| + if (load_flags & net::LOAD_ONLY_FROM_CACHE)
|
| + RecordCacheFlags(HISTOGRAM_ONLY_FROM_CACHE);
|
| +
|
| + if (load_flags & net::LOAD_DISABLE_CACHE)
|
| + RecordCacheFlags(HISTOGRAM_DISABLE_CACHE);
|
| +}
|
| +
|
| } // namespace
|
|
|
| ResourceDispatcherHostImpl::LoadInfo::LoadInfo() {}
|
| @@ -2200,6 +2236,14 @@ void ResourceDispatcherHostImpl::BeginRequestInternal(
|
| ResourceRequestInfoImpl* info =
|
| ResourceRequestInfoImpl::ForRequest(request.get());
|
|
|
| + // Log metrics for back-forward navigations.
|
| + // TODO(clamy): Remove this once we understand the reason behind the
|
| + // back-forward PLT regression with PlzNavigate
|
| + if ((info->GetPageTransition() & ui::PAGE_TRANSITION_FORWARD_BACK) &&
|
| + IsResourceTypeFrame(info->GetResourceType())) {
|
| + LogBackForwardNavigationFlagsHistogram(request->load_flags());
|
| + }
|
| +
|
| if ((TimeTicks::Now() - last_user_gesture_time_) <
|
| TimeDelta::FromMilliseconds(kUserGestureWindowMs)) {
|
| request->SetLoadFlags(request->load_flags() | net::LOAD_MAYBE_USER_GESTURE);
|
|
|