(obj)
| 473 | } |
| 474 | |
| 475 | reconstructRemoteObject(obj) { |
| 476 | let value = obj.value; |
| 477 | let isUndefined = false; |
| 478 | |
| 479 | switch (obj.type) { |
| 480 | case "object": { |
| 481 | switch (obj.subtype) { |
| 482 | case "error": { |
| 483 | const desc = obj.description; |
| 484 | switch (obj.className) { |
| 485 | case "EvalError": throw new EvalError(desc); |
| 486 | case "RangeError": throw new RangeError(desc); |
| 487 | case "ReferenceError": throw new ReferenceError(desc); |
| 488 | case "SyntaxError": throw new SyntaxError(desc); |
| 489 | case "TypeError": throw new TypeError(desc); |
| 490 | case "URIError": throw new URIError(desc); |
| 491 | default: throw new Error(desc); |
| 492 | } |
| 493 | break; |
| 494 | } |
| 495 | case "array": { |
| 496 | const array = []; |
| 497 | const props = this.propertiesToObject( |
| 498 | this.getProperties(obj.objectId)); |
| 499 | for (let i = 0; i < props.length; i++) { |
| 500 | array[i] = props[i]; |
| 501 | } |
| 502 | value = array; |
| 503 | break; |
| 504 | } |
| 505 | case "null": { |
| 506 | value = null; |
| 507 | break; |
| 508 | } |
| 509 | default: { |
| 510 | switch (obj.className) { |
| 511 | case "global": |
| 512 | value = Function('return this')(); |
| 513 | break; |
| 514 | case "Number": |
| 515 | case "String": |
| 516 | case "Boolean": |
| 517 | value = this.reconstructValue(obj.objectId); |
| 518 | break; |
| 519 | default: |
| 520 | value = this.propertiesToObject( |
| 521 | this.getProperties(obj.objectId)); |
| 522 | break; |
| 523 | } |
| 524 | break; |
| 525 | } |
| 526 | } |
| 527 | break; |
| 528 | } |
| 529 | case "undefined": { |
| 530 | value = undefined; |
| 531 | isUndefined = true; |
| 532 | break; |
no test coverage detected