| Index: chrome/browser/metrics/first_web_contents_profiler.cc
|
| diff --git a/chrome/browser/metrics/first_web_contents_profiler.cc b/chrome/browser/metrics/first_web_contents_profiler.cc
|
| index ae630bd036485eea6eb8197ded5c802e4bf78217..cbeef39cf1b5e766fcf462c49547889be281e623 100644
|
| --- a/chrome/browser/metrics/first_web_contents_profiler.cc
|
| +++ b/chrome/browser/metrics/first_web_contents_profiler.cc
|
| @@ -122,6 +122,7 @@ FirstWebContentsProfiler::FirstWebContentsProfiler(
|
| collected_load_metric_(false),
|
| collected_main_navigation_start_metric_(false),
|
| collected_main_navigation_finished_metric_(false),
|
| + finished_(false),
|
| delegate_(delegate),
|
| responsiveness_histogram_(NULL),
|
| responsiveness_1sec_histogram_(NULL),
|
| @@ -141,7 +142,11 @@ void FirstWebContentsProfiler::DidFirstVisuallyNonEmptyPaint() {
|
| }
|
|
|
| collected_paint_metric_ = true;
|
| - startup_metric_utils::RecordFirstWebContentsNonEmptyPaint(base::Time::Now());
|
| + const base::Time now = base::Time::Now();
|
| + // Record the old metric unconditionally.
|
| + startup_metric_utils::RecordDeprecatedFirstWebContentsNonEmptyPaint(now);
|
| + if (!finished_)
|
| + startup_metric_utils::RecordFirstWebContentsNonEmptyPaint(now);
|
|
|
| metrics::TrackingSynchronizer::OnProfilingPhaseCompleted(
|
| metrics::ProfilerEventProto::EVENT_FIRST_NONEMPTY_PAINT);
|
| @@ -179,7 +184,11 @@ void FirstWebContentsProfiler::DocumentOnLoadCompletedInMainFrame() {
|
| }
|
|
|
| collected_load_metric_ = true;
|
| - startup_metric_utils::RecordFirstWebContentsMainFrameLoad(base::Time::Now());
|
| + const base::Time now = base::Time::Now();
|
| + // Record the old metric unconditionally.
|
| + startup_metric_utils::RecordDeprecatedFirstWebContentsMainFrameLoad(now);
|
| + if (!finished_)
|
| + startup_metric_utils::RecordFirstWebContentsMainFrameLoad(now);
|
|
|
| if (IsFinishedCollectingMetrics())
|
| FinishedCollectingMetrics(FinishReason::DONE);
|
| @@ -254,17 +263,22 @@ bool FirstWebContentsProfiler::IsFinishedCollectingMetrics() {
|
|
|
| void FirstWebContentsProfiler::FinishedCollectingMetrics(
|
| FinishReason finish_reason) {
|
| - UMA_HISTOGRAM_ENUMERATION("Startup.FirstWebContents.FinishReason",
|
| - finish_reason, FinishReason::ENUM_MAX);
|
| - if (!collected_paint_metric_) {
|
| - UMA_HISTOGRAM_ENUMERATION("Startup.FirstWebContents.FinishReason_NoPaint",
|
| - finish_reason, FinishReason::ENUM_MAX);
|
| - }
|
| - if (!collected_load_metric_) {
|
| - UMA_HISTOGRAM_ENUMERATION("Startup.FirstWebContents.FinishReason_NoLoad",
|
| + if (!finished_) {
|
| + UMA_HISTOGRAM_ENUMERATION("Startup.FirstWebContents.FinishReason",
|
| finish_reason, FinishReason::ENUM_MAX);
|
| + if (!collected_paint_metric_) {
|
| + UMA_HISTOGRAM_ENUMERATION("Startup.FirstWebContents.FinishReason_NoPaint",
|
| + finish_reason, FinishReason::ENUM_MAX);
|
| + }
|
| + if (!collected_load_metric_) {
|
| + UMA_HISTOGRAM_ENUMERATION("Startup.FirstWebContents.FinishReason_NoLoad",
|
| + finish_reason, FinishReason::ENUM_MAX);
|
| + }
|
| + finished_ = true;
|
| }
|
| - delegate_->ProfilerFinishedCollectingMetrics();
|
| + // TODO(gab): Delete right away when getting rid of |finished_|.
|
| + if (IsFinishedCollectingMetrics())
|
| + delegate_->ProfilerFinishedCollectingMetrics();
|
| }
|
|
|
| void FirstWebContentsProfiler::InitHistograms() {
|
|
|