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 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 * @param {string} value | 244 * @param {string} value |
245 * @param {function(string=)} callback | 245 * @param {function(string=)} callback |
246 */ | 246 */ |
247 setPropertyValue: function(name, value, callback) | 247 setPropertyValue: function(name, value, callback) |
248 { | 248 { |
249 if (!this._objectId) { | 249 if (!this._objectId) { |
250 callback("Can't set a property of non-object."); | 250 callback("Can't set a property of non-object."); |
251 return; | 251 return; |
252 } | 252 } |
253 | 253 |
254 RuntimeAgent.evaluate.invoke({expression:value, doNotPauseOnExceptionsAn
dMuteConsole:true}, evaluatedCallback.bind(this)); | 254 RuntimeAgent.evaluate.invoke({expression: value, doNotPauseOnExceptionsA
ndMuteConsole: true, forceObjectId: true}, evaluatedCallback.bind(this)); |
255 | 255 |
256 /** | 256 /** |
257 * @param {?Protocol.Error} error | 257 * @param {?Protocol.Error} error |
258 * @param {RuntimeAgent.RemoteObject} result | 258 * @param {RuntimeAgent.RemoteObject} result |
259 * @param {boolean=} wasThrown | 259 * @param {boolean=} wasThrown |
260 */ | 260 */ |
261 function evaluatedCallback(error, result, wasThrown) | 261 function evaluatedCallback(error, result, wasThrown) |
262 { | 262 { |
263 if (error || wasThrown) { | 263 if (error || wasThrown) { |
264 callback(error || result.description); | 264 callback(error || result.description); |
(...skipping 13 matching lines...) Expand all Loading... |
278 * @param {function(string=)} callback | 278 * @param {function(string=)} callback |
279 */ | 279 */ |
280 doSetObjectPropertyValue: function(result, name, callback) | 280 doSetObjectPropertyValue: function(result, name, callback) |
281 { | 281 { |
282 // This assignment may be for a regular (data) property, and for an accc
essor property (with getter/setter). | 282 // This assignment may be for a regular (data) property, and for an accc
essor property (with getter/setter). |
283 // Note the sensitive matter about accessor property: the property may b
e physically defined in some proto object, | 283 // Note the sensitive matter about accessor property: the property may b
e physically defined in some proto object, |
284 // but logically it is bound to the object in question. JavaScript passe
s this object to getters/setters, not the object | 284 // but logically it is bound to the object in question. JavaScript passe
s this object to getters/setters, not the object |
285 // where property was defined; so do we. | 285 // where property was defined; so do we. |
286 var setPropertyValueFunction = "function(a, b) { this[a] = b; }"; | 286 var setPropertyValueFunction = "function(a, b) { this[a] = b; }"; |
287 | 287 |
288 // Special case for NaN, Infinity and -Infinity | |
289 if (result.type === "number" && typeof result.value !== "number") | |
290 setPropertyValueFunction = "function(a) { this[a] = " + result.descr
iption + "; }"; | |
291 | |
292 delete result.description; // Optimize on traffic. | 288 delete result.description; // Optimize on traffic. |
293 RuntimeAgent.callFunctionOn(this._objectId, setPropertyValueFunction, [{
value:name }, result], true, undefined, undefined, propertySetCallback.bind(thi
s)); | 289 RuntimeAgent.callFunctionOn(this._objectId, setPropertyValueFunction, [{
value: name }, result], true, undefined, undefined, undefined, propertySetCallb
ack.bind(this)); |
294 | 290 |
295 /** | 291 /** |
296 * @param {?Protocol.Error} error | 292 * @param {?Protocol.Error} error |
297 * @param {RuntimeAgent.RemoteObject} result | 293 * @param {RuntimeAgent.RemoteObject} result |
298 * @param {boolean=} wasThrown | 294 * @param {boolean=} wasThrown |
299 */ | 295 */ |
300 function propertySetCallback(error, result, wasThrown) | 296 function propertySetCallback(error, result, wasThrown) |
301 { | 297 { |
302 if (error || wasThrown) { | 298 if (error || wasThrown) { |
303 callback(error || result.description); | 299 callback(error || result.description); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 function mycallback(error, result, wasThrown) | 339 function mycallback(error, result, wasThrown) |
344 { | 340 { |
345 if (!callback) | 341 if (!callback) |
346 return; | 342 return; |
347 if (error) | 343 if (error) |
348 callback(null, false); | 344 callback(null, false); |
349 else | 345 else |
350 callback(WebInspector.RemoteObject.fromPayload(result), wasThrow
n); | 346 callback(WebInspector.RemoteObject.fromPayload(result), wasThrow
n); |
351 } | 347 } |
352 | 348 |
353 RuntimeAgent.callFunctionOn(this._objectId, functionDeclaration.toString
(), args, true, undefined, undefined, mycallback); | 349 RuntimeAgent.callFunctionOn(this._objectId, functionDeclaration.toString
(), args, true, undefined, undefined, undefined, mycallback); |
354 }, | 350 }, |
355 | 351 |
356 /** | 352 /** |
357 * @param {function(this:Object)} functionDeclaration | 353 * @param {function(this:Object)} functionDeclaration |
358 * @param {Array.<RuntimeAgent.CallArgument>|undefined} args | 354 * @param {Array.<RuntimeAgent.CallArgument>|undefined} args |
359 * @param {function(*)} callback | 355 * @param {function(*)} callback |
360 */ | 356 */ |
361 callFunctionJSON: function(functionDeclaration, args, callback) | 357 callFunctionJSON: function(functionDeclaration, args, callback) |
362 { | 358 { |
363 /** | 359 /** |
364 * @param {?Protocol.Error} error | 360 * @param {?Protocol.Error} error |
365 * @param {RuntimeAgent.RemoteObject} result | 361 * @param {RuntimeAgent.RemoteObject} result |
366 * @param {boolean=} wasThrown | 362 * @param {boolean=} wasThrown |
367 */ | 363 */ |
368 function mycallback(error, result, wasThrown) | 364 function mycallback(error, result, wasThrown) |
369 { | 365 { |
370 callback((error || wasThrown) ? null : result.value); | 366 callback((error || wasThrown) ? null : result.value); |
371 } | 367 } |
372 | 368 |
373 RuntimeAgent.callFunctionOn(this._objectId, functionDeclaration.toString
(), args, true, true, false, mycallback); | 369 RuntimeAgent.callFunctionOn(this._objectId, functionDeclaration.toString
(), args, true, true, false, false, mycallback); |
374 }, | 370 }, |
375 | 371 |
376 release: function() | 372 release: function() |
377 { | 373 { |
378 if (!this._objectId) | 374 if (!this._objectId) |
379 return; | 375 return; |
380 RuntimeAgent.releaseObject(this._objectId); | 376 RuntimeAgent.releaseObject(this._objectId); |
381 }, | 377 }, |
382 | 378 |
383 /** | 379 /** |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
531 }, | 527 }, |
532 | 528 |
533 /** | 529 /** |
534 * @override | 530 * @override |
535 * @param {RuntimeAgent.RemoteObject} result | 531 * @param {RuntimeAgent.RemoteObject} result |
536 * @param {string} name | 532 * @param {string} name |
537 * @param {function(string=)} callback | 533 * @param {function(string=)} callback |
538 */ | 534 */ |
539 doSetObjectPropertyValue: function(result, name, callback) | 535 doSetObjectPropertyValue: function(result, name, callback) |
540 { | 536 { |
541 var newValue; | 537 var newValue = { objectId: result.objectId, value: result.value }; |
542 | |
543 switch (result.type) { | |
544 case "undefined": | |
545 newValue = {}; | |
546 break; | |
547 case "object": | |
548 case "function": | |
549 newValue = { objectId: result.objectId }; | |
550 break; | |
551 default: | |
552 newValue = { value: result.value }; | |
553 } | |
554 | |
555 DebuggerAgent.setVariableValue(this._scopeRef.number, name, newValue, th
is._scopeRef.callFrameId, this._scopeRef.functionId, setVariableValueCallback.bi
nd(this)); | 538 DebuggerAgent.setVariableValue(this._scopeRef.number, name, newValue, th
is._scopeRef.callFrameId, this._scopeRef.functionId, setVariableValueCallback.bi
nd(this)); |
556 | 539 |
557 /** | 540 /** |
558 * @param {?Protocol.Error} error | 541 * @param {?Protocol.Error} error |
559 */ | 542 */ |
560 function setVariableValueCallback(error) | 543 function setVariableValueCallback(error) |
561 { | 544 { |
562 if (error) { | 545 if (error) { |
563 callback(error); | 546 callback(error); |
564 return; | 547 return; |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
808 }, | 791 }, |
809 | 792 |
810 /** | 793 /** |
811 * @return {number} | 794 * @return {number} |
812 */ | 795 */ |
813 arrayLength: function() | 796 arrayLength: function() |
814 { | 797 { |
815 return this._value instanceof Array ? this._value.length : 0; | 798 return this._value instanceof Array ? this._value.length : 0; |
816 } | 799 } |
817 } | 800 } |
OLD | NEW |