Web Inspector: move breakpoints active state from scripts panel to debugger presentat...
authorpfeldman@chromium.org <pfeldman@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 9 Apr 2012 07:50:42 +0000 (07:50 +0000)
committerpfeldman@chromium.org <pfeldman@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 9 Apr 2012 07:50:42 +0000 (07:50 +0000)
https://bugs.webkit.org/show_bug.cgi?id=83374

Reviewed by Yury Semikhatsky.

Source/WebCore:

Just moves the state and adds event to propagate it. This is needed to abstract
JavaScriptSourceFrame from the ScriptsPanel.

* inspector/front-end/DebuggerPresentationModel.js:
(WebInspector.DebuggerPresentationModel):
(WebInspector.DebuggerPresentationModel.prototype.setBreakpoint):
(WebInspector.DebuggerPresentationModel.prototype._debuggerReset):
(WebInspector.DebuggerPresentationModel.prototype.setBreakpointsActive):
(WebInspector.DebuggerPresentationModel.prototype.breakpointsActive):
* inspector/front-end/JavaScriptSourceFrame.js:
(WebInspector.JavaScriptSourceFrame.prototype._setBreakpoint):
* inspector/front-end/ScriptsPanel.js:
(WebInspector.ScriptsPanel.prototype._toggleBreakpointsClicked):
(WebInspector.ScriptsPanel.prototype._breakpointsActiveStateChanged):
(WebInspector.ScriptsPanel.prototype._createDebugToolbar):

LayoutTests:

* http/tests/inspector/debugger-test.js:
* inspector/debugger/debugger-breakpoints-not-activated-on-reload.html:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@113558 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/http/tests/inspector/debugger-test.js
LayoutTests/inspector/debugger/debugger-breakpoints-not-activated-on-reload.html
Source/WebCore/ChangeLog
Source/WebCore/inspector/front-end/DebuggerPresentationModel.js
Source/WebCore/inspector/front-end/JavaScriptSourceFrame.js
Source/WebCore/inspector/front-end/ScriptsPanel.js

index 2999442..c04207b 100644 (file)
@@ -1,3 +1,13 @@
+2012-04-06  Pavel Feldman  <pfeldman@chromium.org>
+
+        Web Inspector: move breakpoints active state from scripts panel to debugger presentation model.
+        https://bugs.webkit.org/show_bug.cgi?id=83374
+
+        Reviewed by Yury Semikhatsky.
+
+        * http/tests/inspector/debugger-test.js:
+        * inspector/debugger/debugger-breakpoints-not-activated-on-reload.html:
+
 2012-04-07  Andrew Scherkus  <scherkus@chromium.org>
 
         [Chromium] Unreviewed, checking in baselines for video-frame-size-change.html.
index 70a8da1..571df68 100644 (file)
@@ -26,7 +26,7 @@ InspectorTest.completeDebuggerTest = function()
 {
     var scriptsPanel = WebInspector.panels.scripts;
 
-    scriptsPanel.activateBreakpoints();
+    WebInspector.debuggerPresentationModel.setBreakpointsActive(true);
     InspectorTest.resumeExecution(disableDebugger);
 
     function disableDebugger()
index 79f8b83..93064ed 100644 (file)
@@ -25,7 +25,7 @@ var test = function()
     {
         InspectorTest.addResult("Main resource was shown.");
         InspectorTest.setBreakpoint(sourceFrame, 8, "", true);
-        WebInspector.panels.scripts.toggleBreakpointsButton.element.click();
+        WebInspector.panels.scripts._toggleBreakpointsButton.element.click();
         InspectorTest.reloadPage(step4);
     }
 
@@ -37,7 +37,7 @@ var test = function()
     function step4()
     {
         InspectorTest.addResult("Main resource was shown.");
-        if (!WebInspector.panels.scripts.breakpointsActivated())
+        if (!WebInspector.debuggerPresentationModel.breakpointsActive())
             InspectorTest.addResult("Breakpoints are deactivated.");
         else
             InspectorTest.addResult("Error: breakpoints are activated.");
index 1037892..a46897e 100644 (file)
@@ -1,3 +1,26 @@
+2012-04-06  Pavel Feldman  <pfeldman@chromium.org>
+
+        Web Inspector: move breakpoints active state from scripts panel to debugger presentation model.
+        https://bugs.webkit.org/show_bug.cgi?id=83374
+
+        Reviewed by Yury Semikhatsky.
+
+        Just moves the state and adds event to propagate it. This is needed to abstract
+        JavaScriptSourceFrame from the ScriptsPanel.
+
+        * inspector/front-end/DebuggerPresentationModel.js:
+        (WebInspector.DebuggerPresentationModel):
+        (WebInspector.DebuggerPresentationModel.prototype.setBreakpoint):
+        (WebInspector.DebuggerPresentationModel.prototype._debuggerReset):
+        (WebInspector.DebuggerPresentationModel.prototype.setBreakpointsActive):
+        (WebInspector.DebuggerPresentationModel.prototype.breakpointsActive):
+        * inspector/front-end/JavaScriptSourceFrame.js:
+        (WebInspector.JavaScriptSourceFrame.prototype._setBreakpoint):
+        * inspector/front-end/ScriptsPanel.js:
+        (WebInspector.ScriptsPanel.prototype._toggleBreakpointsClicked):
+        (WebInspector.ScriptsPanel.prototype._breakpointsActiveStateChanged):
+        (WebInspector.ScriptsPanel.prototype._createDebugToolbar):
+
 2012-04-08  Takashi Sakamoto  <tasak@google.com>
 
         <content> in <meter> is not rendered correctly.
index f521a49..4724dcc 100644 (file)
@@ -40,6 +40,7 @@ WebInspector.DebuggerPresentationModel = function()
     this._presentationCallFrames = [];
 
     this._breakpointManager = new WebInspector.BreakpointManager(WebInspector.settings.breakpoints, WebInspector.debuggerModel, this._scriptMapping);
+    this._breakpointsActive = true;
 
     this._pendingConsoleMessages = {};
     this._consoleMessageLiveLocations = [];
@@ -65,7 +66,8 @@ WebInspector.DebuggerPresentationModel.Events = {
     DebuggerReset: "debugger-reset",
     CallFrameSelected: "call-frame-selected",
     ConsoleCommandEvaluatedInSelectedCallFrame: "console-command-evaluated-in-selected-call-frame",
-    ExecutionLineChanged: "execution-line-changed"
+    ExecutionLineChanged: "execution-line-changed",
+    BreakpointsActiveStateChanged: "breakpoints-active-state-changed"
 }
 
 WebInspector.DebuggerPresentationModel.prototype = {
@@ -349,6 +351,7 @@ WebInspector.DebuggerPresentationModel.prototype = {
     setBreakpoint: function(uiSourceCode, lineNumber, condition, enabled)
     {
         this._breakpointManager.setBreakpoint(uiSourceCode, lineNumber, condition, enabled);
+        this.setBreakpointsActive(true);
     },
 
     /**
@@ -516,6 +519,26 @@ WebInspector.DebuggerPresentationModel.prototype = {
         this._pendingConsoleMessages = {};
         this._consoleMessageLiveLocations = [];
         this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.DebuggerReset);
+    },
+
+    /**
+     * @param {boolean} active
+     */
+    setBreakpointsActive: function(active)
+    {
+        if (this._breakpointsActive === active)
+            return;
+        this._breakpointsActive = active;
+        DebuggerAgent.setBreakpointsActive(active);
+        this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.BreakpointsActiveStateChanged, active);
+    },
+
+    /**
+     * @return {boolean}
+     */
+    breakpointsActive: function()
+    {
+        return this._breakpointsActive;
     }
 }
 
index b5e39f9..bd6f767 100644 (file)
@@ -345,7 +345,6 @@ WebInspector.JavaScriptSourceFrame.prototype = {
     _setBreakpoint: function(lineNumber, condition, enabled)
     {
         this._model.setBreakpoint(this._uiSourceCode, lineNumber, condition, enabled);
-        this._scriptsPanel.activateBreakpoints();
     },
 
     _onMouseDown: function(event)
index 464da58..038c925 100644 (file)
@@ -182,6 +182,7 @@ WebInspector.ScriptsPanel = function(presentationModel)
     this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.ConsoleCommandEvaluatedInSelectedCallFrame, this._consoleCommandEvaluatedInSelectedCallFrame, this);
     this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.ExecutionLineChanged, this._executionLineChanged, this);
     this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.DebuggerReset, this._reset.bind(this, false));
+    this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.BreakpointsActiveStateChanged, this._breakpointsActiveStateChanged, this);
 
     var enableDebugger = !Capabilities.debuggerCausesRecompilation || WebInspector.settings.debuggerEnabled.get();
     if (enableDebugger)
@@ -228,17 +229,6 @@ WebInspector.ScriptsPanel.prototype = {
         window.setTimeout(this._maybeShowNavigatorOverlay.bind(this), 0);
     },
 
-    breakpointsActivated: function()
-    {
-        return this.toggleBreakpointsButton.toggled;
-    },
-
-    activateBreakpoints: function()
-    {
-        if (!this.breakpointsActivated)
-            this._toggleBreakpointsClicked();
-    },
-
     _didBuildOutlineChunk: function(event)
     {
         WebInspector.JavaScriptOutlineDialog.didAddChunk(event.data);
@@ -844,16 +834,20 @@ WebInspector.ScriptsPanel.prototype = {
         DebuggerAgent.stepOut();
     },
 
-    _toggleBreakpointsClicked: function()
+    _toggleBreakpointsClicked: function(event)
+    {
+        this._presentationModel.setBreakpointsActive(!this._presentationModel.breakpointsActive());
+    },
+
+    _breakpointsActiveStateChanged: function(event)
     {
-        this.toggleBreakpointsButton.toggled = !this.toggleBreakpointsButton.toggled;
-        if (this.toggleBreakpointsButton.toggled) {
-            DebuggerAgent.setBreakpointsActive(true);
-            this.toggleBreakpointsButton.title = WebInspector.UIString("Deactivate all breakpoints.");
+        var active = event.data;
+        this._toggleBreakpointsButton.toggled = active;
+        if (active) {
+            this._toggleBreakpointsButton.title = WebInspector.UIString("Deactivate all breakpoints.");
             WebInspector.inspectorView.element.removeStyleClass("breakpoints-deactivated");
         } else {
-            DebuggerAgent.setBreakpointsActive(false);
-            this.toggleBreakpointsButton.title = WebInspector.UIString("Activate all breakpoints.");
+            this._toggleBreakpointsButton.title = WebInspector.UIString("Activate all breakpoints.");
             WebInspector.inspectorView.element.addStyleClass("breakpoints-deactivated");
         }
     },
@@ -910,10 +904,10 @@ WebInspector.ScriptsPanel.prototype = {
         this.stepOutButton = this._createButtonAndRegisterShortcuts("scripts-step-out", title, handler, shortcuts, WebInspector.UIString("Step out"));
         debugToolbar.appendChild(this.stepOutButton);
 
-        this.toggleBreakpointsButton = new WebInspector.StatusBarButton(WebInspector.UIString("Deactivate all breakpoints."), "toggle-breakpoints");
-        this.toggleBreakpointsButton.toggled = true;
-        this.toggleBreakpointsButton.addEventListener("click", this._toggleBreakpointsClicked, this);
-        debugToolbar.appendChild(this.toggleBreakpointsButton.element);
+        this._toggleBreakpointsButton = new WebInspector.StatusBarButton(WebInspector.UIString("Deactivate all breakpoints."), "toggle-breakpoints");
+        this._toggleBreakpointsButton.toggled = true;
+        this._toggleBreakpointsButton.addEventListener("click", this._toggleBreakpointsClicked, this);
+        debugToolbar.appendChild(this._toggleBreakpointsButton.element);
 
         this.debuggerStatusElement = document.createElement("div");
         this.debuggerStatusElement.id = "scripts-debugger-status";