New issue
Advanced search Search tips

Issue 632081 link

Starred by 8 users

Issue metadata

Status: Fixed
Owner:
Closed: Oct 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocked on:
issue 638124
issue 658276
issue 659021



Sign in to add a comment

First Meaningful Paint - Progressive Web Metric

Project Member Reported by tdres...@chromium.org, Jul 27 2016

Issue description

Add First Meaningful Paint Progressive Web Metric.

Some discussion here: https://docs.google.com/document/d/1BR94tJdZLsin5poeet0XoTW60M0SjvOJQttKT-JK8HI/edit#heading=h.tdqghbi9ia5d
 
Cc: ksakamoto@chromium.org
 Issue 507790  has been merged into this issue.
Project Member

Comment 3 by bugdroid1@chromium.org, Aug 13 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b190d8e50285016c58c89ae5717446388945fd8f

commit b190d8e50285016c58c89ae5717446388945fd8f
Author: ksakamoto <ksakamoto@chromium.org>
Date: Sat Aug 13 04:48:54 2016

FirstMeaningfulPaint UMA

This patch implements First Meaningful Paint (FMP) [1] as a UMA metric.
FMP is computed in FirstMeaningfulPaintDetector class, using the same
algorithm as existing trace-based FMP [2].

FirstMeaningfulPaintDetector observes layout operations during page load
until network stable (2 seconds of no network activity), and then
reports computed FMP to PaintTiming.

If the user navigated away from the page while observing layouts or
user interaction happened between FP and FMP, instead of reporting Time
to first meaningful paint, just log the event in separate
FirstMeaningfulPaintStatus histogram.

Design doc: http://goo.gl/TEiMi4

[1] https://goo.gl/vpaxv6
[2] https://github.com/catapult-project/catapult/blob/master/tracing/tracing/metrics/system_health/loading_metric.html

BUG= 632081 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Review-Url: https://codereview.chromium.org/2039363003
Cr-Commit-Position: refs/heads/master@{#411876}

[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.h
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer_unittest.cc
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_test_harness.cc
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/chrome/browser/page_load_metrics/page_load_metrics_observer.h
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/chrome/common/page_load_metrics/page_load_metrics_messages.h
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/chrome/common/page_load_metrics/page_load_timing.cc
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/chrome/common/page_load_metrics/page_load_timing.h
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/chrome/renderer/page_load_metrics/metrics_render_frame_observer.cc
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/core.gypi
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/fetch/ResourceFetcher.h
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/frame/FrameView.cpp
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/frame/FrameView.h
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/layout/LayoutObject.cpp
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.h
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
[add] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/paint/FirstMeaningfulPaintDetector.cpp
[add] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/paint/FirstMeaningfulPaintDetector.h
[add] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/paint/FirstMeaningfulPaintDetectorTest.cpp
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/paint/PaintTiming.cpp
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/paint/PaintTiming.h
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/timing/PerformanceTiming.cpp
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/core/timing/PerformanceTiming.h
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/platform/graphics/GraphicsLayer.h
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/platform/graphics/GraphicsLayerClient.h
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/Source/web/WebPerformance.cpp
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/third_party/WebKit/public/web/WebPerformance.h
[modify] https://crrev.com/b190d8e50285016c58c89ae5717446388945fd8f/tools/metrics/histograms/histograms.xml

Blockedon: 638124
Project Member

Comment 5 by bugdroid1@chromium.org, Aug 20 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/65d47fee609fe53951c1317efd34a2414281dd3a

commit 65d47fee609fe53951c1317efd34a2414281dd3a
Author: ksakamoto <ksakamoto@chromium.org>
Date: Sat Aug 20 03:59:41 2016

Fix a bug in "network stable" check of FirstMeaningfulPaint

This fixes a bug where FirstMeaningfulPaintDetector stopped observing
layouts too early, because the conditional of
ResourceFetcher::hasPendingRequest was wrong.

BUG= 632081 

Review-Url: https://codereview.chromium.org/2259183002
Cr-Commit-Position: refs/heads/master@{#413317}

[modify] https://crrev.com/65d47fee609fe53951c1317efd34a2414281dd3a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp

Project Member

Comment 6 by bugdroid1@chromium.org, Sep 20 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ffeb48f2494314b85493ad8fc0c54dbb1b4a44a1

commit ffeb48f2494314b85493ad8fc0c54dbb1b4a44a1
Author: ksakamoto <ksakamoto@chromium.org>
Date: Tue Sep 20 01:49:36 2016

FirstMeaningfulPaint UMA: Reduce the network activity threshold

This patch changes the duration FirstMeaningfulPaintDetector waits
before reporting FirstMeaningfulPaint from 2.0sec to 0.5sec.

This is safe because only 0.18% of FirstMeaningfulPaint is in the range
of [network stable - 2sec, network stable - 0.5sec].

BUG= 632081 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Review-Url: https://codereview.chromium.org/2345443002
Cr-Commit-Position: refs/heads/master@{#419638}

[modify] https://crrev.com/ffeb48f2494314b85493ad8fc0c54dbb1b4a44a1/chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc
[modify] https://crrev.com/ffeb48f2494314b85493ad8fc0c54dbb1b4a44a1/third_party/WebKit/Source/core/paint/FirstMeaningfulPaintDetector.cpp

Project Member

Comment 7 by bugdroid1@chromium.org, Sep 20 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/232674743920e446fb92ac8f9e124cdc9c035ed2

commit 232674743920e446fb92ac8f9e124cdc9c035ed2
Author: ksakamoto <ksakamoto@chromium.org>
Date: Tue Sep 20 02:14:34 2016

FirstMeaningfulPaint UMA: Add a new bucket for page loads aborted before FirstContentfulPaint

This will help us better understand the potential for improving the
abandonment rate of the FirstMeaningfulPaint UMA.

BUG= 632081 

Review-Url: https://codereview.chromium.org/2338153004
Cr-Commit-Position: refs/heads/master@{#419651}

[modify] https://crrev.com/232674743920e446fb92ac8f9e124cdc9c035ed2/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
[modify] https://crrev.com/232674743920e446fb92ac8f9e124cdc9c035ed2/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.h
[modify] https://crrev.com/232674743920e446fb92ac8f9e124cdc9c035ed2/tools/metrics/histograms/histograms.xml

Project Member

Comment 8 by bugdroid1@chromium.org, Oct 6 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/76351a9a523c5d103a21901b0e13046e80447ad3

commit 76351a9a523c5d103a21901b0e13046e80447ad3
Author: ksakamoto <ksakamoto@chromium.org>
Date: Thu Oct 06 01:45:01 2016

Add RAPPOR metric for sites not reporting first meaningful paint

First Meaningful Paint UMA is not recorded on >20% of page loads. This
RAPPOR metric will help identify top sites that fail to report First
Meaningful Paint.

BUG= 632081 

Review-Url: https://codereview.chromium.org/2398573002
Cr-Commit-Position: refs/heads/master@{#423387}

[modify] https://crrev.com/76351a9a523c5d103a21901b0e13046e80447ad3/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
[modify] https://crrev.com/76351a9a523c5d103a21901b0e13046e80447ad3/tools/metrics/rappor/rappor.xml

Blockedon: 658276
Blockedon: 659021
Project Member

Comment 11 by bugdroid1@chromium.org, Oct 27 2016

Labels: merge-merged-2840
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/76351a9a523c5d103a21901b0e13046e80447ad3

commit 76351a9a523c5d103a21901b0e13046e80447ad3
Author: ksakamoto <ksakamoto@chromium.org>
Date: Thu Oct 06 01:45:01 2016

Add RAPPOR metric for sites not reporting first meaningful paint

First Meaningful Paint UMA is not recorded on >20% of page loads. This
RAPPOR metric will help identify top sites that fail to report First
Meaningful Paint.

BUG= 632081 

Review-Url: https://codereview.chromium.org/2398573002
Cr-Commit-Position: refs/heads/master@{#423387}

[modify] https://crrev.com/76351a9a523c5d103a21901b0e13046e80447ad3/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
[modify] https://crrev.com/76351a9a523c5d103a21901b0e13046e80447ad3/tools/metrics/rappor/rappor.xml

Comment 12 by dimu@google.com, Nov 4 2016

Labels: -merge-merged-2840
[Automated comment] removing mislabelled merge-merged-2840
Project Member

Comment 13 by bugdroid1@chromium.org, Nov 18 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9b17cf9455970a7bfa07bc2cc26b9924f8dd3046

commit 9b17cf9455970a7bfa07bc2cc26b9924f8dd3046
Author: ksakamoto <ksakamoto@chromium.org>
Date: Fri Nov 18 07:41:48 2016

Add UMA to measure how often pages don't receive any user input

This adds UMA that records the status of possible first-meaningful-paint
signals (network stable and user input), and breakdown histograms of
current first-meaningful-paint, by the presence or absence of user input.

BUG= 632081 

Review-Url: https://codereview.chromium.org/2498923002
Cr-Commit-Position: refs/heads/master@{#433141}

[modify] https://crrev.com/9b17cf9455970a7bfa07bc2cc26b9924f8dd3046/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
[modify] https://crrev.com/9b17cf9455970a7bfa07bc2cc26b9924f8dd3046/tools/metrics/histograms/histograms.xml

Project Member

Comment 14 by bugdroid1@chromium.org, Dec 7 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/96e6c826a5129e71b7dcce2c8f137f47ed4d739f

commit 96e6c826a5129e71b7dcce2c8f137f47ed4d739f
Author: ksakamoto <ksakamoto@chromium.org>
Date: Wed Dec 07 01:00:06 2016

Do not log FirstMeaningfulPaint status if page load aborted before first paint

FirstMeaningfulPaintSignalStatus UMA from canary channel indicates that
about 32% of page loads did not reach network stable. However,
FirstMeaningfulPaintStatus histogram says it is 22%, probably because
the latter is logged only for page loads that had first paint.

This patch replaces FirstMeaningfulPaintSignalStatus with
FirstMeaningfulPaintSignalStatus2, which ignores page loads without
first paint.

BUG= 632081 

Review-Url: https://codereview.chromium.org/2548253002
Cr-Commit-Position: refs/heads/master@{#436804}

[modify] https://crrev.com/96e6c826a5129e71b7dcce2c8f137f47ed4d739f/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
[modify] https://crrev.com/96e6c826a5129e71b7dcce2c8f137f47ed4d739f/tools/metrics/histograms/histograms.xml

Components: Speed>Metrics
Status: Fixed (was: Assigned)
We aren't prioritizing further investment here, so marking Fixed.

Comment 17 by dproy@chromium.org, Mar 16 2018

Labels: -progressivewebmetrics

Sign in to add a comment