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

Side by Side Diff: perf_insights/perf_insights/timeline_based_measurement/rendering_frame.html

Issue 1336373002: Port rendering_stats' implementation to javascript (Closed) Base URL: https://github.com/catapult-project/catapult@master
Patch Set: Address Dan's reviews Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE HTML> 1 <!DOCTYPE HTML>
2 <!-- 2 <!--
3 Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 Copyright (c) 2015 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be 4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file. 5 found in the LICENSE file.
6 --> 6 -->
7 <link rel="import" href="/tracing/base/range.html"> 7 <link rel="import" href="/tracing/base/range.html">
8 <link rel="import" href="/tracing/extras/chrome/cc/constants.html"> 8 <link rel="import" href="/tracing/extras/chrome/cc/constants.html">
9 <link rel="import" href="/tracing/model/slice.html"> 9 <link rel="import" href="/tracing/model/slice.html">
10 10
(...skipping 15 matching lines...) Expand all
26 this.range_ = new tr.b.Range(); 26 this.range_ = new tr.b.Range();
27 this.beginMainFrame_.addBoundsToRange(this.range_); 27 this.beginMainFrame_.addBoundsToRange(this.range_);
28 this.sendBeginFrame_.addBoundsToRange(this.range_); 28 this.sendBeginFrame_.addBoundsToRange(this.range_);
29 } 29 }
30 30
31 /** 31 /**
32 * Construct RenderingFrame from a list of events. 32 * Construct RenderingFrame from a list of events.
33 * Return undefined if data are missing. 33 * Return undefined if data are missing.
34 */ 34 */
35 function createRenderingFrameFromEvents(events) { 35 function createRenderingFrameFromEvents(events) {
36 var allSendBeginFrameEvents = events.filter(function(e) { 36 var allSendBeginFrameEvents = events.filter(function(e) {
nduca 2015/09/21 19:55:15 lets file a bug to reconcile rendering stats & ren
nednguyen 2015/09/21 20:09:54 Done. https://github.com/catapult-project/catapult
37 return e.title === SEND_BEGIN_FRAME_EVENT; 37 return e.title === SEND_BEGIN_FRAME_EVENT;
38 }); 38 });
39 if (allSendBeginFrameEvents.length !== 1) 39 if (allSendBeginFrameEvents.length !== 1)
40 return undefined; 40 return undefined;
41 41
42 var allBeginMainFrameEvents = events.filter(function(e) { 42 var allBeginMainFrameEvents = events.filter(function(e) {
43 return e.title === BEGIN_MAIN_FRAME_EVENT; 43 return e.title === BEGIN_MAIN_FRAME_EVENT;
44 }); 44 });
45 if (allBeginMainFrameEvents.length === 0) 45 if (allBeginMainFrameEvents.length === 0)
46 return undefined; 46 return undefined;
(...skipping 29 matching lines...) Expand all
76 // 213: [begin_main_frame, send_begin_frame], 76 // 213: [begin_main_frame, send_begin_frame],
77 // 9312: [send_begin_frame, begin_main_frame]} 77 // 9312: [send_begin_frame, begin_main_frame]}
78 var beginFrameEventsById = {}; 78 var beginFrameEventsById = {};
79 rendererProcess.iterateAllEvents(function(event) { 79 rendererProcess.iterateAllEvents(function(event) {
80 var beginFrameId; 80 var beginFrameId;
81 if (event instanceof tr.model.Slice && 81 if (event instanceof tr.model.Slice &&
82 (event.title === SEND_BEGIN_FRAME_EVENT || 82 (event.title === SEND_BEGIN_FRAME_EVENT ||
83 event.title === BEGIN_MAIN_FRAME_EVENT)) { 83 event.title === BEGIN_MAIN_FRAME_EVENT)) {
84 beginFrameId = event.args['begin_frame_id']; 84 beginFrameId = event.args['begin_frame_id'];
85 if (beginFrameId === undefined) { 85 if (beginFrameId === undefined) {
86 throw new Error( 86 var err = new Error(
87 'Event is missing a beginFrameId.'); 87 'Event is missing a beginFrameId.');
88 throw err;
dsinclair 2015/09/22 16:08:31 No need to store err into a variable, just throw n
88 } 89 }
89 } 90 }
90 beginFrameEventsById[beginFrameId] = 91 beginFrameEventsById[beginFrameId] =
91 beginFrameEventsById[beginFrameId] || []; 92 beginFrameEventsById[beginFrameId] || [];
92 beginFrameEventsById[beginFrameId].push(event); 93 beginFrameEventsById[beginFrameId].push(event);
93 }); 94 });
94 95
95 // Now, create RenderingFrames for events wherever possible. 96 // Now, create RenderingFrames for events wherever possible.
96 var frames = []; 97 var frames = [];
97 for (var id in beginFrameEventsById) { 98 for (var id in beginFrameEventsById) {
98 var events = beginFrameEventsById[id]; 99 var events = beginFrameEventsById[id];
99 var frame = createRenderingFrameFromEvents(events); 100 var frame = createRenderingFrameFromEvents(events);
100 if (frame === undefined) 101 if (frame === undefined)
101 continue; 102 continue;
102 if (frame.range.intersectsRange(timelineRange)) 103 if (frame.range.intersectsRange(timelineRange))
103 frames.push(frame); 104 frames.push(frame);
104 frames.sort(function(a, b) { 105 frames.sort(function(a, b) {
105 return a.range.min - b.range.min; 106 return a.range.min - b.range.min;
106 }); 107 });
107 } 108 }
108 109
109 return frames; 110 return frames;
110 } 111 }
111 112
112 return { 113 return {
113 RenderingFrame: RenderingFrame 114 RenderingFrame: RenderingFrame
114 }; 115 };
115 }); 116 });
116 </script> 117 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698