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

Side by Side Diff: Source/devtools/front_end/TimelinePanel.js

Issue 212683005: Timeline Trace viewer prototype (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebased, extracted model into a file of its own Created 6 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 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 26 matching lines...) Expand all
37 importScript("TimelinePresentationModel.js"); 37 importScript("TimelinePresentationModel.js");
38 importScript("TimelineFrameModel.js"); 38 importScript("TimelineFrameModel.js");
39 importScript("TimelineEventOverview.js"); 39 importScript("TimelineEventOverview.js");
40 importScript("TimelineFrameOverview.js"); 40 importScript("TimelineFrameOverview.js");
41 importScript("TimelineMemoryOverview.js"); 41 importScript("TimelineMemoryOverview.js");
42 importScript("TimelinePowerGraph.js"); 42 importScript("TimelinePowerGraph.js");
43 importScript("TimelinePowerOverview.js"); 43 importScript("TimelinePowerOverview.js");
44 importScript("TimelineFlameChart.js"); 44 importScript("TimelineFlameChart.js");
45 importScript("TimelineUIUtils.js"); 45 importScript("TimelineUIUtils.js");
46 importScript("TimelineView.js"); 46 importScript("TimelineView.js");
47 importScript("TimelineTracingView.js");
47 48
48 /** 49 /**
49 * @constructor 50 * @constructor
50 * @extends {WebInspector.Panel} 51 * @extends {WebInspector.Panel}
51 * @implements {WebInspector.TimelineModeViewDelegate} 52 * @implements {WebInspector.TimelineModeViewDelegate}
52 * @implements {WebInspector.Searchable} 53 * @implements {WebInspector.Searchable}
53 */ 54 */
54 WebInspector.TimelinePanel = function() 55 WebInspector.TimelinePanel = function()
55 { 56 {
56 WebInspector.Panel.call(this, "timeline"); 57 WebInspector.Panel.call(this, "timeline");
(...skipping 25 matching lines...) Expand all
82 83
83 this._presentationModes = [ 84 this._presentationModes = [
84 WebInspector.TimelinePanel.Mode.Events, 85 WebInspector.TimelinePanel.Mode.Events,
85 WebInspector.TimelinePanel.Mode.Frames, 86 WebInspector.TimelinePanel.Mode.Frames,
86 WebInspector.TimelinePanel.Mode.Memory 87 WebInspector.TimelinePanel.Mode.Memory
87 ]; 88 ];
88 if (WebInspector.experimentsSettings.timelineFlameChart.isEnabled()) 89 if (WebInspector.experimentsSettings.timelineFlameChart.isEnabled())
89 this._presentationModes.push(WebInspector.TimelinePanel.Mode.FlameChart) ; 90 this._presentationModes.push(WebInspector.TimelinePanel.Mode.FlameChart) ;
90 if (Capabilities.canProfilePower) 91 if (Capabilities.canProfilePower)
91 this._presentationModes.push(WebInspector.TimelinePanel.Mode.Power); 92 this._presentationModes.push(WebInspector.TimelinePanel.Mode.Power);
93 if (WebInspector.experimentsSettings.timelineTracingMode.isEnabled())
94 this._presentationModes.push(WebInspector.TimelinePanel.Mode.Tracing);
92 95
93 this._presentationModeSetting = WebInspector.settings.createSetting("timelin eOverviewMode", WebInspector.TimelinePanel.Mode.Events); 96 this._presentationModeSetting = WebInspector.settings.createSetting("timelin eOverviewMode", WebInspector.TimelinePanel.Mode.Events);
94 97
95 this._createStatusBarItems(); 98 this._createStatusBarItems();
96 99
97 this._topPane = new WebInspector.SplitView(true, false); 100 this._topPane = new WebInspector.SplitView(true, false);
98 this._topPane.element.id = "timeline-overview-panel"; 101 this._topPane.element.id = "timeline-overview-panel";
99 this._topPane.show(this.element); 102 this._topPane.show(this.element);
100 this._topPane.addEventListener(WebInspector.SplitView.Events.SidebarSizeChan ged, this._sidebarResized, this); 103 this._topPane.addEventListener(WebInspector.SplitView.Events.SidebarSizeChan ged, this._sidebarResized, this);
101 this._topPane.setResizable(false); 104 this._topPane.setResizable(false);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 138
136 this._selectPresentationMode(this._presentationModeSetting.get()); 139 this._selectPresentationMode(this._presentationModeSetting.get());
137 this._detailsSplitView.show(this.element); 140 this._detailsSplitView.show(this.element);
138 } 141 }
139 142
140 WebInspector.TimelinePanel.Mode = { 143 WebInspector.TimelinePanel.Mode = {
141 Events: "Events", 144 Events: "Events",
142 Frames: "Frames", 145 Frames: "Frames",
143 Memory: "Memory", 146 Memory: "Memory",
144 FlameChart: "FlameChart", 147 FlameChart: "FlameChart",
145 Power: "Power" 148 Power: "Power",
149 Tracing: "Tracing"
146 }; 150 };
147 151
148 // Define row and header height, should be in sync with styles for timeline grap hs. 152 // Define row and header height, should be in sync with styles for timeline grap hs.
149 WebInspector.TimelinePanel.rowHeight = 18; 153 WebInspector.TimelinePanel.rowHeight = 18;
150 WebInspector.TimelinePanel.headerHeight = 20; 154 WebInspector.TimelinePanel.headerHeight = 20;
151 155
152 WebInspector.TimelinePanel.durationFilterPresetsMs = [0, 1, 15]; 156 WebInspector.TimelinePanel.durationFilterPresetsMs = [0, 1, 15];
153 157
154 WebInspector.TimelinePanel.prototype = { 158 WebInspector.TimelinePanel.prototype = {
155 wasShown: function() 159 wasShown: function()
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 * @return {!WebInspector.TimelineFrameModel} 240 * @return {!WebInspector.TimelineFrameModel}
237 */ 241 */
238 _frameModel: function() 242 _frameModel: function()
239 { 243 {
240 if (!this._lazyFrameModel) 244 if (!this._lazyFrameModel)
241 this._lazyFrameModel = new WebInspector.TimelineFrameModel(this._mod el); 245 this._lazyFrameModel = new WebInspector.TimelineFrameModel(this._mod el);
242 return this._lazyFrameModel; 246 return this._lazyFrameModel;
243 }, 247 },
244 248
245 /** 249 /**
250 * @return {!WebInspector.TimelineTracingView}
251 */
252 _tracingView: function()
253 {
254 if (!this._lazyTracingView)
255 this._lazyTracingView = new WebInspector.TimelineTracingView(this);
256 return this._lazyTracingView;
257 },
258
259 /**
246 * @return {!WebInspector.TimelineView} 260 * @return {!WebInspector.TimelineView}
247 */ 261 */
248 _timelineView: function() 262 _timelineView: function()
249 { 263 {
250 if (!this._lazyTimelineView) 264 if (!this._lazyTimelineView)
251 this._lazyTimelineView = new WebInspector.TimelineView(this, this._m odel); 265 this._lazyTimelineView = new WebInspector.TimelineView(this, this._m odel);
252 return this._lazyTimelineView; 266 return this._lazyTimelineView;
253 }, 267 },
254 268
255 /** 269 /**
(...skipping 19 matching lines...) Expand all
275 views.mainViews = [this._timelineView(), new WebInspector.Memory CountersGraph(this, this._model)]; 289 views.mainViews = [this._timelineView(), new WebInspector.Memory CountersGraph(this, this._model)];
276 break; 290 break;
277 case WebInspector.TimelinePanel.Mode.FlameChart: 291 case WebInspector.TimelinePanel.Mode.FlameChart:
278 views.overviewView = new WebInspector.TimelineFrameOverview(this ._model, this._frameModel()); 292 views.overviewView = new WebInspector.TimelineFrameOverview(this ._model, this._frameModel());
279 views.mainViews = [new WebInspector.TimelineFlameChart(this, thi s._model, this._frameModel())]; 293 views.mainViews = [new WebInspector.TimelineFlameChart(this, thi s._model, this._frameModel())];
280 break; 294 break;
281 case WebInspector.TimelinePanel.Mode.Power: 295 case WebInspector.TimelinePanel.Mode.Power:
282 views.overviewView = new WebInspector.TimelinePowerOverview(this ._model); 296 views.overviewView = new WebInspector.TimelinePowerOverview(this ._model);
283 views.mainViews = [this._timelineView(), new WebInspector.Timeli nePowerGraph(this, this._model)]; 297 views.mainViews = [this._timelineView(), new WebInspector.Timeli nePowerGraph(this, this._model)];
284 break; 298 break;
299 case WebInspector.TimelinePanel.Mode.Tracing:
300 views.overviewView = new WebInspector.TimelineFrameOverview(this ._model, this._frameModel());
301 views.mainViews = [this._tracingView()];
302 break;
285 default: 303 default:
286 console.assert(false, "Unknown mode: " + mode); 304 console.assert(false, "Unknown mode: " + mode);
287 } 305 }
288 for (var i = 0; i < views.mainViews.length; ++i) 306 for (var i = 0; i < views.mainViews.length; ++i)
289 views.mainViews[i].addEventListener(WebInspector.SplitView.Event s.SidebarSizeChanged, this._sidebarResized, this); 307 views.mainViews[i].addEventListener(WebInspector.SplitView.Event s.SidebarSizeChanged, this._sidebarResized, this);
290 this._viewsMap[mode] = views; 308 this._viewsMap[mode] = views;
291 } 309 }
292 310
293 this._timelineView().setFrameModel(mode === WebInspector.TimelinePanel.M ode.Frames ? this._frameModel() : null); 311 this._timelineView().setFrameModel(mode === WebInspector.TimelinePanel.M ode.Frames ? this._frameModel() : null);
294 return views; 312 return views;
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 this._updateSelectionDetails(); 578 this._updateSelectionDetails();
561 }, 579 },
562 580
563 /** 581 /**
564 * @param {boolean} userInitiated 582 * @param {boolean} userInitiated
565 */ 583 */
566 _startRecording: function(userInitiated) 584 _startRecording: function(userInitiated)
567 { 585 {
568 this._userInitiatedRecording = userInitiated; 586 this._userInitiatedRecording = userInitiated;
569 this._model.startRecording(); 587 this._model.startRecording();
570 for (var i = 0; i < this._presentationModes.length; ++i) 588 for (var i = 0; i < this._presentationModes.length; ++i) {
571 this._viewsForMode(this._presentationModes[i]).overviewView.timeline Started(); 589 var views = this._viewsForMode(this._presentationModes[i]);
572 590 views.overviewView.timelineStarted();
591 for (var j = 0; j < views.mainViews.length; ++j)
592 views.mainViews[j].timelineStarted();
593 }
573 if (userInitiated) 594 if (userInitiated)
574 WebInspector.userMetrics.TimelineStarted.record(); 595 WebInspector.userMetrics.TimelineStarted.record();
575 }, 596 },
576 597
577 _stopRecording: function() 598 _stopRecording: function()
578 { 599 {
579 this._userInitiatedRecording = false; 600 this._userInitiatedRecording = false;
580 this._model.stopRecording(); 601 this._model.stopRecording();
581 for (var i = 0; i < this._presentationModes.length; ++i) 602 for (var i = 0; i < this._presentationModes.length; ++i) {
582 this._viewsForMode(this._presentationModes[i]).overviewView.timeline Stopped(); 603 var views = this._viewsForMode(this._presentationModes[i]);
604 views.overviewView.timelineStopped();
605 for (var j = 0; j < views.mainViews.length; ++j)
606 views.mainViews[j].timelineStopped();
607 }
583 }, 608 },
584 609
585 /** 610 /**
586 * @return {boolean} 611 * @return {boolean}
587 */ 612 */
588 _toggleTimelineButtonClicked: function() 613 _toggleTimelineButtonClicked: function()
589 { 614 {
590 if (this._operationInProgress) 615 if (this._operationInProgress)
591 return true; 616 return true;
592 if (this._recordingInProgress()) 617 if (this._recordingInProgress())
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
997 setWindowTimes: function(startTime, endTime) {}, 1022 setWindowTimes: function(startTime, endTime) {},
998 1023
999 /** 1024 /**
1000 * @param {number} width 1025 * @param {number} width
1001 */ 1026 */
1002 setSidebarSize: function(width) {}, 1027 setSidebarSize: function(width) {},
1003 1028
1004 /** 1029 /**
1005 * @param {?WebInspector.TimelineModel.Record} record 1030 * @param {?WebInspector.TimelineModel.Record} record
1006 */ 1031 */
1007 setSelectedRecord: function(record) {} 1032 setSelectedRecord: function(record) {},
1033
1034 timelineStarted: function() {},
1035
1036 timelineStopped: function() {},
1008 } 1037 }
1009 1038
1010 /** 1039 /**
1011 * @interface 1040 * @interface
1012 */ 1041 */
1013 WebInspector.TimelineModeViewDelegate = function() {} 1042 WebInspector.TimelineModeViewDelegate = function() {}
1014 1043
1015 WebInspector.TimelineModeViewDelegate.prototype = { 1044 WebInspector.TimelineModeViewDelegate.prototype = {
1016 /** 1045 /**
1017 * @param {number} startTime 1046 * @param {number} startTime
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
1156 * @param {!WebInspector.TimelineModel.Record} record 1185 * @param {!WebInspector.TimelineModel.Record} record
1157 * @return {boolean} 1186 * @return {boolean}
1158 */ 1187 */
1159 accept: function(record) 1188 accept: function(record)
1160 { 1189 {
1161 return !this._hiddenRecords[record.type]; 1190 return !this._hiddenRecords[record.type];
1162 }, 1191 },
1163 1192
1164 __proto__: WebInspector.TimelineModel.Filter.prototype 1193 __proto__: WebInspector.TimelineModel.Filter.prototype
1165 } 1194 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/TimelineFlameChart.js ('k') | Source/devtools/front_end/TimelinePowerGraph.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698