2011-03-14 Pavel Podivilov <podivilov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: move breakpoints restoring to debugger presentation model.
        https://bugs.webkit.org/show_bug.cgi?id=56123

        * http/tests/inspector/debugger-test.js:
        (initialize_DebuggerTest.InspectorTest.completeDebuggerTest.disableDebugger):
2011-03-14  Pavel Podivilov  <podivilov@chromium.org>

        Reviewed by Pavel Feldman.

        Web Inspector: move breakpoints restoring to debugger presentation model.
        https://bugs.webkit.org/show_bug.cgi?id=56123

        DebuggerModel's "breakpoint-added" and "breakpoint-removed" events are gone since
        setBreakpoint/removeBreakpoint are now called from DPM only.

        * inspector/InspectorDebuggerAgent.cpp:
        (WebCore::InspectorDebuggerAgent::disable):
        (WebCore::InspectorDebuggerAgent::enableDebuggerAfterShown):
        * inspector/front-end/DebuggerModel.js:
        (WebInspector.DebuggerModel.prototype.enableDebugger):
        (WebInspector.DebuggerModel.prototype._debuggerWasEnabled):
        (WebInspector.DebuggerModel.prototype._debuggerWasDisabled):
        (WebInspector.DebuggerModel.prototype.setBreakpoint.didSetBreakpoint):
        (WebInspector.DebuggerModel.prototype.setBreakpoint):
        (WebInspector.DebuggerModel.prototype.setBreakpointBySourceId):
        (WebInspector.DebuggerModel.prototype.removeBreakpoint):
        (WebInspector.DebuggerModel.prototype._breakpointResolved):
        (WebInspector.DebuggerModel.prototype.reset):
        (WebInspector.DebuggerDispatcher.prototype.debuggerWasEnabled):
        (WebInspector.DebuggerDispatcher.prototype.debuggerWasDisabled):
        * inspector/front-end/DebuggerPresentationModel.js:
        (WebInspector.DebuggerPresentationModel):
        (WebInspector.DebuggerPresentationModel.prototype._debuggerWasEnabled):
        (WebInspector.DebuggerPresentationModel.prototype._parsedScriptSource):
        (WebInspector.DebuggerPresentationModel.prototype._failedToParseScriptSource):
        (WebInspector.DebuggerPresentationModel.prototype._scriptSourceChanged):
        (WebInspector.DebuggerPresentationModel.prototype.breakpointsForSourceFileId):
        (WebInspector.DebuggerPresentationModel.prototype.setBreakpoint):
        (WebInspector.DebuggerPresentationModel.prototype.setBreakpointEnabled):
        (WebInspector.DebuggerPresentationModel.prototype.updateBreakpoint):
        (WebInspector.DebuggerPresentationModel.prototype.removeBreakpoint):
        (WebInspector.DebuggerPresentationModel.prototype.findBreakpoint):
        (WebInspector.DebuggerPresentationModel.prototype._breakpointAdded):
        (WebInspector.DebuggerPresentationModel.prototype._breakpointRemoved):
        (WebInspector.DebuggerPresentationModel.prototype._breakpointResolved):
        (WebInspector.DebuggerPresentationModel.prototype._restoreBreakpoints):
        (WebInspector.DebuggerPresentationModel.prototype._saveBreakpoints):
        (WebInspector.DebuggerPresentationModel.prototype.reset):
        * inspector/front-end/ScriptsPanel.js:
        (WebInspector.ScriptsPanel):
        (WebInspector.ScriptsPanel.prototype._debuggerWasEnabled):
        (WebInspector.ScriptsPanel.prototype._debuggerWasDisabled):

git-svn-id: svn://svn.chromium.org/blink/trunk@81025 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent c3d82ef1
2011-03-14 Pavel Podivilov <podivilov@chromium.org>
Reviewed by Pavel Feldman.
Web Inspector: move breakpoints restoring to debugger presentation model.
https://bugs.webkit.org/show_bug.cgi?id=56123
* http/tests/inspector/debugger-test.js:
(initialize_DebuggerTest.InspectorTest.completeDebuggerTest.disableDebugger):
2011-03-14 Pavel Feldman <pfeldman@chromium.org> 2011-03-14 Pavel Feldman <pfeldman@chromium.org>
Reviewed by Yury Semikhatsky. Reviewed by Yury Semikhatsky.
...@@ -8,7 +8,7 @@ InspectorTest.startDebuggerTest = function(callback, quiet) ...@@ -8,7 +8,7 @@ InspectorTest.startDebuggerTest = function(callback, quiet)
if (WebInspector.panels.scripts._debuggerEnabled) if (WebInspector.panels.scripts._debuggerEnabled)
startTest(); startTest();
else { else {
InspectorTest.addSniffer(WebInspector.panels.scripts, "debuggerWasEnabled", startTest); InspectorTest.addSniffer(WebInspector.debuggerModel, "_debuggerWasEnabled", startTest);
WebInspector.panels.scripts._toggleDebugging(false); WebInspector.panels.scripts._toggleDebugging(false);
} }
...@@ -35,7 +35,7 @@ InspectorTest.completeDebuggerTest = function() ...@@ -35,7 +35,7 @@ InspectorTest.completeDebuggerTest = function()
if (!scriptsPanel._debuggerEnabled) if (!scriptsPanel._debuggerEnabled)
completeTest(); completeTest();
else { else {
InspectorTest.addSniffer(WebInspector.panels.scripts, "debuggerWasDisabled", completeTest); InspectorTest.addSniffer(WebInspector.debuggerModel, "_debuggerWasDisabled", completeTest);
scriptsPanel._toggleDebugging(false); scriptsPanel._toggleDebugging(false);
} }
} }
......
2011-03-14 Pavel Podivilov <podivilov@chromium.org>
Reviewed by Pavel Feldman.
Web Inspector: move breakpoints restoring to debugger presentation model.
https://bugs.webkit.org/show_bug.cgi?id=56123
DebuggerModel's "breakpoint-added" and "breakpoint-removed" events are gone since
setBreakpoint/removeBreakpoint are now called from DPM only.
* inspector/InspectorDebuggerAgent.cpp:
(WebCore::InspectorDebuggerAgent::disable):
(WebCore::InspectorDebuggerAgent::enableDebuggerAfterShown):
* inspector/front-end/DebuggerModel.js:
(WebInspector.DebuggerModel.prototype.enableDebugger):
(WebInspector.DebuggerModel.prototype._debuggerWasEnabled):
(WebInspector.DebuggerModel.prototype._debuggerWasDisabled):
(WebInspector.DebuggerModel.prototype.setBreakpoint.didSetBreakpoint):
(WebInspector.DebuggerModel.prototype.setBreakpoint):
(WebInspector.DebuggerModel.prototype.setBreakpointBySourceId):
(WebInspector.DebuggerModel.prototype.removeBreakpoint):
(WebInspector.DebuggerModel.prototype._breakpointResolved):
(WebInspector.DebuggerModel.prototype.reset):
(WebInspector.DebuggerDispatcher.prototype.debuggerWasEnabled):
(WebInspector.DebuggerDispatcher.prototype.debuggerWasDisabled):
* inspector/front-end/DebuggerPresentationModel.js:
(WebInspector.DebuggerPresentationModel):
(WebInspector.DebuggerPresentationModel.prototype._debuggerWasEnabled):
(WebInspector.DebuggerPresentationModel.prototype._parsedScriptSource):
(WebInspector.DebuggerPresentationModel.prototype._failedToParseScriptSource):
(WebInspector.DebuggerPresentationModel.prototype._scriptSourceChanged):
(WebInspector.DebuggerPresentationModel.prototype.breakpointsForSourceFileId):
(WebInspector.DebuggerPresentationModel.prototype.setBreakpoint):
(WebInspector.DebuggerPresentationModel.prototype.setBreakpointEnabled):
(WebInspector.DebuggerPresentationModel.prototype.updateBreakpoint):
(WebInspector.DebuggerPresentationModel.prototype.removeBreakpoint):
(WebInspector.DebuggerPresentationModel.prototype.findBreakpoint):
(WebInspector.DebuggerPresentationModel.prototype._breakpointAdded):
(WebInspector.DebuggerPresentationModel.prototype._breakpointRemoved):
(WebInspector.DebuggerPresentationModel.prototype._breakpointResolved):
(WebInspector.DebuggerPresentationModel.prototype._restoreBreakpoints):
(WebInspector.DebuggerPresentationModel.prototype._saveBreakpoints):
(WebInspector.DebuggerPresentationModel.prototype.reset):
* inspector/front-end/ScriptsPanel.js:
(WebInspector.ScriptsPanel):
(WebInspector.ScriptsPanel.prototype._debuggerWasEnabled):
(WebInspector.ScriptsPanel.prototype._debuggerWasDisabled):
2011-03-14 Sheriff Bot <webkit.review.bot@gmail.com> 2011-03-14 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r81015. Unreviewed, rolling out r81015.
......
...@@ -102,6 +102,7 @@ void InspectorDebuggerAgent::disable() ...@@ -102,6 +102,7 @@ void InspectorDebuggerAgent::disable()
if (!enabled()) if (!enabled())
return; return;
m_inspectorState->setBoolean(DebuggerAgentState::debuggerEnabled, false); m_inspectorState->setBoolean(DebuggerAgentState::debuggerEnabled, false);
m_inspectorState->setObject(DebuggerAgentState::javaScriptBreakpoints, InspectorObject::create());
m_instrumentingAgents->setInspectorDebuggerAgent(0); m_instrumentingAgents->setInspectorDebuggerAgent(0);
ScriptDebugServer::shared().removeListener(this, m_inspectedPage); ScriptDebugServer::shared().removeListener(this, m_inspectedPage);
...@@ -131,9 +132,6 @@ void InspectorDebuggerAgent::setFrontend(InspectorFrontend* frontend) ...@@ -131,9 +132,6 @@ void InspectorDebuggerAgent::setFrontend(InspectorFrontend* frontend)
void InspectorDebuggerAgent::enableDebuggerAfterShown() void InspectorDebuggerAgent::enableDebuggerAfterShown()
{ {
// Erase sticky breakpoints. If we are restoring from a cookie setFrontend msut be called
// before the state is loaded from the cookie.
m_inspectorState->setObject(DebuggerAgentState::javaScriptBreakpoints, InspectorObject::create());
if (m_inspectorState->getBoolean(DebuggerAgentState::enableWhenShown)) { if (m_inspectorState->getBoolean(DebuggerAgentState::enableWhenShown)) {
m_inspectorState->setBoolean(DebuggerAgentState::enableWhenShown, false); m_inspectorState->setBoolean(DebuggerAgentState::enableWhenShown, false);
enable(false); enable(false);
......
...@@ -38,13 +38,13 @@ WebInspector.DebuggerModel = function() ...@@ -38,13 +38,13 @@ WebInspector.DebuggerModel = function()
} }
WebInspector.DebuggerModel.Events = { WebInspector.DebuggerModel.Events = {
DebuggerWasEnabled: "debugger-was-enabled",
DebuggerWasDisabled: "debugger-was-disabled",
DebuggerPaused: "debugger-paused", DebuggerPaused: "debugger-paused",
DebuggerResumed: "debugger-resumed", DebuggerResumed: "debugger-resumed",
ParsedScriptSource: "parsed-script-source", ParsedScriptSource: "parsed-script-source",
FailedToParseScriptSource: "failed-to-parse-script-source", FailedToParseScriptSource: "failed-to-parse-script-source",
ScriptSourceChanged: "script-source-changed", ScriptSourceChanged: "script-source-changed",
BreakpointAdded: "breakpoint-added",
BreakpointRemoved: "breakpoint-removed",
BreakpointResolved: "breakpoint-resolved" BreakpointResolved: "breakpoint-resolved"
} }
...@@ -52,17 +52,6 @@ WebInspector.DebuggerModel.prototype = { ...@@ -52,17 +52,6 @@ WebInspector.DebuggerModel.prototype = {
enableDebugger: function() enableDebugger: function()
{ {
DebuggerAgent.enable(); DebuggerAgent.enable();
if (this._breakpointsPushedToBackend)
return;
var breakpoints = WebInspector.settings.breakpoints;
for (var i = 0; i < breakpoints.length; ++i) {
var breakpoint = breakpoints[i];
if (typeof breakpoint.url !== "string" || typeof breakpoint.lineNumber !== "number" || typeof breakpoint.columnNumber !== "number" ||
typeof breakpoint.condition !== "string" || typeof breakpoint.enabled !== "boolean")
continue;
this.setBreakpoint(breakpoint.url, breakpoint.lineNumber, breakpoint.columnNumber, breakpoint.condition, breakpoint.enabled);
}
this._breakpointsPushedToBackend = true;
}, },
disableDebugger: function() disableDebugger: function()
...@@ -70,12 +59,23 @@ WebInspector.DebuggerModel.prototype = { ...@@ -70,12 +59,23 @@ WebInspector.DebuggerModel.prototype = {
DebuggerAgent.disable(); DebuggerAgent.disable();
}, },
_debuggerWasEnabled: function()
{
this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.DebuggerWasEnabled);
},
_debuggerWasDisabled: function()
{
this._breakpoints = {};
this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.DebuggerWasDisabled);
},
continueToLocation: function(sourceID, lineNumber, columnNumber) continueToLocation: function(sourceID, lineNumber, columnNumber)
{ {
DebuggerAgent.continueToLocation(sourceID, lineNumber, columnNumber); DebuggerAgent.continueToLocation(sourceID, lineNumber, columnNumber);
}, },
setBreakpoint: function(url, lineNumber, columnNumber, condition, enabled) setBreakpoint: function(url, lineNumber, columnNumber, condition, enabled, callback)
{ {
// Adjust column if needed. // Adjust column if needed.
var minColumnNumber = 0; var minColumnNumber = 0;
...@@ -86,31 +86,32 @@ WebInspector.DebuggerModel.prototype = { ...@@ -86,31 +86,32 @@ WebInspector.DebuggerModel.prototype = {
} }
columnNumber = Math.max(columnNumber, minColumnNumber); columnNumber = Math.max(columnNumber, minColumnNumber);
function didSetBreakpoint(breakpointsPushedToBackend, error, breakpointId, locations) function didSetBreakpoint(error, breakpointId, locations)
{ {
if (error || !breakpointId) var breakpoint;
return; if (!error && breakpointId) {
breakpoint = new WebInspector.Breakpoint(breakpointId, url, "", lineNumber, columnNumber, condition, enabled);
var breakpoint = new WebInspector.Breakpoint(breakpointId, url, "", lineNumber, columnNumber, condition, enabled); breakpoint.locations = locations;
breakpoint.locations = locations; this._breakpoints[breakpointId] = breakpoint;
this._breakpoints[breakpointId] = breakpoint; }
if (breakpointsPushedToBackend) if (callback)
this._saveBreakpoints(); callback(breakpoint);
this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.BreakpointAdded, breakpoint);
} }
DebuggerAgent.setJavaScriptBreakpoint(url, lineNumber, columnNumber, condition, enabled, didSetBreakpoint.bind(this, this._breakpointsPushedToBackend)); DebuggerAgent.setJavaScriptBreakpoint(url, lineNumber, columnNumber, condition, enabled, didSetBreakpoint.bind(this));
}, },
setBreakpointBySourceId: function(sourceID, lineNumber, columnNumber, condition, enabled) setBreakpointBySourceId: function(sourceID, lineNumber, columnNumber, condition, enabled, callback)
{ {
function didSetBreakpoint(error, breakpointId, actualLineNumber, actualColumnNumber) function didSetBreakpoint(error, breakpointId, actualLineNumber, actualColumnNumber)
{ {
if (error || !breakpointId) var breakpoint;
return; if (!error && breakpointId) {
var breakpoint = new WebInspector.Breakpoint(breakpointId, "", sourceID, lineNumber, columnNumber, condition, enabled); breakpoint = new WebInspector.Breakpoint(breakpointId, "", sourceID, lineNumber, columnNumber, condition, enabled);
breakpoint.addLocation(sourceID, actualLineNumber, actualColumnNumber); breakpoint.addLocation(sourceID, actualLineNumber, actualColumnNumber);
this._breakpoints[breakpointId] = breakpoint; this._breakpoints[breakpointId] = breakpoint;
this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.BreakpointAdded, breakpoint); }
if (callback)
callback(breakpoint);
} }
DebuggerAgent.setJavaScriptBreakpointBySourceId(sourceID, lineNumber, columnNumber, condition, enabled, didSetBreakpoint.bind(this)); DebuggerAgent.setJavaScriptBreakpointBySourceId(sourceID, lineNumber, columnNumber, condition, enabled, didSetBreakpoint.bind(this));
}, },
...@@ -118,77 +119,28 @@ WebInspector.DebuggerModel.prototype = { ...@@ -118,77 +119,28 @@ WebInspector.DebuggerModel.prototype = {
removeBreakpoint: function(breakpointId) removeBreakpoint: function(breakpointId)
{ {
DebuggerAgent.removeJavaScriptBreakpoint(breakpointId); DebuggerAgent.removeJavaScriptBreakpoint(breakpointId);
var breakpoint = this._breakpoints[breakpointId];
delete this._breakpoints[breakpointId]; delete this._breakpoints[breakpointId];
this._saveBreakpoints();
this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.BreakpointRemoved, breakpointId);
},
updateBreakpoint: function(breakpointId, condition, enabled)
{
var breakpoint = this._breakpoints[breakpointId];
this.removeBreakpoint(breakpointId);
if (breakpoint.url)
this.setBreakpoint(breakpoint.url, breakpoint.lineNumber, breakpoint.columnNumber, condition, enabled);
else
this.setBreakpointBySourceId(breakpoint.sourceID, breakpoint.lineNumber, breakpoint.columnNumber, condition, enabled);
}, },
_breakpointResolved: function(breakpointId, sourceID, lineNumber, columnNumber) _breakpointResolved: function(breakpointId, sourceID, lineNumber, columnNumber)
{ {
var breakpoint = this._breakpoints[breakpointId]; var breakpoint = this._breakpoints[breakpointId];
if (!breakpoint)
return;
breakpoint.addLocation(sourceID, lineNumber, columnNumber); breakpoint.addLocation(sourceID, lineNumber, columnNumber);
this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.BreakpointResolved, breakpoint); this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.BreakpointResolved, breakpoint);
}, },
_saveBreakpoints: function()
{
var serializedBreakpoints = [];
for (var id in this._breakpoints) {
var breakpoint = this._breakpoints[id];
if (!breakpoint.url)
continue;
var serializedBreakpoint = {};
serializedBreakpoint.url = breakpoint.url;
serializedBreakpoint.lineNumber = breakpoint.lineNumber;
serializedBreakpoint.columnNumber = breakpoint.columnNumber;
serializedBreakpoint.condition = breakpoint.condition;
serializedBreakpoint.enabled = breakpoint.enabled;
serializedBreakpoints.push(serializedBreakpoint);
}
WebInspector.settings.breakpoints = serializedBreakpoints;
},
get breakpoints() get breakpoints()
{ {
return this._breakpoints; return this._breakpoints;
}, },
breakpointForId: function(breakpointId)
{
return this._breakpoints[breakpointId];
},
queryBreakpoints: function(filter)
{
var breakpoints = [];
for (var id in this._breakpoints) {
var breakpoint = this._breakpoints[id];
if (filter(breakpoint))
breakpoints.push(breakpoint);
}
return breakpoints;
},
reset: function() reset: function()
{ {
this._debuggerPausedDetails = {}; this._debuggerPausedDetails = {};
for (var id in this._breakpoints) { for (var id in this._breakpoints) {
var breakpoint = this._breakpoints[id]; var breakpoint = this._breakpoints[id];
if (!breakpoint.url) if (!breakpoint.url)
this.removeBreakpoint(id); delete this._breakpoints[id];
else else
breakpoint.locations = []; breakpoint.locations = [];
} }
...@@ -316,12 +268,12 @@ WebInspector.DebuggerDispatcher.prototype = { ...@@ -316,12 +268,12 @@ WebInspector.DebuggerDispatcher.prototype = {
debuggerWasEnabled: function() debuggerWasEnabled: function()
{ {
WebInspector.panels.scripts.debuggerWasEnabled(); this._debuggerModel._debuggerWasEnabled();
}, },
debuggerWasDisabled: function() debuggerWasDisabled: function()
{ {
WebInspector.panels.scripts.debuggerWasDisabled(); this._debuggerModel._debuggerWasDisabled();
}, },
parsedScriptSource: function(sourceID, sourceURL, lineOffset, columnOffset, length, scriptWorldType) parsedScriptSource: function(sourceID, sourceURL, lineOffset, columnOffset, length, scriptWorldType)
......
...@@ -185,6 +185,8 @@ WebInspector.ScriptsPanel = function() ...@@ -185,6 +185,8 @@ WebInspector.ScriptsPanel = function()
this.reset(); this.reset();
WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerWasEnabled, this._debuggerWasEnabled, this);
WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerWasDisabled, this._debuggerWasDisabled, this);
WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ParsedScriptSource, this._parsedScriptSource, this); WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ParsedScriptSource, this._parsedScriptSource, this);
WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.FailedToParseScriptSource, this._failedToParseScriptSource, this); WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.FailedToParseScriptSource, this._failedToParseScriptSource, this);
WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ScriptSourceChanged, this._scriptSourceChanged, this); WebInspector.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.ScriptSourceChanged, this._scriptSourceChanged, this);
...@@ -450,7 +452,7 @@ WebInspector.ScriptsPanel.prototype = { ...@@ -450,7 +452,7 @@ WebInspector.ScriptsPanel.prototype = {
this._clearInterface(); this._clearInterface();
}, },
debuggerWasEnabled: function() _debuggerWasEnabled: function()
{ {
this._setPauseOnExceptions(WebInspector.settings.pauseOnExceptionState); this._setPauseOnExceptions(WebInspector.settings.pauseOnExceptionState);
...@@ -460,7 +462,7 @@ WebInspector.ScriptsPanel.prototype = { ...@@ -460,7 +462,7 @@ WebInspector.ScriptsPanel.prototype = {
this.reset(true); this.reset(true);
}, },
debuggerWasDisabled: function() _debuggerWasDisabled: function()
{ {
if (!this._debuggerEnabled) if (!this._debuggerEnabled)
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment