1c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)// found in the LICENSE file. 4c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 5c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)/** 6c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @constructor 7c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @implements {WebInspector.TargetManager.Observer} 8c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.TargetManager} targetManager 9c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Workspace} workspace 10c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.NetworkWorkspaceBinding} networkWorkspaceBinding 11c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 12c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)WebInspector.DebuggerWorkspaceBinding = function(targetManager, workspace, networkWorkspaceBinding) 13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles){ 14c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._workspace = workspace; 15c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._networkWorkspaceBinding = networkWorkspaceBinding; 16c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 17c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** @type {!Map.<!WebInspector.Target, !WebInspector.DebuggerWorkspaceBinding.TargetData>} */ 18c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._targetToData = new Map(); 19c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) targetManager.observeTargets(this); 20c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 21c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._globalObjectCleared, this); 22c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerResumed, this._debuggerResumed, this); 23e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeRemoved, this._uiSourceCodeRemoved, this); 249e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) workspace.addEventListener(WebInspector.Workspace.Events.ProjectRemoved, this._projectRemoved, this); 25c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} 26c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 27c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)WebInspector.DebuggerWorkspaceBinding.prototype = { 28c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 29c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Target} target 30c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 31c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) targetAdded: function(target) 32c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 339e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this._targetToData.set(target, new WebInspector.DebuggerWorkspaceBinding.TargetData(target, this)); 34c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 35c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 36c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 37c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Target} target 38c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 39c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) targetRemoved: function(target) 40c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 419e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) var targetData = this._targetToData.get(target); 429e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) targetData._dispose(); 439e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this._targetToData.remove(target); 44c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 45c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 46c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 47e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.Event} event 48e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 49e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) _uiSourceCodeRemoved: function(event) 50e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) { 51e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data); 52e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) var targetDatas = this._targetToData.values(); 53e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) for (var i = 0; i < targetDatas.length; ++i) 54e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) targetDatas[i]._uiSourceCodeRemoved(uiSourceCode); 55e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) }, 56e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 57e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 589e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) * @param {!WebInspector.Event} event 599e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) */ 609e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) _projectRemoved: function(event) 619e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) { 629e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) var project = /** @type {!WebInspector.Project} */ (event.data); 639e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) var targetDatas = this._targetToData.values(); 649e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) var uiSourceCodes = project.uiSourceCodes(); 659e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) for (var i = 0; i < targetDatas.length; ++i) { 669e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) for (var j = 0; j < uiSourceCodes.length; ++j) 679e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) targetDatas[i]._uiSourceCodeRemoved(uiSourceCodes[j]); 689e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) } 699e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) }, 709e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) 719e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) /** 72c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Script} script 73e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.DebuggerSourceMapping} sourceMapping 74c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 75c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) pushSourceMapping: function(script, sourceMapping) 76c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 77c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var info = this._ensureInfoForScript(script); 78c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) info._pushSourceMapping(sourceMapping); 79c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 80c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 81c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 82c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Script} script 83e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {!WebInspector.DebuggerSourceMapping} 84c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 85c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) popSourceMapping: function(script) 86c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 87c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var info = this._infoForScript(script.target(), script.scriptId); 88c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) console.assert(info); 89c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return info._popSourceMapping(); 90c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 91c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 92c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 93e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.Target} target 94e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 95e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {?WebInspector.DebuggerSourceMapping} sourceMapping 96e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 97e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) setSourceMapping: function(target, uiSourceCode, sourceMapping) 98e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) { 99e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) var data = this._targetToData.get(target); 100e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) if (data) 101e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) data._setSourceMapping(uiSourceCode, sourceMapping); 102e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) }, 103e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 104e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 105c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Script} script 106c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 107c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) updateLocations: function(script) 108c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 109c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var info = this._infoForScript(script.target(), script.scriptId); 110c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (info) 111c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) info._updateLocations(); 112c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 113c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 114c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 115c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.DebuggerModel.Location} rawLocation 116c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {function(!WebInspector.UILocation):(boolean|undefined)} updateDelegate 117c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {!WebInspector.DebuggerWorkspaceBinding.Location} 118c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 119c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) createLiveLocation: function(rawLocation, updateDelegate) 120c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 121c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var info = this._infoForScript(rawLocation.target(), rawLocation.scriptId); 122c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) console.assert(info); 123c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var location = new WebInspector.DebuggerWorkspaceBinding.Location(info._script, rawLocation, this, updateDelegate); 124c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) info._addLocation(location); 125c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return location; 126c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 127c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 128c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 129c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.DebuggerModel.CallFrame} callFrame 130c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {function(!WebInspector.UILocation):(boolean|undefined)} updateDelegate 131c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {!WebInspector.DebuggerWorkspaceBinding.Location} 132c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 133c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) createCallFrameLiveLocation: function(callFrame, updateDelegate) 134c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 135c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var target = callFrame.target(); 136c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._ensureInfoForScript(callFrame.script) 137c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var location = this.createLiveLocation(callFrame.location(), updateDelegate); 138c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._registerCallFrameLiveLocation(target, location); 139c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return location; 140c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 141c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 142c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 143c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.DebuggerModel.Location} rawLocation 144c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {!WebInspector.UILocation} 145c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 146c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) rawLocationToUILocation: function(rawLocation) 147c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 148c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var info = this._infoForScript(rawLocation.target(), rawLocation.scriptId); 149c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) console.assert(info); 150c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return info._rawLocationToUILocation(rawLocation); 151c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 152c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 153c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 154c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Target} target 155c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 156c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {number} lineNumber 157c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {number} columnNumber 158e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {?WebInspector.DebuggerModel.Location} 159c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 160c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) uiLocationToRawLocation: function(target, uiSourceCode, lineNumber, columnNumber) 161c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 162e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) var targetData = this._targetToData.get(target); 163e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return targetData ? /** @type {?WebInspector.DebuggerModel.Location} */ (targetData._uiLocationToRawLocation(uiSourceCode, lineNumber, columnNumber)) : null; 164e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) }, 165e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 166e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 167e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 168e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {number} lineNumber 169e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {number} columnNumber 170e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {!Array.<!WebInspector.DebuggerModel.Location>} 171e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 172e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) uiLocationToRawLocations: function(uiSourceCode, lineNumber, columnNumber) 173e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) { 174e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) var result = []; 175e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) var targetDatas = this._targetToData.values(); 176e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) for (var i = 0; i < targetDatas.length; ++i) { 177e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) var rawLocation = targetDatas[i]._uiLocationToRawLocation(uiSourceCode, lineNumber, columnNumber); 178e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) if (rawLocation) 179e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) result.push(rawLocation); 180e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) } 181e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return result; 182e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) }, 183e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 184e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 185e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 186e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {number} lineNumber 187e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {boolean} 188e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 189e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) uiLineHasMapping: function(uiSourceCode, lineNumber) 190e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) { 191e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) var targetDatas = this._targetToData.values(); 192e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) for (var i = 0; i < targetDatas.length; ++i) { 193e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) if (!targetDatas[i]._uiLineHasMapping(uiSourceCode, lineNumber)) 194e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return false; 195e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) } 196e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return true; 197c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 198c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 199c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 200c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Target} target 201c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {?WebInspector.LiveEditSupport} 202c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 203c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) liveEditSupport: function(target) 204c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 205c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var targetData = this._targetToData.get(target); 206c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return targetData ? targetData._liveEditSupport : null; 207c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 208c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 209c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 210e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 211e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.Target} target 212e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {?WebInspector.ResourceScriptFile} 213e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 214e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) scriptFile: function(uiSourceCode, target) 215e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) { 216e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) var targetData = this._targetToData.get(target); 217e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return targetData ? targetData._resourceMapping.scriptFile(uiSourceCode) : null; 218e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) }, 219e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 220e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 221c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Event} event 222c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 223c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _globalObjectCleared: function(event) 224c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 225c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var debuggerModel = /** @type {!WebInspector.DebuggerModel} */ (event.target); 226c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._reset(debuggerModel.target()); 227c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 228c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 229c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 230c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Target} target 231c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 232c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _reset: function(target) 233c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 234c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var targetData = this._targetToData.get(target); 235c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) targetData.callFrameLocations.values().forEach(function(location) { location.dispose(); }); 236c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) targetData.callFrameLocations.clear(); 237c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 238c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 239c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 240c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Script} script 241c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {!WebInspector.DebuggerWorkspaceBinding.ScriptInfo} 242c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 243c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _ensureInfoForScript: function(script) 244c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 245c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var scriptDataMap = this._targetToData.get(script.target()).scriptDataMap; 246c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var info = scriptDataMap.get(script.scriptId); 247c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (!info) { 248c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) info = new WebInspector.DebuggerWorkspaceBinding.ScriptInfo(script); 2499e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) scriptDataMap.set(script.scriptId, info); 250c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 251c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return info; 252c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 253c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 254c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 255c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 256c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Target} target 257c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {string} scriptId 258c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {?WebInspector.DebuggerWorkspaceBinding.ScriptInfo} 259c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 260c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _infoForScript: function(target, scriptId) 261c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 262c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var data = this._targetToData.get(target); 263c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (!data) 264c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return null; 265c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return data.scriptDataMap.get(scriptId) || null; 266c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 267c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 268c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 269c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Target} target 270c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.DebuggerWorkspaceBinding.Location} location 271c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 272c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _registerCallFrameLiveLocation: function(target, location) 273c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 274c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var locations = this._targetToData.get(target).callFrameLocations; 275c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) locations.add(location); 276c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 277c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 278c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 279c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.DebuggerWorkspaceBinding.Location} location 280c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 281c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _removeLiveLocation: function(location) 282c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 283c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var info = this._infoForScript(location._script.target(), location._script.scriptId); 284c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (info) 285c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) info._removeLocation(location); 286c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 287c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 288c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 289c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Event} event 290c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 291c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _debuggerResumed: function(event) 292c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 293c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var debuggerModel = /** @type {!WebInspector.DebuggerModel} */ (event.target); 294c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._reset(debuggerModel.target()); 295c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 296c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} 297c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 298c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)/** 299c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @constructor 300c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Target} target 301c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.DebuggerWorkspaceBinding} debuggerWorkspaceBinding 302c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 303c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)WebInspector.DebuggerWorkspaceBinding.TargetData = function(target, debuggerWorkspaceBinding) 304c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles){ 305e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) this._target = target; 306e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 307c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** @type {!StringMap.<!WebInspector.DebuggerWorkspaceBinding.ScriptInfo>} */ 308c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this.scriptDataMap = new StringMap(); 309c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 310c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** @type {!Set.<!WebInspector.DebuggerWorkspaceBinding.Location>} */ 311c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this.callFrameLocations = new Set(); 312c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 313c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var debuggerModel = target.debuggerModel; 314c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var workspace = debuggerWorkspaceBinding._workspace; 315c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 316c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._liveEditSupport = new WebInspector.LiveEditSupport(target, workspace, debuggerWorkspaceBinding); 317c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._defaultMapping = new WebInspector.DefaultScriptMapping(debuggerModel, workspace, debuggerWorkspaceBinding); 318c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._resourceMapping = new WebInspector.ResourceScriptMapping(debuggerModel, workspace, debuggerWorkspaceBinding); 319c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._compilerMapping = new WebInspector.CompilerScriptMapping(debuggerModel, workspace, debuggerWorkspaceBinding._networkWorkspaceBinding, debuggerWorkspaceBinding); 320c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 321c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** @type {!WebInspector.LiveEditSupport} */ 322c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._liveEditSupport = new WebInspector.LiveEditSupport(target, workspace, debuggerWorkspaceBinding); 323c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 324e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** @type {!Map.<!WebInspector.UISourceCode, !WebInspector.DebuggerSourceMapping>} */ 325e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) this._uiSourceCodeToSourceMapping = new Map(); 326e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 327c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ParsedScriptSource, this._parsedScriptSource, this); 328c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.FailedToParseScriptSource, this._parsedScriptSource, this); 329c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} 330c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 331c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)WebInspector.DebuggerWorkspaceBinding.TargetData.prototype = { 332c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 333c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Event} event 334c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 335c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _parsedScriptSource: function(event) 336c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 337c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var script = /** @type {!WebInspector.Script} */ (event.data); 338c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._defaultMapping.addScript(script); 339c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 340c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (script.isSnippet()) { 341c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) WebInspector.scriptSnippetModel.addScript(script); 342c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return; 343c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 344c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 345c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._resourceMapping.addScript(script); 346c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 347c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) if (WebInspector.settings.jsSourceMapsEnabled.get()) 348c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._compilerMapping.addScript(script); 349c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 350c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 351e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 352e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 353e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {?WebInspector.DebuggerSourceMapping} sourceMapping 354e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 355e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) _setSourceMapping: function(uiSourceCode, sourceMapping) 356e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) { 357e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) if (this._uiSourceCodeToSourceMapping.get(uiSourceCode) === sourceMapping) 358e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return; 359e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 360e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) if (sourceMapping) 3619e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this._uiSourceCodeToSourceMapping.set(uiSourceCode, sourceMapping); 362e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) else 363e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) this._uiSourceCodeToSourceMapping.remove(uiSourceCode); 364e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 365e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) uiSourceCode.dispatchEventToListeners(WebInspector.UISourceCode.Events.SourceMappingChanged, {target: this._target, isIdentity: sourceMapping ? sourceMapping.isIdentity() : false}); 366e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) }, 367e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 368e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 369e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 370e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {number} lineNumber 371e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {number} columnNumber 372e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {?WebInspector.DebuggerModel.Location} 373e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 374e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) _uiLocationToRawLocation: function(uiSourceCode, lineNumber, columnNumber) 375e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) { 376e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) var sourceMapping = this._uiSourceCodeToSourceMapping.get(uiSourceCode); 377e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return sourceMapping ? sourceMapping.uiLocationToRawLocation(uiSourceCode, lineNumber, columnNumber) : null; 378e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) }, 379e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 380e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 381e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 382e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {number} lineNumber 383e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {boolean} 384e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 385e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) _uiLineHasMapping: function(uiSourceCode, lineNumber) 386e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) { 387e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) var sourceMapping = this._uiSourceCodeToSourceMapping.get(uiSourceCode); 388e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) return sourceMapping ? sourceMapping.uiLineHasMapping(uiSourceCode, lineNumber) : true; 389e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) }, 390e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 391e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 392e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 393e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 394e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) _uiSourceCodeRemoved: function(uiSourceCode) 395e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) { 396e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) this._uiSourceCodeToSourceMapping.remove(uiSourceCode); 397e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) }, 398e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 399c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _dispose: function() 400c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 401c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._compilerMapping.dispose(); 402c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._resourceMapping.dispose(); 403c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._defaultMapping.dispose(); 404e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) this._uiSourceCodeToSourceMapping.clear(); 405c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 406c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} 407c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 408c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)/** 409c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @constructor 410c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Script} script 411c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 412c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)WebInspector.DebuggerWorkspaceBinding.ScriptInfo = function(script) 413c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles){ 414c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._script = script; 415c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 416e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** @type {!Array.<!WebInspector.DebuggerSourceMapping>} */ 417c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._sourceMappings = []; 418c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 419c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** @type {!Set.<!WebInspector.LiveLocation>} */ 420c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._locations = new Set(); 421c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} 422c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 423c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)WebInspector.DebuggerWorkspaceBinding.ScriptInfo.prototype = { 424c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 425e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.DebuggerSourceMapping} sourceMapping 426c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 427c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _pushSourceMapping: function(sourceMapping) 428c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 429c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._sourceMappings.push(sourceMapping); 430c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._updateLocations(); 431c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 432c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 433c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 434e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {!WebInspector.DebuggerSourceMapping} 435c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 436c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _popSourceMapping: function() 437c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 438c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var sourceMapping = this._sourceMappings.pop(); 439c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._updateLocations(); 440c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return sourceMapping; 441c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 442c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 443c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 444c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.LiveLocation} location 445c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 446c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _addLocation: function(location) 447c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 448c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._locations.add(location); 449c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) location.update(); 450c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 451c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 452c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 453c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.LiveLocation} location 454c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 455c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _removeLocation: function(location) 456c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 457c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._locations.remove(location); 458c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 459c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 460c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _updateLocations: function() 461c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 462c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var items = this._locations.values(); 463c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) for (var i = 0; i < items.length; ++i) 464c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) items[i].update(); 465c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 466c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 467c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 468c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.DebuggerModel.Location} rawLocation 469c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {!WebInspector.UILocation} 470c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 471c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) _rawLocationToUILocation: function(rawLocation) 472c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 473c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) var uiLocation; 474c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) for (var i = this._sourceMappings.length - 1; !uiLocation && i >= 0; --i) 475c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) uiLocation = this._sourceMappings[i].rawLocationToUILocation(rawLocation); 476c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) console.assert(uiLocation, "Script raw location cannot be mapped to any UI location."); 477c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return /** @type {!WebInspector.UILocation} */ (uiLocation); 478c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) } 479c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} 480c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 481c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 482c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)/** 483c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @constructor 484c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @extends {WebInspector.LiveLocation} 485c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.Script} script 486c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.DebuggerModel.Location} rawLocation 487c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {!WebInspector.DebuggerWorkspaceBinding} binding 488c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @param {function(!WebInspector.UILocation):(boolean|undefined)} updateDelegate 489c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 490c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)WebInspector.DebuggerWorkspaceBinding.Location = function(script, rawLocation, binding, updateDelegate) 491c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles){ 492e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) WebInspector.LiveLocation.call(this, updateDelegate); 493c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._script = script; 494e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) this._rawLocation = rawLocation; 495c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._binding = binding; 496c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} 497c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 498c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)WebInspector.DebuggerWorkspaceBinding.Location.prototype = { 499c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) /** 500c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @return {!WebInspector.UILocation} 501c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 502c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) uiLocation: function() 503c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 504e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) var debuggerModelLocation = this._rawLocation; 505c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return this._binding.rawLocationToUILocation(debuggerModelLocation); 506c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 507c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 508c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) dispose: function() 509c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) { 510c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) WebInspector.LiveLocation.prototype.dispose.call(this); 511c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) this._binding._removeLiveLocation(this); 512c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) }, 513c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 514c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) __proto__: WebInspector.LiveLocation.prototype 515c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} 516c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) 517c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)/** 518e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @interface 519e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 520e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)WebInspector.DebuggerSourceMapping = function() 521e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles){ 522e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)} 523e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 524e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)WebInspector.DebuggerSourceMapping.prototype = { 525e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 526e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.DebuggerModel.Location} rawLocation 527e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {?WebInspector.UILocation} 528e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 529e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) rawLocationToUILocation: function(rawLocation) { }, 530e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 531e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 532e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 533e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {number} lineNumber 534e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {number} columnNumber 535e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {?WebInspector.DebuggerModel.Location} 536e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 537e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) uiLocationToRawLocation: function(uiSourceCode, lineNumber, columnNumber) { }, 538e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 539e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 540e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {boolean} 541e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 542e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) isIdentity: function() { }, 543e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 544e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) /** 545e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {!WebInspector.UISourceCode} uiSourceCode 546e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @param {number} lineNumber 547e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) * @return {boolean} 548e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) */ 549e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) uiLineHasMapping: function(uiSourceCode, lineNumber) { } 550e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)} 551e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) 552e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)/** 553c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) * @type {!WebInspector.DebuggerWorkspaceBinding} 554c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) */ 555c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)WebInspector.debuggerWorkspaceBinding; 556