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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/sdk/RemoteObject.js

Issue 2214193002: [DevTools] Introduce unserializableValue in RemoteObject. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: hidden Created 4 years, 4 months 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 unified diff | Download patch
OLDNEW
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 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 return parseInt(matches[1], 10); 323 return parseInt(matches[1], 10);
324 } 324 }
325 325
326 /** 326 /**
327 * @param {!RuntimeAgent.RemoteObject|!WebInspector.RemoteObject|number|string|b oolean|undefined|null} object 327 * @param {!RuntimeAgent.RemoteObject|!WebInspector.RemoteObject|number|string|b oolean|undefined|null} object
328 * @return {!RuntimeAgent.CallArgument} 328 * @return {!RuntimeAgent.CallArgument}
329 */ 329 */
330 WebInspector.RemoteObject.toCallArgument = function(object) 330 WebInspector.RemoteObject.toCallArgument = function(object)
331 { 331 {
332 var type = typeof object; 332 var type = typeof object;
333 var value = object; 333 if (type === "undefined")
334 var objectId = undefined; 334 return {};
335 var description = String(object); 335 if (type === "number") {
336 var description = String(object);
337 if (object === 0 && 1 / object < 0)
338 return { unserializableValue: RuntimeAgent.UnserializableValue.Negat ive0 };
339 if (description === "NaN")
340 return { unserializableValue: RuntimeAgent.UnserializableValue.NaN } ;
341 if (description === "Infinity")
342 return { unserializableValue: RuntimeAgent.UnserializableValue.Infin ity };
343 if (description === "-Infinity")
344 return { unserializableValue: RuntimeAgent.UnserializableValue.Negat iveInfinity };
345 return { value: object };
346 }
347 if (type === "string" || type === "boolean")
348 return { value: object };
336 349
337 if (type === "number" && value === 0 && 1 / value < 0) 350 if (!object)
338 description = "-0"; 351 return { value: null };
339 352
340 switch (type) { 353 if (typeof object.unserializableValue !== "undefined")
kozy 2016/08/05 01:21:02 Why do you need both checks?
dgozman 2016/08/05 02:01:07 Because it takes both WI.RemoteObject and RA.Remot
341 case "number": 354 return { unserializableValue: object.unserializableValue };
342 case "string": 355 if (typeof object._unserializableValue !== "undefined")
343 case "boolean": 356 return { unserializableValue: object._unserializableValue };
344 case "undefined":
345 break;
346 default:
347 if (object) {
348 type = object.type;
349 value = object.value;
350 objectId = object.objectId;
351 description = object.description;
352 }
353 break;
354 }
355 357
356 // Handle special numbers: NaN, Infinity, -Infinity, -0. 358 if (typeof object.objectId !== "undefined")
357 if (type === "number") { 359 return { objectId: object.objectId };
358 switch (description) { 360 if (typeof object._objectId !== "undefined")
359 case "NaN": 361 return { objectId: object._objectId };
360 case "Infinity":
361 case "-Infinity":
362 case "-0":
363 value = description;
364 break;
365 }
366 }
367 362
368 return { 363 return { value: object.value };
369 value: value,
370 objectId: objectId,
371 type: /** @type {!RuntimeAgent.CallArgumentType.<string>} */ (type)
372 };
373 } 364 }
374 365
375 /** 366 /**
376 * @constructor 367 * @constructor
377 * @extends {WebInspector.RemoteObject} 368 * @extends {WebInspector.RemoteObject}
378 * @param {!WebInspector.Target} target 369 * @param {!WebInspector.Target} target
379 * @param {string|undefined} objectId 370 * @param {string|undefined} objectId
380 * @param {string} type 371 * @param {string} type
381 * @param {string|undefined} subtype 372 * @param {string|undefined} subtype
382 * @param {*} value 373 * @param {*} value
374 * @param {!RuntimeAgent.UnserializableValue=} unserializableValue
383 * @param {string=} description 375 * @param {string=} description
384 * @param {!RuntimeAgent.ObjectPreview=} preview 376 * @param {!RuntimeAgent.ObjectPreview=} preview
385 * @param {!RuntimeAgent.CustomPreview=} customPreview 377 * @param {!RuntimeAgent.CustomPreview=} customPreview
386 */ 378 */
387 WebInspector.RemoteObjectImpl = function(target, objectId, type, subtype, value, description, preview, customPreview) 379 WebInspector.RemoteObjectImpl = function(target, objectId, type, subtype, value, unserializableValue, description, preview, customPreview)
388 { 380 {
389 WebInspector.RemoteObject.call(this); 381 WebInspector.RemoteObject.call(this);
390 382
391 this._target = target; 383 this._target = target;
392 this._runtimeAgent = target.runtimeAgent(); 384 this._runtimeAgent = target.runtimeAgent();
393 this._debuggerModel = WebInspector.DebuggerModel.fromTarget(target); 385 this._debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
394 386
395 this._type = type; 387 this._type = type;
396 this._subtype = subtype; 388 this._subtype = subtype;
397 if (objectId) { 389 if (objectId) {
398 // handle 390 // handle
399 this._objectId = objectId; 391 this._objectId = objectId;
400 this._description = description; 392 this._description = description;
401 this._hasChildren = (type !== "symbol"); 393 this._hasChildren = (type !== "symbol");
402 this._preview = preview; 394 this._preview = preview;
403 } else { 395 } else {
404 // Primitive or null object. 396 // Primitive or null object.
405 this._description = description || (value + ""); 397 this._description = description || (value + "");
406 this._hasChildren = false; 398 this._hasChildren = false;
407 // Handle special numbers: NaN, Infinity, -Infinity, -0. 399 if (typeof unserializableValue !== "undefined") {
408 if (type === "number" && typeof value !== "number") 400 this._unserializableValue = unserializableValue;
409 this.value = Number(value); 401 if (unserializableValue === RuntimeAgent.UnserializableValue.Infinit y ||
410 else 402 unserializableValue === RuntimeAgent.UnserializableValue.Negativ eInfinity ||
403 unserializableValue === RuntimeAgent.UnserializableValue.Negativ e0 ||
404 unserializableValue === RuntimeAgent.UnserializableValue.NaN) {
405 this.value = Number(unserializableValue);
406 } else {
407 this.value = unserializableValue;
408 }
409 } else {
411 this.value = value; 410 this.value = value;
411 }
412 } 412 }
413 this._customPreview = customPreview || null; 413 this._customPreview = customPreview || null;
414 } 414 }
415 415
416 WebInspector.RemoteObjectImpl.prototype = { 416 WebInspector.RemoteObjectImpl.prototype = {
417 417
418 /** 418 /**
419 * @override 419 * @override
420 * @return {?RuntimeAgent.CustomPreview} 420 * @return {?RuntimeAgent.CustomPreview}
421 */ 421 */
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after
908 908
909 /** 909 /**
910 * @constructor 910 * @constructor
911 * @extends {WebInspector.RemoteObjectImpl} 911 * @extends {WebInspector.RemoteObjectImpl}
912 * @param {!WebInspector.Target} target 912 * @param {!WebInspector.Target} target
913 * @param {string|undefined} objectId 913 * @param {string|undefined} objectId
914 * @param {!WebInspector.ScopeRef} scopeRef 914 * @param {!WebInspector.ScopeRef} scopeRef
915 * @param {string} type 915 * @param {string} type
916 * @param {string|undefined} subtype 916 * @param {string|undefined} subtype
917 * @param {*} value 917 * @param {*} value
918 * @param {!RuntimeAgent.UnserializableValue=} unserializableValue
918 * @param {string=} description 919 * @param {string=} description
919 * @param {!RuntimeAgent.ObjectPreview=} preview 920 * @param {!RuntimeAgent.ObjectPreview=} preview
920 */ 921 */
921 WebInspector.ScopeRemoteObject = function(target, objectId, scopeRef, type, subt ype, value, description, preview) 922 WebInspector.ScopeRemoteObject = function(target, objectId, scopeRef, type, subt ype, value, unserializableValue, description, preview)
922 { 923 {
923 WebInspector.RemoteObjectImpl.call(this, target, objectId, type, subtype, va lue, description, preview); 924 WebInspector.RemoteObjectImpl.call(this, target, objectId, type, subtype, va lue, unserializableValue, description, preview);
924 this._scopeRef = scopeRef; 925 this._scopeRef = scopeRef;
925 this._savedScopeProperties = undefined; 926 this._savedScopeProperties = undefined;
926 }; 927 };
927 928
928 WebInspector.ScopeRemoteObject.prototype = { 929 WebInspector.ScopeRemoteObject.prototype = {
929 /** 930 /**
930 * @override 931 * @override
931 * @param {boolean} ownProperties 932 * @param {boolean} ownProperties
932 * @param {boolean} accessorPropertiesOnly 933 * @param {boolean} accessorPropertiesOnly
933 * @param {boolean} generatePreview 934 * @param {boolean} generatePreview
(...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after
1509 }, 1510 },
1510 1511
1511 /** 1512 /**
1512 * @return {!WebInspector.RemoteObject} 1513 * @return {!WebInspector.RemoteObject}
1513 */ 1514 */
1514 object: function() 1515 object: function()
1515 { 1516 {
1516 return this._object; 1517 return this._object;
1517 } 1518 }
1518 } 1519 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698