Index: tracing/tracing/metrics/system_health/first_paint_metric.html |
diff --git a/tracing/tracing/metrics/system_health/first_paint_metric.html b/tracing/tracing/metrics/system_health/first_paint_metric.html |
index f2edb908f076cba6d567a5188e286dcdbde51199..be10c03b9966b5e370ba3d4bd87b307b90d4a40d 100644 |
--- a/tracing/tracing/metrics/system_health/first_paint_metric.html |
+++ b/tracing/tracing/metrics/system_health/first_paint_metric.html |
@@ -43,20 +43,16 @@ tr.exportTo('tr.metrics.sh', function() { |
*/ |
function NavigationStartFinder(rendererHelper) { |
this.navigationStartsForFrameId_ = {}; |
- rendererHelper.mainThread.sliceGroup.iterateAllEventsInThisContainer( |
- () => true, function(ev) { |
- if (ev.category !== 'blink.user_timing' || |
- ev.title !== 'navigationStart') |
- return; |
- |
- var frameIdRef = ev.args['frame']; |
- var list = this.navigationStartsForFrameId_[frameIdRef]; |
- if (list === undefined) { |
- this.navigationStartsForFrameId_[frameIdRef] = list = []; |
- } |
- list.unshift(ev); |
- }, |
- this); |
+ for (var ev of rendererHelper.mainThread.sliceGroup.childEvents()) { |
+ if (ev.category !== 'blink.user_timing' || |
+ ev.title !== 'navigationStart') |
+ continue; |
+ var frameIdRef = ev.args['frame']; |
+ var list = this.navigationStartsForFrameId_[frameIdRef]; |
+ if (list === undefined) |
+ this.navigationStartsForFrameId_[frameIdRef] = list = []; |
+ list.unshift(ev); |
+ } |
} |
NavigationStartFinder.prototype = { |
@@ -67,15 +63,13 @@ tr.exportTo('tr.metrics.sh', function() { |
frameIdRef + '"'); |
return undefined; |
} |
- |
var eventBeforeTimestamp; |
- list.forEach(function(ev) { |
+ for (var ev of list) { |
if (ev.start > ts) |
- return; |
- |
+ continue; |
if (eventBeforeTimestamp === undefined) |
eventBeforeTimestamp = ev; |
- }, this); |
+ } |
if (eventBeforeTimestamp === undefined) { |
console.warn('Failed to find navigationStartEvent.'); |
return undefined; |
@@ -90,18 +84,15 @@ tr.exportTo('tr.metrics.sh', function() { |
*/ |
function PaintFinder(rendererHelper) { |
this.paintsForFrameId_ = {}; |
- rendererHelper.mainThread.sliceGroup.iterateAllEventsInThisContainer( |
- () => true, function(ev) { |
- if (ev.category !== 'devtools.timeline' || ev.title !== 'Paint') |
- return; |
- |
- var frameIdRef = ev.args['data']['frame']; |
- var list = this.paintsForFrameId_[frameIdRef]; |
- if (list === undefined) |
- this.paintsForFrameId_[frameIdRef] = list = []; |
- list.push(ev); |
- }, |
- this); |
+ for (var ev of rendererHelper.mainThread.sliceGroup.childEvents()) { |
+ if (ev.category !== 'devtools.timeline' || ev.title !== 'Paint') |
+ continue; |
+ var frameIdRef = ev.args['data']['frame']; |
+ var list = this.paintsForFrameId_[frameIdRef]; |
+ if (list === undefined) |
+ this.paintsForFrameId_[frameIdRef] = list = []; |
+ list.push(ev); |
+ } |
} |
PaintFinder.prototype = { |
@@ -111,13 +102,12 @@ tr.exportTo('tr.metrics.sh', function() { |
return undefined; |
var eventAfterTimestamp; |
- list.forEach(function(ev) { |
+ for (var ev of list) { |
if (ev.start < ts) |
- return; |
- |
+ continue; |
if (eventAfterTimestamp === undefined) |
eventAfterTimestamp = ev; |
- }, this); |
+ } |
return eventAfterTimestamp; |
} |
}; |
@@ -152,15 +142,16 @@ tr.exportTo('tr.metrics.sh', function() { |
'Chrome.'); |
return undefined; |
} |
- frameLoaderInstances.forEach(function(instance) { |
+ |
+ var snapshot; |
+ for (var instance of frameLoaderInstances) { |
if (!instance.isAliveAt(ts)) |
- return; |
+ continue; |
var maybeSnapshot = instance.getSnapshotAt(ts); |
if (frameIdRef !== maybeSnapshot.args['frame']['id_ref']) |
- return; |
- |
+ continue; |
snapshot = maybeSnapshot; |
- }, this); |
+ } |
return snapshot; |
} |
@@ -168,14 +159,11 @@ tr.exportTo('tr.metrics.sh', function() { |
function findAllUserTimingEvents(rendererHelper, title) { |
var targetEvents = []; |
- rendererHelper.process.iterateAllEvents( |
- function(ev) { |
- if (ev.category !== 'blink.user_timing' || |
- ev.title !== title) |
- return; |
- |
- targetEvents.push(ev); |
- }, this); |
+ for (var ev of rendererHelper.process.getDescendantEvents()) { |
+ if (ev.category !== 'blink.user_timing' || ev.title !== title) |
+ continue; |
+ targetEvents.push(ev); |
+ } |
return targetEvents; |
} |
@@ -184,27 +172,26 @@ tr.exportTo('tr.metrics.sh', function() { |
var isTelemetryInternalEvent = |
prepareTelemetryInternalEventPredicate(rendererHelper); |
var layoutsForFrameId = {}; |
- rendererHelper.process.iterateAllEvents( |
- function(ev) { |
- if (ev.category !== |
- 'blink,benchmark,disabled-by-default-blink.debug.layout' || |
- ev.title !== 'FrameView::performLayout') |
- return; |
- if (isTelemetryInternalEvent(ev)) |
- return; |
- if (ev.args.counters === undefined) { |
- console.warn('Ignoring FrameView::performLayout event with no ' + |
- 'counters arg (END event is missing).'); |
- return; |
- } |
- var frameIdRef = ev.args.counters['frame']; |
- if (frameIdRef === undefined) |
- return; |
- var list = layoutsForFrameId[frameIdRef]; |
- if (list === undefined) |
- layoutsForFrameId[frameIdRef] = list = []; |
- list.push(ev); |
- }, this); |
+ for (var ev of rendererHelper.process.getDescendantEvents()) { |
+ if (ev.category !== |
+ 'blink,benchmark,disabled-by-default-blink.debug.layout' || |
+ ev.title !== 'FrameView::performLayout') |
+ continue; |
+ if (isTelemetryInternalEvent(ev)) |
+ continue; |
+ if (ev.args.counters === undefined) { |
+ console.warn('Ignoring FrameView::performLayout event with no ' + |
+ 'counters arg (END event is missing).'); |
+ continue; |
+ } |
+ var frameIdRef = ev.args.counters['frame']; |
+ if (frameIdRef === undefined) |
+ continue; |
+ var list = layoutsForFrameId[frameIdRef]; |
+ if (list === undefined) |
+ layoutsForFrameId[frameIdRef] = list = []; |
+ list.push(ev); |
+ } |
return layoutsForFrameId; |
} |
@@ -212,8 +199,8 @@ tr.exportTo('tr.metrics.sh', function() { |
var ignoreRegions = []; |
var internalRegionStart; |
- rendererHelper.mainThread.asyncSliceGroup.iterateAllEventsInThisContainer( |
- () => true, function(slice) { |
+ for (var slice of |
+ rendererHelper.mainThread.asyncSliceGroup.getDescendantEvents()) { |
if (!!slice.title.match(/^telemetry\.internal\.[^.]*\.start$/)) |
internalRegionStart = slice.start; |
if (!!slice.title.match(/^telemetry\.internal\.[^.]*\.end$/)) { |
@@ -221,13 +208,12 @@ tr.exportTo('tr.metrics.sh', function() { |
timedEvent.duration = slice.end - internalRegionStart; |
ignoreRegions.push(timedEvent); |
} |
- }, this); |
+ } |
return function isTelemetryInternalEvent(slice) { |
- for (var i = 0; i < ignoreRegions.length; ++ i) { |
- if (ignoreRegions[i].bounds(slice)) |
+ for (var region of ignoreRegions) |
+ if (region.bounds(slice)) |
return true; |
- } |
return false; |
} |
} |
@@ -262,34 +248,34 @@ tr.exportTo('tr.metrics.sh', function() { |
prepareTelemetryInternalEventPredicate(rendererHelper); |
var navigationStartFinder = new NavigationStartFinder(rendererHelper); |
- METRICS.forEach(function(metric) { |
+ for (var metric of METRICS) { |
var histogram = createHistogram(); |
var targetEvents = findAllUserTimingEvents(rendererHelper, metric.title); |
- targetEvents = targetEvents.filter( |
- (ev) => !isTelemetryInternalEvent(ev)); |
- targetEvents.forEach(function(ev) { |
+ for (var ev of targetEvents) { |
+ if (isTelemetryInternalEvent(ev)) |
+ continue; |
var frameIdRef = ev.args['frame']; |
var snapshot = |
findFrameLoaderSnapshotAt(rendererHelper, frameIdRef, ev.start); |
if (snapshot === undefined || !snapshot.args.isLoadingMainFrame) |
- return; |
+ continue; |
var url = snapshot.args.documentLoaderURL; |
if (shouldIgnoreURL(url)) |
- return; |
+ continue; |
var navigationStartEvent = navigationStartFinder. |
findNavigationStartEventForFrameBeforeTimestamp(frameIdRef, ev.start); |
// Ignore layout w/o preceding navigationStart, as they are not |
// attributed to any time-to-X metric. |
if (navigationStartEvent === undefined) |
- return; |
+ continue; |
var timeToEvent = ev.start - navigationStartEvent.start; |
- histogram.add(timeToEvent, {url: url}); |
- }, this); |
+ histogram.add(timeToEvent, new tr.v.d.Generic({url: url})); |
+ } |
values.addValue(new tr.v.NumericValue( |
metric.valueName, histogram, |
{ description: metric.description })); |
- }, this); |
+ } |
} |
/** |
@@ -362,7 +348,8 @@ tr.exportTo('tr.metrics.sh', function() { |
return; |
} |
var timeToFirstMeaningfulPaint = paintEvent.start - navigationStart.start; |
- firstMeaningfulPaintHistogram.add(timeToFirstMeaningfulPaint, {url: url}); |
+ firstMeaningfulPaintHistogram.add(timeToFirstMeaningfulPaint, |
+ new tr.v.d.Generic({url: url})); |
} |
var layoutsForFrameId = findAllLayoutEvents(rendererHelper); |
@@ -375,13 +362,13 @@ tr.exportTo('tr.metrics.sh', function() { |
// Iterate over the layout events, remembering one with largest |
// significance. |
- layoutsForFrameId[frameIdRef].forEach(function(ev) { |
+ for (var ev of layoutsForFrameId[frameIdRef]) { |
var navigationStartForThisLayout = navigationStartFinder. |
findNavigationStartEventForFrameBeforeTimestamp(frameIdRef, ev.start); |
// Ignore layout w/o preceding navigationStart, as they are not |
// attributed to any TTFMP. |
if (navigationStartForThisLayout === undefined) |
- return; |
+ continue; |
if (navigationStart !== navigationStartForThisLayout) { |
// New navigation is found. Compute TTFMP for current navigation, and |
@@ -410,7 +397,7 @@ tr.exportTo('tr.metrics.sh', function() { |
mostSignificantLayout = ev; |
} |
} |
- }, this); |
+ } |
// Emit TTFMP for the last navigation. |
if (mostSignificantLayout !== undefined) |