Index: third_party/WebKit/Source/devtools/front_end/sdk/RemoteObject.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/RemoteObject.js b/third_party/WebKit/Source/devtools/front_end/sdk/RemoteObject.js |
index 32067513efb1d69ff7b5f484d642cfff76a1c5d2..0aa4e28df5ce18d80b4c9f07e0755e0ad3680a98 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/sdk/RemoteObject.js |
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/RemoteObject.js |
@@ -381,14 +381,7 @@ SDK.RemoteObject = class { |
* @template T |
*/ |
callFunctionJSONPromise(functionDeclaration, args) { |
- return new Promise(promiseConstructor.bind(this)); |
- |
- /** |
- * @this {SDK.RemoteObject} |
- */ |
- function promiseConstructor(success) { |
- this.callFunctionJSON(functionDeclaration, args, success); |
- } |
+ return new Promise(success => this.callFunctionJSON(functionDeclaration, args, success)); |
} |
release() { |
@@ -575,7 +568,7 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
* @param {boolean} ownProperties |
* @param {boolean} accessorPropertiesOnly |
* @param {boolean} generatePreview |
- * @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObjectProperty>)} callback |
+ * @param {function(?Array<!SDK.RemoteObjectProperty>, ?Array<!SDK.RemoteObjectProperty>)} callback |
*/ |
doGetProperties(ownProperties, accessorPropertiesOnly, generatePreview, callback) { |
if (!this._objectId) { |
@@ -583,23 +576,26 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
return; |
} |
+ this._runtimeAgent |
+ .invoke_getProperties({objectId: this._objectId, ownProperties, accessorPropertiesOnly, generatePreview}) |
+ .then(remoteObjectBinder.bind(this)); |
+ |
/** |
- * @param {?Protocol.Error} error |
- * @param {!Array.<!Protocol.Runtime.PropertyDescriptor>} properties |
- * @param {!Array.<!Protocol.Runtime.InternalPropertyDescriptor>=} internalProperties |
- * @param {?Protocol.Runtime.ExceptionDetails=} exceptionDetails |
+ * @param {!Protocol.RuntimeAgent.GetPropertiesResponse} response |
* @this {SDK.RemoteObjectImpl} |
*/ |
- function remoteObjectBinder(error, properties, internalProperties, exceptionDetails) { |
- if (error) { |
+ function remoteObjectBinder(response) { |
+ if (response[Protocol.Error]) { |
callback(null, null); |
return; |
} |
- if (exceptionDetails) { |
- this._runtimeModel.exceptionThrown(Date.now(), exceptionDetails); |
+ if (response.exceptionDetails) { |
+ this._runtimeModel.exceptionThrown(Date.now(), response.exceptionDetails); |
callback(null, null); |
return; |
} |
+ var properties = response.result; |
+ var internalProperties = response.internalProperties; |
var result = []; |
for (var i = 0; properties && i < properties.length; ++i) { |
var property = properties[i]; |
@@ -631,8 +627,6 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
} |
callback(result, internalPropertiesResult); |
} |
- this._runtimeAgent.getProperties( |
- this._objectId, ownProperties, accessorPropertiesOnly, generatePreview, remoteObjectBinder.bind(this)); |
} |
/** |
@@ -643,7 +637,7 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
*/ |
setPropertyValue(name, value, callback) { |
if (!this._objectId) { |
- callback('Can\'t set a property of non-object.'); |
+ callback(`Can't set a property of non-object.`); |
return; |
} |
@@ -659,7 +653,7 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
if (typeof name === 'string') |
name = SDK.RemoteObject.toCallArgument(name); |
- this.doSetObjectPropertyValue(response.result, name, callback); |
+ this.doSetObjectPropertyValue(response.result, name).then(callback); |
if (response.result.objectId) |
this._runtimeAgent.releaseObject(response.result.objectId); |
@@ -669,9 +663,9 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
/** |
* @param {!Protocol.Runtime.RemoteObject} result |
* @param {!Protocol.Runtime.CallArgument} name |
- * @param {function(string=)} callback |
+ * @return {!Promise<string|undefined>} |
*/ |
- doSetObjectPropertyValue(result, name, callback) { |
+ async doSetObjectPropertyValue(result, name) { |
// This assignment may be for a regular (data) property, and for an accessor property (with getter/setter). |
// Note the sensitive matter about accessor property: the property may be physically defined in some proto object, |
// but logically it is bound to the object in question. JavaScript passes this object to getters/setters, not the object |
@@ -679,22 +673,10 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
var setPropertyValueFunction = 'function(a, b) { this[a] = b; }'; |
var argv = [name, SDK.RemoteObject.toCallArgument(result)]; |
- this._runtimeAgent.callFunctionOn( |
- this._objectId, setPropertyValueFunction, argv, true, undefined, undefined, undefined, undefined, |
- propertySetCallback); |
- |
- /** |
- * @param {?Protocol.Error} error |
- * @param {!Protocol.Runtime.RemoteObject} result |
- * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails |
- */ |
- function propertySetCallback(error, result, exceptionDetails) { |
- if (error || !!exceptionDetails) { |
- callback(error || result.description); |
- return; |
- } |
- callback(); |
- } |
+ var response = await this._runtimeAgent.invoke_callFunctionOn( |
+ {objectId: this._objectId, functionDeclaration: setPropertyValueFunction, arguments: argv, silent: true}); |
+ var error = response[Protocol.Error]; |
+ return error || response.exceptionDetails ? error || response.result.description : undefined; |
} |
/** |
@@ -704,30 +686,24 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
*/ |
deleteProperty(name, callback) { |
if (!this._objectId) { |
- callback('Can\'t delete a property of non-object.'); |
+ callback(`Can't delete a property of non-object.`); |
return; |
} |
var deletePropertyFunction = 'function(a) { delete this[a]; return !(a in this); }'; |
- this._runtimeAgent.callFunctionOn( |
- this._objectId, deletePropertyFunction, [name], true, undefined, undefined, undefined, undefined, |
- deletePropertyCallback); |
- |
- /** |
- * @param {?Protocol.Error} error |
- * @param {!Protocol.Runtime.RemoteObject} result |
- * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails |
- */ |
- function deletePropertyCallback(error, result, exceptionDetails) { |
- if (error || !!exceptionDetails) { |
- callback(error || result.description); |
- return; |
- } |
- if (!result.value) |
- callback('Failed to delete property.'); |
- else |
- callback(); |
- } |
+ this._runtimeAgent |
+ .invoke_callFunctionOn( |
+ {objectId: this._objectId, functionDeclaration: deletePropertyFunction, arguments: [name], silent: true}) |
+ .then(response => { |
+ if (response[Protocol.Error] || response.exceptionDetails) { |
+ callback(response[Protocol.Error] || response.result.description); |
+ return; |
+ } |
+ if (!response.result.value) |
+ callback('Failed to delete property.'); |
+ else |
+ callback(); |
+ }); |
} |
/** |
@@ -737,24 +713,21 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
* @param {function(?SDK.RemoteObject, boolean=)=} callback |
*/ |
callFunction(functionDeclaration, args, callback) { |
- /** |
- * @param {?Protocol.Error} error |
- * @param {!Protocol.Runtime.RemoteObject} result |
- * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails |
- * @this {SDK.RemoteObjectImpl} |
- */ |
- function mycallback(error, result, exceptionDetails) { |
- if (!callback) |
- return; |
- if (error) |
- callback(null, false); |
- else |
- callback(this._runtimeModel.createRemoteObject(result), !!exceptionDetails); |
- } |
- |
- this._runtimeAgent.callFunctionOn( |
- this._objectId, functionDeclaration.toString(), args, true, undefined, undefined, undefined, undefined, |
- mycallback.bind(this)); |
+ this._runtimeAgent |
+ .invoke_callFunctionOn({ |
+ objectId: this._objectId, |
+ functionDeclaration: functionDeclaration.toString(), |
+ arguments: args, |
+ silent: true |
+ }) |
+ .then(response => { |
+ if (!callback) |
+ return; |
+ if (response[Protocol.Error]) |
+ callback(null, false); |
+ else |
+ callback(this._runtimeModel.createRemoteObject(response.result), !!response.exceptionDetails); |
+ }); |
} |
/** |
@@ -764,17 +737,16 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
* @param {function(*)} callback |
*/ |
callFunctionJSON(functionDeclaration, args, callback) { |
- /** |
- * @param {?Protocol.Error} error |
- * @param {!Protocol.Runtime.RemoteObject} result |
- * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails |
- */ |
- function mycallback(error, result, exceptionDetails) { |
- callback((error || !!exceptionDetails) ? null : result.value); |
- } |
- |
- this._runtimeAgent.callFunctionOn( |
- this._objectId, functionDeclaration.toString(), args, true, true, false, undefined, undefined, mycallback); |
+ this._runtimeAgent |
+ .invoke_callFunctionOn({ |
+ objectId: this._objectId, |
+ functionDeclaration: functionDeclaration.toString(), |
+ arguments: args, |
+ silent: true, |
+ returnByValue: true |
+ }) |
+ .then( |
+ response => callback(response[Protocol.Error] || response.exceptionDetails ? null : response.result.value)); |
} |
/** |
@@ -885,13 +857,15 @@ SDK.ScopeRemoteObject = class extends SDK.RemoteObjectImpl { |
* @override |
* @param {!Protocol.Runtime.RemoteObject} result |
* @param {!Protocol.Runtime.CallArgument} argumentName |
- * @param {function(string=)} callback |
+ * @return {!Promise<string|undefined>} |
*/ |
- doSetObjectPropertyValue(result, argumentName, callback) { |
+ async doSetObjectPropertyValue(result, argumentName) { |
var name = /** @type {string} */ (argumentName.value); |
this.debuggerModel().setVariableValue( |
this._scopeRef.number, name, SDK.RemoteObject.toCallArgument(result), this._scopeRef.callFrameId, |
setVariableValueCallback.bind(this)); |
+ var callback; |
+ return new Promise(resolve => callback = resolve); |
/** |
* @param {string=} error |
@@ -1180,15 +1154,12 @@ SDK.LocalJSONObject = class extends SDK.RemoteObject { |
/** |
* @override |
* @param {function(this:Object, ...)} functionDeclaration |
- * @param {!Array.<!Protocol.Runtime.CallArgument>=} args |
+ * @param {!Array<!Protocol.Runtime.CallArgument>=} args |
* @param {function(?SDK.RemoteObject, boolean=)=} callback |
*/ |
callFunction(functionDeclaration, args, callback) { |
var target = /** @type {?Object} */ (this._value); |
- var rawArgs = args ? args.map(function(arg) { |
- return arg.value; |
- }) : |
- []; |
+ var rawArgs = args ? args.map(arg => arg.value) : []; |
var result; |
var wasThrown = false; |
@@ -1206,15 +1177,12 @@ SDK.LocalJSONObject = class extends SDK.RemoteObject { |
/** |
* @override |
* @param {function(this:Object)} functionDeclaration |
- * @param {!Array.<!Protocol.Runtime.CallArgument>|undefined} args |
+ * @param {!Array<!Protocol.Runtime.CallArgument>|undefined} args |
* @param {function(*)} callback |
*/ |
callFunctionJSON(functionDeclaration, args, callback) { |
var target = /** @type {?Object} */ (this._value); |
- var rawArgs = args ? args.map(function(arg) { |
- return arg.value; |
- }) : |
- []; |
+ var rawArgs = args ? args.map(arg => arg.value) : []; |
var result; |
try { |