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

Side by Side Diff: Source/devtools/front_end/DebuggerModel.js

Issue 220903002: DevTools: wrap DebuggerAgent.Location with DebuggerModel.Location. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: All tests!!! Created 6 years, 8 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 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 12 matching lines...) Expand all
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
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 /** 31 /**
32 * @constructor 32 * @constructor
33 * @extends {WebInspector.Object} 33 * @extends {WebInspector.TargetAwareObject}
34 * @param {!WebInspector.Target} target 34 * @param {!WebInspector.Target} target
35 */ 35 */
36 WebInspector.DebuggerModel = function(target) 36 WebInspector.DebuggerModel = function(target)
37 { 37 {
38 WebInspector.TargetAwareObject.call(this, target);
39
38 target.registerDebuggerDispatcher(new WebInspector.DebuggerDispatcher(this)) ; 40 target.registerDebuggerDispatcher(new WebInspector.DebuggerDispatcher(this)) ;
39 this._agent = target.debuggerAgent(); 41 this._agent = target.debuggerAgent();
40 this._target = target;
41 42
42 /** @type {?WebInspector.DebuggerPausedDetails} */ 43 /** @type {?WebInspector.DebuggerPausedDetails} */
43 this._debuggerPausedDetails = null; 44 this._debuggerPausedDetails = null;
44 /** @type {!Object.<string, !WebInspector.Script>} */ 45 /** @type {!Object.<string, !WebInspector.Script>} */
45 this._scripts = {}; 46 this._scripts = {};
46 /** @type {!StringMap.<!Array.<!WebInspector.Script>>} */ 47 /** @type {!StringMap.<!Array.<!WebInspector.Script>>} */
47 this._scriptsBySourceURL = new StringMap(); 48 this._scriptsBySourceURL = new StringMap();
48 49
49 this._breakpointsActive = true; 50 this._breakpointsActive = true;
50 51
(...skipping 11 matching lines...) Expand all
62 * Keep these in sync with WebCore::ScriptDebugServer 63 * Keep these in sync with WebCore::ScriptDebugServer
63 * 64 *
64 * @enum {string} 65 * @enum {string}
65 */ 66 */
66 WebInspector.DebuggerModel.PauseOnExceptionsState = { 67 WebInspector.DebuggerModel.PauseOnExceptionsState = {
67 DontPauseOnExceptions : "none", 68 DontPauseOnExceptions : "none",
68 PauseOnAllExceptions : "all", 69 PauseOnAllExceptions : "all",
69 PauseOnUncaughtExceptions: "uncaught" 70 PauseOnUncaughtExceptions: "uncaught"
70 }; 71 };
71 72
72 /**
73 * @constructor
74 * @implements {WebInspector.RawLocation}
75 * @param {string} scriptId
76 * @param {number} lineNumber
77 * @param {number} columnNumber
78 */
79 WebInspector.DebuggerModel.Location = function(scriptId, lineNumber, columnNumbe r)
80 {
81 this.scriptId = scriptId;
82 this.lineNumber = lineNumber;
83 this.columnNumber = columnNumber;
84 }
85
86 WebInspector.DebuggerModel.Events = { 73 WebInspector.DebuggerModel.Events = {
87 DebuggerWasEnabled: "DebuggerWasEnabled", 74 DebuggerWasEnabled: "DebuggerWasEnabled",
88 DebuggerWasDisabled: "DebuggerWasDisabled", 75 DebuggerWasDisabled: "DebuggerWasDisabled",
89 DebuggerPaused: "DebuggerPaused", 76 DebuggerPaused: "DebuggerPaused",
90 DebuggerResumed: "DebuggerResumed", 77 DebuggerResumed: "DebuggerResumed",
91 ParsedScriptSource: "ParsedScriptSource", 78 ParsedScriptSource: "ParsedScriptSource",
92 FailedToParseScriptSource: "FailedToParseScriptSource", 79 FailedToParseScriptSource: "FailedToParseScriptSource",
93 BreakpointResolved: "BreakpointResolved", 80 BreakpointResolved: "BreakpointResolved",
94 GlobalObjectCleared: "GlobalObjectCleared", 81 GlobalObjectCleared: "GlobalObjectCleared",
95 CallFrameSelected: "CallFrameSelected", 82 CallFrameSelected: "CallFrameSelected",
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 var enabled = WebInspector.settings.enableAsyncStackTraces.get(); 171 var enabled = WebInspector.settings.enableAsyncStackTraces.get();
185 this._agent.setAsyncCallStackDepth(enabled ? maxAsyncStackChainDepth : 0 ); 172 this._agent.setAsyncCallStackDepth(enabled ? maxAsyncStackChainDepth : 0 );
186 }, 173 },
187 174
188 _debuggerWasDisabled: function() 175 _debuggerWasDisabled: function()
189 { 176 {
190 this._debuggerEnabled = false; 177 this._debuggerEnabled = false;
191 this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.Debugger WasDisabled); 178 this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.Debugger WasDisabled);
192 }, 179 },
193 180
194 /**
195 * @param {!WebInspector.DebuggerModel.Location} rawLocation
196 */
197 continueToLocation: function(rawLocation)
198 {
199 this._agent.continueToLocation(rawLocation);
200 },
201
202 stepInto: function() 181 stepInto: function()
203 { 182 {
204 /** 183 /**
205 * @this {WebInspector.DebuggerModel} 184 * @this {WebInspector.DebuggerModel}
206 */ 185 */
207 function callback() 186 function callback()
208 { 187 {
209 this._agent.stepInto(); 188 this._agent.stepInto();
210 } 189 }
211 this._agent.setOverlayMessage(undefined, callback.bind(this)); 190 this._agent.setOverlayMessage(undefined, callback.bind(this));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 this._agent.setOverlayMessage(undefined, callback.bind(this)); 226 this._agent.setOverlayMessage(undefined, callback.bind(this));
248 }, 227 },
249 228
250 /** 229 /**
251 * @param {!WebInspector.DebuggerModel.Location} rawLocation 230 * @param {!WebInspector.DebuggerModel.Location} rawLocation
252 * @param {string} condition 231 * @param {string} condition
253 * @param {function(?DebuggerAgent.BreakpointId, !Array.<!WebInspector.Debug gerModel.Location>):void=} callback 232 * @param {function(?DebuggerAgent.BreakpointId, !Array.<!WebInspector.Debug gerModel.Location>):void=} callback
254 */ 233 */
255 setBreakpointByScriptLocation: function(rawLocation, condition, callback) 234 setBreakpointByScriptLocation: function(rawLocation, condition, callback)
256 { 235 {
257 var script = this.scriptForId(rawLocation.scriptId); 236 var script = rawLocation.script();
258 if (script.sourceURL) 237 if (script.sourceURL)
259 this.setBreakpointByURL(script.sourceURL, rawLocation.lineNumber, ra wLocation.columnNumber, condition, callback); 238 this.setBreakpointByURL(script.sourceURL, rawLocation.lineNumber, ra wLocation.columnNumber, condition, callback);
260 else 239 else
261 this.setBreakpointBySourceId(rawLocation, condition, callback); 240 this.setBreakpointBySourceId(rawLocation, condition, callback);
262 }, 241 },
263 242
264 /** 243 /**
265 * @param {string} url 244 * @param {string} url
266 * @param {number} lineNumber 245 * @param {number} lineNumber
267 * @param {number=} columnNumber 246 * @param {number=} columnNumber
268 * @param {string=} condition 247 * @param {string=} condition
269 * @param {function(?DebuggerAgent.BreakpointId, !Array.<!WebInspector.Debug gerModel.Location>)=} callback 248 * @param {function(?DebuggerAgent.BreakpointId, !Array.<!WebInspector.Debug gerModel.Location>)=} callback
270 */ 249 */
271 setBreakpointByURL: function(url, lineNumber, columnNumber, condition, callb ack) 250 setBreakpointByURL: function(url, lineNumber, columnNumber, condition, callb ack)
272 { 251 {
273 // Adjust column if needed. 252 // Adjust column if needed.
274 var minColumnNumber = 0; 253 var minColumnNumber = 0;
275 var scripts = this._scriptsBySourceURL.get(url) || []; 254 var scripts = this._scriptsBySourceURL.get(url) || [];
276 for (var i = 0, l = scripts.length; i < l; ++i) { 255 for (var i = 0, l = scripts.length; i < l; ++i) {
277 var script = scripts[i]; 256 var script = scripts[i];
278 if (lineNumber === script.lineOffset) 257 if (lineNumber === script.lineOffset)
279 minColumnNumber = minColumnNumber ? Math.min(minColumnNumber, sc ript.columnOffset) : script.columnOffset; 258 minColumnNumber = minColumnNumber ? Math.min(minColumnNumber, sc ript.columnOffset) : script.columnOffset;
280 } 259 }
281 columnNumber = Math.max(columnNumber, minColumnNumber); 260 columnNumber = Math.max(columnNumber, minColumnNumber);
282 261
262 var target = this.target();
283 /** 263 /**
284 * @param {?Protocol.Error} error 264 * @param {?Protocol.Error} error
285 * @param {!DebuggerAgent.BreakpointId} breakpointId 265 * @param {!DebuggerAgent.BreakpointId} breakpointId
286 * @param {!Array.<!DebuggerAgent.Location>} locations 266 * @param {!Array.<!DebuggerAgent.Location>} locations
287 */ 267 */
288 function didSetBreakpoint(error, breakpointId, locations) 268 function didSetBreakpoint(error, breakpointId, locations)
289 { 269 {
290 if (callback) { 270 if (callback) {
291 var rawLocations = /** @type {!Array.<!WebInspector.DebuggerMode l.Location>} */ (locations); 271 var rawLocations = locations.map(WebInspector.DebuggerModel.Loca tion.fromPayload.bind(WebInspector.DebuggerModel.Location, target));
292 callback(error ? null : breakpointId, rawLocations); 272 callback(error ? null : breakpointId, rawLocations);
293 } 273 }
294 } 274 }
295 this._agent.setBreakpointByUrl(lineNumber, url, undefined, columnNumber, condition, undefined, didSetBreakpoint); 275 this._agent.setBreakpointByUrl(lineNumber, url, undefined, columnNumber, condition, undefined, didSetBreakpoint);
296 WebInspector.userMetrics.ScriptsBreakpointSet.record(); 276 WebInspector.userMetrics.ScriptsBreakpointSet.record();
297 }, 277 },
298 278
299 /** 279 /**
300 * @param {!WebInspector.DebuggerModel.Location} rawLocation 280 * @param {!WebInspector.DebuggerModel.Location} rawLocation
301 * @param {string} condition 281 * @param {string} condition
302 * @param {function(?DebuggerAgent.BreakpointId, !Array.<!WebInspector.Debug gerModel.Location>)=} callback 282 * @param {function(?DebuggerAgent.BreakpointId, !Array.<!WebInspector.Debug gerModel.Location>)=} callback
303 */ 283 */
304 setBreakpointBySourceId: function(rawLocation, condition, callback) 284 setBreakpointBySourceId: function(rawLocation, condition, callback)
305 { 285 {
286 var target = this.target();
287
306 /** 288 /**
307 * @param {?Protocol.Error} error 289 * @param {?Protocol.Error} error
308 * @param {!DebuggerAgent.BreakpointId} breakpointId 290 * @param {!DebuggerAgent.BreakpointId} breakpointId
309 * @param {!DebuggerAgent.Location} actualLocation 291 * @param {!DebuggerAgent.Location} actualLocation
310 */ 292 */
311 function didSetBreakpoint(error, breakpointId, actualLocation) 293 function didSetBreakpoint(error, breakpointId, actualLocation)
312 { 294 {
313 if (callback) { 295 if (callback) {
314 var rawLocation = /** @type {!WebInspector.DebuggerModel.Locatio n} */ (actualLocation); 296 var location = WebInspector.DebuggerModel.Location.fromPayload(t arget, actualLocation);
315 callback(error ? null : breakpointId, [rawLocation]); 297 callback(error ? null : breakpointId, [location]);
316 } 298 }
317 } 299 }
318 this._agent.setBreakpoint(rawLocation, condition, didSetBreakpoint); 300 this._agent.setBreakpoint(rawLocation.payload(), condition, didSetBreakp oint);
319 WebInspector.userMetrics.ScriptsBreakpointSet.record(); 301 WebInspector.userMetrics.ScriptsBreakpointSet.record();
320 }, 302 },
321 303
322 /** 304 /**
323 * @param {!DebuggerAgent.BreakpointId} breakpointId 305 * @param {!DebuggerAgent.BreakpointId} breakpointId
324 * @param {function()=} callback 306 * @param {function()=} callback
325 */ 307 */
326 removeBreakpoint: function(breakpointId, callback) 308 removeBreakpoint: function(breakpointId, callback)
327 { 309 {
328 this._agent.removeBreakpoint(breakpointId, innerCallback); 310 this._agent.removeBreakpoint(breakpointId, innerCallback);
329 311
330 /** 312 /**
331 * @param {?Protocol.Error} error 313 * @param {?Protocol.Error} error
332 */ 314 */
333 function innerCallback(error) 315 function innerCallback(error)
334 { 316 {
335 if (error) 317 if (error)
336 console.error("Failed to remove breakpoint: " + error); 318 console.error("Failed to remove breakpoint: " + error);
337 if (callback) 319 if (callback)
338 callback(); 320 callback();
339 } 321 }
340 }, 322 },
341 323
342 /** 324 /**
343 * @param {!DebuggerAgent.BreakpointId} breakpointId 325 * @param {!DebuggerAgent.BreakpointId} breakpointId
344 * @param {!DebuggerAgent.Location} location 326 * @param {!DebuggerAgent.Location} location
345 */ 327 */
346 _breakpointResolved: function(breakpointId, location) 328 _breakpointResolved: function(breakpointId, location)
347 { 329 {
348 this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.Breakpoi ntResolved, {breakpointId: breakpointId, location: location}); 330 this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.Breakpoi ntResolved, {breakpointId: breakpointId, location: WebInspector.DebuggerModel.Lo cation.fromPayload(this.target(), location)});
349 }, 331 },
350 332
351 _globalObjectCleared: function() 333 _globalObjectCleared: function()
352 { 334 {
353 this._setDebuggerPausedDetails(null); 335 this._setDebuggerPausedDetails(null);
354 this._reset(); 336 this._reset();
355 this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.GlobalOb jectCleared); 337 this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.GlobalOb jectCleared);
356 }, 338 },
357 339
358 _reset: function() 340 _reset: function()
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 436
455 /** 437 /**
456 * @param {!Array.<!DebuggerAgent.CallFrame>} callFrames 438 * @param {!Array.<!DebuggerAgent.CallFrame>} callFrames
457 * @param {string} reason 439 * @param {string} reason
458 * @param {!Object|undefined} auxData 440 * @param {!Object|undefined} auxData
459 * @param {!Array.<string>} breakpointIds 441 * @param {!Array.<string>} breakpointIds
460 * @param {!DebuggerAgent.StackTrace=} asyncStackTrace 442 * @param {!DebuggerAgent.StackTrace=} asyncStackTrace
461 */ 443 */
462 _pausedScript: function(callFrames, reason, auxData, breakpointIds, asyncSta ckTrace) 444 _pausedScript: function(callFrames, reason, auxData, breakpointIds, asyncSta ckTrace)
463 { 445 {
464 this._setDebuggerPausedDetails(new WebInspector.DebuggerPausedDetails(th is._target, callFrames, reason, auxData, breakpointIds, asyncStackTrace)); 446 this._setDebuggerPausedDetails(new WebInspector.DebuggerPausedDetails(th is.target(), callFrames, reason, auxData, breakpointIds, asyncStackTrace));
465 }, 447 },
466 448
467 _resumedScript: function() 449 _resumedScript: function()
468 { 450 {
469 this._setDebuggerPausedDetails(null); 451 this._setDebuggerPausedDetails(null);
470 this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.Debugger Resumed); 452 this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.Debugger Resumed);
471 }, 453 },
472 454
473 /** 455 /**
474 * @param {!DebuggerAgent.ScriptId} scriptId 456 * @param {!DebuggerAgent.ScriptId} scriptId
475 * @param {string} sourceURL 457 * @param {string} sourceURL
476 * @param {number} startLine 458 * @param {number} startLine
477 * @param {number} startColumn 459 * @param {number} startColumn
478 * @param {number} endLine 460 * @param {number} endLine
479 * @param {number} endColumn 461 * @param {number} endColumn
480 * @param {boolean} isContentScript 462 * @param {boolean} isContentScript
481 * @param {string=} sourceMapURL 463 * @param {string=} sourceMapURL
482 * @param {boolean=} hasSourceURL 464 * @param {boolean=} hasSourceURL
483 */ 465 */
484 _parsedScriptSource: function(scriptId, sourceURL, startLine, startColumn, e ndLine, endColumn, isContentScript, sourceMapURL, hasSourceURL) 466 _parsedScriptSource: function(scriptId, sourceURL, startLine, startColumn, e ndLine, endColumn, isContentScript, sourceMapURL, hasSourceURL)
485 { 467 {
486 var script = new WebInspector.Script(scriptId, sourceURL, startLine, sta rtColumn, endLine, endColumn, isContentScript, sourceMapURL, hasSourceURL); 468 var script = new WebInspector.Script(this.target(), scriptId, sourceURL, startLine, startColumn, endLine, endColumn, isContentScript, sourceMapURL, hasS ourceURL);
487 this._registerScript(script); 469 this._registerScript(script);
488 this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.ParsedSc riptSource, script); 470 this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.ParsedSc riptSource, script);
489 }, 471 },
490 472
491 /** 473 /**
492 * @param {!WebInspector.Script} script 474 * @param {!WebInspector.Script} script
493 */ 475 */
494 _registerScript: function(script) 476 _registerScript: function(script)
495 { 477 {
496 this._scripts[script.scriptId] = script; 478 this._scripts[script.scriptId] = script;
(...skipping 11 matching lines...) Expand all
508 /** 490 /**
509 * @param {!WebInspector.Script} script 491 * @param {!WebInspector.Script} script
510 * @param {number} lineNumber 492 * @param {number} lineNumber
511 * @param {number} columnNumber 493 * @param {number} columnNumber
512 * @return {?WebInspector.DebuggerModel.Location} 494 * @return {?WebInspector.DebuggerModel.Location}
513 */ 495 */
514 createRawLocation: function(script, lineNumber, columnNumber) 496 createRawLocation: function(script, lineNumber, columnNumber)
515 { 497 {
516 if (script.sourceURL) 498 if (script.sourceURL)
517 return this.createRawLocationByURL(script.sourceURL, lineNumber, col umnNumber) 499 return this.createRawLocationByURL(script.sourceURL, lineNumber, col umnNumber)
518 return new WebInspector.DebuggerModel.Location(script.scriptId, lineNumb er, columnNumber); 500 return new WebInspector.DebuggerModel.Location(this.target(), script.scr iptId, lineNumber, columnNumber);
519 }, 501 },
520 502
521 /** 503 /**
522 * @param {string} sourceURL 504 * @param {string} sourceURL
523 * @param {number} lineNumber 505 * @param {number} lineNumber
524 * @param {number} columnNumber 506 * @param {number} columnNumber
525 * @return {?WebInspector.DebuggerModel.Location} 507 * @return {?WebInspector.DebuggerModel.Location}
526 */ 508 */
527 createRawLocationByURL: function(sourceURL, lineNumber, columnNumber) 509 createRawLocationByURL: function(sourceURL, lineNumber, columnNumber)
528 { 510 {
529 var closestScript = null; 511 var closestScript = null;
530 var scripts = this._scriptsBySourceURL.get(sourceURL) || []; 512 var scripts = this._scriptsBySourceURL.get(sourceURL) || [];
531 for (var i = 0, l = scripts.length; i < l; ++i) { 513 for (var i = 0, l = scripts.length; i < l; ++i) {
532 var script = scripts[i]; 514 var script = scripts[i];
533 if (!closestScript) 515 if (!closestScript)
534 closestScript = script; 516 closestScript = script;
535 if (script.lineOffset > lineNumber || (script.lineOffset === lineNum ber && script.columnOffset > columnNumber)) 517 if (script.lineOffset > lineNumber || (script.lineOffset === lineNum ber && script.columnOffset > columnNumber))
536 continue; 518 continue;
537 if (script.endLine < lineNumber || (script.endLine === lineNumber && script.endColumn <= columnNumber)) 519 if (script.endLine < lineNumber || (script.endLine === lineNumber && script.endColumn <= columnNumber))
538 continue; 520 continue;
539 closestScript = script; 521 closestScript = script;
540 break; 522 break;
541 } 523 }
542 return closestScript ? new WebInspector.DebuggerModel.Location(closestSc ript.scriptId, lineNumber, columnNumber) : null; 524 return closestScript ? new WebInspector.DebuggerModel.Location(this.targ et(), closestScript.scriptId, lineNumber, columnNumber) : null;
543 }, 525 },
544 526
545 /** 527 /**
546 * @return {boolean} 528 * @return {boolean}
547 */ 529 */
548 isPaused: function() 530 isPaused: function()
549 { 531 {
550 return !!this.debuggerPausedDetails(); 532 return !!this.debuggerPausedDetails();
551 }, 533 },
552 534
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 * @param {boolean=} wasThrown 568 * @param {boolean=} wasThrown
587 * @this {WebInspector.DebuggerModel} 569 * @this {WebInspector.DebuggerModel}
588 */ 570 */
589 function didEvaluate(result, wasThrown) 571 function didEvaluate(result, wasThrown)
590 { 572 {
591 if (!result) 573 if (!result)
592 callback(null, false); 574 callback(null, false);
593 else if (returnByValue) 575 else if (returnByValue)
594 callback(null, !!wasThrown, wasThrown ? null : result); 576 callback(null, !!wasThrown, wasThrown ? null : result);
595 else 577 else
596 callback(this._target.runtimeModel.createRemoteObject(result), ! !wasThrown); 578 callback(this.target().runtimeModel.createRemoteObject(result), !!wasThrown);
597 579
598 if (objectGroup === "console") 580 if (objectGroup === "console")
599 this.dispatchEventToListeners(WebInspector.DebuggerModel.Events. ConsoleCommandEvaluatedInSelectedCallFrame); 581 this.dispatchEventToListeners(WebInspector.DebuggerModel.Events. ConsoleCommandEvaluatedInSelectedCallFrame);
600 } 582 }
601 583
602 this.selectedCallFrame().evaluate(code, objectGroup, includeCommandLineA PI, doNotPauseOnExceptionsAndMuteConsole, returnByValue, generatePreview, didEva luate.bind(this)); 584 this.selectedCallFrame().evaluate(code, objectGroup, includeCommandLineA PI, doNotPauseOnExceptionsAndMuteConsole, returnByValue, generatePreview, didEva luate.bind(this));
603 }, 585 },
604 586
605 /** 587 /**
606 * @param {function(!Object)} callback 588 * @param {function(!Object)} callback
(...skipping 11 matching lines...) Expand all
618 function propertiesCollected(properties) 600 function propertiesCollected(properties)
619 { 601 {
620 for (var i = 0; properties && i < properties.length; ++i) 602 for (var i = 0; properties && i < properties.length; ++i)
621 result[properties[i].name] = true; 603 result[properties[i].name] = true;
622 if (--pendingRequests == 0) 604 if (--pendingRequests == 0)
623 callback(result); 605 callback(result);
624 } 606 }
625 607
626 for (var i = 0; i < selectedCallFrame.scopeChain.length; ++i) { 608 for (var i = 0; i < selectedCallFrame.scopeChain.length; ++i) {
627 var scope = selectedCallFrame.scopeChain[i]; 609 var scope = selectedCallFrame.scopeChain[i];
628 var object = this._target.runtimeModel.createRemoteObject(scope.obje ct); 610 var object = this.target().runtimeModel.createRemoteObject(scope.obj ect);
629 pendingRequests++; 611 pendingRequests++;
630 object.getAllProperties(false, propertiesCollected); 612 object.getAllProperties(false, propertiesCollected);
631 } 613 }
632 }, 614 },
633 615
634 /** 616 /**
635 * @param {boolean} active 617 * @param {boolean} active
636 */ 618 */
637 setBreakpointsActive: function(active) 619 setBreakpointsActive: function(active)
638 { 620 {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
691 673
692 applySkipStackFrameSettings: function() 674 applySkipStackFrameSettings: function()
693 { 675 {
694 if (!WebInspector.experimentsSettings.frameworksDebuggingSupport.isEnabl ed()) 676 if (!WebInspector.experimentsSettings.frameworksDebuggingSupport.isEnabl ed())
695 return; 677 return;
696 var settings = WebInspector.settings; 678 var settings = WebInspector.settings;
697 var patternParameter = settings.skipStackFramesSwitch.get() ? settings.s kipStackFramesPattern.get() : undefined; 679 var patternParameter = settings.skipStackFramesSwitch.get() ? settings.s kipStackFramesPattern.get() : undefined;
698 this._agent.skipStackFrames(patternParameter); 680 this._agent.skipStackFrames(patternParameter);
699 }, 681 },
700 682
701 __proto__: WebInspector.Object.prototype 683 /**
684 * @param {!WebInspector.RemoteObject} remoteObject
685 * @param {function(?DebuggerAgent.FunctionDetails)} callback
686 */
687 functionDetails: function(remoteObject, callback)
688 {
689 this._agent.getFunctionDetails(remoteObject.objectId, didGetDetails);
690
691 /**
692 * @param {?Protocol.Error} error
693 * @param {!DebuggerAgent.FunctionDetails} response
694 */
695 function didGetDetails(error, response)
696 {
697 if (error) {
698 console.error(error);
699 callback(null);
700 return;
701 }
702 callback(response);
703 }
704 },
705
706 __proto__: WebInspector.TargetAwareObject.prototype
702 } 707 }
703 708
704 WebInspector.DebuggerEventTypes = { 709 WebInspector.DebuggerEventTypes = {
705 JavaScriptPause: 0, 710 JavaScriptPause: 0,
706 JavaScriptBreakpoint: 1, 711 JavaScriptBreakpoint: 1,
707 NativeBreakpoint: 2 712 NativeBreakpoint: 2
708 }; 713 };
709 714
710 /** 715 /**
711 * @constructor 716 * @constructor
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
778 * @param {!DebuggerAgent.Location} location 783 * @param {!DebuggerAgent.Location} location
779 */ 784 */
780 breakpointResolved: function(breakpointId, location) 785 breakpointResolved: function(breakpointId, location)
781 { 786 {
782 this._debuggerModel._breakpointResolved(breakpointId, location); 787 this._debuggerModel._breakpointResolved(breakpointId, location);
783 } 788 }
784 } 789 }
785 790
786 /** 791 /**
787 * @constructor 792 * @constructor
793 * @implements {WebInspector.RawLocation}
794 * @extends {WebInspector.TargetAware}
795 * @param {!WebInspector.Target} target
796 * @param {string} scriptId
797 * @param {number} lineNumber
798 * @param {number=} columnNumber
799 */
800 WebInspector.DebuggerModel.Location = function(target, scriptId, lineNumber, col umnNumber)
801 {
802 WebInspector.TargetAware.call(this, target);
803 this._debuggerModel = target.debuggerModel;
804 this.scriptId = scriptId;
805 this.lineNumber = lineNumber;
806 this.columnNumber = columnNumber;
807 }
808
809 /**
810 * @param {!WebInspector.Target} target
811 * @param {!DebuggerAgent.Location} payload
812 */
813 WebInspector.DebuggerModel.Location.fromPayload = function(target, payload)
814 {
815 return new WebInspector.DebuggerModel.Location(target, payload.scriptId, pay load.lineNumber, payload.columnNumber);
816 }
817
818 WebInspector.DebuggerModel.Location.prototype = {
819 /**
820 * @return {!DebuggerAgent.Location}
821 */
822 payload: function()
823 {
824 return { scriptId: this.scriptId, lineNumber: this.lineNumber, columnNum ber: this.columnNumber };
825 },
826
827 /**
828 * @return {!WebInspector.Script}
829 */
830 script: function()
831 {
832 return this._debuggerModel.scriptForId(this.scriptId);
833 },
834
835 /**
836 * @param {function(!WebInspector.UILocation):(boolean|undefined)} updateDel egate
837 * @return {!WebInspector.Script.Location}
838 */
839 createLiveLocation: function(updateDelegate)
840 {
841 return this._debuggerModel.createLiveLocation(this, updateDelegate);
842 },
843
844 /**
845 * @return {?WebInspector.UILocation}
846 */
847 toUILocation: function()
848 {
849 return this._debuggerModel.rawLocationToUILocation(this);
850 },
851
852 continueToLocation: function()
853 {
854 this._debuggerModel._agent.continueToLocation(this.payload());
855 },
856
857 __proto__: WebInspector.TargetAware.prototype
858 }
859
860 /**
861 * @constructor
788 * @extends {WebInspector.TargetAware} 862 * @extends {WebInspector.TargetAware}
789 * @param {!WebInspector.Target} target 863 * @param {!WebInspector.Target} target
790 * @param {!WebInspector.Script} script 864 * @param {!WebInspector.Script} script
791 * @param {!DebuggerAgent.CallFrame} payload 865 * @param {!DebuggerAgent.CallFrame} payload
792 * @param {boolean=} isAsync 866 * @param {boolean=} isAsync
793 */ 867 */
794 WebInspector.DebuggerModel.CallFrame = function(target, script, payload, isAsync ) 868 WebInspector.DebuggerModel.CallFrame = function(target, script, payload, isAsync )
795 { 869 {
796 WebInspector.TargetAware.call(this, target); 870 WebInspector.TargetAware.call(this, target);
797 this._debuggerAgent = target.debuggerModel._agent; 871 this._debuggerAgent = target.debuggerModel._agent;
798 this._script = script; 872 this._script = script;
799 this._payload = payload; 873 this._payload = payload;
800 /** @type {!Array.<!WebInspector.Script.Location>} */ 874 /** @type {!Array.<!WebInspector.Script.Location>} */
801 this._locations = []; 875 this._liveLocations = [];
802 this._isAsync = isAsync; 876 this._isAsync = isAsync;
877 this._location = WebInspector.DebuggerModel.Location.fromPayload(target, pay load.location);
803 } 878 }
804 879
805 /** 880 /**
806 * @param {!WebInspector.Target} target 881 * @param {!WebInspector.Target} target
807 * @param {!Array.<!DebuggerAgent.CallFrame>} callFrames 882 * @param {!Array.<!DebuggerAgent.CallFrame>} callFrames
808 * @param {boolean=} isAsync 883 * @param {boolean=} isAsync
809 * @return {!Array.<!WebInspector.DebuggerModel.CallFrame>} 884 * @return {!Array.<!WebInspector.DebuggerModel.CallFrame>}
810 */ 885 */
811 WebInspector.DebuggerModel.CallFrame.fromPayloadArray = function(target, callFra mes, isAsync) 886 WebInspector.DebuggerModel.CallFrame.fromPayloadArray = function(target, callFra mes, isAsync)
812 { 887 {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 * @return {string} 949 * @return {string}
875 */ 950 */
876 get functionName() 951 get functionName()
877 { 952 {
878 return this._payload.functionName; 953 return this._payload.functionName;
879 }, 954 },
880 955
881 /** 956 /**
882 * @return {!WebInspector.DebuggerModel.Location} 957 * @return {!WebInspector.DebuggerModel.Location}
883 */ 958 */
884 get location() 959 location: function()
885 { 960 {
886 var rawLocation = /** @type {!WebInspector.DebuggerModel.Location} */ (t his._payload.location); 961 return this._location;
887 return rawLocation;
888 }, 962 },
889 963
890 /** 964 /**
891 * @return {boolean} 965 * @return {boolean}
892 */ 966 */
893 isAsync: function() 967 isAsync: function()
894 { 968 {
895 return !!this._isAsync; 969 return !!this._isAsync;
896 }, 970 },
897 971
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 } 1018 }
945 this._debuggerAgent.restartFrame(this._payload.callFrameId, protocolCall back.bind(this)); 1019 this._debuggerAgent.restartFrame(this._payload.callFrameId, protocolCall back.bind(this));
946 }, 1020 },
947 1021
948 /** 1022 /**
949 * @param {function(!WebInspector.UILocation):(boolean|undefined)} updateDel egate 1023 * @param {function(!WebInspector.UILocation):(boolean|undefined)} updateDel egate
950 * @return {!WebInspector.LiveLocation} 1024 * @return {!WebInspector.LiveLocation}
951 */ 1025 */
952 createLiveLocation: function(updateDelegate) 1026 createLiveLocation: function(updateDelegate)
953 { 1027 {
954 var location = this._script.createLiveLocation(this.location, updateDele gate); 1028 var liveLocation = this._location.createLiveLocation(updateDelegate);
955 this._locations.push(location); 1029 this._liveLocations.push(liveLocation);
956 return location; 1030 return liveLocation;
957 }, 1031 },
958 1032
959 dispose: function() 1033 dispose: function()
960 { 1034 {
961 for (var i = 0; i < this._locations.length; ++i) 1035 for (var i = 0; i < this._liveLocations.length; ++i)
962 this._locations[i].dispose(); 1036 this._liveLocations[i].dispose();
963 this._locations = []; 1037 this._liveLocations = [];
964 }, 1038 },
965 1039
966 __proto__: WebInspector.TargetAware.prototype 1040 __proto__: WebInspector.TargetAware.prototype
967 } 1041 }
968 1042
969 /** 1043 /**
970 * @constructor 1044 * @constructor
971 * @param {!Array.<!WebInspector.DebuggerModel.CallFrame>} callFrames 1045 * @param {!Array.<!WebInspector.DebuggerModel.CallFrame>} callFrames
972 * @param {?WebInspector.DebuggerModel.StackTrace} asyncStackTrace 1046 * @param {?WebInspector.DebuggerModel.StackTrace} asyncStackTrace
973 * @param {string=} description 1047 * @param {string=} description
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1045 this.asyncStackTrace.dispose(); 1119 this.asyncStackTrace.dispose();
1046 }, 1120 },
1047 1121
1048 __proto__: WebInspector.TargetAware.prototype 1122 __proto__: WebInspector.TargetAware.prototype
1049 } 1123 }
1050 1124
1051 /** 1125 /**
1052 * @type {!WebInspector.DebuggerModel} 1126 * @type {!WebInspector.DebuggerModel}
1053 */ 1127 */
1054 WebInspector.debuggerModel; 1128 WebInspector.debuggerModel;
OLDNEW
« no previous file with comments | « Source/devtools/front_end/DOMModel.js ('k') | Source/devtools/front_end/DefaultScriptMapping.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698