Changeset 74350 in webkit


Ignore:
Timestamp:
Dec 20, 2010 8:42:29 AM (13 years ago)
Author:
podivilov@chromium.org
Message:

2010-12-10 Pavel Podivilov <podivilov@chromium.org>

Reviewed by Yury Semikhatsky.

Web Inspector: "Add conditional breakpoint" - create breakpoint only after condition is provided.
https://bugs.webkit.org/show_bug.cgi?id=50813

  • inspector/front-end/SourceFrame.js: (WebInspector.SourceFrame.prototype._addBreakpoint): (WebInspector.SourceFrame.prototype._breakpointRemoved): (WebInspector.SourceFrame.prototype._breakpointChanged): (WebInspector.SourceFrame.prototype._setBreakpointDecoration): (WebInspector.SourceFrame.prototype._removeBreakpointDecoration): (WebInspector.SourceFrame.prototype._contextMenu.addConditionalBreakpoint.didEditBreakpointCondition): (WebInspector.SourceFrame.prototype._contextMenu.addConditionalBreakpoint): (WebInspector.SourceFrame.prototype._contextMenu.else.editBreakpointCondition.didEditBreakpointCondition): (WebInspector.SourceFrame.prototype._contextMenu.else.editBreakpointCondition): (WebInspector.SourceFrame.prototype._contextMenu): (WebInspector.SourceFrame.prototype._editBreakpointCondition.finishEditing): (WebInspector.SourceFrame.prototype._editBreakpointCondition): (WebInspector.SourceFrame.prototype._continueToLine): (WebInspector.SourceFrame.prototype._setBreakpoint):
Location:
trunk/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r74343 r74350  
     12010-12-10  Pavel Podivilov  <podivilov@chromium.org>
     2
     3        Reviewed by Yury Semikhatsky.
     4
     5        Web Inspector: "Add conditional breakpoint" - create breakpoint only after condition is provided.
     6        https://bugs.webkit.org/show_bug.cgi?id=50813
     7
     8        * inspector/front-end/SourceFrame.js:
     9        (WebInspector.SourceFrame.prototype._addBreakpoint):
     10        (WebInspector.SourceFrame.prototype._breakpointRemoved):
     11        (WebInspector.SourceFrame.prototype._breakpointChanged):
     12        (WebInspector.SourceFrame.prototype._setBreakpointDecoration):
     13        (WebInspector.SourceFrame.prototype._removeBreakpointDecoration):
     14        (WebInspector.SourceFrame.prototype._contextMenu.addConditionalBreakpoint.didEditBreakpointCondition):
     15        (WebInspector.SourceFrame.prototype._contextMenu.addConditionalBreakpoint):
     16        (WebInspector.SourceFrame.prototype._contextMenu.else.editBreakpointCondition.didEditBreakpointCondition):
     17        (WebInspector.SourceFrame.prototype._contextMenu.else.editBreakpointCondition):
     18        (WebInspector.SourceFrame.prototype._contextMenu):
     19        (WebInspector.SourceFrame.prototype._editBreakpointCondition.finishEditing):
     20        (WebInspector.SourceFrame.prototype._editBreakpointCondition):
     21        (WebInspector.SourceFrame.prototype._continueToLine):
     22        (WebInspector.SourceFrame.prototype._setBreakpoint):
     23
    1242010-12-20  Andrei Popescu  <andreip@google.com>
    225
  • trunk/WebCore/inspector/front-end/SourceFrame.js

    r74261 r74350  
    300300    },
    301301
    302     _breakpointChanged: function(event)
    303     {
    304         var breakpoint = event.target;
    305         var lineNumber = breakpoint.line - 1;
    306         if (lineNumber >= this._textModel.linesCount)
    307             return;
    308 
    309         if (breakpoint.enabled)
    310             this._textViewer.removeDecoration(lineNumber, "webkit-breakpoint-disabled");
    311         else
    312             this._textViewer.addDecoration(lineNumber, "webkit-breakpoint-disabled");
    313 
    314         if (breakpoint.condition)
    315             this._textViewer.addDecoration(lineNumber, "webkit-breakpoint-conditional");
    316         else
    317             this._textViewer.removeDecoration(lineNumber, "webkit-breakpoint-conditional");
    318     },
    319 
    320302    _updateExecutionLine: function(previousLine)
    321303    {
     
    430412    _addBreakpoint: function(breakpoint)
    431413    {
    432         var lineNumber = breakpoint.line - 1;
    433         if (lineNumber >= this._textModel.linesCount)
     414        if (breakpoint.line > this._textModel.linesCount)
    434415            return;
    435416
     
    438419        breakpoint.addEventListener("removed", this._breakpointRemoved, this);
    439420
    440         breakpoint.sourceText = this._textModel.line(lineNumber);
    441 
    442         this._textViewer.beginUpdates();
    443         this._textViewer.addDecoration(lineNumber, "webkit-breakpoint");
    444         if (!breakpoint.enabled)
    445             this._textViewer.addDecoration(lineNumber, "webkit-breakpoint-disabled");
    446         if (breakpoint.condition)
    447             this._textViewer.addDecoration(lineNumber, "webkit-breakpoint-conditional");
    448         this._textViewer.endUpdates();
     421        breakpoint.sourceText = this._textModel.line(breakpoint.line - 1);
     422        this._setBreakpointDecoration(breakpoint.line, breakpoint.enabled, !!breakpoint.condition);
    449423    },
    450424
     
    457431        breakpoint.removeEventListener("removed", null, this);
    458432
    459         var lineNumber = breakpoint.line - 1;
     433        this._removeBreakpointDecoration(breakpoint.line);
     434    },
     435
     436    _breakpointChanged: function(event)
     437    {
     438        var breakpoint = event.target;
     439        this._setBreakpointDecoration(breakpoint.line, breakpoint.enabled, !!breakpoint.condition);
     440    },
     441
     442    _setBreakpointDecoration: function(lineNumber, enabled, hasCondition)
     443    {
     444        lineNumber -= 1;
     445        this._textViewer.beginUpdates();
     446        this._textViewer.addDecoration(lineNumber, "webkit-breakpoint");
     447        if (enabled)
     448            this._textViewer.removeDecoration(lineNumber, "webkit-breakpoint-disabled");
     449        else
     450            this._textViewer.addDecoration(lineNumber, "webkit-breakpoint-disabled");
     451        if (hasCondition)
     452            this._textViewer.addDecoration(lineNumber, "webkit-breakpoint-conditional");
     453        else
     454            this._textViewer.removeDecoration(lineNumber, "webkit-breakpoint-conditional");
     455        this._textViewer.endUpdates();
     456    },
     457
     458    _removeBreakpointDecoration: function(lineNumber)
     459    {
     460        lineNumber -= 1;
    460461        this._textViewer.beginUpdates();
    461462        this._textViewer.removeDecoration(lineNumber, "webkit-breakpoint");
     
    486487            function addConditionalBreakpoint()
    487488            {
    488                 this._setBreakpoint(lineNumber);
    489                 var breakpoint = this._findBreakpoint(lineNumber);
    490                 if (breakpoint)
    491                     this._editBreakpointCondition(breakpoint);
     489                this._setBreakpointDecoration(lineNumber, true, true);
     490                function didEditBreakpointCondition(committed, condition)
     491                {
     492                    this._removeBreakpointDecoration(lineNumber);
     493                    if (committed)
     494                        this._setBreakpoint(lineNumber, condition);
     495                }
     496                this._editBreakpointCondition(lineNumber, "", didEditBreakpointCondition.bind(this));
    492497            }
    493 
    494498            contextMenu.appendItem(WebInspector.UIString("Add Conditional Breakpoint…"), addConditionalBreakpoint.bind(this));
    495499        } else {
    496500            // This row has a breakpoint, we want to show edit and remove breakpoint, and either disable or enable.
    497501            contextMenu.appendItem(WebInspector.UIString("Remove Breakpoint"), breakpoint.remove.bind(breakpoint));
    498             contextMenu.appendItem(WebInspector.UIString("Edit Breakpoint…"), this._editBreakpointCondition.bind(this, breakpoint));
     502            function editBreakpointCondition()
     503            {
     504                function didEditBreakpointCondition(committed, condition)
     505                {
     506                    if (committed)
     507                        breakpoint.condition = condition;
     508                }
     509                this._editBreakpointCondition(lineNumber, breakpoint.condition, didEditBreakpointCondition);
     510            }
     511            contextMenu.appendItem(WebInspector.UIString("Edit Breakpoint…"), editBreakpointCondition.bind(this));
    499512            if (breakpoint.enabled)
    500513                contextMenu.appendItem(WebInspector.UIString("Disable Breakpoint"), function() { breakpoint.enabled = false; });
     
    690703    },
    691704
    692     _editBreakpointCondition: function(breakpoint)
    693     {
    694         this._showBreakpointConditionPopup(breakpoint.line);
    695 
    696         function committed(element, newText)
     705    _editBreakpointCondition: function(lineNumber, condition, callback)
     706    {
     707        lineNumber -= 1;
     708        this._conditionElement = this._createConditionElement(lineNumber);
     709        this._textViewer.addDecoration(lineNumber, this._conditionElement);
     710
     711        function finishEditing(committed, element, newText)
    697712        {
    698             breakpoint.condition = newText;
    699             dismissed.call(this);
    700         }
    701 
    702         function dismissed()
    703         {
    704             if (this._conditionElement)
    705                 this._textViewer.removeDecoration(breakpoint.line - 1, this._conditionElement);
     713            this._textViewer.removeDecoration(lineNumber, this._conditionElement);
    706714            delete this._conditionEditorElement;
    707715            delete this._conditionElement;
    708         }
    709 
    710         var dismissedHandler = dismissed.bind(this);
    711         this._conditionEditorElement.addEventListener("blur", dismissedHandler, false);
     716            callback(committed, newText);
     717        }
    712718
    713719        WebInspector.startEditing(this._conditionEditorElement, {
    714720            context: null,
    715             commitHandler: committed.bind(this),
    716             cancelHandler: dismissedHandler
     721            commitHandler: finishEditing.bind(this, true),
     722            cancelHandler: finishEditing.bind(this, false)
    717723        });
    718         this._conditionEditorElement.value = breakpoint.condition;
     724        this._conditionEditorElement.value = condition;
    719725        this._conditionEditorElement.select();
    720     },
    721 
    722     _showBreakpointConditionPopup: function(lineNumber)
    723     {
    724         this._conditionElement = this._createConditionElement(lineNumber);
    725         this._textViewer.addDecoration(lineNumber - 1, this._conditionElement);
    726726    },
    727727
     
    774774    {
    775775        var sourceID = this._sourceIDForLine(lineNumber);
     776        if (!sourceID)
     777            return;
    776778        WebInspector.panels.scripts.continueToLine(sourceID, lineNumber);
    777779    },
     
    822824    },
    823825
    824     _setBreakpoint: function(lineNumber)
     826    _setBreakpoint: function(lineNumber, condition)
    825827    {
    826828        var sourceID = this._sourceIDForLine(lineNumber);
    827         WebInspector.debuggerModel.setBreakpoint(sourceID, lineNumber, true, "");
     829        if (!sourceID)
     830            return;
     831        WebInspector.debuggerModel.setBreakpoint(sourceID, lineNumber, true, condition);
    828832        if (!WebInspector.panels.scripts.breakpointsActivated)
    829833            WebInspector.panels.scripts.toggleBreakpointsClicked();
Note: See TracChangeset for help on using the changeset viewer.