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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/timeline/TimelineUIUtils.js

Issue 2493373002: DevTools: rename WebInspector into modules. (Closed)
Patch Set: for bots Created 4 years, 1 month 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 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * Copyright (C) 2012 Intel Inc. All rights reserved. 3 * Copyright (C) 2012 Intel Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 14 matching lines...) Expand all
25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31 31
32 /** 32 /**
33 * @unrestricted 33 * @unrestricted
34 */ 34 */
35 WebInspector.TimelineUIUtils = class { 35 Timeline.TimelineUIUtils = class {
36 /** 36 /**
37 * @return {!Object.<string, !WebInspector.TimelineRecordStyle>} 37 * @return {!Object.<string, !Timeline.TimelineRecordStyle>}
38 */ 38 */
39 static _initEventStyles() { 39 static _initEventStyles() {
40 if (WebInspector.TimelineUIUtils._eventStylesMap) 40 if (Timeline.TimelineUIUtils._eventStylesMap)
41 return WebInspector.TimelineUIUtils._eventStylesMap; 41 return Timeline.TimelineUIUtils._eventStylesMap;
42 42
43 var recordTypes = WebInspector.TimelineModel.RecordType; 43 var recordTypes = TimelineModel.TimelineModel.RecordType;
44 var categories = WebInspector.TimelineUIUtils.categories(); 44 var categories = Timeline.TimelineUIUtils.categories();
45 45
46 var eventStyles = {}; 46 var eventStyles = {};
47 eventStyles[recordTypes.Task] = 47 eventStyles[recordTypes.Task] =
48 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Task'), cate gories['other']); 48 new Timeline.TimelineRecordStyle(Common.UIString('Task'), categories['ot her']);
49 eventStyles[recordTypes.Program] = 49 eventStyles[recordTypes.Program] =
50 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Other'), cat egories['other']); 50 new Timeline.TimelineRecordStyle(Common.UIString('Other'), categories['o ther']);
51 eventStyles[recordTypes.Animation] = 51 eventStyles[recordTypes.Animation] =
52 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Animation'), categories['rendering']); 52 new Timeline.TimelineRecordStyle(Common.UIString('Animation'), categorie s['rendering']);
53 eventStyles[recordTypes.EventDispatch] = 53 eventStyles[recordTypes.EventDispatch] =
54 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Event'), cat egories['scripting']); 54 new Timeline.TimelineRecordStyle(Common.UIString('Event'), categories['s cripting']);
55 eventStyles[recordTypes.RequestMainThreadFrame] = new WebInspector.TimelineR ecordStyle( 55 eventStyles[recordTypes.RequestMainThreadFrame] = new Timeline.TimelineRecor dStyle(
56 WebInspector.UIString('Request Main Thread Frame'), categories['renderin g'], true); 56 Common.UIString('Request Main Thread Frame'), categories['rendering'], t rue);
57 eventStyles[recordTypes.BeginFrame] = 57 eventStyles[recordTypes.BeginFrame] =
58 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Frame Start' ), categories['rendering'], true); 58 new Timeline.TimelineRecordStyle(Common.UIString('Frame Start'), categor ies['rendering'], true);
59 eventStyles[recordTypes.BeginMainThreadFrame] = new WebInspector.TimelineRec ordStyle( 59 eventStyles[recordTypes.BeginMainThreadFrame] = new Timeline.TimelineRecordS tyle(
60 WebInspector.UIString('Frame Start (main thread)'), categories['renderin g'], true); 60 Common.UIString('Frame Start (main thread)'), categories['rendering'], t rue);
61 eventStyles[recordTypes.DrawFrame] = 61 eventStyles[recordTypes.DrawFrame] =
62 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Draw Frame') , categories['rendering'], true); 62 new Timeline.TimelineRecordStyle(Common.UIString('Draw Frame'), categori es['rendering'], true);
63 eventStyles[recordTypes.HitTest] = 63 eventStyles[recordTypes.HitTest] =
64 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Hit Test'), categories['rendering']); 64 new Timeline.TimelineRecordStyle(Common.UIString('Hit Test'), categories ['rendering']);
65 eventStyles[recordTypes.ScheduleStyleRecalculation] = new WebInspector.Timel ineRecordStyle( 65 eventStyles[recordTypes.ScheduleStyleRecalculation] = new Timeline.TimelineR ecordStyle(
66 WebInspector.UIString('Schedule Style Recalculation'), categories['rende ring'], true); 66 Common.UIString('Schedule Style Recalculation'), categories['rendering'] , true);
67 eventStyles[recordTypes.RecalculateStyles] = 67 eventStyles[recordTypes.RecalculateStyles] =
68 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Recalculate Style'), categories['rendering']); 68 new Timeline.TimelineRecordStyle(Common.UIString('Recalculate Style'), c ategories['rendering']);
69 eventStyles[recordTypes.UpdateLayoutTree] = 69 eventStyles[recordTypes.UpdateLayoutTree] =
70 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Recalculate Style'), categories['rendering']); 70 new Timeline.TimelineRecordStyle(Common.UIString('Recalculate Style'), c ategories['rendering']);
71 eventStyles[recordTypes.InvalidateLayout] = 71 eventStyles[recordTypes.InvalidateLayout] =
72 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Invalidate L ayout'), categories['rendering'], true); 72 new Timeline.TimelineRecordStyle(Common.UIString('Invalidate Layout'), c ategories['rendering'], true);
73 eventStyles[recordTypes.Layout] = 73 eventStyles[recordTypes.Layout] =
74 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Layout'), ca tegories['rendering']); 74 new Timeline.TimelineRecordStyle(Common.UIString('Layout'), categories[' rendering']);
75 eventStyles[recordTypes.PaintSetup] = 75 eventStyles[recordTypes.PaintSetup] =
76 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Paint Setup' ), categories['painting']); 76 new Timeline.TimelineRecordStyle(Common.UIString('Paint Setup'), categor ies['painting']);
77 eventStyles[recordTypes.PaintImage] = 77 eventStyles[recordTypes.PaintImage] =
78 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Paint Image' ), categories['painting'], true); 78 new Timeline.TimelineRecordStyle(Common.UIString('Paint Image'), categor ies['painting'], true);
79 eventStyles[recordTypes.UpdateLayer] = 79 eventStyles[recordTypes.UpdateLayer] =
80 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Update Layer '), categories['painting'], true); 80 new Timeline.TimelineRecordStyle(Common.UIString('Update Layer'), catego ries['painting'], true);
81 eventStyles[recordTypes.UpdateLayerTree] = 81 eventStyles[recordTypes.UpdateLayerTree] =
82 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Update Layer Tree'), categories['rendering']); 82 new Timeline.TimelineRecordStyle(Common.UIString('Update Layer Tree'), c ategories['rendering']);
83 eventStyles[recordTypes.Paint] = 83 eventStyles[recordTypes.Paint] =
84 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Paint'), cat egories['painting']); 84 new Timeline.TimelineRecordStyle(Common.UIString('Paint'), categories['p ainting']);
85 eventStyles[recordTypes.RasterTask] = 85 eventStyles[recordTypes.RasterTask] =
86 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Rasterize Pa int'), categories['painting']); 86 new Timeline.TimelineRecordStyle(Common.UIString('Rasterize Paint'), cat egories['painting']);
87 eventStyles[recordTypes.ScrollLayer] = 87 eventStyles[recordTypes.ScrollLayer] =
88 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Scroll'), ca tegories['rendering']); 88 new Timeline.TimelineRecordStyle(Common.UIString('Scroll'), categories[' rendering']);
89 eventStyles[recordTypes.CompositeLayers] = 89 eventStyles[recordTypes.CompositeLayers] =
90 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Composite La yers'), categories['painting']); 90 new Timeline.TimelineRecordStyle(Common.UIString('Composite Layers'), ca tegories['painting']);
91 eventStyles[recordTypes.ParseHTML] = 91 eventStyles[recordTypes.ParseHTML] =
92 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Parse HTML') , categories['loading']); 92 new Timeline.TimelineRecordStyle(Common.UIString('Parse HTML'), categori es['loading']);
93 eventStyles[recordTypes.ParseAuthorStyleSheet] = 93 eventStyles[recordTypes.ParseAuthorStyleSheet] =
94 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Parse Styles heet'), categories['loading']); 94 new Timeline.TimelineRecordStyle(Common.UIString('Parse Stylesheet'), ca tegories['loading']);
95 eventStyles[recordTypes.TimerInstall] = 95 eventStyles[recordTypes.TimerInstall] =
96 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Install Time r'), categories['scripting']); 96 new Timeline.TimelineRecordStyle(Common.UIString('Install Timer'), categ ories['scripting']);
97 eventStyles[recordTypes.TimerRemove] = 97 eventStyles[recordTypes.TimerRemove] =
98 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Remove Timer '), categories['scripting']); 98 new Timeline.TimelineRecordStyle(Common.UIString('Remove Timer'), catego ries['scripting']);
99 eventStyles[recordTypes.TimerFire] = 99 eventStyles[recordTypes.TimerFire] =
100 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Timer Fired' ), categories['scripting']); 100 new Timeline.TimelineRecordStyle(Common.UIString('Timer Fired'), categor ies['scripting']);
101 eventStyles[recordTypes.XHRReadyStateChange] = 101 eventStyles[recordTypes.XHRReadyStateChange] =
102 new WebInspector.TimelineRecordStyle(WebInspector.UIString('XHR Ready St ate Change'), categories['scripting']); 102 new Timeline.TimelineRecordStyle(Common.UIString('XHR Ready State Change '), categories['scripting']);
103 eventStyles[recordTypes.XHRLoad] = 103 eventStyles[recordTypes.XHRLoad] =
104 new WebInspector.TimelineRecordStyle(WebInspector.UIString('XHR Load'), categories['scripting']); 104 new Timeline.TimelineRecordStyle(Common.UIString('XHR Load'), categories ['scripting']);
105 eventStyles[recordTypes.CompileScript] = 105 eventStyles[recordTypes.CompileScript] =
106 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Compile Scri pt'), categories['scripting']); 106 new Timeline.TimelineRecordStyle(Common.UIString('Compile Script'), cate gories['scripting']);
107 eventStyles[recordTypes.EvaluateScript] = 107 eventStyles[recordTypes.EvaluateScript] =
108 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Evaluate Scr ipt'), categories['scripting']); 108 new Timeline.TimelineRecordStyle(Common.UIString('Evaluate Script'), cat egories['scripting']);
109 eventStyles[recordTypes.ParseScriptOnBackground] = 109 eventStyles[recordTypes.ParseScriptOnBackground] =
110 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Parse Script '), categories['scripting']); 110 new Timeline.TimelineRecordStyle(Common.UIString('Parse Script'), catego ries['scripting']);
111 eventStyles[recordTypes.MarkLoad] = 111 eventStyles[recordTypes.MarkLoad] =
112 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Load event') , categories['scripting'], true); 112 new Timeline.TimelineRecordStyle(Common.UIString('Load event'), categori es['scripting'], true);
113 eventStyles[recordTypes.MarkDOMContent] = new WebInspector.TimelineRecordSty le( 113 eventStyles[recordTypes.MarkDOMContent] = new Timeline.TimelineRecordStyle(
114 WebInspector.UIString('DOMContentLoaded event'), categories['scripting'] , true); 114 Common.UIString('DOMContentLoaded event'), categories['scripting'], true );
115 eventStyles[recordTypes.MarkFirstPaint] = 115 eventStyles[recordTypes.MarkFirstPaint] =
116 new WebInspector.TimelineRecordStyle(WebInspector.UIString('First paint' ), categories['painting'], true); 116 new Timeline.TimelineRecordStyle(Common.UIString('First paint'), categor ies['painting'], true);
117 eventStyles[recordTypes.TimeStamp] = 117 eventStyles[recordTypes.TimeStamp] =
118 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Timestamp'), categories['scripting']); 118 new Timeline.TimelineRecordStyle(Common.UIString('Timestamp'), categorie s['scripting']);
119 eventStyles[recordTypes.ConsoleTime] = 119 eventStyles[recordTypes.ConsoleTime] =
120 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Console Time '), categories['scripting']); 120 new Timeline.TimelineRecordStyle(Common.UIString('Console Time'), catego ries['scripting']);
121 eventStyles[recordTypes.UserTiming] = 121 eventStyles[recordTypes.UserTiming] =
122 new WebInspector.TimelineRecordStyle(WebInspector.UIString('User Timing' ), categories['scripting']); 122 new Timeline.TimelineRecordStyle(Common.UIString('User Timing'), categor ies['scripting']);
123 eventStyles[recordTypes.ResourceSendRequest] = 123 eventStyles[recordTypes.ResourceSendRequest] =
124 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Send Request '), categories['loading']); 124 new Timeline.TimelineRecordStyle(Common.UIString('Send Request'), catego ries['loading']);
125 eventStyles[recordTypes.ResourceReceiveResponse] = 125 eventStyles[recordTypes.ResourceReceiveResponse] =
126 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Receive Resp onse'), categories['loading']); 126 new Timeline.TimelineRecordStyle(Common.UIString('Receive Response'), ca tegories['loading']);
127 eventStyles[recordTypes.ResourceFinish] = 127 eventStyles[recordTypes.ResourceFinish] =
128 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Finish Loadi ng'), categories['loading']); 128 new Timeline.TimelineRecordStyle(Common.UIString('Finish Loading'), cate gories['loading']);
129 eventStyles[recordTypes.ResourceReceivedData] = 129 eventStyles[recordTypes.ResourceReceivedData] =
130 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Receive Data '), categories['loading']); 130 new Timeline.TimelineRecordStyle(Common.UIString('Receive Data'), catego ries['loading']);
131 eventStyles[recordTypes.RunMicrotasks] = 131 eventStyles[recordTypes.RunMicrotasks] =
132 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Run Microtas ks'), categories['scripting']); 132 new Timeline.TimelineRecordStyle(Common.UIString('Run Microtasks'), cate gories['scripting']);
133 eventStyles[recordTypes.FunctionCall] = 133 eventStyles[recordTypes.FunctionCall] =
134 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Function Cal l'), categories['scripting']); 134 new Timeline.TimelineRecordStyle(Common.UIString('Function Call'), categ ories['scripting']);
135 eventStyles[recordTypes.GCEvent] = 135 eventStyles[recordTypes.GCEvent] =
136 new WebInspector.TimelineRecordStyle(WebInspector.UIString('GC Event'), categories['scripting']); 136 new Timeline.TimelineRecordStyle(Common.UIString('GC Event'), categories ['scripting']);
137 eventStyles[recordTypes.MajorGC] = 137 eventStyles[recordTypes.MajorGC] =
138 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Major GC'), categories['scripting']); 138 new Timeline.TimelineRecordStyle(Common.UIString('Major GC'), categories ['scripting']);
139 eventStyles[recordTypes.MinorGC] = 139 eventStyles[recordTypes.MinorGC] =
140 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Minor GC'), categories['scripting']); 140 new Timeline.TimelineRecordStyle(Common.UIString('Minor GC'), categories ['scripting']);
141 eventStyles[recordTypes.JSFrame] = 141 eventStyles[recordTypes.JSFrame] =
142 new WebInspector.TimelineRecordStyle(WebInspector.UIString('JS Frame'), categories['scripting']); 142 new Timeline.TimelineRecordStyle(Common.UIString('JS Frame'), categories ['scripting']);
143 eventStyles[recordTypes.RequestAnimationFrame] = 143 eventStyles[recordTypes.RequestAnimationFrame] =
144 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Request Anim ation Frame'), categories['scripting']); 144 new Timeline.TimelineRecordStyle(Common.UIString('Request Animation Fram e'), categories['scripting']);
145 eventStyles[recordTypes.CancelAnimationFrame] = 145 eventStyles[recordTypes.CancelAnimationFrame] =
146 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Cancel Anima tion Frame'), categories['scripting']); 146 new Timeline.TimelineRecordStyle(Common.UIString('Cancel Animation Frame '), categories['scripting']);
147 eventStyles[recordTypes.FireAnimationFrame] = 147 eventStyles[recordTypes.FireAnimationFrame] =
148 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Animation Fr ame Fired'), categories['scripting']); 148 new Timeline.TimelineRecordStyle(Common.UIString('Animation Frame Fired' ), categories['scripting']);
149 eventStyles[recordTypes.RequestIdleCallback] = 149 eventStyles[recordTypes.RequestIdleCallback] =
150 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Request Idle Callback'), categories['scripting']); 150 new Timeline.TimelineRecordStyle(Common.UIString('Request Idle Callback' ), categories['scripting']);
151 eventStyles[recordTypes.CancelIdleCallback] = 151 eventStyles[recordTypes.CancelIdleCallback] =
152 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Cancel Idle Callback'), categories['scripting']); 152 new Timeline.TimelineRecordStyle(Common.UIString('Cancel Idle Callback') , categories['scripting']);
153 eventStyles[recordTypes.FireIdleCallback] = 153 eventStyles[recordTypes.FireIdleCallback] =
154 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Fire Idle Ca llback'), categories['scripting']); 154 new Timeline.TimelineRecordStyle(Common.UIString('Fire Idle Callback'), categories['scripting']);
155 eventStyles[recordTypes.WebSocketCreate] = 155 eventStyles[recordTypes.WebSocketCreate] =
156 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Create WebSo cket'), categories['scripting']); 156 new Timeline.TimelineRecordStyle(Common.UIString('Create WebSocket'), ca tegories['scripting']);
157 eventStyles[recordTypes.WebSocketSendHandshakeRequest] = new WebInspector.Ti melineRecordStyle( 157 eventStyles[recordTypes.WebSocketSendHandshakeRequest] = new Timeline.Timeli neRecordStyle(
158 WebInspector.UIString('Send WebSocket Handshake'), categories['scripting ']); 158 Common.UIString('Send WebSocket Handshake'), categories['scripting']);
159 eventStyles[recordTypes.WebSocketReceiveHandshakeResponse] = new WebInspecto r.TimelineRecordStyle( 159 eventStyles[recordTypes.WebSocketReceiveHandshakeResponse] = new Timeline.Ti melineRecordStyle(
160 WebInspector.UIString('Receive WebSocket Handshake'), categories['script ing']); 160 Common.UIString('Receive WebSocket Handshake'), categories['scripting']) ;
161 eventStyles[recordTypes.WebSocketDestroy] = 161 eventStyles[recordTypes.WebSocketDestroy] =
162 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Destroy WebS ocket'), categories['scripting']); 162 new Timeline.TimelineRecordStyle(Common.UIString('Destroy WebSocket'), c ategories['scripting']);
163 eventStyles[recordTypes.EmbedderCallback] = 163 eventStyles[recordTypes.EmbedderCallback] =
164 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Embedder Cal lback'), categories['scripting']); 164 new Timeline.TimelineRecordStyle(Common.UIString('Embedder Callback'), c ategories['scripting']);
165 eventStyles[recordTypes.DecodeImage] = 165 eventStyles[recordTypes.DecodeImage] =
166 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Image Decode '), categories['painting']); 166 new Timeline.TimelineRecordStyle(Common.UIString('Image Decode'), catego ries['painting']);
167 eventStyles[recordTypes.ResizeImage] = 167 eventStyles[recordTypes.ResizeImage] =
168 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Image Resize '), categories['painting']); 168 new Timeline.TimelineRecordStyle(Common.UIString('Image Resize'), catego ries['painting']);
169 eventStyles[recordTypes.GPUTask] = 169 eventStyles[recordTypes.GPUTask] =
170 new WebInspector.TimelineRecordStyle(WebInspector.UIString('GPU'), categ ories['gpu']); 170 new Timeline.TimelineRecordStyle(Common.UIString('GPU'), categories['gpu ']);
171 eventStyles[recordTypes.LatencyInfo] = 171 eventStyles[recordTypes.LatencyInfo] =
172 new WebInspector.TimelineRecordStyle(WebInspector.UIString('Input Latenc y'), categories['scripting']); 172 new Timeline.TimelineRecordStyle(Common.UIString('Input Latency'), categ ories['scripting']);
173 173
174 eventStyles[recordTypes.GCIdleLazySweep] = 174 eventStyles[recordTypes.GCIdleLazySweep] =
175 new WebInspector.TimelineRecordStyle(WebInspector.UIString('DOM GC'), ca tegories['scripting']); 175 new Timeline.TimelineRecordStyle(Common.UIString('DOM GC'), categories[' scripting']);
176 eventStyles[recordTypes.GCCompleteSweep] = 176 eventStyles[recordTypes.GCCompleteSweep] =
177 new WebInspector.TimelineRecordStyle(WebInspector.UIString('DOM GC'), ca tegories['scripting']); 177 new Timeline.TimelineRecordStyle(Common.UIString('DOM GC'), categories[' scripting']);
178 eventStyles[recordTypes.GCCollectGarbage] = 178 eventStyles[recordTypes.GCCollectGarbage] =
179 new WebInspector.TimelineRecordStyle(WebInspector.UIString('DOM GC'), ca tegories['scripting']); 179 new Timeline.TimelineRecordStyle(Common.UIString('DOM GC'), categories[' scripting']);
180 180
181 WebInspector.TimelineUIUtils._eventStylesMap = eventStyles; 181 Timeline.TimelineUIUtils._eventStylesMap = eventStyles;
182 return eventStyles; 182 return eventStyles;
183 } 183 }
184 184
185 /** 185 /**
186 * @param {!WebInspector.TimelineIRModel.InputEvents} inputEventType 186 * @param {!TimelineModel.TimelineIRModel.InputEvents} inputEventType
187 * @return {?string} 187 * @return {?string}
188 */ 188 */
189 static inputEventDisplayName(inputEventType) { 189 static inputEventDisplayName(inputEventType) {
190 if (!WebInspector.TimelineUIUtils._inputEventToDisplayName) { 190 if (!Timeline.TimelineUIUtils._inputEventToDisplayName) {
191 var inputEvent = WebInspector.TimelineIRModel.InputEvents; 191 var inputEvent = TimelineModel.TimelineIRModel.InputEvents;
192 192
193 /** @type {!Map<!WebInspector.TimelineIRModel.InputEvents, string>} */ 193 /** @type {!Map<!TimelineModel.TimelineIRModel.InputEvents, string>} */
194 WebInspector.TimelineUIUtils._inputEventToDisplayName = new Map([ 194 Timeline.TimelineUIUtils._inputEventToDisplayName = new Map([
195 [inputEvent.Char, WebInspector.UIString('Key Character')], 195 [inputEvent.Char, Common.UIString('Key Character')],
196 [inputEvent.KeyDown, WebInspector.UIString('Key Down')], 196 [inputEvent.KeyDown, Common.UIString('Key Down')],
197 [inputEvent.KeyDownRaw, WebInspector.UIString('Key Down')], 197 [inputEvent.KeyDownRaw, Common.UIString('Key Down')],
198 [inputEvent.KeyUp, WebInspector.UIString('Key Up')], 198 [inputEvent.KeyUp, Common.UIString('Key Up')],
199 [inputEvent.Click, WebInspector.UIString('Click')], 199 [inputEvent.Click, Common.UIString('Click')],
200 [inputEvent.ContextMenu, WebInspector.UIString('Context Menu')], 200 [inputEvent.ContextMenu, Common.UIString('Context Menu')],
201 [inputEvent.MouseDown, WebInspector.UIString('Mouse Down')], 201 [inputEvent.MouseDown, Common.UIString('Mouse Down')],
202 [inputEvent.MouseMove, WebInspector.UIString('Mouse Move')], 202 [inputEvent.MouseMove, Common.UIString('Mouse Move')],
203 [inputEvent.MouseUp, WebInspector.UIString('Mouse Up')], 203 [inputEvent.MouseUp, Common.UIString('Mouse Up')],
204 [inputEvent.MouseWheel, WebInspector.UIString('Mouse Wheel')], 204 [inputEvent.MouseWheel, Common.UIString('Mouse Wheel')],
205 [inputEvent.ScrollBegin, WebInspector.UIString('Scroll Begin')], 205 [inputEvent.ScrollBegin, Common.UIString('Scroll Begin')],
206 [inputEvent.ScrollEnd, WebInspector.UIString('Scroll End')], 206 [inputEvent.ScrollEnd, Common.UIString('Scroll End')],
207 [inputEvent.ScrollUpdate, WebInspector.UIString('Scroll Update')], 207 [inputEvent.ScrollUpdate, Common.UIString('Scroll Update')],
208 [inputEvent.FlingStart, WebInspector.UIString('Fling Start')], 208 [inputEvent.FlingStart, Common.UIString('Fling Start')],
209 [inputEvent.FlingCancel, WebInspector.UIString('Fling Halt')], 209 [inputEvent.FlingCancel, Common.UIString('Fling Halt')],
210 [inputEvent.Tap, WebInspector.UIString('Tap')], 210 [inputEvent.Tap, Common.UIString('Tap')],
211 [inputEvent.TapCancel, WebInspector.UIString('Tap Halt')], 211 [inputEvent.TapCancel, Common.UIString('Tap Halt')],
212 [inputEvent.ShowPress, WebInspector.UIString('Tap Begin')], 212 [inputEvent.ShowPress, Common.UIString('Tap Begin')],
213 [inputEvent.TapDown, WebInspector.UIString('Tap Down')], 213 [inputEvent.TapDown, Common.UIString('Tap Down')],
214 [inputEvent.TouchCancel, WebInspector.UIString('Touch Cancel')], 214 [inputEvent.TouchCancel, Common.UIString('Touch Cancel')],
215 [inputEvent.TouchEnd, WebInspector.UIString('Touch End')], 215 [inputEvent.TouchEnd, Common.UIString('Touch End')],
216 [inputEvent.TouchMove, WebInspector.UIString('Touch Move')], 216 [inputEvent.TouchMove, Common.UIString('Touch Move')],
217 [inputEvent.TouchStart, WebInspector.UIString('Touch Start')], 217 [inputEvent.TouchStart, Common.UIString('Touch Start')],
218 [inputEvent.PinchBegin, WebInspector.UIString('Pinch Begin')], 218 [inputEvent.PinchBegin, Common.UIString('Pinch Begin')],
219 [inputEvent.PinchEnd, WebInspector.UIString('Pinch End')], 219 [inputEvent.PinchEnd, Common.UIString('Pinch End')],
220 [inputEvent.PinchUpdate, WebInspector.UIString('Pinch Update')] 220 [inputEvent.PinchUpdate, Common.UIString('Pinch Update')]
221 ]); 221 ]);
222 } 222 }
223 return WebInspector.TimelineUIUtils._inputEventToDisplayName.get(inputEventT ype) || null; 223 return Timeline.TimelineUIUtils._inputEventToDisplayName.get(inputEventType) || null;
224 } 224 }
225 225
226 /** 226 /**
227 * @param {!Protocol.Runtime.CallFrame} frame 227 * @param {!Protocol.Runtime.CallFrame} frame
228 * @return {string} 228 * @return {string}
229 */ 229 */
230 static frameDisplayName(frame) { 230 static frameDisplayName(frame) {
231 if (!WebInspector.TimelineJSProfileProcessor.isNativeRuntimeFrame(frame)) 231 if (!TimelineModel.TimelineJSProfileProcessor.isNativeRuntimeFrame(frame))
232 return WebInspector.beautifyFunctionName(frame.functionName); 232 return UI.beautifyFunctionName(frame.functionName);
233 const nativeGroup = WebInspector.TimelineJSProfileProcessor.nativeGroup(fram e.functionName); 233 const nativeGroup = TimelineModel.TimelineJSProfileProcessor.nativeGroup(fra me.functionName);
234 const groups = WebInspector.TimelineJSProfileProcessor.NativeGroups; 234 const groups = TimelineModel.TimelineJSProfileProcessor.NativeGroups;
235 switch (nativeGroup) { 235 switch (nativeGroup) {
236 case groups.Compile: return WebInspector.UIString('Compile'); 236 case groups.Compile: return Common.UIString('Compile');
237 case groups.Parse: return WebInspector.UIString('Parse'); 237 case groups.Parse: return Common.UIString('Parse');
238 } 238 }
239 return frame.functionName; 239 return frame.functionName;
240 } 240 }
241 241
242 /** 242 /**
243 * @param {!WebInspector.TracingModel.Event} traceEvent 243 * @param {!SDK.TracingModel.Event} traceEvent
244 * @param {!RegExp} regExp 244 * @param {!RegExp} regExp
245 * @return {boolean} 245 * @return {boolean}
246 */ 246 */
247 static testContentMatching(traceEvent, regExp) { 247 static testContentMatching(traceEvent, regExp) {
248 var title = WebInspector.TimelineUIUtils.eventStyle(traceEvent).title; 248 var title = Timeline.TimelineUIUtils.eventStyle(traceEvent).title;
249 var tokens = [title]; 249 var tokens = [title];
250 var url = WebInspector.TimelineData.forEvent(traceEvent).url; 250 var url = TimelineModel.TimelineData.forEvent(traceEvent).url;
251 if (url) 251 if (url)
252 tokens.push(url); 252 tokens.push(url);
253 for (var argName in traceEvent.args) { 253 for (var argName in traceEvent.args) {
254 var argValue = traceEvent.args[argName]; 254 var argValue = traceEvent.args[argName];
255 for (var key in argValue) 255 for (var key in argValue)
256 tokens.push(argValue[key]); 256 tokens.push(argValue[key]);
257 } 257 }
258 return regExp.test(tokens.join('|')); 258 return regExp.test(tokens.join('|'));
259 } 259 }
260 260
261 /** 261 /**
262 * @param {!WebInspector.TimelineModel.Record} record 262 * @param {!TimelineModel.TimelineModel.Record} record
263 * @return {!WebInspector.TimelineCategory} 263 * @return {!Timeline.TimelineCategory}
264 */ 264 */
265 static categoryForRecord(record) { 265 static categoryForRecord(record) {
266 return WebInspector.TimelineUIUtils.eventStyle(record.traceEvent()).category ; 266 return Timeline.TimelineUIUtils.eventStyle(record.traceEvent()).category;
267 } 267 }
268 268
269 /** 269 /**
270 * @param {!WebInspector.TracingModel.Event} event 270 * @param {!SDK.TracingModel.Event} event
271 * @return {!{title: string, category: !WebInspector.TimelineCategory}} 271 * @return {!{title: string, category: !Timeline.TimelineCategory}}
272 */ 272 */
273 static eventStyle(event) { 273 static eventStyle(event) {
274 var eventStyles = WebInspector.TimelineUIUtils._initEventStyles(); 274 var eventStyles = Timeline.TimelineUIUtils._initEventStyles();
275 if (event.hasCategory(WebInspector.TimelineModel.Category.Console) || 275 if (event.hasCategory(TimelineModel.TimelineModel.Category.Console) ||
276 event.hasCategory(WebInspector.TimelineModel.Category.UserTiming)) 276 event.hasCategory(TimelineModel.TimelineModel.Category.UserTiming))
277 return {title: event.name, category: WebInspector.TimelineUIUtils.categori es()['scripting']}; 277 return {title: event.name, category: Timeline.TimelineUIUtils.categories() ['scripting']};
278 278
279 if (event.hasCategory(WebInspector.TimelineModel.Category.LatencyInfo)) { 279 if (event.hasCategory(TimelineModel.TimelineModel.Category.LatencyInfo)) {
280 /** @const */ 280 /** @const */
281 var prefix = 'InputLatency::'; 281 var prefix = 'InputLatency::';
282 var inputEventType = event.name.startsWith(prefix) ? event.name.substr(pre fix.length) : event.name; 282 var inputEventType = event.name.startsWith(prefix) ? event.name.substr(pre fix.length) : event.name;
283 var displayName = WebInspector.TimelineUIUtils.inputEventDisplayName( 283 var displayName = Timeline.TimelineUIUtils.inputEventDisplayName(
284 /** @type {!WebInspector.TimelineIRModel.InputEvents} */ (inputEventTy pe)); 284 /** @type {!TimelineModel.TimelineIRModel.InputEvents} */ (inputEventT ype));
285 return {title: displayName || inputEventType, category: WebInspector.Timel ineUIUtils.categories()['scripting']}; 285 return {title: displayName || inputEventType, category: Timeline.TimelineU IUtils.categories()['scripting']};
286 } 286 }
287 var result = eventStyles[event.name]; 287 var result = eventStyles[event.name];
288 if (!result) { 288 if (!result) {
289 result = 289 result =
290 new WebInspector.TimelineRecordStyle(event.name, WebInspector.Timeline UIUtils.categories()['other'], true); 290 new Timeline.TimelineRecordStyle(event.name, Timeline.TimelineUIUtils. categories()['other'], true);
291 eventStyles[event.name] = result; 291 eventStyles[event.name] = result;
292 } 292 }
293 return result; 293 return result;
294 } 294 }
295 295
296 /** 296 /**
297 * @param {!WebInspector.TracingModel.Event} event 297 * @param {!SDK.TracingModel.Event} event
298 * @return {string} 298 * @return {string}
299 */ 299 */
300 static eventColor(event) { 300 static eventColor(event) {
301 if (event.name === WebInspector.TimelineModel.RecordType.JSFrame) { 301 if (event.name === TimelineModel.TimelineModel.RecordType.JSFrame) {
302 var frame = event.args['data']; 302 var frame = event.args['data'];
303 if (WebInspector.TimelineUIUtils.isUserFrame(frame)) 303 if (Timeline.TimelineUIUtils.isUserFrame(frame))
304 return WebInspector.TimelineUIUtils.colorForURL(frame.url); 304 return Timeline.TimelineUIUtils.colorForURL(frame.url);
305 } 305 }
306 return WebInspector.TimelineUIUtils.eventStyle(event).category.color; 306 return Timeline.TimelineUIUtils.eventStyle(event).category.color;
307 } 307 }
308 308
309 /** 309 /**
310 * @param {!WebInspector.TracingModel.Event} event 310 * @param {!SDK.TracingModel.Event} event
311 * @return {string} 311 * @return {string}
312 */ 312 */
313 static eventTitle(event) { 313 static eventTitle(event) {
314 const recordType = WebInspector.TimelineModel.RecordType; 314 const recordType = TimelineModel.TimelineModel.RecordType;
315 const eventData = event.args['data']; 315 const eventData = event.args['data'];
316 if (event.name === recordType.JSFrame) 316 if (event.name === recordType.JSFrame)
317 return WebInspector.TimelineUIUtils.frameDisplayName(eventData); 317 return Timeline.TimelineUIUtils.frameDisplayName(eventData);
318 const title = WebInspector.TimelineUIUtils.eventStyle(event).title; 318 const title = Timeline.TimelineUIUtils.eventStyle(event).title;
319 if (event.hasCategory(WebInspector.TimelineModel.Category.Console)) 319 if (event.hasCategory(TimelineModel.TimelineModel.Category.Console))
320 return title; 320 return title;
321 if (event.name === recordType.TimeStamp) 321 if (event.name === recordType.TimeStamp)
322 return WebInspector.UIString('%s: %s', title, eventData['message']); 322 return Common.UIString('%s: %s', title, eventData['message']);
323 if (event.name === recordType.Animation && eventData && eventData['name']) 323 if (event.name === recordType.Animation && eventData && eventData['name'])
324 return WebInspector.UIString('%s: %s', title, eventData['name']); 324 return Common.UIString('%s: %s', title, eventData['name']);
325 return title; 325 return title;
326 } 326 }
327 327
328 /** 328 /**
329 * !Map<!WebInspector.TimelineIRModel.Phases, !{color: string, label: string}> 329 * !Map<!TimelineModel.TimelineIRModel.Phases, !{color: string, label: string} >
330 */ 330 */
331 static _interactionPhaseStyles() { 331 static _interactionPhaseStyles() {
332 var map = WebInspector.TimelineUIUtils._interactionPhaseStylesMap; 332 var map = Timeline.TimelineUIUtils._interactionPhaseStylesMap;
333 if (!map) { 333 if (!map) {
334 map = new Map([ 334 map = new Map([
335 [WebInspector.TimelineIRModel.Phases.Idle, {color: 'white', label: 'Idle '}], 335 [TimelineModel.TimelineIRModel.Phases.Idle, {color: 'white', label: 'Idl e'}],
336 [ 336 [
337 WebInspector.TimelineIRModel.Phases.Response, 337 TimelineModel.TimelineIRModel.Phases.Response,
338 {color: 'hsl(43, 83%, 64%)', label: WebInspector.UIString('Response')} 338 {color: 'hsl(43, 83%, 64%)', label: Common.UIString('Response')}
339 ], 339 ],
340 [ 340 [
341 WebInspector.TimelineIRModel.Phases.Scroll, 341 TimelineModel.TimelineIRModel.Phases.Scroll,
342 {color: 'hsl(256, 67%, 70%)', label: WebInspector.UIString('Scroll')} 342 {color: 'hsl(256, 67%, 70%)', label: Common.UIString('Scroll')}
343 ], 343 ],
344 [ 344 [
345 WebInspector.TimelineIRModel.Phases.Fling, 345 TimelineModel.TimelineIRModel.Phases.Fling,
346 {color: 'hsl(256, 67%, 70%)', label: WebInspector.UIString('Fling')} 346 {color: 'hsl(256, 67%, 70%)', label: Common.UIString('Fling')}
347 ], 347 ],
348 [WebInspector.TimelineIRModel.Phases.Drag, {color: 'hsl(256, 67%, 70%)', label: WebInspector.UIString('Drag')}], 348 [TimelineModel.TimelineIRModel.Phases.Drag, {color: 'hsl(256, 67%, 70%)' , label: Common.UIString('Drag')}],
349 [ 349 [
350 WebInspector.TimelineIRModel.Phases.Animation, 350 TimelineModel.TimelineIRModel.Phases.Animation,
351 {color: 'hsl(256, 67%, 70%)', label: WebInspector.UIString('Animation' )} 351 {color: 'hsl(256, 67%, 70%)', label: Common.UIString('Animation')}
352 ], 352 ],
353 [ 353 [
354 WebInspector.TimelineIRModel.Phases.Uncategorized, 354 TimelineModel.TimelineIRModel.Phases.Uncategorized,
355 {color: 'hsl(0, 0%, 87%)', label: WebInspector.UIString('Uncategorized ')} 355 {color: 'hsl(0, 0%, 87%)', label: Common.UIString('Uncategorized')}
356 ] 356 ]
357 ]); 357 ]);
358 WebInspector.TimelineUIUtils._interactionPhaseStylesMap = map; 358 Timeline.TimelineUIUtils._interactionPhaseStylesMap = map;
359 } 359 }
360 return map; 360 return map;
361 } 361 }
362 362
363 /** 363 /**
364 * @param {!WebInspector.TimelineIRModel.Phases} phase 364 * @param {!TimelineModel.TimelineIRModel.Phases} phase
365 * @return {string} 365 * @return {string}
366 */ 366 */
367 static interactionPhaseColor(phase) { 367 static interactionPhaseColor(phase) {
368 return WebInspector.TimelineUIUtils._interactionPhaseStyles().get(phase).col or; 368 return Timeline.TimelineUIUtils._interactionPhaseStyles().get(phase).color;
369 } 369 }
370 370
371 /** 371 /**
372 * @param {!WebInspector.TimelineIRModel.Phases} phase 372 * @param {!TimelineModel.TimelineIRModel.Phases} phase
373 * @return {string} 373 * @return {string}
374 */ 374 */
375 static interactionPhaseLabel(phase) { 375 static interactionPhaseLabel(phase) {
376 return WebInspector.TimelineUIUtils._interactionPhaseStyles().get(phase).lab el; 376 return Timeline.TimelineUIUtils._interactionPhaseStyles().get(phase).label;
377 } 377 }
378 378
379 /** 379 /**
380 * @param {!Protocol.Runtime.CallFrame} frame 380 * @param {!Protocol.Runtime.CallFrame} frame
381 * @return {boolean} 381 * @return {boolean}
382 */ 382 */
383 static isUserFrame(frame) { 383 static isUserFrame(frame) {
384 return frame.scriptId !== '0' && !(frame.url && frame.url.startsWith('native ')); 384 return frame.scriptId !== '0' && !(frame.url && frame.url.startsWith('native '));
385 } 385 }
386 386
387 /** 387 /**
388 * @param {!WebInspector.TimelineModel.NetworkRequest} request 388 * @param {!TimelineModel.TimelineModel.NetworkRequest} request
389 * @return {!WebInspector.TimelineUIUtils.NetworkCategory} 389 * @return {!Timeline.TimelineUIUtils.NetworkCategory}
390 */ 390 */
391 static networkRequestCategory(request) { 391 static networkRequestCategory(request) {
392 var categories = WebInspector.TimelineUIUtils.NetworkCategory; 392 var categories = Timeline.TimelineUIUtils.NetworkCategory;
393 switch (request.mimeType) { 393 switch (request.mimeType) {
394 case 'text/html': 394 case 'text/html':
395 return categories.HTML; 395 return categories.HTML;
396 case 'application/javascript': 396 case 'application/javascript':
397 case 'application/x-javascript': 397 case 'application/x-javascript':
398 case 'text/javascript': 398 case 'text/javascript':
399 return categories.Script; 399 return categories.Script;
400 case 'text/css': 400 case 'text/css':
401 return categories.Style; 401 return categories.Style;
402 case 'audio/ogg': 402 case 'audio/ogg':
403 case 'image/gif': 403 case 'image/gif':
404 case 'image/jpeg': 404 case 'image/jpeg':
405 case 'image/png': 405 case 'image/png':
406 case 'image/svg+xml': 406 case 'image/svg+xml':
407 case 'image/webp': 407 case 'image/webp':
408 case 'image/x-icon': 408 case 'image/x-icon':
409 case 'font/opentype': 409 case 'font/opentype':
410 case 'font/woff2': 410 case 'font/woff2':
411 case 'application/font-woff': 411 case 'application/font-woff':
412 return categories.Media; 412 return categories.Media;
413 default: 413 default:
414 return categories.Other; 414 return categories.Other;
415 } 415 }
416 } 416 }
417 417
418 /** 418 /**
419 * @param {!WebInspector.TimelineUIUtils.NetworkCategory} category 419 * @param {!Timeline.TimelineUIUtils.NetworkCategory} category
420 * @return {string} 420 * @return {string}
421 */ 421 */
422 static networkCategoryColor(category) { 422 static networkCategoryColor(category) {
423 var categories = WebInspector.TimelineUIUtils.NetworkCategory; 423 var categories = Timeline.TimelineUIUtils.NetworkCategory;
424 switch (category) { 424 switch (category) {
425 case categories.HTML: 425 case categories.HTML:
426 return 'hsl(214, 67%, 66%)'; 426 return 'hsl(214, 67%, 66%)';
427 case categories.Script: 427 case categories.Script:
428 return 'hsl(43, 83%, 64%)'; 428 return 'hsl(43, 83%, 64%)';
429 case categories.Style: 429 case categories.Style:
430 return 'hsl(256, 67%, 70%)'; 430 return 'hsl(256, 67%, 70%)';
431 case categories.Media: 431 case categories.Media:
432 return 'hsl(109, 33%, 55%)'; 432 return 'hsl(109, 33%, 55%)';
433 default: 433 default:
434 return 'hsl(0, 0%, 70%)'; 434 return 'hsl(0, 0%, 70%)';
435 } 435 }
436 } 436 }
437 437
438 /** 438 /**
439 * @param {!WebInspector.TracingModel.Event} event 439 * @param {!SDK.TracingModel.Event} event
440 * @param {?WebInspector.Target} target 440 * @param {?SDK.Target} target
441 * @return {?string} 441 * @return {?string}
442 */ 442 */
443 static buildDetailsTextForTraceEvent(event, target) { 443 static buildDetailsTextForTraceEvent(event, target) {
444 var recordType = WebInspector.TimelineModel.RecordType; 444 var recordType = TimelineModel.TimelineModel.RecordType;
445 var detailsText; 445 var detailsText;
446 var eventData = event.args['data']; 446 var eventData = event.args['data'];
447 switch (event.name) { 447 switch (event.name) {
448 case recordType.GCEvent: 448 case recordType.GCEvent:
449 case recordType.MajorGC: 449 case recordType.MajorGC:
450 case recordType.MinorGC: 450 case recordType.MinorGC:
451 var delta = event.args['usedHeapSizeBefore'] - event.args['usedHeapSizeA fter']; 451 var delta = event.args['usedHeapSizeBefore'] - event.args['usedHeapSizeA fter'];
452 detailsText = WebInspector.UIString('%s collected', Number.bytesToString (delta)); 452 detailsText = Common.UIString('%s collected', Number.bytesToString(delta ));
453 break; 453 break;
454 case recordType.FunctionCall: 454 case recordType.FunctionCall:
455 // Omit internally generated script names. 455 // Omit internally generated script names.
456 if (eventData) 456 if (eventData)
457 detailsText = linkifyLocationAsText(eventData['scriptId'], eventData[' lineNumber'], 0); 457 detailsText = linkifyLocationAsText(eventData['scriptId'], eventData[' lineNumber'], 0);
458 break; 458 break;
459 case recordType.JSFrame: 459 case recordType.JSFrame:
460 detailsText = WebInspector.TimelineUIUtils.frameDisplayName(eventData); 460 detailsText = Timeline.TimelineUIUtils.frameDisplayName(eventData);
461 break; 461 break;
462 case recordType.EventDispatch: 462 case recordType.EventDispatch:
463 detailsText = eventData ? eventData['type'] : null; 463 detailsText = eventData ? eventData['type'] : null;
464 break; 464 break;
465 case recordType.Paint: 465 case recordType.Paint:
466 var width = WebInspector.TimelineUIUtils.quadWidth(eventData.clip); 466 var width = Timeline.TimelineUIUtils.quadWidth(eventData.clip);
467 var height = WebInspector.TimelineUIUtils.quadHeight(eventData.clip); 467 var height = Timeline.TimelineUIUtils.quadHeight(eventData.clip);
468 if (width && height) 468 if (width && height)
469 detailsText = WebInspector.UIString('%d\u2009\u00d7\u2009%d', width, h eight); 469 detailsText = Common.UIString('%d\u2009\u00d7\u2009%d', width, height) ;
470 break; 470 break;
471 case recordType.ParseHTML: 471 case recordType.ParseHTML:
472 var endLine = event.args['endData'] && event.args['endData']['endLine']; 472 var endLine = event.args['endData'] && event.args['endData']['endLine'];
473 var url = WebInspector.displayNameForURL(event.args['beginData']['url']) ; 473 var url = Bindings.displayNameForURL(event.args['beginData']['url']);
474 detailsText = WebInspector.UIString( 474 detailsText = Common.UIString(
475 '%s [%s\u2026%s]', url, event.args['beginData']['startLine'] + 1, en dLine >= 0 ? endLine + 1 : ''); 475 '%s [%s\u2026%s]', url, event.args['beginData']['startLine'] + 1, en dLine >= 0 ? endLine + 1 : '');
476 break; 476 break;
477 477
478 case recordType.CompileScript: 478 case recordType.CompileScript:
479 case recordType.EvaluateScript: 479 case recordType.EvaluateScript:
480 var url = eventData && eventData['url']; 480 var url = eventData && eventData['url'];
481 if (url) 481 if (url)
482 detailsText = WebInspector.displayNameForURL(url) + ':' + (eventData[' lineNumber'] + 1); 482 detailsText = Bindings.displayNameForURL(url) + ':' + (eventData['line Number'] + 1);
483 break; 483 break;
484 case recordType.ParseScriptOnBackground: 484 case recordType.ParseScriptOnBackground:
485 case recordType.XHRReadyStateChange: 485 case recordType.XHRReadyStateChange:
486 case recordType.XHRLoad: 486 case recordType.XHRLoad:
487 var url = eventData['url']; 487 var url = eventData['url'];
488 if (url) 488 if (url)
489 detailsText = WebInspector.displayNameForURL(url); 489 detailsText = Bindings.displayNameForURL(url);
490 break; 490 break;
491 case recordType.TimeStamp: 491 case recordType.TimeStamp:
492 detailsText = eventData['message']; 492 detailsText = eventData['message'];
493 break; 493 break;
494 494
495 case recordType.WebSocketCreate: 495 case recordType.WebSocketCreate:
496 case recordType.WebSocketSendHandshakeRequest: 496 case recordType.WebSocketSendHandshakeRequest:
497 case recordType.WebSocketReceiveHandshakeResponse: 497 case recordType.WebSocketReceiveHandshakeResponse:
498 case recordType.WebSocketDestroy: 498 case recordType.WebSocketDestroy:
499 case recordType.ResourceSendRequest: 499 case recordType.ResourceSendRequest:
500 case recordType.ResourceReceivedData: 500 case recordType.ResourceReceivedData:
501 case recordType.ResourceReceiveResponse: 501 case recordType.ResourceReceiveResponse:
502 case recordType.ResourceFinish: 502 case recordType.ResourceFinish:
503 case recordType.PaintImage: 503 case recordType.PaintImage:
504 case recordType.DecodeImage: 504 case recordType.DecodeImage:
505 case recordType.ResizeImage: 505 case recordType.ResizeImage:
506 case recordType.DecodeLazyPixelRef: 506 case recordType.DecodeLazyPixelRef:
507 var url = WebInspector.TimelineData.forEvent(event).url; 507 var url = TimelineModel.TimelineData.forEvent(event).url;
508 if (url) 508 if (url)
509 detailsText = WebInspector.displayNameForURL(url); 509 detailsText = Bindings.displayNameForURL(url);
510 break; 510 break;
511 511
512 case recordType.EmbedderCallback: 512 case recordType.EmbedderCallback:
513 detailsText = eventData['callbackName']; 513 detailsText = eventData['callbackName'];
514 break; 514 break;
515 515
516 case recordType.Animation: 516 case recordType.Animation:
517 detailsText = eventData && eventData['name']; 517 detailsText = eventData && eventData['name'];
518 break; 518 break;
519 519
520 case recordType.GCIdleLazySweep: 520 case recordType.GCIdleLazySweep:
521 detailsText = WebInspector.UIString('idle sweep'); 521 detailsText = Common.UIString('idle sweep');
522 break; 522 break;
523 523
524 case recordType.GCCompleteSweep: 524 case recordType.GCCompleteSweep:
525 detailsText = WebInspector.UIString('complete sweep'); 525 detailsText = Common.UIString('complete sweep');
526 break; 526 break;
527 527
528 case recordType.GCCollectGarbage: 528 case recordType.GCCollectGarbage:
529 detailsText = WebInspector.UIString('collect'); 529 detailsText = Common.UIString('collect');
530 break; 530 break;
531 531
532 default: 532 default:
533 if (event.hasCategory(WebInspector.TimelineModel.Category.Console)) 533 if (event.hasCategory(TimelineModel.TimelineModel.Category.Console))
534 detailsText = null; 534 detailsText = null;
535 else 535 else
536 detailsText = linkifyTopCallFrameAsText(); 536 detailsText = linkifyTopCallFrameAsText();
537 break; 537 break;
538 } 538 }
539 539
540 return detailsText; 540 return detailsText;
541 541
542 /** 542 /**
543 * @param {string} scriptId 543 * @param {string} scriptId
544 * @param {number} lineNumber 544 * @param {number} lineNumber
545 * @param {number} columnNumber 545 * @param {number} columnNumber
546 * @return {?string} 546 * @return {?string}
547 */ 547 */
548 function linkifyLocationAsText(scriptId, lineNumber, columnNumber) { 548 function linkifyLocationAsText(scriptId, lineNumber, columnNumber) {
549 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); 549 var debuggerModel = SDK.DebuggerModel.fromTarget(target);
550 if (!target || target.isDisposed() || !scriptId || !debuggerModel) 550 if (!target || target.isDisposed() || !scriptId || !debuggerModel)
551 return null; 551 return null;
552 var rawLocation = debuggerModel.createRawLocationByScriptId(scriptId, line Number, columnNumber); 552 var rawLocation = debuggerModel.createRawLocationByScriptId(scriptId, line Number, columnNumber);
553 if (!rawLocation) 553 if (!rawLocation)
554 return null; 554 return null;
555 var uiLocation = WebInspector.debuggerWorkspaceBinding.rawLocationToUILoca tion(rawLocation); 555 var uiLocation = Bindings.debuggerWorkspaceBinding.rawLocationToUILocation (rawLocation);
556 return uiLocation.linkText(); 556 return uiLocation.linkText();
557 } 557 }
558 558
559 /** 559 /**
560 * @return {?string} 560 * @return {?string}
561 */ 561 */
562 function linkifyTopCallFrameAsText() { 562 function linkifyTopCallFrameAsText() {
563 var frame = WebInspector.TimelineData.forEvent(event).topFrame(); 563 var frame = TimelineModel.TimelineData.forEvent(event).topFrame();
564 if (!frame) 564 if (!frame)
565 return null; 565 return null;
566 var text = linkifyLocationAsText(frame.scriptId, frame.lineNumber, frame.c olumnNumber); 566 var text = linkifyLocationAsText(frame.scriptId, frame.lineNumber, frame.c olumnNumber);
567 if (!text) { 567 if (!text) {
568 text = frame.url; 568 text = frame.url;
569 if (typeof frame.lineNumber === 'number') 569 if (typeof frame.lineNumber === 'number')
570 text += ':' + (frame.lineNumber + 1); 570 text += ':' + (frame.lineNumber + 1);
571 } 571 }
572 return text; 572 return text;
573 } 573 }
574 } 574 }
575 575
576 /** 576 /**
577 * @param {!WebInspector.TracingModel.Event} event 577 * @param {!SDK.TracingModel.Event} event
578 * @param {?WebInspector.Target} target 578 * @param {?SDK.Target} target
579 * @param {!WebInspector.Linkifier} linkifier 579 * @param {!Components.Linkifier} linkifier
580 * @return {?Node} 580 * @return {?Node}
581 */ 581 */
582 static buildDetailsNodeForTraceEvent(event, target, linkifier) { 582 static buildDetailsNodeForTraceEvent(event, target, linkifier) {
583 var recordType = WebInspector.TimelineModel.RecordType; 583 var recordType = TimelineModel.TimelineModel.RecordType;
584 var details = null; 584 var details = null;
585 var detailsText; 585 var detailsText;
586 var eventData = event.args['data']; 586 var eventData = event.args['data'];
587 switch (event.name) { 587 switch (event.name) {
588 case recordType.GCEvent: 588 case recordType.GCEvent:
589 case recordType.MajorGC: 589 case recordType.MajorGC:
590 case recordType.MinorGC: 590 case recordType.MinorGC:
591 case recordType.EventDispatch: 591 case recordType.EventDispatch:
592 case recordType.Paint: 592 case recordType.Paint:
593 case recordType.Animation: 593 case recordType.Animation:
594 case recordType.EmbedderCallback: 594 case recordType.EmbedderCallback:
595 case recordType.ParseHTML: 595 case recordType.ParseHTML:
596 case recordType.WebSocketCreate: 596 case recordType.WebSocketCreate:
597 case recordType.WebSocketSendHandshakeRequest: 597 case recordType.WebSocketSendHandshakeRequest:
598 case recordType.WebSocketReceiveHandshakeResponse: 598 case recordType.WebSocketReceiveHandshakeResponse:
599 case recordType.WebSocketDestroy: 599 case recordType.WebSocketDestroy:
600 case recordType.GCIdleLazySweep: 600 case recordType.GCIdleLazySweep:
601 case recordType.GCCompleteSweep: 601 case recordType.GCCompleteSweep:
602 case recordType.GCCollectGarbage: 602 case recordType.GCCollectGarbage:
603 detailsText = WebInspector.TimelineUIUtils.buildDetailsTextForTraceEvent (event, target); 603 detailsText = Timeline.TimelineUIUtils.buildDetailsTextForTraceEvent(eve nt, target);
604 break; 604 break;
605 case recordType.PaintImage: 605 case recordType.PaintImage:
606 case recordType.DecodeImage: 606 case recordType.DecodeImage:
607 case recordType.ResizeImage: 607 case recordType.ResizeImage:
608 case recordType.DecodeLazyPixelRef: 608 case recordType.DecodeLazyPixelRef:
609 case recordType.XHRReadyStateChange: 609 case recordType.XHRReadyStateChange:
610 case recordType.XHRLoad: 610 case recordType.XHRLoad:
611 case recordType.ResourceSendRequest: 611 case recordType.ResourceSendRequest:
612 case recordType.ResourceReceivedData: 612 case recordType.ResourceReceivedData:
613 case recordType.ResourceReceiveResponse: 613 case recordType.ResourceReceiveResponse:
614 case recordType.ResourceFinish: 614 case recordType.ResourceFinish:
615 var url = WebInspector.TimelineData.forEvent(event).url; 615 var url = TimelineModel.TimelineData.forEvent(event).url;
616 if (url) 616 if (url)
617 details = WebInspector.linkifyResourceAsNode(url); 617 details = Components.linkifyResourceAsNode(url);
618 break; 618 break;
619 case recordType.FunctionCall: 619 case recordType.FunctionCall:
620 case recordType.JSFrame: 620 case recordType.JSFrame:
621 details = createElement('span'); 621 details = createElement('span');
622 details.createTextChild(WebInspector.TimelineUIUtils.frameDisplayName(ev entData)); 622 details.createTextChild(Timeline.TimelineUIUtils.frameDisplayName(eventD ata));
623 const location = linkifyLocation( 623 const location = linkifyLocation(
624 eventData['scriptId'], eventData['url'], eventData['lineNumber'], ev entData['columnNumber']); 624 eventData['scriptId'], eventData['url'], eventData['lineNumber'], ev entData['columnNumber']);
625 if (location) { 625 if (location) {
626 details.createTextChild(' @ '); 626 details.createTextChild(' @ ');
627 details.appendChild(location); 627 details.appendChild(location);
628 } 628 }
629 break; 629 break;
630 case recordType.CompileScript: 630 case recordType.CompileScript:
631 case recordType.EvaluateScript: 631 case recordType.EvaluateScript:
632 var url = eventData['url']; 632 var url = eventData['url'];
633 if (url) 633 if (url)
634 details = linkifyLocation('', url, eventData['lineNumber'], 0); 634 details = linkifyLocation('', url, eventData['lineNumber'], 0);
635 break; 635 break;
636 case recordType.ParseScriptOnBackground: 636 case recordType.ParseScriptOnBackground:
637 var url = eventData['url']; 637 var url = eventData['url'];
638 if (url) 638 if (url)
639 details = linkifyLocation('', url, 0, 0); 639 details = linkifyLocation('', url, 0, 0);
640 break; 640 break;
641 default: 641 default:
642 if (event.hasCategory(WebInspector.TimelineModel.Category.Console)) 642 if (event.hasCategory(TimelineModel.TimelineModel.Category.Console))
643 detailsText = null; 643 detailsText = null;
644 else 644 else
645 details = linkifyTopCallFrame(); 645 details = linkifyTopCallFrame();
646 break; 646 break;
647 } 647 }
648 648
649 if (!details && detailsText) 649 if (!details && detailsText)
650 details = createTextNode(detailsText); 650 details = createTextNode(detailsText);
651 return details; 651 return details;
652 652
653 /** 653 /**
654 * @param {string} scriptId 654 * @param {string} scriptId
655 * @param {string} url 655 * @param {string} url
656 * @param {number} lineNumber 656 * @param {number} lineNumber
657 * @param {number=} columnNumber 657 * @param {number=} columnNumber
658 * @return {?Element} 658 * @return {?Element}
659 */ 659 */
660 function linkifyLocation(scriptId, url, lineNumber, columnNumber) { 660 function linkifyLocation(scriptId, url, lineNumber, columnNumber) {
661 return linkifier.linkifyScriptLocation(target, scriptId, url, lineNumber, columnNumber, 'timeline-details'); 661 return linkifier.linkifyScriptLocation(target, scriptId, url, lineNumber, columnNumber, 'timeline-details');
662 } 662 }
663 663
664 /** 664 /**
665 * @return {?Element} 665 * @return {?Element}
666 */ 666 */
667 function linkifyTopCallFrame() { 667 function linkifyTopCallFrame() {
668 var frame = WebInspector.TimelineData.forEvent(event).topFrame(); 668 var frame = TimelineModel.TimelineData.forEvent(event).topFrame();
669 return frame ? linkifier.maybeLinkifyConsoleCallFrame(target, frame, 'time line-details') : null; 669 return frame ? linkifier.maybeLinkifyConsoleCallFrame(target, frame, 'time line-details') : null;
670 } 670 }
671 } 671 }
672 672
673 /** 673 /**
674 * @param {!WebInspector.TracingModel.Event} event 674 * @param {!SDK.TracingModel.Event} event
675 * @param {!WebInspector.TimelineModel} model 675 * @param {!TimelineModel.TimelineModel} model
676 * @param {!WebInspector.Linkifier} linkifier 676 * @param {!Components.Linkifier} linkifier
677 * @param {boolean} detailed 677 * @param {boolean} detailed
678 * @param {function(!DocumentFragment)} callback 678 * @param {function(!DocumentFragment)} callback
679 */ 679 */
680 static buildTraceEventDetails(event, model, linkifier, detailed, callback) { 680 static buildTraceEventDetails(event, model, linkifier, detailed, callback) {
681 var target = model.targetByEvent(event); 681 var target = model.targetByEvent(event);
682 if (!target) { 682 if (!target) {
683 callbackWrapper(); 683 callbackWrapper();
684 return; 684 return;
685 } 685 }
686 var relatedNodes = null; 686 var relatedNodes = null;
687 var barrier = new CallbackBarrier(); 687 var barrier = new CallbackBarrier();
688 if (!event[WebInspector.TimelineUIUtils._previewElementSymbol]) { 688 if (!event[Timeline.TimelineUIUtils._previewElementSymbol]) {
689 var url = WebInspector.TimelineData.forEvent(event).url; 689 var url = TimelineModel.TimelineData.forEvent(event).url;
690 if (url) { 690 if (url) {
691 WebInspector.DOMPresentationUtils.buildImagePreviewContents( 691 Components.DOMPresentationUtils.buildImagePreviewContents(
692 target, url, false, barrier.createCallback(saveImage)); 692 target, url, false, barrier.createCallback(saveImage));
693 } else if (WebInspector.TimelineData.forEvent(event).picture) { 693 } else if (TimelineModel.TimelineData.forEvent(event).picture) {
694 WebInspector.TimelineUIUtils.buildPicturePreviewContent(event, target, b arrier.createCallback(saveImage)); 694 Timeline.TimelineUIUtils.buildPicturePreviewContent(event, target, barri er.createCallback(saveImage));
695 } 695 }
696 } 696 }
697 var nodeIdsToResolve = new Set(); 697 var nodeIdsToResolve = new Set();
698 var timelineData = WebInspector.TimelineData.forEvent(event); 698 var timelineData = TimelineModel.TimelineData.forEvent(event);
699 if (timelineData.backendNodeId) 699 if (timelineData.backendNodeId)
700 nodeIdsToResolve.add(timelineData.backendNodeId); 700 nodeIdsToResolve.add(timelineData.backendNodeId);
701 var invalidationTrackingEvents = WebInspector.InvalidationTracker.invalidati onEventsFor(event); 701 var invalidationTrackingEvents = TimelineModel.InvalidationTracker.invalidat ionEventsFor(event);
702 if (invalidationTrackingEvents) 702 if (invalidationTrackingEvents)
703 WebInspector.TimelineUIUtils._collectInvalidationNodeIds(nodeIdsToResolve, invalidationTrackingEvents); 703 Timeline.TimelineUIUtils._collectInvalidationNodeIds(nodeIdsToResolve, inv alidationTrackingEvents);
704 if (nodeIdsToResolve.size) { 704 if (nodeIdsToResolve.size) {
705 var domModel = WebInspector.DOMModel.fromTarget(target); 705 var domModel = SDK.DOMModel.fromTarget(target);
706 if (domModel) 706 if (domModel)
707 domModel.pushNodesByBackendIdsToFrontend(nodeIdsToResolve, barrier.creat eCallback(setRelatedNodeMap)); 707 domModel.pushNodesByBackendIdsToFrontend(nodeIdsToResolve, barrier.creat eCallback(setRelatedNodeMap));
708 } 708 }
709 barrier.callWhenDone(callbackWrapper); 709 barrier.callWhenDone(callbackWrapper);
710 710
711 /** 711 /**
712 * @param {!Element=} element 712 * @param {!Element=} element
713 */ 713 */
714 function saveImage(element) { 714 function saveImage(element) {
715 event[WebInspector.TimelineUIUtils._previewElementSymbol] = element || nul l; 715 event[Timeline.TimelineUIUtils._previewElementSymbol] = element || null;
716 } 716 }
717 717
718 /** 718 /**
719 * @param {?Map<number, ?WebInspector.DOMNode>} nodeMap 719 * @param {?Map<number, ?SDK.DOMNode>} nodeMap
720 */ 720 */
721 function setRelatedNodeMap(nodeMap) { 721 function setRelatedNodeMap(nodeMap) {
722 relatedNodes = nodeMap; 722 relatedNodes = nodeMap;
723 } 723 }
724 724
725 function callbackWrapper() { 725 function callbackWrapper() {
726 callback(WebInspector.TimelineUIUtils._buildTraceEventDetailsSynchronously ( 726 callback(Timeline.TimelineUIUtils._buildTraceEventDetailsSynchronously(
727 event, model, linkifier, detailed, relatedNodes)); 727 event, model, linkifier, detailed, relatedNodes));
728 } 728 }
729 } 729 }
730 730
731 /** 731 /**
732 * @param {!WebInspector.TracingModel.Event} event 732 * @param {!SDK.TracingModel.Event} event
733 * @param {!WebInspector.TimelineModel} model 733 * @param {!TimelineModel.TimelineModel} model
734 * @param {!WebInspector.Linkifier} linkifier 734 * @param {!Components.Linkifier} linkifier
735 * @param {boolean} detailed 735 * @param {boolean} detailed
736 * @param {?Map<number, ?WebInspector.DOMNode>} relatedNodesMap 736 * @param {?Map<number, ?SDK.DOMNode>} relatedNodesMap
737 * @return {!DocumentFragment} 737 * @return {!DocumentFragment}
738 */ 738 */
739 static _buildTraceEventDetailsSynchronously(event, model, linkifier, detailed, relatedNodesMap) { 739 static _buildTraceEventDetailsSynchronously(event, model, linkifier, detailed, relatedNodesMap) {
740 var recordTypes = WebInspector.TimelineModel.RecordType; 740 var recordTypes = TimelineModel.TimelineModel.RecordType;
741 // This message may vary per event.name; 741 // This message may vary per event.name;
742 var relatedNodeLabel; 742 var relatedNodeLabel;
743 743
744 var contentHelper = new WebInspector.TimelineDetailsContentHelper(model.targ etByEvent(event), linkifier); 744 var contentHelper = new Timeline.TimelineDetailsContentHelper(model.targetBy Event(event), linkifier);
745 contentHelper.addSection( 745 contentHelper.addSection(
746 WebInspector.TimelineUIUtils.eventTitle(event), WebInspector.TimelineUIU tils.eventStyle(event).category); 746 Timeline.TimelineUIUtils.eventTitle(event), Timeline.TimelineUIUtils.eve ntStyle(event).category);
747 747
748 var eventData = event.args['data']; 748 var eventData = event.args['data'];
749 var timelineData = WebInspector.TimelineData.forEvent(event); 749 var timelineData = TimelineModel.TimelineData.forEvent(event);
750 var initiator = timelineData.initiator(); 750 var initiator = timelineData.initiator();
751 751
752 if (timelineData.warning) 752 if (timelineData.warning)
753 contentHelper.appendWarningRow(event); 753 contentHelper.appendWarningRow(event);
754 if (event.name === recordTypes.JSFrame && eventData['deoptReason']) 754 if (event.name === recordTypes.JSFrame && eventData['deoptReason'])
755 contentHelper.appendWarningRow(event, WebInspector.TimelineModel.WarningTy pe.V8Deopt); 755 contentHelper.appendWarningRow(event, TimelineModel.TimelineModel.WarningT ype.V8Deopt);
756 756
757 if (detailed) { 757 if (detailed) {
758 contentHelper.appendTextRow(WebInspector.UIString('Self Time'), Number.mil lisToString(event.selfTime, true)); 758 contentHelper.appendTextRow(Common.UIString('Self Time'), Number.millisToS tring(event.selfTime, true));
759 contentHelper.appendTextRow( 759 contentHelper.appendTextRow(
760 WebInspector.UIString('Total Time'), Number.millisToString(event.durat ion || 0, true)); 760 Common.UIString('Total Time'), Number.millisToString(event.duration || 0, true));
761 } 761 }
762 762
763 switch (event.name) { 763 switch (event.name) {
764 case recordTypes.GCEvent: 764 case recordTypes.GCEvent:
765 case recordTypes.MajorGC: 765 case recordTypes.MajorGC:
766 case recordTypes.MinorGC: 766 case recordTypes.MinorGC:
767 var delta = event.args['usedHeapSizeBefore'] - event.args['usedHeapSizeA fter']; 767 var delta = event.args['usedHeapSizeBefore'] - event.args['usedHeapSizeA fter'];
768 contentHelper.appendTextRow(WebInspector.UIString('Collected'), Number.b ytesToString(delta)); 768 contentHelper.appendTextRow(Common.UIString('Collected'), Number.bytesTo String(delta));
769 break; 769 break;
770 case recordTypes.JSFrame: 770 case recordTypes.JSFrame:
771 case recordTypes.FunctionCall: 771 case recordTypes.FunctionCall:
772 var detailsNode = 772 var detailsNode =
773 WebInspector.TimelineUIUtils.buildDetailsNodeForTraceEvent(event, mo del.targetByEvent(event), linkifier); 773 Timeline.TimelineUIUtils.buildDetailsNodeForTraceEvent(event, model. targetByEvent(event), linkifier);
774 if (detailsNode) 774 if (detailsNode)
775 contentHelper.appendElementRow(WebInspector.UIString('Function'), deta ilsNode); 775 contentHelper.appendElementRow(Common.UIString('Function'), detailsNod e);
776 break; 776 break;
777 case recordTypes.TimerFire: 777 case recordTypes.TimerFire:
778 case recordTypes.TimerInstall: 778 case recordTypes.TimerInstall:
779 case recordTypes.TimerRemove: 779 case recordTypes.TimerRemove:
780 contentHelper.appendTextRow(WebInspector.UIString('Timer ID'), eventData ['timerId']); 780 contentHelper.appendTextRow(Common.UIString('Timer ID'), eventData['time rId']);
781 if (event.name === recordTypes.TimerInstall) { 781 if (event.name === recordTypes.TimerInstall) {
782 contentHelper.appendTextRow(WebInspector.UIString('Timeout'), Number.m illisToString(eventData['timeout'])); 782 contentHelper.appendTextRow(Common.UIString('Timeout'), Number.millisT oString(eventData['timeout']));
783 contentHelper.appendTextRow(WebInspector.UIString('Repeats'), !eventDa ta['singleShot']); 783 contentHelper.appendTextRow(Common.UIString('Repeats'), !eventData['si ngleShot']);
784 } 784 }
785 break; 785 break;
786 case recordTypes.FireAnimationFrame: 786 case recordTypes.FireAnimationFrame:
787 contentHelper.appendTextRow(WebInspector.UIString('Callback ID'), eventD ata['id']); 787 contentHelper.appendTextRow(Common.UIString('Callback ID'), eventData['i d']);
788 break; 788 break;
789 case recordTypes.ResourceSendRequest: 789 case recordTypes.ResourceSendRequest:
790 case recordTypes.ResourceReceiveResponse: 790 case recordTypes.ResourceReceiveResponse:
791 case recordTypes.ResourceReceivedData: 791 case recordTypes.ResourceReceivedData:
792 case recordTypes.ResourceFinish: 792 case recordTypes.ResourceFinish:
793 var url = timelineData.url; 793 var url = timelineData.url;
794 if (url) 794 if (url)
795 contentHelper.appendElementRow(WebInspector.UIString('Resource'), WebI nspector.linkifyResourceAsNode(url)); 795 contentHelper.appendElementRow(Common.UIString('Resource'), Components .linkifyResourceAsNode(url));
796 if (eventData['requestMethod']) 796 if (eventData['requestMethod'])
797 contentHelper.appendTextRow(WebInspector.UIString('Request Method'), e ventData['requestMethod']); 797 contentHelper.appendTextRow(Common.UIString('Request Method'), eventDa ta['requestMethod']);
798 if (typeof eventData['statusCode'] === 'number') 798 if (typeof eventData['statusCode'] === 'number')
799 contentHelper.appendTextRow(WebInspector.UIString('Status Code'), even tData['statusCode']); 799 contentHelper.appendTextRow(Common.UIString('Status Code'), eventData[ 'statusCode']);
800 if (eventData['mimeType']) 800 if (eventData['mimeType'])
801 contentHelper.appendTextRow(WebInspector.UIString('MIME Type'), eventD ata['mimeType']); 801 contentHelper.appendTextRow(Common.UIString('MIME Type'), eventData['m imeType']);
802 if ('priority' in eventData) { 802 if ('priority' in eventData) {
803 var priority = WebInspector.uiLabelForPriority(eventData['priority']); 803 var priority = Components.uiLabelForPriority(eventData['priority']);
804 contentHelper.appendTextRow(WebInspector.UIString('Priority'), priorit y); 804 contentHelper.appendTextRow(Common.UIString('Priority'), priority);
805 } 805 }
806 if (eventData['encodedDataLength']) 806 if (eventData['encodedDataLength'])
807 contentHelper.appendTextRow( 807 contentHelper.appendTextRow(
808 WebInspector.UIString('Encoded Data Length'), 808 Common.UIString('Encoded Data Length'),
809 WebInspector.UIString('%d Bytes', eventData['encodedDataLength'])) ; 809 Common.UIString('%d Bytes', eventData['encodedDataLength']));
810 break; 810 break;
811 case recordTypes.CompileScript: 811 case recordTypes.CompileScript:
812 case recordTypes.EvaluateScript: 812 case recordTypes.EvaluateScript:
813 var url = eventData && eventData['url']; 813 var url = eventData && eventData['url'];
814 if (url) 814 if (url)
815 contentHelper.appendLocationRow( 815 contentHelper.appendLocationRow(
816 WebInspector.UIString('Script'), url, eventData['lineNumber'], eve ntData['columnNumber']); 816 Common.UIString('Script'), url, eventData['lineNumber'], eventData ['columnNumber']);
817 break; 817 break;
818 case recordTypes.Paint: 818 case recordTypes.Paint:
819 var clip = eventData['clip']; 819 var clip = eventData['clip'];
820 contentHelper.appendTextRow( 820 contentHelper.appendTextRow(
821 WebInspector.UIString('Location'), WebInspector.UIString('(%d, %d)', clip[0], clip[1])); 821 Common.UIString('Location'), Common.UIString('(%d, %d)', clip[0], cl ip[1]));
822 var clipWidth = WebInspector.TimelineUIUtils.quadWidth(clip); 822 var clipWidth = Timeline.TimelineUIUtils.quadWidth(clip);
823 var clipHeight = WebInspector.TimelineUIUtils.quadHeight(clip); 823 var clipHeight = Timeline.TimelineUIUtils.quadHeight(clip);
824 contentHelper.appendTextRow( 824 contentHelper.appendTextRow(
825 WebInspector.UIString('Dimensions'), WebInspector.UIString('%d × %d' , clipWidth, clipHeight)); 825 Common.UIString('Dimensions'), Common.UIString('%d × %d', clipWidth, clipHeight));
826 // Fall-through intended. 826 // Fall-through intended.
827 827
828 case recordTypes.PaintSetup: 828 case recordTypes.PaintSetup:
829 case recordTypes.Rasterize: 829 case recordTypes.Rasterize:
830 case recordTypes.ScrollLayer: 830 case recordTypes.ScrollLayer:
831 relatedNodeLabel = WebInspector.UIString('Layer Root'); 831 relatedNodeLabel = Common.UIString('Layer Root');
832 break; 832 break;
833 case recordTypes.PaintImage: 833 case recordTypes.PaintImage:
834 case recordTypes.DecodeLazyPixelRef: 834 case recordTypes.DecodeLazyPixelRef:
835 case recordTypes.DecodeImage: 835 case recordTypes.DecodeImage:
836 case recordTypes.ResizeImage: 836 case recordTypes.ResizeImage:
837 case recordTypes.DrawLazyPixelRef: 837 case recordTypes.DrawLazyPixelRef:
838 relatedNodeLabel = WebInspector.UIString('Owner Element'); 838 relatedNodeLabel = Common.UIString('Owner Element');
839 if (timelineData.url) 839 if (timelineData.url)
840 contentHelper.appendElementRow( 840 contentHelper.appendElementRow(
841 WebInspector.UIString('Image URL'), WebInspector.linkifyResourceAs Node(timelineData.url)); 841 Common.UIString('Image URL'), Components.linkifyResourceAsNode(tim elineData.url));
842 break; 842 break;
843 case recordTypes.ParseAuthorStyleSheet: 843 case recordTypes.ParseAuthorStyleSheet:
844 var url = eventData['styleSheetUrl']; 844 var url = eventData['styleSheetUrl'];
845 if (url) 845 if (url)
846 contentHelper.appendElementRow( 846 contentHelper.appendElementRow(
847 WebInspector.UIString('Stylesheet URL'), WebInspector.linkifyResou rceAsNode(url)); 847 Common.UIString('Stylesheet URL'), Components.linkifyResourceAsNod e(url));
848 break; 848 break;
849 case recordTypes.UpdateLayoutTree: // We don't want to see default detail s. 849 case recordTypes.UpdateLayoutTree: // We don't want to see default detail s.
850 case recordTypes.RecalculateStyles: 850 case recordTypes.RecalculateStyles:
851 contentHelper.appendTextRow(WebInspector.UIString('Elements Affected'), event.args['elementCount']); 851 contentHelper.appendTextRow(Common.UIString('Elements Affected'), event. args['elementCount']);
852 break; 852 break;
853 case recordTypes.Layout: 853 case recordTypes.Layout:
854 var beginData = event.args['beginData']; 854 var beginData = event.args['beginData'];
855 contentHelper.appendTextRow( 855 contentHelper.appendTextRow(
856 WebInspector.UIString('Nodes That Need Layout'), 856 Common.UIString('Nodes That Need Layout'),
857 WebInspector.UIString('%s of %s', beginData['dirtyObjects'], beginDa ta['totalObjects'])); 857 Common.UIString('%s of %s', beginData['dirtyObjects'], beginData['to talObjects']));
858 relatedNodeLabel = WebInspector.UIString('Layout root'); 858 relatedNodeLabel = Common.UIString('Layout root');
859 break; 859 break;
860 case recordTypes.ConsoleTime: 860 case recordTypes.ConsoleTime:
861 contentHelper.appendTextRow(WebInspector.UIString('Message'), event.name ); 861 contentHelper.appendTextRow(Common.UIString('Message'), event.name);
862 break; 862 break;
863 case recordTypes.WebSocketCreate: 863 case recordTypes.WebSocketCreate:
864 case recordTypes.WebSocketSendHandshakeRequest: 864 case recordTypes.WebSocketSendHandshakeRequest:
865 case recordTypes.WebSocketReceiveHandshakeResponse: 865 case recordTypes.WebSocketReceiveHandshakeResponse:
866 case recordTypes.WebSocketDestroy: 866 case recordTypes.WebSocketDestroy:
867 var initiatorData = initiator ? initiator.args['data'] : eventData; 867 var initiatorData = initiator ? initiator.args['data'] : eventData;
868 if (typeof initiatorData['webSocketURL'] !== 'undefined') 868 if (typeof initiatorData['webSocketURL'] !== 'undefined')
869 contentHelper.appendTextRow(WebInspector.UIString('URL'), initiatorDat a['webSocketURL']); 869 contentHelper.appendTextRow(Common.UIString('URL'), initiatorData['web SocketURL']);
870 if (typeof initiatorData['webSocketProtocol'] !== 'undefined') 870 if (typeof initiatorData['webSocketProtocol'] !== 'undefined')
871 contentHelper.appendTextRow(WebInspector.UIString('WebSocket Protocol' ), initiatorData['webSocketProtocol']); 871 contentHelper.appendTextRow(Common.UIString('WebSocket Protocol'), ini tiatorData['webSocketProtocol']);
872 if (typeof eventData['message'] !== 'undefined') 872 if (typeof eventData['message'] !== 'undefined')
873 contentHelper.appendTextRow(WebInspector.UIString('Message'), eventDat a['message']); 873 contentHelper.appendTextRow(Common.UIString('Message'), eventData['mes sage']);
874 break; 874 break;
875 case recordTypes.EmbedderCallback: 875 case recordTypes.EmbedderCallback:
876 contentHelper.appendTextRow(WebInspector.UIString('Callback Function'), eventData['callbackName']); 876 contentHelper.appendTextRow(Common.UIString('Callback Function'), eventD ata['callbackName']);
877 break; 877 break;
878 case recordTypes.Animation: 878 case recordTypes.Animation:
879 if (event.phase === WebInspector.TracingModel.Phase.NestableAsyncInstant ) 879 if (event.phase === SDK.TracingModel.Phase.NestableAsyncInstant)
880 contentHelper.appendTextRow(WebInspector.UIString('State'), eventData[ 'state']); 880 contentHelper.appendTextRow(Common.UIString('State'), eventData['state ']);
881 break; 881 break;
882 case recordTypes.ParseHTML: 882 case recordTypes.ParseHTML:
883 var beginData = event.args['beginData']; 883 var beginData = event.args['beginData'];
884 var url = beginData['url']; 884 var url = beginData['url'];
885 var startLine = beginData['startLine'] - 1; 885 var startLine = beginData['startLine'] - 1;
886 var endLine = event.args['endData'] ? event.args['endData']['endLine'] - 1 : undefined; 886 var endLine = event.args['endData'] ? event.args['endData']['endLine'] - 1 : undefined;
887 if (url) 887 if (url)
888 contentHelper.appendLocationRange(WebInspector.UIString('Range'), url, startLine, endLine); 888 contentHelper.appendLocationRange(Common.UIString('Range'), url, start Line, endLine);
889 break; 889 break;
890 890
891 case recordTypes.FireIdleCallback: 891 case recordTypes.FireIdleCallback:
892 contentHelper.appendTextRow( 892 contentHelper.appendTextRow(
893 WebInspector.UIString('Allotted Time'), Number.millisToString(eventD ata['allottedMilliseconds'])); 893 Common.UIString('Allotted Time'), Number.millisToString(eventData['a llottedMilliseconds']));
894 contentHelper.appendTextRow(WebInspector.UIString('Invoked by Timeout'), eventData['timedOut']); 894 contentHelper.appendTextRow(Common.UIString('Invoked by Timeout'), event Data['timedOut']);
895 // Fall-through intended. 895 // Fall-through intended.
896 896
897 case recordTypes.RequestIdleCallback: 897 case recordTypes.RequestIdleCallback:
898 case recordTypes.CancelIdleCallback: 898 case recordTypes.CancelIdleCallback:
899 contentHelper.appendTextRow(WebInspector.UIString('Callback ID'), eventD ata['id']); 899 contentHelper.appendTextRow(Common.UIString('Callback ID'), eventData['i d']);
900 break; 900 break;
901 case recordTypes.EventDispatch: 901 case recordTypes.EventDispatch:
902 contentHelper.appendTextRow(WebInspector.UIString('Type'), eventData['ty pe']); 902 contentHelper.appendTextRow(Common.UIString('Type'), eventData['type']);
903 break; 903 break;
904 904
905 default: 905 default:
906 var detailsNode = 906 var detailsNode =
907 WebInspector.TimelineUIUtils.buildDetailsNodeForTraceEvent(event, mo del.targetByEvent(event), linkifier); 907 Timeline.TimelineUIUtils.buildDetailsNodeForTraceEvent(event, model. targetByEvent(event), linkifier);
908 if (detailsNode) 908 if (detailsNode)
909 contentHelper.appendElementRow(WebInspector.UIString('Details'), detai lsNode); 909 contentHelper.appendElementRow(Common.UIString('Details'), detailsNode );
910 break; 910 break;
911 } 911 }
912 912
913 if (timelineData.timeWaitingForMainThread) 913 if (timelineData.timeWaitingForMainThread)
914 contentHelper.appendTextRow( 914 contentHelper.appendTextRow(
915 WebInspector.UIString('Time Waiting for Main Thread'), 915 Common.UIString('Time Waiting for Main Thread'),
916 Number.millisToString(timelineData.timeWaitingForMainThread, true)); 916 Number.millisToString(timelineData.timeWaitingForMainThread, true));
917 917
918 var relatedNode = relatedNodesMap && relatedNodesMap.get(timelineData.backen dNodeId); 918 var relatedNode = relatedNodesMap && relatedNodesMap.get(timelineData.backen dNodeId);
919 if (relatedNode) 919 if (relatedNode)
920 contentHelper.appendElementRow( 920 contentHelper.appendElementRow(
921 relatedNodeLabel || WebInspector.UIString('Related Node'), 921 relatedNodeLabel || Common.UIString('Related Node'),
922 WebInspector.DOMPresentationUtils.linkifyNodeReference(relatedNode)); 922 Components.DOMPresentationUtils.linkifyNodeReference(relatedNode));
923 923
924 if (event[WebInspector.TimelineUIUtils._previewElementSymbol]) { 924 if (event[Timeline.TimelineUIUtils._previewElementSymbol]) {
925 contentHelper.addSection(WebInspector.UIString('Preview')); 925 contentHelper.addSection(Common.UIString('Preview'));
926 contentHelper.appendElementRow('', event[WebInspector.TimelineUIUtils._pre viewElementSymbol]); 926 contentHelper.appendElementRow('', event[Timeline.TimelineUIUtils._preview ElementSymbol]);
927 } 927 }
928 928
929 if (timelineData.stackTraceForSelfOrInitiator() || WebInspector.Invalidation Tracker.invalidationEventsFor(event)) 929 if (timelineData.stackTraceForSelfOrInitiator() || TimelineModel.Invalidatio nTracker.invalidationEventsFor(event))
930 WebInspector.TimelineUIUtils._generateCauses(event, model.targetByEvent(ev ent), relatedNodesMap, contentHelper); 930 Timeline.TimelineUIUtils._generateCauses(event, model.targetByEvent(event) , relatedNodesMap, contentHelper);
931 931
932 var stats = {}; 932 var stats = {};
933 var showPieChart = detailed && WebInspector.TimelineUIUtils._aggregatedStats ForTraceEvent(stats, model, event); 933 var showPieChart = detailed && Timeline.TimelineUIUtils._aggregatedStatsForT raceEvent(stats, model, event);
934 if (showPieChart) { 934 if (showPieChart) {
935 contentHelper.addSection(WebInspector.UIString('Aggregated Time')); 935 contentHelper.addSection(Common.UIString('Aggregated Time'));
936 var pieChart = WebInspector.TimelineUIUtils.generatePieChart( 936 var pieChart = Timeline.TimelineUIUtils.generatePieChart(
937 stats, WebInspector.TimelineUIUtils.eventStyle(event).category, event. selfTime); 937 stats, Timeline.TimelineUIUtils.eventStyle(event).category, event.self Time);
938 contentHelper.appendElementRow('', pieChart); 938 contentHelper.appendElementRow('', pieChart);
939 } 939 }
940 940
941 return contentHelper.fragment; 941 return contentHelper.fragment;
942 } 942 }
943 943
944 /** 944 /**
945 * @param {!WebInspector.TimelineModel} model 945 * @param {!TimelineModel.TimelineModel} model
946 * @param {number} startTime 946 * @param {number} startTime
947 * @param {number} endTime 947 * @param {number} endTime
948 * @return {!DocumentFragment} 948 * @return {!DocumentFragment}
949 */ 949 */
950 static buildRangeStats(model, startTime, endTime) { 950 static buildRangeStats(model, startTime, endTime) {
951 var aggregatedStats = {}; 951 var aggregatedStats = {};
952 952
953 /** 953 /**
954 * @param {number} value 954 * @param {number} value
955 * @param {!WebInspector.TimelineModel.Record} task 955 * @param {!TimelineModel.TimelineModel.Record} task
956 * @return {number} 956 * @return {number}
957 */ 957 */
958 function compareEndTime(value, task) { 958 function compareEndTime(value, task) {
959 return value < task.endTime() ? -1 : 1; 959 return value < task.endTime() ? -1 : 1;
960 } 960 }
961 var mainThreadTasks = model.mainThreadTasks(); 961 var mainThreadTasks = model.mainThreadTasks();
962 var taskIndex = mainThreadTasks.lowerBound(startTime, compareEndTime); 962 var taskIndex = mainThreadTasks.lowerBound(startTime, compareEndTime);
963 for (; taskIndex < mainThreadTasks.length; ++taskIndex) { 963 for (; taskIndex < mainThreadTasks.length; ++taskIndex) {
964 var task = mainThreadTasks[taskIndex]; 964 var task = mainThreadTasks[taskIndex];
965 if (task.startTime() > endTime) 965 if (task.startTime() > endTime)
966 break; 966 break;
967 if (task.startTime() > startTime && task.endTime() < endTime) { 967 if (task.startTime() > startTime && task.endTime() < endTime) {
968 // cache stats for top-level entries that fit the range entirely. 968 // cache stats for top-level entries that fit the range entirely.
969 var taskStats = task[WebInspector.TimelineUIUtils._aggregatedStatsKey]; 969 var taskStats = task[Timeline.TimelineUIUtils._aggregatedStatsKey];
970 if (!taskStats) { 970 if (!taskStats) {
971 taskStats = {}; 971 taskStats = {};
972 WebInspector.TimelineUIUtils._collectAggregatedStatsForRecord(task, st artTime, endTime, taskStats); 972 Timeline.TimelineUIUtils._collectAggregatedStatsForRecord(task, startT ime, endTime, taskStats);
973 task[WebInspector.TimelineUIUtils._aggregatedStatsKey] = taskStats; 973 task[Timeline.TimelineUIUtils._aggregatedStatsKey] = taskStats;
974 } 974 }
975 for (var key in taskStats) 975 for (var key in taskStats)
976 aggregatedStats[key] = (aggregatedStats[key] || 0) + taskStats[key]; 976 aggregatedStats[key] = (aggregatedStats[key] || 0) + taskStats[key];
977 continue; 977 continue;
978 } 978 }
979 WebInspector.TimelineUIUtils._collectAggregatedStatsForRecord(task, startT ime, endTime, aggregatedStats); 979 Timeline.TimelineUIUtils._collectAggregatedStatsForRecord(task, startTime, endTime, aggregatedStats);
980 } 980 }
981 981
982 var aggregatedTotal = 0; 982 var aggregatedTotal = 0;
983 for (var categoryName in aggregatedStats) 983 for (var categoryName in aggregatedStats)
984 aggregatedTotal += aggregatedStats[categoryName]; 984 aggregatedTotal += aggregatedStats[categoryName];
985 aggregatedStats['idle'] = Math.max(0, endTime - startTime - aggregatedTotal) ; 985 aggregatedStats['idle'] = Math.max(0, endTime - startTime - aggregatedTotal) ;
986 986
987 var startOffset = startTime - model.minimumRecordTime(); 987 var startOffset = startTime - model.minimumRecordTime();
988 var endOffset = endTime - model.minimumRecordTime(); 988 var endOffset = endTime - model.minimumRecordTime();
989 989
990 var contentHelper = new WebInspector.TimelineDetailsContentHelper(null, null ); 990 var contentHelper = new Timeline.TimelineDetailsContentHelper(null, null);
991 contentHelper.addSection(WebInspector.UIString( 991 contentHelper.addSection(Common.UIString(
992 'Range: %s \u2013 %s', Number.millisToString(startOffset), Number.milli sToString(endOffset))); 992 'Range: %s \u2013 %s', Number.millisToString(startOffset), Number.milli sToString(endOffset)));
993 var pieChart = WebInspector.TimelineUIUtils.generatePieChart(aggregatedStats ); 993 var pieChart = Timeline.TimelineUIUtils.generatePieChart(aggregatedStats);
994 contentHelper.appendElementRow('', pieChart); 994 contentHelper.appendElementRow('', pieChart);
995 return contentHelper.fragment; 995 return contentHelper.fragment;
996 } 996 }
997 997
998 /** 998 /**
999 * @param {!WebInspector.TimelineModel.Record} record 999 * @param {!TimelineModel.TimelineModel.Record} record
1000 * @param {number} startTime 1000 * @param {number} startTime
1001 * @param {number} endTime 1001 * @param {number} endTime
1002 * @param {!Object} aggregatedStats 1002 * @param {!Object} aggregatedStats
1003 */ 1003 */
1004 static _collectAggregatedStatsForRecord(record, startTime, endTime, aggregated Stats) { 1004 static _collectAggregatedStatsForRecord(record, startTime, endTime, aggregated Stats) {
1005 var records = []; 1005 var records = [];
1006 1006
1007 if (!record.endTime() || record.endTime() < startTime || record.startTime() > endTime) 1007 if (!record.endTime() || record.endTime() < startTime || record.startTime() > endTime)
1008 return; 1008 return;
1009 1009
1010 var childrenTime = 0; 1010 var childrenTime = 0;
1011 var children = record.children() || []; 1011 var children = record.children() || [];
1012 for (var i = 0; i < children.length; ++i) { 1012 for (var i = 0; i < children.length; ++i) {
1013 var child = children[i]; 1013 var child = children[i];
1014 if (!child.endTime() || child.endTime() < startTime || child.startTime() > endTime) 1014 if (!child.endTime() || child.endTime() < startTime || child.startTime() > endTime)
1015 continue; 1015 continue;
1016 childrenTime += Math.min(endTime, child.endTime()) - Math.max(startTime, c hild.startTime()); 1016 childrenTime += Math.min(endTime, child.endTime()) - Math.max(startTime, c hild.startTime());
1017 WebInspector.TimelineUIUtils._collectAggregatedStatsForRecord(child, start Time, endTime, aggregatedStats); 1017 Timeline.TimelineUIUtils._collectAggregatedStatsForRecord(child, startTime , endTime, aggregatedStats);
1018 } 1018 }
1019 var categoryName = WebInspector.TimelineUIUtils.categoryForRecord(record).na me; 1019 var categoryName = Timeline.TimelineUIUtils.categoryForRecord(record).name;
1020 var ownTime = Math.min(endTime, record.endTime()) - Math.max(startTime, reco rd.startTime()) - childrenTime; 1020 var ownTime = Math.min(endTime, record.endTime()) - Math.max(startTime, reco rd.startTime()) - childrenTime;
1021 aggregatedStats[categoryName] = (aggregatedStats[categoryName] || 0) + ownTi me; 1021 aggregatedStats[categoryName] = (aggregatedStats[categoryName] || 0) + ownTi me;
1022 } 1022 }
1023 1023
1024 /** 1024 /**
1025 * @param {!WebInspector.TimelineModel.NetworkRequest} request 1025 * @param {!TimelineModel.TimelineModel.NetworkRequest} request
1026 * @param {!WebInspector.TimelineModel} model 1026 * @param {!TimelineModel.TimelineModel} model
1027 * @param {!WebInspector.Linkifier} linkifier 1027 * @param {!Components.Linkifier} linkifier
1028 * @return {!Promise<!DocumentFragment>} 1028 * @return {!Promise<!DocumentFragment>}
1029 */ 1029 */
1030 static buildNetworkRequestDetails(request, model, linkifier) { 1030 static buildNetworkRequestDetails(request, model, linkifier) {
1031 var target = model.targetByEvent(request.children[0]); 1031 var target = model.targetByEvent(request.children[0]);
1032 var contentHelper = new WebInspector.TimelineDetailsContentHelper(target, li nkifier); 1032 var contentHelper = new Timeline.TimelineDetailsContentHelper(target, linkif ier);
1033 1033
1034 var duration = request.endTime - (request.startTime || -Infinity); 1034 var duration = request.endTime - (request.startTime || -Infinity);
1035 var items = []; 1035 var items = [];
1036 if (request.url) 1036 if (request.url)
1037 contentHelper.appendElementRow(WebInspector.UIString('URL'), WebInspector. linkifyURLAsNode(request.url)); 1037 contentHelper.appendElementRow(Common.UIString('URL'), UI.linkifyURLAsNode (request.url));
1038 if (isFinite(duration)) 1038 if (isFinite(duration))
1039 contentHelper.appendTextRow(WebInspector.UIString('Duration'), Number.mill isToString(duration, true)); 1039 contentHelper.appendTextRow(Common.UIString('Duration'), Number.millisToSt ring(duration, true));
1040 if (request.requestMethod) 1040 if (request.requestMethod)
1041 contentHelper.appendTextRow(WebInspector.UIString('Request Method'), reque st.requestMethod); 1041 contentHelper.appendTextRow(Common.UIString('Request Method'), request.req uestMethod);
1042 if (typeof request.priority === 'string') { 1042 if (typeof request.priority === 'string') {
1043 var priority = WebInspector.uiLabelForPriority(/** @type {!Protocol.Networ k.ResourcePriority} */ (request.priority)); 1043 var priority = Components.uiLabelForPriority(/** @type {!Protocol.Network. ResourcePriority} */ (request.priority));
1044 contentHelper.appendTextRow(WebInspector.UIString('Priority'), priority); 1044 contentHelper.appendTextRow(Common.UIString('Priority'), priority);
1045 } 1045 }
1046 if (request.mimeType) 1046 if (request.mimeType)
1047 contentHelper.appendTextRow(WebInspector.UIString('Mime Type'), request.mi meType); 1047 contentHelper.appendTextRow(Common.UIString('Mime Type'), request.mimeType );
1048 1048
1049 var title = WebInspector.UIString('Initiator'); 1049 var title = Common.UIString('Initiator');
1050 var sendRequest = request.children[0]; 1050 var sendRequest = request.children[0];
1051 var topFrame = WebInspector.TimelineData.forEvent(sendRequest).topFrame(); 1051 var topFrame = TimelineModel.TimelineData.forEvent(sendRequest).topFrame();
1052 if (topFrame) { 1052 if (topFrame) {
1053 var link = linkifier.maybeLinkifyConsoleCallFrame(target, topFrame); 1053 var link = linkifier.maybeLinkifyConsoleCallFrame(target, topFrame);
1054 if (link) 1054 if (link)
1055 contentHelper.appendElementRow(title, link); 1055 contentHelper.appendElementRow(title, link);
1056 } else { 1056 } else {
1057 var initiator = WebInspector.TimelineData.forEvent(sendRequest).initiator( ); 1057 var initiator = TimelineModel.TimelineData.forEvent(sendRequest).initiator ();
1058 if (initiator) { 1058 if (initiator) {
1059 var initiatorURL = WebInspector.TimelineData.forEvent(initiator).url; 1059 var initiatorURL = TimelineModel.TimelineData.forEvent(initiator).url;
1060 if (initiatorURL) { 1060 if (initiatorURL) {
1061 var link = linkifier.maybeLinkifyScriptLocation(target, null, initiato rURL, 0); 1061 var link = linkifier.maybeLinkifyScriptLocation(target, null, initiato rURL, 0);
1062 if (link) 1062 if (link)
1063 contentHelper.appendElementRow(title, link); 1063 contentHelper.appendElementRow(title, link);
1064 } 1064 }
1065 } 1065 }
1066 } 1066 }
1067 1067
1068 /** 1068 /**
1069 * @param {function(?Element)} fulfill 1069 * @param {function(?Element)} fulfill
1070 */ 1070 */
1071 function action(fulfill) { 1071 function action(fulfill) {
1072 WebInspector.DOMPresentationUtils.buildImagePreviewContents( 1072 Components.DOMPresentationUtils.buildImagePreviewContents(
1073 /** @type {!WebInspector.Target} */ (target), request.url, false, save Image); 1073 /** @type {!SDK.Target} */ (target), request.url, false, saveImage);
1074 /** 1074 /**
1075 * @param {!Element=} element 1075 * @param {!Element=} element
1076 */ 1076 */
1077 function saveImage(element) { 1077 function saveImage(element) {
1078 request.previewElement = element || null; 1078 request.previewElement = element || null;
1079 fulfill(request.previewElement); 1079 fulfill(request.previewElement);
1080 } 1080 }
1081 } 1081 }
1082 var previewPromise; 1082 var previewPromise;
1083 if (request.previewElement) 1083 if (request.previewElement)
1084 previewPromise = Promise.resolve(request.previewElement); 1084 previewPromise = Promise.resolve(request.previewElement);
1085 else 1085 else
1086 previewPromise = request.url && target ? new Promise(action) : Promise.res olve(null); 1086 previewPromise = request.url && target ? new Promise(action) : Promise.res olve(null);
1087 /** 1087 /**
1088 * @param {?Element} element 1088 * @param {?Element} element
1089 * @return {!DocumentFragment} 1089 * @return {!DocumentFragment}
1090 */ 1090 */
1091 function appendPreview(element) { 1091 function appendPreview(element) {
1092 if (element) 1092 if (element)
1093 contentHelper.appendElementRow(WebInspector.UIString('Preview'), request .previewElement); 1093 contentHelper.appendElementRow(Common.UIString('Preview'), request.previ ewElement);
1094 return contentHelper.fragment; 1094 return contentHelper.fragment;
1095 } 1095 }
1096 return previewPromise.then(appendPreview); 1096 return previewPromise.then(appendPreview);
1097 } 1097 }
1098 1098
1099 /** 1099 /**
1100 * @param {!Array<!Protocol.Runtime.CallFrame>} callFrames 1100 * @param {!Array<!Protocol.Runtime.CallFrame>} callFrames
1101 * @return {!Protocol.Runtime.StackTrace} 1101 * @return {!Protocol.Runtime.StackTrace}
1102 */ 1102 */
1103 static _stackTraceFromCallFrames(callFrames) { 1103 static _stackTraceFromCallFrames(callFrames) {
1104 return /** @type {!Protocol.Runtime.StackTrace} */ ({callFrames: callFrames} ); 1104 return /** @type {!Protocol.Runtime.StackTrace} */ ({callFrames: callFrames} );
1105 } 1105 }
1106 1106
1107 /** 1107 /**
1108 * @param {!WebInspector.TracingModel.Event} event 1108 * @param {!SDK.TracingModel.Event} event
1109 * @param {?WebInspector.Target} target 1109 * @param {?SDK.Target} target
1110 * @param {?Map<number, ?WebInspector.DOMNode>} relatedNodesMap 1110 * @param {?Map<number, ?SDK.DOMNode>} relatedNodesMap
1111 * @param {!WebInspector.TimelineDetailsContentHelper} contentHelper 1111 * @param {!Timeline.TimelineDetailsContentHelper} contentHelper
1112 */ 1112 */
1113 static _generateCauses(event, target, relatedNodesMap, contentHelper) { 1113 static _generateCauses(event, target, relatedNodesMap, contentHelper) {
1114 var recordTypes = WebInspector.TimelineModel.RecordType; 1114 var recordTypes = TimelineModel.TimelineModel.RecordType;
1115 1115
1116 var callSiteStackLabel; 1116 var callSiteStackLabel;
1117 var stackLabel; 1117 var stackLabel;
1118 1118
1119 switch (event.name) { 1119 switch (event.name) {
1120 case recordTypes.TimerFire: 1120 case recordTypes.TimerFire:
1121 callSiteStackLabel = WebInspector.UIString('Timer Installed'); 1121 callSiteStackLabel = Common.UIString('Timer Installed');
1122 break; 1122 break;
1123 case recordTypes.FireAnimationFrame: 1123 case recordTypes.FireAnimationFrame:
1124 callSiteStackLabel = WebInspector.UIString('Animation Frame Requested'); 1124 callSiteStackLabel = Common.UIString('Animation Frame Requested');
1125 break; 1125 break;
1126 case recordTypes.FireIdleCallback: 1126 case recordTypes.FireIdleCallback:
1127 callSiteStackLabel = WebInspector.UIString('Idle Callback Requested'); 1127 callSiteStackLabel = Common.UIString('Idle Callback Requested');
1128 break; 1128 break;
1129 case recordTypes.UpdateLayoutTree: 1129 case recordTypes.UpdateLayoutTree:
1130 case recordTypes.RecalculateStyles: 1130 case recordTypes.RecalculateStyles:
1131 stackLabel = WebInspector.UIString('Recalculation Forced'); 1131 stackLabel = Common.UIString('Recalculation Forced');
1132 break; 1132 break;
1133 case recordTypes.Layout: 1133 case recordTypes.Layout:
1134 callSiteStackLabel = WebInspector.UIString('First Layout Invalidation'); 1134 callSiteStackLabel = Common.UIString('First Layout Invalidation');
1135 stackLabel = WebInspector.UIString('Layout Forced'); 1135 stackLabel = Common.UIString('Layout Forced');
1136 break; 1136 break;
1137 } 1137 }
1138 1138
1139 var timelineData = WebInspector.TimelineData.forEvent(event); 1139 var timelineData = TimelineModel.TimelineData.forEvent(event);
1140 // Direct cause. 1140 // Direct cause.
1141 if (timelineData.stackTrace && timelineData.stackTrace.length) { 1141 if (timelineData.stackTrace && timelineData.stackTrace.length) {
1142 contentHelper.addSection(WebInspector.UIString('Call Stacks')); 1142 contentHelper.addSection(Common.UIString('Call Stacks'));
1143 contentHelper.appendStackTrace( 1143 contentHelper.appendStackTrace(
1144 stackLabel || WebInspector.UIString('Stack Trace'), 1144 stackLabel || Common.UIString('Stack Trace'),
1145 WebInspector.TimelineUIUtils._stackTraceFromCallFrames(timelineData.st ackTrace)); 1145 Timeline.TimelineUIUtils._stackTraceFromCallFrames(timelineData.stackT race));
1146 } 1146 }
1147 1147
1148 var initiator = WebInspector.TimelineData.forEvent(event).initiator(); 1148 var initiator = TimelineModel.TimelineData.forEvent(event).initiator();
1149 // Indirect causes. 1149 // Indirect causes.
1150 if (WebInspector.InvalidationTracker.invalidationEventsFor(event) && target) { // Full invalidation tracking (experimental). 1150 if (TimelineModel.InvalidationTracker.invalidationEventsFor(event) && target ) { // Full invalidation tracking (experimental).
1151 contentHelper.addSection(WebInspector.UIString('Invalidations')); 1151 contentHelper.addSection(Common.UIString('Invalidations'));
1152 WebInspector.TimelineUIUtils._generateInvalidations(event, target, related NodesMap, contentHelper); 1152 Timeline.TimelineUIUtils._generateInvalidations(event, target, relatedNode sMap, contentHelper);
1153 } else if (initiator) { // Partial invalidation tracking. 1153 } else if (initiator) { // Partial invalidation tracking.
1154 var initiatorStackTrace = WebInspector.TimelineData.forEvent(initiator).st ackTrace; 1154 var initiatorStackTrace = TimelineModel.TimelineData.forEvent(initiator).s tackTrace;
1155 if (initiatorStackTrace) { 1155 if (initiatorStackTrace) {
1156 contentHelper.appendStackTrace( 1156 contentHelper.appendStackTrace(
1157 callSiteStackLabel || WebInspector.UIString('First Invalidated'), 1157 callSiteStackLabel || Common.UIString('First Invalidated'),
1158 WebInspector.TimelineUIUtils._stackTraceFromCallFrames(initiatorStac kTrace)); 1158 Timeline.TimelineUIUtils._stackTraceFromCallFrames(initiatorStackTra ce));
1159 } 1159 }
1160 } 1160 }
1161 } 1161 }
1162 1162
1163 /** 1163 /**
1164 * @param {!WebInspector.TracingModel.Event} event 1164 * @param {!SDK.TracingModel.Event} event
1165 * @param {!WebInspector.Target} target 1165 * @param {!SDK.Target} target
1166 * @param {?Map<number, ?WebInspector.DOMNode>} relatedNodesMap 1166 * @param {?Map<number, ?SDK.DOMNode>} relatedNodesMap
1167 * @param {!WebInspector.TimelineDetailsContentHelper} contentHelper 1167 * @param {!Timeline.TimelineDetailsContentHelper} contentHelper
1168 */ 1168 */
1169 static _generateInvalidations(event, target, relatedNodesMap, contentHelper) { 1169 static _generateInvalidations(event, target, relatedNodesMap, contentHelper) {
1170 var invalidationTrackingEvents = WebInspector.InvalidationTracker.invalidati onEventsFor(event); 1170 var invalidationTrackingEvents = TimelineModel.InvalidationTracker.invalidat ionEventsFor(event);
1171 var invalidations = {}; 1171 var invalidations = {};
1172 invalidationTrackingEvents.forEach(function(invalidation) { 1172 invalidationTrackingEvents.forEach(function(invalidation) {
1173 if (!invalidations[invalidation.type]) 1173 if (!invalidations[invalidation.type])
1174 invalidations[invalidation.type] = [invalidation]; 1174 invalidations[invalidation.type] = [invalidation];
1175 else 1175 else
1176 invalidations[invalidation.type].push(invalidation); 1176 invalidations[invalidation.type].push(invalidation);
1177 }); 1177 });
1178 1178
1179 Object.keys(invalidations).forEach(function(type) { 1179 Object.keys(invalidations).forEach(function(type) {
1180 WebInspector.TimelineUIUtils._generateInvalidationsForType( 1180 Timeline.TimelineUIUtils._generateInvalidationsForType(
1181 type, target, invalidations[type], relatedNodesMap, contentHelper); 1181 type, target, invalidations[type], relatedNodesMap, contentHelper);
1182 }); 1182 });
1183 } 1183 }
1184 1184
1185 /** 1185 /**
1186 * @param {string} type 1186 * @param {string} type
1187 * @param {!WebInspector.Target} target 1187 * @param {!SDK.Target} target
1188 * @param {!Array.<!WebInspector.InvalidationTrackingEvent>} invalidations 1188 * @param {!Array.<!TimelineModel.InvalidationTrackingEvent>} invalidations
1189 * @param {?Map<number, ?WebInspector.DOMNode>} relatedNodesMap 1189 * @param {?Map<number, ?SDK.DOMNode>} relatedNodesMap
1190 * @param {!WebInspector.TimelineDetailsContentHelper} contentHelper 1190 * @param {!Timeline.TimelineDetailsContentHelper} contentHelper
1191 */ 1191 */
1192 static _generateInvalidationsForType(type, target, invalidations, relatedNodes Map, contentHelper) { 1192 static _generateInvalidationsForType(type, target, invalidations, relatedNodes Map, contentHelper) {
1193 var title; 1193 var title;
1194 switch (type) { 1194 switch (type) {
1195 case WebInspector.TimelineModel.RecordType.StyleRecalcInvalidationTracking : 1195 case TimelineModel.TimelineModel.RecordType.StyleRecalcInvalidationTrackin g:
1196 title = WebInspector.UIString('Style Invalidations'); 1196 title = Common.UIString('Style Invalidations');
1197 break; 1197 break;
1198 case WebInspector.TimelineModel.RecordType.LayoutInvalidationTracking: 1198 case TimelineModel.TimelineModel.RecordType.LayoutInvalidationTracking:
1199 title = WebInspector.UIString('Layout Invalidations'); 1199 title = Common.UIString('Layout Invalidations');
1200 break; 1200 break;
1201 default: 1201 default:
1202 title = WebInspector.UIString('Other Invalidations'); 1202 title = Common.UIString('Other Invalidations');
1203 break; 1203 break;
1204 } 1204 }
1205 1205
1206 var invalidationsTreeOutline = new TreeOutlineInShadow(); 1206 var invalidationsTreeOutline = new TreeOutlineInShadow();
1207 invalidationsTreeOutline.registerRequiredCSS('timeline/invalidationsTree.css '); 1207 invalidationsTreeOutline.registerRequiredCSS('timeline/invalidationsTree.css ');
1208 invalidationsTreeOutline.element.classList.add('invalidations-tree'); 1208 invalidationsTreeOutline.element.classList.add('invalidations-tree');
1209 1209
1210 var invalidationGroups = groupInvalidationsByCause(invalidations); 1210 var invalidationGroups = groupInvalidationsByCause(invalidations);
1211 invalidationGroups.forEach(function(group) { 1211 invalidationGroups.forEach(function(group) {
1212 var groupElement = 1212 var groupElement =
1213 new WebInspector.TimelineUIUtils.InvalidationsGroupElement(target, rel atedNodesMap, contentHelper, group); 1213 new Timeline.TimelineUIUtils.InvalidationsGroupElement(target, related NodesMap, contentHelper, group);
1214 invalidationsTreeOutline.appendChild(groupElement); 1214 invalidationsTreeOutline.appendChild(groupElement);
1215 }); 1215 });
1216 contentHelper.appendElementRow(title, invalidationsTreeOutline.element, fals e, true); 1216 contentHelper.appendElementRow(title, invalidationsTreeOutline.element, fals e, true);
1217 1217
1218 /** 1218 /**
1219 * @param {!Array<!WebInspector.InvalidationTrackingEvent>} invalidations 1219 * @param {!Array<!TimelineModel.InvalidationTrackingEvent>} invalidations
1220 * @return {!Array<!Array<!WebInspector.InvalidationTrackingEvent>>} 1220 * @return {!Array<!Array<!TimelineModel.InvalidationTrackingEvent>>}
1221 */ 1221 */
1222 function groupInvalidationsByCause(invalidations) { 1222 function groupInvalidationsByCause(invalidations) {
1223 /** @type {!Map<string, !Array<!WebInspector.InvalidationTrackingEvent>>} */ 1223 /** @type {!Map<string, !Array<!TimelineModel.InvalidationTrackingEvent>>} */
1224 var causeToInvalidationMap = new Map(); 1224 var causeToInvalidationMap = new Map();
1225 for (var index = 0; index < invalidations.length; index++) { 1225 for (var index = 0; index < invalidations.length; index++) {
1226 var invalidation = invalidations[index]; 1226 var invalidation = invalidations[index];
1227 var causeKey = ''; 1227 var causeKey = '';
1228 if (invalidation.cause.reason) 1228 if (invalidation.cause.reason)
1229 causeKey += invalidation.cause.reason + '.'; 1229 causeKey += invalidation.cause.reason + '.';
1230 if (invalidation.cause.stackTrace) { 1230 if (invalidation.cause.stackTrace) {
1231 invalidation.cause.stackTrace.forEach(function(stackFrame) { 1231 invalidation.cause.stackTrace.forEach(function(stackFrame) {
1232 causeKey += stackFrame['functionName'] + '.'; 1232 causeKey += stackFrame['functionName'] + '.';
1233 causeKey += stackFrame['scriptId'] + '.'; 1233 causeKey += stackFrame['scriptId'] + '.';
1234 causeKey += stackFrame['url'] + '.'; 1234 causeKey += stackFrame['url'] + '.';
1235 causeKey += stackFrame['lineNumber'] + '.'; 1235 causeKey += stackFrame['lineNumber'] + '.';
1236 causeKey += stackFrame['columnNumber'] + '.'; 1236 causeKey += stackFrame['columnNumber'] + '.';
1237 }); 1237 });
1238 } 1238 }
1239 1239
1240 if (causeToInvalidationMap.has(causeKey)) 1240 if (causeToInvalidationMap.has(causeKey))
1241 causeToInvalidationMap.get(causeKey).push(invalidation); 1241 causeToInvalidationMap.get(causeKey).push(invalidation);
1242 else 1242 else
1243 causeToInvalidationMap.set(causeKey, [invalidation]); 1243 causeToInvalidationMap.set(causeKey, [invalidation]);
1244 } 1244 }
1245 return causeToInvalidationMap.valuesArray(); 1245 return causeToInvalidationMap.valuesArray();
1246 } 1246 }
1247 } 1247 }
1248 1248
1249 /** 1249 /**
1250 * @param {!Set<number>} nodeIds 1250 * @param {!Set<number>} nodeIds
1251 * @param {!Array<!WebInspector.InvalidationTrackingEvent>} invalidations 1251 * @param {!Array<!TimelineModel.InvalidationTrackingEvent>} invalidations
1252 */ 1252 */
1253 static _collectInvalidationNodeIds(nodeIds, invalidations) { 1253 static _collectInvalidationNodeIds(nodeIds, invalidations) {
1254 nodeIds.addAll(invalidations.map(invalidation => invalidation.nodeId).filter (id => id)); 1254 nodeIds.addAll(invalidations.map(invalidation => invalidation.nodeId).filter (id => id));
1255 } 1255 }
1256 1256
1257 /** 1257 /**
1258 * @param {!Object} total 1258 * @param {!Object} total
1259 * @param {!WebInspector.TimelineModel} model 1259 * @param {!TimelineModel.TimelineModel} model
1260 * @param {!WebInspector.TracingModel.Event} event 1260 * @param {!SDK.TracingModel.Event} event
1261 * @return {boolean} 1261 * @return {boolean}
1262 */ 1262 */
1263 static _aggregatedStatsForTraceEvent(total, model, event) { 1263 static _aggregatedStatsForTraceEvent(total, model, event) {
1264 var events = model.inspectedTargetEvents(); 1264 var events = model.inspectedTargetEvents();
1265 /** 1265 /**
1266 * @param {number} startTime 1266 * @param {number} startTime
1267 * @param {!WebInspector.TracingModel.Event} e 1267 * @param {!SDK.TracingModel.Event} e
1268 * @return {number} 1268 * @return {number}
1269 */ 1269 */
1270 function eventComparator(startTime, e) { 1270 function eventComparator(startTime, e) {
1271 return startTime - e.startTime; 1271 return startTime - e.startTime;
1272 } 1272 }
1273 var index = events.binaryIndexOf(event.startTime, eventComparator); 1273 var index = events.binaryIndexOf(event.startTime, eventComparator);
1274 // Not a main thread event? 1274 // Not a main thread event?
1275 if (index < 0) 1275 if (index < 0)
1276 return false; 1276 return false;
1277 var hasChildren = false; 1277 var hasChildren = false;
1278 var endTime = event.endTime; 1278 var endTime = event.endTime;
1279 if (endTime) { 1279 if (endTime) {
1280 for (var i = index; i < events.length; i++) { 1280 for (var i = index; i < events.length; i++) {
1281 var nextEvent = events[i]; 1281 var nextEvent = events[i];
1282 if (nextEvent.startTime >= endTime) 1282 if (nextEvent.startTime >= endTime)
1283 break; 1283 break;
1284 if (!nextEvent.selfTime) 1284 if (!nextEvent.selfTime)
1285 continue; 1285 continue;
1286 if (nextEvent.thread !== event.thread) 1286 if (nextEvent.thread !== event.thread)
1287 continue; 1287 continue;
1288 if (i > index) 1288 if (i > index)
1289 hasChildren = true; 1289 hasChildren = true;
1290 var categoryName = WebInspector.TimelineUIUtils.eventStyle(nextEvent).ca tegory.name; 1290 var categoryName = Timeline.TimelineUIUtils.eventStyle(nextEvent).catego ry.name;
1291 total[categoryName] = (total[categoryName] || 0) + nextEvent.selfTime; 1291 total[categoryName] = (total[categoryName] || 0) + nextEvent.selfTime;
1292 } 1292 }
1293 } 1293 }
1294 if (WebInspector.TracingModel.isAsyncPhase(event.phase)) { 1294 if (SDK.TracingModel.isAsyncPhase(event.phase)) {
1295 if (event.endTime) { 1295 if (event.endTime) {
1296 var aggregatedTotal = 0; 1296 var aggregatedTotal = 0;
1297 for (var categoryName in total) 1297 for (var categoryName in total)
1298 aggregatedTotal += total[categoryName]; 1298 aggregatedTotal += total[categoryName];
1299 total['idle'] = Math.max(0, event.endTime - event.startTime - aggregated Total); 1299 total['idle'] = Math.max(0, event.endTime - event.startTime - aggregated Total);
1300 } 1300 }
1301 return false; 1301 return false;
1302 } 1302 }
1303 return hasChildren; 1303 return hasChildren;
1304 } 1304 }
1305 1305
1306 /** 1306 /**
1307 * @param {!WebInspector.TracingModel.Event} event 1307 * @param {!SDK.TracingModel.Event} event
1308 * @param {!WebInspector.Target} target 1308 * @param {!SDK.Target} target
1309 * @param {function(!Element=)} callback 1309 * @param {function(!Element=)} callback
1310 */ 1310 */
1311 static buildPicturePreviewContent(event, target, callback) { 1311 static buildPicturePreviewContent(event, target, callback) {
1312 new WebInspector.LayerPaintEvent(event, target).snapshotPromise().then(onSna pshotLoaded); 1312 new TimelineModel.LayerPaintEvent(event, target).snapshotPromise().then(onSn apshotLoaded);
1313 /** 1313 /**
1314 * @param {?WebInspector.SnapshotWithRect} snapshotWithRect 1314 * @param {?SDK.SnapshotWithRect} snapshotWithRect
1315 */ 1315 */
1316 function onSnapshotLoaded(snapshotWithRect) { 1316 function onSnapshotLoaded(snapshotWithRect) {
1317 if (!snapshotWithRect) { 1317 if (!snapshotWithRect) {
1318 callback(); 1318 callback();
1319 return; 1319 return;
1320 } 1320 }
1321 snapshotWithRect.snapshot.replay(null, null, 1).then(imageURL => onGotImag e(imageURL)); 1321 snapshotWithRect.snapshot.replay(null, null, 1).then(imageURL => onGotImag e(imageURL));
1322 snapshotWithRect.snapshot.release(); 1322 snapshotWithRect.snapshot.release();
1323 } 1323 }
1324 1324
1325 /** 1325 /**
1326 * @param {?string} imageURL 1326 * @param {?string} imageURL
1327 */ 1327 */
1328 function onGotImage(imageURL) { 1328 function onGotImage(imageURL) {
1329 if (!imageURL) { 1329 if (!imageURL) {
1330 callback(); 1330 callback();
1331 return; 1331 return;
1332 } 1332 }
1333 var container = createElement('div'); 1333 var container = createElement('div');
1334 container.classList.add('image-preview-container', 'vbox', 'link'); 1334 container.classList.add('image-preview-container', 'vbox', 'link');
1335 var img = container.createChild('img'); 1335 var img = container.createChild('img');
1336 img.src = imageURL; 1336 img.src = imageURL;
1337 var paintProfilerButton = container.createChild('a'); 1337 var paintProfilerButton = container.createChild('a');
1338 paintProfilerButton.textContent = WebInspector.UIString('Paint Profiler'); 1338 paintProfilerButton.textContent = Common.UIString('Paint Profiler');
1339 container.addEventListener('click', showPaintProfiler, false); 1339 container.addEventListener('click', showPaintProfiler, false);
1340 callback(container); 1340 callback(container);
1341 } 1341 }
1342 1342
1343 function showPaintProfiler() { 1343 function showPaintProfiler() {
1344 WebInspector.TimelinePanel.instance().select( 1344 Timeline.TimelinePanel.instance().select(
1345 WebInspector.TimelineSelection.fromTraceEvent(event), WebInspector.Tim elinePanel.DetailsTab.PaintProfiler); 1345 Timeline.TimelineSelection.fromTraceEvent(event), Timeline.TimelinePan el.DetailsTab.PaintProfiler);
1346 } 1346 }
1347 } 1347 }
1348 1348
1349 /** 1349 /**
1350 * @param {!WebInspector.TimelineModel.RecordType} recordType 1350 * @param {!TimelineModel.TimelineModel.RecordType} recordType
1351 * @param {?string} title 1351 * @param {?string} title
1352 * @param {number} position 1352 * @param {number} position
1353 * @return {!Element} 1353 * @return {!Element}
1354 */ 1354 */
1355 static createEventDivider(recordType, title, position) { 1355 static createEventDivider(recordType, title, position) {
1356 var eventDivider = createElement('div'); 1356 var eventDivider = createElement('div');
1357 eventDivider.className = 'resources-event-divider'; 1357 eventDivider.className = 'resources-event-divider';
1358 var recordTypes = WebInspector.TimelineModel.RecordType; 1358 var recordTypes = TimelineModel.TimelineModel.RecordType;
1359 1359
1360 if (recordType === recordTypes.MarkDOMContent) 1360 if (recordType === recordTypes.MarkDOMContent)
1361 eventDivider.className += ' resources-blue-divider'; 1361 eventDivider.className += ' resources-blue-divider';
1362 else if (recordType === recordTypes.MarkLoad) 1362 else if (recordType === recordTypes.MarkLoad)
1363 eventDivider.className += ' resources-red-divider'; 1363 eventDivider.className += ' resources-red-divider';
1364 else if (recordType === recordTypes.MarkFirstPaint) 1364 else if (recordType === recordTypes.MarkFirstPaint)
1365 eventDivider.className += ' resources-green-divider'; 1365 eventDivider.className += ' resources-green-divider';
1366 else if ( 1366 else if (
1367 recordType === recordTypes.TimeStamp || recordType === recordTypes.Conso leTime || 1367 recordType === recordTypes.TimeStamp || recordType === recordTypes.Conso leTime ||
1368 recordType === recordTypes.UserTiming) 1368 recordType === recordTypes.UserTiming)
1369 eventDivider.className += ' resources-orange-divider'; 1369 eventDivider.className += ' resources-orange-divider';
1370 else if (recordType === recordTypes.BeginFrame) 1370 else if (recordType === recordTypes.BeginFrame)
1371 eventDivider.className += ' timeline-frame-divider'; 1371 eventDivider.className += ' timeline-frame-divider';
1372 1372
1373 if (title) 1373 if (title)
1374 eventDivider.title = title; 1374 eventDivider.title = title;
1375 eventDivider.style.left = position + 'px'; 1375 eventDivider.style.left = position + 'px';
1376 return eventDivider; 1376 return eventDivider;
1377 } 1377 }
1378 1378
1379 /** 1379 /**
1380 * @param {!WebInspector.TimelineModel.Record} record 1380 * @param {!TimelineModel.TimelineModel.Record} record
1381 * @param {number} zeroTime 1381 * @param {number} zeroTime
1382 * @param {number} position 1382 * @param {number} position
1383 * @return {!Element} 1383 * @return {!Element}
1384 */ 1384 */
1385 static createDividerForRecord(record, zeroTime, position) { 1385 static createDividerForRecord(record, zeroTime, position) {
1386 var startTime = Number.millisToString(record.startTime() - zeroTime); 1386 var startTime = Number.millisToString(record.startTime() - zeroTime);
1387 var title = 1387 var title =
1388 WebInspector.UIString('%s at %s', WebInspector.TimelineUIUtils.eventTitl e(record.traceEvent()), startTime); 1388 Common.UIString('%s at %s', Timeline.TimelineUIUtils.eventTitle(record.t raceEvent()), startTime);
1389 return WebInspector.TimelineUIUtils.createEventDivider(record.type(), title, position); 1389 return Timeline.TimelineUIUtils.createEventDivider(record.type(), title, pos ition);
1390 } 1390 }
1391 1391
1392 /** 1392 /**
1393 * @return {!Array.<string>} 1393 * @return {!Array.<string>}
1394 */ 1394 */
1395 static _visibleTypes() { 1395 static _visibleTypes() {
1396 var eventStyles = WebInspector.TimelineUIUtils._initEventStyles(); 1396 var eventStyles = Timeline.TimelineUIUtils._initEventStyles();
1397 var result = []; 1397 var result = [];
1398 for (var name in eventStyles) { 1398 for (var name in eventStyles) {
1399 if (!eventStyles[name].hidden) 1399 if (!eventStyles[name].hidden)
1400 result.push(name); 1400 result.push(name);
1401 } 1401 }
1402 return result; 1402 return result;
1403 } 1403 }
1404 1404
1405 /** 1405 /**
1406 * @return {!WebInspector.TimelineModel.Filter} 1406 * @return {!TimelineModel.TimelineModel.Filter}
1407 */ 1407 */
1408 static visibleEventsFilter() { 1408 static visibleEventsFilter() {
1409 return new WebInspector.TimelineVisibleEventsFilter(WebInspector.TimelineUIU tils._visibleTypes()); 1409 return new TimelineModel.TimelineVisibleEventsFilter(Timeline.TimelineUIUtil s._visibleTypes());
1410 } 1410 }
1411 1411
1412 /** 1412 /**
1413 * @return {!Object.<string, !WebInspector.TimelineCategory>} 1413 * @return {!Object.<string, !Timeline.TimelineCategory>}
1414 */ 1414 */
1415 static categories() { 1415 static categories() {
1416 if (WebInspector.TimelineUIUtils._categories) 1416 if (Timeline.TimelineUIUtils._categories)
1417 return WebInspector.TimelineUIUtils._categories; 1417 return Timeline.TimelineUIUtils._categories;
1418 WebInspector.TimelineUIUtils._categories = { 1418 Timeline.TimelineUIUtils._categories = {
1419 loading: new WebInspector.TimelineCategory( 1419 loading: new Timeline.TimelineCategory(
1420 'loading', WebInspector.UIString('Loading'), true, 'hsl(214, 67%, 74%) ', 'hsl(214, 67%, 66%)'), 1420 'loading', Common.UIString('Loading'), true, 'hsl(214, 67%, 74%)', 'hs l(214, 67%, 66%)'),
1421 scripting: new WebInspector.TimelineCategory( 1421 scripting: new Timeline.TimelineCategory(
1422 'scripting', WebInspector.UIString('Scripting'), true, 'hsl(43, 83%, 7 2%)', 'hsl(43, 83%, 64%) '), 1422 'scripting', Common.UIString('Scripting'), true, 'hsl(43, 83%, 72%)', 'hsl(43, 83%, 64%) '),
1423 rendering: new WebInspector.TimelineCategory( 1423 rendering: new Timeline.TimelineCategory(
1424 'rendering', WebInspector.UIString('Rendering'), true, 'hsl(256, 67%, 76%)', 'hsl(256, 67%, 70%)'), 1424 'rendering', Common.UIString('Rendering'), true, 'hsl(256, 67%, 76%)', 'hsl(256, 67%, 70%)'),
1425 painting: new WebInspector.TimelineCategory( 1425 painting: new Timeline.TimelineCategory(
1426 'painting', WebInspector.UIString('Painting'), true, 'hsl(109, 33%, 64 %)', 'hsl(109, 33%, 55%)'), 1426 'painting', Common.UIString('Painting'), true, 'hsl(109, 33%, 64%)', ' hsl(109, 33%, 55%)'),
1427 gpu: new WebInspector.TimelineCategory( 1427 gpu: new Timeline.TimelineCategory(
1428 'gpu', WebInspector.UIString('GPU'), false, 'hsl(109, 33%, 64%)', 'hsl (109, 33%, 55%)'), 1428 'gpu', Common.UIString('GPU'), false, 'hsl(109, 33%, 64%)', 'hsl(109, 33%, 55%)'),
1429 other: new WebInspector.TimelineCategory( 1429 other: new Timeline.TimelineCategory(
1430 'other', WebInspector.UIString('Other'), false, 'hsl(0, 0%, 87%)', 'hs l(0, 0%, 79%)'), 1430 'other', Common.UIString('Other'), false, 'hsl(0, 0%, 87%)', 'hsl(0, 0 %, 79%)'),
1431 idle: new WebInspector.TimelineCategory( 1431 idle: new Timeline.TimelineCategory(
1432 'idle', WebInspector.UIString('Idle'), false, 'hsl(0, 100%, 100%)', 'h sl(0, 100%, 100%)') 1432 'idle', Common.UIString('Idle'), false, 'hsl(0, 100%, 100%)', 'hsl(0, 100%, 100%)')
1433 }; 1433 };
1434 return WebInspector.TimelineUIUtils._categories; 1434 return Timeline.TimelineUIUtils._categories;
1435 } 1435 }
1436 1436
1437 /** 1437 /**
1438 * @param {!WebInspector.TimelineModel.AsyncEventGroup} group 1438 * @param {!TimelineModel.TimelineModel.AsyncEventGroup} group
1439 * @return {string} 1439 * @return {string}
1440 */ 1440 */
1441 static titleForAsyncEventGroup(group) { 1441 static titleForAsyncEventGroup(group) {
1442 if (!WebInspector.TimelineUIUtils._titleForAsyncEventGroupMap) { 1442 if (!Timeline.TimelineUIUtils._titleForAsyncEventGroupMap) {
1443 var groups = WebInspector.TimelineModel.AsyncEventGroup; 1443 var groups = TimelineModel.TimelineModel.AsyncEventGroup;
1444 WebInspector.TimelineUIUtils._titleForAsyncEventGroupMap = new Map([ 1444 Timeline.TimelineUIUtils._titleForAsyncEventGroupMap = new Map([
1445 [groups.animation, WebInspector.UIString('Animation')], [groups.console, WebInspector.UIString('Console')], 1445 [groups.animation, Common.UIString('Animation')], [groups.console, Commo n.UIString('Console')],
1446 [groups.userTiming, WebInspector.UIString('User Timing')], [groups.input , WebInspector.UIString('Input')] 1446 [groups.userTiming, Common.UIString('User Timing')], [groups.input, Comm on.UIString('Input')]
1447 ]); 1447 ]);
1448 } 1448 }
1449 return WebInspector.TimelineUIUtils._titleForAsyncEventGroupMap.get(group) | | ''; 1449 return Timeline.TimelineUIUtils._titleForAsyncEventGroupMap.get(group) || '' ;
1450 } 1450 }
1451 1451
1452 /** 1452 /**
1453 * @param {!Object} aggregatedStats 1453 * @param {!Object} aggregatedStats
1454 * @param {!WebInspector.TimelineCategory=} selfCategory 1454 * @param {!Timeline.TimelineCategory=} selfCategory
1455 * @param {number=} selfTime 1455 * @param {number=} selfTime
1456 * @return {!Element} 1456 * @return {!Element}
1457 */ 1457 */
1458 static generatePieChart(aggregatedStats, selfCategory, selfTime) { 1458 static generatePieChart(aggregatedStats, selfCategory, selfTime) {
1459 var total = 0; 1459 var total = 0;
1460 for (var categoryName in aggregatedStats) 1460 for (var categoryName in aggregatedStats)
1461 total += aggregatedStats[categoryName]; 1461 total += aggregatedStats[categoryName];
1462 1462
1463 var element = createElementWithClass('div', 'timeline-details-view-pie-chart -wrapper hbox'); 1463 var element = createElementWithClass('div', 'timeline-details-view-pie-chart -wrapper hbox');
1464 var pieChart = new WebInspector.PieChart(100); 1464 var pieChart = new UI.PieChart(100);
1465 pieChart.element.classList.add('timeline-details-view-pie-chart'); 1465 pieChart.element.classList.add('timeline-details-view-pie-chart');
1466 pieChart.setTotal(total); 1466 pieChart.setTotal(total);
1467 var pieChartContainer = element.createChild('div', 'vbox'); 1467 var pieChartContainer = element.createChild('div', 'vbox');
1468 pieChartContainer.appendChild(pieChart.element); 1468 pieChartContainer.appendChild(pieChart.element);
1469 pieChartContainer.createChild('div', 'timeline-details-view-pie-chart-total' ).textContent = 1469 pieChartContainer.createChild('div', 'timeline-details-view-pie-chart-total' ).textContent =
1470 WebInspector.UIString('Total: %s', Number.millisToString(total, true)); 1470 Common.UIString('Total: %s', Number.millisToString(total, true));
1471 var footerElement = element.createChild('div', 'timeline-aggregated-info-leg end'); 1471 var footerElement = element.createChild('div', 'timeline-aggregated-info-leg end');
1472 1472
1473 /** 1473 /**
1474 * @param {string} name 1474 * @param {string} name
1475 * @param {string} title 1475 * @param {string} title
1476 * @param {number} value 1476 * @param {number} value
1477 * @param {string} color 1477 * @param {string} color
1478 */ 1478 */
1479 function appendLegendRow(name, title, value, color) { 1479 function appendLegendRow(name, title, value, color) {
1480 if (!value) 1480 if (!value)
1481 return; 1481 return;
1482 pieChart.addSlice(value, color); 1482 pieChart.addSlice(value, color);
1483 var rowElement = footerElement.createChild('div'); 1483 var rowElement = footerElement.createChild('div');
1484 rowElement.createChild('span', 'timeline-aggregated-legend-value').textCon tent = 1484 rowElement.createChild('span', 'timeline-aggregated-legend-value').textCon tent =
1485 Number.preciseMillisToString(value, 1); 1485 Number.preciseMillisToString(value, 1);
1486 rowElement.createChild('span', 'timeline-aggregated-legend-swatch').style. backgroundColor = color; 1486 rowElement.createChild('span', 'timeline-aggregated-legend-swatch').style. backgroundColor = color;
1487 rowElement.createChild('span', 'timeline-aggregated-legend-title').textCon tent = title; 1487 rowElement.createChild('span', 'timeline-aggregated-legend-title').textCon tent = title;
1488 } 1488 }
1489 1489
1490 // In case of self time, first add self, then children of the same category. 1490 // In case of self time, first add self, then children of the same category.
1491 if (selfCategory) { 1491 if (selfCategory) {
1492 if (selfTime) 1492 if (selfTime)
1493 appendLegendRow( 1493 appendLegendRow(
1494 selfCategory.name, WebInspector.UIString('%s (self)', selfCategory.t itle), selfTime, selfCategory.color); 1494 selfCategory.name, Common.UIString('%s (self)', selfCategory.title), selfTime, selfCategory.color);
1495 // Children of the same category. 1495 // Children of the same category.
1496 var categoryTime = aggregatedStats[selfCategory.name]; 1496 var categoryTime = aggregatedStats[selfCategory.name];
1497 var value = categoryTime - selfTime; 1497 var value = categoryTime - selfTime;
1498 if (value > 0) 1498 if (value > 0)
1499 appendLegendRow( 1499 appendLegendRow(
1500 selfCategory.name, WebInspector.UIString('%s (children)', selfCatego ry.title), value, 1500 selfCategory.name, Common.UIString('%s (children)', selfCategory.tit le), value,
1501 selfCategory.childColor); 1501 selfCategory.childColor);
1502 } 1502 }
1503 1503
1504 // Add other categories. 1504 // Add other categories.
1505 for (var categoryName in WebInspector.TimelineUIUtils.categories()) { 1505 for (var categoryName in Timeline.TimelineUIUtils.categories()) {
1506 var category = WebInspector.TimelineUIUtils.categories()[categoryName]; 1506 var category = Timeline.TimelineUIUtils.categories()[categoryName];
1507 if (category === selfCategory) 1507 if (category === selfCategory)
1508 continue; 1508 continue;
1509 appendLegendRow(category.name, category.title, aggregatedStats[category.na me], category.childColor); 1509 appendLegendRow(category.name, category.title, aggregatedStats[category.na me], category.childColor);
1510 } 1510 }
1511 return element; 1511 return element;
1512 } 1512 }
1513 1513
1514 /** 1514 /**
1515 * @param {!WebInspector.TimelineFrameModel} frameModel 1515 * @param {!TimelineModel.TimelineFrameModel} frameModel
1516 * @param {!WebInspector.TimelineFrame} frame 1516 * @param {!TimelineModel.TimelineFrame} frame
1517 * @param {?WebInspector.FilmStripModel.Frame} filmStripFrame 1517 * @param {?Components.FilmStripModel.Frame} filmStripFrame
1518 * @return {!Element} 1518 * @return {!Element}
1519 */ 1519 */
1520 static generateDetailsContentForFrame(frameModel, frame, filmStripFrame) { 1520 static generateDetailsContentForFrame(frameModel, frame, filmStripFrame) {
1521 var pieChart = WebInspector.TimelineUIUtils.generatePieChart(frame.timeByCat egory); 1521 var pieChart = Timeline.TimelineUIUtils.generatePieChart(frame.timeByCategor y);
1522 var contentHelper = new WebInspector.TimelineDetailsContentHelper(null, null ); 1522 var contentHelper = new Timeline.TimelineDetailsContentHelper(null, null);
1523 contentHelper.addSection(WebInspector.UIString('Frame')); 1523 contentHelper.addSection(Common.UIString('Frame'));
1524 1524
1525 var duration = WebInspector.TimelineUIUtils.frameDuration(frame); 1525 var duration = Timeline.TimelineUIUtils.frameDuration(frame);
1526 contentHelper.appendElementRow(WebInspector.UIString('Duration'), duration, frame.hasWarnings()); 1526 contentHelper.appendElementRow(Common.UIString('Duration'), duration, frame. hasWarnings());
1527 if (filmStripFrame) { 1527 if (filmStripFrame) {
1528 var filmStripPreview = createElementWithClass('img', 'timeline-filmstrip-p review'); 1528 var filmStripPreview = createElementWithClass('img', 'timeline-filmstrip-p review');
1529 filmStripFrame.imageDataPromise().then(onGotImageData.bind(null, filmStrip Preview)); 1529 filmStripFrame.imageDataPromise().then(onGotImageData.bind(null, filmStrip Preview));
1530 contentHelper.appendElementRow('', filmStripPreview); 1530 contentHelper.appendElementRow('', filmStripPreview);
1531 filmStripPreview.addEventListener('click', frameClicked.bind(null, filmStr ipFrame), false); 1531 filmStripPreview.addEventListener('click', frameClicked.bind(null, filmStr ipFrame), false);
1532 } 1532 }
1533 var durationInMillis = frame.endTime - frame.startTime; 1533 var durationInMillis = frame.endTime - frame.startTime;
1534 contentHelper.appendTextRow(WebInspector.UIString('FPS'), Math.floor(1000 / durationInMillis)); 1534 contentHelper.appendTextRow(Common.UIString('FPS'), Math.floor(1000 / durati onInMillis));
1535 contentHelper.appendTextRow(WebInspector.UIString('CPU time'), Number.millis ToString(frame.cpuTime, true)); 1535 contentHelper.appendTextRow(Common.UIString('CPU time'), Number.millisToStri ng(frame.cpuTime, true));
1536 1536
1537 if (Runtime.experiments.isEnabled('layersPanel') && frame.layerTree) { 1537 if (Runtime.experiments.isEnabled('layersPanel') && frame.layerTree) {
1538 contentHelper.appendElementRow( 1538 contentHelper.appendElementRow(
1539 WebInspector.UIString('Layer tree'), 1539 Common.UIString('Layer tree'),
1540 WebInspector.Linkifier.linkifyUsingRevealer(frame.layerTree, WebInspec tor.UIString('show'))); 1540 Components.Linkifier.linkifyUsingRevealer(frame.layerTree, Common.UISt ring('show')));
1541 } 1541 }
1542 1542
1543 /** 1543 /**
1544 * @param {!Element} image 1544 * @param {!Element} image
1545 * @param {?string} data 1545 * @param {?string} data
1546 */ 1546 */
1547 function onGotImageData(image, data) { 1547 function onGotImageData(image, data) {
1548 if (data) 1548 if (data)
1549 image.src = 'data:image/jpg;base64,' + data; 1549 image.src = 'data:image/jpg;base64,' + data;
1550 } 1550 }
1551 1551
1552 /** 1552 /**
1553 * @param {!WebInspector.FilmStripModel.Frame} filmStripFrame 1553 * @param {!Components.FilmStripModel.Frame} filmStripFrame
1554 */ 1554 */
1555 function frameClicked(filmStripFrame) { 1555 function frameClicked(filmStripFrame) {
1556 new WebInspector.FilmStripView.Dialog(filmStripFrame, 0); 1556 new Components.FilmStripView.Dialog(filmStripFrame, 0);
1557 } 1557 }
1558 1558
1559 return contentHelper.fragment; 1559 return contentHelper.fragment;
1560 } 1560 }
1561 1561
1562 /** 1562 /**
1563 * @param {!WebInspector.TimelineFrame} frame 1563 * @param {!TimelineModel.TimelineFrame} frame
1564 * @return {!Element} 1564 * @return {!Element}
1565 */ 1565 */
1566 static frameDuration(frame) { 1566 static frameDuration(frame) {
1567 var durationText = WebInspector.UIString( 1567 var durationText = Common.UIString(
1568 '%s (at %s)', Number.millisToString(frame.endTime - frame.startTime, tru e), 1568 '%s (at %s)', Number.millisToString(frame.endTime - frame.startTime, tru e),
1569 Number.millisToString(frame.startTimeOffset, true)); 1569 Number.millisToString(frame.startTimeOffset, true));
1570 var element = createElement('span'); 1570 var element = createElement('span');
1571 element.createTextChild(durationText); 1571 element.createTextChild(durationText);
1572 if (!frame.hasWarnings()) 1572 if (!frame.hasWarnings())
1573 return element; 1573 return element;
1574 element.createTextChild(WebInspector.UIString('. Long frame times are an ind ication of ')); 1574 element.createTextChild(Common.UIString('. Long frame times are an indicatio n of '));
1575 element.appendChild(WebInspector.linkifyURLAsNode( 1575 element.appendChild(UI.linkifyURLAsNode(
1576 'https://developers.google.com/web/fundamentals/performance/rendering/', WebInspector.UIString('jank'), 1576 'https://developers.google.com/web/fundamentals/performance/rendering/', Common.UIString('jank'),
1577 undefined, true)); 1577 undefined, true));
1578 element.createTextChild('.'); 1578 element.createTextChild('.');
1579 return element; 1579 return element;
1580 } 1580 }
1581 1581
1582 /** 1582 /**
1583 * @param {!CanvasRenderingContext2D} context 1583 * @param {!CanvasRenderingContext2D} context
1584 * @param {number} width 1584 * @param {number} width
1585 * @param {number} height 1585 * @param {number} height
1586 * @param {string} color0 1586 * @param {string} color0
(...skipping 20 matching lines...) Expand all
1607 1607
1608 /** 1608 /**
1609 * @param {!Array.<number>} quad 1609 * @param {!Array.<number>} quad
1610 * @return {number} 1610 * @return {number}
1611 */ 1611 */
1612 static quadHeight(quad) { 1612 static quadHeight(quad) {
1613 return Math.round(Math.sqrt(Math.pow(quad[0] - quad[6], 2) + Math.pow(quad[1 ] - quad[7], 2))); 1613 return Math.round(Math.sqrt(Math.pow(quad[0] - quad[6], 2) + Math.pow(quad[1 ] - quad[7], 2)));
1614 } 1614 }
1615 1615
1616 /** 1616 /**
1617 * @return {!Array.<!WebInspector.TimelineUIUtils.EventDispatchTypeDescriptor> } 1617 * @return {!Array.<!Timeline.TimelineUIUtils.EventDispatchTypeDescriptor>}
1618 */ 1618 */
1619 static eventDispatchDesciptors() { 1619 static eventDispatchDesciptors() {
1620 if (WebInspector.TimelineUIUtils._eventDispatchDesciptors) 1620 if (Timeline.TimelineUIUtils._eventDispatchDesciptors)
1621 return WebInspector.TimelineUIUtils._eventDispatchDesciptors; 1621 return Timeline.TimelineUIUtils._eventDispatchDesciptors;
1622 var lightOrange = 'hsl(40,100%,80%)'; 1622 var lightOrange = 'hsl(40,100%,80%)';
1623 var orange = 'hsl(40,100%,50%)'; 1623 var orange = 'hsl(40,100%,50%)';
1624 var green = 'hsl(90,100%,40%)'; 1624 var green = 'hsl(90,100%,40%)';
1625 var purple = 'hsl(256,100%,75%)'; 1625 var purple = 'hsl(256,100%,75%)';
1626 WebInspector.TimelineUIUtils._eventDispatchDesciptors = [ 1626 Timeline.TimelineUIUtils._eventDispatchDesciptors = [
1627 new WebInspector.TimelineUIUtils.EventDispatchTypeDescriptor( 1627 new Timeline.TimelineUIUtils.EventDispatchTypeDescriptor(
1628 1, lightOrange, ['mousemove', 'mouseenter', 'mouseleave', 'mouseout', 'mouseover']), 1628 1, lightOrange, ['mousemove', 'mouseenter', 'mouseleave', 'mouseout', 'mouseover']),
1629 new WebInspector.TimelineUIUtils.EventDispatchTypeDescriptor( 1629 new Timeline.TimelineUIUtils.EventDispatchTypeDescriptor(
1630 1, lightOrange, ['pointerover', 'pointerout', 'pointerenter', 'pointer leave', 'pointermove']), 1630 1, lightOrange, ['pointerover', 'pointerout', 'pointerenter', 'pointer leave', 'pointermove']),
1631 new WebInspector.TimelineUIUtils.EventDispatchTypeDescriptor(2, green, ['w heel']), 1631 new Timeline.TimelineUIUtils.EventDispatchTypeDescriptor(2, green, ['wheel ']),
1632 new WebInspector.TimelineUIUtils.EventDispatchTypeDescriptor(3, orange, [' click', 'mousedown', 'mouseup']), 1632 new Timeline.TimelineUIUtils.EventDispatchTypeDescriptor(3, orange, ['clic k', 'mousedown', 'mouseup']),
1633 new WebInspector.TimelineUIUtils.EventDispatchTypeDescriptor( 1633 new Timeline.TimelineUIUtils.EventDispatchTypeDescriptor(
1634 3, orange, ['touchstart', 'touchend', 'touchmove', 'touchcancel']), 1634 3, orange, ['touchstart', 'touchend', 'touchmove', 'touchcancel']),
1635 new WebInspector.TimelineUIUtils.EventDispatchTypeDescriptor( 1635 new Timeline.TimelineUIUtils.EventDispatchTypeDescriptor(
1636 3, orange, ['pointerdown', 'pointerup', 'pointercancel', 'gotpointerca pture', 'lostpointercapture']), 1636 3, orange, ['pointerdown', 'pointerup', 'pointercancel', 'gotpointerca pture', 'lostpointercapture']),
1637 new WebInspector.TimelineUIUtils.EventDispatchTypeDescriptor(3, purple, [' keydown', 'keyup', 'keypress']) 1637 new Timeline.TimelineUIUtils.EventDispatchTypeDescriptor(3, purple, ['keyd own', 'keyup', 'keypress'])
1638 ]; 1638 ];
1639 return WebInspector.TimelineUIUtils._eventDispatchDesciptors; 1639 return Timeline.TimelineUIUtils._eventDispatchDesciptors;
1640 } 1640 }
1641 1641
1642 /** 1642 /**
1643 * @param {!WebInspector.TracingModel.Event} event 1643 * @param {!SDK.TracingModel.Event} event
1644 * @return {!WebInspector.TimelineMarkerStyle} 1644 * @return {!Timeline.TimelineMarkerStyle}
1645 */ 1645 */
1646 static markerStyleForEvent(event) { 1646 static markerStyleForEvent(event) {
1647 var red = 'rgb(255, 0, 0)'; 1647 var red = 'rgb(255, 0, 0)';
1648 var blue = 'rgb(0, 0, 255)'; 1648 var blue = 'rgb(0, 0, 255)';
1649 var orange = 'rgb(255, 178, 23)'; 1649 var orange = 'rgb(255, 178, 23)';
1650 var green = 'rgb(0, 130, 0)'; 1650 var green = 'rgb(0, 130, 0)';
1651 var tallMarkerDashStyle = [10, 5]; 1651 var tallMarkerDashStyle = [10, 5];
1652 1652
1653 var title = WebInspector.TimelineUIUtils.eventTitle(event); 1653 var title = Timeline.TimelineUIUtils.eventTitle(event);
1654 1654
1655 if (event.hasCategory(WebInspector.TimelineModel.Category.Console) || 1655 if (event.hasCategory(TimelineModel.TimelineModel.Category.Console) ||
1656 event.hasCategory(WebInspector.TimelineModel.Category.UserTiming)) { 1656 event.hasCategory(TimelineModel.TimelineModel.Category.UserTiming)) {
1657 return { 1657 return {
1658 title: title, 1658 title: title,
1659 dashStyle: tallMarkerDashStyle, 1659 dashStyle: tallMarkerDashStyle,
1660 lineWidth: 0.5, 1660 lineWidth: 0.5,
1661 color: orange, 1661 color: orange,
1662 tall: false, 1662 tall: false,
1663 lowPriority: false, 1663 lowPriority: false,
1664 }; 1664 };
1665 } 1665 }
1666 var recordTypes = WebInspector.TimelineModel.RecordType; 1666 var recordTypes = TimelineModel.TimelineModel.RecordType;
1667 var tall = false; 1667 var tall = false;
1668 var color = green; 1668 var color = green;
1669 switch (event.name) { 1669 switch (event.name) {
1670 case recordTypes.MarkDOMContent: 1670 case recordTypes.MarkDOMContent:
1671 color = blue; 1671 color = blue;
1672 tall = true; 1672 tall = true;
1673 break; 1673 break;
1674 case recordTypes.MarkLoad: 1674 case recordTypes.MarkLoad:
1675 color = red; 1675 color = red;
1676 tall = true; 1676 tall = true;
(...skipping 10 matching lines...) Expand all
1687 title: title, 1687 title: title,
1688 dashStyle: tallMarkerDashStyle, 1688 dashStyle: tallMarkerDashStyle,
1689 lineWidth: 0.5, 1689 lineWidth: 0.5,
1690 color: color, 1690 color: color,
1691 tall: tall, 1691 tall: tall,
1692 lowPriority: false, 1692 lowPriority: false,
1693 }; 1693 };
1694 } 1694 }
1695 1695
1696 /** 1696 /**
1697 * @return {!WebInspector.TimelineMarkerStyle} 1697 * @return {!Timeline.TimelineMarkerStyle}
1698 */ 1698 */
1699 static markerStyleForFrame() { 1699 static markerStyleForFrame() {
1700 return { 1700 return {
1701 title: WebInspector.UIString('Frame'), 1701 title: Common.UIString('Frame'),
1702 color: 'rgba(100, 100, 100, 0.4)', 1702 color: 'rgba(100, 100, 100, 0.4)',
1703 lineWidth: 3, 1703 lineWidth: 3,
1704 dashStyle: [3], 1704 dashStyle: [3],
1705 tall: true, 1705 tall: true,
1706 lowPriority: true 1706 lowPriority: true
1707 }; 1707 };
1708 } 1708 }
1709 1709
1710 /** 1710 /**
1711 * @param {string} url 1711 * @param {string} url
1712 * @return {string} 1712 * @return {string}
1713 */ 1713 */
1714 static colorForURL(url) { 1714 static colorForURL(url) {
1715 if (!WebInspector.TimelineUIUtils.colorForURL._colorGenerator) { 1715 if (!Timeline.TimelineUIUtils.colorForURL._colorGenerator) {
1716 WebInspector.TimelineUIUtils.colorForURL._colorGenerator = 1716 Timeline.TimelineUIUtils.colorForURL._colorGenerator =
1717 new WebInspector.FlameChart.ColorGenerator({min: 30, max: 330}, {min: 50, max: 80, count: 3}, 85); 1717 new UI.FlameChart.ColorGenerator({min: 30, max: 330}, {min: 50, max: 8 0, count: 3}, 85);
1718 } 1718 }
1719 return WebInspector.TimelineUIUtils.colorForURL._colorGenerator.colorForID(u rl); 1719 return Timeline.TimelineUIUtils.colorForURL._colorGenerator.colorForID(url);
1720 } 1720 }
1721 1721
1722 /** 1722 /**
1723 * @param {!WebInspector.TracingModel.Event} event 1723 * @param {!SDK.TracingModel.Event} event
1724 * @param {string=} warningType 1724 * @param {string=} warningType
1725 * @return {?Element} 1725 * @return {?Element}
1726 */ 1726 */
1727 static eventWarning(event, warningType) { 1727 static eventWarning(event, warningType) {
1728 var timelineData = WebInspector.TimelineData.forEvent(event); 1728 var timelineData = TimelineModel.TimelineData.forEvent(event);
1729 var warning = warningType || timelineData.warning; 1729 var warning = warningType || timelineData.warning;
1730 if (!warning) 1730 if (!warning)
1731 return null; 1731 return null;
1732 var warnings = WebInspector.TimelineModel.WarningType; 1732 var warnings = TimelineModel.TimelineModel.WarningType;
1733 var span = createElement('span'); 1733 var span = createElement('span');
1734 var eventData = event.args['data']; 1734 var eventData = event.args['data'];
1735 1735
1736 switch (warning) { 1736 switch (warning) {
1737 case warnings.ForcedStyle: 1737 case warnings.ForcedStyle:
1738 case warnings.ForcedLayout: 1738 case warnings.ForcedLayout:
1739 span.appendChild(WebInspector.linkifyDocumentationURLAsNode( 1739 span.appendChild(UI.linkifyDocumentationURLAsNode(
1740 '../../fundamentals/performance/rendering/avoid-large-complex-layout s-and-layout-thrashing#avoid-forced-synchronous-layouts', 1740 '../../fundamentals/performance/rendering/avoid-large-complex-layout s-and-layout-thrashing#avoid-forced-synchronous-layouts',
1741 WebInspector.UIString('Forced reflow'))); 1741 Common.UIString('Forced reflow')));
1742 span.createTextChild(WebInspector.UIString(' is a likely performance bot tleneck.')); 1742 span.createTextChild(Common.UIString(' is a likely performance bottlenec k.'));
1743 break; 1743 break;
1744 case warnings.IdleDeadlineExceeded: 1744 case warnings.IdleDeadlineExceeded:
1745 span.textContent = WebInspector.UIString( 1745 span.textContent = Common.UIString(
1746 'Idle callback execution extended beyond deadline by ' + 1746 'Idle callback execution extended beyond deadline by ' +
1747 Number.millisToString(event.duration - eventData['allottedMillisecon ds'], true)); 1747 Number.millisToString(event.duration - eventData['allottedMillisecon ds'], true));
1748 break; 1748 break;
1749 case warnings.V8Deopt: 1749 case warnings.V8Deopt:
1750 span.appendChild(WebInspector.linkifyURLAsNode( 1750 span.appendChild(UI.linkifyURLAsNode(
1751 'https://github.com/GoogleChrome/devtools-docs/issues/53', WebInspec tor.UIString('Not optimized'), 1751 'https://github.com/GoogleChrome/devtools-docs/issues/53', Common.UI String('Not optimized'),
1752 undefined, true)); 1752 undefined, true));
1753 span.createTextChild(WebInspector.UIString(': %s', eventData['deoptReaso n'])); 1753 span.createTextChild(Common.UIString(': %s', eventData['deoptReason']));
1754 break; 1754 break;
1755 default: 1755 default:
1756 console.assert(false, 'Unhandled TimelineModel.WarningType'); 1756 console.assert(false, 'Unhandled TimelineModel.WarningType');
1757 } 1757 }
1758 return span; 1758 return span;
1759 } 1759 }
1760 1760
1761 /** 1761 /**
1762 * @param {!WebInspector.TimelineModel.PageFrame} frame 1762 * @param {!TimelineModel.TimelineModel.PageFrame} frame
1763 * @param {number=} trimAt 1763 * @param {number=} trimAt
1764 */ 1764 */
1765 static displayNameForFrame(frame, trimAt) { 1765 static displayNameForFrame(frame, trimAt) {
1766 var url = frame.url; 1766 var url = frame.url;
1767 if (!trimAt) 1767 if (!trimAt)
1768 trimAt = 30; 1768 trimAt = 30;
1769 return url.startsWith('about:') ? `"${frame.name.trimMiddle(trimAt)}"` : fra me.url.trimEnd(trimAt); 1769 return url.startsWith('about:') ? `"${frame.name.trimMiddle(trimAt)}"` : fra me.url.trimEnd(trimAt);
1770 } 1770 }
1771 }; 1771 };
1772 1772
1773 /** 1773 /**
1774 * @unrestricted 1774 * @unrestricted
1775 */ 1775 */
1776 WebInspector.TimelineRecordStyle = class { 1776 Timeline.TimelineRecordStyle = class {
1777 /** 1777 /**
1778 * @param {string} title 1778 * @param {string} title
1779 * @param {!WebInspector.TimelineCategory} category 1779 * @param {!Timeline.TimelineCategory} category
1780 * @param {boolean=} hidden 1780 * @param {boolean=} hidden
1781 */ 1781 */
1782 constructor(title, category, hidden) { 1782 constructor(title, category, hidden) {
1783 this.title = title; 1783 this.title = title;
1784 this.category = category; 1784 this.category = category;
1785 this.hidden = !!hidden; 1785 this.hidden = !!hidden;
1786 } 1786 }
1787 }; 1787 };
1788 1788
1789 1789
1790 /** 1790 /**
1791 * @enum {symbol} 1791 * @enum {symbol}
1792 */ 1792 */
1793 WebInspector.TimelineUIUtils.NetworkCategory = { 1793 Timeline.TimelineUIUtils.NetworkCategory = {
1794 HTML: Symbol('HTML'), 1794 HTML: Symbol('HTML'),
1795 Script: Symbol('Script'), 1795 Script: Symbol('Script'),
1796 Style: Symbol('Style'), 1796 Style: Symbol('Style'),
1797 Media: Symbol('Media'), 1797 Media: Symbol('Media'),
1798 Other: Symbol('Other') 1798 Other: Symbol('Other')
1799 }; 1799 };
1800 1800
1801 1801
1802 WebInspector.TimelineUIUtils._aggregatedStatsKey = Symbol('aggregatedStats'); 1802 Timeline.TimelineUIUtils._aggregatedStatsKey = Symbol('aggregatedStats');
1803 1803
1804 1804
1805 /** 1805 /**
1806 * @unrestricted 1806 * @unrestricted
1807 */ 1807 */
1808 WebInspector.TimelineUIUtils.InvalidationsGroupElement = class extends TreeEleme nt { 1808 Timeline.TimelineUIUtils.InvalidationsGroupElement = class extends TreeElement {
1809 /** 1809 /**
1810 * @param {!WebInspector.Target} target 1810 * @param {!SDK.Target} target
1811 * @param {?Map<number, ?WebInspector.DOMNode>} relatedNodesMap 1811 * @param {?Map<number, ?SDK.DOMNode>} relatedNodesMap
1812 * @param {!WebInspector.TimelineDetailsContentHelper} contentHelper 1812 * @param {!Timeline.TimelineDetailsContentHelper} contentHelper
1813 * @param {!Array.<!WebInspector.InvalidationTrackingEvent>} invalidations 1813 * @param {!Array.<!TimelineModel.InvalidationTrackingEvent>} invalidations
1814 */ 1814 */
1815 constructor(target, relatedNodesMap, contentHelper, invalidations) { 1815 constructor(target, relatedNodesMap, contentHelper, invalidations) {
1816 super('', true); 1816 super('', true);
1817 1817
1818 this.listItemElement.classList.add('header'); 1818 this.listItemElement.classList.add('header');
1819 this.selectable = false; 1819 this.selectable = false;
1820 this.toggleOnClick = true; 1820 this.toggleOnClick = true;
1821 1821
1822 this._relatedNodesMap = relatedNodesMap; 1822 this._relatedNodesMap = relatedNodesMap;
1823 this._contentHelper = contentHelper; 1823 this._contentHelper = contentHelper;
1824 this._invalidations = invalidations; 1824 this._invalidations = invalidations;
1825 this.title = this._createTitle(target); 1825 this.title = this._createTitle(target);
1826 } 1826 }
1827 1827
1828 /** 1828 /**
1829 * @param {!WebInspector.Target} target 1829 * @param {!SDK.Target} target
1830 * @return {!Element} 1830 * @return {!Element}
1831 */ 1831 */
1832 _createTitle(target) { 1832 _createTitle(target) {
1833 var first = this._invalidations[0]; 1833 var first = this._invalidations[0];
1834 var reason = first.cause.reason; 1834 var reason = first.cause.reason;
1835 var topFrame = first.cause.stackTrace && first.cause.stackTrace[0]; 1835 var topFrame = first.cause.stackTrace && first.cause.stackTrace[0];
1836 1836
1837 var title = createElement('span'); 1837 var title = createElement('span');
1838 if (reason) 1838 if (reason)
1839 title.createTextChild(WebInspector.UIString('%s for ', reason)); 1839 title.createTextChild(Common.UIString('%s for ', reason));
1840 else 1840 else
1841 title.createTextChild(WebInspector.UIString('Unknown cause for ')); 1841 title.createTextChild(Common.UIString('Unknown cause for '));
1842 1842
1843 this._appendTruncatedNodeList(title, this._invalidations); 1843 this._appendTruncatedNodeList(title, this._invalidations);
1844 1844
1845 if (topFrame && this._contentHelper.linkifier()) { 1845 if (topFrame && this._contentHelper.linkifier()) {
1846 title.createTextChild(WebInspector.UIString('. ')); 1846 title.createTextChild(Common.UIString('. '));
1847 var stack = title.createChild('span', 'monospace'); 1847 var stack = title.createChild('span', 'monospace');
1848 stack.createChild('span').textContent = WebInspector.TimelineUIUtils.frame DisplayName(topFrame); 1848 stack.createChild('span').textContent = Timeline.TimelineUIUtils.frameDisp layName(topFrame);
1849 var link = this._contentHelper.linkifier().maybeLinkifyConsoleCallFrame(ta rget, topFrame); 1849 var link = this._contentHelper.linkifier().maybeLinkifyConsoleCallFrame(ta rget, topFrame);
1850 if (link) { 1850 if (link) {
1851 stack.createChild('span').textContent = ' @ '; 1851 stack.createChild('span').textContent = ' @ ';
1852 stack.createChild('span').appendChild(link); 1852 stack.createChild('span').appendChild(link);
1853 } 1853 }
1854 } 1854 }
1855 1855
1856 return title; 1856 return title;
1857 } 1857 }
1858 1858
1859 /** 1859 /**
1860 * @override 1860 * @override
1861 */ 1861 */
1862 onpopulate() { 1862 onpopulate() {
1863 var content = createElementWithClass('div', 'content'); 1863 var content = createElementWithClass('div', 'content');
1864 1864
1865 var first = this._invalidations[0]; 1865 var first = this._invalidations[0];
1866 if (first.cause.stackTrace) { 1866 if (first.cause.stackTrace) {
1867 var stack = content.createChild('div'); 1867 var stack = content.createChild('div');
1868 stack.createTextChild(WebInspector.UIString('Stack trace:')); 1868 stack.createTextChild(Common.UIString('Stack trace:'));
1869 this._contentHelper.createChildStackTraceElement( 1869 this._contentHelper.createChildStackTraceElement(
1870 stack, WebInspector.TimelineUIUtils._stackTraceFromCallFrames(first.ca use.stackTrace)); 1870 stack, Timeline.TimelineUIUtils._stackTraceFromCallFrames(first.cause. stackTrace));
1871 } 1871 }
1872 1872
1873 content.createTextChild( 1873 content.createTextChild(
1874 this._invalidations.length > 1 ? WebInspector.UIString('Nodes:') : WebIn spector.UIString('Node:')); 1874 this._invalidations.length > 1 ? Common.UIString('Nodes:') : Common.UISt ring('Node:'));
1875 var nodeList = content.createChild('div', 'node-list'); 1875 var nodeList = content.createChild('div', 'node-list');
1876 var firstNode = true; 1876 var firstNode = true;
1877 for (var i = 0; i < this._invalidations.length; i++) { 1877 for (var i = 0; i < this._invalidations.length; i++) {
1878 var invalidation = this._invalidations[i]; 1878 var invalidation = this._invalidations[i];
1879 var invalidationNode = this._createInvalidationNode(invalidation, true); 1879 var invalidationNode = this._createInvalidationNode(invalidation, true);
1880 if (invalidationNode) { 1880 if (invalidationNode) {
1881 if (!firstNode) 1881 if (!firstNode)
1882 nodeList.createTextChild(WebInspector.UIString(', ')); 1882 nodeList.createTextChild(Common.UIString(', '));
1883 firstNode = false; 1883 firstNode = false;
1884 1884
1885 nodeList.appendChild(invalidationNode); 1885 nodeList.appendChild(invalidationNode);
1886 1886
1887 var extraData = invalidation.extraData ? ', ' + invalidation.extraData : ''; 1887 var extraData = invalidation.extraData ? ', ' + invalidation.extraData : '';
1888 if (invalidation.changedId) 1888 if (invalidation.changedId)
1889 nodeList.createTextChild(WebInspector.UIString('(changed id to "%s"%s) ', invalidation.changedId, extraData)); 1889 nodeList.createTextChild(Common.UIString('(changed id to "%s"%s)', inv alidation.changedId, extraData));
1890 else if (invalidation.changedClass) 1890 else if (invalidation.changedClass)
1891 nodeList.createTextChild( 1891 nodeList.createTextChild(
1892 WebInspector.UIString('(changed class to "%s"%s)', invalidation.ch angedClass, extraData)); 1892 Common.UIString('(changed class to "%s"%s)', invalidation.changedC lass, extraData));
1893 else if (invalidation.changedAttribute) 1893 else if (invalidation.changedAttribute)
1894 nodeList.createTextChild( 1894 nodeList.createTextChild(
1895 WebInspector.UIString('(changed attribute to "%s"%s)', invalidatio n.changedAttribute, extraData)); 1895 Common.UIString('(changed attribute to "%s"%s)', invalidation.chan gedAttribute, extraData));
1896 else if (invalidation.changedPseudo) 1896 else if (invalidation.changedPseudo)
1897 nodeList.createTextChild( 1897 nodeList.createTextChild(
1898 WebInspector.UIString('(changed pesudo to "%s"%s)', invalidation.c hangedPseudo, extraData)); 1898 Common.UIString('(changed pesudo to "%s"%s)', invalidation.changed Pseudo, extraData));
1899 else if (invalidation.selectorPart) 1899 else if (invalidation.selectorPart)
1900 nodeList.createTextChild(WebInspector.UIString('(changed "%s"%s)', inv alidation.selectorPart, extraData)); 1900 nodeList.createTextChild(Common.UIString('(changed "%s"%s)', invalidat ion.selectorPart, extraData));
1901 } 1901 }
1902 } 1902 }
1903 1903
1904 var contentTreeElement = new TreeElement(content, false); 1904 var contentTreeElement = new TreeElement(content, false);
1905 contentTreeElement.selectable = false; 1905 contentTreeElement.selectable = false;
1906 this.appendChild(contentTreeElement); 1906 this.appendChild(contentTreeElement);
1907 } 1907 }
1908 1908
1909 /** 1909 /**
1910 * @param {!Element} parentElement 1910 * @param {!Element} parentElement
1911 * @param {!Array.<!WebInspector.InvalidationTrackingEvent>} invalidations 1911 * @param {!Array.<!TimelineModel.InvalidationTrackingEvent>} invalidations
1912 */ 1912 */
1913 _appendTruncatedNodeList(parentElement, invalidations) { 1913 _appendTruncatedNodeList(parentElement, invalidations) {
1914 var invalidationNodes = []; 1914 var invalidationNodes = [];
1915 var invalidationNodeIdMap = {}; 1915 var invalidationNodeIdMap = {};
1916 for (var i = 0; i < invalidations.length; i++) { 1916 for (var i = 0; i < invalidations.length; i++) {
1917 var invalidation = invalidations[i]; 1917 var invalidation = invalidations[i];
1918 var invalidationNode = this._createInvalidationNode(invalidation, false); 1918 var invalidationNode = this._createInvalidationNode(invalidation, false);
1919 invalidationNode.addEventListener('click', (e) => e.consume(), false); 1919 invalidationNode.addEventListener('click', (e) => e.consume(), false);
1920 if (invalidationNode && !invalidationNodeIdMap[invalidation.nodeId]) { 1920 if (invalidationNode && !invalidationNodeIdMap[invalidation.nodeId]) {
1921 invalidationNodes.push(invalidationNode); 1921 invalidationNodes.push(invalidationNode);
1922 invalidationNodeIdMap[invalidation.nodeId] = true; 1922 invalidationNodeIdMap[invalidation.nodeId] = true;
1923 } 1923 }
1924 } 1924 }
1925 1925
1926 if (invalidationNodes.length === 1) { 1926 if (invalidationNodes.length === 1) {
1927 parentElement.appendChild(invalidationNodes[0]); 1927 parentElement.appendChild(invalidationNodes[0]);
1928 } else if (invalidationNodes.length === 2) { 1928 } else if (invalidationNodes.length === 2) {
1929 parentElement.appendChild(invalidationNodes[0]); 1929 parentElement.appendChild(invalidationNodes[0]);
1930 parentElement.createTextChild(WebInspector.UIString(' and ')); 1930 parentElement.createTextChild(Common.UIString(' and '));
1931 parentElement.appendChild(invalidationNodes[1]); 1931 parentElement.appendChild(invalidationNodes[1]);
1932 } else if (invalidationNodes.length >= 3) { 1932 } else if (invalidationNodes.length >= 3) {
1933 parentElement.appendChild(invalidationNodes[0]); 1933 parentElement.appendChild(invalidationNodes[0]);
1934 parentElement.createTextChild(WebInspector.UIString(', ')); 1934 parentElement.createTextChild(Common.UIString(', '));
1935 parentElement.appendChild(invalidationNodes[1]); 1935 parentElement.appendChild(invalidationNodes[1]);
1936 parentElement.createTextChild(WebInspector.UIString(', and %s others', inv alidationNodes.length - 2)); 1936 parentElement.createTextChild(Common.UIString(', and %s others', invalidat ionNodes.length - 2));
1937 } 1937 }
1938 } 1938 }
1939 1939
1940 /** 1940 /**
1941 * @param {!WebInspector.InvalidationTrackingEvent} invalidation 1941 * @param {!TimelineModel.InvalidationTrackingEvent} invalidation
1942 * @param {boolean} showUnknownNodes 1942 * @param {boolean} showUnknownNodes
1943 */ 1943 */
1944 _createInvalidationNode(invalidation, showUnknownNodes) { 1944 _createInvalidationNode(invalidation, showUnknownNodes) {
1945 var node = (invalidation.nodeId && this._relatedNodesMap) ? this._relatedNod esMap.get(invalidation.nodeId) : null; 1945 var node = (invalidation.nodeId && this._relatedNodesMap) ? this._relatedNod esMap.get(invalidation.nodeId) : null;
1946 if (node) 1946 if (node)
1947 return WebInspector.DOMPresentationUtils.linkifyNodeReference(node); 1947 return Components.DOMPresentationUtils.linkifyNodeReference(node);
1948 if (invalidation.nodeName) { 1948 if (invalidation.nodeName) {
1949 var nodeSpan = createElement('span'); 1949 var nodeSpan = createElement('span');
1950 nodeSpan.textContent = WebInspector.UIString('[ %s ]', invalidation.nodeNa me); 1950 nodeSpan.textContent = Common.UIString('[ %s ]', invalidation.nodeName);
1951 return nodeSpan; 1951 return nodeSpan;
1952 } 1952 }
1953 if (showUnknownNodes) { 1953 if (showUnknownNodes) {
1954 var nodeSpan = createElement('span'); 1954 var nodeSpan = createElement('span');
1955 return nodeSpan.createTextChild(WebInspector.UIString('[ unknown node ]')) ; 1955 return nodeSpan.createTextChild(Common.UIString('[ unknown node ]'));
1956 } 1956 }
1957 } 1957 }
1958 }; 1958 };
1959 1959
1960 WebInspector.TimelineUIUtils._previewElementSymbol = Symbol('previewElement'); 1960 Timeline.TimelineUIUtils._previewElementSymbol = Symbol('previewElement');
1961 1961
1962 /** 1962 /**
1963 * @unrestricted 1963 * @unrestricted
1964 */ 1964 */
1965 WebInspector.TimelineUIUtils.EventDispatchTypeDescriptor = class { 1965 Timeline.TimelineUIUtils.EventDispatchTypeDescriptor = class {
1966 /** 1966 /**
1967 * @param {number} priority 1967 * @param {number} priority
1968 * @param {string} color 1968 * @param {string} color
1969 * @param {!Array.<string>} eventTypes 1969 * @param {!Array.<string>} eventTypes
1970 */ 1970 */
1971 constructor(priority, color, eventTypes) { 1971 constructor(priority, color, eventTypes) {
1972 this.priority = priority; 1972 this.priority = priority;
1973 this.color = color; 1973 this.color = color;
1974 this.eventTypes = eventTypes; 1974 this.eventTypes = eventTypes;
1975 } 1975 }
1976 }; 1976 };
1977 1977
1978 1978
1979 /** 1979 /**
1980 * @unrestricted 1980 * @unrestricted
1981 */ 1981 */
1982 WebInspector.TimelineCategory = class extends WebInspector.Object { 1982 Timeline.TimelineCategory = class extends Common.Object {
1983 /** 1983 /**
1984 * @param {string} name 1984 * @param {string} name
1985 * @param {string} title 1985 * @param {string} title
1986 * @param {boolean} visible 1986 * @param {boolean} visible
1987 * @param {string} childColor 1987 * @param {string} childColor
1988 * @param {string} color 1988 * @param {string} color
1989 */ 1989 */
1990 constructor(name, title, visible, childColor, color) { 1990 constructor(name, title, visible, childColor, color) {
1991 super(); 1991 super();
1992 this.name = name; 1992 this.name = name;
1993 this.title = title; 1993 this.title = title;
1994 this.visible = visible; 1994 this.visible = visible;
1995 this.childColor = childColor; 1995 this.childColor = childColor;
1996 this.color = color; 1996 this.color = color;
1997 this.hidden = false; 1997 this.hidden = false;
1998 } 1998 }
1999 1999
2000 /** 2000 /**
2001 * @return {boolean} 2001 * @return {boolean}
2002 */ 2002 */
2003 get hidden() { 2003 get hidden() {
2004 return this._hidden; 2004 return this._hidden;
2005 } 2005 }
2006 2006
2007 /** 2007 /**
2008 * @param {boolean} hidden 2008 * @param {boolean} hidden
2009 */ 2009 */
2010 set hidden(hidden) { 2010 set hidden(hidden) {
2011 this._hidden = hidden; 2011 this._hidden = hidden;
2012 this.dispatchEventToListeners(WebInspector.TimelineCategory.Events.Visibilit yChanged, this); 2012 this.dispatchEventToListeners(Timeline.TimelineCategory.Events.VisibilityCha nged, this);
2013 } 2013 }
2014 }; 2014 };
2015 2015
2016 /** @enum {symbol} */ 2016 /** @enum {symbol} */
2017 WebInspector.TimelineCategory.Events = { 2017 Timeline.TimelineCategory.Events = {
2018 VisibilityChanged: Symbol('VisibilityChanged') 2018 VisibilityChanged: Symbol('VisibilityChanged')
2019 }; 2019 };
2020 2020
2021 /** 2021 /**
2022 * @typedef {!{ 2022 * @typedef {!{
2023 * title: string, 2023 * title: string,
2024 * color: string, 2024 * color: string,
2025 * lineWidth: number, 2025 * lineWidth: number,
2026 * dashStyle: !Array.<number>, 2026 * dashStyle: !Array.<number>,
2027 * tall: boolean, 2027 * tall: boolean,
2028 * lowPriority: boolean 2028 * lowPriority: boolean
2029 * }} 2029 * }}
2030 */ 2030 */
2031 WebInspector.TimelineMarkerStyle; 2031 Timeline.TimelineMarkerStyle;
2032 2032
2033 2033
2034 /** 2034 /**
2035 * @unrestricted 2035 * @unrestricted
2036 */ 2036 */
2037 WebInspector.TimelinePopupContentHelper = class { 2037 Timeline.TimelinePopupContentHelper = class {
2038 /** 2038 /**
2039 * @param {string} title 2039 * @param {string} title
2040 */ 2040 */
2041 constructor(title) { 2041 constructor(title) {
2042 this._contentTable = createElement('table'); 2042 this._contentTable = createElement('table');
2043 var titleCell = this._createCell(WebInspector.UIString('%s - Details', title ), 'timeline-details-title'); 2043 var titleCell = this._createCell(Common.UIString('%s - Details', title), 'ti meline-details-title');
2044 titleCell.colSpan = 2; 2044 titleCell.colSpan = 2;
2045 var titleRow = createElement('tr'); 2045 var titleRow = createElement('tr');
2046 titleRow.appendChild(titleCell); 2046 titleRow.appendChild(titleCell);
2047 this._contentTable.appendChild(titleRow); 2047 this._contentTable.appendChild(titleRow);
2048 } 2048 }
2049 2049
2050 /** 2050 /**
2051 * @return {!Element} 2051 * @return {!Element}
2052 */ 2052 */
2053 contentTable() { 2053 contentTable() {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2095 else 2095 else
2096 cell.createTextChild(content || ''); 2096 cell.createTextChild(content || '');
2097 row.appendChild(cell); 2097 row.appendChild(cell);
2098 this._contentTable.appendChild(row); 2098 this._contentTable.appendChild(row);
2099 } 2099 }
2100 }; 2100 };
2101 2101
2102 /** 2102 /**
2103 * @unrestricted 2103 * @unrestricted
2104 */ 2104 */
2105 WebInspector.TimelineDetailsContentHelper = class { 2105 Timeline.TimelineDetailsContentHelper = class {
2106 /** 2106 /**
2107 * @param {?WebInspector.Target} target 2107 * @param {?SDK.Target} target
2108 * @param {?WebInspector.Linkifier} linkifier 2108 * @param {?Components.Linkifier} linkifier
2109 */ 2109 */
2110 constructor(target, linkifier) { 2110 constructor(target, linkifier) {
2111 this.fragment = createDocumentFragment(); 2111 this.fragment = createDocumentFragment();
2112 2112
2113 this._linkifier = linkifier; 2113 this._linkifier = linkifier;
2114 this._target = target; 2114 this._target = target;
2115 2115
2116 this.element = createElementWithClass('div', 'timeline-details-view-block'); 2116 this.element = createElementWithClass('div', 'timeline-details-view-block');
2117 this._tableElement = this.element.createChild('div', 'vbox timeline-details- chip-body'); 2117 this._tableElement = this.element.createChild('div', 'vbox timeline-details- chip-body');
2118 this.fragment.appendChild(this.element); 2118 this.fragment.appendChild(this.element);
2119 } 2119 }
2120 2120
2121 /** 2121 /**
2122 * @param {string} title 2122 * @param {string} title
2123 * @param {!WebInspector.TimelineCategory=} category 2123 * @param {!Timeline.TimelineCategory=} category
2124 */ 2124 */
2125 addSection(title, category) { 2125 addSection(title, category) {
2126 if (!this._tableElement.hasChildNodes()) { 2126 if (!this._tableElement.hasChildNodes()) {
2127 this.element.removeChildren(); 2127 this.element.removeChildren();
2128 } else { 2128 } else {
2129 this.element = createElementWithClass('div', 'timeline-details-view-block' ); 2129 this.element = createElementWithClass('div', 'timeline-details-view-block' );
2130 this.fragment.appendChild(this.element); 2130 this.fragment.appendChild(this.element);
2131 } 2131 }
2132 2132
2133 if (title) { 2133 if (title) {
2134 var titleElement = this.element.createChild('div', 'timeline-details-chip- title'); 2134 var titleElement = this.element.createChild('div', 'timeline-details-chip- title');
2135 if (category) 2135 if (category)
2136 titleElement.createChild('div').style.backgroundColor = category.color; 2136 titleElement.createChild('div').style.backgroundColor = category.color;
2137 titleElement.createTextChild(title); 2137 titleElement.createTextChild(title);
2138 } 2138 }
2139 2139
2140 this._tableElement = this.element.createChild('div', 'vbox timeline-details- chip-body'); 2140 this._tableElement = this.element.createChild('div', 'vbox timeline-details- chip-body');
2141 this.fragment.appendChild(this.element); 2141 this.fragment.appendChild(this.element);
2142 } 2142 }
2143 2143
2144 /** 2144 /**
2145 * @return {?WebInspector.Linkifier} 2145 * @return {?Components.Linkifier}
2146 */ 2146 */
2147 linkifier() { 2147 linkifier() {
2148 return this._linkifier; 2148 return this._linkifier;
2149 } 2149 }
2150 2150
2151 /** 2151 /**
2152 * @param {string} title 2152 * @param {string} title
2153 * @param {string|number|boolean} value 2153 * @param {string|number|boolean} value
2154 */ 2154 */
2155 appendTextRow(title, value) { 2155 appendTextRow(title, value) {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
2229 * @param {!Element} parentElement 2229 * @param {!Element} parentElement
2230 * @param {!Protocol.Runtime.StackTrace} stackTrace 2230 * @param {!Protocol.Runtime.StackTrace} stackTrace
2231 */ 2231 */
2232 createChildStackTraceElement(parentElement, stackTrace) { 2232 createChildStackTraceElement(parentElement, stackTrace) {
2233 if (!this._linkifier || !this._target) 2233 if (!this._linkifier || !this._target)
2234 return; 2234 return;
2235 parentElement.classList.add('timeline-details-stack-values'); 2235 parentElement.classList.add('timeline-details-stack-values');
2236 var stackTraceElement = 2236 var stackTraceElement =
2237 parentElement.createChild('div', 'timeline-details-view-row-value timeli ne-details-view-row-stack-trace'); 2237 parentElement.createChild('div', 'timeline-details-view-row-value timeli ne-details-view-row-stack-trace');
2238 var callFrameElem = 2238 var callFrameElem =
2239 WebInspector.DOMPresentationUtils.buildStackTracePreviewContents(this._t arget, this._linkifier, stackTrace); 2239 Components.DOMPresentationUtils.buildStackTracePreviewContents(this._tar get, this._linkifier, stackTrace);
2240 stackTraceElement.appendChild(callFrameElem); 2240 stackTraceElement.appendChild(callFrameElem);
2241 } 2241 }
2242 2242
2243 /** 2243 /**
2244 * @param {!WebInspector.TracingModel.Event} event 2244 * @param {!SDK.TracingModel.Event} event
2245 * @param {string=} warningType 2245 * @param {string=} warningType
2246 */ 2246 */
2247 appendWarningRow(event, warningType) { 2247 appendWarningRow(event, warningType) {
2248 var warning = WebInspector.TimelineUIUtils.eventWarning(event, warningType); 2248 var warning = Timeline.TimelineUIUtils.eventWarning(event, warningType);
2249 if (warning) 2249 if (warning)
2250 this.appendElementRow(WebInspector.UIString('Warning'), warning, true); 2250 this.appendElementRow(Common.UIString('Warning'), warning, true);
2251 } 2251 }
2252 }; 2252 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698