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

Side by Side Diff: Source/devtools/front_end/timeline/TracingTimelineModel.js

Issue 557013005: DevTools: extract TracingManager from TracingModel (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: review comments addressed Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/devtools/front_end/timeline/TimelinePanel.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @constructor 6 * @constructor
7 * @param {!WebInspector.TracingManager} tracingManager
7 * @param {!WebInspector.TracingModel} tracingModel 8 * @param {!WebInspector.TracingModel} tracingModel
8 * @param {!WebInspector.TimelineModel.Filter} recordFilter 9 * @param {!WebInspector.TimelineModel.Filter} recordFilter
9 * @extends {WebInspector.TimelineModel} 10 * @extends {WebInspector.TimelineModel}
10 */ 11 */
11 WebInspector.TracingTimelineModel = function(tracingModel, recordFilter) 12 WebInspector.TracingTimelineModel = function(tracingManager, tracingModel, recor dFilter)
12 { 13 {
13 WebInspector.TimelineModel.call(this); 14 WebInspector.TimelineModel.call(this);
15
16 this._tracingManager = tracingManager;
14 this._tracingModel = tracingModel; 17 this._tracingModel = tracingModel;
15 this._recordFilter = recordFilter; 18 this._recordFilter = recordFilter;
16 this._tracingModel.addEventListener(WebInspector.TracingModel.Events.Tracing Started, this._onTracingStarted, this); 19 this._tracingManager.addEventListener(WebInspector.TracingManager.Events.Tra cingStarted, this._onTracingStarted, this);
17 this._tracingModel.addEventListener(WebInspector.TracingModel.Events.Tracing Complete, this._onTracingComplete, this); 20 this._tracingManager.addEventListener(WebInspector.TracingManager.Events.Eve ntsCollected, this._onEventsCollected, this);
21 this._tracingManager.addEventListener(WebInspector.TracingManager.Events.Tra cingComplete, this._onTracingComplete, this);
18 this.reset(); 22 this.reset();
19 } 23 }
20 24
21 WebInspector.TracingTimelineModel.RecordType = { 25 WebInspector.TracingTimelineModel.RecordType = {
22 Program: "Program", 26 Program: "Program",
23 EventDispatch: "EventDispatch", 27 EventDispatch: "EventDispatch",
24 28
25 GPUTask: "GPUTask", 29 GPUTask: "GPUTask",
26 30
27 RequestMainThreadFrame: "RequestMainThreadFrame", 31 RequestMainThreadFrame: "RequestMainThreadFrame",
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 this._startRecordingWithCategories(categories); 152 this._startRecordingWithCategories(categories);
149 }, 153 },
150 154
151 stopRecording: function() 155 stopRecording: function()
152 { 156 {
153 this._stopCallbackBarrier = new CallbackBarrier(); 157 this._stopCallbackBarrier = new CallbackBarrier();
154 if (this._jsProfilerStarted) { 158 if (this._jsProfilerStarted) {
155 this._currentTarget.profilerAgent().stop(this._stopCallbackBarrier.c reateCallback(this._didStopRecordingJSSamples.bind(this))); 159 this._currentTarget.profilerAgent().stop(this._stopCallbackBarrier.c reateCallback(this._didStopRecordingJSSamples.bind(this)));
156 this._jsProfilerStarted = false; 160 this._jsProfilerStarted = false;
157 } 161 }
158 this._tracingModel.stop(); 162 this._tracingManager.stop();
159 }, 163 },
160 164
161 /** 165 /**
162 * @param {!Array.<!WebInspector.TracingModel.EventPayload>} events 166 * @param {!Array.<!WebInspector.TracingManager.EventPayload>} events
163 */ 167 */
164 setEventsForTest: function(events) 168 setEventsForTest: function(events)
165 { 169 {
166 this._tracingModel.setEventsForTest(events); 170 this._onTracingStarted();
171 this._tracingModel.addEvents(events);
172 this._onTracingComplete();
167 }, 173 },
168 174
169 _configureCpuProfilerSamplingInterval: function() 175 _configureCpuProfilerSamplingInterval: function()
170 { 176 {
171 var intervalUs = WebInspector.settings.highResolutionCpuProfiling.get() ? 100 : 1000; 177 var intervalUs = WebInspector.settings.highResolutionCpuProfiling.get() ? 100 : 1000;
172 this._currentTarget.profilerAgent().setSamplingInterval(intervalUs, didC hangeInterval); 178 this._currentTarget.profilerAgent().setSamplingInterval(intervalUs, didC hangeInterval);
173 179
174 function didChangeInterval(error) 180 function didChangeInterval(error)
175 { 181 {
176 if (error) 182 if (error)
177 WebInspector.console.error(error); 183 WebInspector.console.error(error);
178 } 184 }
179 }, 185 },
180 186
181 /** 187 /**
182 * @param {string} categories 188 * @param {string} categories
183 */ 189 */
184 _startRecordingWithCategories: function(categories) 190 _startRecordingWithCategories: function(categories)
185 { 191 {
186 this.reset(); 192 this._tracingManager.start(categories, "");
187 this._tracingModel.start(categories, "");
188 }, 193 },
189 194
190 _onTracingStarted: function() 195 _onTracingStarted: function()
191 { 196 {
192 this.reset(); 197 this.reset();
198 this._tracingModel.reset();
193 this.dispatchEventToListeners(WebInspector.TimelineModel.Events.Recordin gStarted); 199 this.dispatchEventToListeners(WebInspector.TimelineModel.Events.Recordin gStarted);
194 }, 200 },
195 201
202 /**
203 * @param {!WebInspector.Event} event
204 */
205 _onEventsCollected: function(event)
206 {
207 var traceEvents = /** @type {!Array.<!WebInspector.TracingManager.EventP ayload>} */ (event.data);
208 this._tracingModel.addEvents(traceEvents);
209 },
210
196 _onTracingComplete: function() 211 _onTracingComplete: function()
197 { 212 {
213 this._tracingModel.tracingComplete();
198 if (this._stopCallbackBarrier) 214 if (this._stopCallbackBarrier)
199 this._stopCallbackBarrier.callWhenDone(this._didStopRecordingTraceEv ents.bind(this)); 215 this._stopCallbackBarrier.callWhenDone(this._didStopRecordingTraceEv ents.bind(this));
200 else 216 else
201 this._didStopRecordingTraceEvents(); 217 this._didStopRecordingTraceEvents();
202 }, 218 },
203 219
204 /** 220 /**
205 * @param {?Protocol.Error} error 221 * @param {?Protocol.Error} error
206 * @param {?ProfilerAgent.CPUProfile} cpuProfile 222 * @param {?ProfilerAgent.CPUProfile} cpuProfile
207 */ 223 */
(...skipping 732 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 lastIndex = WebInspector.TextUtils.findBalancedCurlyBrackets(data, i ndex); 956 lastIndex = WebInspector.TextUtils.findBalancedCurlyBrackets(data, i ndex);
941 } while (lastIndex !== -1) 957 } while (lastIndex !== -1)
942 958
943 var json = data.slice(0, index) + "]"; 959 var json = data.slice(0, index) + "]";
944 this._buffer = data.slice(index); 960 this._buffer = data.slice(index);
945 961
946 if (!index) 962 if (!index)
947 return; 963 return;
948 964
949 if (this._firstChunk) { 965 if (this._firstChunk) {
950 this._model.reset(); 966 this._model._onTracingStarted();
951 } else { 967 } else {
952 var commaIndex = json.indexOf(","); 968 var commaIndex = json.indexOf(",");
953 if (commaIndex !== -1) 969 if (commaIndex !== -1)
954 json = json.slice(commaIndex + 1); 970 json = json.slice(commaIndex + 1);
955 json = "[" + json; 971 json = "[" + json;
956 } 972 }
957 973
958 var items; 974 var items;
959 try { 975 try {
960 items = /** @type {!Array.<!WebInspector.TracingModel.EventPayload>} */ (JSON.parse(json)); 976 items = /** @type {!Array.<!WebInspector.TracingManager.EventPayload >} */ (JSON.parse(json));
961 } catch (e) { 977 } catch (e) {
962 this._reportErrorAndCancelLoading("Malformed timeline data: " + e); 978 this._reportErrorAndCancelLoading("Malformed timeline data: " + e);
963 return; 979 return;
964 } 980 }
965 981
966 if (this._firstChunk) { 982 if (this._firstChunk) {
967 this._firstChunk = false; 983 this._firstChunk = false;
968 if (this._looksLikeAppVersion(items[0])) { 984 if (this._looksLikeAppVersion(items[0])) {
969 this._reportErrorAndCancelLoading("Old Timeline format is not su pported."); 985 this._reportErrorAndCancelLoading("Old Timeline format is not su pported.");
970 return; 986 return;
971 } 987 }
972 } 988 }
973 989
974 try { 990 try {
975 this._loader.loadNextChunk(items); 991 this._loader.loadNextChunk(items);
976 } catch(e) { 992 } catch(e) {
977 this._reportErrorAndCancelLoading("Malformed timeline data: " + e); 993 this._reportErrorAndCancelLoading("Malformed timeline data: " + e);
978 return; 994 return;
979 } 995 }
980 }, 996 },
981 997
982 _reportErrorAndCancelLoading: function(messsage) 998 _reportErrorAndCancelLoading: function(messsage)
983 { 999 {
984 WebInspector.console.error(messsage); 1000 WebInspector.console.error(messsage);
1001 this._model._onTracingComplete();
985 this._model.reset(); 1002 this._model.reset();
986 this._reader.cancel(); 1003 this._reader.cancel();
987 this._progress.done(); 1004 this._progress.done();
988 }, 1005 },
989 1006
990 _looksLikeAppVersion: function(item) 1007 _looksLikeAppVersion: function(item)
991 { 1008 {
992 return typeof item === "string" && item.indexOf("Chrome") !== -1; 1009 return typeof item === "string" && item.indexOf("Chrome") !== -1;
993 }, 1010 },
994 1011
995 close: function() 1012 close: function()
996 { 1013 {
997 this._loader.finish(); 1014 this._loader.finish();
1015 this._model._onTracingComplete();
998 } 1016 }
999 } 1017 }
1000 1018
1001 /** 1019 /**
1002 * @constructor 1020 * @constructor
1003 * @param {!WebInspector.OutputStream} stream 1021 * @param {!WebInspector.OutputStream} stream
1004 */ 1022 */
1005 WebInspector.TracingTimelineSaver = function(stream) 1023 WebInspector.TracingTimelineSaver = function(stream)
1006 { 1024 {
1007 this._stream = stream; 1025 this._stream = stream;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 }, 1061 },
1044 1062
1045 _didWriteNextChunk: function(stream) 1063 _didWriteNextChunk: function(stream)
1046 { 1064 {
1047 if (this._recordIndex === this._payloads.length) 1065 if (this._recordIndex === this._payloads.length)
1048 stream.close(); 1066 stream.close();
1049 else 1067 else
1050 this._writeNextChunk(stream); 1068 this._writeNextChunk(stream);
1051 } 1069 }
1052 } 1070 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/timeline/TimelinePanel.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698