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

Unified Diff: third_party/WebKit/Source/devtools/front_end/sdk/InspectorBackend.js

Issue 2466123002: DevTools: reformat front-end code to match chromium style. (Closed)
Patch Set: all done Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/sdk/InspectorBackend.js
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/InspectorBackend.js b/third_party/WebKit/Source/devtools/front_end/sdk/InspectorBackend.js
index 9009fd49b348b38b7d35a8f83414047be0e74ed3..c757fc1d69312df64eac3d22924e8024fdbba589 100644
--- a/third_party/WebKit/Source/devtools/front_end/sdk/InspectorBackend.js
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/InspectorBackend.js
@@ -27,184 +27,169 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-
/**
- * @constructor
+ * @unrestricted
*/
-function InspectorBackendClass()
-{
+var InspectorBackendClass = class {
+ constructor() {
this._agentPrototypes = {};
this._dispatcherPrototypes = {};
this._initialized = false;
-}
-
-InspectorBackendClass._DevToolsErrorCode = -32000;
-InspectorBackendClass.DevToolsStubErrorCode = -32015;
-
-/**
- * @param {string} error
- * @param {!Object} messageObject
- */
-InspectorBackendClass.reportProtocolError = function(error, messageObject)
-{
- console.error(error + ": " + JSON.stringify(messageObject));
-};
-
-InspectorBackendClass.prototype = {
- /**
- * @return {boolean}
- */
- isInitialized: function()
- {
- return this._initialized;
- },
-
- /**
- * @param {string} domain
- */
- _addAgentGetterMethodToProtocolTargetPrototype: function(domain)
- {
- var upperCaseLength = 0;
- while (upperCaseLength < domain.length && domain[upperCaseLength].toLowerCase() !== domain[upperCaseLength])
- ++upperCaseLength;
-
- var methodName = domain.substr(0, upperCaseLength).toLowerCase() + domain.slice(upperCaseLength) + "Agent";
-
- /**
- * @this {Protocol.Target}
- */
- function agentGetter()
- {
- return this._agents[domain];
- }
-
- Protocol.Target.prototype[methodName] = agentGetter;
-
- /**
- * @this {Protocol.Target}
- */
- function registerDispatcher(dispatcher)
- {
- this.registerDispatcher(domain, dispatcher);
- }
-
- Protocol.Target.prototype["register" + domain + "Dispatcher"] = registerDispatcher;
- },
-
- /**
- * @param {string} domain
- * @return {!InspectorBackendClass._AgentPrototype}
- */
- _agentPrototype: function(domain)
- {
- if (!this._agentPrototypes[domain]) {
- this._agentPrototypes[domain] = new InspectorBackendClass._AgentPrototype(domain);
- this._addAgentGetterMethodToProtocolTargetPrototype(domain);
- }
-
- return this._agentPrototypes[domain];
- },
-
- /**
- * @param {string} domain
- * @return {!InspectorBackendClass._DispatcherPrototype}
- */
- _dispatcherPrototype: function(domain)
- {
- if (!this._dispatcherPrototypes[domain])
- this._dispatcherPrototypes[domain] = new InspectorBackendClass._DispatcherPrototype();
- return this._dispatcherPrototypes[domain];
- },
+ }
+
+ /**
+ * @param {string} error
+ * @param {!Object} messageObject
+ */
+ static reportProtocolError(error, messageObject) {
+ console.error(error + ': ' + JSON.stringify(messageObject));
+ }
+
+ /**
+ * @return {boolean}
+ */
+ isInitialized() {
+ return this._initialized;
+ }
+
+ /**
+ * @param {string} domain
+ */
+ _addAgentGetterMethodToProtocolTargetPrototype(domain) {
+ var upperCaseLength = 0;
+ while (upperCaseLength < domain.length && domain[upperCaseLength].toLowerCase() !== domain[upperCaseLength])
+ ++upperCaseLength;
+
+ var methodName = domain.substr(0, upperCaseLength).toLowerCase() + domain.slice(upperCaseLength) + 'Agent';
+
+ /**
+ * @this {Protocol.Target}
+ */
+ function agentGetter() {
+ return this._agents[domain];
+ }
- /**
- * @param {string} method
- * @param {!Array.<!Object>} signature
- * @param {!Array.<string>} replyArgs
- * @param {boolean} hasErrorData
- */
- registerCommand: function(method, signature, replyArgs, hasErrorData)
- {
- var domainAndMethod = method.split(".");
- this._agentPrototype(domainAndMethod[0]).registerCommand(domainAndMethod[1], signature, replyArgs, hasErrorData);
- this._initialized = true;
- },
+ Protocol.Target.prototype[methodName] = agentGetter;
/**
- * @param {string} type
- * @param {!Object} values
+ * @this {Protocol.Target}
*/
- registerEnum: function(type, values)
- {
- var domainAndMethod = type.split(".");
- var agentName = domainAndMethod[0] + "Agent";
- if (!window[agentName])
- window[agentName] = {};
-
- window[agentName][domainAndMethod[1]] = values;
- this._initialized = true;
- },
+ function registerDispatcher(dispatcher) {
+ this.registerDispatcher(domain, dispatcher);
+ }
- /**
- * @param {string} eventName
- * @param {!Object} params
- */
- registerEvent: function(eventName, params)
- {
- var domain = eventName.split(".")[0];
- this._dispatcherPrototype(domain).registerEvent(eventName, params);
- this._initialized = true;
- },
+ Protocol.Target.prototype['register' + domain + 'Dispatcher'] = registerDispatcher;
+ }
+
+ /**
+ * @param {string} domain
+ * @return {!InspectorBackendClass._AgentPrototype}
+ */
+ _agentPrototype(domain) {
+ if (!this._agentPrototypes[domain]) {
+ this._agentPrototypes[domain] = new InspectorBackendClass._AgentPrototype(domain);
+ this._addAgentGetterMethodToProtocolTargetPrototype(domain);
+ }
- /**
- * @param {function(T)} clientCallback
- * @param {string} errorPrefix
- * @param {function(new:T,S)=} constructor
- * @param {T=} defaultValue
- * @return {function(?string, S)}
- * @template T,S
- */
- wrapClientCallback: function(clientCallback, errorPrefix, constructor, defaultValue)
- {
- /**
- * @param {?string} error
- * @param {S} value
- * @template S
- */
- function callbackWrapper(error, value)
- {
- if (error) {
- console.error(errorPrefix + error);
- clientCallback(defaultValue);
- return;
- }
- if (constructor)
- clientCallback(new constructor(value));
- else
- clientCallback(value);
- }
- return callbackWrapper;
+ return this._agentPrototypes[domain];
+ }
+
+ /**
+ * @param {string} domain
+ * @return {!InspectorBackendClass._DispatcherPrototype}
+ */
+ _dispatcherPrototype(domain) {
+ if (!this._dispatcherPrototypes[domain])
+ this._dispatcherPrototypes[domain] = new InspectorBackendClass._DispatcherPrototype();
+ return this._dispatcherPrototypes[domain];
+ }
+
+ /**
+ * @param {string} method
+ * @param {!Array.<!Object>} signature
+ * @param {!Array.<string>} replyArgs
+ * @param {boolean} hasErrorData
+ */
+ registerCommand(method, signature, replyArgs, hasErrorData) {
+ var domainAndMethod = method.split('.');
+ this._agentPrototype(domainAndMethod[0]).registerCommand(domainAndMethod[1], signature, replyArgs, hasErrorData);
+ this._initialized = true;
+ }
+
+ /**
+ * @param {string} type
+ * @param {!Object} values
+ */
+ registerEnum(type, values) {
+ var domainAndMethod = type.split('.');
+ var agentName = domainAndMethod[0] + 'Agent';
+ if (!window[agentName])
+ window[agentName] = {};
+
+ window[agentName][domainAndMethod[1]] = values;
+ this._initialized = true;
+ }
+
+ /**
+ * @param {string} eventName
+ * @param {!Object} params
+ */
+ registerEvent(eventName, params) {
+ var domain = eventName.split('.')[0];
+ this._dispatcherPrototype(domain).registerEvent(eventName, params);
+ this._initialized = true;
+ }
+
+ /**
+ * @param {function(T)} clientCallback
+ * @param {string} errorPrefix
+ * @param {function(new:T,S)=} constructor
+ * @param {T=} defaultValue
+ * @return {function(?string, S)}
+ * @template T,S
+ */
+ wrapClientCallback(clientCallback, errorPrefix, constructor, defaultValue) {
+ /**
+ * @param {?string} error
+ * @param {S} value
+ * @template S
+ */
+ function callbackWrapper(error, value) {
+ if (error) {
+ console.error(errorPrefix + error);
+ clientCallback(defaultValue);
+ return;
+ }
+ if (constructor)
+ clientCallback(new constructor(value));
+ else
+ clientCallback(value);
}
+ return callbackWrapper;
+ }
};
+InspectorBackendClass._DevToolsErrorCode = -32000;
+InspectorBackendClass.DevToolsStubErrorCode = -32015;
+
+
var InspectorBackend = new InspectorBackendClass();
/**
* @interface
*/
-InspectorBackendClass.Connection = function()
-{
-};
+InspectorBackendClass.Connection = function() {};
InspectorBackendClass.Connection.prototype = {
- /**
- * @param {string} message
- */
- sendMessage: function(message) { },
-
- /**
- * @return {!Promise}
- */
- disconnect: function() { },
+ /**
+ * @param {string} message
+ */
+ sendMessage: function(message) {},
+
+ /**
+ * @return {!Promise}
+ */
+ disconnect: function() {},
};
/**
@@ -226,12 +211,15 @@ var Protocol = {};
Protocol.Error;
/**
- * @constructor
- * @param {!InspectorBackendClass.Connection.Factory} connectionFactory
+ * @unrestricted
*/
-Protocol.Target = function(connectionFactory)
-{
- this._connection = connectionFactory({onMessage: this._onMessage.bind(this), onDisconnect: this._onDisconnect.bind(this)});
+Protocol.Target = class {
+ /**
+ * @param {!InspectorBackendClass.Connection.Factory} connectionFactory
+ */
+ constructor(connectionFactory) {
+ this._connection =
+ connectionFactory({onMessage: this._onMessage.bind(this), onDisconnect: this._onDisconnect.bind(this)});
this._lastMessageId = 1;
this._pendingResponsesCount = 0;
this._agents = {};
@@ -239,508 +227,503 @@ Protocol.Target = function(connectionFactory)
this._callbacks = {};
this._initialize(InspectorBackend._agentPrototypes, InspectorBackend._dispatcherPrototypes);
if (!InspectorBackendClass.deprecatedRunAfterPendingDispatches)
- InspectorBackendClass.deprecatedRunAfterPendingDispatches = this._deprecatedRunAfterPendingDispatches.bind(this);
+ InspectorBackendClass.deprecatedRunAfterPendingDispatches = this._deprecatedRunAfterPendingDispatches.bind(this);
if (!InspectorBackendClass.sendRawMessageForTesting)
- InspectorBackendClass.sendRawMessageForTesting = this._sendRawMessageForTesting.bind(this);
-};
-
-Protocol.Target.prototype = {
- /**
- * @param {!Object.<string, !InspectorBackendClass._AgentPrototype>} agentPrototypes
- * @param {!Object.<string, !InspectorBackendClass._DispatcherPrototype>} dispatcherPrototypes
- */
- _initialize: function(agentPrototypes, dispatcherPrototypes)
- {
- for (var domain in agentPrototypes) {
- this._agents[domain] = Object.create(agentPrototypes[domain]);
- this._agents[domain].setTarget(this);
- }
-
- for (var domain in dispatcherPrototypes)
- this._dispatchers[domain] = Object.create(dispatcherPrototypes[domain]);
- },
-
- /**
- * @return {number}
- */
- _nextMessageId: function()
- {
- return this._lastMessageId++;
- },
+ InspectorBackendClass.sendRawMessageForTesting = this._sendRawMessageForTesting.bind(this);
+ }
+
+ /**
+ * @param {!Object.<string, !InspectorBackendClass._AgentPrototype>} agentPrototypes
+ * @param {!Object.<string, !InspectorBackendClass._DispatcherPrototype>} dispatcherPrototypes
+ */
+ _initialize(agentPrototypes, dispatcherPrototypes) {
+ for (var domain in agentPrototypes) {
+ this._agents[domain] = Object.create(agentPrototypes[domain]);
+ this._agents[domain].setTarget(this);
+ }
- /**
- * @param {string} domain
- * @return {!InspectorBackendClass._AgentPrototype}
- */
- _agent: function(domain)
- {
- return this._agents[domain];
- },
+ for (var domain in dispatcherPrototypes)
+ this._dispatchers[domain] = Object.create(dispatcherPrototypes[domain]);
+ }
+
+ /**
+ * @return {number}
+ */
+ _nextMessageId() {
+ return this._lastMessageId++;
+ }
+
+ /**
+ * @param {string} domain
+ * @return {!InspectorBackendClass._AgentPrototype}
+ */
+ _agent(domain) {
+ return this._agents[domain];
+ }
+
+ /**
+ * @param {string} domain
+ * @param {string} method
+ * @param {?Object} params
+ * @param {?function(*)} callback
+ */
+ _wrapCallbackAndSendMessageObject(domain, method, params, callback) {
+ if (!this._connection) {
+ if (callback)
+ this._dispatchConnectionErrorResponse(domain, method, callback);
+ return;
+ }
- /**
- * @param {string} domain
- * @param {string} method
- * @param {?Object} params
- * @param {?function(*)} callback
- */
- _wrapCallbackAndSendMessageObject: function(domain, method, params, callback)
- {
- if (!this._connection) {
- if (callback)
- this._dispatchConnectionErrorResponse(domain, method, callback);
- return;
- }
-
- var messageObject = {};
- var messageId = this._nextMessageId();
- messageObject.id = messageId;
- messageObject.method = method;
- if (params)
- messageObject.params = params;
-
- var wrappedCallback = this._wrap(callback, domain, method);
- var message = JSON.stringify(messageObject);
-
- if (InspectorBackendClass.Options.dumpInspectorProtocolMessages)
- this._dumpProtocolMessage("frontend: " + message);
-
- this._connection.sendMessage(message);
- ++this._pendingResponsesCount;
- this._callbacks[messageId] = wrappedCallback;
- },
+ var messageObject = {};
+ var messageId = this._nextMessageId();
+ messageObject.id = messageId;
+ messageObject.method = method;
+ if (params)
+ messageObject.params = params;
+
+ var wrappedCallback = this._wrap(callback, domain, method);
+ var message = JSON.stringify(messageObject);
+
+ if (InspectorBackendClass.Options.dumpInspectorProtocolMessages)
+ this._dumpProtocolMessage('frontend: ' + message);
+
+ this._connection.sendMessage(message);
+ ++this._pendingResponsesCount;
+ this._callbacks[messageId] = wrappedCallback;
+ }
+
+ /**
+ * @param {?function(*)} callback
+ * @param {string} method
+ * @param {string} domain
+ * @return {function(*)}
+ */
+ _wrap(callback, domain, method) {
+ if (!callback)
+ callback = function() {};
+
+ callback.methodName = method;
+ callback.domain = domain;
+ if (InspectorBackendClass.Options.dumpInspectorTimeStats)
+ callback.sendRequestTime = Date.now();
+
+ return callback;
+ }
+
+ /**
+ * @param {string} method
+ * @param {?Object} params
+ * @param {?function(...*)} callback
+ */
+ _sendRawMessageForTesting(method, params, callback) {
+ var domain = method.split('.')[0];
+ this._wrapCallbackAndSendMessageObject(domain, method, params, callback);
+ }
+
+ /**
+ * @param {!Object|string} message
+ */
+ _onMessage(message) {
+ if (InspectorBackendClass.Options.dumpInspectorProtocolMessages)
+ this._dumpProtocolMessage('backend: ' + ((typeof message === 'string') ? message : JSON.stringify(message)));
+
+ var messageObject = /** @type {!Object} */ ((typeof message === 'string') ? JSON.parse(message) : message);
+
+ if ('id' in messageObject) { // just a response for some request
+ var callback = this._callbacks[messageObject.id];
+ if (!callback) {
+ InspectorBackendClass.reportProtocolError('Protocol Error: the message with wrong id', messageObject);
+ return;
+ }
+
+ var processingStartTime;
+ if (InspectorBackendClass.Options.dumpInspectorTimeStats)
+ processingStartTime = Date.now();
+
+ this._agent(callback.domain).dispatchResponse(messageObject, callback.methodName, callback);
+ --this._pendingResponsesCount;
+ delete this._callbacks[messageObject.id];
+
+ if (InspectorBackendClass.Options.dumpInspectorTimeStats)
+ console.log(
+ 'time-stats: ' + callback.methodName + ' = ' + (processingStartTime - callback.sendRequestTime) + ' + ' +
+ (Date.now() - processingStartTime));
+
+ if (this._scripts && !this._pendingResponsesCount)
+ this._deprecatedRunAfterPendingDispatches();
+ } else {
+ if (!('method' in messageObject)) {
+ InspectorBackendClass.reportProtocolError('Protocol Error: the message without method', messageObject);
+ return;
+ }
+
+ var method = messageObject.method.split('.');
+ var domainName = method[0];
+ if (!(domainName in this._dispatchers)) {
+ InspectorBackendClass.reportProtocolError(
+ 'Protocol Error: the message ' + messageObject.method + ' is for non-existing domain \'' + domainName +
+ '\'',
+ messageObject);
+ return;
+ }
+
+ this._dispatchers[domainName].dispatch(method[1], messageObject);
+ }
+ }
+
+ /**
+ * @param {string} domain
+ * @param {!Object} dispatcher
+ */
+ registerDispatcher(domain, dispatcher) {
+ if (!this._dispatchers[domain])
+ return;
+
+ this._dispatchers[domain].setDomainDispatcher(dispatcher);
+ }
+
+ /**
+ * @param {function()=} script
+ */
+ _deprecatedRunAfterPendingDispatches(script) {
+ if (!this._scripts)
+ this._scripts = [];
+
+ if (script)
+ this._scripts.push(script);
+
+ // Execute all promises.
+ setTimeout(function() {
+ if (!this._pendingResponsesCount)
+ this._executeAfterPendingDispatches();
+ else
+ this._deprecatedRunAfterPendingDispatches();
+ }.bind(this), 0);
+ }
+
+ _executeAfterPendingDispatches() {
+ if (!this._pendingResponsesCount) {
+ var scripts = this._scripts;
+ this._scripts = [];
+ for (var id = 0; id < scripts.length; ++id)
+ scripts[id].call(this);
+ }
+ }
+
+ /**
+ * @param {string} message
+ */
+ _dumpProtocolMessage(message) {
+ console.log(message);
+ }
+
+ /**
+ * @param {string} reason
+ */
+ _onDisconnect(reason) {
+ this._connection = null;
+ this._runPendingCallbacks();
+ this.dispose();
+ }
+
+ /**
+ * @protected
+ */
+ dispose() {
+ }
+
+ /**
+ * @return {boolean}
+ */
+ isDisposed() {
+ return !this._connection;
+ }
+
+ _runPendingCallbacks() {
+ var keys = Object.keys(this._callbacks).map(function(num) {
+ return parseInt(num, 10);
+ });
+ for (var i = 0; i < keys.length; ++i) {
+ var callback = this._callbacks[keys[i]];
+ this._dispatchConnectionErrorResponse(callback.domain, callback.methodName, callback);
+ }
+ this._callbacks = {};
+ }
+
+ /**
+ * @param {string} domain
+ * @param {string} methodName
+ * @param {function(*)} callback
+ */
+ _dispatchConnectionErrorResponse(domain, methodName, callback) {
+ var error = {
+ message: 'Connection is closed, can\'t dispatch pending ' + methodName,
+ code: InspectorBackendClass._DevToolsErrorCode,
+ data: null
+ };
+ var messageObject = {error: error};
+ setTimeout(
+ InspectorBackendClass._AgentPrototype.prototype.dispatchResponse.bind(
+ this._agent(domain), messageObject, methodName, callback),
+ 0);
+ }
+};
- /**
- * @param {?function(*)} callback
- * @param {string} method
- * @param {string} domain
- * @return {function(*)}
+/**
+ * @unrestricted
+ */
+InspectorBackendClass._AgentPrototype = class {
+ /**
+ * @param {string} domain
+ */
+ constructor(domain) {
+ this._replyArgs = {};
+ this._hasErrorData = {};
+ this._domain = domain;
+ }
+
+ /**
+ * @param {!Protocol.Target} target
+ */
+ setTarget(target) {
+ this._target = target;
+ }
+
+ /**
+ * @param {string} methodName
+ * @param {!Array.<!Object>} signature
+ * @param {!Array.<string>} replyArgs
+ * @param {boolean} hasErrorData
+ */
+ registerCommand(methodName, signature, replyArgs, hasErrorData) {
+ var domainAndMethod = this._domain + '.' + methodName;
+
+ /**
+ * @param {...*} vararg
+ * @this {InspectorBackendClass._AgentPrototype}
+ * @return {!Promise.<*>}
*/
- _wrap: function(callback, domain, method)
- {
- if (!callback)
- callback = function() {};
-
- callback.methodName = method;
- callback.domain = domain;
- if (InspectorBackendClass.Options.dumpInspectorTimeStats)
- callback.sendRequestTime = Date.now();
+ function sendMessagePromise(vararg) {
+ var params = Array.prototype.slice.call(arguments);
+ return InspectorBackendClass._AgentPrototype.prototype._sendMessageToBackendPromise.call(
+ this, domainAndMethod, signature, params);
+ }
- return callback;
- },
+ this[methodName] = sendMessagePromise;
/**
- * @param {string} method
- * @param {?Object} params
- * @param {?function(...*)} callback
+ * @param {...*} vararg
+ * @this {InspectorBackendClass._AgentPrototype}
*/
- _sendRawMessageForTesting: function(method, params, callback)
- {
- var domain = method.split(".")[0];
- this._wrapCallbackAndSendMessageObject(domain, method, params, callback);
- },
+ function invoke(vararg) {
+ var params = [domainAndMethod].concat(Array.prototype.slice.call(arguments));
+ InspectorBackendClass._AgentPrototype.prototype._invoke.apply(this, params);
+ }
- /**
- * @param {!Object|string} message
- */
- _onMessage: function(message)
- {
- if (InspectorBackendClass.Options.dumpInspectorProtocolMessages)
- this._dumpProtocolMessage("backend: " + ((typeof message === "string") ? message : JSON.stringify(message)));
-
- var messageObject = /** @type {!Object} */ ((typeof message === "string") ? JSON.parse(message) : message);
-
- if ("id" in messageObject) { // just a response for some request
- var callback = this._callbacks[messageObject.id];
- if (!callback) {
- InspectorBackendClass.reportProtocolError("Protocol Error: the message with wrong id", messageObject);
- return;
- }
-
- var processingStartTime;
- if (InspectorBackendClass.Options.dumpInspectorTimeStats)
- processingStartTime = Date.now();
-
- this._agent(callback.domain).dispatchResponse(messageObject, callback.methodName, callback);
- --this._pendingResponsesCount;
- delete this._callbacks[messageObject.id];
-
- if (InspectorBackendClass.Options.dumpInspectorTimeStats)
- console.log("time-stats: " + callback.methodName + " = " + (processingStartTime - callback.sendRequestTime) + " + " + (Date.now() - processingStartTime));
-
- if (this._scripts && !this._pendingResponsesCount)
- this._deprecatedRunAfterPendingDispatches();
- } else {
- if (!("method" in messageObject)) {
- InspectorBackendClass.reportProtocolError("Protocol Error: the message without method", messageObject);
- return;
- }
-
- var method = messageObject.method.split(".");
- var domainName = method[0];
- if (!(domainName in this._dispatchers)) {
- InspectorBackendClass.reportProtocolError("Protocol Error: the message " + messageObject.method + " is for non-existing domain '" + domainName + "'", messageObject);
- return;
- }
-
- this._dispatchers[domainName].dispatch(method[1], messageObject);
- }
- },
+ this['invoke_' + methodName] = invoke;
+
+ this._replyArgs[domainAndMethod] = replyArgs;
+ if (hasErrorData)
+ this._hasErrorData[domainAndMethod] = true;
+ }
+
+ /**
+ * @param {string} method
+ * @param {!Array.<!Object>} signature
+ * @param {!Array.<*>} args
+ * @param {boolean} allowExtraUndefinedArg
+ * @param {function(string)} errorCallback
+ * @return {?Object}
+ */
+ _prepareParameters(method, signature, args, allowExtraUndefinedArg, errorCallback) {
+ var params = {};
+ var hasParams = false;
+ for (var i = 0; i < signature.length; ++i) {
+ var param = signature[i];
+ var paramName = param['name'];
+ var typeName = param['type'];
+ var optionalFlag = param['optional'];
+
+ if (!args.length && !optionalFlag) {
+ errorCallback(
+ 'Protocol Error: Invalid number of arguments for method \'' + method +
+ '\' call. It must have the following arguments \'' + JSON.stringify(signature) + '\'.');
+ return null;
+ }
+
+ var value = args.shift();
+ if (optionalFlag && typeof value === 'undefined')
+ continue;
+
+ if (typeof value !== typeName) {
+ errorCallback(
+ 'Protocol Error: Invalid type of argument \'' + paramName + '\' for method \'' + method +
+ '\' call. It must be \'' + typeName + '\' but it is \'' + typeof value + '\'.');
+ return null;
+ }
+
+ params[paramName] = value;
+ hasParams = true;
+ }
- /**
- * @param {string} domain
- * @param {!Object} dispatcher
- */
- registerDispatcher: function(domain, dispatcher)
- {
- if (!this._dispatchers[domain])
- return;
+ if (args.length === 1 && (!allowExtraUndefinedArg || (typeof args[0] !== 'undefined'))) {
+ errorCallback(
+ 'Protocol Error: Optional callback argument for method \'' + method +
+ '\' call must be a function but its type is \'' + typeof args[0] + '\'.');
+ return null;
+ }
- this._dispatchers[domain].setDomainDispatcher(dispatcher);
- },
+ if (args.length > 1) {
+ errorCallback('Protocol Error: Extra ' + args.length + ' arguments in a call to method \'' + method + '\'.');
+ return null;
+ }
- /**
- * @param {function()=} script
- */
- _deprecatedRunAfterPendingDispatches: function(script)
- {
- if (!this._scripts)
- this._scripts = [];
-
- if (script)
- this._scripts.push(script);
-
- // Execute all promises.
- setTimeout(function() {
- if (!this._pendingResponsesCount)
- this._executeAfterPendingDispatches();
- else
- this._deprecatedRunAfterPendingDispatches();
- }.bind(this), 0);
- },
-
- _executeAfterPendingDispatches: function()
- {
- if (!this._pendingResponsesCount) {
- var scripts = this._scripts;
- this._scripts = [];
- for (var id = 0; id < scripts.length; ++id)
- scripts[id].call(this);
- }
- },
+ return hasParams ? params : null;
+ }
+ /**
+ * @param {string} method
+ * @param {!Array.<!Object>} signature
+ * @param {!Array.<*>} args
+ * @return {!Promise.<*>}
+ */
+ _sendMessageToBackendPromise(method, signature, args) {
+ var errorMessage;
/**
* @param {string} message
*/
- _dumpProtocolMessage: function(message)
- {
- console.log(message);
- },
-
- /**
- * @param {string} reason
- */
- _onDisconnect: function(reason)
- {
- this._connection = null;
- this._runPendingCallbacks();
- this.dispose();
- },
-
- /**
- * @protected
- */
- dispose: function()
- {
- },
-
- /**
- * @return {boolean}
- */
- isDisposed: function()
- {
- return !this._connection;
- },
-
- _runPendingCallbacks: function()
- {
- var keys = Object.keys(this._callbacks).map(function(num) { return parseInt(num, 10); });
- for (var i = 0; i < keys.length; ++i) {
- var callback = this._callbacks[keys[i]];
- this._dispatchConnectionErrorResponse(callback.domain, callback.methodName, callback);
- }
- this._callbacks = {};
- },
-
- /**
- * @param {string} domain
- * @param {string} methodName
- * @param {function(*)} callback
- */
- _dispatchConnectionErrorResponse: function(domain, methodName, callback)
- {
- var error = { message: "Connection is closed, can't dispatch pending " + methodName, code: InspectorBackendClass._DevToolsErrorCode, data: null};
- var messageObject = {error: error};
- setTimeout(InspectorBackendClass._AgentPrototype.prototype.dispatchResponse.bind(this._agent(domain), messageObject, methodName, callback), 0);
- },
-};
-
-/**
- * @constructor
- * @param {string} domain
- */
-InspectorBackendClass._AgentPrototype = function(domain)
-{
- this._replyArgs = {};
- this._hasErrorData = {};
- this._domain = domain;
-};
-
-InspectorBackendClass._AgentPrototype.prototype = {
- /**
- * @param {!Protocol.Target} target
- */
- setTarget: function(target)
- {
- this._target = target;
- },
-
- /**
- * @param {string} methodName
- * @param {!Array.<!Object>} signature
- * @param {!Array.<string>} replyArgs
- * @param {boolean} hasErrorData
- */
- registerCommand: function(methodName, signature, replyArgs, hasErrorData)
- {
- var domainAndMethod = this._domain + "." + methodName;
-
- /**
- * @param {...*} vararg
- * @this {InspectorBackendClass._AgentPrototype}
- * @return {!Promise.<*>}
- */
- function sendMessagePromise(vararg)
- {
- var params = Array.prototype.slice.call(arguments);
- return InspectorBackendClass._AgentPrototype.prototype._sendMessageToBackendPromise.call(this, domainAndMethod, signature, params);
- }
-
- this[methodName] = sendMessagePromise;
-
- /**
- * @param {...*} vararg
- * @this {InspectorBackendClass._AgentPrototype}
- */
- function invoke(vararg)
- {
- var params = [domainAndMethod].concat(Array.prototype.slice.call(arguments));
- InspectorBackendClass._AgentPrototype.prototype._invoke.apply(this, params);
- }
-
- this["invoke_" + methodName] = invoke;
-
- this._replyArgs[domainAndMethod] = replyArgs;
- if (hasErrorData)
- this._hasErrorData[domainAndMethod] = true;
- },
+ function onError(message) {
+ console.error(message);
+ errorMessage = message;
+ }
+ var userCallback = (args.length && typeof args.peekLast() === 'function') ? args.pop() : null;
+ var params = this._prepareParameters(method, signature, args, !userCallback, onError);
+ if (errorMessage)
+ return Promise.reject(new Error(errorMessage));
+ else
+ return new Promise(promiseAction.bind(this));
+
+ /**
+ * @param {function(?)} resolve
+ * @param {function(!Error)} reject
+ * @this {InspectorBackendClass._AgentPrototype}
+ */
+ function promiseAction(resolve, reject) {
+ /**
+ * @param {...*} vararg
+ */
+ function callback(vararg) {
+ var result = userCallback ? userCallback.apply(null, arguments) : undefined;
+ resolve(result);
+ }
+ this._target._wrapCallbackAndSendMessageObject(this._domain, method, params, callback);
+ }
+ }
+
+ /**
+ * @param {string} method
+ * @param {?Object} args
+ * @param {?function(*)} callback
+ */
+ _invoke(method, args, callback) {
+ this._target._wrapCallbackAndSendMessageObject(this._domain, method, args, callback);
+ }
+
+ /**
+ * @param {!Object} messageObject
+ * @param {string} methodName
+ * @param {function(*)|function(?Protocol.Error, ?Object)} callback
+ */
+ dispatchResponse(messageObject, methodName, callback) {
+ if (messageObject.error && messageObject.error.code !== InspectorBackendClass._DevToolsErrorCode &&
+ messageObject.error.code !== InspectorBackendClass.DevToolsStubErrorCode &&
+ !InspectorBackendClass.Options.suppressRequestErrors) {
+ var id = InspectorBackendClass.Options.dumpInspectorProtocolMessages ? ' with id = ' + messageObject.id : '';
+ console.error('Request ' + methodName + id + ' failed. ' + JSON.stringify(messageObject.error));
+ }
- /**
- * @param {string} method
- * @param {!Array.<!Object>} signature
- * @param {!Array.<*>} args
- * @param {boolean} allowExtraUndefinedArg
- * @param {function(string)} errorCallback
- * @return {?Object}
- */
- _prepareParameters: function(method, signature, args, allowExtraUndefinedArg, errorCallback)
- {
- var params = {};
- var hasParams = false;
- for (var i = 0; i < signature.length; ++i) {
- var param = signature[i];
- var paramName = param["name"];
- var typeName = param["type"];
- var optionalFlag = param["optional"];
-
- if (!args.length && !optionalFlag) {
- errorCallback("Protocol Error: Invalid number of arguments for method '" + method + "' call. It must have the following arguments '" + JSON.stringify(signature) + "'.");
- return null;
- }
-
- var value = args.shift();
- if (optionalFlag && typeof value === "undefined")
- continue;
-
- if (typeof value !== typeName) {
- errorCallback("Protocol Error: Invalid type of argument '" + paramName + "' for method '" + method + "' call. It must be '" + typeName + "' but it is '" + typeof value + "'.");
- return null;
- }
-
- params[paramName] = value;
- hasParams = true;
- }
-
- if (args.length === 1 && (!allowExtraUndefinedArg || (typeof args[0] !== "undefined"))) {
- errorCallback("Protocol Error: Optional callback argument for method '" + method + "' call must be a function but its type is '" + typeof args[0] + "'.");
- return null;
- }
-
- if (args.length > 1) {
- errorCallback("Protocol Error: Extra " + args.length + " arguments in a call to method '" + method + "'.");
- return null;
- }
-
- return hasParams ? params : null;
- },
+ var argumentsArray = [];
+ argumentsArray[0] = messageObject.error ? messageObject.error.message : null;
- /**
- * @param {string} method
- * @param {!Array.<!Object>} signature
- * @param {!Array.<*>} args
- * @return {!Promise.<*>}
- */
- _sendMessageToBackendPromise: function(method, signature, args)
- {
- var errorMessage;
- /**
- * @param {string} message
- */
- function onError(message)
- {
- console.error(message);
- errorMessage = message;
- }
- var userCallback = (args.length && typeof args.peekLast() === "function") ? args.pop() : null;
- var params = this._prepareParameters(method, signature, args, !userCallback, onError);
- if (errorMessage)
- return Promise.reject(new Error(errorMessage));
- else
- return new Promise(promiseAction.bind(this));
-
- /**
- * @param {function(?)} resolve
- * @param {function(!Error)} reject
- * @this {InspectorBackendClass._AgentPrototype}
- */
- function promiseAction(resolve, reject)
- {
- /**
- * @param {...*} vararg
- */
- function callback(vararg)
- {
- var result = userCallback ? userCallback.apply(null, arguments) : undefined;
- resolve(result);
- }
- this._target._wrapCallbackAndSendMessageObject(this._domain, method, params, callback);
- }
- },
+ if (this._hasErrorData[methodName])
+ argumentsArray[1] = messageObject.error ? messageObject.error.data : null;
- /**
- * @param {string} method
- * @param {?Object} args
- * @param {?function(*)} callback
- */
- _invoke: function(method, args, callback)
- {
- this._target._wrapCallbackAndSendMessageObject(this._domain, method, args, callback);
- },
+ if (messageObject.result) {
+ var paramNames = this._replyArgs[methodName] || [];
+ for (var i = 0; i < paramNames.length; ++i)
+ argumentsArray.push(messageObject.result[paramNames[i]]);
+ }
- /**
- * @param {!Object} messageObject
- * @param {string} methodName
- * @param {function(*)|function(?Protocol.Error, ?Object)} callback
- */
- dispatchResponse: function(messageObject, methodName, callback)
- {
- if (messageObject.error && messageObject.error.code !== InspectorBackendClass._DevToolsErrorCode && messageObject.error.code !== InspectorBackendClass.DevToolsStubErrorCode && !InspectorBackendClass.Options.suppressRequestErrors) {
- var id = InspectorBackendClass.Options.dumpInspectorProtocolMessages ? " with id = " + messageObject.id : "";
- console.error("Request " + methodName + id + " failed. " + JSON.stringify(messageObject.error));
- }
-
- var argumentsArray = [];
- argumentsArray[0] = messageObject.error ? messageObject.error.message : null;
-
- if (this._hasErrorData[methodName])
- argumentsArray[1] = messageObject.error ? messageObject.error.data : null;
-
- if (messageObject.result) {
- var paramNames = this._replyArgs[methodName] || [];
- for (var i = 0; i < paramNames.length; ++i)
- argumentsArray.push(messageObject.result[paramNames[i]]);
- }
-
- callback.apply(null, argumentsArray);
- },
+ callback.apply(null, argumentsArray);
+ }
};
/**
- * @constructor
+ * @unrestricted
*/
-InspectorBackendClass._DispatcherPrototype = function()
-{
+InspectorBackendClass._DispatcherPrototype = class {
+ constructor() {
this._eventArgs = {};
this._dispatcher = null;
-};
+ }
+
+ /**
+ * @param {string} eventName
+ * @param {!Object} params
+ */
+ registerEvent(eventName, params) {
+ this._eventArgs[eventName] = params;
+ }
+
+ /**
+ * @param {!Object} dispatcher
+ */
+ setDomainDispatcher(dispatcher) {
+ this._dispatcher = dispatcher;
+ }
+
+ /**
+ * @param {string} functionName
+ * @param {!Object} messageObject
+ */
+ dispatch(functionName, messageObject) {
+ if (!this._dispatcher)
+ return;
+
+ if (!(functionName in this._dispatcher)) {
+ InspectorBackendClass.reportProtocolError(
+ 'Protocol Error: Attempted to dispatch an unimplemented method \'' + messageObject.method + '\'',
+ messageObject);
+ return;
+ }
-InspectorBackendClass._DispatcherPrototype.prototype = {
+ if (!this._eventArgs[messageObject.method]) {
+ InspectorBackendClass.reportProtocolError(
+ 'Protocol Error: Attempted to dispatch an unspecified method \'' + messageObject.method + '\'',
+ messageObject);
+ return;
+ }
- /**
- * @param {string} eventName
- * @param {!Object} params
- */
- registerEvent: function(eventName, params)
- {
- this._eventArgs[eventName] = params;
- },
+ var params = [];
+ if (messageObject.params) {
+ var paramNames = this._eventArgs[messageObject.method];
+ for (var i = 0; i < paramNames.length; ++i)
+ params.push(messageObject.params[paramNames[i]]);
+ }
- /**
- * @param {!Object} dispatcher
- */
- setDomainDispatcher: function(dispatcher)
- {
- this._dispatcher = dispatcher;
- },
+ var processingStartTime;
+ if (InspectorBackendClass.Options.dumpInspectorTimeStats)
+ processingStartTime = Date.now();
- /**
- * @param {string} functionName
- * @param {!Object} messageObject
- */
- dispatch: function(functionName, messageObject)
- {
- if (!this._dispatcher)
- return;
-
- if (!(functionName in this._dispatcher)) {
- InspectorBackendClass.reportProtocolError("Protocol Error: Attempted to dispatch an unimplemented method '" + messageObject.method + "'", messageObject);
- return;
- }
-
- if (!this._eventArgs[messageObject.method]) {
- InspectorBackendClass.reportProtocolError("Protocol Error: Attempted to dispatch an unspecified method '" + messageObject.method + "'", messageObject);
- return;
- }
-
- var params = [];
- if (messageObject.params) {
- var paramNames = this._eventArgs[messageObject.method];
- for (var i = 0; i < paramNames.length; ++i)
- params.push(messageObject.params[paramNames[i]]);
- }
-
- var processingStartTime;
- if (InspectorBackendClass.Options.dumpInspectorTimeStats)
- processingStartTime = Date.now();
-
- this._dispatcher[functionName].apply(this._dispatcher, params);
-
- if (InspectorBackendClass.Options.dumpInspectorTimeStats)
- console.log("time-stats: " + messageObject.method + " = " + (Date.now() - processingStartTime));
- }
+ this._dispatcher[functionName].apply(this._dispatcher, params);
+
+ if (InspectorBackendClass.Options.dumpInspectorTimeStats)
+ console.log('time-stats: ' + messageObject.method + ' = ' + (Date.now() - processingStartTime));
+ }
};
InspectorBackendClass.Options = {
- dumpInspectorTimeStats: false,
- dumpInspectorProtocolMessages: false,
- suppressRequestErrors: false
+ dumpInspectorTimeStats: false,
+ dumpInspectorProtocolMessages: false,
+ suppressRequestErrors: false
};

Powered by Google App Engine
This is Rietveld 408576698