Chromium Code Reviews| Index: components/page_load_metrics/browser/metrics_web_contents_observer.cc | 
| diff --git a/components/page_load_metrics/browser/metrics_web_contents_observer.cc b/components/page_load_metrics/browser/metrics_web_contents_observer.cc | 
| index 2961f1ecb5dd766e48da0cd1dc87bd6f8ba53cb7..89e94f6feb6262ef85aa111ec5aabbd64901f24e 100644 | 
| --- a/components/page_load_metrics/browser/metrics_web_contents_observer.cc | 
| +++ b/components/page_load_metrics/browser/metrics_web_contents_observer.cc | 
| @@ -17,6 +17,8 @@ | 
| #include "content/public/browser/web_contents_user_data.h" | 
| #include "ipc/ipc_message.h" | 
| #include "ipc/ipc_message_macros.h" | 
| +#include "net/base/swr_histogram_domains/swr_histogram_domains.h" | 
| +#include "url/gurl.h" | 
| DEFINE_WEB_CONTENTS_USER_DATA_KEY( | 
| page_load_metrics::MetricsWebContentsObserver); | 
| @@ -64,7 +66,9 @@ base::Time WallTimeFromTimeTicks(base::TimeTicks time) { | 
| base::TimeDelta::FromMinutes(10), 100) | 
| PageLoadTracker::PageLoadTracker(bool in_foreground) | 
| - : has_commit_(false), started_in_foreground_(in_foreground) { | 
| + : has_commit_(false), | 
| + started_in_foreground_(in_foreground), | 
| + include_in_stale_while_revalidate_experiment_(false) { | 
| RecordEvent(PAGE_LOAD_STARTED); | 
| } | 
| @@ -89,6 +93,10 @@ void PageLoadTracker::Commit() { | 
| has_commit_ = true; | 
| } | 
| +void PageLoadTracker::IncludeInStaleWhileRevalidateExperiment() { | 
| + include_in_stale_while_revalidate_experiment_ = true; | 
| +} | 
| + | 
| bool PageLoadTracker::UpdateTiming(const PageLoadTiming& timing) { | 
| // Throw away IPCs that are not relevant to the current navigation. | 
| if (!timing_.navigation_start.is_null() && | 
| @@ -134,6 +142,12 @@ void PageLoadTracker::RecordTimingHistograms() { | 
| PAGE_LOAD_HISTOGRAM("PageLoad.Timing2.NavigationToLoadEventFired.BG", | 
| timing_.load_event_start); | 
| } | 
| + if (include_in_stale_while_revalidate_experiment_) { | 
| + PAGE_LOAD_HISTOGRAM( | 
| + "PageLoad.Timing2.NavigationToLoadEventFired_" | 
| + "StaleWhileRevalidateExperiment", | 
| + timing_.load_event_start); | 
| + } | 
| } | 
| if (!timing_.first_layout.is_zero()) { | 
| if (timing_.first_layout < background_delta) { | 
| @@ -145,15 +159,28 @@ void PageLoadTracker::RecordTimingHistograms() { | 
| timing_.first_layout); | 
| RecordEvent(PAGE_LOAD_SUCCESSFUL_FIRST_LAYOUT_BACKGROUND); | 
| } | 
| + if (include_in_stale_while_revalidate_experiment_) { | 
| + PAGE_LOAD_HISTOGRAM( | 
| + "PageLoad.Timing2.NavigationToFirstLayout_" | 
| + "StaleWhileRevalidateExperiment", | 
| + timing_.first_layout); | 
| + } | 
| } | 
| if (!timing_.first_text_paint.is_zero()) { | 
| if (timing_.first_text_paint < background_delta) { | 
| PAGE_LOAD_HISTOGRAM("PageLoad.Timing2.NavigationToFirstTextPaint", | 
| timing_.first_text_paint); | 
| + | 
| 
 
tyoshino (SeeGerritForStatus)
2015/10/19 07:15:10
inserted accidentally?
 
Adam Rice
2015/10/19 12:03:07
Yes. Fixed.
 
 | 
| } else { | 
| PAGE_LOAD_HISTOGRAM("PageLoad.Timing2.NavigationToFirstTextPaint.BG", | 
| timing_.first_text_paint); | 
| } | 
| + if (include_in_stale_while_revalidate_experiment_) { | 
| + PAGE_LOAD_HISTOGRAM( | 
| + "PageLoad.Timing2.NavigationToFirstTextPaint_" | 
| + "StaleWhileRevalidateExperiment", | 
| + timing_.first_text_paint); | 
| + } | 
| } | 
| } | 
| @@ -222,6 +249,11 @@ void MetricsWebContentsObserver::DidFinishNavigation( | 
| if (!IsRelevantNavigation(navigation_handle)) | 
| return; | 
| + if (net::swr_histogram_domains::IsHostInSWRHistogramDomain( | 
| + navigation_handle->GetURL().host())) { | 
| + finished_nav->IncludeInStaleWhileRevalidateExperiment(); | 
| + } | 
| + | 
| committed_load_ = finished_nav.Pass(); | 
| committed_load_->Commit(); | 
| } |