| Index: third_party/WebKit/Source/devtools/front_end/bindings/DebuggerWorkspaceBinding.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/bindings/DebuggerWorkspaceBinding.js b/third_party/WebKit/Source/devtools/front_end/bindings/DebuggerWorkspaceBinding.js
|
| index bd638ba80cb9ffcdeccb3f7c0228d903a1043be1..c49fc315d799a7822cfbffe4d9acc0e260d9cbea 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/bindings/DebuggerWorkspaceBinding.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/bindings/DebuggerWorkspaceBinding.js
|
| @@ -1,16 +1,17 @@
|
| // Copyright 2014 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
| -
|
| /**
|
| - * @constructor
|
| * @implements {WebInspector.TargetManager.Observer}
|
| - * @param {!WebInspector.TargetManager} targetManager
|
| - * @param {!WebInspector.Workspace} workspace
|
| - * @param {!WebInspector.NetworkMapping} networkMapping
|
| + * @unrestricted
|
| */
|
| -WebInspector.DebuggerWorkspaceBinding = function(targetManager, workspace, networkMapping)
|
| -{
|
| +WebInspector.DebuggerWorkspaceBinding = class {
|
| + /**
|
| + * @param {!WebInspector.TargetManager} targetManager
|
| + * @param {!WebInspector.Workspace} workspace
|
| + * @param {!WebInspector.NetworkMapping} networkMapping
|
| + */
|
| + constructor(targetManager, workspace, networkMapping) {
|
| this._workspace = workspace;
|
| this._networkMapping = networkMapping;
|
|
|
| @@ -19,357 +20,340 @@ WebInspector.DebuggerWorkspaceBinding = function(targetManager, workspace, netwo
|
| this._targetToData = new Map();
|
| targetManager.observeTargets(this);
|
|
|
| - targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._globalObjectCleared, this);
|
| - targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.BeforeDebuggerPaused, this._beforeDebuggerPaused, this);
|
| - targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerResumed, this._debuggerResumed, this);
|
| + targetManager.addModelListener(
|
| + WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._globalObjectCleared,
|
| + this);
|
| + targetManager.addModelListener(
|
| + WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.BeforeDebuggerPaused, this._beforeDebuggerPaused,
|
| + this);
|
| + targetManager.addModelListener(
|
| + WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerResumed, this._debuggerResumed, this);
|
| workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeRemoved, this._uiSourceCodeRemoved, this);
|
| workspace.addEventListener(WebInspector.Workspace.Events.ProjectRemoved, this._projectRemoved, this);
|
| -};
|
| -
|
| -WebInspector.DebuggerWorkspaceBinding.prototype = {
|
| - /**
|
| - * @override
|
| - * @param {!WebInspector.Target} target
|
| - */
|
| - targetAdded: function(target)
|
| - {
|
| - var debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
|
| - if (debuggerModel)
|
| - this._targetToData.set(target, new WebInspector.DebuggerWorkspaceBinding.TargetData(debuggerModel, this));
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @param {!WebInspector.Target} target
|
| - */
|
| - targetRemoved: function(target)
|
| - {
|
| - if (!WebInspector.DebuggerModel.fromTarget(target))
|
| - return;
|
| - var targetData = this._targetToData.get(target);
|
| - targetData._dispose();
|
| - this._targetToData.remove(target);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _uiSourceCodeRemoved: function(event)
|
| - {
|
| - var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
|
| - var targetDatas = this._targetToData.valuesArray();
|
| - for (var i = 0; i < targetDatas.length; ++i)
|
| - targetDatas[i]._uiSourceCodeRemoved(uiSourceCode);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _projectRemoved: function(event)
|
| - {
|
| - var project = /** @type {!WebInspector.Project} */ (event.data);
|
| - var targetDatas = this._targetToData.valuesArray();
|
| - var uiSourceCodes = project.uiSourceCodes();
|
| - for (var i = 0; i < targetDatas.length; ++i) {
|
| - for (var j = 0; j < uiSourceCodes.length; ++j)
|
| - targetDatas[i]._uiSourceCodeRemoved(uiSourceCodes[j]);
|
| - }
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Script} script
|
| - * @param {!WebInspector.DebuggerSourceMapping} sourceMapping
|
| - */
|
| - pushSourceMapping: function(script, sourceMapping)
|
| - {
|
| - var info = this._ensureInfoForScript(script);
|
| - info._pushSourceMapping(sourceMapping);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Script} script
|
| - * @return {!WebInspector.DebuggerSourceMapping}
|
| - */
|
| - popSourceMapping: function(script)
|
| - {
|
| - var info = this._infoForScript(script.target(), script.scriptId);
|
| - console.assert(info);
|
| - return info._popSourceMapping();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Target} target
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {?WebInspector.DebuggerSourceMapping} sourceMapping
|
| - */
|
| - setSourceMapping: function(target, uiSourceCode, sourceMapping)
|
| - {
|
| - var data = this._targetToData.get(target);
|
| - if (data)
|
| - data._setSourceMapping(uiSourceCode, sourceMapping);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Script} script
|
| - */
|
| - updateLocations: function(script)
|
| - {
|
| - var info = this._infoForScript(script.target(), script.scriptId);
|
| - if (info)
|
| - info._updateLocations();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.DebuggerModel.Location} rawLocation
|
| - * @param {function(!WebInspector.LiveLocation)} updateDelegate
|
| - * @param {!WebInspector.LiveLocationPool} locationPool
|
| - * @return {!WebInspector.DebuggerWorkspaceBinding.Location}
|
| - */
|
| - createLiveLocation: function(rawLocation, updateDelegate, locationPool)
|
| - {
|
| - var info = this._infoForScript(rawLocation.target(), rawLocation.scriptId);
|
| - console.assert(info);
|
| - var location = new WebInspector.DebuggerWorkspaceBinding.Location(info._script, rawLocation, this, updateDelegate, locationPool);
|
| - info._addLocation(location);
|
| - return location;
|
| - },
|
| -
|
| - /**
|
| - * @param {!Array<!WebInspector.DebuggerModel.Location>} rawLocations
|
| - * @param {function(!WebInspector.LiveLocation)} updateDelegate
|
| - * @param {!WebInspector.LiveLocationPool} locationPool
|
| - * @return {!WebInspector.LiveLocation}
|
| - */
|
| - createStackTraceTopFrameLiveLocation: function(rawLocations, updateDelegate, locationPool)
|
| - {
|
| - console.assert(rawLocations.length);
|
| - var location = new WebInspector.DebuggerWorkspaceBinding.StackTraceTopFrameLocation(rawLocations, this, updateDelegate, locationPool);
|
| - location.update();
|
| - return location;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.DebuggerModel.Location} location
|
| - * @param {function(!WebInspector.LiveLocation)} updateDelegate
|
| - * @param {!WebInspector.LiveLocationPool} locationPool
|
| - * @return {?WebInspector.DebuggerWorkspaceBinding.Location}
|
| - */
|
| - createCallFrameLiveLocation: function(location, updateDelegate, locationPool)
|
| - {
|
| - var script = location.script();
|
| - if (!script)
|
| - return null;
|
| - var target = location.target();
|
| - this._ensureInfoForScript(script);
|
| - var liveLocation = this.createLiveLocation(location, updateDelegate, locationPool);
|
| - this._registerCallFrameLiveLocation(target, liveLocation);
|
| - return liveLocation;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.DebuggerModel.Location} rawLocation
|
| - * @return {!WebInspector.UILocation}
|
| - */
|
| - rawLocationToUILocation: function(rawLocation)
|
| - {
|
| - var info = this._infoForScript(rawLocation.target(), rawLocation.scriptId);
|
| - console.assert(info);
|
| - return info._rawLocationToUILocation(rawLocation);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Target} target
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {number} lineNumber
|
| - * @param {number} columnNumber
|
| - * @return {?WebInspector.DebuggerModel.Location}
|
| - */
|
| - uiLocationToRawLocation: function(target, uiSourceCode, lineNumber, columnNumber)
|
| - {
|
| - var targetData = this._targetToData.get(target);
|
| - return targetData ? /** @type {?WebInspector.DebuggerModel.Location} */ (targetData._uiLocationToRawLocation(uiSourceCode, lineNumber, columnNumber)) : null;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {number} lineNumber
|
| - * @param {number} columnNumber
|
| - * @return {!Array.<!WebInspector.DebuggerModel.Location>}
|
| - */
|
| - uiLocationToRawLocations: function(uiSourceCode, lineNumber, columnNumber)
|
| - {
|
| - var result = [];
|
| - var targetDatas = this._targetToData.valuesArray();
|
| - for (var i = 0; i < targetDatas.length; ++i) {
|
| - var rawLocation = targetDatas[i]._uiLocationToRawLocation(uiSourceCode, lineNumber, columnNumber);
|
| - if (rawLocation)
|
| - result.push(rawLocation);
|
| - }
|
| - return result;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UILocation} uiLocation
|
| - * @return {!WebInspector.UILocation}
|
| - */
|
| - normalizeUILocation: function(uiLocation)
|
| - {
|
| - var target = WebInspector.NetworkProject.targetForUISourceCode(uiLocation.uiSourceCode);
|
| - if (target) {
|
| - var rawLocation = this.uiLocationToRawLocation(target, uiLocation.uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber);
|
| - if (rawLocation)
|
| - return this.rawLocationToUILocation(rawLocation);
|
| - }
|
| - return uiLocation;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {number} lineNumber
|
| - * @return {boolean}
|
| - */
|
| - uiLineHasMapping: function(uiSourceCode, lineNumber)
|
| - {
|
| - var targetDatas = this._targetToData.valuesArray();
|
| - for (var i = 0; i < targetDatas.length; ++i) {
|
| - if (!targetDatas[i]._uiLineHasMapping(uiSourceCode, lineNumber))
|
| - return false;
|
| - }
|
| - return true;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {!WebInspector.Target} target
|
| - * @return {?WebInspector.ResourceScriptFile}
|
| - */
|
| - scriptFile: function(uiSourceCode, target)
|
| - {
|
| - var targetData = this._targetToData.get(target);
|
| - return targetData ? targetData._resourceMapping.scriptFile(uiSourceCode) : null;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Script} script
|
| - * @return {?WebInspector.TextSourceMap}
|
| - */
|
| - sourceMapForScript: function(script)
|
| - {
|
| - var targetData = this._targetToData.get(script.target());
|
| - if (!targetData)
|
| - return null;
|
| - return targetData._compilerMapping.sourceMapForScript(script);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Script} script
|
| - */
|
| - maybeLoadSourceMap: function(script)
|
| - {
|
| - var targetData = this._targetToData.get(script.target());
|
| - if (!targetData)
|
| - return;
|
| - targetData._compilerMapping.maybeLoadSourceMap(script);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _globalObjectCleared: function(event)
|
| - {
|
| - var debuggerModel = /** @type {!WebInspector.DebuggerModel} */ (event.target);
|
| - this._reset(debuggerModel.target());
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Target} target
|
| - */
|
| - _reset: function(target)
|
| - {
|
| - var targetData = this._targetToData.get(target);
|
| - targetData.callFrameLocations.valuesArray().forEach((location) => this._removeLiveLocation(location));
|
| - targetData.callFrameLocations.clear();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Script} script
|
| - * @return {!WebInspector.DebuggerWorkspaceBinding.ScriptInfo}
|
| - */
|
| - _ensureInfoForScript: function(script)
|
| - {
|
| - var scriptDataMap = this._targetToData.get(script.target()).scriptDataMap;
|
| - var info = scriptDataMap.get(script.scriptId);
|
| - if (!info) {
|
| - info = new WebInspector.DebuggerWorkspaceBinding.ScriptInfo(script);
|
| - scriptDataMap.set(script.scriptId, info);
|
| - }
|
| - return info;
|
| - },
|
| -
|
| -
|
| - /**
|
| - * @param {!WebInspector.Target} target
|
| - * @param {string} scriptId
|
| - * @return {?WebInspector.DebuggerWorkspaceBinding.ScriptInfo}
|
| - */
|
| - _infoForScript: function(target, scriptId)
|
| - {
|
| - var data = this._targetToData.get(target);
|
| - if (!data)
|
| - return null;
|
| - return data.scriptDataMap.get(scriptId) || null;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Target} target
|
| - * @param {!WebInspector.DebuggerWorkspaceBinding.Location} location
|
| - */
|
| - _registerCallFrameLiveLocation: function(target, location)
|
| - {
|
| - var locations = this._targetToData.get(target).callFrameLocations;
|
| - locations.add(location);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.DebuggerWorkspaceBinding.Location} location
|
| - */
|
| - _removeLiveLocation: function(location)
|
| - {
|
| - var info = this._infoForScript(location._script.target(), location._script.scriptId);
|
| - if (info)
|
| - info._removeLocation(location);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _debuggerResumed: function(event)
|
| - {
|
| - var debuggerModel = /** @type {!WebInspector.DebuggerModel} */ (event.target);
|
| - this._reset(debuggerModel.target());
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _beforeDebuggerPaused: function(event)
|
| - {
|
| - var rawLocation = event.data.callFrames[0].location();
|
| - var targetData = this._targetToData.get(rawLocation.target());
|
| - if (!targetData._compilerMapping.mapsToSourceCode(rawLocation)) {
|
| - event.stopPropagation();
|
| - event.preventDefault();
|
| - }
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!WebInspector.Target} target
|
| + */
|
| + targetAdded(target) {
|
| + var debuggerModel = WebInspector.DebuggerModel.fromTarget(target);
|
| + if (debuggerModel)
|
| + this._targetToData.set(target, new WebInspector.DebuggerWorkspaceBinding.TargetData(debuggerModel, this));
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {!WebInspector.Target} target
|
| + */
|
| + targetRemoved(target) {
|
| + if (!WebInspector.DebuggerModel.fromTarget(target))
|
| + return;
|
| + var targetData = this._targetToData.get(target);
|
| + targetData._dispose();
|
| + this._targetToData.remove(target);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _uiSourceCodeRemoved(event) {
|
| + var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data);
|
| + var targetDatas = this._targetToData.valuesArray();
|
| + for (var i = 0; i < targetDatas.length; ++i)
|
| + targetDatas[i]._uiSourceCodeRemoved(uiSourceCode);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _projectRemoved(event) {
|
| + var project = /** @type {!WebInspector.Project} */ (event.data);
|
| + var targetDatas = this._targetToData.valuesArray();
|
| + var uiSourceCodes = project.uiSourceCodes();
|
| + for (var i = 0; i < targetDatas.length; ++i) {
|
| + for (var j = 0; j < uiSourceCodes.length; ++j)
|
| + targetDatas[i]._uiSourceCodeRemoved(uiSourceCodes[j]);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Script} script
|
| + * @param {!WebInspector.DebuggerSourceMapping} sourceMapping
|
| + */
|
| + pushSourceMapping(script, sourceMapping) {
|
| + var info = this._ensureInfoForScript(script);
|
| + info._pushSourceMapping(sourceMapping);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Script} script
|
| + * @return {!WebInspector.DebuggerSourceMapping}
|
| + */
|
| + popSourceMapping(script) {
|
| + var info = this._infoForScript(script.target(), script.scriptId);
|
| + console.assert(info);
|
| + return info._popSourceMapping();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Target} target
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {?WebInspector.DebuggerSourceMapping} sourceMapping
|
| + */
|
| + setSourceMapping(target, uiSourceCode, sourceMapping) {
|
| + var data = this._targetToData.get(target);
|
| + if (data)
|
| + data._setSourceMapping(uiSourceCode, sourceMapping);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Script} script
|
| + */
|
| + updateLocations(script) {
|
| + var info = this._infoForScript(script.target(), script.scriptId);
|
| + if (info)
|
| + info._updateLocations();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.DebuggerModel.Location} rawLocation
|
| + * @param {function(!WebInspector.LiveLocation)} updateDelegate
|
| + * @param {!WebInspector.LiveLocationPool} locationPool
|
| + * @return {!WebInspector.DebuggerWorkspaceBinding.Location}
|
| + */
|
| + createLiveLocation(rawLocation, updateDelegate, locationPool) {
|
| + var info = this._infoForScript(rawLocation.target(), rawLocation.scriptId);
|
| + console.assert(info);
|
| + var location = new WebInspector.DebuggerWorkspaceBinding.Location(
|
| + info._script, rawLocation, this, updateDelegate, locationPool);
|
| + info._addLocation(location);
|
| + return location;
|
| + }
|
| +
|
| + /**
|
| + * @param {!Array<!WebInspector.DebuggerModel.Location>} rawLocations
|
| + * @param {function(!WebInspector.LiveLocation)} updateDelegate
|
| + * @param {!WebInspector.LiveLocationPool} locationPool
|
| + * @return {!WebInspector.LiveLocation}
|
| + */
|
| + createStackTraceTopFrameLiveLocation(rawLocations, updateDelegate, locationPool) {
|
| + console.assert(rawLocations.length);
|
| + var location = new WebInspector.DebuggerWorkspaceBinding.StackTraceTopFrameLocation(
|
| + rawLocations, this, updateDelegate, locationPool);
|
| + location.update();
|
| + return location;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.DebuggerModel.Location} location
|
| + * @param {function(!WebInspector.LiveLocation)} updateDelegate
|
| + * @param {!WebInspector.LiveLocationPool} locationPool
|
| + * @return {?WebInspector.DebuggerWorkspaceBinding.Location}
|
| + */
|
| + createCallFrameLiveLocation(location, updateDelegate, locationPool) {
|
| + var script = location.script();
|
| + if (!script)
|
| + return null;
|
| + var target = location.target();
|
| + this._ensureInfoForScript(script);
|
| + var liveLocation = this.createLiveLocation(location, updateDelegate, locationPool);
|
| + this._registerCallFrameLiveLocation(target, liveLocation);
|
| + return liveLocation;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.DebuggerModel.Location} rawLocation
|
| + * @return {!WebInspector.UILocation}
|
| + */
|
| + rawLocationToUILocation(rawLocation) {
|
| + var info = this._infoForScript(rawLocation.target(), rawLocation.scriptId);
|
| + console.assert(info);
|
| + return info._rawLocationToUILocation(rawLocation);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Target} target
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {number} lineNumber
|
| + * @param {number} columnNumber
|
| + * @return {?WebInspector.DebuggerModel.Location}
|
| + */
|
| + uiLocationToRawLocation(target, uiSourceCode, lineNumber, columnNumber) {
|
| + var targetData = this._targetToData.get(target);
|
| + return targetData ? /** @type {?WebInspector.DebuggerModel.Location} */ (
|
| + targetData._uiLocationToRawLocation(uiSourceCode, lineNumber, columnNumber)) :
|
| + null;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {number} lineNumber
|
| + * @param {number} columnNumber
|
| + * @return {!Array.<!WebInspector.DebuggerModel.Location>}
|
| + */
|
| + uiLocationToRawLocations(uiSourceCode, lineNumber, columnNumber) {
|
| + var result = [];
|
| + var targetDatas = this._targetToData.valuesArray();
|
| + for (var i = 0; i < targetDatas.length; ++i) {
|
| + var rawLocation = targetDatas[i]._uiLocationToRawLocation(uiSourceCode, lineNumber, columnNumber);
|
| + if (rawLocation)
|
| + result.push(rawLocation);
|
| + }
|
| + return result;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UILocation} uiLocation
|
| + * @return {!WebInspector.UILocation}
|
| + */
|
| + normalizeUILocation(uiLocation) {
|
| + var target = WebInspector.NetworkProject.targetForUISourceCode(uiLocation.uiSourceCode);
|
| + if (target) {
|
| + var rawLocation =
|
| + this.uiLocationToRawLocation(target, uiLocation.uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber);
|
| + if (rawLocation)
|
| + return this.rawLocationToUILocation(rawLocation);
|
| + }
|
| + return uiLocation;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {number} lineNumber
|
| + * @return {boolean}
|
| + */
|
| + uiLineHasMapping(uiSourceCode, lineNumber) {
|
| + var targetDatas = this._targetToData.valuesArray();
|
| + for (var i = 0; i < targetDatas.length; ++i) {
|
| + if (!targetDatas[i]._uiLineHasMapping(uiSourceCode, lineNumber))
|
| + return false;
|
| }
|
| + return true;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {!WebInspector.Target} target
|
| + * @return {?WebInspector.ResourceScriptFile}
|
| + */
|
| + scriptFile(uiSourceCode, target) {
|
| + var targetData = this._targetToData.get(target);
|
| + return targetData ? targetData._resourceMapping.scriptFile(uiSourceCode) : null;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Script} script
|
| + * @return {?WebInspector.TextSourceMap}
|
| + */
|
| + sourceMapForScript(script) {
|
| + var targetData = this._targetToData.get(script.target());
|
| + if (!targetData)
|
| + return null;
|
| + return targetData._compilerMapping.sourceMapForScript(script);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Script} script
|
| + */
|
| + maybeLoadSourceMap(script) {
|
| + var targetData = this._targetToData.get(script.target());
|
| + if (!targetData)
|
| + return;
|
| + targetData._compilerMapping.maybeLoadSourceMap(script);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _globalObjectCleared(event) {
|
| + var debuggerModel = /** @type {!WebInspector.DebuggerModel} */ (event.target);
|
| + this._reset(debuggerModel.target());
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Target} target
|
| + */
|
| + _reset(target) {
|
| + var targetData = this._targetToData.get(target);
|
| + targetData.callFrameLocations.valuesArray().forEach((location) => this._removeLiveLocation(location));
|
| + targetData.callFrameLocations.clear();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Script} script
|
| + * @return {!WebInspector.DebuggerWorkspaceBinding.ScriptInfo}
|
| + */
|
| + _ensureInfoForScript(script) {
|
| + var scriptDataMap = this._targetToData.get(script.target()).scriptDataMap;
|
| + var info = scriptDataMap.get(script.scriptId);
|
| + if (!info) {
|
| + info = new WebInspector.DebuggerWorkspaceBinding.ScriptInfo(script);
|
| + scriptDataMap.set(script.scriptId, info);
|
| + }
|
| + return info;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Target} target
|
| + * @param {string} scriptId
|
| + * @return {?WebInspector.DebuggerWorkspaceBinding.ScriptInfo}
|
| + */
|
| + _infoForScript(target, scriptId) {
|
| + var data = this._targetToData.get(target);
|
| + if (!data)
|
| + return null;
|
| + return data.scriptDataMap.get(scriptId) || null;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Target} target
|
| + * @param {!WebInspector.DebuggerWorkspaceBinding.Location} location
|
| + */
|
| + _registerCallFrameLiveLocation(target, location) {
|
| + var locations = this._targetToData.get(target).callFrameLocations;
|
| + locations.add(location);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.DebuggerWorkspaceBinding.Location} location
|
| + */
|
| + _removeLiveLocation(location) {
|
| + var info = this._infoForScript(location._script.target(), location._script.scriptId);
|
| + if (info)
|
| + info._removeLocation(location);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _debuggerResumed(event) {
|
| + var debuggerModel = /** @type {!WebInspector.DebuggerModel} */ (event.target);
|
| + this._reset(debuggerModel.target());
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _beforeDebuggerPaused(event) {
|
| + var rawLocation = event.data.callFrames[0].location();
|
| + var targetData = this._targetToData.get(rawLocation.target());
|
| + if (!targetData._compilerMapping.mapsToSourceCode(rawLocation)) {
|
| + event.stopPropagation();
|
| + event.preventDefault();
|
| + }
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| - * @param {!WebInspector.DebuggerModel} debuggerModel
|
| - * @param {!WebInspector.DebuggerWorkspaceBinding} debuggerWorkspaceBinding
|
| + * @unrestricted
|
| */
|
| -WebInspector.DebuggerWorkspaceBinding.TargetData = function(debuggerModel, debuggerWorkspaceBinding)
|
| -{
|
| +WebInspector.DebuggerWorkspaceBinding.TargetData = class {
|
| + /**
|
| + * @param {!WebInspector.DebuggerModel} debuggerModel
|
| + * @param {!WebInspector.DebuggerWorkspaceBinding} debuggerWorkspaceBinding
|
| + */
|
| + constructor(debuggerModel, debuggerWorkspaceBinding) {
|
| this._target = debuggerModel.target();
|
|
|
| /** @type {!Map.<string, !WebInspector.DebuggerWorkspaceBinding.ScriptInfo>} */
|
| @@ -382,96 +366,98 @@ WebInspector.DebuggerWorkspaceBinding.TargetData = function(debuggerModel, debug
|
| var networkMapping = debuggerWorkspaceBinding._networkMapping;
|
|
|
| this._defaultMapping = new WebInspector.DefaultScriptMapping(debuggerModel, workspace, debuggerWorkspaceBinding);
|
| - this._resourceMapping = new WebInspector.ResourceScriptMapping(debuggerModel, workspace, networkMapping, debuggerWorkspaceBinding);
|
| - this._compilerMapping = new WebInspector.CompilerScriptMapping(debuggerModel, workspace, networkMapping, WebInspector.NetworkProject.forTarget(this._target), debuggerWorkspaceBinding);
|
| + this._resourceMapping =
|
| + new WebInspector.ResourceScriptMapping(debuggerModel, workspace, networkMapping, debuggerWorkspaceBinding);
|
| + this._compilerMapping = new WebInspector.CompilerScriptMapping(
|
| + debuggerModel, workspace, networkMapping, WebInspector.NetworkProject.forTarget(this._target),
|
| + debuggerWorkspaceBinding);
|
|
|
| /** @type {!Map.<!WebInspector.UISourceCode, !WebInspector.DebuggerSourceMapping>} */
|
| this._uiSourceCodeToSourceMapping = new Map();
|
|
|
| this._eventListeners = [
|
| - debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ParsedScriptSource, this._parsedScriptSource, this),
|
| - debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.FailedToParseScriptSource, this._parsedScriptSource, this)
|
| + debuggerModel.addEventListener(
|
| + WebInspector.DebuggerModel.Events.ParsedScriptSource, this._parsedScriptSource, this),
|
| + debuggerModel.addEventListener(
|
| + WebInspector.DebuggerModel.Events.FailedToParseScriptSource, this._parsedScriptSource, this)
|
| ];
|
| -};
|
| -
|
| -WebInspector.DebuggerWorkspaceBinding.TargetData.prototype = {
|
| - /**
|
| - * @param {!WebInspector.Event} event
|
| - */
|
| - _parsedScriptSource: function(event)
|
| - {
|
| - var script = /** @type {!WebInspector.Script} */ (event.data);
|
| - this._defaultMapping.addScript(script);
|
| - this._resourceMapping.addScript(script);
|
| -
|
| - if (WebInspector.moduleSetting("jsSourceMapsEnabled").get())
|
| - this._compilerMapping.addScript(script);
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {?WebInspector.DebuggerSourceMapping} sourceMapping
|
| - */
|
| - _setSourceMapping: function(uiSourceCode, sourceMapping)
|
| - {
|
| - if (this._uiSourceCodeToSourceMapping.get(uiSourceCode) === sourceMapping)
|
| - return;
|
| -
|
| - if (sourceMapping)
|
| - this._uiSourceCodeToSourceMapping.set(uiSourceCode, sourceMapping);
|
| - else
|
| - this._uiSourceCodeToSourceMapping.remove(uiSourceCode);
|
| -
|
| - uiSourceCode.dispatchEventToListeners(WebInspector.UISourceCode.Events.SourceMappingChanged, {target: this._target, isIdentity: sourceMapping ? sourceMapping.isIdentity() : false});
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {number} lineNumber
|
| - * @param {number} columnNumber
|
| - * @return {?WebInspector.DebuggerModel.Location}
|
| - */
|
| - _uiLocationToRawLocation: function(uiSourceCode, lineNumber, columnNumber)
|
| - {
|
| - var sourceMapping = this._uiSourceCodeToSourceMapping.get(uiSourceCode);
|
| - return sourceMapping ? sourceMapping.uiLocationToRawLocation(uiSourceCode, lineNumber, columnNumber) : null;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {number} lineNumber
|
| - * @return {boolean}
|
| - */
|
| - _uiLineHasMapping: function(uiSourceCode, lineNumber)
|
| - {
|
| - var sourceMapping = this._uiSourceCodeToSourceMapping.get(uiSourceCode);
|
| - return sourceMapping ? sourceMapping.uiLineHasMapping(uiSourceCode, lineNumber) : true;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - */
|
| - _uiSourceCodeRemoved: function(uiSourceCode)
|
| - {
|
| - this._uiSourceCodeToSourceMapping.remove(uiSourceCode);
|
| - },
|
| -
|
| - _dispose: function()
|
| - {
|
| - WebInspector.EventTarget.removeEventListeners(this._eventListeners);
|
| - this._compilerMapping.dispose();
|
| - this._resourceMapping.dispose();
|
| - this._defaultMapping.dispose();
|
| - this._uiSourceCodeToSourceMapping.clear();
|
| - }
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.Event} event
|
| + */
|
| + _parsedScriptSource(event) {
|
| + var script = /** @type {!WebInspector.Script} */ (event.data);
|
| + this._defaultMapping.addScript(script);
|
| + this._resourceMapping.addScript(script);
|
| +
|
| + if (WebInspector.moduleSetting('jsSourceMapsEnabled').get())
|
| + this._compilerMapping.addScript(script);
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {?WebInspector.DebuggerSourceMapping} sourceMapping
|
| + */
|
| + _setSourceMapping(uiSourceCode, sourceMapping) {
|
| + if (this._uiSourceCodeToSourceMapping.get(uiSourceCode) === sourceMapping)
|
| + return;
|
| +
|
| + if (sourceMapping)
|
| + this._uiSourceCodeToSourceMapping.set(uiSourceCode, sourceMapping);
|
| + else
|
| + this._uiSourceCodeToSourceMapping.remove(uiSourceCode);
|
| +
|
| + uiSourceCode.dispatchEventToListeners(
|
| + WebInspector.UISourceCode.Events.SourceMappingChanged,
|
| + {target: this._target, isIdentity: sourceMapping ? sourceMapping.isIdentity() : false});
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {number} lineNumber
|
| + * @param {number} columnNumber
|
| + * @return {?WebInspector.DebuggerModel.Location}
|
| + */
|
| + _uiLocationToRawLocation(uiSourceCode, lineNumber, columnNumber) {
|
| + var sourceMapping = this._uiSourceCodeToSourceMapping.get(uiSourceCode);
|
| + return sourceMapping ? sourceMapping.uiLocationToRawLocation(uiSourceCode, lineNumber, columnNumber) : null;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {number} lineNumber
|
| + * @return {boolean}
|
| + */
|
| + _uiLineHasMapping(uiSourceCode, lineNumber) {
|
| + var sourceMapping = this._uiSourceCodeToSourceMapping.get(uiSourceCode);
|
| + return sourceMapping ? sourceMapping.uiLineHasMapping(uiSourceCode, lineNumber) : true;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + */
|
| + _uiSourceCodeRemoved(uiSourceCode) {
|
| + this._uiSourceCodeToSourceMapping.remove(uiSourceCode);
|
| + }
|
| +
|
| + _dispose() {
|
| + WebInspector.EventTarget.removeEventListeners(this._eventListeners);
|
| + this._compilerMapping.dispose();
|
| + this._resourceMapping.dispose();
|
| + this._defaultMapping.dispose();
|
| + this._uiSourceCodeToSourceMapping.clear();
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| - * @param {!WebInspector.Script} script
|
| + * @unrestricted
|
| */
|
| -WebInspector.DebuggerWorkspaceBinding.ScriptInfo = function(script)
|
| -{
|
| +WebInspector.DebuggerWorkspaceBinding.ScriptInfo = class {
|
| + /**
|
| + * @param {!WebInspector.Script} script
|
| + */
|
| + constructor(script) {
|
| this._script = script;
|
|
|
| /** @type {!Array.<!WebInspector.DebuggerSourceMapping>} */
|
| @@ -479,221 +465,199 @@ WebInspector.DebuggerWorkspaceBinding.ScriptInfo = function(script)
|
|
|
| /** @type {!Set<!WebInspector.LiveLocation>} */
|
| this._locations = new Set();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.DebuggerSourceMapping} sourceMapping
|
| + */
|
| + _pushSourceMapping(sourceMapping) {
|
| + this._sourceMappings.push(sourceMapping);
|
| + this._updateLocations();
|
| + }
|
| +
|
| + /**
|
| + * @return {!WebInspector.DebuggerSourceMapping}
|
| + */
|
| + _popSourceMapping() {
|
| + var sourceMapping = this._sourceMappings.pop();
|
| + this._updateLocations();
|
| + return sourceMapping;
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.LiveLocation} location
|
| + */
|
| + _addLocation(location) {
|
| + this._locations.add(location);
|
| + location.update();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.LiveLocation} location
|
| + */
|
| + _removeLocation(location) {
|
| + this._locations.delete(location);
|
| + }
|
| +
|
| + _updateLocations() {
|
| + for (var location of this._locations)
|
| + location.update();
|
| + }
|
| +
|
| + /**
|
| + * @param {!WebInspector.DebuggerModel.Location} rawLocation
|
| + * @return {!WebInspector.UILocation}
|
| + */
|
| + _rawLocationToUILocation(rawLocation) {
|
| + var uiLocation;
|
| + for (var i = this._sourceMappings.length - 1; !uiLocation && i >= 0; --i)
|
| + uiLocation = this._sourceMappings[i].rawLocationToUILocation(rawLocation);
|
| + console.assert(uiLocation, 'Script raw location cannot be mapped to any UI location.');
|
| + return /** @type {!WebInspector.UILocation} */ (uiLocation);
|
| + }
|
| };
|
|
|
| -WebInspector.DebuggerWorkspaceBinding.ScriptInfo.prototype = {
|
| - /**
|
| - * @param {!WebInspector.DebuggerSourceMapping} sourceMapping
|
| - */
|
| - _pushSourceMapping: function(sourceMapping)
|
| - {
|
| - this._sourceMappings.push(sourceMapping);
|
| - this._updateLocations();
|
| - },
|
| -
|
| - /**
|
| - * @return {!WebInspector.DebuggerSourceMapping}
|
| - */
|
| - _popSourceMapping: function()
|
| - {
|
| - var sourceMapping = this._sourceMappings.pop();
|
| - this._updateLocations();
|
| - return sourceMapping;
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.LiveLocation} location
|
| - */
|
| - _addLocation: function(location)
|
| - {
|
| - this._locations.add(location);
|
| - location.update();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.LiveLocation} location
|
| - */
|
| - _removeLocation: function(location)
|
| - {
|
| - this._locations.delete(location);
|
| - },
|
| -
|
| - _updateLocations: function()
|
| - {
|
| - for (var location of this._locations)
|
| - location.update();
|
| - },
|
| -
|
| - /**
|
| - * @param {!WebInspector.DebuggerModel.Location} rawLocation
|
| - * @return {!WebInspector.UILocation}
|
| - */
|
| - _rawLocationToUILocation: function(rawLocation)
|
| - {
|
| - var uiLocation;
|
| - for (var i = this._sourceMappings.length - 1; !uiLocation && i >= 0; --i)
|
| - uiLocation = this._sourceMappings[i].rawLocationToUILocation(rawLocation);
|
| - console.assert(uiLocation, "Script raw location cannot be mapped to any UI location.");
|
| - return /** @type {!WebInspector.UILocation} */ (uiLocation);
|
| - }
|
| -};
|
| -
|
| -
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.LiveLocationWithPool}
|
| - * @param {!WebInspector.Script} script
|
| - * @param {!WebInspector.DebuggerModel.Location} rawLocation
|
| - * @param {!WebInspector.DebuggerWorkspaceBinding} binding
|
| - * @param {function(!WebInspector.LiveLocation)} updateDelegate
|
| - * @param {!WebInspector.LiveLocationPool} locationPool
|
| + * @unrestricted
|
| */
|
| -WebInspector.DebuggerWorkspaceBinding.Location = function(script, rawLocation, binding, updateDelegate, locationPool)
|
| -{
|
| - WebInspector.LiveLocationWithPool.call(this, updateDelegate, locationPool);
|
| +WebInspector.DebuggerWorkspaceBinding.Location = class extends WebInspector.LiveLocationWithPool {
|
| + /**
|
| + * @param {!WebInspector.Script} script
|
| + * @param {!WebInspector.DebuggerModel.Location} rawLocation
|
| + * @param {!WebInspector.DebuggerWorkspaceBinding} binding
|
| + * @param {function(!WebInspector.LiveLocation)} updateDelegate
|
| + * @param {!WebInspector.LiveLocationPool} locationPool
|
| + */
|
| + constructor(script, rawLocation, binding, updateDelegate, locationPool) {
|
| + super(updateDelegate, locationPool);
|
| this._script = script;
|
| this._rawLocation = rawLocation;
|
| this._binding = binding;
|
| -};
|
| -
|
| -WebInspector.DebuggerWorkspaceBinding.Location.prototype = {
|
| - /**
|
| - * @override
|
| - * @return {!WebInspector.UILocation}
|
| - */
|
| - uiLocation: function()
|
| - {
|
| - var debuggerModelLocation = this._rawLocation;
|
| - return this._binding.rawLocationToUILocation(debuggerModelLocation);
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - */
|
| - dispose: function()
|
| - {
|
| - WebInspector.LiveLocationWithPool.prototype.dispose.call(this);
|
| - this._binding._removeLiveLocation(this);
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @return {boolean}
|
| - */
|
| - isBlackboxed: function()
|
| - {
|
| - return WebInspector.blackboxManager.isBlackboxedRawLocation(this._rawLocation);
|
| - },
|
| -
|
| - __proto__: WebInspector.LiveLocationWithPool.prototype
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {!WebInspector.UILocation}
|
| + */
|
| + uiLocation() {
|
| + var debuggerModelLocation = this._rawLocation;
|
| + return this._binding.rawLocationToUILocation(debuggerModelLocation);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + dispose() {
|
| + super.dispose();
|
| + this._binding._removeLiveLocation(this);
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {boolean}
|
| + */
|
| + isBlackboxed() {
|
| + return WebInspector.blackboxManager.isBlackboxedRawLocation(this._rawLocation);
|
| + }
|
| };
|
|
|
| /**
|
| - * @constructor
|
| - * @extends {WebInspector.LiveLocationWithPool}
|
| - * @param {!Array<!WebInspector.DebuggerModel.Location>} rawLocations
|
| - * @param {!WebInspector.DebuggerWorkspaceBinding} binding
|
| - * @param {function(!WebInspector.LiveLocation)} updateDelegate
|
| - * @param {!WebInspector.LiveLocationPool} locationPool
|
| + * @unrestricted
|
| */
|
| -WebInspector.DebuggerWorkspaceBinding.StackTraceTopFrameLocation = function(rawLocations, binding, updateDelegate, locationPool)
|
| -{
|
| - WebInspector.LiveLocationWithPool.call(this, updateDelegate, locationPool);
|
| +WebInspector.DebuggerWorkspaceBinding.StackTraceTopFrameLocation = class extends WebInspector.LiveLocationWithPool {
|
| + /**
|
| + * @param {!Array<!WebInspector.DebuggerModel.Location>} rawLocations
|
| + * @param {!WebInspector.DebuggerWorkspaceBinding} binding
|
| + * @param {function(!WebInspector.LiveLocation)} updateDelegate
|
| + * @param {!WebInspector.LiveLocationPool} locationPool
|
| + */
|
| + constructor(rawLocations, binding, updateDelegate, locationPool) {
|
| + super(updateDelegate, locationPool);
|
|
|
| this._updateScheduled = true;
|
| /** @type {!Set<!WebInspector.LiveLocation>} */
|
| this._locations = new Set();
|
| for (var location of rawLocations)
|
| - this._locations.add(binding.createLiveLocation(location, this._scheduleUpdate.bind(this), locationPool));
|
| + this._locations.add(binding.createLiveLocation(location, this._scheduleUpdate.bind(this), locationPool));
|
| this._updateLocation();
|
| -};
|
| -
|
| -WebInspector.DebuggerWorkspaceBinding.StackTraceTopFrameLocation.prototype = {
|
| - /**
|
| - * @override
|
| - * @return {!WebInspector.UILocation}
|
| - */
|
| - uiLocation: function()
|
| - {
|
| - return this._current.uiLocation();
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - * @return {boolean}
|
| - */
|
| - isBlackboxed: function()
|
| - {
|
| - return this._current.isBlackboxed();
|
| - },
|
| -
|
| - /**
|
| - * @override
|
| - */
|
| - dispose: function()
|
| - {
|
| - WebInspector.LiveLocationWithPool.prototype.dispose.call(this);
|
| - for (var location of this._locations)
|
| - location.dispose();
|
| - },
|
| -
|
| - _scheduleUpdate: function()
|
| - {
|
| - if (!this._updateScheduled) {
|
| - this._updateScheduled = true;
|
| - setImmediate(this._updateLocation.bind(this));
|
| - }
|
| - },
|
| -
|
| - _updateLocation: function()
|
| - {
|
| - this._updateScheduled = false;
|
| - this._current = this._locations.values().next().value;
|
| - for (var current of this._locations) {
|
| - if (!current.isBlackboxed()) {
|
| - this._current = current;
|
| - break;
|
| - }
|
| - }
|
| - this.update();
|
| - },
|
| -
|
| - __proto__: WebInspector.LiveLocationWithPool.prototype
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {!WebInspector.UILocation}
|
| + */
|
| + uiLocation() {
|
| + return this._current.uiLocation();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @return {boolean}
|
| + */
|
| + isBlackboxed() {
|
| + return this._current.isBlackboxed();
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + */
|
| + dispose() {
|
| + super.dispose();
|
| + for (var location of this._locations)
|
| + location.dispose();
|
| + }
|
| +
|
| + _scheduleUpdate() {
|
| + if (!this._updateScheduled) {
|
| + this._updateScheduled = true;
|
| + setImmediate(this._updateLocation.bind(this));
|
| + }
|
| + }
|
| +
|
| + _updateLocation() {
|
| + this._updateScheduled = false;
|
| + this._current = this._locations.values().next().value;
|
| + for (var current of this._locations) {
|
| + if (!current.isBlackboxed()) {
|
| + this._current = current;
|
| + break;
|
| + }
|
| + }
|
| + this.update();
|
| + }
|
| };
|
|
|
| /**
|
| * @interface
|
| */
|
| -WebInspector.DebuggerSourceMapping = function()
|
| -{
|
| -};
|
| +WebInspector.DebuggerSourceMapping = function() {};
|
|
|
| WebInspector.DebuggerSourceMapping.prototype = {
|
| - /**
|
| - * @param {!WebInspector.DebuggerModel.Location} rawLocation
|
| - * @return {?WebInspector.UILocation}
|
| - */
|
| - rawLocationToUILocation: function(rawLocation) { },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {number} lineNumber
|
| - * @param {number} columnNumber
|
| - * @return {?WebInspector.DebuggerModel.Location}
|
| - */
|
| - uiLocationToRawLocation: function(uiSourceCode, lineNumber, columnNumber) { },
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - isIdentity: function() { },
|
| -
|
| - /**
|
| - * @param {!WebInspector.UISourceCode} uiSourceCode
|
| - * @param {number} lineNumber
|
| - * @return {boolean}
|
| - */
|
| - uiLineHasMapping: function(uiSourceCode, lineNumber) { }
|
| + /**
|
| + * @param {!WebInspector.DebuggerModel.Location} rawLocation
|
| + * @return {?WebInspector.UILocation}
|
| + */
|
| + rawLocationToUILocation: function(rawLocation) {},
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {number} lineNumber
|
| + * @param {number} columnNumber
|
| + * @return {?WebInspector.DebuggerModel.Location}
|
| + */
|
| + uiLocationToRawLocation: function(uiSourceCode, lineNumber, columnNumber) {},
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + isIdentity: function() {},
|
| +
|
| + /**
|
| + * @param {!WebInspector.UISourceCode} uiSourceCode
|
| + * @param {number} lineNumber
|
| + * @return {boolean}
|
| + */
|
| + uiLineHasMapping: function(uiSourceCode, lineNumber) {}
|
| };
|
|
|
| /**
|
|
|