Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(562)

Unified Diff: resources/inspector/TextPrompt.js

Issue 853002: Updating the Chromium reference build for Windows. The continuous... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/reference_builds/chrome/
Patch Set: Added the symbol files back. Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « resources/inspector/TestController.js ('k') | resources/inspector/TimelineAgent.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: resources/inspector/TextPrompt.js
===================================================================
--- resources/inspector/TextPrompt.js (revision 33840)
+++ resources/inspector/TextPrompt.js (working copy)
@@ -1,319 +0,0 @@
-/*
- * Copyright (C) 2008 Apple 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:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") 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 APPLE AND ITS 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 APPLE OR ITS 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.TextPrompt = function(element, completions, stopCharacters)
-{
- this.element = element;
- this.completions = completions;
- this.completionStopCharacters = stopCharacters;
- this.history = [];
- this.historyOffset = 0;
-}
-
-WebInspector.TextPrompt.prototype = {
- get text()
- {
- return this.element.textContent;
- },
-
- set text(x)
- {
- if (!x) {
- // Append a break element instead of setting textContent to make sure the selection is inside the prompt.
- this.element.removeChildren();
- this.element.appendChild(document.createElement("br"));
- } else
- this.element.textContent = x;
-
- this.moveCaretToEndOfPrompt();
- },
-
- handleKeyEvent: function(event)
- {
- switch (event.keyIdentifier) {
- case "Up":
- this._upKeyPressed(event);
- break;
- case "Down":
- this._downKeyPressed(event);
- break;
- case "U+0009": // Tab
- this._tabKeyPressed(event);
- break;
- case "Right":
- case "End":
- if (!this.acceptAutoComplete())
- this.autoCompleteSoon();
- break;
- default:
- this.clearAutoComplete();
- this.autoCompleteSoon();
- break;
- }
- },
-
- acceptAutoComplete: function()
- {
- if (!this.autoCompleteElement || !this.autoCompleteElement.parentNode)
- return false;
-
- var text = this.autoCompleteElement.textContent;
- var textNode = document.createTextNode(text);
- this.autoCompleteElement.parentNode.replaceChild(textNode, this.autoCompleteElement);
- delete this.autoCompleteElement;
-
- var finalSelectionRange = document.createRange();
- finalSelectionRange.setStart(textNode, text.length);
- finalSelectionRange.setEnd(textNode, text.length);
-
- var selection = window.getSelection();
- selection.removeAllRanges();
- selection.addRange(finalSelectionRange);
-
- return true;
- },
-
- clearAutoComplete: function(includeTimeout)
- {
- if (includeTimeout && "_completeTimeout" in this) {
- clearTimeout(this._completeTimeout);
- delete this._completeTimeout;
- }
-
- if (!this.autoCompleteElement)
- return;
-
- if (this.autoCompleteElement.parentNode)
- this.autoCompleteElement.parentNode.removeChild(this.autoCompleteElement);
- delete this.autoCompleteElement;
-
- if (!this._userEnteredRange || !this._userEnteredText)
- return;
-
- this._userEnteredRange.deleteContents();
-
- var userTextNode = document.createTextNode(this._userEnteredText);
- this._userEnteredRange.insertNode(userTextNode);
-
- var selectionRange = document.createRange();
- selectionRange.setStart(userTextNode, this._userEnteredText.length);
- selectionRange.setEnd(userTextNode, this._userEnteredText.length);
-
- var selection = window.getSelection();
- selection.removeAllRanges();
- selection.addRange(selectionRange);
-
- delete this._userEnteredRange;
- delete this._userEnteredText;
- },
-
- autoCompleteSoon: function()
- {
- if (!("_completeTimeout" in this))
- this._completeTimeout = setTimeout(this.complete.bind(this, true), 250);
- },
-
- complete: function(auto)
- {
- this.clearAutoComplete(true);
- var selection = window.getSelection();
- if (!selection.rangeCount)
- return;
-
- var selectionRange = selection.getRangeAt(0);
- if (!selectionRange.commonAncestorContainer.isDescendant(this.element))
- return;
- if (auto && !this.isCaretAtEndOfPrompt())
- return;
- var wordPrefixRange = selectionRange.startContainer.rangeOfWord(selectionRange.startOffset, this.completionStopCharacters, this.element, "backward");
- this.completions(wordPrefixRange, auto, this._completionsReady.bind(this, selection, auto, wordPrefixRange));
- },
-
- _completionsReady: function(selection, auto, originalWordPrefixRange, completions)
- {
- if (!completions || !completions.length)
- return;
-
- var selectionRange = selection.getRangeAt(0);
-
- var fullWordRange = document.createRange();
- fullWordRange.setStart(originalWordPrefixRange.startContainer, originalWordPrefixRange.startOffset);
- fullWordRange.setEnd(selectionRange.endContainer, selectionRange.endOffset);
-
- if (originalWordPrefixRange.toString() + selectionRange.toString() != fullWordRange.toString())
- return;
-
- if (completions.length === 1 || selection.isCollapsed || auto) {
- var completionText = completions[0];
- } else {
- var currentText = fullWordRange.toString();
-
- var foundIndex = null;
- for (var i = 0; i < completions.length; ++i) {
- if (completions[i] === currentText)
- foundIndex = i;
- }
-
- if (foundIndex === null || (foundIndex + 1) >= completions.length)
- var completionText = completions[0];
- else
- var completionText = completions[foundIndex + 1];
- }
-
- var wordPrefixLength = originalWordPrefixRange.toString().length;
-
- this._userEnteredRange = fullWordRange;
- this._userEnteredText = fullWordRange.toString();
-
- fullWordRange.deleteContents();
-
- var finalSelectionRange = document.createRange();
-
- if (auto) {
- var prefixText = completionText.substring(0, wordPrefixLength);
- var suffixText = completionText.substring(wordPrefixLength);
-
- var prefixTextNode = document.createTextNode(prefixText);
- fullWordRange.insertNode(prefixTextNode);
-
- this.autoCompleteElement = document.createElement("span");
- this.autoCompleteElement.className = "auto-complete-text";
- this.autoCompleteElement.textContent = suffixText;
-
- prefixTextNode.parentNode.insertBefore(this.autoCompleteElement, prefixTextNode.nextSibling);
-
- finalSelectionRange.setStart(prefixTextNode, wordPrefixLength);
- finalSelectionRange.setEnd(prefixTextNode, wordPrefixLength);
- } else {
- var completionTextNode = document.createTextNode(completionText);
- fullWordRange.insertNode(completionTextNode);
-
- if (completions.length > 1)
- finalSelectionRange.setStart(completionTextNode, wordPrefixLength);
- else
- finalSelectionRange.setStart(completionTextNode, completionText.length);
-
- finalSelectionRange.setEnd(completionTextNode, completionText.length);
- }
-
- selection.removeAllRanges();
- selection.addRange(finalSelectionRange);
- },
-
- isCaretInsidePrompt: function()
- {
- return this.element.isInsertionCaretInside();
- },
-
- isCaretAtEndOfPrompt: function()
- {
- var selection = window.getSelection();
- if (!selection.rangeCount || !selection.isCollapsed)
- return false;
-
- var selectionRange = selection.getRangeAt(0);
- var node = selectionRange.startContainer;
- if (node !== this.element && !node.isDescendant(this.element))
- return false;
-
- if (node.nodeType === Node.TEXT_NODE && selectionRange.startOffset < node.nodeValue.length)
- return false;
-
- var foundNextText = false;
- while (node) {
- if (node.nodeType === Node.TEXT_NODE && node.nodeValue.length) {
- if (foundNextText)
- return false;
- foundNextText = true;
- }
-
- node = node.traverseNextNode(this.element);
- }
-
- return true;
- },
-
- moveCaretToEndOfPrompt: function()
- {
- var selection = window.getSelection();
- var selectionRange = document.createRange();
-
- var offset = this.element.childNodes.length;
- selectionRange.setStart(this.element, offset);
- selectionRange.setEnd(this.element, offset);
-
- selection.removeAllRanges();
- selection.addRange(selectionRange);
- },
-
- _tabKeyPressed: function(event)
- {
- event.preventDefault();
- event.stopPropagation();
-
- this.complete();
- },
-
- _upKeyPressed: function(event)
- {
- event.preventDefault();
- event.stopPropagation();
-
- if (this.historyOffset == this.history.length)
- return;
-
- this.clearAutoComplete(true);
-
- if (this.historyOffset == 0)
- this.tempSavedCommand = this.text;
-
- ++this.historyOffset;
- this.text = this.history[this.history.length - this.historyOffset];
- },
-
- _downKeyPressed: function(event)
- {
- event.preventDefault();
- event.stopPropagation();
-
- if (this.historyOffset == 0)
- return;
-
- this.clearAutoComplete(true);
-
- --this.historyOffset;
-
- if (this.historyOffset == 0) {
- this.text = this.tempSavedCommand;
- delete this.tempSavedCommand;
- return;
- }
-
- this.text = this.history[this.history.length - this.historyOffset];
- }
-}
« no previous file with comments | « resources/inspector/TestController.js ('k') | resources/inspector/TimelineAgent.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698