Changeset 112266 in webkit


Ignore:
Timestamp:
Mar 27, 2012 7:43:46 AM (12 years ago)
Author:
podivilov@chromium.org
Message:

Web Inspector: dispatch breakpoint-added and breakpoint-removed events on UISourceCode.
https://bugs.webkit.org/show_bug.cgi?id=82318

Reviewed by Vsevolod Vlasov.

Source/WebCore:

Breakpoint-added and breakpoint-removed events are always related to specific UISourceCode.
See bug 82224 for more details.

  • inspector/front-end/BreakpointManager.js:

(WebInspector.BreakpointManager.prototype._addBreakpointToUI):
(WebInspector.BreakpointManager.prototype._removeBreakpointFromUI):

  • inspector/front-end/DebuggerPresentationModel.js:

(WebInspector.DebuggerPresentationModel):
(WebInspector.UISourceCodeImpl.prototype.breakpointAdded):
(WebInspector.UISourceCodeImpl.prototype.breakpointRemoved):

  • inspector/front-end/ScriptsPanel.js:

(WebInspector.ScriptsPanel.prototype._uiSourceCodeAdded):
(WebInspector.ScriptsPanel.prototype._uiSourceCodeRemoved):
(WebInspector.ScriptsPanel.prototype._addBreakpointListeners):
(WebInspector.ScriptsPanel.prototype._removeBreakpointListeners):
(WebInspector.ScriptsPanel.prototype._uiSourceCodeReplaced):

  • inspector/front-end/UISourceCode.js:

LayoutTests:

  • inspector/debugger/breakpoint-manager.html:
Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r112262 r112266  
     12012-03-27  Pavel Podivilov  <podivilov@chromium.org>
     2
     3        Web Inspector: dispatch breakpoint-added and breakpoint-removed events on UISourceCode.
     4        https://bugs.webkit.org/show_bug.cgi?id=82318
     5
     6        Reviewed by Vsevolod Vlasov.
     7
     8        * inspector/debugger/breakpoint-manager.html:
     9
    1102012-03-27  Alexei Filippov  <alexeif@chromium.org>
    211
  • trunk/LayoutTests/inspector/debugger/breakpoint-manager.html

    r112236 r112266  
    1414
    1515    var uiBreakpoints = {};
    16     function breakpointAdded(breakpoint)
    17     {
     16    function breakpointAdded(event)
     17    {
     18        var breakpoint = event.data;
    1819        InspectorTest.addResult("breakpointAdded(" + [breakpoint.uiSourceCode.id, breakpoint.lineNumber, breakpoint.condition, breakpoint.enabled].join(", ") + ")");
    1920        var breakpointId = breakpoint.uiSourceCode.id + ":" + breakpoint.lineNumber;
     
    2122        uiBreakpoints[breakpointId] = breakpoint.condition + "|" + breakpoint.enabled;
    2223    }
    23     function breakpointRemoved(breakpoint)
    24     {
     24    function breakpointRemoved(event)
     25    {
     26        var breakpoint = event.data;
    2527        InspectorTest.addResult("breakpointRemoved(" + [breakpoint.uiSourceCode.id, breakpoint.lineNumber].join(", ") + ")");
    2628        var breakpointId = breakpoint.uiSourceCode.id + ":" + breakpoint.lineNumber;
     
    6062
    6163    function createUISourceCode(id, url) { return new WebInspector.UISourceCodeImpl(id, url, null); }
    62     var uiSourceCodeA = createUISourceCode("a.js", "a.js");
    63     var uiSourceCodeB = createUISourceCode("b.js", "b.js");
    6464
    6565    var scriptMapping = {};
     
    6767    scriptMapping.uiLocationToRawLocation = function(uiSourceCode, lineNumber)
    6868    {
    69         scriptId = uiSourceCode === uiSourceCodeA ? "a.js" : "b.js";
    70         return { scriptId: scriptId, lineNumber: lineNumber, columnNumber: 0 };
     69        return { scriptId: uiSourceCode.id, lineNumber: lineNumber, columnNumber: 0 };
    7170    }
    7271
     
    7776        debuggerBreakpoints = {};
    7877        debuggerModel.removeAllListeners();
    79         return new WebInspector.BreakpointManager(breakpointStorage, breakpointAdded, breakpointRemoved, debuggerModel, scriptMapping);
     78        return new WebInspector.BreakpointManager(breakpointStorage, debuggerModel, scriptMapping);
     79    }
     80
     81    function addUISourceCode(breakpointManager, uiSourceCode)
     82    {
     83        uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.BreakpointAdded, breakpointAdded);
     84        uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.BreakpointRemoved, breakpointRemoved);
     85        breakpointManager.uiSourceCodeAdded(uiSourceCode);
    8086    }
    8187
     
    8490        {
    8591            var breakpointManager = createBreakpointManager(serializedBreakpoints, scriptMapping);
    86 
    87             breakpointManager.uiSourceCodeAdded(uiSourceCodeA);
     92            var uiSourceCode = createUISourceCode("a.js", "a.js");
     93            addUISourceCode(breakpointManager, uiSourceCode);
    8894            setTimeout(checkResults, 0);
    8995
     
    99105        {
    100106            var breakpointManager = createBreakpointManager(serializedBreakpoints, scriptMapping);
    101 
    102             breakpointManager.uiSourceCodeAdded(uiSourceCodeA);
     107            var uiSourceCode = createUISourceCode("a.js", "a.js");
     108            addUISourceCode(breakpointManager, uiSourceCode);
    103109            setTimeout(setAndRemove, 0);
    104110
    105111            function setAndRemove()
    106112            {
    107                 breakpointManager.setBreakpoint(uiSourceCodeA, 30, "", true);
     113                breakpointManager.setBreakpoint(uiSourceCode, 30, "", true);
    108114                // Remove breakpoint immediately, breakpoint should be removed correctly from both debugger model and UI.
    109                 breakpointManager.removeBreakpoint(uiSourceCodeA, 30);
    110 
    111                 breakpointManager.removeBreakpoint(uiSourceCodeA, 10);
    112                 breakpointManager.removeBreakpoint(uiSourceCodeA, 20);
     115                breakpointManager.removeBreakpoint(uiSourceCode, 30);
     116
     117                breakpointManager.removeBreakpoint(uiSourceCode, 10);
     118                breakpointManager.removeBreakpoint(uiSourceCode, 20);
    113119                setTimeout(checkResults, 0);
    114120            }
     
    125131        {
    126132            var breakpointManager = createBreakpointManager([], scriptMapping);
    127 
    128             breakpointManager.uiSourceCodeAdded(uiSourceCodeA);
     133            var uiSourceCode = createUISourceCode("a.js", "a.js");
     134            addUISourceCode(breakpointManager, uiSourceCode);
    129135
    130136            debuggerModel.actualLocations = [{ lineNumber: 16, columnNumber: 0 }];
    131             breakpointManager.setBreakpoint(uiSourceCodeA, 15, "", true);
     137            breakpointManager.setBreakpoint(uiSourceCode, 15, "", true);
    132138            setTimeout(checkResults, 0);
    133139            function checkResults()
     
    141147        {
    142148            var breakpointManager = createBreakpointManager([], scriptMapping);
    143 
    144             breakpointManager.uiSourceCodeAdded(uiSourceCodeA);
     149            var uiSourceCode = createUISourceCode("a.js", "a.js");
     150            addUISourceCode(breakpointManager, uiSourceCode);
    145151
    146152            debuggerModel.actualLocations = [];
    147             breakpointManager.setBreakpoint(uiSourceCodeA, 15, "", true);
     153            breakpointManager.setBreakpoint(uiSourceCode, 15, "", true);
    148154            setTimeout(checkResults, 0);
    149155            function checkResults()
     
    157163        {
    158164            var breakpointManager = createBreakpointManager(serializedBreakpoints, scriptMapping);
    159 
    160             breakpointManager.uiSourceCodeAdded(uiSourceCodeA);
     165            var uiSourceCodeA = createUISourceCode("a.js", "a.js");
     166            addUISourceCode(breakpointManager, uiSourceCodeA);
    161167            setTimeout(navigateToB, 0);
    162168
     
    168174                breakpointManager.debuggerReset();
    169175
    170                 breakpointManager.uiSourceCodeAdded(uiSourceCodeB);
     176                var uiSourceCodeB = createUISourceCode("b.js", "b.js");
     177                addUISourceCode(breakpointManager, uiSourceCodeB);
    171178                setTimeout(navigateToA, 0);
    172179            }
     
    182189                var eventData = { breakpointId: "a.js:10:0", location: { scriptId: "a.js", lineNumber: 11, columnNumber: 5 }};
    183190                debuggerModel.dispatchEventToListeners(WebInspector.DebuggerModel.Events.BreakpointResolved, eventData);
    184                 breakpointManager.uiSourceCodeAdded(uiSourceCodeA);
     191                var uiSourceCodeA = createUISourceCode("a.js", "a.js");
     192                addUISourceCode(breakpointManager, uiSourceCodeA);
    185193                setTimeout(checkResults, 0);
    186194            }
     
    208216            scriptMapping.uiLocationToRawLocation = function(uiSourceCode, lineNumber) { return { scriptId: "c.js", lineNumber: lineNumber, columnNumber: 0 }; };
    209217
    210             breakpointManager.uiSourceCodeAdded(originalUISourceCode);
     218            addUISourceCode(breakpointManager, originalUISourceCode);
    211219            setTimeout(format, 0);
    212220
     
    223231                scriptMapping.uiLocationToRawLocation = function(uiSourceCode, lineNumber) { return { scriptId: "c.js", lineNumber: Math.floor(lineNumber / 2), columnNumber: 0 }; };
    224232
    225                 breakpointManager.uiSourceCodeAdded(formattedUISourceCode);
     233                addUISourceCode(breakpointManager, formattedUISourceCode);
    226234                breakpointManager.setBreakpoint(formattedUISourceCode, 4, "", true);
    227235                breakpointManager.setBreakpoint(formattedUISourceCode, 8, "", false);
     
    246254                breakpointManager.debuggerReset();
    247255
    248                 breakpointManager.uiSourceCodeAdded(formattedUISourceCode);
     256                var formattedUISourceCode = createUISourceCode("deobfuscated:c.js", "c.js");
     257                addUISourceCode(breakpointManager, formattedUISourceCode);
    249258                var eventData = { breakpointId: "c.js:2:0", location: { scriptId: "c.js", lineNumber: 3, columnNumber: 0 }};
    250259                debuggerModel.dispatchEventToListeners(WebInspector.DebuggerModel.Events.BreakpointResolved, eventData);
  • trunk/Source/WebCore/ChangeLog

    r112264 r112266  
     12012-03-27  Pavel Podivilov  <podivilov@chromium.org>
     2
     3        Web Inspector: dispatch breakpoint-added and breakpoint-removed events on UISourceCode.
     4        https://bugs.webkit.org/show_bug.cgi?id=82318
     5
     6        Reviewed by Vsevolod Vlasov.
     7
     8        Breakpoint-added and breakpoint-removed events are always related to specific UISourceCode.
     9        See bug 82224 for more details.
     10
     11        * inspector/front-end/BreakpointManager.js:
     12        (WebInspector.BreakpointManager.prototype._addBreakpointToUI):
     13        (WebInspector.BreakpointManager.prototype._removeBreakpointFromUI):
     14        * inspector/front-end/DebuggerPresentationModel.js:
     15        (WebInspector.DebuggerPresentationModel):
     16        (WebInspector.UISourceCodeImpl.prototype.breakpointAdded):
     17        (WebInspector.UISourceCodeImpl.prototype.breakpointRemoved):
     18        * inspector/front-end/ScriptsPanel.js:
     19        (WebInspector.ScriptsPanel.prototype._uiSourceCodeAdded):
     20        (WebInspector.ScriptsPanel.prototype._uiSourceCodeRemoved):
     21        (WebInspector.ScriptsPanel.prototype._addBreakpointListeners):
     22        (WebInspector.ScriptsPanel.prototype._removeBreakpointListeners):
     23        (WebInspector.ScriptsPanel.prototype._uiSourceCodeReplaced):
     24        * inspector/front-end/UISourceCode.js:
     25
    1262012-03-27  Jason Liu  <jason.liu@torchmobile.com.cn>
    227
  • trunk/Source/WebCore/inspector/front-end/BreakpointManager.js

    r112236 r112266  
    3232 * @constructor
    3333 * @param {WebInspector.Setting} breakpointStorage
    34  * @param {function(WebInspector.UIBreakpoint)} breakpointAddedDelegate
    35  * @param {function(WebInspector.UIBreakpoint)} breakpointRemovedDelegate
    3634 * @param {WebInspector.DebuggerModel} debuggerModel
    3735 * @param {WebInspector.MainScriptMapping} scriptMapping
    3836 */
    39 WebInspector.BreakpointManager = function(breakpointStorage, breakpointAddedDelegate, breakpointRemovedDelegate, debuggerModel, scriptMapping)
     37WebInspector.BreakpointManager = function(breakpointStorage, debuggerModel, scriptMapping)
    4038{
    4139    this._breakpointStorage = breakpointStorage;
    42     this._breakpointAddedDelegate = breakpointAddedDelegate;
    43     this._breakpointRemovedDelegate = breakpointRemovedDelegate;
    4440
    4541    /**
     
    199195    {
    200196        var uiBreakpoint = breakpoint.createUIBreakpoint(uiSourceCode);
    201         console.assert(!uiSourceCode.breakpoints()[uiBreakpoint.lineNumber]);
    202197        uiSourceCode.breakpointAdded(uiBreakpoint.lineNumber, uiBreakpoint);
    203         this._breakpointAddedDelegate(uiBreakpoint);
    204198    },
    205199
     
    214208        uiSourceCode.breakpointRemoved(lineNumber);
    215209        uiBreakpoint.breakpoint.removeUIBreakpoint();
    216         this._breakpointRemovedDelegate(uiBreakpoint);
    217210    },
    218211
  • trunk/Source/WebCore/inspector/front-end/DebuggerPresentationModel.js

    r112236 r112266  
    4040    this._presentationCallFrames = [];
    4141
    42     this._breakpointManager = new WebInspector.BreakpointManager(WebInspector.settings.breakpoints, this._breakpointAdded.bind(this), this._breakpointRemoved.bind(this), WebInspector.debuggerModel, this._scriptMapping);
     42    this._breakpointManager = new WebInspector.BreakpointManager(WebInspector.settings.breakpoints, WebInspector.debuggerModel, this._scriptMapping);
    4343
    4444    this._pendingConsoleMessages = {};
     
    6464    ConsoleMessageAdded: "console-message-added",
    6565    ConsoleMessagesCleared: "console-messages-cleared",
    66     UIBreakpointAdded: "ui-breakpoint-added",
    67     UIBreakpointRemoved: "ui-breakpoint-removed",
    6866    DebuggerPaused: "debugger-paused",
    6967    DebuggerResumed: "debugger-resumed",
     
    437435    },
    438436
    439     /**
    440      * @param {WebInspector.UIBreakpoint} uiBreakpoint
    441      */
    442     _breakpointAdded: function(uiBreakpoint)
    443     {
    444         this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.UIBreakpointAdded, uiBreakpoint);
    445     },
    446 
    447     /**
    448      * @param {WebInspector.UIBreakpoint} uiBreakpoint
    449      */
    450     _breakpointRemoved: function(uiBreakpoint)
    451     {
    452         this.dispatchEventToListeners(WebInspector.DebuggerPresentationModel.Events.UIBreakpointRemoved, uiBreakpoint);
    453     },
    454 
    455437    _debuggerPaused: function()
    456438    {
     
    597579    breakpointAdded: function(lineNumber, breakpoint)
    598580    {
     581        console.assert(!this._breakpoints[lineNumber]);
    599582        this._breakpoints[lineNumber] = breakpoint;
     583        this.dispatchEventToListeners(WebInspector.UISourceCode.Events.BreakpointAdded, breakpoint);
    600584    },
    601585
    602586    breakpointRemoved: function(lineNumber)
    603587    {
     588        var breakpoint = this._breakpoints[lineNumber];
    604589        delete this._breakpoints[lineNumber];
    605     }
     590        this.dispatchEventToListeners(WebInspector.UISourceCode.Events.BreakpointRemoved, breakpoint);
     591    },
    606592}
    607593
  • trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js

    r111682 r112266  
    178178    this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.ConsoleMessageAdded, this._consoleMessageAdded, this);
    179179    this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.ConsoleMessagesCleared, this._consoleMessagesCleared, this);
    180     this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.UIBreakpointAdded, this._uiBreakpointAdded, this);
    181     this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.UIBreakpointRemoved, this._uiBreakpointRemoved, this);
    182180    this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.DebuggerPaused, this._debuggerPaused, this);
    183181    this._presentationModel.addEventListener(WebInspector.DebuggerPresentationModel.Events.DebuggerResumed, this._debuggerResumed, this);
     
    259257    {
    260258        var uiSourceCode = /** @type {WebInspector.UISourceCode} */ event.data;
     259        this._addBreakpointListeners(uiSourceCode);
    261260
    262261        if (!uiSourceCode.url || uiSourceCode.isSnippetEvaluation) {
     
    281280        var uiSourceCode = /** @type {WebInspector.UISourceCode} */ event.data;
    282281        this._removeSourceFrame(uiSourceCode);
     282        this._removeBreakpointListeners(uiSourceCode);
     283    },
     284
     285    /**
     286     * @param {WebInspector.UISourceCode} uiSourceCode
     287     */
     288    _addBreakpointListeners: function(uiSourceCode)
     289    {
     290        uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.BreakpointAdded, this._uiBreakpointAdded, this);
     291        uiSourceCode.addEventListener(WebInspector.UISourceCode.Events.BreakpointRemoved, this._uiBreakpointRemoved, this);
     292    },
     293
     294    /**
     295     * @param {WebInspector.UISourceCode} uiSourceCode
     296     */
     297    _removeBreakpointListeners: function(uiSourceCode)
     298    {
     299        uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.BreakpointAdded, this._uiBreakpointAdded, this);
     300        uiSourceCode.removeEventListener(WebInspector.UISourceCode.Events.BreakpointRemoved, this._uiBreakpointRemoved, this);
    283301    },
    284302
     
    574592        for (var i = 0; i < oldUISourceCodeList.length; ++i)
    575593            this._removeSourceFrame(oldUISourceCodeList[i]);
     594
     595        for (var i = 0; i < oldUISourceCodeList.length; ++i)
     596            this._removeBreakpointListeners(oldUISourceCodeList[i]);
     597        for (var i = 0; i < uiSourceCodeList.length; ++i)
     598            this._addBreakpointListeners(uiSourceCodeList[i]);
    576599    },
    577600
  • trunk/Source/WebCore/inspector/front-end/UISourceCode.js

    r112236 r112266  
    5050
    5151WebInspector.UISourceCode.Events = {
    52     ContentChanged: "content-changed"
     52    ContentChanged: "content-changed",
     53    BreakpointAdded: "breakpoint-added",
     54    BreakpointRemoved: "breakpoint-removed"
    5355}
    5456
     
    208210    },
    209211
     212    /**
     213     * @return {Array.<WebInspector.UIBreakpoint>}
     214     */
    210215    breakpoints: function() {}
    211216}
Note: See TracChangeset for help on using the changeset viewer.