Title: [145054] trunk/Source/WebCore
Revision
145054
Author
eus...@chromium.org
Date
2013-03-07 01:49:44 -0800 (Thu, 07 Mar 2013)

Log Message

Web Inspector: Refactorings: Prepare SuggestBox for reuse.
https://bugs.webkit.org/show_bug.cgi?id=111301

Reviewed by Alexander Pavlov.

1) Remove userEnteredText from delegate interface.
   Pass prefix to updateSuggestions instead.
2) Clarify that suggestions array is never null.

* inspector/front-end/SuggestBox.js:
(WebInspector.SuggestBox): Renamed parameter/member.
(WebInspector.SuggestBox.prototype._updateItems):
Minor readability changes.
(WebInspector.SuggestBox.prototype._canShowBox):
Use userEnteredText parameter.
(WebInspector.SuggestBox.prototype.updateSuggestions):
Pass userEnteredText to _canShowBox.
* inspector/front-end/DatabaseQueryView.js: Fix JSDocs.
* inspector/front-end/RuntimeModel.js: Ditto.
* inspector/front-end/TextPrompt.js: Ditto.
(WebInspector.TextPrompt.prototype._completionsReady):
Pass userEnteredText to updateSuggestions.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (145053 => 145054)


--- trunk/Source/WebCore/ChangeLog	2013-03-07 09:29:10 UTC (rev 145053)
+++ trunk/Source/WebCore/ChangeLog	2013-03-07 09:49:44 UTC (rev 145054)
@@ -1,3 +1,28 @@
+2013-03-07  Eugene Klyuchnikov  <eus...@chromium.org>
+
+        Web Inspector: Refactorings: Prepare SuggestBox for reuse.
+        https://bugs.webkit.org/show_bug.cgi?id=111301
+
+        Reviewed by Alexander Pavlov.
+
+        1) Remove userEnteredText from delegate interface.
+           Pass prefix to updateSuggestions instead.
+        2) Clarify that suggestions array is never null.
+
+        * inspector/front-end/SuggestBox.js:
+        (WebInspector.SuggestBox): Renamed parameter/member.
+        (WebInspector.SuggestBox.prototype._updateItems):
+        Minor readability changes.
+        (WebInspector.SuggestBox.prototype._canShowBox):
+        Use userEnteredText parameter.
+        (WebInspector.SuggestBox.prototype.updateSuggestions):
+        Pass userEnteredText to _canShowBox.
+        * inspector/front-end/DatabaseQueryView.js: Fix JSDocs.
+        * inspector/front-end/RuntimeModel.js: Ditto.
+        * inspector/front-end/TextPrompt.js: Ditto.
+        (WebInspector.TextPrompt.prototype._completionsReady):
+        Pass userEnteredText to updateSuggestions.
+
 2013-03-07  Victor Carbune  <vcarb...@chromium.org>
 
         TextTrackRegion Constructor

Modified: trunk/Source/WebCore/inspector/front-end/DatabaseQueryView.js (145053 => 145054)


--- trunk/Source/WebCore/inspector/front-end/DatabaseQueryView.js	2013-03-07 09:29:10 UTC (rev 145053)
+++ trunk/Source/WebCore/inspector/front-end/DatabaseQueryView.js	2013-03-07 09:49:44 UTC (rev 145054)
@@ -65,7 +65,7 @@
      * @param {Element} proxyElement
      * @param {Range} wordRange
      * @param {boolean} force
-     * @param {function(Array.<string>, number=)} completionsReadyCallback
+     * @param {function(!Array.<string>, number=)} completionsReadyCallback
      */
     completions: function(proxyElement, wordRange, force, completionsReadyCallback)
     {

Modified: trunk/Source/WebCore/inspector/front-end/RuntimeModel.js (145053 => 145054)


--- trunk/Source/WebCore/inspector/front-end/RuntimeModel.js	2013-03-07 09:29:10 UTC (rev 145053)
+++ trunk/Source/WebCore/inspector/front-end/RuntimeModel.js	2013-03-07 09:49:44 UTC (rev 145054)
@@ -169,7 +169,7 @@
      * @param {Element} proxyElement
      * @param {Range} wordRange
      * @param {boolean} force
-     * @param {function(Array.<string>, number=)} completionsReadyCallback
+     * @param {function(!Array.<string>, number=)} completionsReadyCallback
      */
     completionsForTextPrompt: function(proxyElement, wordRange, force, completionsReadyCallback)
     {
@@ -184,7 +184,7 @@
      * @param {string} expressionString
      * @param {string} prefix
      * @param {boolean} force
-     * @param {function(Array.<string>, number=)} completionsReadyCallback
+     * @param {function(!Array.<string>, number=)} completionsReadyCallback
      */
     _completionsForExpression: function(expressionString, prefix, force, completionsReadyCallback)
     {
@@ -276,7 +276,7 @@
     },
 
     /**
-     * @param {function(Array.<string>, number=)} completionsReadyCallback
+     * @param {function(!Array.<string>, number=)} completionsReadyCallback
      * @param {boolean} dotNotation
      * @param {boolean} bracketNotation
      * @param {string} expressionString

Modified: trunk/Source/WebCore/inspector/front-end/SuggestBox.js (145053 => 145054)


--- trunk/Source/WebCore/inspector/front-end/SuggestBox.js	2013-03-07 09:29:10 UTC (rev 145053)
+++ trunk/Source/WebCore/inspector/front-end/SuggestBox.js	2013-03-07 09:49:44 UTC (rev 145054)
@@ -46,23 +46,18 @@
      * acceptSuggestion will be always called after call to applySuggestion with isIntermediateSuggestion being equal to false.
      */
     acceptSuggestion: function() { },
-
-    /**
-     * @return {string}
-     */
-    userEnteredText: function() { }
 }
 
 /**
  * @constructor
  * @param {WebInspector.SuggestBoxDelegate} suggestBoxDelegate
- * @param {Element} inputElement
- * @param {string} className
+ * @param {Element} anchorElement
+ * @param {string=} className
  */
-WebInspector.SuggestBox = function(suggestBoxDelegate, inputElement, className)
+WebInspector.SuggestBox = function(suggestBoxDelegate, anchorElement, className)
 {
     this._suggestBoxDelegate = suggestBoxDelegate;
-    this._inputElement = inputElement;
+    this._anchorElement = anchorElement;
     this._length = 0;
     this._selectedIndex = -1;
     this._selectedElement = null;
@@ -71,8 +66,8 @@
     window.addEventListener("scroll", this._boundOnScroll, true);
     window.addEventListener("resize", this._boundOnResize, true);
 
-    this._bodyElement = inputElement.ownerDocument.body;
-    this._element = inputElement.ownerDocument.createElement("div");
+    this._bodyElement = anchorElement.ownerDocument.body;
+    this._element = anchorElement.ownerDocument.createElement("div");
     this._element.className = "suggest-box " + (className || "");
     this._element.addEventListener("mousedown", this._onBoxMouseDown.bind(this), true);
     this.containerElement = this._element.createChild("div", "container");
@@ -96,11 +91,6 @@
     {
         if (isScroll && this._element.isAncestor(event.target) || !this.visible())
             return;
-        this._updateBoxPositionWithExistingAnchor();
-    },
-
-    _updateBoxPositionWithExistingAnchor: function()
-    {
         this._updateBoxPosition(this._anchorBox);
     },
 
@@ -109,6 +99,8 @@
      */
     _updateBoxPosition: function(anchorBox)
     {
+        this._anchorBox = anchorBox;
+
         // Measure the content element box.
         this.contentElement.style.display = "inline-block";
         document.body.appendChild(this.contentElement);
@@ -118,11 +110,10 @@
         this.contentElement.style.display = "block";
         this.containerElement.appendChild(this.contentElement);
 
-        // Lay out the suggest-box relative to the anchorBox.
-        this._anchorBox = anchorBox;
         const spacer = 6;
-
         const suggestBoxPaddingX = 21;
+        const suggestBoxPaddingY = 2;
+
         var maxWidth = document.body.offsetWidth - anchorBox.x - spacer;
         var width = Math.min(contentWidth, maxWidth - suggestBoxPaddingX) + suggestBoxPaddingX;
         var paddedWidth = contentWidth + suggestBoxPaddingX;
@@ -134,7 +125,6 @@
             boxX = document.body.offsetWidth - width;
         }
 
-        const suggestBoxPaddingY = 2;
         var boxY;
         var aboveHeight = anchorBox.y;
         var underHeight = document.body.offsetHeight - anchorBox.y - anchorBox.height;
@@ -268,15 +258,15 @@
     },
 
     /**
-     * @param {Array.<string>=} items
-     * @param {number=} selectedIndex
+     * @param {!Array.<string>} items
+     * @param {number} selectedIndex
+     * @param {string} userEnteredText
      */
-    _updateItems: function(items, selectedIndex)
+    _updateItems: function(items, selectedIndex, userEnteredText)
     {
         this._length = items.length;
         this.contentElement.removeChildren();
 
-        var userEnteredText = this._suggestBoxDelegate.userEnteredText();
         for (var i = 0; i < items.length; ++i) {
             var item = items[i];
             var currentItemElement = this._createItemElement(userEnteredText, item);
@@ -304,10 +294,11 @@
     },
 
     /**
-     * @param {Array.<string>=} completions
-     * @param {boolean=} canShowForSingleItem
+     * @param {!Array.<string>} completions
+     * @param {boolean} canShowForSingleItem
+     * @param {string} userEnteredText
      */
-    _canShowBox: function(completions, canShowForSingleItem)
+    _canShowBox: function(completions, canShowForSingleItem, userEnteredText)
     {
         if (!completions || !completions.length)
             return false;
@@ -316,7 +307,7 @@
             return true;
 
         // Do not show a single suggestion if it is the same as user-entered prefix, even if allowed to show single-item suggest boxes.
-        return canShowForSingleItem && completions[0] !== this._suggestBoxDelegate.userEnteredText();
+        return canShowForSingleItem && completions[0] !== userEnteredText;
     },
 
     _rememberRowCountPerViewport: function()
@@ -329,14 +320,15 @@
 
     /**
      * @param {AnchorBox} anchorBox
-     * @param {Array.<string>=} completions
-     * @param {number=} selectedIndex
-     * @param {boolean=} canShowForSingleItem
+     * @param {!Array.<string>} completions
+     * @param {number} selectedIndex
+     * @param {boolean} canShowForSingleItem
+     * @param {string} userEnteredText
      */
-    updateSuggestions: function(anchorBox, completions, selectedIndex, canShowForSingleItem)
+    updateSuggestions: function(anchorBox, completions, selectedIndex, canShowForSingleItem, userEnteredText)
     {
-        if (this._canShowBox(completions, canShowForSingleItem)) {
-            this._updateItems(completions, selectedIndex);
+        if (this._canShowBox(completions, canShowForSingleItem, userEnteredText)) {
+            this._updateItems(completions, selectedIndex, userEnteredText);
             this._updateBoxPosition(anchorBox);
             if (!this.visible())
                 this._bodyElement.appendChild(this._element);

Modified: trunk/Source/WebCore/inspector/front-end/TextPrompt.js (145053 => 145054)


--- trunk/Source/WebCore/inspector/front-end/TextPrompt.js	2013-03-07 09:29:10 UTC (rev 145053)
+++ trunk/Source/WebCore/inspector/front-end/TextPrompt.js	2013-03-07 09:49:44 UTC (rev 145054)
@@ -31,7 +31,7 @@
  * @constructor
  * @extends WebInspector.Object
  * @implements {WebInspector.SuggestBoxDelegate}
- * @param {function(Element, Range, boolean, function(Array.<string>, number=))} completions
+ * @param {function(Element, Range, boolean, function(!Array.<string>, number=))} completions
  * @param {string=} stopCharacters
  */
 WebInspector.TextPrompt = function(completions, stopCharacters)
@@ -52,11 +52,6 @@
 };
 
 WebInspector.TextPrompt.prototype = {
-    userEnteredText: function()
-    {
-        return this._userEnteredText;
-    },
-
     get proxyElement()
     {
         return this._proxyElement;
@@ -438,12 +433,12 @@
      * @param {boolean} auto
      * @param {Range} originalWordPrefixRange
      * @param {boolean} reverse
-     * @param {Array.<string>=} completions
+     * @param {!Array.<string>} completions
      * @param {number=} selectedIndex
      */
     _completionsReady: function(selection, auto, originalWordPrefixRange, reverse, completions, selectedIndex)
     {
-        if (!this._waitingForCompletions || !completions || !completions.length) {
+        if (!this._waitingForCompletions || !completions.length) {
             this.hideSuggestBox();
             return;
         }
@@ -464,7 +459,7 @@
         this._userEnteredText = fullWordRange.toString();
 
         if (this._suggestBox)
-            this._suggestBox.updateSuggestions(this._boxForAnchorAtStart(selection, fullWordRange), completions, selectedIndex, !this.isCaretAtEndOfPrompt());
+            this._suggestBox.updateSuggestions(this._boxForAnchorAtStart(selection, fullWordRange), completions, selectedIndex, !this.isCaretAtEndOfPrompt(), this._userEnteredText);
 
         var wordPrefixLength = originalWordPrefixRange.toString().length;
 
@@ -778,7 +773,7 @@
 /**
  * @constructor
  * @extends {WebInspector.TextPrompt}
- * @param {function(Element, Range, boolean, function(Array.<string>,number=))} completions
+ * @param {function(Element, Range, boolean, function(!Array.<string>, number=))} completions
  * @param {string=} stopCharacters
  */
 WebInspector.TextPromptWithHistory = function(completions, stopCharacters)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to