Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Issue 2885053002: Buffer timing callbacks until timing state converges. (Closed)

Created:
3 years, 7 months ago by Bryan McQuade
Modified:
3 years, 7 months ago
CC:
asvitkine+watch_chromium.org, chromium-reviews, csharrison+watch_chromium.org, loading-reviews+metrics_chromium.org, speed-metrics-reviews_chromium.org
Target Ref:
refs/heads/master
Project:
chromium
Visibility:
Public.

Description

Buffer timing callbacks until timing state converges. With our recent change to merge paint timings across all frames in a page, some of the timing ordering assumptions we make, such as parse and layout always starting before paint, can be violated. More specifically, we can observe sequences like the following: * parse starts in main frame * child frame created * child frame paints * child frame reports paint event * parent frame reports parse start event Even though the events happened in the expected order, due to cross frame buffering, we are notified of the child paint before the main frame parse start. This change addresses this issue, by buffering observer callbacks until we've received events with the expected ordering. zhenw's recent change https://codereview.chromium.org/2872793002 encountered this issue and had to be rolled back as a result. I confirmed that, with zhen's patch applied, the flaky test failed on 8 of 10 runs. With zhen's patch and this patch applied, that same test passed 10 of 10 times. BUG=722860 Review-Url: https://codereview.chromium.org/2885053002 Cr-Commit-Position: refs/heads/master@{#472199} Committed: https://chromium.googlesource.com/chromium/src/+/8a886995ef55f7c165f50a27a309761c7432bc2c

Patch Set 1 #

Patch Set 2 : fix comment #

Patch Set 3 : add test #

Total comments: 5

Patch Set 4 : address comments #

Unified diffs Side-by-side diffs Delta from patch set Stats (+159 lines, -18 lines) Patch
M chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc View 1 2 3 3 chunks +104 lines, -3 lines 0 comments Download
M chrome/browser/page_load_metrics/page_load_tracker.h View 2 chunks +5 lines, -0 lines 0 comments Download
M chrome/browser/page_load_metrics/page_load_tracker.cc View 1 3 chunks +42 lines, -15 lines 0 comments Download
M tools/metrics/histograms/histograms.xml View 1 chunk +8 lines, -0 lines 0 comments Download

Messages

Total messages: 26 (17 generated)
Bryan McQuade
jkarlin, PTAL for page_load_metrics, thanks! isherman, PTAL for histograms.xml, thanks!
3 years, 7 months ago (2017-05-16 15:38:57 UTC) #8
jkarlin
I think this warrants some tests.
3 years, 7 months ago (2017-05-16 15:40:50 UTC) #9
Bryan McQuade
On 2017/05/16 at 15:40:50, jkarlin wrote: > I think this warrants some tests. Yes, makes ...
3 years, 7 months ago (2017-05-16 16:06:41 UTC) #12
jkarlin
https://codereview.chromium.org/2885053002/diff/40001/chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc File chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc (right): https://codereview.chromium.org/2885053002/diff/40001/chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc#newcode711 chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc:711: TEST_F(MetricsWebContentsObserverTest, OutOfOrderCrossFrameTiming) { Please add a comment that links ...
3 years, 7 months ago (2017-05-16 16:23:11 UTC) #13
Bryan McQuade
https://codereview.chromium.org/2885053002/diff/40001/chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc File chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc (right): https://codereview.chromium.org/2885053002/diff/40001/chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc#newcode711 chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc:711: TEST_F(MetricsWebContentsObserverTest, OutOfOrderCrossFrameTiming) { On 2017/05/16 at 16:23:11, jkarlin wrote: ...
3 years, 7 months ago (2017-05-16 16:33:48 UTC) #15
jkarlin
lgtm https://codereview.chromium.org/2885053002/diff/40001/chrome/browser/page_load_metrics/page_load_tracker.cc File chrome/browser/page_load_metrics/page_load_tracker.cc (right): https://codereview.chromium.org/2885053002/diff/40001/chrome/browser/page_load_metrics/page_load_tracker.cc#newcode774 chrome/browser/page_load_metrics/page_load_tracker.cc:774: observer.get(), last_dispatched_merged_page_timing_, On 2017/05/16 16:33:48, Bryan McQuade wrote: ...
3 years, 7 months ago (2017-05-16 17:07:14 UTC) #17
Steven Holte
histograms lgtm
3 years, 7 months ago (2017-05-16 19:37:22 UTC) #21
commit-bot: I haz the power
CQ is trying da patch. Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2885053002/60001
3 years, 7 months ago (2017-05-16 19:46:55 UTC) #23
commit-bot: I haz the power
3 years, 7 months ago (2017-05-16 20:10:00 UTC) #26
Message was sent while issue was closed.
Committed patchset #4 (id:60001) as
https://chromium.googlesource.com/chromium/src/+/8a886995ef55f7c165f50a27a309...

Powered by Google App Engine
This is Rietveld 408576698