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

Unified Diff: Source/devtools/front_end/DebuggerModel.js

Issue 220903002: DevTools: wrap DebuggerAgent.Location with DebuggerModel.Location. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: All tests!!! Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/devtools/front_end/DOMModel.js ('k') | Source/devtools/front_end/DefaultScriptMapping.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/devtools/front_end/DebuggerModel.js
diff --git a/Source/devtools/front_end/DebuggerModel.js b/Source/devtools/front_end/DebuggerModel.js
index 35aceea981833c6ab3b45b651641aca8d6efa027..5daa2b0159ef2f6b9dcebc1874595d6c72f772fd 100644
--- a/Source/devtools/front_end/DebuggerModel.js
+++ b/Source/devtools/front_end/DebuggerModel.js
@@ -30,14 +30,15 @@
/**
* @constructor
- * @extends {WebInspector.Object}
+ * @extends {WebInspector.TargetAwareObject}
* @param {!WebInspector.Target} target
*/
WebInspector.DebuggerModel = function(target)
{
+ WebInspector.TargetAwareObject.call(this, target);
+
target.registerDebuggerDispatcher(new WebInspector.DebuggerDispatcher(this));
this._agent = target.debuggerAgent();
- this._target = target;
/** @type {?WebInspector.DebuggerPausedDetails} */
this._debuggerPausedDetails = null;
@@ -69,20 +70,6 @@ WebInspector.DebuggerModel.PauseOnExceptionsState = {
PauseOnUncaughtExceptions: "uncaught"
};
-/**
- * @constructor
- * @implements {WebInspector.RawLocation}
- * @param {string} scriptId
- * @param {number} lineNumber
- * @param {number} columnNumber
- */
-WebInspector.DebuggerModel.Location = function(scriptId, lineNumber, columnNumber)
-{
- this.scriptId = scriptId;
- this.lineNumber = lineNumber;
- this.columnNumber = columnNumber;
-}
-
WebInspector.DebuggerModel.Events = {
DebuggerWasEnabled: "DebuggerWasEnabled",
DebuggerWasDisabled: "DebuggerWasDisabled",
@@ -191,14 +178,6 @@ WebInspector.DebuggerModel.prototype = {
this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.DebuggerWasDisabled);
},
- /**
- * @param {!WebInspector.DebuggerModel.Location} rawLocation
- */
- continueToLocation: function(rawLocation)
- {
- this._agent.continueToLocation(rawLocation);
- },
-
stepInto: function()
{
/**
@@ -254,7 +233,7 @@ WebInspector.DebuggerModel.prototype = {
*/
setBreakpointByScriptLocation: function(rawLocation, condition, callback)
{
- var script = this.scriptForId(rawLocation.scriptId);
+ var script = rawLocation.script();
if (script.sourceURL)
this.setBreakpointByURL(script.sourceURL, rawLocation.lineNumber, rawLocation.columnNumber, condition, callback);
else
@@ -280,6 +259,7 @@ WebInspector.DebuggerModel.prototype = {
}
columnNumber = Math.max(columnNumber, minColumnNumber);
+ var target = this.target();
/**
* @param {?Protocol.Error} error
* @param {!DebuggerAgent.BreakpointId} breakpointId
@@ -288,7 +268,7 @@ WebInspector.DebuggerModel.prototype = {
function didSetBreakpoint(error, breakpointId, locations)
{
if (callback) {
- var rawLocations = /** @type {!Array.<!WebInspector.DebuggerModel.Location>} */ (locations);
+ var rawLocations = locations.map(WebInspector.DebuggerModel.Location.fromPayload.bind(WebInspector.DebuggerModel.Location, target));
callback(error ? null : breakpointId, rawLocations);
}
}
@@ -303,6 +283,8 @@ WebInspector.DebuggerModel.prototype = {
*/
setBreakpointBySourceId: function(rawLocation, condition, callback)
{
+ var target = this.target();
+
/**
* @param {?Protocol.Error} error
* @param {!DebuggerAgent.BreakpointId} breakpointId
@@ -311,11 +293,11 @@ WebInspector.DebuggerModel.prototype = {
function didSetBreakpoint(error, breakpointId, actualLocation)
{
if (callback) {
- var rawLocation = /** @type {!WebInspector.DebuggerModel.Location} */ (actualLocation);
- callback(error ? null : breakpointId, [rawLocation]);
+ var location = WebInspector.DebuggerModel.Location.fromPayload(target, actualLocation);
+ callback(error ? null : breakpointId, [location]);
}
}
- this._agent.setBreakpoint(rawLocation, condition, didSetBreakpoint);
+ this._agent.setBreakpoint(rawLocation.payload(), condition, didSetBreakpoint);
WebInspector.userMetrics.ScriptsBreakpointSet.record();
},
@@ -345,7 +327,7 @@ WebInspector.DebuggerModel.prototype = {
*/
_breakpointResolved: function(breakpointId, location)
{
- this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.BreakpointResolved, {breakpointId: breakpointId, location: location});
+ this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.BreakpointResolved, {breakpointId: breakpointId, location: WebInspector.DebuggerModel.Location.fromPayload(this.target(), location)});
},
_globalObjectCleared: function()
@@ -461,7 +443,7 @@ WebInspector.DebuggerModel.prototype = {
*/
_pausedScript: function(callFrames, reason, auxData, breakpointIds, asyncStackTrace)
{
- this._setDebuggerPausedDetails(new WebInspector.DebuggerPausedDetails(this._target, callFrames, reason, auxData, breakpointIds, asyncStackTrace));
+ this._setDebuggerPausedDetails(new WebInspector.DebuggerPausedDetails(this.target(), callFrames, reason, auxData, breakpointIds, asyncStackTrace));
},
_resumedScript: function()
@@ -483,7 +465,7 @@ WebInspector.DebuggerModel.prototype = {
*/
_parsedScriptSource: function(scriptId, sourceURL, startLine, startColumn, endLine, endColumn, isContentScript, sourceMapURL, hasSourceURL)
{
- var script = new WebInspector.Script(scriptId, sourceURL, startLine, startColumn, endLine, endColumn, isContentScript, sourceMapURL, hasSourceURL);
+ var script = new WebInspector.Script(this.target(), scriptId, sourceURL, startLine, startColumn, endLine, endColumn, isContentScript, sourceMapURL, hasSourceURL);
this._registerScript(script);
this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.ParsedScriptSource, script);
},
@@ -515,7 +497,7 @@ WebInspector.DebuggerModel.prototype = {
{
if (script.sourceURL)
return this.createRawLocationByURL(script.sourceURL, lineNumber, columnNumber)
- return new WebInspector.DebuggerModel.Location(script.scriptId, lineNumber, columnNumber);
+ return new WebInspector.DebuggerModel.Location(this.target(), script.scriptId, lineNumber, columnNumber);
},
/**
@@ -539,7 +521,7 @@ WebInspector.DebuggerModel.prototype = {
closestScript = script;
break;
}
- return closestScript ? new WebInspector.DebuggerModel.Location(closestScript.scriptId, lineNumber, columnNumber) : null;
+ return closestScript ? new WebInspector.DebuggerModel.Location(this.target(), closestScript.scriptId, lineNumber, columnNumber) : null;
},
/**
@@ -593,7 +575,7 @@ WebInspector.DebuggerModel.prototype = {
else if (returnByValue)
callback(null, !!wasThrown, wasThrown ? null : result);
else
- callback(this._target.runtimeModel.createRemoteObject(result), !!wasThrown);
+ callback(this.target().runtimeModel.createRemoteObject(result), !!wasThrown);
if (objectGroup === "console")
this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.ConsoleCommandEvaluatedInSelectedCallFrame);
@@ -625,7 +607,7 @@ WebInspector.DebuggerModel.prototype = {
for (var i = 0; i < selectedCallFrame.scopeChain.length; ++i) {
var scope = selectedCallFrame.scopeChain[i];
- var object = this._target.runtimeModel.createRemoteObject(scope.object);
+ var object = this.target().runtimeModel.createRemoteObject(scope.object);
pendingRequests++;
object.getAllProperties(false, propertiesCollected);
}
@@ -698,7 +680,30 @@ WebInspector.DebuggerModel.prototype = {
this._agent.skipStackFrames(patternParameter);
},
- __proto__: WebInspector.Object.prototype
+ /**
+ * @param {!WebInspector.RemoteObject} remoteObject
+ * @param {function(?DebuggerAgent.FunctionDetails)} callback
+ */
+ functionDetails: function(remoteObject, callback)
+ {
+ this._agent.getFunctionDetails(remoteObject.objectId, didGetDetails);
+
+ /**
+ * @param {?Protocol.Error} error
+ * @param {!DebuggerAgent.FunctionDetails} response
+ */
+ function didGetDetails(error, response)
+ {
+ if (error) {
+ console.error(error);
+ callback(null);
+ return;
+ }
+ callback(response);
+ }
+ },
+
+ __proto__: WebInspector.TargetAwareObject.prototype
}
WebInspector.DebuggerEventTypes = {
@@ -785,6 +790,75 @@ WebInspector.DebuggerDispatcher.prototype = {
/**
* @constructor
+ * @implements {WebInspector.RawLocation}
+ * @extends {WebInspector.TargetAware}
+ * @param {!WebInspector.Target} target
+ * @param {string} scriptId
+ * @param {number} lineNumber
+ * @param {number=} columnNumber
+ */
+WebInspector.DebuggerModel.Location = function(target, scriptId, lineNumber, columnNumber)
+{
+ WebInspector.TargetAware.call(this, target);
+ this._debuggerModel = target.debuggerModel;
+ this.scriptId = scriptId;
+ this.lineNumber = lineNumber;
+ this.columnNumber = columnNumber;
+}
+
+/**
+ * @param {!WebInspector.Target} target
+ * @param {!DebuggerAgent.Location} payload
+ */
+WebInspector.DebuggerModel.Location.fromPayload = function(target, payload)
+{
+ return new WebInspector.DebuggerModel.Location(target, payload.scriptId, payload.lineNumber, payload.columnNumber);
+}
+
+WebInspector.DebuggerModel.Location.prototype = {
+ /**
+ * @return {!DebuggerAgent.Location}
+ */
+ payload: function()
+ {
+ return { scriptId: this.scriptId, lineNumber: this.lineNumber, columnNumber: this.columnNumber };
+ },
+
+ /**
+ * @return {!WebInspector.Script}
+ */
+ script: function()
+ {
+ return this._debuggerModel.scriptForId(this.scriptId);
+ },
+
+ /**
+ * @param {function(!WebInspector.UILocation):(boolean|undefined)} updateDelegate
+ * @return {!WebInspector.Script.Location}
+ */
+ createLiveLocation: function(updateDelegate)
+ {
+ return this._debuggerModel.createLiveLocation(this, updateDelegate);
+ },
+
+ /**
+ * @return {?WebInspector.UILocation}
+ */
+ toUILocation: function()
+ {
+ return this._debuggerModel.rawLocationToUILocation(this);
+ },
+
+ continueToLocation: function()
+ {
+ this._debuggerModel._agent.continueToLocation(this.payload());
+ },
+
+ __proto__: WebInspector.TargetAware.prototype
+}
+
+/**
+ * @constructor
* @extends {WebInspector.TargetAware}
* @param {!WebInspector.Target} target
* @param {!WebInspector.Script} script
@@ -798,8 +872,9 @@ WebInspector.DebuggerModel.CallFrame = function(target, script, payload, isAsync
this._script = script;
this._payload = payload;
/** @type {!Array.<!WebInspector.Script.Location>} */
- this._locations = [];
+ this._liveLocations = [];
this._isAsync = isAsync;
+ this._location = WebInspector.DebuggerModel.Location.fromPayload(target, payload.location);
}
/**
@@ -881,10 +956,9 @@ WebInspector.DebuggerModel.CallFrame.prototype = {
/**
* @return {!WebInspector.DebuggerModel.Location}
*/
- get location()
+ location: function()
{
- var rawLocation = /** @type {!WebInspector.DebuggerModel.Location} */ (this._payload.location);
- return rawLocation;
+ return this._location;
},
/**
@@ -951,16 +1025,16 @@ WebInspector.DebuggerModel.CallFrame.prototype = {
*/
createLiveLocation: function(updateDelegate)
{
- var location = this._script.createLiveLocation(this.location, updateDelegate);
- this._locations.push(location);
- return location;
+ var liveLocation = this._location.createLiveLocation(updateDelegate);
+ this._liveLocations.push(liveLocation);
+ return liveLocation;
},
dispose: function()
{
- for (var i = 0; i < this._locations.length; ++i)
- this._locations[i].dispose();
- this._locations = [];
+ for (var i = 0; i < this._liveLocations.length; ++i)
+ this._liveLocations[i].dispose();
+ this._liveLocations = [];
},
__proto__: WebInspector.TargetAware.prototype
« no previous file with comments | « Source/devtools/front_end/DOMModel.js ('k') | Source/devtools/front_end/DefaultScriptMapping.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698