| Index: third_party/WebKit/Source/devtools/front_end/timeline/TimelineLoader.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineLoader.js b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineLoader.js
|
| index 8b786f8e9e487413a5c4dd49285e68d81f5de321..051bd61c0b943784b912f8b100dcdf7fffae526b 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineLoader.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineLoader.js
|
| @@ -6,23 +6,20 @@
|
| * @constructor
|
| * @implements {WebInspector.OutputStream}
|
| * @implements {WebInspector.OutputStreamDelegate}
|
| - * @param {!WebInspector.TimelineModel} model
|
| - * @param {!WebInspector.Progress} progress
|
| + * @param {!WebInspector.TracingModel} model
|
| + * @param {!WebInspector.TimelineLifecycleDelegate} delegate
|
| */
|
| -WebInspector.TimelineLoader = function(model, progress)
|
| +WebInspector.TimelineLoader = function(model, delegate)
|
| {
|
| this._model = model;
|
| + this._delegate = delegate;
|
|
|
| /** @type {?function()} */
|
| this._canceledCallback = null;
|
| - this._progress = progress;
|
| - this._progress.setTitle(WebInspector.UIString("Loading"));
|
| - this._progress.setTotalWork(WebInspector.TimelineLoader._totalProgress); // Unknown, will loop the values.
|
|
|
| this._state = WebInspector.TimelineLoader.State.Initial;
|
| this._buffer = "";
|
| this._firstChunk = true;
|
| - this._wasCanceledOnce = false;
|
|
|
| this._loadedBytes = 0;
|
| /** @type {number} */
|
| @@ -31,31 +28,36 @@ WebInspector.TimelineLoader = function(model, progress)
|
| }
|
|
|
| /**
|
| - * @param {!WebInspector.TimelineModel} model
|
| + * @param {!WebInspector.TracingModel} model
|
| * @param {!File} file
|
| - * @param {!WebInspector.Progress} progress
|
| + * @param {!WebInspector.TimelineLifecycleDelegate} delegate
|
| + * @return {!WebInspector.TimelineLoader}
|
| */
|
| -WebInspector.TimelineLoader.loadFromFile = function(model, file, progress)
|
| +WebInspector.TimelineLoader.loadFromFile = function(model, file, delegate)
|
| {
|
| - var loader = new WebInspector.TimelineLoader(model, progress);
|
| + var loader = new WebInspector.TimelineLoader(model, delegate);
|
| var fileReader = WebInspector.TimelineLoader._createFileReader(file, loader);
|
| loader._canceledCallback = fileReader.cancel.bind(fileReader);
|
| loader._totalSize = file.size;
|
| - progress.setTotalWork(loader._totalSize);
|
| fileReader.start(loader);
|
| + return loader;
|
| }
|
|
|
| /**
|
| - * @param {!WebInspector.TimelineModel} model
|
| + * @param {!WebInspector.TracingModel} model
|
| * @param {string} url
|
| - * @param {!WebInspector.Progress} progress
|
| + * @param {!WebInspector.TimelineLifecycleDelegate} delegate
|
| + * @return {!WebInspector.TimelineLoader}
|
| */
|
| -WebInspector.TimelineLoader.loadFromURL = function(model, url, progress)
|
| +WebInspector.TimelineLoader.loadFromURL = function(model, url, delegate)
|
| {
|
| - var stream = new WebInspector.TimelineLoader(model, progress);
|
| + var stream = new WebInspector.TimelineLoader(model, delegate);
|
| WebInspector.ResourceLoader.loadAsStream(url, null, stream);
|
| + return stream;
|
| }
|
|
|
| +WebInspector.TimelineLoader.TransferChunkLengthBytes = 5000000;
|
| +
|
| /**
|
| * @param {!File} file
|
| * @param {!WebInspector.OutputStreamDelegate} delegate
|
| @@ -63,12 +65,9 @@ WebInspector.TimelineLoader.loadFromURL = function(model, url, progress)
|
| */
|
| WebInspector.TimelineLoader._createFileReader = function(file, delegate)
|
| {
|
| - return new WebInspector.ChunkedFileReader(file, WebInspector.TimelineModel.TransferChunkLengthBytes, delegate);
|
| + return new WebInspector.ChunkedFileReader(file, WebInspector.TimelineLoader.TransferChunkLengthBytes, delegate);
|
| }
|
|
|
| -
|
| -WebInspector.TimelineLoader._totalProgress = 100000;
|
| -
|
| WebInspector.TimelineLoader.State = {
|
| Initial: "Initial",
|
| LookingForEvents: "LookingForEvents",
|
| @@ -76,26 +75,27 @@ WebInspector.TimelineLoader.State = {
|
| }
|
|
|
| WebInspector.TimelineLoader.prototype = {
|
| + cancel: function()
|
| + {
|
| + this._model.reset();
|
| + this._delegate.loadingComplete(false);
|
| + this._delegate = null;
|
| + if (this._canceledCallback)
|
| + this._canceledCallback();
|
| + },
|
| +
|
| /**
|
| * @override
|
| * @param {string} chunk
|
| */
|
| write: function(chunk)
|
| {
|
| - this._loadedBytes += chunk.length;
|
| - if (this._progress.isCanceled() && !this._wasCanceledOnce) {
|
| - this._wasCanceled = true;
|
| - this._reportErrorAndCancelLoading();
|
| + if (!this._delegate)
|
| return;
|
| - }
|
| - if (this._firstChunk)
|
| - this._progress.setTitle(WebInspector.UIString("Loading\u2026"));
|
| - if (this._totalSize) {
|
| - this._progress.setWorked(this._loadedBytes);
|
| - } else {
|
| - this._progress.setWorked(this._loadedBytes % WebInspector.TimelineLoader._totalProgress,
|
| - WebInspector.UIString("Loaded %s", Number.bytesToString(this._loadedBytes)));
|
| - }
|
| + this._loadedBytes += chunk.length;
|
| + if (!this._firstChunk)
|
| + this._delegate.loadingProgress(this._totalSize ? this._loadedBytes / this._totalSize : undefined);
|
| +
|
| if (this._state === WebInspector.TimelineLoader.State.Initial) {
|
| if (chunk[0] === "{")
|
| this._state = WebInspector.TimelineLoader.State.LookingForEvents;
|
| @@ -129,7 +129,7 @@ WebInspector.TimelineLoader.prototype = {
|
| var json = data + "]";
|
|
|
| if (this._firstChunk) {
|
| - this._model.startCollectingTraceEvents(true);
|
| + this._delegate.loadingStarted();
|
| } else {
|
| var commaIndex = json.indexOf(",");
|
| if (commaIndex !== -1)
|
| @@ -154,7 +154,7 @@ WebInspector.TimelineLoader.prototype = {
|
| }
|
|
|
| try {
|
| - this._model.traceEventsCollected(items);
|
| + this._model.addEvents(items);
|
| } catch(e) {
|
| this._reportErrorAndCancelLoading(WebInspector.UIString("Malformed timeline data: %s", e.toString()));
|
| return;
|
| @@ -168,11 +168,7 @@ WebInspector.TimelineLoader.prototype = {
|
| {
|
| if (message)
|
| WebInspector.console.error(message);
|
| - this._model.tracingComplete();
|
| - this._model.reset();
|
| - if (this._canceledCallback)
|
| - this._canceledCallback();
|
| - this._progress.done();
|
| + this.cancel();
|
| },
|
|
|
| /**
|
| @@ -190,8 +186,8 @@ WebInspector.TimelineLoader.prototype = {
|
| close: function()
|
| {
|
| this._model._loadedFromFile = true;
|
| - this._model.tracingComplete();
|
| - this._progress.done();
|
| + if (this._delegate)
|
| + this._delegate.loadingComplete(true);
|
| },
|
|
|
| /**
|
|
|