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

apavlov at chromium.org apavlov at chromium.org
Wed Dec 22 18:49:31 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit a186e1bddfbaa510c1feed6f21ad3cbdebf63f20
Author: apavlov at chromium.org <apavlov at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Dec 20 17:25:59 2010 +0000

    2010-12-20  Alexander Pavlov  <apavlov at chromium.org>
    
            Reviewed by Yury Semikhatsky.
    
            Web Inspector: Make CSSCompletions a real class rather than singleton
            https://bugs.webkit.org/show_bug.cgi?id=51332
    
            Drive-by: make use of keywords from re2js in the CSS tokenizer
            (apparently, various authors have presumed that re2js is processed at build time).
    
            No new tests, as this is a refactoring.
    
            * inspector/front-end/CSSCompletions.js:
            (WebInspector.CSSCompletions):
            (WebInspector.CSSCompletions.prototype.startsWith):
            (WebInspector.CSSCompletions.prototype.firstStartsWith):
            (WebInspector.CSSCompletions.prototype._firstIndexOfPrefix):
            (WebInspector.CSSCompletions.prototype.keySet):
            (WebInspector.CSSCompletions.prototype.next):
            (WebInspector.CSSCompletions.prototype.previous):
            (WebInspector.CSSCompletions.prototype._closest):
            * inspector/front-end/SourceCSSTokenizer.js:
            (WebInspector.SourceCSSTokenizer):
            * inspector/front-end/SourceCSSTokenizer.re2js:
            * inspector/front-end/StylesSidebarPane.js:
            (WebInspector.StylePropertyTreeElement.prototype):
            * inspector/front-end/inspector.js:
            (WebInspector.doLoadedDone.propertyNamesCallback):
            (WebInspector.doLoadedDone):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@74352 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index d397f53..b8cf4e2 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,33 @@
+2010-12-20  Alexander Pavlov  <apavlov at chromium.org>
+
+        Reviewed by Yury Semikhatsky.
+
+        Web Inspector: Make CSSCompletions a real class rather than singleton
+        https://bugs.webkit.org/show_bug.cgi?id=51332
+
+        Drive-by: make use of keywords from re2js in the CSS tokenizer
+        (apparently, various authors have presumed that re2js is processed at build time).
+
+        No new tests, as this is a refactoring.
+
+        * inspector/front-end/CSSCompletions.js:
+        (WebInspector.CSSCompletions):
+        (WebInspector.CSSCompletions.prototype.startsWith):
+        (WebInspector.CSSCompletions.prototype.firstStartsWith):
+        (WebInspector.CSSCompletions.prototype._firstIndexOfPrefix):
+        (WebInspector.CSSCompletions.prototype.keySet):
+        (WebInspector.CSSCompletions.prototype.next):
+        (WebInspector.CSSCompletions.prototype.previous):
+        (WebInspector.CSSCompletions.prototype._closest):
+        * inspector/front-end/SourceCSSTokenizer.js:
+        (WebInspector.SourceCSSTokenizer):
+        * inspector/front-end/SourceCSSTokenizer.re2js:
+        * inspector/front-end/StylesSidebarPane.js:
+        (WebInspector.StylePropertyTreeElement.prototype):
+        * inspector/front-end/inspector.js:
+        (WebInspector.doLoadedDone.propertyNamesCallback):
+        (WebInspector.doLoadedDone):
+
 2010-12-10  Pavel Podivilov  <podivilov at chromium.org>
 
         Reviewed by Yury Semikhatsky.
diff --git a/WebCore/inspector/front-end/CSSCompletions.js b/WebCore/inspector/front-end/CSSCompletions.js
index 9480467..e8d7556 100644
--- a/WebCore/inspector/front-end/CSSCompletions.js
+++ b/WebCore/inspector/front-end/CSSCompletions.js
@@ -1,88 +1,124 @@
-WebInspector.CSSCompletions = [];
-
-WebInspector.CSSCompletions.startsWith = function(prefix)
-{
-    var firstIndex = this._firstIndexOfPrefix(prefix);
-    if (firstIndex === -1)
-        return [];
-
-    var results = [];
-    while (this[firstIndex].indexOf(prefix) === 0)
-        results.push(this[firstIndex++]);
-    return results;
-}
-
-WebInspector.CSSCompletions.firstStartsWith = function(prefix)
+/*
+ * Copyright (C) 2010 Nikita Vasilyev. All rights reserved.
+ * Copyright (C) 2010 Joseph Pecoraro. All rights reserved.
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+WebInspector.CSSCompletions = function(values)
 {
-    var foundIndex = this._firstIndexOfPrefix(prefix);
-    return (foundIndex === -1 ? "" : this[foundIndex]);
+    this._values = values.slice();
+    this._values.sort();
 }
 
-WebInspector.CSSCompletions._firstIndexOfPrefix = function(prefix)
-{
-    if (!prefix)
-        return -1;
-    if (!this.length)
-        return -1;
-
-    var maxIndex = this.length - 1;
-    var minIndex = 0;
-    var foundIndex;
-
-    do {
-        var middleIndex = (maxIndex + minIndex) >> 1;
-        if (this[middleIndex].indexOf(prefix) === 0) {
-            foundIndex = middleIndex;
-            break;
+WebInspector.CSSCompletions.prototype = {
+    startsWith: function(prefix)
+    {
+        var firstIndex = this._firstIndexOfPrefix(prefix);
+        if (firstIndex === -1)
+            return [];
+
+        var results = [];
+        while (this._values[firstIndex].indexOf(prefix) === 0)
+            results.push(this._values[firstIndex++]);
+        return results;
+    },
+
+    firstStartsWith: function(prefix)
+    {
+        var foundIndex = this._firstIndexOfPrefix(prefix);
+        return (foundIndex === -1 ? "" : this._values[foundIndex]);
+    },
+
+    _firstIndexOfPrefix: function(prefix)
+    {
+        if (!prefix)
+            return -1;
+        if (!this._values.length)
+            return -1;
+
+        var maxIndex = this._values.length - 1;
+        var minIndex = 0;
+        var foundIndex;
+
+        do {
+            var middleIndex = (maxIndex + minIndex) >> 1;
+            if (this._values[middleIndex].indexOf(prefix) === 0) {
+                foundIndex = middleIndex;
+                break;
+            }
+            if (this._values[middleIndex] < prefix)
+                minIndex = middleIndex + 1;
+            else
+                maxIndex = middleIndex - 1;
+        } while (minIndex <= maxIndex);
+
+        if (foundIndex === undefined)
+            return -1;
+
+        while (foundIndex && this._values[foundIndex - 1].indexOf(prefix) === 0)
+            foundIndex--;
+
+        return foundIndex;
+    },
+
+    keySet: function()
+    {
+        return this._values.keySet();
+    },
+
+    next: function(str, prefix)
+    {
+        return this._closest(str, prefix, 1);
+    },
+
+    previous: function(str, prefix)
+    {
+        return this._closest(str, prefix, -1);
+    },
+
+    _closest: function(str, prefix, shift)
+    {
+        if (!str)
+            return "";
+
+        var index = this._values.indexOf(str);
+        if (index === -1)
+            return "";
+
+        if (!prefix) {
+            index = (index + this._values.length + shift) % this._values.length;
+            return this._values[index];
         }
-        if (this[middleIndex] < prefix)
-            minIndex = middleIndex + 1;
-        else
-            maxIndex = middleIndex - 1;
-    } while (minIndex <= maxIndex);
-
-    if (!foundIndex)
-        return -1;
-
-    while (foundIndex && this[foundIndex - 1].indexOf(prefix) === 0)
-        foundIndex--;
-
-    return foundIndex;
-}
-
-WebInspector.CSSCompletions.next = function(str, prefix)
-{
-    return WebInspector.CSSCompletions._closest(str, prefix, 1);
-}
-
-WebInspector.CSSCompletions.previous = function(str, prefix)
-{
-    return WebInspector.CSSCompletions._closest(str, prefix, -1);
-}
-
-WebInspector.CSSCompletions._closest = function(str, prefix, shift)
-{
-    if (!str)
-        return "";
 
-    var index = this.indexOf(str);
-    if (index === -1)
-        return "";
-
-    if (!prefix) {
-        index = (index + this.length + shift) % this.length;
-        return this[index];
+        var propertiesWithPrefix = this.startsWith(prefix);
+        var j = propertiesWithPrefix.indexOf(str);
+        j = (j + propertiesWithPrefix.length + shift) % propertiesWithPrefix.length;
+        return propertiesWithPrefix[j];
     }
-
-    var propertiesWithPrefix = this.startsWith(prefix);
-    var j = propertiesWithPrefix.indexOf(str);
-    j = (j + propertiesWithPrefix.length + shift) % propertiesWithPrefix.length;
-    return propertiesWithPrefix[j];
-}
-
-WebInspector.CSSCompletions._load = function(properties)
-{
-    for (var i = 0; i < properties.length; ++i)
-        WebInspector.CSSCompletions.push(properties[i]);
-    WebInspector.CSSCompletions.sort();
 }
diff --git a/WebCore/inspector/front-end/SourceCSSTokenizer.js b/WebCore/inspector/front-end/SourceCSSTokenizer.js
index 82149e0..7259dc1 100644
--- a/WebCore/inspector/front-end/SourceCSSTokenizer.js
+++ b/WebCore/inspector/front-end/SourceCSSTokenizer.js
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Thu Feb 25 21:44:55 2010 */
+/* Generated by re2c 0.13.5 on Mon Dec 20 18:44:30 2010 */
 /*
  * Copyright (C) 2009 Google Inc. All rights reserved.
  *
@@ -45,11 +45,11 @@ WebInspector.SourceCSSTokenizer = function()
 {
     WebInspector.SourceTokenizer.call(this);
 
-    this._propertyKeywords = WebInspector.CSSCompletions.keySet();
+    this._propertyKeywords = WebInspector.cssNameCompletions.keySet();
 
     this._valueKeywords = [
         "above", "absolute", "activeborder", "activecaption", "afar", "after-white-space", "ahead", "alias", "all", "all-scroll",
-        "alternate", "always","amharic", "amharic-abegede", "antialiased", "appworkspace", "aqua", "arabic-indic", "armenian",
+        "alternate", "always","amharic", "amharic-abegede", "antialiased", "appworkspace", "aqua", "arabic-indic", "armenian", "asterisks",
         "auto", "avoid", "background", "backwards", "baseline", "below", "bidi-override", "binary", "bengali", "black", "blink",
         "block", "block-axis", "blue", "bold", "bolder", "border", "border-box", "both", "bottom", "break-all", "break-word", "button",
         "button-bevel", "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "cambodian", "capitalize", "caps-lock-indicator",
@@ -62,16 +62,16 @@ WebInspector.SourceCSSTokenizer = function()
         "ethiopic-abegede-ti-er", "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er", "ethiopic-halehame-aa-et",
         "ethiopic-halehame-am-et", "ethiopic-halehame-gez", "ethiopic-halehame-om-et", "ethiopic-halehame-sid-et",
         "ethiopic-halehame-so-et", "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig", "ew-resize", "expanded",
-        "extra-condensed", "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "forwards", "from", "fuchsia", "geometricPrecision",
+        "extra-condensed", "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "footnotes", "forwards", "from", "fuchsia", "geometricPrecision",
         "georgian", "gray", "graytext", "green", "grey", "groove", "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hebrew", "help",
         "hidden", "hide", "higher", "highlight", "highlighttext", "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "icon", "ignore",
         "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", "infobackground", "infotext", "inherit", "initial", "inline",
         "inline-axis", "inline-block", "inline-table", "inset", "inside", "intrinsic", "invert", "italic", "justify", "kannada", "katakana",
         "katakana-iroha", "khmer", "landscape", "lao", "large", "larger", "left", "level", "lighter", "lime", "line-through", "linear", "lines",
-        "list-button", "list-item", "listbox", "listitem", "local", "logical", "loud", "lower", "lower-alpha", "lower-greek", "lower-hexadecimal", "lower-latin",
-        "lower-norwegian", "lower-roman", "lowercase", "ltr", "malayalam", "maroon", "match", "media-controls-background", "media-current-time-display",
-        "media-fullscreen-button", "media-mute-button", "media-play-button", "media-return-to-realtime-button", "media-rewind-button",
-        "media-seek-back-button", "media-seek-forward-button", "media-slider", "media-sliderthumb", "media-time-remaining-display",
+        "list-button", "list-item", "listbox", "listitem", "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian", "lower-greek",
+        "lower-hexadecimal", "lower-latin", "lower-norwegian", "lower-roman", "lowercase", "ltr", "malayalam", "maroon", "match", "media-controls-background",
+        "media-current-time-display", "media-fullscreen-button", "media-mute-button", "media-play-button", "media-return-to-realtime-button",
+        "media-rewind-button", "media-seek-back-button", "media-seek-forward-button", "media-slider", "media-sliderthumb", "media-time-remaining-display",
         "media-volume-slider", "media-volume-slider-container", "media-volume-sliderthumb", "medium", "menu", "menulist", "menulist-button",
         "menulist-text", "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic", "mix", "mongolian", "monospace", "move", "multiple",
         "myanmar", "n-resize", "narrower", "navy", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", "no-open-quote", "no-repeat", "none",
@@ -88,8 +88,8 @@ WebInspector.SourceCSSTokenizer = function()
         "sw-resize", "table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group",
         "table-row", "table-row-group", "teal", "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai", "thick", "thin",
         "threeddarkshadow", "threedface", "threedhighlight", "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er", "tigrinya-er-abegede",
-        "tigrinya-et", "tigrinya-et-abegede", "to", "top", "transparent", "ultra-condensed", "ultra-expanded", "underline", "up", "upper-alpha", "upper-greek",
-        "upper-hexadecimal", "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", "vertical", "vertical-text", "visible",
+        "tigrinya-et", "tigrinya-et-abegede", "to", "top", "transparent", "ultra-condensed", "ultra-expanded", "underline", "up", "upper-alpha", "upper-armenian",
+        "upper-greek", "upper-hexadecimal", "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", "vertical", "vertical-text", "visible",
         "visibleFill", "visiblePainted", "visibleStroke", "visual", "w-resize", "wait", "wave", "white", "wider", "window", "windowframe", "windowtext",
         "x-large", "x-small", "xor", "xx-large", "xx-small", "yellow", "-wap-marquee", "-webkit-activelink", "-webkit-auto", "-webkit-baseline-middle",
         "-webkit-body", "-webkit-box", "-webkit-center", "-webkit-control", "-webkit-focus-ring-color", "-webkit-grab", "-webkit-grabbing",
diff --git a/WebCore/inspector/front-end/SourceCSSTokenizer.re2js b/WebCore/inspector/front-end/SourceCSSTokenizer.re2js
index a8d289b..1b84b43 100644
--- a/WebCore/inspector/front-end/SourceCSSTokenizer.re2js
+++ b/WebCore/inspector/front-end/SourceCSSTokenizer.re2js
@@ -44,7 +44,7 @@ WebInspector.SourceCSSTokenizer = function()
 {
     WebInspector.SourceTokenizer.call(this);
 
-    this._propertyKeywords = WebInspector.CSSCompletions.keySet();
+    this._propertyKeywords = WebInspector.cssNameCompletions.keySet();
 
     this._valueKeywords = [
         "above", "absolute", "activeborder", "activecaption", "afar", "after-white-space", "ahead", "alias", "all", "all-scroll",
diff --git a/WebCore/inspector/front-end/StylesSidebarPane.js b/WebCore/inspector/front-end/StylesSidebarPane.js
index a3d79c1..c89e452 100644
--- a/WebCore/inspector/front-end/StylesSidebarPane.js
+++ b/WebCore/inspector/front-end/StylesSidebarPane.js
@@ -1579,7 +1579,7 @@ WebInspector.StylePropertyTreeElement.prototype = {
         if (character && /[a-z-]/.test(character)) {
             var selection = window.getSelection();
             var prefix = selection.anchorNode.textContent.substring(0, selection.anchorOffset);
-            var property = WebInspector.CSSCompletions.firstStartsWith(prefix + character);
+            var property = WebInspector.cssNameCompletions.firstStartsWith(prefix + character);
 
             if (!selection.isCollapsed)
                 selection.deleteFromDocument();
@@ -1621,17 +1621,18 @@ WebInspector.StylePropertyTreeElement.prototype = {
         const styleValueDelimeters = " \t\n\"':;,/()";
         var wordRange = selectionRange.startContainer.rangeOfWord(selectionRange.startOffset, styleValueDelimeters, this.nameElement);
         var wordString = wordRange.toString();
-        var prefix = selectionRange.startContainer.textContent.substring(0, selectionRange.startOffset);
+        var cursorPosition = selectionRange.startOffset != selectionRange.endOffset ? selectionRange.startOffset : 0;
+        var prefix = selectionRange.startContainer.textContent.substring(0, cursorPosition);
         var property;
 
         if (showNext)
-            property = WebInspector.CSSCompletions.next(wordString, prefix);
+            property = WebInspector.cssNameCompletions.next(wordString, prefix);
         else
-            property = WebInspector.CSSCompletions.previous(wordString, prefix);
+            property = WebInspector.cssNameCompletions.previous(wordString, prefix);
 
         if (property) {
             this.nameElement.textContent = property;
-            this.nameElement.firstChild.select(selectionRange.startOffset);
+            this.nameElement.firstChild.select(cursorPosition);
         }
         event.preventDefault();
     },
diff --git a/WebCore/inspector/front-end/inspector.js b/WebCore/inspector/front-end/inspector.js
index 84321c1..a57f0f4 100644
--- a/WebCore/inspector/front-end/inspector.js
+++ b/WebCore/inspector/front-end/inspector.js
@@ -613,8 +613,13 @@ WebInspector.doLoadedDone = function()
 
     InspectorBackend.setConsoleMessagesEnabled(true);
 
+    function propertyNamesCallback(names)
+    {
+        WebInspector.cssNameCompletions = new WebInspector.CSSCompletions(names);
+    }
+
     // As a DOMAgent method, this needs to happen after the frontend has loaded and the agent is available.
-    InspectorBackend.getSupportedCSSProperties(WebInspector.CSSCompletions._load);
+    InspectorBackend.getSupportedCSSProperties(propertyNamesCallback);
 }
 
 WebInspector.addPanelToolbarIcon = function(toolbarElement, panel, previousToolbarItem)

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list