OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 14 matching lines...) Expand all Loading... | |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 /** | 30 /** |
31 * @typedef {{object: ?SDK.RemoteObject, wasThrown: (boolean|undefined)}} | 31 * @typedef {{object: ?SDK.RemoteObject, wasThrown: (boolean|undefined)}} |
32 */ | 32 */ |
33 SDK.CallFunctionResult; | 33 SDK.CallFunctionResult; |
34 | 34 |
35 /** | |
36 * @unrestricted | |
37 */ | |
38 SDK.RemoteObject = class { | 35 SDK.RemoteObject = class { |
39 /** | 36 /** |
40 * This may not be an interface due to "instanceof SDK.RemoteObject" checks in the code. | 37 * This may not be an interface due to "instanceof SDK.RemoteObject" checks in the code. |
41 */ | 38 */ |
42 | 39 |
43 /** | 40 /** |
44 * @param {*} value | 41 * @param {*} value |
45 * @return {!SDK.RemoteObject} | 42 * @return {!SDK.RemoteObject} |
46 */ | 43 */ |
47 static fromLocalObject(value) { | 44 static fromLocalObject(value) { |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
120 return {value: object}; | 117 return {value: object}; |
121 } | 118 } |
122 if (type === 'string' || type === 'boolean') | 119 if (type === 'string' || type === 'boolean') |
123 return {value: object}; | 120 return {value: object}; |
124 | 121 |
125 if (!object) | 122 if (!object) |
126 return {value: null}; | 123 return {value: null}; |
127 | 124 |
128 if (typeof object.unserializableValue !== 'undefined') | 125 if (typeof object.unserializableValue !== 'undefined') |
129 return {unserializableValue: object.unserializableValue}; | 126 return {unserializableValue: object.unserializableValue}; |
130 if (typeof object._unserializableValue !== 'undefined') | 127 if (object instanceof SDK.RemoteObjectImpl && typeof object._unserializableV alue !== '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.
| |
131 return {unserializableValue: object._unserializableValue}; | 128 return {unserializableValue: object._unserializableValue}; |
132 | 129 |
133 if (typeof object.objectId !== 'undefined') | 130 if (typeof object.objectId !== 'undefined') |
134 return {objectId: object.objectId}; | 131 return {objectId: object.objectId}; |
135 if (typeof object._objectId !== 'undefined') | |
136 return {objectId: object._objectId}; | |
137 | 132 |
138 return {value: object.value}; | 133 return {value: object.value}; |
139 } | 134 } |
140 | 135 |
141 /** | 136 /** |
142 * @param {!SDK.RemoteObject} object | 137 * @param {!SDK.RemoteObject} object |
143 * @param {boolean} generatePreview | 138 * @param {boolean} generatePreview |
144 * @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObj ectProperty>)} callback | 139 * @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObj ectProperty>)} callback |
145 */ | 140 */ |
146 static loadFromObjectPerProto(object, generatePreview, callback) { | 141 static loadFromObjectPerProto(object, generatePreview, callback) { |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
203 object.getOwnProperties(generatePreview, ownPropertiesCallback); | 198 object.getOwnProperties(generatePreview, ownPropertiesCallback); |
204 } | 199 } |
205 | 200 |
206 /** | 201 /** |
207 * @return {?Protocol.Runtime.CustomPreview} | 202 * @return {?Protocol.Runtime.CustomPreview} |
208 */ | 203 */ |
209 customPreview() { | 204 customPreview() { |
210 return null; | 205 return null; |
211 } | 206 } |
212 | 207 |
208 /** @return {!Protocol.Runtime.RemoteObjectId|undefined} */ | |
209 get objectId() { | |
caseq
2017/03/17 18:30:44
ditto. perhaps extract this?
| |
210 return 'Not implemented'; | |
211 } | |
212 | |
213 /** @return {string} */ | 213 /** @return {string} */ |
214 get type() { | 214 get type() { |
215 throw 'Not implemented'; | 215 throw 'Not implemented'; |
216 } | 216 } |
217 | 217 |
218 /** @return {string|undefined} */ | 218 /** @return {string|undefined} */ |
219 get subtype() { | 219 get subtype() { |
220 throw 'Not implemented'; | 220 throw 'Not implemented'; |
221 } | 221 } |
222 | 222 |
223 /** @return {*} */ | |
224 get value() { | |
225 throw 'Not implemented'; | |
226 } | |
227 | |
223 /** @return {string|undefined} */ | 228 /** @return {string|undefined} */ |
224 get description() { | 229 get description() { |
225 throw 'Not implemented'; | 230 throw 'Not implemented'; |
226 } | 231 } |
227 | 232 |
228 /** @return {boolean} */ | 233 /** @return {boolean} */ |
229 get hasChildren() { | 234 get hasChildren() { |
230 throw 'Not implemented'; | 235 throw 'Not implemented'; |
231 } | 236 } |
232 | 237 |
233 /** | 238 /** |
239 * @return {!Protocol.Runtime.ObjectPreview|undefined} | |
240 */ | |
241 get preview() { | |
242 return undefined; | |
243 } | |
244 | |
245 /** | |
234 * @return {number} | 246 * @return {number} |
235 */ | 247 */ |
236 arrayLength() { | 248 arrayLength() { |
237 throw 'Not implemented'; | 249 throw 'Not implemented'; |
238 } | 250 } |
239 | 251 |
240 /** | 252 /** |
241 * @param {boolean} generatePreview | 253 * @param {boolean} generatePreview |
242 * @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObj ectProperty>)} callback | 254 * @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObj ectProperty>)} callback |
243 */ | 255 */ |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
299 * @param {function(!{properties: ?Array<!SDK.RemoteObjectProperty>, interna lProperties: ?Array<!SDK.RemoteObjectProperty>})} callback | 311 * @param {function(!{properties: ?Array<!SDK.RemoteObjectProperty>, interna lProperties: ?Array<!SDK.RemoteObjectProperty>})} callback |
300 * @param {?Array<!SDK.RemoteObjectProperty>} properties | 312 * @param {?Array<!SDK.RemoteObjectProperty>} properties |
301 * @param {?Array<!SDK.RemoteObjectProperty>} internalProperties | 313 * @param {?Array<!SDK.RemoteObjectProperty>} internalProperties |
302 */ | 314 */ |
303 function getAllPropertiesCallback(callback, properties, internalProperties) { | 315 function getAllPropertiesCallback(callback, properties, internalProperties) { |
304 callback({properties: properties, internalProperties: internalProperties}) ; | 316 callback({properties: properties, internalProperties: internalProperties}) ; |
305 } | 317 } |
306 } | 318 } |
307 | 319 |
308 /** | 320 /** |
321 * @param {!Array.<string>} propertyPath | |
322 * @param {function(?SDK.RemoteObject, boolean=)} callback | |
323 */ | |
324 getProperty(propertyPath, callback) { | |
325 throw 'Not implemented'; | |
326 } | |
327 | |
328 /** | |
309 * @return {!Promise<?Array<!SDK.EventListener>>} | 329 * @return {!Promise<?Array<!SDK.EventListener>>} |
310 */ | 330 */ |
311 eventListeners() { | 331 eventListeners() { |
312 throw 'Not implemented'; | 332 throw 'Not implemented'; |
313 } | 333 } |
314 | 334 |
315 /** | 335 /** |
316 * @param {!Protocol.Runtime.CallArgument} name | 336 * @param {!Protocol.Runtime.CallArgument} name |
317 * @param {function(string=)} callback | 337 * @param {function(string=)} callback |
318 */ | 338 */ |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
384 return new Promise(promiseConstructor.bind(this)); | 404 return new Promise(promiseConstructor.bind(this)); |
385 | 405 |
386 /** | 406 /** |
387 * @this {SDK.RemoteObject} | 407 * @this {SDK.RemoteObject} |
388 */ | 408 */ |
389 function promiseConstructor(success) { | 409 function promiseConstructor(success) { |
390 this.callFunctionJSON(functionDeclaration, args, success); | 410 this.callFunctionJSON(functionDeclaration, args, success); |
391 } | 411 } |
392 } | 412 } |
393 | 413 |
394 /** | 414 release() { |
395 * @return {!SDK.Target} | |
396 */ | |
397 target() { | |
398 throw new Error('Target-less object'); | |
399 } | 415 } |
400 | 416 |
401 /** | 417 /** |
402 * @return {?SDK.DebuggerModel} | 418 * @return {!SDK.DebuggerModel} |
403 */ | 419 */ |
404 debuggerModel() { | 420 debuggerModel() { |
405 throw new Error('DebuggerModel-less object'); | 421 throw new Error('DebuggerModel-less object'); |
406 } | 422 } |
407 | 423 |
408 /** | 424 /** |
425 * @return {!SDK.RuntimeModel} | |
426 */ | |
427 runtimeModel() { | |
428 throw new Error('RuntimeModel-less object'); | |
429 } | |
430 | |
431 /** | |
409 * @return {boolean} | 432 * @return {boolean} |
410 */ | 433 */ |
411 isNode() { | 434 isNode() { |
412 return false; | 435 return false; |
413 } | 436 } |
414 }; | 437 }; |
415 | 438 |
416 | 439 |
417 /** | |
418 * @unrestricted | |
419 */ | |
420 SDK.RemoteObjectImpl = class extends SDK.RemoteObject { | 440 SDK.RemoteObjectImpl = class extends SDK.RemoteObject { |
421 /** | 441 /** |
422 * @param {!SDK.Target} target | 442 * @param {!SDK.RuntimeModel} runtimeModel |
423 * @param {string|undefined} objectId | 443 * @param {string|undefined} objectId |
424 * @param {string} type | 444 * @param {string} type |
425 * @param {string|undefined} subtype | 445 * @param {string|undefined} subtype |
426 * @param {*} value | 446 * @param {*} value |
427 * @param {!Protocol.Runtime.UnserializableValue=} unserializableValue | 447 * @param {!Protocol.Runtime.UnserializableValue=} unserializableValue |
428 * @param {string=} description | 448 * @param {string=} description |
429 * @param {!Protocol.Runtime.ObjectPreview=} preview | 449 * @param {!Protocol.Runtime.ObjectPreview=} preview |
430 * @param {!Protocol.Runtime.CustomPreview=} customPreview | 450 * @param {!Protocol.Runtime.CustomPreview=} customPreview |
431 */ | 451 */ |
432 constructor(target, objectId, type, subtype, value, unserializableValue, descr iption, preview, customPreview) { | 452 constructor(runtimeModel, objectId, type, subtype, value, unserializableValue, description, preview, customPreview) { |
433 super(); | 453 super(); |
434 | 454 |
435 this._target = target; | 455 this._runtimeModel = runtimeModel; |
436 this._runtimeAgent = target.runtimeAgent(); | 456 this._runtimeAgent = runtimeModel.target().runtimeAgent(); |
437 this._debuggerModel = SDK.DebuggerModel.fromTarget(target); | |
438 | 457 |
439 this._type = type; | 458 this._type = type; |
440 this._subtype = subtype; | 459 this._subtype = subtype; |
441 if (objectId) { | 460 if (objectId) { |
442 // handle | 461 // handle |
443 this._objectId = objectId; | 462 this._objectId = objectId; |
444 this._description = description; | 463 this._description = description; |
445 this._hasChildren = (type !== 'symbol'); | 464 this._hasChildren = (type !== 'symbol'); |
446 this._preview = preview; | 465 this._preview = preview; |
447 } else { | 466 } else { |
448 this._description = description; | 467 this._description = description; |
449 if (!this._description && (typeof value !== 'object' || value === null)) | 468 if (!this._description && (typeof value !== 'object' || value === null)) |
450 this._description = value + ''; | 469 this._description = value + ''; |
451 this._hasChildren = false; | 470 this._hasChildren = false; |
452 if (typeof unserializableValue !== 'undefined') { | 471 if (typeof unserializableValue !== 'undefined') { |
453 this._unserializableValue = unserializableValue; | 472 this._unserializableValue = unserializableValue; |
454 if (unserializableValue === Protocol.Runtime.UnserializableValue.Infinit y || | 473 if (unserializableValue === Protocol.Runtime.UnserializableValue.Infinit y || |
455 unserializableValue === Protocol.Runtime.UnserializableValue.Negativ eInfinity || | 474 unserializableValue === Protocol.Runtime.UnserializableValue.Negativ eInfinity || |
456 unserializableValue === Protocol.Runtime.UnserializableValue.Negativ e0 || | 475 unserializableValue === Protocol.Runtime.UnserializableValue.Negativ e0 || |
457 unserializableValue === Protocol.Runtime.UnserializableValue.NaN) | 476 unserializableValue === Protocol.Runtime.UnserializableValue.NaN) |
458 this.value = Number(unserializableValue); | 477 this._value = Number(unserializableValue); |
459 else | 478 else |
460 this.value = unserializableValue; | 479 this._value = unserializableValue; |
461 | 480 |
462 } else { | 481 } else { |
463 this.value = value; | 482 this._value = value; |
464 } | 483 } |
465 } | 484 } |
466 this._customPreview = customPreview || null; | 485 this._customPreview = customPreview || null; |
467 } | 486 } |
468 | 487 |
469 /** | 488 /** |
470 * @override | 489 * @override |
471 * @return {?Protocol.Runtime.CustomPreview} | 490 * @return {?Protocol.Runtime.CustomPreview} |
472 */ | 491 */ |
473 customPreview() { | 492 customPreview() { |
474 return this._customPreview; | 493 return this._customPreview; |
475 } | 494 } |
476 | 495 |
477 /** @return {!Protocol.Runtime.RemoteObjectId} */ | 496 /** |
497 * @override | |
498 * @return {!Protocol.Runtime.RemoteObjectId|undefined} | |
499 */ | |
478 get objectId() { | 500 get objectId() { |
479 return this._objectId; | 501 return this._objectId; |
480 } | 502 } |
481 | 503 |
482 /** | 504 /** |
483 * @override | 505 * @override |
484 * @return {string} | 506 * @return {string} |
485 */ | 507 */ |
486 get type() { | 508 get type() { |
487 return this._type; | 509 return this._type; |
488 } | 510 } |
489 | 511 |
490 /** | 512 /** |
491 * @override | 513 * @override |
492 * @return {string|undefined} | 514 * @return {string|undefined} |
493 */ | 515 */ |
494 get subtype() { | 516 get subtype() { |
495 return this._subtype; | 517 return this._subtype; |
496 } | 518 } |
497 | 519 |
498 /** | 520 /** |
499 * @override | 521 * @override |
522 * @return {*} | |
523 */ | |
524 get value() { | |
525 return this._value; | |
526 } | |
527 | |
528 /** | |
529 * @override | |
500 * @return {string|undefined} | 530 * @return {string|undefined} |
501 */ | 531 */ |
502 get description() { | 532 get description() { |
503 return this._description; | 533 return this._description; |
504 } | 534 } |
505 | 535 |
506 /** | 536 /** |
507 * @override | 537 * @override |
508 * @return {boolean} | 538 * @return {boolean} |
509 */ | 539 */ |
510 get hasChildren() { | 540 get hasChildren() { |
511 return this._hasChildren; | 541 return this._hasChildren; |
512 } | 542 } |
513 | 543 |
514 /** | 544 /** |
545 * @override | |
515 * @return {!Protocol.Runtime.ObjectPreview|undefined} | 546 * @return {!Protocol.Runtime.ObjectPreview|undefined} |
516 */ | 547 */ |
517 get preview() { | 548 get preview() { |
518 return this._preview; | 549 return this._preview; |
519 } | 550 } |
520 | 551 |
521 /** | 552 /** |
522 * @override | 553 * @override |
523 * @param {boolean} generatePreview | 554 * @param {boolean} generatePreview |
524 * @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObj ectProperty>)} callback | 555 * @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObj ectProperty>)} callback |
(...skipping 17 matching lines...) Expand all Loading... | |
542 * @return {!Promise<?Array<!SDK.EventListener>>} | 573 * @return {!Promise<?Array<!SDK.EventListener>>} |
543 */ | 574 */ |
544 eventListeners() { | 575 eventListeners() { |
545 return new Promise(eventListeners.bind(this)); | 576 return new Promise(eventListeners.bind(this)); |
546 /** | 577 /** |
547 * @param {function(?)} fulfill | 578 * @param {function(?)} fulfill |
548 * @param {function(*)} reject | 579 * @param {function(*)} reject |
549 * @this {SDK.RemoteObjectImpl} | 580 * @this {SDK.RemoteObjectImpl} |
550 */ | 581 */ |
551 function eventListeners(fulfill, reject) { | 582 function eventListeners(fulfill, reject) { |
552 if (!this.target().hasDOMCapability()) { | 583 if (!this._runtimeModel.target().hasDOMCapability()) { |
553 // TODO(kozyatinskiy): figure out how this should work for |window| when there is no DOMDebugger. | 584 // TODO(kozyatinskiy): figure out how this should work for |window| when there is no DOMDebugger. |
554 fulfill([]); | 585 fulfill([]); |
555 return; | 586 return; |
556 } | 587 } |
557 | 588 |
558 if (!this._objectId) { | 589 if (!this._objectId) { |
559 reject(new Error('No object id specified')); | 590 reject(new Error('No object id specified')); |
560 return; | 591 return; |
561 } | 592 } |
562 | 593 |
563 this.target().domdebuggerAgent().getEventListeners(this._objectId, undefin ed, undefined, mycallback.bind(this)); | 594 this._runtimeModel.target().domdebuggerAgent().getEventListeners( |
595 this._objectId, undefined, undefined, mycallback.bind(this)); | |
564 | 596 |
565 /** | 597 /** |
566 * @this {SDK.RemoteObjectImpl} | 598 * @this {SDK.RemoteObjectImpl} |
567 * @param {?Protocol.Error} error | 599 * @param {?Protocol.Error} error |
568 * @param {!Array<!Protocol.DOMDebugger.EventListener>} payloads | 600 * @param {!Array<!Protocol.DOMDebugger.EventListener>} payloads |
569 */ | 601 */ |
570 function mycallback(error, payloads) { | 602 function mycallback(error, payloads) { |
571 if (error) { | 603 if (error) { |
572 reject(new Error(error)); | 604 reject(new Error(error)); |
573 return; | 605 return; |
574 } | 606 } |
575 fulfill(payloads.map(createEventListener.bind(this))); | 607 fulfill(payloads.map(createEventListener.bind(this))); |
576 } | 608 } |
577 | 609 |
578 /** | 610 /** |
579 * @this {SDK.RemoteObjectImpl} | 611 * @this {SDK.RemoteObjectImpl} |
580 * @param {!Protocol.DOMDebugger.EventListener} payload | 612 * @param {!Protocol.DOMDebugger.EventListener} payload |
581 */ | 613 */ |
582 function createEventListener(payload) { | 614 function createEventListener(payload) { |
583 return new SDK.EventListener( | 615 return new SDK.EventListener( |
584 this._target, this, payload.type, payload.useCapture, payload.passiv e, payload.once, | 616 this._runtimeModel, this, payload.type, payload.useCapture, payload. passive, payload.once, |
585 payload.handler ? this.target().runtimeModel.createRemoteObject(payl oad.handler) : null, | 617 payload.handler ? this._runtimeModel.createRemoteObject(payload.hand ler) : null, |
586 payload.originalHandler ? this.target().runtimeModel.createRemoteObj ect(payload.originalHandler) : null, | 618 payload.originalHandler ? this._runtimeModel.createRemoteObject(payl oad.originalHandler) : null, |
587 /** @type {!SDK.DebuggerModel.Location} */ (this._debuggerModel.crea teRawLocationByScriptId( | 619 /** @type {!SDK.DebuggerModel.Location} */ |
620 (this.debuggerModel().createRawLocationByScriptId( | |
588 payload.scriptId, payload.lineNumber, payload.columnNumber)), | 621 payload.scriptId, payload.lineNumber, payload.columnNumber)), |
589 null); | 622 null); |
590 } | 623 } |
591 } | 624 } |
592 } | 625 } |
593 | 626 |
594 /** | 627 /** |
628 * @override | |
595 * @param {!Array.<string>} propertyPath | 629 * @param {!Array.<string>} propertyPath |
596 * @param {function(?SDK.RemoteObject, boolean=)} callback | 630 * @param {function(?SDK.RemoteObject, boolean=)} callback |
597 */ | 631 */ |
598 getProperty(propertyPath, callback) { | 632 getProperty(propertyPath, callback) { |
599 /** | 633 /** |
600 * @param {string} arrayStr | 634 * @param {string} arrayStr |
601 * @suppressReceiverCheck | 635 * @suppressReceiverCheck |
602 * @this {Object} | 636 * @this {Object} |
603 */ | 637 */ |
604 function remoteFunction(arrayStr) { | 638 function remoteFunction(arrayStr) { |
(...skipping 26 matching lines...) Expand all Loading... | |
631 * @param {!Array.<!Protocol.Runtime.InternalPropertyDescriptor>=} internalP roperties | 665 * @param {!Array.<!Protocol.Runtime.InternalPropertyDescriptor>=} internalP roperties |
632 * @param {?Protocol.Runtime.ExceptionDetails=} exceptionDetails | 666 * @param {?Protocol.Runtime.ExceptionDetails=} exceptionDetails |
633 * @this {SDK.RemoteObjectImpl} | 667 * @this {SDK.RemoteObjectImpl} |
634 */ | 668 */ |
635 function remoteObjectBinder(error, properties, internalProperties, exception Details) { | 669 function remoteObjectBinder(error, properties, internalProperties, exception Details) { |
636 if (error) { | 670 if (error) { |
637 callback(null, null); | 671 callback(null, null); |
638 return; | 672 return; |
639 } | 673 } |
640 if (exceptionDetails) { | 674 if (exceptionDetails) { |
641 this.target().runtimeModel.exceptionThrown(Date.now(), exceptionDetails) ; | 675 this._runtimeModel.exceptionThrown(Date.now(), exceptionDetails); |
642 callback(null, null); | 676 callback(null, null); |
643 return; | 677 return; |
644 } | 678 } |
645 var result = []; | 679 var result = []; |
646 for (var i = 0; properties && i < properties.length; ++i) { | 680 for (var i = 0; properties && i < properties.length; ++i) { |
647 var property = properties[i]; | 681 var property = properties[i]; |
648 var propertyValue = property.value ? this._target.runtimeModel.createRem oteObject(property.value) : null; | 682 var propertyValue = property.value ? this._runtimeModel.createRemoteObje ct(property.value) : null; |
649 var propertySymbol = property.symbol ? this._target.runtimeModel.createR emoteObject(property.symbol) : null; | 683 var propertySymbol = property.symbol ? this._runtimeModel.createRemoteOb ject(property.symbol) : null; |
650 var remoteProperty = new SDK.RemoteObjectProperty( | 684 var remoteProperty = new SDK.RemoteObjectProperty( |
651 property.name, propertyValue, !!property.enumerable, !!property.writ able, !!property.isOwn, | 685 property.name, propertyValue, !!property.enumerable, !!property.writ able, !!property.isOwn, |
652 !!property.wasThrown, propertySymbol); | 686 !!property.wasThrown, propertySymbol); |
653 | 687 |
654 if (typeof property.value === 'undefined') { | 688 if (typeof property.value === 'undefined') { |
655 if (property.get && property.get.type !== 'undefined') | 689 if (property.get && property.get.type !== 'undefined') |
656 remoteProperty.getter = this._target.runtimeModel.createRemoteObject (property.get); | 690 remoteProperty.getter = this._runtimeModel.createRemoteObject(proper ty.get); |
657 if (property.set && property.set.type !== 'undefined') | 691 if (property.set && property.set.type !== 'undefined') |
658 remoteProperty.setter = this._target.runtimeModel.createRemoteObject (property.set); | 692 remoteProperty.setter = this._runtimeModel.createRemoteObject(proper ty.set); |
659 } | 693 } |
660 | 694 |
661 result.push(remoteProperty); | 695 result.push(remoteProperty); |
662 } | 696 } |
663 var internalPropertiesResult = null; | 697 var internalPropertiesResult = null; |
664 if (internalProperties) { | 698 if (internalProperties) { |
665 internalPropertiesResult = []; | 699 internalPropertiesResult = []; |
666 for (var i = 0; i < internalProperties.length; i++) { | 700 for (var i = 0; i < internalProperties.length; i++) { |
667 var property = internalProperties[i]; | 701 var property = internalProperties[i]; |
668 if (!property.value) | 702 if (!property.value) |
669 continue; | 703 continue; |
670 var propertyValue = this._target.runtimeModel.createRemoteObject(prope rty.value); | 704 var propertyValue = this._runtimeModel.createRemoteObject(property.val ue); |
671 internalPropertiesResult.push(new SDK.RemoteObjectProperty(property.na me, propertyValue, true, false)); | 705 internalPropertiesResult.push(new SDK.RemoteObjectProperty(property.na me, propertyValue, true, false)); |
672 } | 706 } |
673 } | 707 } |
674 callback(result, internalPropertiesResult); | 708 callback(result, internalPropertiesResult); |
675 } | 709 } |
676 this._runtimeAgent.getProperties( | 710 this._runtimeAgent.getProperties( |
677 this._objectId, ownProperties, accessorPropertiesOnly, generatePreview, remoteObjectBinder.bind(this)); | 711 this._objectId, ownProperties, accessorPropertiesOnly, generatePreview, remoteObjectBinder.bind(this)); |
678 } | 712 } |
679 | 713 |
680 /** | 714 /** |
681 * @override | 715 * @override |
682 * @param {string|!Protocol.Runtime.CallArgument} name | 716 * @param {string|!Protocol.Runtime.CallArgument} name |
683 * @param {string} value | 717 * @param {string} value |
684 * @param {function(string=)} callback | 718 * @param {function(string=)} callback |
685 */ | 719 */ |
686 setPropertyValue(name, value, callback) { | 720 setPropertyValue(name, value, callback) { |
687 if (!this._objectId) { | 721 if (!this._objectId) { |
688 callback('Can\'t set a property of non-object.'); | 722 callback('Can\'t set a property of non-object.'); |
689 return; | 723 return; |
690 } | 724 } |
691 | 725 |
692 this._runtimeAgent.invoke_evaluate({expression: value, silent: true}, evalua tedCallback.bind(this)); | 726 this._runtimeAgent.invoke_evaluate({expression: value, silent: true}, evalua tedCallback.bind(this)); |
693 | 727 |
694 /** | 728 /** |
695 * @param {?Protocol.Error} error | 729 * @param {?Protocol.Error} error |
696 * @param {!Protocol.Runtime.RemoteObject} result | 730 * @param {!Protocol.Runtime.RemoteObject} result |
697 * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails | 731 * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails |
698 * @this {SDK.RemoteObject} | 732 * @this {SDK.RemoteObjectImpl} |
699 */ | 733 */ |
700 function evaluatedCallback(error, result, exceptionDetails) { | 734 function evaluatedCallback(error, result, exceptionDetails) { |
701 if (error || !!exceptionDetails) { | 735 if (error || !!exceptionDetails) { |
702 callback(error || (result.type !== 'string' ? result.description : /** @ type {string} */ (result.value))); | 736 callback(error || (result.type !== 'string' ? result.description : /** @ type {string} */ (result.value))); |
703 return; | 737 return; |
704 } | 738 } |
705 | 739 |
706 if (typeof name === 'string') | 740 if (typeof name === 'string') |
707 name = SDK.RemoteObject.toCallArgument(name); | 741 name = SDK.RemoteObject.toCallArgument(name); |
708 | 742 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
789 * @param {!Protocol.Runtime.RemoteObject} result | 823 * @param {!Protocol.Runtime.RemoteObject} result |
790 * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails | 824 * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails |
791 * @this {SDK.RemoteObjectImpl} | 825 * @this {SDK.RemoteObjectImpl} |
792 */ | 826 */ |
793 function mycallback(error, result, exceptionDetails) { | 827 function mycallback(error, result, exceptionDetails) { |
794 if (!callback) | 828 if (!callback) |
795 return; | 829 return; |
796 if (error) | 830 if (error) |
797 callback(null, false); | 831 callback(null, false); |
798 else | 832 else |
799 callback(this.target().runtimeModel.createRemoteObject(result), !!except ionDetails); | 833 callback(this._runtimeModel.createRemoteObject(result), !!exceptionDetai ls); |
800 } | 834 } |
801 | 835 |
802 this._runtimeAgent.callFunctionOn( | 836 this._runtimeAgent.callFunctionOn( |
803 this._objectId, functionDeclaration.toString(), args, true, undefined, u ndefined, undefined, undefined, | 837 this._objectId, functionDeclaration.toString(), args, true, undefined, u ndefined, undefined, undefined, |
804 mycallback.bind(this)); | 838 mycallback.bind(this)); |
805 } | 839 } |
806 | 840 |
807 /** | 841 /** |
808 * @override | 842 * @override |
809 * @param {function(this:Object)} functionDeclaration | 843 * @param {function(this:Object)} functionDeclaration |
810 * @param {!Array.<!Protocol.Runtime.CallArgument>|undefined} args | 844 * @param {!Array.<!Protocol.Runtime.CallArgument>|undefined} args |
811 * @param {function(*)} callback | 845 * @param {function(*)} callback |
812 */ | 846 */ |
813 callFunctionJSON(functionDeclaration, args, callback) { | 847 callFunctionJSON(functionDeclaration, args, callback) { |
814 /** | 848 /** |
815 * @param {?Protocol.Error} error | 849 * @param {?Protocol.Error} error |
816 * @param {!Protocol.Runtime.RemoteObject} result | 850 * @param {!Protocol.Runtime.RemoteObject} result |
817 * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails | 851 * @param {!Protocol.Runtime.ExceptionDetails=} exceptionDetails |
818 */ | 852 */ |
819 function mycallback(error, result, exceptionDetails) { | 853 function mycallback(error, result, exceptionDetails) { |
820 callback((error || !!exceptionDetails) ? null : result.value); | 854 callback((error || !!exceptionDetails) ? null : result.value); |
821 } | 855 } |
822 | 856 |
823 this._runtimeAgent.callFunctionOn( | 857 this._runtimeAgent.callFunctionOn( |
824 this._objectId, functionDeclaration.toString(), args, true, true, false, undefined, undefined, mycallback); | 858 this._objectId, functionDeclaration.toString(), args, true, true, false, undefined, undefined, mycallback); |
825 } | 859 } |
826 | 860 |
861 /** | |
862 * @override | |
863 */ | |
827 release() { | 864 release() { |
828 if (!this._objectId) | 865 if (!this._objectId) |
829 return; | 866 return; |
830 this._runtimeAgent.releaseObject(this._objectId); | 867 this._runtimeAgent.releaseObject(this._objectId); |
831 } | 868 } |
832 | 869 |
833 /** | 870 /** |
834 * @override | 871 * @override |
835 * @return {number} | 872 * @return {number} |
836 */ | 873 */ |
837 arrayLength() { | 874 arrayLength() { |
838 return SDK.RemoteObject.arrayLength(this); | 875 return SDK.RemoteObject.arrayLength(this); |
839 } | 876 } |
840 | 877 |
841 /** | 878 /** |
842 * @override | 879 * @override |
843 * @return {!SDK.Target} | 880 * @return {!SDK.DebuggerModel} |
844 */ | 881 */ |
845 target() { | 882 debuggerModel() { |
846 return this._target; | 883 return this._runtimeModel.debuggerModel(); |
847 } | 884 } |
848 | 885 |
849 /** | 886 /** |
850 * @override | 887 * @override |
851 * @return {?SDK.DebuggerModel} | 888 * @return {!SDK.RuntimeModel} |
852 */ | 889 */ |
853 debuggerModel() { | 890 runtimeModel() { |
854 return this._debuggerModel; | 891 return this._runtimeModel; |
855 } | 892 } |
856 | 893 |
857 /** | 894 /** |
858 * @override | 895 * @override |
859 * @return {boolean} | 896 * @return {boolean} |
860 */ | 897 */ |
861 isNode() { | 898 isNode() { |
862 return !!this._objectId && this.type === 'object' && this.subtype === 'node' ; | 899 return !!this._objectId && this.type === 'object' && this.subtype === 'node' ; |
863 } | 900 } |
864 }; | 901 }; |
865 | 902 |
866 | 903 |
867 /** | |
868 * @unrestricted | |
869 */ | |
870 SDK.ScopeRemoteObject = class extends SDK.RemoteObjectImpl { | 904 SDK.ScopeRemoteObject = class extends SDK.RemoteObjectImpl { |
871 /** | 905 /** |
872 * @param {!SDK.Target} target | 906 * @param {!SDK.RuntimeModel} runtimeModel |
873 * @param {string|undefined} objectId | 907 * @param {string|undefined} objectId |
874 * @param {!SDK.ScopeRef} scopeRef | 908 * @param {!SDK.ScopeRef} scopeRef |
875 * @param {string} type | 909 * @param {string} type |
876 * @param {string|undefined} subtype | 910 * @param {string|undefined} subtype |
877 * @param {*} value | 911 * @param {*} value |
878 * @param {!Protocol.Runtime.UnserializableValue=} unserializableValue | 912 * @param {!Protocol.Runtime.UnserializableValue=} unserializableValue |
879 * @param {string=} description | 913 * @param {string=} description |
880 * @param {!Protocol.Runtime.ObjectPreview=} preview | 914 * @param {!Protocol.Runtime.ObjectPreview=} preview |
881 */ | 915 */ |
882 constructor(target, objectId, scopeRef, type, subtype, value, unserializableVa lue, description, preview) { | 916 constructor(runtimeModel, objectId, scopeRef, type, subtype, value, unserializ ableValue, description, preview) { |
883 super(target, objectId, type, subtype, value, unserializableValue, descripti on, preview); | 917 super(runtimeModel, objectId, type, subtype, value, unserializableValue, des cription, preview); |
884 this._scopeRef = scopeRef; | 918 this._scopeRef = scopeRef; |
885 this._savedScopeProperties = undefined; | 919 this._savedScopeProperties = undefined; |
886 } | 920 } |
887 | 921 |
888 /** | 922 /** |
889 * @override | 923 * @override |
890 * @param {boolean} ownProperties | 924 * @param {boolean} ownProperties |
891 * @param {boolean} accessorPropertiesOnly | 925 * @param {boolean} accessorPropertiesOnly |
892 * @param {boolean} generatePreview | 926 * @param {boolean} generatePreview |
893 * @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObj ectProperty>)} callback | 927 * @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObj ectProperty>)} callback |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
929 } | 963 } |
930 | 964 |
931 /** | 965 /** |
932 * @override | 966 * @override |
933 * @param {!Protocol.Runtime.RemoteObject} result | 967 * @param {!Protocol.Runtime.RemoteObject} result |
934 * @param {!Protocol.Runtime.CallArgument} argumentName | 968 * @param {!Protocol.Runtime.CallArgument} argumentName |
935 * @param {function(string=)} callback | 969 * @param {function(string=)} callback |
936 */ | 970 */ |
937 doSetObjectPropertyValue(result, argumentName, callback) { | 971 doSetObjectPropertyValue(result, argumentName, callback) { |
938 var name = /** @type {string} */ (argumentName.value); | 972 var name = /** @type {string} */ (argumentName.value); |
939 this._debuggerModel.setVariableValue( | 973 this.debuggerModel().setVariableValue( |
940 this._scopeRef.number, name, SDK.RemoteObject.toCallArgument(result), th is._scopeRef.callFrameId, | 974 this._scopeRef.number, name, SDK.RemoteObject.toCallArgument(result), th is._scopeRef.callFrameId, |
941 setVariableValueCallback.bind(this)); | 975 setVariableValueCallback.bind(this)); |
942 | 976 |
943 /** | 977 /** |
944 * @param {string=} error | 978 * @param {string=} error |
945 * @this {SDK.ScopeRemoteObject} | 979 * @this {SDK.ScopeRemoteObject} |
946 */ | 980 */ |
947 function setVariableValueCallback(error) { | 981 function setVariableValueCallback(error) { |
948 if (error) { | 982 if (error) { |
949 callback(error); | 983 callback(error); |
950 return; | 984 return; |
951 } | 985 } |
952 if (this._savedScopeProperties) { | 986 if (this._savedScopeProperties) { |
953 for (var i = 0; i < this._savedScopeProperties.length; i++) { | 987 for (var i = 0; i < this._savedScopeProperties.length; i++) { |
954 if (this._savedScopeProperties[i].name === name) | 988 if (this._savedScopeProperties[i].name === name) |
955 this._savedScopeProperties[i].value = this._target.runtimeModel.crea teRemoteObject(result); | 989 this._savedScopeProperties[i].value = this._runtimeModel.createRemot eObject(result); |
956 } | 990 } |
957 } | 991 } |
958 callback(); | 992 callback(); |
959 } | 993 } |
960 } | 994 } |
961 }; | 995 }; |
962 | 996 |
963 /** | |
964 * @unrestricted | |
965 */ | |
966 SDK.ScopeRef = class { | 997 SDK.ScopeRef = class { |
967 /** | 998 /** |
968 * @param {number} number | 999 * @param {number} number |
969 * @param {string=} callFrameId | 1000 * @param {string=} callFrameId |
970 */ | 1001 */ |
971 constructor(number, callFrameId) { | 1002 constructor(number, callFrameId) { |
972 this.number = number; | 1003 this.number = number; |
973 this.callFrameId = callFrameId; | 1004 this.callFrameId = callFrameId; |
974 } | 1005 } |
975 }; | 1006 }; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1008 return !!(this.getter || this.setter); | 1039 return !!(this.getter || this.setter); |
1009 } | 1040 } |
1010 }; | 1041 }; |
1011 | 1042 |
1012 // Below is a wrapper around a local object that implements the RemoteObject int erface, | 1043 // Below is a wrapper around a local object that implements the RemoteObject int erface, |
1013 // which can be used by the UI code (primarily ObjectPropertiesSection). | 1044 // which can be used by the UI code (primarily ObjectPropertiesSection). |
1014 // Note that only JSON-compliant objects are currently supported, as there's no provision | 1045 // Note that only JSON-compliant objects are currently supported, as there's no provision |
1015 // for traversing prototypes, extracting class names via constructor, handling p roperties | 1046 // for traversing prototypes, extracting class names via constructor, handling p roperties |
1016 // or functions. | 1047 // or functions. |
1017 | 1048 |
1018 /** | |
1019 * @unrestricted | |
1020 */ | |
1021 SDK.LocalJSONObject = class extends SDK.RemoteObject { | 1049 SDK.LocalJSONObject = class extends SDK.RemoteObject { |
1022 /** | 1050 /** |
1023 * @param {*} value | 1051 * @param {*} value |
1024 */ | 1052 */ |
1025 constructor(value) { | 1053 constructor(value) { |
1026 super(); | 1054 super(); |
1027 this._value = value; | 1055 this._value = value; |
1056 /** @type {string} */ | |
1057 this._cachedDescription; | |
1058 /** @type {!Array<!SDK.RemoteObjectProperty>} */ | |
1059 this._cachedChildren; | |
1028 } | 1060 } |
1029 | 1061 |
1030 /** | 1062 /** |
1063 * @override | |
1064 * @return {!Protocol.Runtime.RemoteObjectId|undefined} | |
1065 * */ | |
1066 get objectId() { | |
1067 return undefined; | |
1068 } | |
1069 | |
1070 /** | |
1071 * @override | |
1072 * @return {*} | |
1073 */ | |
1074 get value() { | |
1075 return this._value; | |
1076 } | |
1077 | |
1078 /** | |
1031 * @override | 1079 * @override |
1032 * @return {string} | 1080 * @return {string} |
1033 */ | 1081 */ |
1034 get description() { | 1082 get description() { |
1035 if (this._cachedDescription) | 1083 if (this._cachedDescription) |
1036 return this._cachedDescription; | 1084 return this._cachedDescription; |
1037 | 1085 |
1038 /** | 1086 /** |
1039 * @param {!SDK.RemoteObjectProperty} property | 1087 * @param {!SDK.RemoteObjectProperty} property |
1040 * @return {string} | 1088 * @return {string} |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1253 try { | 1301 try { |
1254 result = functionDeclaration.apply(target, rawArgs); | 1302 result = functionDeclaration.apply(target, rawArgs); |
1255 } catch (e) { | 1303 } catch (e) { |
1256 result = null; | 1304 result = null; |
1257 } | 1305 } |
1258 | 1306 |
1259 callback(result); | 1307 callback(result); |
1260 } | 1308 } |
1261 }; | 1309 }; |
1262 | 1310 |
1263 /** | |
1264 * @unrestricted | |
1265 */ | |
1266 SDK.RemoteArray = class { | 1311 SDK.RemoteArray = class { |
1267 /** | 1312 /** |
1268 * @param {!SDK.RemoteObject} object | 1313 * @param {!SDK.RemoteObject} object |
1269 */ | 1314 */ |
1270 constructor(object) { | 1315 constructor(object) { |
1271 this._object = object; | 1316 this._object = object; |
1272 } | 1317 } |
1273 | 1318 |
1274 /** | 1319 /** |
1275 * @param {?SDK.RemoteObject} object | 1320 * @param {?SDK.RemoteObject} object |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1365 | 1410 |
1366 /** | 1411 /** |
1367 * @return {!SDK.RemoteObject} | 1412 * @return {!SDK.RemoteObject} |
1368 */ | 1413 */ |
1369 object() { | 1414 object() { |
1370 return this._object; | 1415 return this._object; |
1371 } | 1416 } |
1372 }; | 1417 }; |
1373 | 1418 |
1374 | 1419 |
1375 /** | |
1376 * @unrestricted | |
1377 */ | |
1378 SDK.RemoteFunction = class { | 1420 SDK.RemoteFunction = class { |
1379 /** | 1421 /** |
1380 * @param {!SDK.RemoteObject} object | 1422 * @param {!SDK.RemoteObject} object |
1381 */ | 1423 */ |
1382 constructor(object) { | 1424 constructor(object) { |
1383 this._object = object; | 1425 this._object = object; |
1384 } | 1426 } |
1385 | 1427 |
1386 /** | 1428 /** |
1387 * @param {?SDK.RemoteObject} object | 1429 * @param {?SDK.RemoteObject} object |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1457 * @const | 1499 * @const |
1458 * @type {!RegExp} | 1500 * @type {!RegExp} |
1459 */ | 1501 */ |
1460 SDK.RemoteObject._descriptionLengthParenRegex = /\(([0-9]+)\)/; | 1502 SDK.RemoteObject._descriptionLengthParenRegex = /\(([0-9]+)\)/; |
1461 | 1503 |
1462 /** | 1504 /** |
1463 * @const | 1505 * @const |
1464 * @type {!RegExp} | 1506 * @type {!RegExp} |
1465 */ | 1507 */ |
1466 SDK.RemoteObject._descriptionLengthSquareRegex = /\[([0-9]+)\]/; | 1508 SDK.RemoteObject._descriptionLengthSquareRegex = /\[([0-9]+)\]/; |
OLD | NEW |