15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2010 Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions of source code must retain the above copyright 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.Object} 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DebuggerModel = function() 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorBackend.registerDebuggerDispatcher(new WebInspector.DebuggerDispatcher(this)); 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** @type {?WebInspector.DebuggerPausedDetails} */ 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._debuggerPausedDetails = null; 41a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** @type {!Object.<string, !WebInspector.Script>} */ 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._scripts = {}; 43521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** @type {!Object.<!string, !Array.<!WebInspector.Script>>} */ 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._scriptsBySourceURL = {}; 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._canSetScriptSource = false; 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._breakpointsActive = true; 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.settings.pauseOnExceptionStateString = WebInspector.settings.createSetting("pauseOnExceptionStateString", WebInspector.DebuggerModel.PauseOnExceptionsState.DontPauseOnExceptions); 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.settings.pauseOnExceptionStateString.addChangeListener(this._pauseOnExceptionStateChanged, this); 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) WebInspector.settings.enableAsyncStackTraces.addChangeListener(this._asyncStackTracesStateChanged, this); 53a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 5453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.enableDebugger(); 55f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 56f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) WebInspector.DebuggerModel.applySkipStackFrameSettings(); 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Keep these in sync with WebCore::ScriptDebugServer 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DebuggerModel.PauseOnExceptionsState = { 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DontPauseOnExceptions : "none", 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PauseOnAllExceptions : "all", 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PauseOnUncaughtExceptions: "uncaught" 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @implements {WebInspector.RawLocation} 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} scriptId 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} lineNumber 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} columnNumber 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DebuggerModel.Location = function(scriptId, lineNumber, columnNumber) 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.scriptId = scriptId; 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.lineNumber = lineNumber; 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.columnNumber = columnNumber; 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DebuggerModel.Events = { 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerWasEnabled: "DebuggerWasEnabled", 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerWasDisabled: "DebuggerWasDisabled", 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerPaused: "DebuggerPaused", 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerResumed: "DebuggerResumed", 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ParsedScriptSource: "ParsedScriptSource", 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FailedToParseScriptSource: "FailedToParseScriptSource", 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) BreakpointResolved: "BreakpointResolved", 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GlobalObjectCleared: "GlobalObjectCleared", 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CallFrameSelected: "CallFrameSelected", 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ConsoleCommandEvaluatedInSelectedCallFrame: "ConsoleCommandEvaluatedInSelectedCallFrame", 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) BreakpointsActiveStateChanged: "BreakpointsActiveStateChanged" 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DebuggerModel.BreakReason = { 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DOM: "DOM", 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EventListener: "EventListener", 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) XHR: "XHR", 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Exception: "exception", 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Assert: "assert", 1005267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) CSPViolation: "CSPViolation", 1015267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) DebugCommand: "debugCommand" 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DebuggerModel.prototype = { 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) debuggerEnabled: function() 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !!this._debuggerEnabled; 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) enableDebugger: function() 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._debuggerEnabled) 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 118e08f70592b3fc0d5e68b9b914c9196e813720070Torne (Richard Coles) /** 119e08f70592b3fc0d5e68b9b914c9196e813720070Torne (Richard Coles) * @param {?Protocol.Error} error 120e08f70592b3fc0d5e68b9b914c9196e813720070Torne (Richard Coles) * @param {boolean} result 121e08f70592b3fc0d5e68b9b914c9196e813720070Torne (Richard Coles) * @this {WebInspector.DebuggerModel} 122e08f70592b3fc0d5e68b9b914c9196e813720070Torne (Richard Coles) */ 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function callback(error, result) 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._canSetScriptSource = result; 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerAgent.canSetScriptSource(callback.bind(this)); 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerAgent.enable(this._debuggerWasEnabled.bind(this)); 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) disableDebugger: function() 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this._debuggerEnabled) 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerAgent.disable(this._debuggerWasDisabled.bind(this)); 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1401e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {boolean} skip 1411e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {boolean=} untilReload 1421e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) */ 1431e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) skipAllPauses: function(skip, untilReload) 1441e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 1451e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) if (this._skipAllPausesTimeout) { 1461e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) clearTimeout(this._skipAllPausesTimeout); 1471e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) delete this._skipAllPausesTimeout; 1481e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) } 1491e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) DebuggerAgent.setSkipAllPauses(skip, untilReload); 1501e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 1511e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 1521e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) /** 1531e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) * @param {number} timeout 1541e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) */ 1551e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) skipAllPausesUntilReloadOrTimeout: function(timeout) 1561e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 1571e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) if (this._skipAllPausesTimeout) 1581e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) clearTimeout(this._skipAllPausesTimeout); 1591e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) DebuggerAgent.setSkipAllPauses(true, true); 1601e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) // If reload happens before the timeout, the flag will be already unset and the timeout callback won't change anything. 1611e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this._skipAllPausesTimeout = setTimeout(this.skipAllPauses.bind(this, false), timeout); 1621e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 1631e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 1641e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) /** 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) canSetScriptSource: function() 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._canSetScriptSource; 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _debuggerWasEnabled: function() 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._debuggerEnabled = true; 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._pauseOnExceptionStateChanged(); 176a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._asyncStackTracesStateChanged(); 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.DebuggerWasEnabled); 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _pauseOnExceptionStateChanged: function() 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerAgent.setPauseOnExceptions(WebInspector.settings.pauseOnExceptionStateString.get()); 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 185a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) _asyncStackTracesStateChanged: function() 186a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) { 187a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) const maxAsyncStackChainDepth = 4; 188b10519f489455182a6cfdee102d90bec34a43657Ben Murdoch var enabled = WebInspector.settings.enableAsyncStackTraces.get() && WebInspector.experimentsSettings.asyncStackTraces.isEnabled(); 189a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) DebuggerAgent.setAsyncCallStackDepth(enabled ? maxAsyncStackChainDepth : 0); 190a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) }, 191a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _debuggerWasDisabled: function() 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._debuggerEnabled = false; 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.DebuggerWasDisabled); 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 199a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DebuggerModel.Location} rawLocation 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continueToLocation: function(rawLocation) 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerAgent.continueToLocation(rawLocation); 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 207a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DebuggerModel.Location} rawLocation 208e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) */ 209e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) stepIntoSelection: function(rawLocation) 210e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { 211e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) /** 212a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DebuggerModel.Location} requestedLocation 213e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * @param {?string} error 214e08f70592b3fc0d5e68b9b914c9196e813720070Torne (Richard Coles) * @this {WebInspector.DebuggerModel} 215e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) */ 216e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) function callback(requestedLocation, error) 217e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { 218e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) if (error) 219e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) return; 220e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) this._pendingStepIntoLocation = requestedLocation; 221e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) }; 222e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) DebuggerAgent.continueToLocation(rawLocation, true, callback.bind(this, rawLocation)); 223e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) }, 224e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 2251e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) stepInto: function() 2261e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 2271e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) function callback() 2281e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 2291e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) DebuggerAgent.stepInto(); 2301e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) } 2311e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) DebuggerAgent.setOverlayMessage(undefined, callback.bind(this)); 2321e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 2331e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 2341e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) stepOver: function() 2351e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 2361e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) function callback() 2371e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 2381e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) DebuggerAgent.stepOver(); 2391e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) } 2401e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) DebuggerAgent.setOverlayMessage(undefined, callback.bind(this)); 2411e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 2421e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 2431e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) stepOut: function() 2441e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 2451e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) function callback() 2461e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 2471e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) DebuggerAgent.stepOut(); 2481e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) } 2491e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) DebuggerAgent.setOverlayMessage(undefined, callback.bind(this)); 2501e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 2511e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 2521e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) resume: function() 2531e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 2541e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) function callback() 2551e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 2561e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) DebuggerAgent.resume(); 2571e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) } 2581e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) DebuggerAgent.setOverlayMessage(undefined, callback.bind(this)); 2591e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 2601e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 261e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) /** 262a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DebuggerModel.Location} rawLocation 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} condition 264a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(?DebuggerAgent.BreakpointId, !Array.<!WebInspector.DebuggerModel.Location>):void=} callback 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setBreakpointByScriptLocation: function(rawLocation, condition, callback) 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var script = this.scriptForId(rawLocation.scriptId); 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (script.sourceURL) 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.setBreakpointByURL(script.sourceURL, rawLocation.lineNumber, rawLocation.columnNumber, condition, callback); 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.setBreakpointBySourceId(rawLocation, condition, callback); 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} url 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} lineNumber 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number=} columnNumber 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} condition 280a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(?DebuggerAgent.BreakpointId, !Array.<!WebInspector.DebuggerModel.Location>)=} callback 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setBreakpointByURL: function(url, lineNumber, columnNumber, condition, callback) 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Adjust column if needed. 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var minColumnNumber = 0; 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var scripts = this._scriptsBySourceURL[url] || []; 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0, l = scripts.length; i < l; ++i) { 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var script = scripts[i]; 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (lineNumber === script.lineOffset) 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) minColumnNumber = minColumnNumber ? Math.min(minColumnNumber, script.columnOffset) : script.columnOffset; 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) columnNumber = Math.max(columnNumber, minColumnNumber); 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @this {WebInspector.DebuggerModel} 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 297a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.BreakpointId} breakpointId 298a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DebuggerAgent.Location>} locations 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function didSetBreakpoint(error, breakpointId, locations) 3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callback) { 303a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var rawLocations = /** @type {!Array.<!WebInspector.DebuggerModel.Location>} */ (locations); 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(error ? null : breakpointId, rawLocations); 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 307e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch DebuggerAgent.setBreakpointByUrl(lineNumber, url, undefined, columnNumber, condition, undefined, didSetBreakpoint.bind(this)); 3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.userMetrics.ScriptsBreakpointSet.record(); 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 312a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DebuggerModel.Location} rawLocation 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} condition 314a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(?DebuggerAgent.BreakpointId, !Array.<!WebInspector.DebuggerModel.Location>)=} callback 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setBreakpointBySourceId: function(rawLocation, condition, callback) 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @this {WebInspector.DebuggerModel} 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 321a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.BreakpointId} breakpointId 322a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.Location} actualLocation 3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function didSetBreakpoint(error, breakpointId, actualLocation) 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callback) { 327a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var rawLocation = /** @type {!WebInspector.DebuggerModel.Location} */ (actualLocation); 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(error ? null : breakpointId, [rawLocation]); 3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerAgent.setBreakpoint(rawLocation, condition, didSetBreakpoint.bind(this)); 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.userMetrics.ScriptsBreakpointSet.record(); 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 336a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.BreakpointId} breakpointId 3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?Protocol.Error)=} callback 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) removeBreakpoint: function(breakpointId, callback) 3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerAgent.removeBreakpoint(breakpointId, callback); 3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 345a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.BreakpointId} breakpointId 346a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.Location} location 3475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _breakpointResolved: function(breakpointId, location) 3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.BreakpointResolved, {breakpointId: breakpointId, location: location}); 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _globalObjectCleared: function() 3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._setDebuggerPausedDetails(null); 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._reset(); 3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.GlobalObjectCleared); 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _reset: function() 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._scripts = {}; 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._scriptsBySourceURL = {}; 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 367a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Object.<string, !WebInspector.Script>} 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get scripts() 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._scripts; 3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 375a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.ScriptId} scriptId 376a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.Script} 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) scriptForId: function(scriptId) 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._scripts[scriptId] || null; 3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 384521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * @return {!Array.<!WebInspector.Script>} 385521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */ 386521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) scriptsForSourceURL: function(sourceURL) 387521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) { 388521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!sourceURL) 389521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return []; 390521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return this._scriptsBySourceURL[sourceURL] || []; 391521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) }, 392521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 393521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) /** 394a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.ScriptId} scriptId 3955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} newSource 396a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(?Protocol.Error, !DebuggerAgent.SetScriptSourceError=)} callback 3975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setScriptSource: function(scriptId, newSource, callback) 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._scripts[scriptId].editSource(newSource, this._didEditScriptSource.bind(this, scriptId, newSource, callback)); 4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 404a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.ScriptId} scriptId 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} newSource 406a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(?Protocol.Error, !DebuggerAgent.SetScriptSourceError=)} callback 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 408a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.SetScriptSourceError=} errorData 409a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DebuggerAgent.CallFrame>=} callFrames 410a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.StackTrace=} asyncStackTrace 411e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * @param {boolean=} needsStepIn 4125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 413a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) _didEditScriptSource: function(scriptId, newSource, callback, error, errorData, callFrames, asyncStackTrace, needsStepIn) 4145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 415591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch callback(error, errorData); 416e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) if (needsStepIn) 4171e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this.stepInto(); 418e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) else if (!error && callFrames && callFrames.length) 419a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._pausedScript(callFrames, this._debuggerPausedDetails.reason, this._debuggerPausedDetails.auxData, this._debuggerPausedDetails.breakpointIds, asyncStackTrace); 4205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 423a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?Array.<!WebInspector.DebuggerModel.CallFrame>} 4245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get callFrames() 4265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._debuggerPausedDetails ? this._debuggerPausedDetails.callFrames : null; 4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 4315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {?WebInspector.DebuggerPausedDetails} 4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) debuggerPausedDetails: function() 4345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._debuggerPausedDetails; 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?WebInspector.DebuggerPausedDetails} debuggerPausedDetails 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _setDebuggerPausedDetails: function(debuggerPausedDetails) 4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._debuggerPausedDetails) 4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._debuggerPausedDetails.dispose(); 4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._debuggerPausedDetails = debuggerPausedDetails; 4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._debuggerPausedDetails) 4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.DebuggerPaused, this._debuggerPausedDetails); 4485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (debuggerPausedDetails) { 4495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.setSelectedCallFrame(debuggerPausedDetails.callFrames[0]); 4505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerAgent.setOverlayMessage(WebInspector.UIString("Paused in debugger")); 4515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 4525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.setSelectedCallFrame(null); 4535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerAgent.setOverlayMessage(); 4545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 458a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DebuggerAgent.CallFrame>} callFrames 4595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} reason 460a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Object|undefined} auxData 461a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<string>} breakpointIds 462a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.StackTrace=} asyncStackTrace 4635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 464a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) _pausedScript: function(callFrames, reason, auxData, breakpointIds, asyncStackTrace) 4655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 466e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) if (this._pendingStepIntoLocation) { 467e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) var requestedLocation = this._pendingStepIntoLocation; 468e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) delete this._pendingStepIntoLocation; 469e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 470e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) if (callFrames.length > 0) { 471e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) var topLocation = callFrames[0].location; 472e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) if (topLocation.lineNumber == requestedLocation.lineNumber && topLocation.columnNumber == requestedLocation.columnNumber && topLocation.scriptId == requestedLocation.scriptId) { 4731e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this.stepInto(); 474e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) return; 475e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) } 476e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) } 477e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) } 478e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 479a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._setDebuggerPausedDetails(new WebInspector.DebuggerPausedDetails(callFrames, reason, auxData, breakpointIds, asyncStackTrace)); 4805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _resumedScript: function() 4835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._setDebuggerPausedDetails(null); 4855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.DebuggerResumed); 4865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 489a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.ScriptId} scriptId 4905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} sourceURL 4915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} startLine 4925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} startColumn 4935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} endLine 4945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} endColumn 4955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} isContentScript 4965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} sourceMapURL 4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean=} hasSourceURL 4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _parsedScriptSource: function(scriptId, sourceURL, startLine, startColumn, endLine, endColumn, isContentScript, sourceMapURL, hasSourceURL) 5005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var script = new WebInspector.Script(scriptId, sourceURL, startLine, startColumn, endLine, endColumn, isContentScript, sourceMapURL, hasSourceURL); 5025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._registerScript(script); 5035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.ParsedScriptSource, script); 5045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 507a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Script} script 5085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _registerScript: function(script) 5105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._scripts[script.scriptId] = script; 512521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (script.isAnonymousScript()) 513521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) return; 514521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) 515521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) var scripts = this._scriptsBySourceURL[script.sourceURL]; 516521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) if (!scripts) { 517521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) scripts = []; 518521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this._scriptsBySourceURL[script.sourceURL] = scripts; 5195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 520521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) scripts.push(script); 5215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 524a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Script} script 5255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} lineNumber 5265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} columnNumber 527a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?WebInspector.DebuggerModel.Location} 5285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) createRawLocation: function(script, lineNumber, columnNumber) 5305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (script.sourceURL) 5325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.createRawLocationByURL(script.sourceURL, lineNumber, columnNumber) 5335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return new WebInspector.DebuggerModel.Location(script.scriptId, lineNumber, columnNumber); 5345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 5375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} sourceURL 5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} lineNumber 5395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} columnNumber 540a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?WebInspector.DebuggerModel.Location} 5415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) createRawLocationByURL: function(sourceURL, lineNumber, columnNumber) 5435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var closestScript = null; 5455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var scripts = this._scriptsBySourceURL[sourceURL] || []; 5465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0, l = scripts.length; i < l; ++i) { 5475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var script = scripts[i]; 5485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!closestScript) 5495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) closestScript = script; 5505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (script.lineOffset > lineNumber || (script.lineOffset === lineNumber && script.columnOffset > columnNumber)) 5515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 5525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (script.endLine < lineNumber || (script.endLine === lineNumber && script.endColumn <= columnNumber)) 5535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 5545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) closestScript = script; 5555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 5565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return closestScript ? new WebInspector.DebuggerModel.Location(closestScript.scriptId, lineNumber, columnNumber) : null; 5585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 5615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 5625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isPaused: function() 5645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !!this.debuggerPausedDetails(); 5665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 5695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?WebInspector.DebuggerModel.CallFrame} callFrame 5705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setSelectedCallFrame: function(callFrame) 5725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._selectedCallFrame = callFrame; 5745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this._selectedCallFrame) 5755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 5765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.CallFrameSelected, callFrame); 5785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 5815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {?WebInspector.DebuggerModel.CallFrame} 5825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selectedCallFrame: function() 5845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._selectedCallFrame; 5865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 589a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!DebuggerAgent.CallFrameId|undefined} 5901e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) */ 5911e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) _selectedCallFrameId: function() 5921e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 5931e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) var callFrame = this.selectedCallFrame(); 5941e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) return callFrame ? callFrame.id : undefined; 5951e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) }, 5961e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 5971e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) /** 5985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} code 5995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} objectGroup 6005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} includeCommandLineAPI 6015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} doNotPauseOnExceptionsAndMuteConsole 6025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} returnByValue 6035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} generatePreview 604a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(?WebInspector.RemoteObject, boolean, ?RuntimeAgent.RemoteObject=)} callback 6055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) evaluateOnSelectedCallFrame: function(code, objectGroup, includeCommandLineAPI, doNotPauseOnExceptionsAndMuteConsole, returnByValue, generatePreview, callback) 6075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 6095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?RuntimeAgent.RemoteObject} result 6105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean=} wasThrown 611e08f70592b3fc0d5e68b9b914c9196e813720070Torne (Richard Coles) * @this {WebInspector.DebuggerModel} 6125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function didEvaluate(result, wasThrown) 6145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 615a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) if (!result) 616a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) callback(null, false); 617a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) else if (returnByValue) 6185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(null, !!wasThrown, wasThrown ? null : result); 6195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 6205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(WebInspector.RemoteObject.fromPayload(result), !!wasThrown); 6215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (objectGroup === "console") 6235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.ConsoleCommandEvaluatedInSelectedCallFrame); 6245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.selectedCallFrame().evaluate(code, objectGroup, includeCommandLineAPI, doNotPauseOnExceptionsAndMuteConsole, returnByValue, generatePreview, didEvaluate.bind(this)); 6275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 630a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!Object)} callback 6315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getSelectedCallFrameVariables: function(callback) 6335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var result = { this: true }; 6355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var selectedCallFrame = this._selectedCallFrame; 6375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!selectedCallFrame) 6385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(result); 6395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var pendingRequests = 0; 6415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function propertiesCollected(properties) 6435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; properties && i < properties.length; ++i) 6455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result[properties[i].name] = true; 6465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (--pendingRequests == 0) 6475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(result); 6485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < selectedCallFrame.scopeChain.length; ++i) { 6515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var scope = selectedCallFrame.scopeChain[i]; 6525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var object = WebInspector.RemoteObject.fromPayload(scope.object); 6535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) pendingRequests++; 654591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch object.getAllProperties(false, propertiesCollected); 6555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 6595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} active 6605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setBreakpointsActive: function(active) 6625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._breakpointsActive === active) 6645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 6655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._breakpointsActive = active; 6665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerAgent.setBreakpointsActive(active); 6675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.BreakpointsActiveStateChanged, active); 6685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 6715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {boolean} 6725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) breakpointsActive: function() 6745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._breakpointsActive; 6765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 679a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DebuggerModel.Location} rawLocation 680a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!WebInspector.UILocation):(boolean|undefined)} updateDelegate 681a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.Script.Location} 6825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) createLiveLocation: function(rawLocation, updateDelegate) 6845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var script = this._scripts[rawLocation.scriptId]; 6865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return script.createLiveLocation(rawLocation, updateDelegate); 6875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 690a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DebuggerModel.Location|!DebuggerAgent.Location} rawLocation 6915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {?WebInspector.UILocation} 6925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 6935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rawLocationToUILocation: function(rawLocation) 6945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var script = this._scripts[rawLocation.scriptId]; 6965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!script) 6975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return null; 6985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return script.rawLocationToUILocation(rawLocation.lineNumber, rawLocation.columnNumber); 6995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 7025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Handles notification from JavaScript VM about updated stack (liveedit or frame restart action). 7035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @this {WebInspector.DebuggerModel} 704a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DebuggerAgent.CallFrame>=} newCallFrames 705a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Object=} details 706a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.StackTrace=} asyncStackTrace 7075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 708a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) callStackModified: function(newCallFrames, details, asyncStackTrace) 7095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // FIXME: declare this property in protocol and in JavaScript. 7115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (details && details["stack_update_needs_step_in"]) 7121e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) this.stepInto(); 713a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) else if (newCallFrames && newCallFrames.length) 714a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._pausedScript(newCallFrames, this._debuggerPausedDetails.reason, this._debuggerPausedDetails.auxData, this._debuggerPausedDetails.breakpointIds, asyncStackTrace); 7155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.Object.prototype 7185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 720f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)WebInspector.DebuggerModel.applySkipStackFrameSettings = function() 721f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles){ 722f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) if (!WebInspector.experimentsSettings.frameworksDebuggingSupport.isEnabled()) 723f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) return; 724f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) var settings = WebInspector.settings; 725f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) var patternParameter = settings.skipStackFramesSwitch.get() ? settings.skipStackFramesPattern.get() : undefined; 726f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) DebuggerAgent.skipStackFrames(patternParameter); 727f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)} 728f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 7295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DebuggerEventTypes = { 7305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) JavaScriptPause: 0, 7315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) JavaScriptBreakpoint: 1, 7325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) NativeBreakpoint: 2 7335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 7345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 7365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 7375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @implements {DebuggerAgent.Dispatcher} 738a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.DebuggerModel} debuggerModel 7395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DebuggerDispatcher = function(debuggerModel) 7415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._debuggerModel = debuggerModel; 7435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DebuggerDispatcher.prototype = { 7465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 747a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DebuggerAgent.CallFrame>} callFrames 7485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} reason 749a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Object=} auxData 750a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<string>=} breakpointIds 751a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.StackTrace=} asyncStackTrace 7525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 753a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) paused: function(callFrames, reason, auxData, breakpointIds, asyncStackTrace) 7545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 755a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._debuggerModel._pausedScript(callFrames, reason, auxData, breakpointIds || [], asyncStackTrace); 7565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 758a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** 759a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @override 760a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) */ 7615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) resumed: function() 7625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._debuggerModel._resumedScript(); 7645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 766a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** 767a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @override 768a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) */ 7695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) globalObjectCleared: function() 7705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._debuggerModel._globalObjectCleared(); 7725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 775a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.ScriptId} scriptId 7765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} sourceURL 7775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} startLine 7785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} startColumn 7795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} endLine 7805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} endColumn 7815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean=} isContentScript 7825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} sourceMapURL 7835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean=} hasSourceURL 7845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) scriptParsed: function(scriptId, sourceURL, startLine, startColumn, endLine, endColumn, isContentScript, sourceMapURL, hasSourceURL) 7865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._debuggerModel._parsedScriptSource(scriptId, sourceURL, startLine, startColumn, endLine, endColumn, !!isContentScript, sourceMapURL, hasSourceURL); 7885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 7915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} sourceURL 7925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} source 7935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} startingLine 7945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} errorLine 7955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} errorMessage 7965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 7975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) scriptFailedToParse: function(sourceURL, source, startingLine, errorLine, errorMessage) 7985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 7995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 802a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.BreakpointId} breakpointId 803a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.Location} location 8045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) breakpointResolved: function(breakpointId, location) 8065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._debuggerModel._breakpointResolved(breakpointId, location); 8085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 8125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 813a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Script} script 814a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.CallFrame} payload 815a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {boolean=} isAsync 8165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 817a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)WebInspector.DebuggerModel.CallFrame = function(script, payload, isAsync) 8185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._script = script; 8205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._payload = payload; 821a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** @type {!Array.<!WebInspector.Script.Location>} */ 8225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._locations = []; 823a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this._isAsync = isAsync; 824a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)} 825a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 826a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)/** 827a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DebuggerAgent.CallFrame>} callFrames 828a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {boolean=} isAsync 829a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!WebInspector.DebuggerModel.CallFrame>} 830a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) */ 831a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)WebInspector.DebuggerModel.CallFrame.fromPayloadArray = function(callFrames, isAsync) 832a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles){ 833a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var result = []; 834a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) for (var i = 0; i < callFrames.length; ++i) { 835a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var callFrame = callFrames[i]; 836a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var script = WebInspector.debuggerModel.scriptForId(callFrame.location.scriptId); 837a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) if (script) 838a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) result.push(new WebInspector.DebuggerModel.CallFrame(script, callFrame, isAsync)); 839a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) } 840a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return result; 8415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DebuggerModel.CallFrame.prototype = { 8445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 845a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.Script} 8465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get script() 8485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._script; 8505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 8535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 8545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get type() 8565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._payload.type; 8585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 861926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {string} 862926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 863926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) get id() 864926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 865926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._payload.callFrameId; 866926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 867926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 868926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 869a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Array.<!DebuggerAgent.Scope>} 8705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get scopeChain() 8725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._payload.scopeChain; 8745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 877a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!RuntimeAgent.RemoteObject} 8785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get this() 8805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._payload.this; 8825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 885a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!RuntimeAgent.RemoteObject|undefined} 88651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) */ 88751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) get returnValue() 88851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) { 88951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) return this._payload.returnValue; 89051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) }, 89151b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 89251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) /** 8935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 8945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 8955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get functionName() 8965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 8975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._payload.functionName; 8985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 901a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.DebuggerModel.Location} 9025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get location() 9045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 905a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var rawLocation = /** @type {!WebInspector.DebuggerModel.Location} */ (this._payload.location); 9065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return rawLocation; 9075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 910a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {boolean} 911a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) */ 912a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) isAsync: function() 913a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) { 914a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return !!this._isAsync; 915a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) }, 916a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 917a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** 9185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} code 9195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} objectGroup 9205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} includeCommandLineAPI 9215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} doNotPauseOnExceptionsAndMuteConsole 9225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} returnByValue 9235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean} generatePreview 9245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?RuntimeAgent.RemoteObject, boolean=)=} callback 9255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) evaluate: function(code, objectGroup, includeCommandLineAPI, doNotPauseOnExceptionsAndMuteConsole, returnByValue, generatePreview, callback) 9275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 9295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @this {WebInspector.DebuggerModel.CallFrame} 9305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 931a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!RuntimeAgent.RemoteObject} result 9325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean=} wasThrown 9335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function didEvaluateOnCallFrame(error, result, wasThrown) 9355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (error) { 9375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) console.error(error); 9385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(null, false); 9395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 9405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(result, wasThrown); 9425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerAgent.evaluateOnCallFrame(this._payload.callFrameId, code, objectGroup, includeCommandLineAPI, doNotPauseOnExceptionsAndMuteConsole, returnByValue, generatePreview, didEvaluateOnCallFrame.bind(this)); 9445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 9475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function(?Protocol.Error=)=} callback 9485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) restart: function(callback) 9505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 9525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @this {WebInspector.DebuggerModel.CallFrame} 9535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {?Protocol.Error} error 954a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DebuggerAgent.CallFrame>=} callFrames 955a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Object=} details 956a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.StackTrace=} asyncStackTrace 9575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 958a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) function protocolCallback(error, callFrames, details, asyncStackTrace) 9595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!error) 961a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) WebInspector.debuggerModel.callStackModified(callFrames, details, asyncStackTrace); 9625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callback) 9635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(error); 9645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DebuggerAgent.restartFrame(this._payload.callFrameId, protocolCallback); 9665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 9675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 969a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!Array.<!DebuggerAgent.Location>)} callback 970e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) */ 971e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) getStepIntoLocations: function(callback) 972e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) { 973e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) if (this._stepInLocations) { 974e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) callback(this._stepInLocations.slice(0)); 975e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) return; 976e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) } 977e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) /** 978e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) * @param {?string} error 979a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DebuggerAgent.Location>=} stepInPositions 980e08f70592b3fc0d5e68b9b914c9196e813720070Torne (Richard Coles) * @this {WebInspector.DebuggerModel.CallFrame} 981e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) */ 982a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) function getStepInPositionsCallback(error, stepInPositions) 983a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) { 984a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) if (error) 985e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) return; 986e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) this._stepInLocations = stepInPositions; 987e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) callback(this._stepInLocations.slice(0)); 988e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) } 989e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) DebuggerAgent.getStepInPositions(this.id, getStepInPositionsCallback.bind(this)); 990e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) }, 991e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 992e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) /** 993a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!WebInspector.UILocation):(boolean|undefined)} updateDelegate 9945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) createLiveLocation: function(updateDelegate) 9965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var location = this._script.createLiveLocation(this.location, updateDelegate); 9985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._locations.push(location); 9995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return location; 10005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1002a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) dispose: function() 10035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 10045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < this._locations.length; ++i) 10055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._locations[i].dispose(); 10065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._locations = []; 10075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 10115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 1012a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!WebInspector.DebuggerModel.CallFrame>} callFrames 1013a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {?WebInspector.DebuggerModel.StackTrace} asyncStackTrace 1014a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {string=} description 10155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1016a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)WebInspector.DebuggerModel.StackTrace = function(callFrames, asyncStackTrace, description) 10175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1018a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.callFrames = callFrames; 1019a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.asyncStackTrace = asyncStackTrace; 1020a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.description = description; 1021a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)} 1022a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 1023a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)/** 1024a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.StackTrace=} payload 1025a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {boolean=} isAsync 1026a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {?WebInspector.DebuggerModel.StackTrace} 1027a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) */ 1028a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)WebInspector.DebuggerModel.StackTrace.fromPayload = function(payload, isAsync) 1029a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles){ 1030a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) if (!payload) 1031a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return null; 1032a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var callFrames = WebInspector.DebuggerModel.CallFrame.fromPayloadArray(payload.callFrames, isAsync); 1033a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) if (!callFrames.length) 1034a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return null; 1035a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) var asyncStackTrace = WebInspector.DebuggerModel.StackTrace.fromPayload(payload.asyncStackTrace, true); 1036a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) return new WebInspector.DebuggerModel.StackTrace(callFrames, asyncStackTrace, payload.description); 1037a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)} 1038a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 1039a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)WebInspector.DebuggerModel.StackTrace.prototype = { 1040a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) dispose: function() 1041a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) { 1042a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) for (var i = 0; i < this.callFrames.length; ++i) 1043a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.callFrames[i].dispose(); 1044a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) if (this.asyncStackTrace) 1045a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.asyncStackTrace.dispose(); 10465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1047a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)} 1048a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 1049a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)/** 1050a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @constructor 1051a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!DebuggerAgent.CallFrame>} callFrames 1052a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {string} reason 1053a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Object|undefined} auxData 1054a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<string>} breakpointIds 1055a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!DebuggerAgent.StackTrace=} asyncStackTrace 1056a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) */ 1057a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)WebInspector.DebuggerPausedDetails = function(callFrames, reason, auxData, breakpointIds, asyncStackTrace) 1058a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles){ 1059a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.callFrames = WebInspector.DebuggerModel.CallFrame.fromPayloadArray(callFrames); 10605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.reason = reason; 10615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.auxData = auxData; 10625267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) this.breakpointIds = breakpointIds; 1063a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.asyncStackTrace = WebInspector.DebuggerModel.StackTrace.fromPayload(asyncStackTrace, true); 10645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.DebuggerPausedDetails.prototype = { 10675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dispose: function() 10685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1069a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) for (var i = 0; i < this.callFrames.length; ++i) 1070a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.callFrames[i].dispose(); 1071a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) if (this.asyncStackTrace) 1072a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.asyncStackTrace.dispose(); 10735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 1077e08f70592b3fc0d5e68b9b914c9196e813720070Torne (Richard Coles) * @type {!WebInspector.DebuggerModel} 10785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1079e08f70592b3fc0d5e68b9b914c9196e813720070Torne (Richard Coles)WebInspector.debuggerModel; 1080