| Index: third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js b/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js
|
| index cb89855c97d72e69893874a888e8fe6005ec1fc9..e5274443bc00d18a2b3a3c1b7a7cd918cd334f10 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js
|
| @@ -32,6 +32,7 @@
|
| /**
|
| * @constructor
|
| * @extends {WebInspector.Panel}
|
| + * @implements {WebInspector.TimelineLifecycleDelegate}
|
| * @implements {WebInspector.TimelineModeViewDelegate}
|
| * @implements {WebInspector.Searchable}
|
| */
|
| @@ -388,7 +389,7 @@ WebInspector.TimelinePanel.prototype = {
|
|
|
| this._updateTimelineControls();
|
| var clearButton = new WebInspector.ToolbarButton(WebInspector.UIString("Clear recording"), "clear-toolbar-item");
|
| - clearButton.addEventListener("click", this._onClearButtonClick, this);
|
| + clearButton.addEventListener("click", this._clear, this);
|
| this._panelToolbar.appendToolbarItem(clearButton);
|
|
|
| this._panelToolbar.appendSeparator();
|
| @@ -444,33 +445,12 @@ WebInspector.TimelinePanel.prototype = {
|
| addGroupingOption.call(this, WebInspector.UIString("%fx slowdown", rate), rate);
|
| this._panelToolbar.appendToolbarItem(this._cpuThrottlingCombobox);
|
| }
|
| -
|
| - this._progressToolbarItem = new WebInspector.ToolbarItem(createElement("div"));
|
| - this._progressToolbarItem.setVisible(false);
|
| - this._panelToolbar.appendToolbarItem(this._progressToolbarItem);
|
| },
|
|
|
| - /**
|
| - * @return {!WebInspector.Progress}
|
| - */
|
| _prepareToLoadTimeline: function()
|
| {
|
| - /**
|
| - * @this {!WebInspector.TimelinePanel}
|
| - */
|
| - function finishLoading()
|
| - {
|
| - this._setState(WebInspector.TimelinePanel.State.Idle);
|
| - this._progressToolbarItem.setVisible(false);
|
| - this._progressToolbarItem.element.removeChildren();
|
| - this._hideRecordingHelpMessage();
|
| - }
|
| - console.assert(this._state === WebInspector.TimelinePanel.State.Idle);
|
| - this._setState(WebInspector.TimelinePanel.State.Loading);
|
| - var progressIndicator = new WebInspector.ProgressIndicator();
|
| - this._progressToolbarItem.setVisible(true);
|
| - this._progressToolbarItem.element.appendChild(progressIndicator.element);
|
| - return new WebInspector.ProgressProxy(progressIndicator, finishLoading.bind(this));
|
| + console.assert(this._state === WebInspector.TimelinePanel.State.Idle);
|
| + this._setState(WebInspector.TimelinePanel.State.Loading);
|
| },
|
|
|
| _createFileSelector: function()
|
| @@ -536,7 +516,8 @@ WebInspector.TimelinePanel.prototype = {
|
| {
|
| if (this._state !== WebInspector.TimelinePanel.State.Idle)
|
| return;
|
| - WebInspector.TimelineLoader.loadFromFile(this._model, file, this._prepareToLoadTimeline());
|
| + this._prepareToLoadTimeline();
|
| + this._loader = WebInspector.TimelineLoader.loadFromFile(this._tracingModel, file, this);
|
| this._createFileSelector();
|
| },
|
|
|
| @@ -547,7 +528,8 @@ WebInspector.TimelinePanel.prototype = {
|
| {
|
| if (this._state !== WebInspector.TimelinePanel.State.Idle)
|
| return;
|
| - WebInspector.TimelineLoader.loadFromURL(this._model, url, this._prepareToLoadTimeline());
|
| + this._prepareToLoadTimeline();
|
| + this._loader = WebInspector.TimelineLoader.loadFromURL(this._tracingModel, url, this);
|
| },
|
|
|
| _refreshViews: function()
|
| @@ -637,8 +619,7 @@ WebInspector.TimelinePanel.prototype = {
|
| {
|
| console.assert(!this._statusPane, "Status pane is already opened.");
|
| this._setState(WebInspector.TimelinePanel.State.StartPending);
|
| - this._statusPane = new WebInspector.TimelinePanel.StatusPane();
|
| - this._statusPane.addEventListener(WebInspector.TimelinePanel.StatusPane.Events.Finish, this._stopRecording, this);
|
| + this._statusPane = new WebInspector.TimelinePanel.StatusPane(true, this._stopRecording.bind(this));
|
| this._statusPane.showPane(this._statusPaneContainer);
|
| this._statusPane.updateStatus(WebInspector.UIString("Initializing recording\u2026"));
|
|
|
| @@ -698,7 +679,7 @@ WebInspector.TimelinePanel.prototype = {
|
| targets[i].heapProfilerAgent().collectGarbage();
|
| },
|
|
|
| - _onClearButtonClick: function()
|
| + _clear: function()
|
| {
|
| this._tracingModel.reset();
|
| this._model.reset();
|
| @@ -816,6 +797,53 @@ WebInspector.TimelinePanel.prototype = {
|
| this._detailsSplitWidget.showBoth();
|
| },
|
|
|
| + /**
|
| + * @override
|
| + */
|
| + loadingStarted: function()
|
| + {
|
| + this._hideRecordingHelpMessage();
|
| + this._model.startCollectingTraceEvents(true);
|
| +
|
| + if (this._statusPane)
|
| + this._statusPane.hide();
|
| + this._statusPane = new WebInspector.TimelinePanel.StatusPane(false, this._cancelLoading.bind(this));
|
| + this._statusPane.showPane(this._statusPaneContainer);
|
| + this._statusPane.updateStatus(WebInspector.UIString("Loading timeline\u2026"));
|
| + this.loadingProgress(0);
|
| + },
|
| +
|
| + /**
|
| + * @override
|
| + * @param {number=} progress
|
| + */
|
| + loadingProgress: function(progress)
|
| + {
|
| + if (typeof progress === "number")
|
| + this._statusPane.updateProgressBar(WebInspector.UIString("Received"), progress * 100);
|
| + },
|
| +
|
| + /**
|
| + * @override
|
| + * @param {boolean} success
|
| + */
|
| + loadingComplete: function(success)
|
| + {
|
| + if (!success) {
|
| + this._onRecordingStopped();
|
| + this._clear();
|
| + } else {
|
| + this._model.tracingComplete();
|
| + }
|
| + delete this._loader;
|
| + },
|
| +
|
| + _cancelLoading: function()
|
| + {
|
| + if (this._loader)
|
| + this._loader.cancel();
|
| + },
|
| +
|
| _setMarkers: function()
|
| {
|
| var markers = new Map();
|
| @@ -1245,6 +1273,28 @@ WebInspector.TimelinePanel.prototype = {
|
| }
|
|
|
| /**
|
| + * @interface
|
| + */
|
| +WebInspector.TimelineLifecycleDelegate = function()
|
| +{
|
| +}
|
| +
|
| +WebInspector.TimelineLifecycleDelegate.prototype = {
|
| + loadingStarted: function() {},
|
| +
|
| + /**
|
| + * @param {number=} progress
|
| + */
|
| + loadingProgress: function(progress) {},
|
| +
|
| + /**
|
| + * @param {boolean} success
|
| + */
|
| + loadingComplete: function(success) {},
|
| +};
|
| +
|
| +
|
| +/**
|
| * @constructor
|
| * @extends {WebInspector.VBox}
|
| * @implements {WebInspector.TimelineModeView}
|
| @@ -1740,8 +1790,10 @@ WebInspector.TimelineStaticFilter.prototype = {
|
| /**
|
| * @constructor
|
| * @extends {WebInspector.VBox}
|
| + * @param {boolean} showTimer
|
| + * @param {function()} stopCallback
|
| */
|
| -WebInspector.TimelinePanel.StatusPane = function()
|
| +WebInspector.TimelinePanel.StatusPane = function(showTimer, stopCallback)
|
| {
|
| WebInspector.VBox.call(this, true);
|
| this.registerRequiredCSS("timeline/timelineStatusDialog.css");
|
| @@ -1751,22 +1803,19 @@ WebInspector.TimelinePanel.StatusPane = function()
|
| statusLine.createChild("div", "label").textContent = WebInspector.UIString("Status");
|
| this._status = statusLine.createChild("div", "content");
|
|
|
| - var timeLine = this.contentElement.createChild("div", "status-dialog-line time");
|
| - timeLine.createChild("div", "label").textContent = WebInspector.UIString("Time");
|
| - this._time = timeLine.createChild("div", "content");
|
| -
|
| + if (showTimer) {
|
| + var timeLine = this.contentElement.createChild("div", "status-dialog-line time");
|
| + timeLine.createChild("div", "label").textContent = WebInspector.UIString("Time");
|
| + this._time = timeLine.createChild("div", "content");
|
| + }
|
| var progressLine = this.contentElement.createChild("div", "status-dialog-line progress");
|
| this._progressLabel = progressLine.createChild("div", "label");
|
| this._progressBar = progressLine.createChild("div", "indicator-container").createChild("div", "indicator");
|
|
|
| - this._stopButton = createTextButton(WebInspector.UIString("Finish"), this._onFinish.bind(this));
|
| + this._stopButton = createTextButton(WebInspector.UIString("Stop"), stopCallback);
|
| this.contentElement.createChild("div", "stop-button").appendChild(this._stopButton);
|
| }
|
|
|
| -WebInspector.TimelinePanel.StatusPane.Events = {
|
| - Finish: "Finish"
|
| -}
|
| -
|
| WebInspector.TimelinePanel.StatusPane.prototype = {
|
| finish: function()
|
| {
|
| @@ -1808,11 +1857,6 @@ WebInspector.TimelinePanel.StatusPane.prototype = {
|
| this._updateTimer();
|
| },
|
|
|
| - _onFinish: function()
|
| - {
|
| - this.dispatchEventToListeners(WebInspector.TimelinePanel.StatusPane.Events.Finish);
|
| - },
|
| -
|
| startTimer: function()
|
| {
|
| this._startTime = Date.now();
|
|
|