[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

podivilov at chromium.org podivilov at chromium.org
Wed Dec 22 15:22:48 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 020552bb99bb4bd86d88d715053b9a603e119828
Author: podivilov at chromium.org <podivilov at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Nov 2 14:32:44 2010 +0000

    2010-11-02  Pavel Podivilov  <podivilov at chromium.org>
    
            Reviewed by Pavel Feldman.
    
            Web Inspector: make xhr breakpoints editable
            https://bugs.webkit.org/show_bug.cgi?id=48830
    
            * inspector/front-end/BreakpointManager.js:
            (WebInspector.Breakpoint.prototype.set sourceText):
            (WebInspector.Breakpoint.prototype.click):
            (WebInspector.Breakpoint.prototype.populateLabelElement):
            (WebInspector.XHRBreakpoint.prototype.populateEditElement):
            * inspector/front-end/BreakpointsSidebarPane.js:
            (WebInspector.BreakpointsSidebarPane.prototype.addBreakpointItem):
            (WebInspector.BreakpointsSidebarPane.prototype._breakpointItemClicked):
            (WebInspector.BreakpointsSidebarPane.prototype._contextMenuEventFired):
            (WebInspector.BreakpointsSidebarPane.prototype._addListElement):
            (WebInspector.BreakpointsSidebarPane.prototype._removeListElement):
            (WebInspector.XHRBreakpointsSidebarPane.addButtonClicked):
            (WebInspector.XHRBreakpointsSidebarPane):
            (WebInspector.XHRBreakpointsSidebarPane.prototype._startEditingBreakpoint):
            (WebInspector.XHRBreakpointsSidebarPane.prototype._hideEditBreakpointDialog):
            (WebInspector.XHRBreakpointsSidebarPane.prototype._breakpointItemClicked):
            (WebInspector.BreakpointItem):
            (WebInspector.BreakpointItem.prototype.get element):
            (WebInspector.BreakpointItem.prototype.click):
            (WebInspector.BreakpointItem.prototype.populateEditElement):
            (WebInspector.BreakpointItem.prototype.remove):
            (WebInspector.BreakpointItem.prototype._hitStateChanged):
            (WebInspector.BreakpointItem.prototype._labelChanged):
            (WebInspector.BreakpointItem.prototype._createLabelElement):
            * inspector/front-end/inspector.js:
            (WebInspector.createJSBreakpointsSidebarPane.breakpointAdded):
            (WebInspector.createJSBreakpointsSidebarPane):
            (WebInspector.createDOMBreakpointsSidebarPane.breakpointAdded):
            (WebInspector.createDOMBreakpointsSidebarPane):
            (WebInspector.createXHRBreakpointsSidebarPane.breakpointAdded):
            (WebInspector.createXHRBreakpointsSidebarPane):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@71113 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index ad6cf00..d32ed0a 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -2,6 +2,45 @@
 
         Reviewed by Pavel Feldman.
 
+        Web Inspector: make xhr breakpoints editable
+        https://bugs.webkit.org/show_bug.cgi?id=48830
+
+        * inspector/front-end/BreakpointManager.js:
+        (WebInspector.Breakpoint.prototype.set sourceText):
+        (WebInspector.Breakpoint.prototype.click):
+        (WebInspector.Breakpoint.prototype.populateLabelElement):
+        (WebInspector.XHRBreakpoint.prototype.populateEditElement):
+        * inspector/front-end/BreakpointsSidebarPane.js:
+        (WebInspector.BreakpointsSidebarPane.prototype.addBreakpointItem):
+        (WebInspector.BreakpointsSidebarPane.prototype._breakpointItemClicked):
+        (WebInspector.BreakpointsSidebarPane.prototype._contextMenuEventFired):
+        (WebInspector.BreakpointsSidebarPane.prototype._addListElement):
+        (WebInspector.BreakpointsSidebarPane.prototype._removeListElement):
+        (WebInspector.XHRBreakpointsSidebarPane.addButtonClicked):
+        (WebInspector.XHRBreakpointsSidebarPane):
+        (WebInspector.XHRBreakpointsSidebarPane.prototype._startEditingBreakpoint):
+        (WebInspector.XHRBreakpointsSidebarPane.prototype._hideEditBreakpointDialog):
+        (WebInspector.XHRBreakpointsSidebarPane.prototype._breakpointItemClicked):
+        (WebInspector.BreakpointItem):
+        (WebInspector.BreakpointItem.prototype.get element):
+        (WebInspector.BreakpointItem.prototype.click):
+        (WebInspector.BreakpointItem.prototype.populateEditElement):
+        (WebInspector.BreakpointItem.prototype.remove):
+        (WebInspector.BreakpointItem.prototype._hitStateChanged):
+        (WebInspector.BreakpointItem.prototype._labelChanged):
+        (WebInspector.BreakpointItem.prototype._createLabelElement):
+        * inspector/front-end/inspector.js:
+        (WebInspector.createJSBreakpointsSidebarPane.breakpointAdded):
+        (WebInspector.createJSBreakpointsSidebarPane):
+        (WebInspector.createDOMBreakpointsSidebarPane.breakpointAdded):
+        (WebInspector.createDOMBreakpointsSidebarPane):
+        (WebInspector.createXHRBreakpointsSidebarPane.breakpointAdded):
+        (WebInspector.createXHRBreakpointsSidebarPane):
+
+2010-11-02  Pavel Podivilov  <podivilov at chromium.org>
+
+        Reviewed by Pavel Feldman.
+
         Web Inspector: fix for breakpoints not restored on live edit bug
         https://bugs.webkit.org/show_bug.cgi?id=48833
 
diff --git a/WebCore/inspector/front-end/BreakpointManager.js b/WebCore/inspector/front-end/BreakpointManager.js
index d4df652..4be56a1 100644
--- a/WebCore/inspector/front-end/BreakpointManager.js
+++ b/WebCore/inspector/front-end/BreakpointManager.js
@@ -347,7 +347,7 @@ WebInspector.Breakpoint.prototype = {
     set sourceText(text)
     {
         this._sourceText = text;
-        this.dispatchEventToListeners("text-changed");
+        this.dispatchEventToListeners("label-changed");
     },
 
     get id()
@@ -372,6 +372,11 @@ WebInspector.Breakpoint.prototype = {
         this.dispatchEventToListeners("condition-changed");
     },
 
+    click: function(event)
+    {
+        WebInspector.panels.scripts.showSourceLine(this.url, this.line);
+    },
+
     compareTo: function(other)
     {
         if (this.url != other.url)
@@ -381,6 +386,18 @@ WebInspector.Breakpoint.prototype = {
         return 0;
     },
 
+    populateLabelElement: function(element)
+    {
+        var displayName = this.url ? WebInspector.displayNameForURL(this.url) : WebInspector.UIString("(program)");
+        var labelElement = document.createTextNode(displayName + ":" + this.line);
+        element.appendChild(labelElement);
+
+        var sourceTextElement = document.createElement("div");
+        sourceTextElement.textContent = this.sourceText;
+        sourceTextElement.className = "source-text monospace";
+        element.appendChild(sourceTextElement);
+    },
+
     remove: function()
     {
         InspectorBackend.removeBreakpoint(this.sourceID, this.line);
@@ -569,6 +586,11 @@ WebInspector.XHRBreakpoint.prototype = {
         return this._compare(this._url, other._url);
     },
 
+    populateEditElement: function(element)
+    {
+        element.textContent = this._url;
+    },
+
     populateLabelElement: function(element)
     {
         var label;
diff --git a/WebCore/inspector/front-end/BreakpointsSidebarPane.js b/WebCore/inspector/front-end/BreakpointsSidebarPane.js
index 72542ea..cff88ab 100644
--- a/WebCore/inspector/front-end/BreakpointsSidebarPane.js
+++ b/WebCore/inspector/front-end/BreakpointsSidebarPane.js
@@ -47,52 +47,58 @@ WebInspector.BreakpointsSidebarPane.prototype = {
         }
     },
 
-    addBreakpoint: function(breakpointItem)
+    addBreakpointItem: function(breakpointItem)
     {
-        breakpointItem.addEventListener("breakpoint-hit", this._breakpointHit, this);
-        breakpointItem.addEventListener("removed", this._breakpointRemoved, this);
-
-        var element = breakpointItem.element();
+        var element = breakpointItem.element;
         element._breakpointItem = breakpointItem;
 
+        breakpointItem.addEventListener("breakpoint-hit", this.expand, this);
+        breakpointItem.addEventListener("removed", this._removeListElement.bind(this, element), this);
+
         var currentElement = this.listElement.firstChild;
         while (currentElement) {
-             if (currentElement._breakpointItem.compareTo(element._breakpointItem) > 0) {
-                this.listElement.insertBefore(element, currentElement);
+            if (currentElement._breakpointItem && currentElement._breakpointItem.compareTo(element._breakpointItem) > 0)
                 break;
-            }
             currentElement = currentElement.nextSibling;
         }
-        if (!currentElement)
-            this.listElement.appendChild(element);
+        this._addListElement(element, currentElement);
 
+        element.addEventListener("click", this._breakpointItemClicked.bind(this, breakpointItem), false);
         element.addEventListener("contextmenu", this._contextMenuEventFired.bind(this, breakpointItem), true);
+    },
 
-        if (this.emptyElement.parentElement) {
-            this.bodyElement.removeChild(this.emptyElement);
-            this.bodyElement.appendChild(this.listElement);
-        }
+    _breakpointItemClicked: function(breakpointItem, event)
+    {
+        breakpointItem.click(event);
     },
 
-    _breakpointHit: function(event)
+    _contextMenuEventFired: function(breakpointItem, event)
     {
-        this.expanded = true;
+        var contextMenu = new WebInspector.ContextMenu();
+        contextMenu.appendItem(WebInspector.UIString("Remove Breakpoint"), breakpointItem.remove.bind(breakpointItem));
+        contextMenu.show(event);
     },
 
-    _breakpointRemoved: function(event)
+    _addListElement: function(element, beforeElement)
     {
-        this.listElement.removeChild(event.target.element());
-        if (!this.listElement.firstChild) {
-            this.bodyElement.removeChild(this.listElement);
-            this.bodyElement.appendChild(this.emptyElement);
+        if (beforeElement)
+            this.listElement.insertBefore(element, beforeElement);
+        else {
+            if (!this.listElement.firstChild) {
+                this.bodyElement.removeChild(this.emptyElement);
+                this.bodyElement.appendChild(this.listElement);
+            }
+            this.listElement.appendChild(element);
         }
     },
 
-    _contextMenuEventFired: function(breakpointItem, event)
+    _removeListElement: function(element)
     {
-        var contextMenu = new WebInspector.ContextMenu();
-        contextMenu.appendItem(WebInspector.UIString("Remove Breakpoint"), breakpointItem.remove.bind(breakpointItem));
-        contextMenu.show(event);
+        this.listElement.removeChild(element);
+        if (!this.listElement.firstChild) {
+            this.bodyElement.removeChild(this.listElement);
+            this.bodyElement.appendChild(this.emptyElement);
+        }
     }
 }
 
@@ -102,36 +108,57 @@ WebInspector.XHRBreakpointsSidebarPane = function()
 {
     WebInspector.BreakpointsSidebarPane.call(this, WebInspector.UIString("XHR Breakpoints"));
 
+    function addButtonClicked(event)
+    {
+        event.stopPropagation();
+        this._startEditingBreakpoint(null);
+    }
+
     var addButton = document.createElement("button");
     addButton.className = "add";
-    addButton.addEventListener("click", this._showEditBreakpointDialog.bind(this), false);
+    addButton.addEventListener("click", addButtonClicked.bind(this), false);
     this.titleElement.appendChild(addButton);
-
-    this.urlInputElement = document.createElement("span");
-    this.urlInputElement.className = "breakpoint-condition editing";
 }
 
 WebInspector.XHRBreakpointsSidebarPane.prototype = {
-    _showEditBreakpointDialog: function(event)
+    _startEditingBreakpoint: function(breakpointItem)
     {
-        event.stopPropagation();
-
-        if (this.urlInputElement.parentElement)
+        if (this._editingBreakpoint)
             return;
+        this._editingBreakpoint = true;
 
         if (!this.expanded)
             this.expanded = true;
 
-        this.urlInputElement.textContent = "";
-        this.bodyElement.insertBefore(this.urlInputElement, this.bodyElement.firstChild);
-        WebInspector.startEditing(this.urlInputElement, this._hideEditBreakpointDialog.bind(this, false), this._hideEditBreakpointDialog.bind(this, true));
+        var inputElement = document.createElement("span");
+        inputElement.className = "breakpoint-condition editing";
+        if (breakpointItem) {
+            breakpointItem.populateEditElement(inputElement);
+            this.listElement.insertBefore(inputElement, breakpointItem.element);
+            breakpointItem.element.addStyleClass("hidden");
+        } else
+            this._addListElement(inputElement, this.listElement.firstChild);
+
+        var commitHandler = this._hideEditBreakpointDialog.bind(this, inputElement, true, breakpointItem);
+        var cancelHandler = this._hideEditBreakpointDialog.bind(this, inputElement, false, breakpointItem);
+        WebInspector.startEditing(inputElement, commitHandler, cancelHandler);
+    },
+
+    _hideEditBreakpointDialog: function(inputElement, accept, breakpointItem)
+    {
+        this._removeListElement(inputElement);
+        this._editingBreakpoint = false;
+        if (accept) {
+            if (breakpointItem)
+                breakpointItem.remove();
+            WebInspector.breakpointManager.createXHRBreakpoint(inputElement.textContent.toLowerCase());
+        } else if (breakpointItem)
+            breakpointItem.element.removeStyleClass("hidden");
     },
 
-    _hideEditBreakpointDialog: function(discard)
+    _breakpointItemClicked: function(breakpointItem, event)
     {
-        if (!discard)
-            WebInspector.breakpointManager.createXHRBreakpoint(this.urlInputElement.textContent.toLowerCase());
-        this.bodyElement.removeChild(this.urlInputElement);
+        this._startEditingBreakpoint(breakpointItem);
     }
 }
 
@@ -142,7 +169,6 @@ WebInspector.BreakpointItem = function(breakpoint)
     this._breakpoint = breakpoint;
 
     this._element = document.createElement("li");
-    this._element.addEventListener("click", this._breakpointClicked.bind(this), false);
 
     var checkboxElement = document.createElement("input");
     checkboxElement.className = "checkbox-elem";
@@ -151,16 +177,16 @@ WebInspector.BreakpointItem = function(breakpoint)
     checkboxElement.addEventListener("click", this._checkboxClicked.bind(this), false);
     this._element.appendChild(checkboxElement);
 
-    if ("populateLabelElement" in this._breakpoint)
-        this._breakpoint.populateLabelElement(this._element);
+    this._createLabelElement();
 
     this._breakpoint.addEventListener("enable-changed", this._enableChanged, this);
     this._breakpoint.addEventListener("hit-state-changed", this._hitStateChanged, this);
+    this._breakpoint.addEventListener("label-changed", this._labelChanged, this);
     this._breakpoint.addEventListener("removed", this.dispatchEventToListeners.bind(this, "removed"));
 }
 
 WebInspector.BreakpointItem.prototype = {
-    element: function()
+    get element()
     {
         return this._element;
     },
@@ -170,15 +196,19 @@ WebInspector.BreakpointItem.prototype = {
         return this._breakpoint.compareTo(other._breakpoint);
     },
 
-    remove: function()
+    click: function(event)
     {
-        this._breakpoint.remove();
+        this._breakpoint.click(event);
     },
 
-    _breakpointClicked: function(event)
+    populateEditElement: function(element)
     {
-        if ("click" in this._breakpoint)
-            this._breakpoint.click();
+        this._breakpoint.populateEditElement(element);
+    },
+
+    remove: function()
+    {
+        this._breakpoint.remove();
     },
 
     _checkboxClicked: function(event)
@@ -202,41 +232,23 @@ WebInspector.BreakpointItem.prototype = {
             this.dispatchEventToListeners("breakpoint-hit");
         } else
             this._element.removeStyleClass("breakpoint-hit");
-    }
-}
-
-WebInspector.BreakpointItem.prototype.__proto__ = WebInspector.Object.prototype;
-
-WebInspector.JSBreakpointItem = function(breakpoint)
-{
-    WebInspector.BreakpointItem.call(this, breakpoint);
-
-    var displayName = this._breakpoint.url ? WebInspector.displayNameForURL(this._breakpoint.url) : WebInspector.UIString("(program)");
-    var labelElement = document.createTextNode(displayName + ":" + this._breakpoint.line);
-    this._element.appendChild(labelElement);
-
-    var sourceTextElement = document.createElement("div");
-    sourceTextElement.textContent = this._breakpoint.sourceText;
-    sourceTextElement.className = "source-text monospace";
-    this._element.appendChild(sourceTextElement);
-
-    this._breakpoint.addEventListener("text-changed", this._textChanged, this);
-}
+    },
 
-WebInspector.JSBreakpointItem.prototype = {
-    _breakpointClicked: function()
+    _labelChanged: function(event)
     {
-        WebInspector.panels.scripts.showSourceLine(this._breakpoint.url, this._breakpoint.line);
+        this._element.removeChild(this._labelElement);
+        this._createLabelElement();
     },
 
-    _textChanged: function()
+    _createLabelElement: function()
     {
-        var sourceTextElement = this._element.firstChild.nextSibling.nextSibling;
-        sourceTextElement.textContent = this._breakpoint.sourceText;
+        this._labelElement = document.createElement("span");
+        this._breakpoint.populateLabelElement(this._labelElement);
+        this._element.appendChild(this._labelElement);
     }
 }
 
-WebInspector.JSBreakpointItem.prototype.__proto__ = WebInspector.BreakpointItem.prototype;
+WebInspector.BreakpointItem.prototype.__proto__ = WebInspector.Object.prototype;
 
 WebInspector.EventListenerBreakpointsSidebarPane = function()
 {
diff --git a/WebCore/inspector/front-end/inspector.js b/WebCore/inspector/front-end/inspector.js
index 85de9cd..bf7ec39 100644
--- a/WebCore/inspector/front-end/inspector.js
+++ b/WebCore/inspector/front-end/inspector.js
@@ -190,7 +190,7 @@ var WebInspector = {
         var pane = new WebInspector.BreakpointsSidebarPane(WebInspector.UIString("Breakpoints"));
         function breakpointAdded(event)
         {
-            pane.addBreakpoint(new WebInspector.JSBreakpointItem(event.data));
+            pane.addBreakpointItem(new WebInspector.BreakpointItem(event.data));
         }
         WebInspector.breakpointManager.addEventListener("breakpoint-added", breakpointAdded);
         return pane;
@@ -201,7 +201,7 @@ var WebInspector = {
         var pane = new WebInspector.BreakpointsSidebarPane(WebInspector.UIString("DOM Breakpoints"));
         function breakpointAdded(event)
         {
-            pane.addBreakpoint(new WebInspector.BreakpointItem(event.data));
+            pane.addBreakpointItem(new WebInspector.BreakpointItem(event.data));
         }
         WebInspector.breakpointManager.addEventListener("dom-breakpoint-added", breakpointAdded);
         return pane;
@@ -212,7 +212,7 @@ var WebInspector = {
         var pane = new WebInspector.XHRBreakpointsSidebarPane();
         function breakpointAdded(event)
         {
-            pane.addBreakpoint(new WebInspector.BreakpointItem(event.data));
+            pane.addBreakpointItem(new WebInspector.BreakpointItem(event.data));
         }
         WebInspector.breakpointManager.addEventListener("xhr-breakpoint-added", breakpointAdded);
         return pane;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list