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)