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 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 return "null"; | 172 return "null"; |
173 | 173 |
174 var type = typeof remoteObject; | 174 var type = typeof remoteObject; |
175 if (type !== "object" && type !== "function") | 175 if (type !== "object" && type !== "function") |
176 return type; | 176 return type; |
177 | 177 |
178 return remoteObject.type; | 178 return remoteObject.type; |
179 } | 179 } |
180 | 180 |
181 /** | 181 /** |
| 182 * @param {!RuntimeAgent.RemoteObject|!WebInspector.RemoteObject} remoteObject |
| 183 * @return {!RuntimeAgent.CallArgument} |
| 184 */ |
| 185 WebInspector.RemoteObject.toCallArgument = function(remoteObject) |
| 186 { |
| 187 var type = /** @type {!RuntimeAgent.CallArgumentType.<string>} */ (remoteObj
ect.type); |
| 188 var value = remoteObject.value; |
| 189 |
| 190 // Handle special numbers: NaN, Infinity, -Infinity, -0. |
| 191 if (type === "number") { |
| 192 switch (remoteObject.description) { |
| 193 case "NaN": |
| 194 case "Infinity": |
| 195 case "-Infinity": |
| 196 case "-0": |
| 197 value = remoteObject.description; |
| 198 break; |
| 199 } |
| 200 } |
| 201 |
| 202 return { |
| 203 value: value, |
| 204 objectId: remoteObject.objectId, |
| 205 type: type |
| 206 }; |
| 207 } |
| 208 |
| 209 /** |
182 * @constructor | 210 * @constructor |
183 * @extends {WebInspector.RemoteObject} | 211 * @extends {WebInspector.RemoteObject} |
184 * @param {!WebInspector.Target|undefined} target | 212 * @param {!WebInspector.Target|undefined} target |
185 * @param {string|undefined} objectId | 213 * @param {string|undefined} objectId |
186 * @param {string} type | 214 * @param {string} type |
187 * @param {string|undefined} subtype | 215 * @param {string|undefined} subtype |
188 * @param {*} value | 216 * @param {*} value |
189 * @param {string=} description | 217 * @param {string=} description |
190 * @param {!RuntimeAgent.ObjectPreview=} preview | 218 * @param {!RuntimeAgent.ObjectPreview=} preview |
191 */ | 219 */ |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 * @param {function(string=)} callback | 410 * @param {function(string=)} callback |
383 */ | 411 */ |
384 doSetObjectPropertyValue: function(result, name, callback) | 412 doSetObjectPropertyValue: function(result, name, callback) |
385 { | 413 { |
386 // This assignment may be for a regular (data) property, and for an accc
essor property (with getter/setter). | 414 // This assignment may be for a regular (data) property, and for an accc
essor property (with getter/setter). |
387 // Note the sensitive matter about accessor property: the property may b
e physically defined in some proto object, | 415 // Note the sensitive matter about accessor property: the property may b
e physically defined in some proto object, |
388 // but logically it is bound to the object in question. JavaScript passe
s this object to getters/setters, not the object | 416 // but logically it is bound to the object in question. JavaScript passe
s this object to getters/setters, not the object |
389 // where property was defined; so do we. | 417 // where property was defined; so do we. |
390 var setPropertyValueFunction = "function(a, b) { this[a] = b; }"; | 418 var setPropertyValueFunction = "function(a, b) { this[a] = b; }"; |
391 | 419 |
392 var argv = [{ value: name }, this._toCallArgument(result)] | 420 var argv = [{ value: name }, WebInspector.RemoteObject.toCallArgument(re
sult)] |
393 this._runtimeAgent.callFunctionOn(this._objectId, setPropertyValueFuncti
on, argv, true, undefined, undefined, propertySetCallback); | 421 this._runtimeAgent.callFunctionOn(this._objectId, setPropertyValueFuncti
on, argv, true, undefined, undefined, propertySetCallback); |
394 | 422 |
395 /** | 423 /** |
396 * @param {?Protocol.Error} error | 424 * @param {?Protocol.Error} error |
397 * @param {!RuntimeAgent.RemoteObject} result | 425 * @param {!RuntimeAgent.RemoteObject} result |
398 * @param {boolean=} wasThrown | 426 * @param {boolean=} wasThrown |
399 */ | 427 */ |
400 function propertySetCallback(error, result, wasThrown) | 428 function propertySetCallback(error, result, wasThrown) |
401 { | 429 { |
402 if (error || wasThrown) { | 430 if (error || wasThrown) { |
403 callback(error || result.description); | 431 callback(error || result.description); |
404 return; | 432 return; |
405 } | 433 } |
406 callback(); | 434 callback(); |
407 } | 435 } |
408 }, | 436 }, |
409 | 437 |
410 /** | 438 /** |
411 * @param {!RuntimeAgent.RemoteObject} object | |
412 * @return {!RuntimeAgent.CallArgument} | |
413 */ | |
414 _toCallArgument: function(object) | |
415 { | |
416 return { value: object.value, objectId: object.objectId, type: /** @type
{!RuntimeAgent.CallArgumentType.<string>} */ (object.type) }; | |
417 }, | |
418 | |
419 /** | |
420 * @param {function(?DOMAgent.NodeId)} callback | 439 * @param {function(?DOMAgent.NodeId)} callback |
421 */ | 440 */ |
422 pushNodeToFrontend: function(callback) | 441 pushNodeToFrontend: function(callback) |
423 { | 442 { |
424 if (this._objectId) | 443 if (this._objectId) |
425 this._domAgent.pushNodeToFrontend(this._objectId, callback); | 444 this._domAgent.pushNodeToFrontend(this._objectId, callback); |
426 else | 445 else |
427 callback(0); | 446 callback(0); |
428 }, | 447 }, |
429 | 448 |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 }, | 666 }, |
648 | 667 |
649 /** | 668 /** |
650 * @override | 669 * @override |
651 * @param {!RuntimeAgent.RemoteObject} result | 670 * @param {!RuntimeAgent.RemoteObject} result |
652 * @param {string} name | 671 * @param {string} name |
653 * @param {function(string=)} callback | 672 * @param {function(string=)} callback |
654 */ | 673 */ |
655 doSetObjectPropertyValue: function(result, name, callback) | 674 doSetObjectPropertyValue: function(result, name, callback) |
656 { | 675 { |
657 this._debuggerAgent.setVariableValue(this._scopeRef.number, name, this._
toCallArgument(result), this._scopeRef.callFrameId, this._scopeRef.functionId, s
etVariableValueCallback.bind(this)); | 676 this._debuggerAgent.setVariableValue(this._scopeRef.number, name, WebIns
pector.RemoteObject.toCallArgument(result), this._scopeRef.callFrameId, this._sc
opeRef.functionId, setVariableValueCallback.bind(this)); |
658 | 677 |
659 /** | 678 /** |
660 * @param {?Protocol.Error} error | 679 * @param {?Protocol.Error} error |
661 * @this {WebInspector.ScopeRemoteObject} | 680 * @this {WebInspector.ScopeRemoteObject} |
662 */ | 681 */ |
663 function setVariableValueCallback(error) | 682 function setVariableValueCallback(error) |
664 { | 683 { |
665 if (error) { | 684 if (error) { |
666 callback(error); | 685 callback(error); |
667 return; | 686 return; |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
973 result = functionDeclaration.apply(target, rawArgs); | 992 result = functionDeclaration.apply(target, rawArgs); |
974 } catch (e) { | 993 } catch (e) { |
975 result = null; | 994 result = null; |
976 } | 995 } |
977 | 996 |
978 callback(result); | 997 callback(result); |
979 }, | 998 }, |
980 | 999 |
981 __proto__: WebInspector.RemoteObject.prototype | 1000 __proto__: WebInspector.RemoteObject.prototype |
982 } | 1001 } |
OLD | NEW |