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 e5b527e34b0b8e7533f513b5e6400bc6b6cd2b66..bacc777f952f5fc53aee6dd82fda39551e7b2ca9 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineLoader.js |
+++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineLoader.js |
@@ -1,16 +1,17 @@ |
// Copyright 2016 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
- |
/** |
- * @constructor |
* @implements {WebInspector.OutputStream} |
* @implements {WebInspector.OutputStreamDelegate} |
- * @param {!WebInspector.TracingModel} model |
- * @param {!WebInspector.TimelineLifecycleDelegate} delegate |
+ * @unrestricted |
*/ |
-WebInspector.TimelineLoader = function(model, delegate) |
-{ |
+WebInspector.TimelineLoader = class { |
+ /** |
+ * @param {!WebInspector.TracingModel} model |
+ * @param {!WebInspector.TimelineLifecycleDelegate} delegate |
+ */ |
+ constructor(model, delegate) { |
this._model = model; |
this._delegate = delegate; |
@@ -18,262 +19,256 @@ WebInspector.TimelineLoader = function(model, delegate) |
this._canceledCallback = null; |
this._state = WebInspector.TimelineLoader.State.Initial; |
- this._buffer = ""; |
+ this._buffer = ''; |
this._firstChunk = true; |
this._loadedBytes = 0; |
/** @type {number} */ |
this._totalSize; |
this._jsonTokenizer = new WebInspector.TextUtils.BalancedJSONTokenizer(this._writeBalancedJSON.bind(this), true); |
-}; |
+ } |
-/** |
- * @param {!WebInspector.TracingModel} model |
- * @param {!File} file |
- * @param {!WebInspector.TimelineLifecycleDelegate} delegate |
- * @return {!WebInspector.TimelineLoader} |
- */ |
-WebInspector.TimelineLoader.loadFromFile = function(model, file, delegate) |
-{ |
+ /** |
+ * @param {!WebInspector.TracingModel} model |
+ * @param {!File} file |
+ * @param {!WebInspector.TimelineLifecycleDelegate} delegate |
+ * @return {!WebInspector.TimelineLoader} |
+ */ |
+ static loadFromFile(model, file, delegate) { |
var loader = new WebInspector.TimelineLoader(model, delegate); |
var fileReader = WebInspector.TimelineLoader._createFileReader(file, loader); |
loader._canceledCallback = fileReader.cancel.bind(fileReader); |
loader._totalSize = file.size; |
fileReader.start(loader); |
return loader; |
-}; |
+ } |
-/** |
- * @param {!WebInspector.TracingModel} model |
- * @param {string} url |
- * @param {!WebInspector.TimelineLifecycleDelegate} delegate |
- * @return {!WebInspector.TimelineLoader} |
- */ |
-WebInspector.TimelineLoader.loadFromURL = function(model, url, delegate) |
-{ |
+ /** |
+ * @param {!WebInspector.TracingModel} model |
+ * @param {string} url |
+ * @param {!WebInspector.TimelineLifecycleDelegate} delegate |
+ * @return {!WebInspector.TimelineLoader} |
+ */ |
+ static loadFromURL(model, url, delegate) { |
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 |
- * @return {!WebInspector.ChunkedReader} |
- */ |
-WebInspector.TimelineLoader._createFileReader = function(file, delegate) |
-{ |
+ /** |
+ * @param {!File} file |
+ * @param {!WebInspector.OutputStreamDelegate} delegate |
+ * @return {!WebInspector.ChunkedReader} |
+ */ |
+ static _createFileReader(file, delegate) { |
return new WebInspector.ChunkedFileReader(file, WebInspector.TimelineLoader.TransferChunkLengthBytes, delegate); |
-}; |
- |
-/** |
- * @enum {symbol} |
- */ |
-WebInspector.TimelineLoader.State = { |
- Initial: Symbol("Initial"), |
- LookingForEvents: Symbol("LookingForEvents"), |
- ReadingEvents: Symbol("ReadingEvents"), |
- SkippingTail: Symbol("SkippingTail") |
-}; |
+ } |
-WebInspector.TimelineLoader.prototype = { |
- cancel: function() |
- { |
- this._model.reset(); |
- this._delegate.loadingComplete(false); |
- this._delegate = null; |
- if (this._canceledCallback) |
- this._canceledCallback(); |
- }, |
+ cancel() { |
+ this._model.reset(); |
+ this._delegate.loadingComplete(false); |
+ this._delegate = null; |
+ if (this._canceledCallback) |
+ this._canceledCallback(); |
+ } |
- /** |
- * @override |
- * @param {string} chunk |
- */ |
- write: function(chunk) |
- { |
- if (!this._delegate) |
- return; |
- this._loadedBytes += chunk.length; |
- if (!this._firstChunk) |
- this._delegate.loadingProgress(this._totalSize ? this._loadedBytes / this._totalSize : undefined); |
+ /** |
+ * @override |
+ * @param {string} chunk |
+ */ |
+ write(chunk) { |
+ if (!this._delegate) |
+ return; |
+ 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; |
- else if (chunk[0] === "[") |
- this._state = WebInspector.TimelineLoader.State.ReadingEvents; |
- else { |
- this._reportErrorAndCancelLoading(WebInspector.UIString("Malformed timeline data: Unknown JSON format")); |
- return; |
- } |
- } |
+ if (this._state === WebInspector.TimelineLoader.State.Initial) { |
+ if (chunk[0] === '{') |
+ this._state = WebInspector.TimelineLoader.State.LookingForEvents; |
+ else if (chunk[0] === '[') |
+ this._state = WebInspector.TimelineLoader.State.ReadingEvents; |
+ else { |
+ this._reportErrorAndCancelLoading(WebInspector.UIString('Malformed timeline data: Unknown JSON format')); |
+ return; |
+ } |
+ } |
- if (this._state === WebInspector.TimelineLoader.State.LookingForEvents) { |
- var objectName = "\"traceEvents\":"; |
- var startPos = this._buffer.length - objectName.length; |
- this._buffer += chunk; |
- var pos = this._buffer.indexOf(objectName, startPos); |
- if (pos === -1) |
- return; |
- chunk = this._buffer.slice(pos + objectName.length); |
- this._state = WebInspector.TimelineLoader.State.ReadingEvents; |
- } |
+ if (this._state === WebInspector.TimelineLoader.State.LookingForEvents) { |
+ var objectName = '"traceEvents":'; |
+ var startPos = this._buffer.length - objectName.length; |
+ this._buffer += chunk; |
+ var pos = this._buffer.indexOf(objectName, startPos); |
+ if (pos === -1) |
+ return; |
+ chunk = this._buffer.slice(pos + objectName.length); |
+ this._state = WebInspector.TimelineLoader.State.ReadingEvents; |
+ } |
- if (this._state !== WebInspector.TimelineLoader.State.ReadingEvents) |
- return; |
- if (this._jsonTokenizer.write(chunk)) |
- return; |
- this._state = WebInspector.TimelineLoader.State.SkippingTail; |
- if (this._firstChunk) { |
- this._reportErrorAndCancelLoading(WebInspector.UIString("Malformed timeline input, wrong JSON brackets balance")); |
- return; |
- } |
- }, |
+ if (this._state !== WebInspector.TimelineLoader.State.ReadingEvents) |
+ return; |
+ if (this._jsonTokenizer.write(chunk)) |
+ return; |
+ this._state = WebInspector.TimelineLoader.State.SkippingTail; |
+ if (this._firstChunk) { |
+ this._reportErrorAndCancelLoading(WebInspector.UIString('Malformed timeline input, wrong JSON brackets balance')); |
+ return; |
+ } |
+ } |
- /** |
- * @param {string} data |
- */ |
- _writeBalancedJSON: function(data) |
- { |
- var json = data + "]"; |
+ /** |
+ * @param {string} data |
+ */ |
+ _writeBalancedJSON(data) { |
+ var json = data + ']'; |
- if (this._firstChunk) { |
- this._delegate.loadingStarted(); |
- } else { |
- var commaIndex = json.indexOf(","); |
- if (commaIndex !== -1) |
- json = json.slice(commaIndex + 1); |
- json = "[" + json; |
- } |
+ if (this._firstChunk) { |
+ this._delegate.loadingStarted(); |
+ } else { |
+ var commaIndex = json.indexOf(','); |
+ if (commaIndex !== -1) |
+ json = json.slice(commaIndex + 1); |
+ json = '[' + json; |
+ } |
- var items; |
- try { |
- items = /** @type {!Array.<!WebInspector.TracingManager.EventPayload>} */ (JSON.parse(json)); |
- } catch (e) { |
- this._reportErrorAndCancelLoading(WebInspector.UIString("Malformed timeline data: %s", e.toString())); |
- return; |
- } |
+ var items; |
+ try { |
+ items = /** @type {!Array.<!WebInspector.TracingManager.EventPayload>} */ (JSON.parse(json)); |
+ } catch (e) { |
+ this._reportErrorAndCancelLoading(WebInspector.UIString('Malformed timeline data: %s', e.toString())); |
+ return; |
+ } |
- if (this._firstChunk) { |
- this._firstChunk = false; |
- this._model.reset(); |
- if (this._looksLikeAppVersion(items[0])) { |
- this._reportErrorAndCancelLoading(WebInspector.UIString("Legacy Timeline format is not supported.")); |
- return; |
- } |
- } |
+ if (this._firstChunk) { |
+ this._firstChunk = false; |
+ this._model.reset(); |
+ if (this._looksLikeAppVersion(items[0])) { |
+ this._reportErrorAndCancelLoading(WebInspector.UIString('Legacy Timeline format is not supported.')); |
+ return; |
+ } |
+ } |
- try { |
- this._model.addEvents(items); |
- } catch (e) { |
- this._reportErrorAndCancelLoading(WebInspector.UIString("Malformed timeline data: %s", e.toString())); |
- return; |
- } |
- }, |
+ try { |
+ this._model.addEvents(items); |
+ } catch (e) { |
+ this._reportErrorAndCancelLoading(WebInspector.UIString('Malformed timeline data: %s', e.toString())); |
+ return; |
+ } |
+ } |
- /** |
- * @param {string=} message |
- */ |
- _reportErrorAndCancelLoading: function(message) |
- { |
- if (message) |
- WebInspector.console.error(message); |
- this.cancel(); |
- }, |
+ /** |
+ * @param {string=} message |
+ */ |
+ _reportErrorAndCancelLoading(message) { |
+ if (message) |
+ WebInspector.console.error(message); |
+ this.cancel(); |
+ } |
- /** |
- * @param {*} item |
- * @return {boolean} |
- */ |
- _looksLikeAppVersion: function(item) |
- { |
- return typeof item === "string" && item.indexOf("Chrome") !== -1; |
- }, |
+ /** |
+ * @param {*} item |
+ * @return {boolean} |
+ */ |
+ _looksLikeAppVersion(item) { |
+ return typeof item === 'string' && item.indexOf('Chrome') !== -1; |
+ } |
- /** |
- * @override |
- */ |
- close: function() |
- { |
- this._model.tracingComplete(); |
- if (this._delegate) |
- this._delegate.loadingComplete(true); |
- }, |
+ /** |
+ * @override |
+ */ |
+ close() { |
+ this._model.tracingComplete(); |
+ if (this._delegate) |
+ this._delegate.loadingComplete(true); |
+ } |
- /** |
- * @override |
- */ |
- onTransferStarted: function() {}, |
+ /** |
+ * @override |
+ */ |
+ onTransferStarted() { |
+ } |
- /** |
- * @override |
- * @param {!WebInspector.ChunkedReader} reader |
- */ |
- onChunkTransferred: function(reader) {}, |
+ /** |
+ * @override |
+ * @param {!WebInspector.ChunkedReader} reader |
+ */ |
+ onChunkTransferred(reader) { |
+ } |
- /** |
- * @override |
- */ |
- onTransferFinished: function() {}, |
+ /** |
+ * @override |
+ */ |
+ onTransferFinished() { |
+ } |
- /** |
- * @override |
- * @param {!WebInspector.ChunkedReader} reader |
- * @param {!Event} event |
- */ |
- onError: function(reader, event) |
- { |
- switch (event.target.error.name) { |
- case "NotFoundError": |
- this._reportErrorAndCancelLoading(WebInspector.UIString("File \"%s\" not found.", reader.fileName())); |
- break; |
- case "NotReadableError": |
- this._reportErrorAndCancelLoading(WebInspector.UIString("File \"%s\" is not readable", reader.fileName())); |
- break; |
- case "AbortError": |
- break; |
- default: |
- this._reportErrorAndCancelLoading(WebInspector.UIString("An error occurred while reading the file \"%s\"", reader.fileName())); |
- } |
+ /** |
+ * @override |
+ * @param {!WebInspector.ChunkedReader} reader |
+ * @param {!Event} event |
+ */ |
+ onError(reader, event) { |
+ switch (event.target.error.name) { |
+ case 'NotFoundError': |
+ this._reportErrorAndCancelLoading(WebInspector.UIString('File "%s" not found.', reader.fileName())); |
+ break; |
+ case 'NotReadableError': |
+ this._reportErrorAndCancelLoading(WebInspector.UIString('File "%s" is not readable', reader.fileName())); |
+ break; |
+ case 'AbortError': |
+ break; |
+ default: |
+ this._reportErrorAndCancelLoading( |
+ WebInspector.UIString('An error occurred while reading the file "%s"', reader.fileName())); |
} |
+ } |
}; |
+ |
+WebInspector.TimelineLoader.TransferChunkLengthBytes = 5000000; |
+ |
+ |
/** |
- * @constructor |
- * @implements {WebInspector.OutputStreamDelegate} |
+ * @enum {symbol} |
*/ |
-WebInspector.TracingTimelineSaver = function() |
-{ |
+WebInspector.TimelineLoader.State = { |
+ Initial: Symbol('Initial'), |
+ LookingForEvents: Symbol('LookingForEvents'), |
+ ReadingEvents: Symbol('ReadingEvents'), |
+ SkippingTail: Symbol('SkippingTail') |
}; |
-WebInspector.TracingTimelineSaver.prototype = { |
- /** |
- * @override |
- */ |
- onTransferStarted: function() { }, |
+/** |
+ * @implements {WebInspector.OutputStreamDelegate} |
+ * @unrestricted |
+ */ |
+WebInspector.TracingTimelineSaver = class { |
+ /** |
+ * @override |
+ */ |
+ onTransferStarted() { |
+ } |
- /** |
- * @override |
- */ |
- onTransferFinished: function() { }, |
+ /** |
+ * @override |
+ */ |
+ onTransferFinished() { |
+ } |
- /** |
- * @override |
- * @param {!WebInspector.ChunkedReader} reader |
- */ |
- onChunkTransferred: function(reader) { }, |
+ /** |
+ * @override |
+ * @param {!WebInspector.ChunkedReader} reader |
+ */ |
+ onChunkTransferred(reader) { |
+ } |
- /** |
- * @override |
- * @param {!WebInspector.ChunkedReader} reader |
- * @param {!Event} event |
- */ |
- onError: function(reader, event) |
- { |
- var error = event.target.error; |
- WebInspector.console.error(WebInspector.UIString("Failed to save timeline: %s (%s, %s)", error.message, error.name, error.code)); |
- } |
+ /** |
+ * @override |
+ * @param {!WebInspector.ChunkedReader} reader |
+ * @param {!Event} event |
+ */ |
+ onError(reader, event) { |
+ var error = event.target.error; |
+ WebInspector.console.error( |
+ WebInspector.UIString('Failed to save timeline: %s (%s, %s)', error.message, error.name, error.code)); |
+ } |
}; |