Title: [111595] trunk
Revision
111595
Author
[email protected]
Date
2012-03-21 12:42:51 -0700 (Wed, 21 Mar 2012)

Log Message

Web Inspector: Extract WebInspector.UIBreakpoint from WebInspector.Breakpoint.
https://bugs.webkit.org/show_bug.cgi?id=81669

Reviewed by Pavel Feldman.

Source/WebCore:

* inspector/front-end/BreakpointManager.js:
(WebInspector.BreakpointManager.get for):
(WebInspector.BreakpointManager):
(WebInspector.BreakpointManager.prototype.uiSourceCodeAdded):
(WebInspector.BreakpointManager.prototype.uiSourceCodeRemoved):
(WebInspector.BreakpointManager.prototype.breakpointsForUISourceCode):
(WebInspector.BreakpointManager.prototype.setBreakpoint):
(WebInspector.BreakpointManager.prototype.removeBreakpoint):
(WebInspector.BreakpointManager.prototype._innerRemoveBreakpoint):
(WebInspector.BreakpointManager.prototype.removeAllBreakpoints):
(WebInspector.BreakpointManager.prototype._moveBreakpointInUI):
(WebInspector.BreakpointManager.prototype._uiBreakpoints.get this):
(WebInspector.BreakpointManager.prototype._uiBreakpoints):
(WebInspector.BreakpointManager.prototype.get _uiBreakpoint):
(WebInspector.BreakpointManager.prototype._addBreakpointToUI):
(WebInspector.BreakpointManager.prototype._removeBreakpointFromUI):
(WebInspector.BreakpointManager.prototype._breakpoints):
(WebInspector.BreakpointManager.prototype._breakpoint):
(WebInspector.BreakpointManager.prototype._addBreakpointToModel):
(WebInspector.BreakpointManager.prototype._removeBreakpointFromModel):
(WebInspector.BreakpointManager.prototype._forEachBreakpoint):
(WebInspector.BreakpointManager.prototype._setBreakpointInDebugger):
(WebInspector.BreakpointManager.prototype._removeBreakpointFromDebugger):
(WebInspector.BreakpointManager.prototype.debuggerReset):
(WebInspector.Breakpoint.prototype.serialize):
(WebInspector.Breakpoint.prototype.get uiBreakpoint):
(WebInspector.Breakpoint.prototype.createUIBreakpoint):
(WebInspector.Breakpoint.prototype.removeUIBreakpoint):
(WebInspector.UIBreakpoint):
* inspector/front-end/DebuggerPresentationModel.js:
(WebInspector.DebuggerPresentationModel.prototype._handleUISourceCodeListChanged):
(WebInspector.DebuggerPresentationModel.prototype.findBreakpoint):
(WebInspector.DebuggerPresentationModel.prototype._breakpointAdded):
(WebInspector.DebuggerPresentationModel.prototype._breakpointRemoved):
* inspector/front-end/ScriptsPanel.js:

LayoutTests:

* inspector/debugger/breakpoint-manager-expected.txt:
* inspector/debugger/breakpoint-manager.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (111594 => 111595)


--- trunk/LayoutTests/ChangeLog	2012-03-21 19:37:25 UTC (rev 111594)
+++ trunk/LayoutTests/ChangeLog	2012-03-21 19:42:51 UTC (rev 111595)
@@ -1,3 +1,13 @@
+2012-03-21  Vsevolod Vlasov  <[email protected]>
+
+        Web Inspector: Extract WebInspector.UIBreakpoint from WebInspector.Breakpoint.
+        https://bugs.webkit.org/show_bug.cgi?id=81669
+
+        Reviewed by Pavel Feldman.
+
+        * inspector/debugger/breakpoint-manager-expected.txt:
+        * inspector/debugger/breakpoint-manager.html:
+
 2012-03-21  Xiaomei Ji  <[email protected]>
 
         add DOCTYPE for move-by-word-visually tests

Modified: trunk/LayoutTests/inspector/debugger/breakpoint-manager-expected.txt (111594 => 111595)


--- trunk/LayoutTests/inspector/debugger/breakpoint-manager-expected.txt	2012-03-21 19:37:25 UTC (rev 111594)
+++ trunk/LayoutTests/inspector/debugger/breakpoint-manager-expected.txt	2012-03-21 19:42:51 UTC (rev 111595)
@@ -3,15 +3,13 @@
 
 Running: uiSourceCodeAdded
 breakpointAdded(a.js, 10, foo == bar, true)
+debuggerModel.setBreakpoint(a.js:10:0)
 breakpointAdded(a.js, 20, , false)
-breakpointAdded(b.js, 3, , true)
-debuggerModel.setBreakpoint(a.js:10:0)
 
 Running: setAndRemoveBreakpoints
 breakpointAdded(a.js, 10, foo == bar, true)
+debuggerModel.setBreakpoint(a.js:10:0)
 breakpointAdded(a.js, 20, , false)
-breakpointAdded(b.js, 3, , true)
-debuggerModel.setBreakpoint(a.js:10:0)
 breakpointAdded(a.js, 30, , true)
 debuggerModel.setBreakpoint(a.js:30:0)
 breakpointRemoved(a.js, 30)
@@ -32,16 +30,19 @@
 
 Running: testNavigation
 breakpointAdded(a.js, 10, foo == bar, true)
+debuggerModel.setBreakpoint(a.js:10:0)
 breakpointAdded(a.js, 20, , false)
-breakpointAdded(b.js, 3, , true)
-debuggerModel.setBreakpoint(a.js:10:0)
 
 Navigate to B.
+breakpointRemoved(a.js, 10)
+breakpointRemoved(a.js, 20)
+breakpointAdded(b.js, 3, , true)
 debuggerModel.setBreakpoint(b.js:3:0)
 
 Navigate back to A.
-breakpointRemoved(a.js, 10)
+breakpointRemoved(b.js, 3)
 breakpointAdded(a.js, 11, foo == bar, true)
+breakpointAdded(a.js, 20, , false)
 
 Running: testFormatting
 breakpointAdded(c.js, 4, , true)
@@ -49,6 +50,7 @@
 
 Format source.
 debuggerModel.removeBreakpoint(c.js:4:0)
+breakpointRemoved(c.js, 4)
 breakpointAdded(deobfuscated:c.js, 4, , true)
 debuggerModel.setBreakpoint(c.js:2:0)
 breakpointAdded(deobfuscated:c.js, 8, , false)
@@ -60,5 +62,9 @@
 
 Reload.
 breakpointRemoved(deobfuscated:c.js, 4)
+breakpointRemoved(deobfuscated:c.js, 12)
+breakpointAdded(deobfuscated:c.js, 4, , true)
+breakpointAdded(deobfuscated:c.js, 12, , true)
+breakpointRemoved(deobfuscated:c.js, 4)
 breakpointAdded(deobfuscated:c.js, 6, , true)
 

Modified: trunk/LayoutTests/inspector/debugger/breakpoint-manager.html (111594 => 111595)


--- trunk/LayoutTests/inspector/debugger/breakpoint-manager.html	2012-03-21 19:37:25 UTC (rev 111594)
+++ trunk/LayoutTests/inspector/debugger/breakpoint-manager.html	2012-03-21 19:42:51 UTC (rev 111595)
@@ -15,15 +15,15 @@
     var uiBreakpoints = {};
     function breakpointAdded(breakpoint)
     {
-        InspectorTest.addResult("breakpointAdded(" + [breakpoint.uiSourceCodeId, breakpoint.lineNumber, breakpoint.condition, breakpoint.enabled].join(", ") + ")");
-        var breakpointId = breakpoint.uiSourceCodeId + ":" + breakpoint.lineNumber;
+        InspectorTest.addResult("breakpointAdded(" + [breakpoint.uiSourceCode.id, breakpoint.lineNumber, breakpoint.condition, breakpoint.enabled].join(", ") + ")");
+        var breakpointId = breakpoint.uiSourceCode.id + ":" + breakpoint.lineNumber;
         InspectorTest.assertTrue(!(breakpointId in uiBreakpoints));
         uiBreakpoints[breakpointId] = breakpoint.condition + "|" + breakpoint.enabled;
     }
     function breakpointRemoved(breakpoint)
     {
-        InspectorTest.addResult("breakpointRemoved(" + [breakpoint.uiSourceCodeId, breakpoint.lineNumber].join(", ") + ")");
-        var breakpointId = breakpoint.uiSourceCodeId + ":" + breakpoint.lineNumber;
+        InspectorTest.addResult("breakpointRemoved(" + [breakpoint.uiSourceCode.id, breakpoint.lineNumber].join(", ") + ")");
+        var breakpointId = breakpoint.uiSourceCode.id + ":" + breakpoint.lineNumber;
         InspectorTest.assertTrue(breakpointId in uiBreakpoints);
         delete uiBreakpoints[breakpointId];
     }
@@ -89,7 +89,7 @@
 
             function checkResults()
             {
-                assertEquals({"a.js:10":"foo == bar|true","a.js:20":"|false","b.js:3":"|true"}, uiBreakpoints);
+                assertEquals({"a.js:10":"foo == bar|true","a.js:20":"|false"}, uiBreakpoints);
                 assertEquals({"a.js:10:0": "foo == bar"}, debuggerBreakpoints);
                 next();
             }
@@ -173,7 +173,7 @@
 
             function navigateToA()
             {
-                assertEquals({"a.js:10":"foo == bar|true","a.js:20":"|false","b.js:3":"|true"}, uiBreakpoints);
+                assertEquals({"b.js:3":"|true"}, uiBreakpoints);
                 assertEquals({"a.js:10:0":"foo == bar","b.js:3:0":""}, debuggerBreakpoints);
 
                 InspectorTest.addResult("\nNavigate back to A.");
@@ -187,7 +187,7 @@
 
             function checkResults()
             {
-                assertEquals({"a.js:20":"|false","b.js:3":"|true","a.js:11":"foo == bar|true"}, uiBreakpoints);
+                assertEquals({"a.js:20":"|false","a.js:11":"foo == bar|true"}, uiBreakpoints);
                 assertEquals({"a.js:10:0":"foo == bar","b.js:3:0":""}, debuggerBreakpoints);
                 checkBreakpointStorage([{"sourceFileId":"a.js","lineNumber":11,"condition":"foo == bar","enabled":true},
                                         {"sourceFileId":"a.js","lineNumber":20,"condition":"","enabled":false},
@@ -217,6 +217,7 @@
 
                 InspectorTest.addResult("\nFormat source.");
                 breakpointManager.reset();
+                breakpointManager.uiSourceCodeRemoved(originalUISourceCode);
 
                 scriptMapping.rawLocationToUILocation = function(rawLocation) { return { lineNumber: rawLocation.lineNumber * 2, columnNumber: rawLocation.columnNumber * 2 }; };
                 scriptMapping.uiLocationToRawLocation = function(uiSourceCode, lineNumber) { return { scriptId: "c.js", lineNumber: Math.floor(lineNumber / 2), columnNumber: 0 }; };

Modified: trunk/Source/WebCore/ChangeLog (111594 => 111595)


--- trunk/Source/WebCore/ChangeLog	2012-03-21 19:37:25 UTC (rev 111594)
+++ trunk/Source/WebCore/ChangeLog	2012-03-21 19:42:51 UTC (rev 111595)
@@ -1,3 +1,46 @@
+2012-03-21  Vsevolod Vlasov  <[email protected]>
+
+        Web Inspector: Extract WebInspector.UIBreakpoint from WebInspector.Breakpoint.
+        https://bugs.webkit.org/show_bug.cgi?id=81669
+
+        Reviewed by Pavel Feldman.
+
+        * inspector/front-end/BreakpointManager.js:
+        (WebInspector.BreakpointManager.get for):
+        (WebInspector.BreakpointManager):
+        (WebInspector.BreakpointManager.prototype.uiSourceCodeAdded):
+        (WebInspector.BreakpointManager.prototype.uiSourceCodeRemoved):
+        (WebInspector.BreakpointManager.prototype.breakpointsForUISourceCode):
+        (WebInspector.BreakpointManager.prototype.setBreakpoint):
+        (WebInspector.BreakpointManager.prototype.removeBreakpoint):
+        (WebInspector.BreakpointManager.prototype._innerRemoveBreakpoint):
+        (WebInspector.BreakpointManager.prototype.removeAllBreakpoints):
+        (WebInspector.BreakpointManager.prototype._moveBreakpointInUI):
+        (WebInspector.BreakpointManager.prototype._uiBreakpoints.get this):
+        (WebInspector.BreakpointManager.prototype._uiBreakpoints):
+        (WebInspector.BreakpointManager.prototype.get _uiBreakpoint):
+        (WebInspector.BreakpointManager.prototype._addBreakpointToUI):
+        (WebInspector.BreakpointManager.prototype._removeBreakpointFromUI):
+        (WebInspector.BreakpointManager.prototype._breakpoints):
+        (WebInspector.BreakpointManager.prototype._breakpoint):
+        (WebInspector.BreakpointManager.prototype._addBreakpointToModel):
+        (WebInspector.BreakpointManager.prototype._removeBreakpointFromModel):
+        (WebInspector.BreakpointManager.prototype._forEachBreakpoint):
+        (WebInspector.BreakpointManager.prototype._setBreakpointInDebugger):
+        (WebInspector.BreakpointManager.prototype._removeBreakpointFromDebugger):
+        (WebInspector.BreakpointManager.prototype.debuggerReset):
+        (WebInspector.Breakpoint.prototype.serialize):
+        (WebInspector.Breakpoint.prototype.get uiBreakpoint):
+        (WebInspector.Breakpoint.prototype.createUIBreakpoint):
+        (WebInspector.Breakpoint.prototype.removeUIBreakpoint):
+        (WebInspector.UIBreakpoint):
+        * inspector/front-end/DebuggerPresentationModel.js:
+        (WebInspector.DebuggerPresentationModel.prototype._handleUISourceCodeListChanged):
+        (WebInspector.DebuggerPresentationModel.prototype.findBreakpoint):
+        (WebInspector.DebuggerPresentationModel.prototype._breakpointAdded):
+        (WebInspector.DebuggerPresentationModel.prototype._breakpointRemoved):
+        * inspector/front-end/ScriptsPanel.js:
+
 2012-03-21  Anders Carlsson  <[email protected]>
 
         TileCache needs to know if its containing page is in a window

Modified: trunk/Source/WebCore/inspector/front-end/BreakpointManager.js (111594 => 111595)


--- trunk/Source/WebCore/inspector/front-end/BreakpointManager.js	2012-03-21 19:37:25 UTC (rev 111594)
+++ trunk/Source/WebCore/inspector/front-end/BreakpointManager.js	2012-03-21 19:42:51 UTC (rev 111595)
@@ -31,8 +31,8 @@
 /**
  * @constructor
  * @param {WebInspector.Setting} breakpointStorage
- * @param {function(WebInspector.Breakpoint)} breakpointAddedDelegate
- * @param {function(WebInspector.Breakpoint)} breakpointRemovedDelegate
+ * @param {function(WebInspector.UIBreakpoint)} breakpointAddedDelegate
+ * @param {function(WebInspector.UIBreakpoint)} breakpointRemovedDelegate
  * @param {WebInspector.DebuggerModel} debuggerModel
  * @param {WebInspector.MainScriptMapping} scriptMapping
  */
@@ -42,6 +42,10 @@
     this._breakpointAddedDelegate = breakpointAddedDelegate;
     this._breakpointRemovedDelegate = breakpointRemovedDelegate;
     /**
+     * @type Map}
+     */
+    this._uiBreakpointsByUILocation = new Map();
+    /**
      * @type {Object.<string, Object.<string,WebInspector.Breakpoint>>}
      */
     this._breakpointsByUILocation = {};
@@ -59,7 +63,7 @@
     for (var i = 0; i < breakpoints.length; ++i) {
         var breakpoint = WebInspector.Breakpoint.deserialize(breakpoints[i]);
         if (!this._breakpoint(breakpoint.uiSourceCodeId, breakpoint.lineNumber))
-            this._addBreakpointToUI(breakpoint);
+            this._addBreakpointToModel(breakpoint);
     }
 }
 
@@ -72,7 +76,7 @@
         var breakpoints = this._breakpoints(uiSourceCode.id);
         for (var lineNumber in breakpoints) {
             var breakpoint = breakpoints[lineNumber];
-            breakpoint.uiSourceCode = uiSourceCode;
+            this._addBreakpointToUI(breakpoint, uiSourceCode);
             this._materializeBreakpoint(breakpoint, uiSourceCode);
             if (breakpoint._debuggerLocation)
                 this._breakpointDebuggerLocationChanged(breakpoint);
@@ -82,9 +86,22 @@
     /**
      * @param {WebInspector.UISourceCode} uiSourceCode
      */
+    uiSourceCodeRemoved: function(uiSourceCode)
+    {
+        var uiBreakpoints = this._uiBreakpoints(uiSourceCode);
+        for (var lineNumber in uiBreakpoints) {
+            var uiBreakpoint = uiBreakpoints[lineNumber];
+            this._removeBreakpointFromUI(uiBreakpoint);
+        }
+    },
+
+    /**
+     * @param {WebInspector.UISourceCode} uiSourceCode
+     * @return {Object.<string,WebInspector.UIBreakpoint>|undefined}
+     */
     breakpointsForUISourceCode: function(uiSourceCode)
     {
-        return this._breakpoints(uiSourceCode.id);
+        return this._uiBreakpoints(uiSourceCode);
     },
 
     /**
@@ -95,13 +112,11 @@
      */
     setBreakpoint: function(uiSourceCode, lineNumber, condition, enabled)
     {
-        if (this._breakpoint(uiSourceCode.id, lineNumber))
+        if (this._uiBreakpoint(uiSourceCode, lineNumber))
             return;
-
-        var persistent = !!uiSourceCode.url;
-        var breakpoint = new WebInspector.Breakpoint(uiSourceCode.id, lineNumber, condition, enabled, persistent);
-        breakpoint.uiSourceCode = uiSourceCode;
-        this._addBreakpointToUI(breakpoint);
+        var breakpoint = new WebInspector.Breakpoint(uiSourceCode.id, lineNumber, condition, enabled, !!uiSourceCode.url);
+        this._addBreakpointToModel(breakpoint);
+        this._addBreakpointToUI(breakpoint, uiSourceCode);
         this._materializeBreakpoint(breakpoint, uiSourceCode);
     },
 
@@ -111,24 +126,26 @@
      */
     removeBreakpoint: function(uiSourceCode, lineNumber)
     {
-        var breakpoint = this._breakpoint(uiSourceCode.id, lineNumber);
-        if (!breakpoint)
+        var uiBreakpoint = this._uiBreakpoint(uiSourceCode, lineNumber);
+        if (!uiBreakpoint)
             return;
-        this._removeBreakpoint(breakpoint);
+        this._innerRemoveBreakpoint(uiBreakpoint.breakpoint);
     },
 
     /**
      * @param {WebInspector.Breakpoint} breakpoint
      */
-    _removeBreakpoint: function(breakpoint)
+    _innerRemoveBreakpoint: function(breakpoint)
     {
-        this._deleteBreakpointFromUI(breakpoint);
+        if (breakpoint.uiBreakpoint)
+            this._removeBreakpointFromUI(breakpoint.uiBreakpoint);
+        this._removeBreakpointFromModel(breakpoint);
         this._removeBreakpointFromDebugger(breakpoint);
     },
 
     removeAllBreakpoints: function()
     {
-        this._forEachBreakpoint(this._removeBreakpoint.bind(this));
+        this._forEachBreakpoint(this._innerRemoveBreakpoint.bind(this));
     },
 
     /**
@@ -162,69 +179,122 @@
 
     /**
      * @param {WebInspector.Breakpoint} breakpoint
+     * @param {number} lineNumber
+     * @return {boolean}
      */
-    _addBreakpointToUI: function(breakpoint)
+    _moveBreakpointInUI: function(breakpoint, lineNumber)
     {
-        console.assert(!this._breakpoint(breakpoint.uiSourceCodeId, breakpoint.lineNumber));
-        this._breakpoints(breakpoint.uiSourceCodeId)[breakpoint.lineNumber] = breakpoint;
-        this._saveBreakpoints();
-        this._breakpointAddedDelegate(breakpoint);
+        var uiSourceCode;
+        var uiBreakpoint = breakpoint.uiBreakpoint;
+        if (uiBreakpoint) {
+            this._removeBreakpointFromUI(uiBreakpoint);
+            uiSourceCode = uiBreakpoint.uiSourceCode;
+        }
+
+        this._removeBreakpointFromModel(breakpoint);
+        if (this._breakpoint(breakpoint.uiSourceCodeId, lineNumber))
+            return false;
+        breakpoint.lineNumber = lineNumber;
+        this._addBreakpointToModel(breakpoint);
+
+        if (uiSourceCode)
+            this._addBreakpointToUI(breakpoint, uiSourceCode);
+
+        return true;
     },
 
     /**
-     * @param {WebInspector.Breakpoint} breakpoint
+     * @param {WebInspector.UISourceCode} uiSourceCode
+     * @return {?Object.<string,WebInspector.UIBreakpoint>}
      */
-    _deleteBreakpointFromUI: function(breakpoint)
+    _uiBreakpoints: function(uiSourceCode)
     {
-        console.assert(this._breakpoint(breakpoint.uiSourceCodeId, breakpoint.lineNumber) === breakpoint);
-        delete this._breakpoints(breakpoint.uiSourceCodeId)[breakpoint.lineNumber];
-        this._saveBreakpoints();
-        this._breakpointRemovedDelegate(breakpoint);
+        if (!this._uiBreakpointsByUILocation.get(uiSourceCode))
+            this._uiBreakpointsByUILocation.put(uiSourceCode, {});
+        return this._uiBreakpointsByUILocation.get(uiSourceCode);
     },
 
     /**
-     * @param {WebInspector.Breakpoint} breakpoint
+     * @param {WebInspector.UISourceCode} uiSourceCode
      * @param {number} lineNumber
-     * @return {boolean}
+     * @return {?WebInspector.UIBreakpoint}
      */
-    _moveBreakpointInUI: function(breakpoint, lineNumber)
+    _uiBreakpoint: function(uiSourceCode, lineNumber)
     {
-        this._deleteBreakpointFromUI(breakpoint);
-        if (this._breakpoint(breakpoint.uiSourceCodeId, lineNumber))
-            return false;
-        breakpoint.lineNumber = lineNumber;
-        this._addBreakpointToUI(breakpoint);
-        return true;
+        return this._uiBreakpoints(uiSourceCode)[String(lineNumber)];
     },
 
     /**
-     * @param {string} uiSourceCodeId
+     * @param {WebInspector.Breakpoint} breakpoint
+     * @param {WebInspector.UISourceCode} uiSourceCode
+     */
+    _addBreakpointToUI: function(breakpoint, uiSourceCode)
+    {
+        var uiBreakpoint = breakpoint.createUIBreakpoint(uiSourceCode);
+        console.assert(!this._uiBreakpoint(uiBreakpoint.uiSourceCode, uiBreakpoint.lineNumber));
+        this._uiBreakpoints(uiBreakpoint.uiSourceCode)[uiBreakpoint.lineNumber] = uiBreakpoint;
+        this._breakpointAddedDelegate(uiBreakpoint);
+    },
+
+    /**
+     * @param {WebInspector.UIBreakpoint} uiBreakpoint
+     */
+    _removeBreakpointFromUI: function(uiBreakpoint)
+    {
+        console.assert(this._uiBreakpoint(uiBreakpoint.uiSourceCode, uiBreakpoint.lineNumber) === uiBreakpoint);
+        delete this._uiBreakpoints(uiBreakpoint.uiSourceCode)[uiBreakpoint.lineNumber];
+        uiBreakpoint.breakpoint.removeUIBreakpoint();
+        this._breakpointRemovedDelegate(uiBreakpoint);
+    },
+
+    /**
+     * @param {string} id
      * @return {?Object.<string,WebInspector.Breakpoint>}
      */
-    _breakpoints: function(uiSourceCodeId)
+    _breakpoints: function(id)
     {
-        if (!this._breakpointsByUILocation[uiSourceCodeId])
-            this._breakpointsByUILocation[uiSourceCodeId] = {};
-        return this._breakpointsByUILocation[uiSourceCodeId];
+        if (!this._breakpointsByUILocation[id])
+            this._breakpointsByUILocation[id] = {};
+        return this._breakpointsByUILocation[id];
     },
 
     /**
-     * @param {string} uiSourceCodeId
+     * @param {string} id
      * @param {number} lineNumber
      * @return {?WebInspector.Breakpoint}
      */
-    _breakpoint: function(uiSourceCodeId, lineNumber)
+    _breakpoint: function(id, lineNumber)
     {
-        return this._breakpoints(uiSourceCodeId)[String(lineNumber)];
+        return this._breakpoints(id)[String(lineNumber)];
     },
 
     /**
+     * @param {WebInspector.Breakpoint} breakpoint
+     */
+    _addBreakpointToModel: function(breakpoint)
+    {
+        console.assert(!this._breakpoint(breakpoint.uiSourceCodeId, breakpoint.lineNumber));
+        this._breakpoints(breakpoint.uiSourceCodeId)[breakpoint.lineNumber] = breakpoint;
+        this._saveBreakpoints();
+    },
+
+    /**
+     * @param {WebInspector.Breakpoint} breakpoint
+     */
+    _removeBreakpointFromModel: function(breakpoint)
+    {
+        console.assert(this._breakpoint(breakpoint.uiSourceCodeId, breakpoint.lineNumber) === breakpoint);
+        delete this._breakpoints(breakpoint.uiSourceCodeId)[breakpoint.lineNumber];
+        this._saveBreakpoints();
+    },
+
+    /**
      * @param {function(WebInspector.Breakpoint)} handler
      */
     _forEachBreakpoint: function(handler)
     {
-        for (var uiSourceCodeId in this._breakpointsByUILocation) {
-            var breakpoints = this._breakpointsByUILocation[uiSourceCodeId];
+        for (var id in this._breakpointsByUILocation) {
+            var breakpoints = this._breakpointsByUILocation[id];
             for (var lineNumber in breakpoints)
                 handler(breakpoints[lineNumber]);
         }
@@ -245,7 +315,9 @@
         {
             if (breakpoint === this._breakpoint(breakpoint.uiSourceCodeId, breakpoint.lineNumber)) {
                 if (!breakpointId) {
-                    this._deleteBreakpointFromUI(breakpoint);
+                    if (breakpoint.uiBreakpoint)
+                        this._removeBreakpointFromUI(breakpoint.uiBreakpoint);
+                    this._removeBreakpointFromModel(breakpoint);
                     return;
                 }
             } else {
@@ -268,7 +340,7 @@
      */
     _removeBreakpointFromDebugger: function(breakpoint)
     {
-        if (!("_debuggerId" in breakpoint))
+        if (typeof(breakpoint._debuggerId) === "undefined")
             return;
         this._debuggerModel.removeBreakpoint(breakpoint._debuggerId);
         delete this._breakpointsByDebuggerId[breakpoint._debuggerId];
@@ -324,11 +396,12 @@
          */
         function resetOrDeleteBreakpoint(breakpoint)
         {
-            if (breakpoint.persistent) {
-                delete breakpoint.uiSourceCode;
+            if (breakpoint.uiBreakpoint)
+                this._removeBreakpointFromUI(breakpoint.uiBreakpoint);
+            if (breakpoint.persistent)
                 delete breakpoint._debuggerLocation;
-            } else {
-                this._deleteBreakpointFromUI(breakpoint);
+            else {
+                this._removeBreakpointFromModel(breakpoint);
                 delete this._breakpointsByDebuggerId[breakpoint._debuggerId];
             }
         }
@@ -343,6 +416,7 @@
             if (empty)
                 delete this._breakpointsByUILocation[id];
         }
+        this._uiBreakpointsByUILocation = new Map();
     }
 }
 
@@ -375,6 +449,29 @@
         serializedBreakpoint.condition = this.condition;
         serializedBreakpoint.enabled = this.enabled;
         return serializedBreakpoint;
+    },
+
+    /**
+     * @type {WebInspector.UIBreakpoint}
+     */
+    get uiBreakpoint()
+    {
+        return this._uiBreakpoint;
+    },
+
+    /**
+     * @param {WebInspector.UISourceCode} uiSourceCode
+     * @return {WebInspector.UIBreakpoint}
+     */
+    createUIBreakpoint: function(uiSourceCode)
+    {
+        this._uiBreakpoint = new WebInspector.UIBreakpoint(uiSourceCode, this.lineNumber, this.condition, this.enabled, this);
+        return this._uiBreakpoint;
+    },
+
+    removeUIBreakpoint: function()
+    {
+        delete this._uiBreakpoint;
     }
 }
 
@@ -391,3 +488,21 @@
             serializedBreakpoint.enabled,
             true);
 }
+
+/**
+ * @constructor
+ * @param {WebInspector.UISourceCode} uiSourceCode
+ * @param {number} lineNumber
+ * @param {string} condition
+ * @param {boolean} enabled
+ * @param {WebInspector.Breakpoint} breakpoint
+ */
+WebInspector.UIBreakpoint = function(uiSourceCode, lineNumber, condition, enabled, breakpoint)
+{
+    this.uiSourceCode = uiSourceCode;
+    this.lineNumber = lineNumber;
+    this.condition = condition;
+    this.enabled = enabled;
+    this.breakpoint = breakpoint;
+    this.resolved = true;
+}

Modified: trunk/Source/WebCore/inspector/front-end/DebuggerPresentationModel.js (111594 => 111595)


--- trunk/Source/WebCore/inspector/front-end/DebuggerPresentationModel.js	2012-03-21 19:37:25 UTC (rev 111594)
+++ trunk/Source/WebCore/inspector/front-end/DebuggerPresentationModel.js	2012-03-21 19:42:51 UTC (rev 111595)
@@ -63,8 +63,8 @@
     UISourceCodeRemoved: "source-file-removed",
     ConsoleMessageAdded: "console-message-added",
     ConsoleMessagesCleared: "console-messages-cleared",
-    BreakpointAdded: "breakpoint-added",
-    BreakpointRemoved: "breakpoint-removed",
+    UIBreakpointAdded: "ui-breakpoint-added",
+    UIBreakpointRemoved: "ui-breakpoint-removed",
     DebuggerPaused: "debugger-paused",
     DebuggerResumed: "debugger-resumed",
     DebuggerReset: "debugger-reset",
@@ -155,17 +155,11 @@
         var removedItems = /** @type {Array.<WebInspector.UISourceCode>} */ event.data["removedItems"];
         var addedItems = /** @type {Array.<WebInspector.UISourceCode>} */ event.data["addedItems"];
 
-        for (var i = 0; i < removedItems.length; ++i) {
-            var breakpoints = this._breakpointManager.breakpointsForUISourceCode(removedItems[i]);
-            for (var lineNumber in breakpoints) {
-                var breakpoint = breakpoints[lineNumber];
-                this._breakpointRemoved(breakpoint);
-                delete breakpoint.uiSourceCode;
-            }
-        }
+        for (var i = 0; i < removedItems.length; ++i)
+            this._breakpointManager.uiSourceCodeRemoved(removedItems[i]);
+        for (var i = 0; i < addedItems.length; ++i)
+            this._breakpointManager.uiSourceCodeAdded(addedItems[i]);
 
-        this._restoreBreakpoints(addedItems);
-
         if (!removedItems.length) {
             for (var i = 0; i < addedItems.length; ++i)
                 this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.UISourceCodeAdded, addedItems[i]);
@@ -179,20 +173,6 @@
     },
 
     /**
-     * @param {Array.<WebInspector.UISourceCode>} uiSourceCodeList
-     */
-    _restoreBreakpoints: function(uiSourceCodeList)
-    {
-        for (var i = 0; i < uiSourceCodeList.length; ++i) {
-            var uiSourceCode = uiSourceCodeList[i];
-            this._breakpointManager.uiSourceCodeAdded(uiSourceCode);
-            var breakpoints = this._breakpointManager.breakpointsForUISourceCode(uiSourceCode);
-            for (var lineNumber in breakpoints)
-                this._breakpointAdded(breakpoints[lineNumber]);
-        }
-    },
-
-    /**
      * @param {WebInspector.UISourceCode} uiSourceCode
      * @return {boolean}
      */
@@ -449,29 +429,27 @@
     /**
      * @param {WebInspector.UISourceCode} uiSourceCode
      * @param {number} lineNumber
-     * @return {WebInspector.Breakpoint|undefined}
+     * @return {WebInspector.UIBreakpoint|undefined}
      */
     findBreakpoint: function(uiSourceCode, lineNumber)
     {
-        return this._breakpointManager.breakpointsForUISourceCode(uiSourceCode)[lineNumber];
+        return this._breakpointManager.breakpointsForUISourceCode(uiSourceCode)[String(lineNumber)];
     },
 
     /**
-     * @param {WebInspector.Breakpoint} breakpoint
+     * @param {WebInspector.UIBreakpoint} uiBreakpoint
      */
-    _breakpointAdded: function(breakpoint)
+    _breakpointAdded: function(uiBreakpoint)
     {
-        if (breakpoint.uiSourceCode)
-            this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.BreakpointAdded, breakpoint);
+        this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.UIBreakpointAdded, uiBreakpoint);
     },
 
     /**
-     * @param {WebInspector.Breakpoint} breakpoint
+     * @param {WebInspector.UIBreakpoint} uiBreakpoint
      */
-    _breakpointRemoved: function(breakpoint)
+    _breakpointRemoved: function(uiBreakpoint)
     {
-        if (breakpoint.uiSourceCode)
-            this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.BreakpointRemoved, breakpoint);
+        this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.UIBreakpointRemoved, uiBreakpoint);
     },
 
     _debuggerPaused: function()

Modified: trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js (111594 => 111595)


--- trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js	2012-03-21 19:37:25 UTC (rev 111594)
+++ trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js	2012-03-21 19:42:51 UTC (rev 111595)
@@ -177,8 +177,8 @@
     this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.UISourceCodeRemoved, this._uiSourceCodeRemoved, this);
     this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.ConsoleMessageAdded, this._consoleMessageAdded, this);
     this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.ConsoleMessagesCleared, this._consoleMessagesCleared, this);
-    this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.BreakpointAdded, this._breakpointAdded, this);
-    this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.BreakpointRemoved, this._breakpointRemoved, this);
+    this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.UIBreakpointAdded, this._uiBreakpointAdded, this);
+    this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.UIBreakpointRemoved, this._uiBreakpointRemoved, this);
     this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.DebuggerPaused, this._debuggerPaused, this);
     this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.DebuggerResumed, this._debuggerResumed, this);
     this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.CallFrameSelected, this._callFrameSelected, this);
@@ -308,26 +308,26 @@
             sourceFrame.addMessageToSource(message.lineNumber, message.originalMessage);
     },
 
-    _breakpointAdded: function(event)
+    _uiBreakpointAdded: function(event)
     {
-        var breakpoint = event.data;
+        var uiBreakpoint = /** @type {WebInspector.UIBreakpoint} */ event.data;
 
-        var sourceFrame = this._sourceFramesByUISourceCode.get(breakpoint.uiSourceCode)
+        var sourceFrame = this._sourceFramesByUISourceCode.get(uiBreakpoint.uiSourceCode)
         if (sourceFrame && sourceFrame.loaded)
-            sourceFrame.addBreakpoint(breakpoint.lineNumber, breakpoint.resolved, breakpoint.condition, breakpoint.enabled);
+            sourceFrame.addBreakpoint(uiBreakpoint.lineNumber, uiBreakpoint.resolved, uiBreakpoint.condition, uiBreakpoint.enabled);
 
-        this.sidebarPanes.jsBreakpoints.addBreakpoint(breakpoint);
+        this.sidebarPanes.jsBreakpoints.addBreakpoint(uiBreakpoint);
     },
 
-    _breakpointRemoved: function(event)
+    _uiBreakpointRemoved: function(event)
     {
-        var breakpoint = event.data;
+        var uiBreakpoint = /** @type {WebInspector.UIBreakpoint} */ event.data;
 
-        var sourceFrame = this._sourceFramesByUISourceCode.get(breakpoint.uiSourceCode)
+        var sourceFrame = this._sourceFramesByUISourceCode.get(uiBreakpoint.uiSourceCode)
         if (sourceFrame && sourceFrame.loaded)
-            sourceFrame.removeBreakpoint(breakpoint.lineNumber);
+            sourceFrame.removeBreakpoint(uiBreakpoint.lineNumber);
 
-        this.sidebarPanes.jsBreakpoints.removeBreakpoint(breakpoint.uiSourceCode, breakpoint.lineNumber);
+        this.sidebarPanes.jsBreakpoints.removeBreakpoint(uiBreakpoint.uiSourceCode, uiBreakpoint.lineNumber);
     },
 
     _consoleCommandEvaluatedInSelectedCallFrame: function(event)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to