Chromium Code Reviews| 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 7e4001ef80d2b56d0a2c2ea2df9f9cc671065bb3..6dbd64494b56032efc62ddc4355bcc02224a8b4e 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/sdk/RemoteObject.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/sdk/RemoteObject.js |
| @@ -32,9 +32,6 @@ |
| */ |
| SDK.CallFunctionResult; |
| -/** |
| - * @unrestricted |
| - */ |
| SDK.RemoteObject = class { |
| /** |
| * This may not be an interface due to "instanceof SDK.RemoteObject" checks in the code. |
| @@ -127,13 +124,11 @@ SDK.RemoteObject = class { |
| if (typeof object.unserializableValue !== 'undefined') |
| return {unserializableValue: object.unserializableValue}; |
| - if (typeof object._unserializableValue !== 'undefined') |
| + if (object instanceof SDK.RemoteObjectImpl && typeof object._unserializableValue !== 'undefined') |
|
caseq
2017/03/17 18:30:44
is this a related change?
dgozman
2017/03/17 21:43:46
Yeah, closure started to complain.
|
| return {unserializableValue: object._unserializableValue}; |
| if (typeof object.objectId !== 'undefined') |
| return {objectId: object.objectId}; |
| - if (typeof object._objectId !== 'undefined') |
| - return {objectId: object._objectId}; |
| return {value: object.value}; |
| } |
| @@ -210,6 +205,11 @@ SDK.RemoteObject = class { |
| return null; |
| } |
| + /** @return {!Protocol.Runtime.RemoteObjectId|undefined} */ |
| + get objectId() { |
|
caseq
2017/03/17 18:30:44
ditto. perhaps extract this?
|
| + return 'Not implemented'; |
| + } |
| + |
| /** @return {string} */ |
| get type() { |
| throw 'Not implemented'; |
| @@ -220,6 +220,11 @@ SDK.RemoteObject = class { |
| throw 'Not implemented'; |
| } |
| + /** @return {*} */ |
| + get value() { |
| + throw 'Not implemented'; |
| + } |
| + |
| /** @return {string|undefined} */ |
| get description() { |
| throw 'Not implemented'; |
| @@ -231,6 +236,13 @@ SDK.RemoteObject = class { |
| } |
| /** |
| + * @return {!Protocol.Runtime.ObjectPreview|undefined} |
| + */ |
| + get preview() { |
| + return undefined; |
| + } |
| + |
| + /** |
| * @return {number} |
| */ |
| arrayLength() { |
| @@ -306,6 +318,14 @@ SDK.RemoteObject = class { |
| } |
| /** |
| + * @param {!Array.<string>} propertyPath |
| + * @param {function(?SDK.RemoteObject, boolean=)} callback |
| + */ |
| + getProperty(propertyPath, callback) { |
| + throw 'Not implemented'; |
| + } |
| + |
| + /** |
| * @return {!Promise<?Array<!SDK.EventListener>>} |
| */ |
| eventListeners() { |
| @@ -391,21 +411,24 @@ SDK.RemoteObject = class { |
| } |
| } |
| - /** |
| - * @return {!SDK.Target} |
| - */ |
| - target() { |
| - throw new Error('Target-less object'); |
| + release() { |
| } |
| /** |
| - * @return {?SDK.DebuggerModel} |
| + * @return {!SDK.DebuggerModel} |
| */ |
| debuggerModel() { |
| throw new Error('DebuggerModel-less object'); |
| } |
| /** |
| + * @return {!SDK.RuntimeModel} |
| + */ |
| + runtimeModel() { |
| + throw new Error('RuntimeModel-less object'); |
| + } |
| + |
| + /** |
| * @return {boolean} |
| */ |
| isNode() { |
| @@ -414,12 +437,9 @@ SDK.RemoteObject = class { |
| }; |
| -/** |
| - * @unrestricted |
| - */ |
| SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| /** |
| - * @param {!SDK.Target} target |
| + * @param {!SDK.RuntimeModel} runtimeModel |
| * @param {string|undefined} objectId |
| * @param {string} type |
| * @param {string|undefined} subtype |
| @@ -429,12 +449,11 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| * @param {!Protocol.Runtime.ObjectPreview=} preview |
| * @param {!Protocol.Runtime.CustomPreview=} customPreview |
| */ |
| - constructor(target, objectId, type, subtype, value, unserializableValue, description, preview, customPreview) { |
| + constructor(runtimeModel, objectId, type, subtype, value, unserializableValue, description, preview, customPreview) { |
| super(); |
| - this._target = target; |
| - this._runtimeAgent = target.runtimeAgent(); |
| - this._debuggerModel = SDK.DebuggerModel.fromTarget(target); |
| + this._runtimeModel = runtimeModel; |
| + this._runtimeAgent = runtimeModel.target().runtimeAgent(); |
| this._type = type; |
| this._subtype = subtype; |
| @@ -455,12 +474,12 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| unserializableValue === Protocol.Runtime.UnserializableValue.NegativeInfinity || |
| unserializableValue === Protocol.Runtime.UnserializableValue.Negative0 || |
| unserializableValue === Protocol.Runtime.UnserializableValue.NaN) |
| - this.value = Number(unserializableValue); |
| + this._value = Number(unserializableValue); |
| else |
| - this.value = unserializableValue; |
| + this._value = unserializableValue; |
| } else { |
| - this.value = value; |
| + this._value = value; |
| } |
| } |
| this._customPreview = customPreview || null; |
| @@ -474,7 +493,10 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| return this._customPreview; |
| } |
| - /** @return {!Protocol.Runtime.RemoteObjectId} */ |
| + /** |
| + * @override |
| + * @return {!Protocol.Runtime.RemoteObjectId|undefined} |
| + */ |
| get objectId() { |
| return this._objectId; |
| } |
| @@ -497,6 +519,14 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| /** |
| * @override |
| + * @return {*} |
| + */ |
| + get value() { |
| + return this._value; |
| + } |
| + |
| + /** |
| + * @override |
| * @return {string|undefined} |
| */ |
| get description() { |
| @@ -512,6 +542,7 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| } |
| /** |
| + * @override |
| * @return {!Protocol.Runtime.ObjectPreview|undefined} |
| */ |
| get preview() { |
| @@ -549,7 +580,7 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| * @this {SDK.RemoteObjectImpl} |
| */ |
| function eventListeners(fulfill, reject) { |
| - if (!this.target().hasDOMCapability()) { |
| + if (!this._runtimeModel.target().hasDOMCapability()) { |
| // TODO(kozyatinskiy): figure out how this should work for |window| when there is no DOMDebugger. |
| fulfill([]); |
| return; |
| @@ -560,7 +591,8 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| return; |
| } |
| - this.target().domdebuggerAgent().getEventListeners(this._objectId, undefined, undefined, mycallback.bind(this)); |
| + this._runtimeModel.target().domdebuggerAgent().getEventListeners( |
| + this._objectId, undefined, undefined, mycallback.bind(this)); |
| /** |
| * @this {SDK.RemoteObjectImpl} |
| @@ -581,10 +613,11 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| */ |
| function createEventListener(payload) { |
| return new SDK.EventListener( |
| - this._target, this, payload.type, payload.useCapture, payload.passive, payload.once, |
| - payload.handler ? this.target().runtimeModel.createRemoteObject(payload.handler) : null, |
| - payload.originalHandler ? this.target().runtimeModel.createRemoteObject(payload.originalHandler) : null, |
| - /** @type {!SDK.DebuggerModel.Location} */ (this._debuggerModel.createRawLocationByScriptId( |
| + this._runtimeModel, this, payload.type, payload.useCapture, payload.passive, payload.once, |
| + payload.handler ? this._runtimeModel.createRemoteObject(payload.handler) : null, |
| + payload.originalHandler ? this._runtimeModel.createRemoteObject(payload.originalHandler) : null, |
| + /** @type {!SDK.DebuggerModel.Location} */ |
| + (this.debuggerModel().createRawLocationByScriptId( |
| payload.scriptId, payload.lineNumber, payload.columnNumber)), |
| null); |
| } |
| @@ -592,6 +625,7 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| } |
| /** |
| + * @override |
| * @param {!Array.<string>} propertyPath |
| * @param {function(?SDK.RemoteObject, boolean=)} callback |
| */ |
| @@ -638,24 +672,24 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| return; |
| } |
| if (exceptionDetails) { |
| - this.target().runtimeModel.exceptionThrown(Date.now(), exceptionDetails); |
| + this._runtimeModel.exceptionThrown(Date.now(), exceptionDetails); |
| callback(null, null); |
| return; |
| } |
| var result = []; |
| for (var i = 0; properties && i < properties.length; ++i) { |
| var property = properties[i]; |
| - var propertyValue = property.value ? this._target.runtimeModel.createRemoteObject(property.value) : null; |
| - var propertySymbol = property.symbol ? this._target.runtimeModel.createRemoteObject(property.symbol) : null; |
| + var propertyValue = property.value ? this._runtimeModel.createRemoteObject(property.value) : null; |
| + var propertySymbol = property.symbol ? this._runtimeModel.createRemoteObject(property.symbol) : null; |
| var remoteProperty = new SDK.RemoteObjectProperty( |
| property.name, propertyValue, !!property.enumerable, !!property.writable, !!property.isOwn, |
| !!property.wasThrown, propertySymbol); |
| if (typeof property.value === 'undefined') { |
| if (property.get && property.get.type !== 'undefined') |
| - remoteProperty.getter = this._target.runtimeModel.createRemoteObject(property.get); |
| + remoteProperty.getter = this._runtimeModel.createRemoteObject(property.get); |
| if (property.set && property.set.type !== 'undefined') |
| - remoteProperty.setter = this._target.runtimeModel.createRemoteObject(property.set); |
| + remoteProperty.setter = this._runtimeModel.createRemoteObject(property.set); |
| } |
| result.push(remoteProperty); |
| @@ -667,7 +701,7 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| var property = internalProperties[i]; |
| if (!property.value) |
| continue; |
| - var propertyValue = this._target.runtimeModel.createRemoteObject(property.value); |
| + var propertyValue = this._runtimeModel.createRemoteObject(property.value); |
| internalPropertiesResult.push(new SDK.RemoteObjectProperty(property.name, propertyValue, true, false)); |
| } |
| } |
| @@ -695,7 +729,7 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| * @param {?Protocol.Error} error |
| * @param {!Protocol.Runtime.RemoteObject} result |
| * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails |
| - * @this {SDK.RemoteObject} |
| + * @this {SDK.RemoteObjectImpl} |
| */ |
| function evaluatedCallback(error, result, exceptionDetails) { |
| if (error || !!exceptionDetails) { |
| @@ -796,7 +830,7 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| if (error) |
| callback(null, false); |
| else |
| - callback(this.target().runtimeModel.createRemoteObject(result), !!exceptionDetails); |
| + callback(this._runtimeModel.createRemoteObject(result), !!exceptionDetails); |
| } |
| this._runtimeAgent.callFunctionOn( |
| @@ -824,6 +858,9 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| this._objectId, functionDeclaration.toString(), args, true, true, false, undefined, undefined, mycallback); |
| } |
| + /** |
| + * @override |
| + */ |
| release() { |
| if (!this._objectId) |
| return; |
| @@ -840,18 +877,18 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| /** |
| * @override |
| - * @return {!SDK.Target} |
| + * @return {!SDK.DebuggerModel} |
| */ |
| - target() { |
| - return this._target; |
| + debuggerModel() { |
| + return this._runtimeModel.debuggerModel(); |
| } |
| /** |
| * @override |
| - * @return {?SDK.DebuggerModel} |
| + * @return {!SDK.RuntimeModel} |
| */ |
| - debuggerModel() { |
| - return this._debuggerModel; |
| + runtimeModel() { |
| + return this._runtimeModel; |
| } |
| /** |
| @@ -864,12 +901,9 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
| }; |
| -/** |
| - * @unrestricted |
| - */ |
| SDK.ScopeRemoteObject = class extends SDK.RemoteObjectImpl { |
| /** |
| - * @param {!SDK.Target} target |
| + * @param {!SDK.RuntimeModel} runtimeModel |
| * @param {string|undefined} objectId |
| * @param {!SDK.ScopeRef} scopeRef |
| * @param {string} type |
| @@ -879,8 +913,8 @@ SDK.ScopeRemoteObject = class extends SDK.RemoteObjectImpl { |
| * @param {string=} description |
| * @param {!Protocol.Runtime.ObjectPreview=} preview |
| */ |
| - constructor(target, objectId, scopeRef, type, subtype, value, unserializableValue, description, preview) { |
| - super(target, objectId, type, subtype, value, unserializableValue, description, preview); |
| + constructor(runtimeModel, objectId, scopeRef, type, subtype, value, unserializableValue, description, preview) { |
| + super(runtimeModel, objectId, type, subtype, value, unserializableValue, description, preview); |
| this._scopeRef = scopeRef; |
| this._savedScopeProperties = undefined; |
| } |
| @@ -936,7 +970,7 @@ SDK.ScopeRemoteObject = class extends SDK.RemoteObjectImpl { |
| */ |
| doSetObjectPropertyValue(result, argumentName, callback) { |
| var name = /** @type {string} */ (argumentName.value); |
| - this._debuggerModel.setVariableValue( |
| + this.debuggerModel().setVariableValue( |
| this._scopeRef.number, name, SDK.RemoteObject.toCallArgument(result), this._scopeRef.callFrameId, |
| setVariableValueCallback.bind(this)); |
| @@ -952,7 +986,7 @@ SDK.ScopeRemoteObject = class extends SDK.RemoteObjectImpl { |
| if (this._savedScopeProperties) { |
| for (var i = 0; i < this._savedScopeProperties.length; i++) { |
| if (this._savedScopeProperties[i].name === name) |
| - this._savedScopeProperties[i].value = this._target.runtimeModel.createRemoteObject(result); |
| + this._savedScopeProperties[i].value = this._runtimeModel.createRemoteObject(result); |
| } |
| } |
| callback(); |
| @@ -960,9 +994,6 @@ SDK.ScopeRemoteObject = class extends SDK.RemoteObjectImpl { |
| } |
| }; |
| -/** |
| - * @unrestricted |
| - */ |
| SDK.ScopeRef = class { |
| /** |
| * @param {number} number |
| @@ -1015,9 +1046,6 @@ SDK.RemoteObjectProperty = class { |
| // for traversing prototypes, extracting class names via constructor, handling properties |
| // or functions. |
| -/** |
| - * @unrestricted |
| - */ |
| SDK.LocalJSONObject = class extends SDK.RemoteObject { |
| /** |
| * @param {*} value |
| @@ -1025,6 +1053,26 @@ SDK.LocalJSONObject = class extends SDK.RemoteObject { |
| constructor(value) { |
| super(); |
| this._value = value; |
| + /** @type {string} */ |
| + this._cachedDescription; |
| + /** @type {!Array<!SDK.RemoteObjectProperty>} */ |
| + this._cachedChildren; |
| + } |
| + |
| + /** |
| + * @override |
| + * @return {!Protocol.Runtime.RemoteObjectId|undefined} |
| + * */ |
| + get objectId() { |
| + return undefined; |
| + } |
| + |
| + /** |
| + * @override |
| + * @return {*} |
| + */ |
| + get value() { |
| + return this._value; |
| } |
| /** |
| @@ -1260,9 +1308,6 @@ SDK.LocalJSONObject = class extends SDK.RemoteObject { |
| } |
| }; |
| -/** |
| - * @unrestricted |
| - */ |
| SDK.RemoteArray = class { |
| /** |
| * @param {!SDK.RemoteObject} object |
| @@ -1372,9 +1417,6 @@ SDK.RemoteArray = class { |
| }; |
| -/** |
| - * @unrestricted |
| - */ |
| SDK.RemoteFunction = class { |
| /** |
| * @param {!SDK.RemoteObject} object |