[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