Add First Meaningful Paint Progressive Web Metric. Some discussion here: https://docs.google.com/document/d/1BR94tJdZLsin5poeet0XoTW60M0SjvOJQttKT-JK8HI/edit#heading=h.tdqghbi9ia5d
Issue 507790 has been merged into this issue.
CL https://codereview.chromium.org/2039363003
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
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
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
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
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
[Automated comment] removing mislabelled merge-merged-2840
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
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
We aren't prioritizing further investment here, so marking Fixed.
Comment 1 by bmcquade@chromium.org
, Jul 28 2016