summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js')
-rw-r--r--chromium/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js802
1 files changed, 0 insertions, 802 deletions
diff --git a/chromium/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js b/chromium/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js
deleted file mode 100644
index 54e8f5475df..00000000000
--- a/chromium/third_party/WebKit/Source/devtools/front_end/AdvancedSearchController.js
+++ /dev/null
@@ -1,802 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- *
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. 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 GOOGLE INC.
- * 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.
- */
-
-/**
- * @constructor
- * @implements {WebInspector.ViewFactory}
- */
-WebInspector.AdvancedSearchController = function()
-{
- this._shortcut = WebInspector.AdvancedSearchController.createShortcut();
- this._searchId = 0;
-
- WebInspector.settings.advancedSearchConfig = WebInspector.settings.createSetting("advancedSearchConfig", new WebInspector.SearchConfig("", true, false));
-
- WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameNavigated, this._frameNavigated, this);
- WebInspector.inspectorView.registerViewInDrawer("search", WebInspector.UIString("Search"), this);
-}
-
-/**
- * @return {!WebInspector.KeyboardShortcut.Descriptor}
- */
-WebInspector.AdvancedSearchController.createShortcut = function()
-{
- if (WebInspector.isMac())
- return WebInspector.KeyboardShortcut.makeDescriptor("f", WebInspector.KeyboardShortcut.Modifiers.Meta | WebInspector.KeyboardShortcut.Modifiers.Alt);
- else
- return WebInspector.KeyboardShortcut.makeDescriptor("f", WebInspector.KeyboardShortcut.Modifiers.Ctrl | WebInspector.KeyboardShortcut.Modifiers.Shift);
-}
-
-WebInspector.AdvancedSearchController.prototype = {
- /**
- * @param {string=} id
- * @return {?WebInspector.View}
- */
- createView: function(id)
- {
- if (!this._searchView)
- this._searchView = new WebInspector.SearchView(this);
- return this._searchView;
- },
-
- /**
- * @param {!KeyboardEvent} event
- * @return {boolean}
- */
- handleShortcut: function(event)
- {
- if (WebInspector.KeyboardShortcut.makeKeyFromEvent(event) === this._shortcut.key) {
- if (!this._searchView || !this._searchView.isShowing() || this._searchView._search !== document.activeElement) {
- WebInspector.showPanel("sources");
- this.show();
- } else
- WebInspector.inspectorView.closeDrawer();
- event.consume(true);
- return true;
- }
- return false;
- },
-
- _frameNavigated: function()
- {
- this.resetSearch();
- },
-
- /**
- * @param {!WebInspector.SearchScope} searchScope
- */
- registerSearchScope: function(searchScope)
- {
- // FIXME: implement multiple search scopes.
- this._searchScope = searchScope;
- },
-
- show: function()
- {
- var selection = window.getSelection();
- var queryCandidate;
- if (selection.rangeCount)
- queryCandidate = selection.toString().replace(/\r?\n.*/, "");
-
- if (!this._searchView || !this._searchView.isShowing())
- WebInspector.inspectorView.showViewInDrawer("search");
- if (queryCandidate)
- this._searchView._search.value = queryCandidate;
- this._searchView.focus();
-
- this.startIndexing();
- },
-
- /**
- * @param {boolean} finished
- */
- _onIndexingFinished: function(finished)
- {
- delete this._isIndexing;
- this._searchView.indexingFinished(finished);
- if (!finished)
- delete this._pendingSearchConfig;
- if (!this._pendingSearchConfig)
- return;
- var searchConfig = this._pendingSearchConfig
- delete this._pendingSearchConfig;
- this._innerStartSearch(searchConfig);
- },
-
- startIndexing: function()
- {
- this._isIndexing = true;
- // FIXME: this._currentSearchScope should be initialized based on searchConfig
- this._currentSearchScope = this._searchScope;
- if (this._progressIndicator)
- this._progressIndicator.done();
- this._progressIndicator = new WebInspector.ProgressIndicator();
- this._searchView.indexingStarted(this._progressIndicator);
- this._currentSearchScope.performIndexing(this._progressIndicator, this._onIndexingFinished.bind(this));
- },
-
- /**
- * @param {number} searchId
- * @param {!WebInspector.FileBasedSearchResultsPane.SearchResult} searchResult
- */
- _onSearchResult: function(searchId, searchResult)
- {
- if (searchId !== this._searchId)
- return;
- this._searchView.addSearchResult(searchResult);
- if (!searchResult.searchMatches.length)
- return;
- if (!this._searchResultsPane)
- this._searchResultsPane = this._currentSearchScope.createSearchResultsPane(this._searchConfig);
- this._searchView.resultsPane = this._searchResultsPane;
- this._searchResultsPane.addSearchResult(searchResult);
- },
-
- /**
- * @param {number} searchId
- * @param {boolean} finished
- */
- _onSearchFinished: function(searchId, finished)
- {
- if (searchId !== this._searchId)
- return;
- if (!this._searchResultsPane)
- this._searchView.nothingFound();
- this._searchView.searchFinished(finished);
- delete this._searchConfig;
- },
-
- /**
- * @param {!WebInspector.SearchConfig} searchConfig
- */
- startSearch: function(searchConfig)
- {
- this.resetSearch();
- ++this._searchId;
- if (!this._isIndexing)
- this.startIndexing();
- this._pendingSearchConfig = searchConfig;
- },
-
- /**
- * @param {!WebInspector.SearchConfig} searchConfig
- */
- _innerStartSearch: function(searchConfig)
- {
- this._searchConfig = searchConfig;
- // FIXME: this._currentSearchScope should be initialized based on searchConfig
- this._currentSearchScope = this._searchScope;
-
- if (this._progressIndicator)
- this._progressIndicator.done();
- this._progressIndicator = new WebInspector.ProgressIndicator();
- this._searchView.searchStarted(this._progressIndicator);
- this._currentSearchScope.performSearch(searchConfig, this._progressIndicator, this._onSearchResult.bind(this, this._searchId), this._onSearchFinished.bind(this, this._searchId));
- },
-
- resetSearch: function()
- {
- this.stopSearch();
-
- if (this._searchResultsPane) {
- this._searchView.resetResults();
- delete this._searchResultsPane;
- }
- },
-
- stopSearch: function()
- {
- if (this._progressIndicator)
- this._progressIndicator.cancel();
- if (this._currentSearchScope)
- this._currentSearchScope.stopSearch();
- delete this._searchConfig;
- }
-}
-
-/**
- * @constructor
- * @extends {WebInspector.View}
- * @param {!WebInspector.AdvancedSearchController} controller
- */
-WebInspector.SearchView = function(controller)
-{
- WebInspector.View.call(this);
-
- this._controller = controller;
-
- this.element.className = "search-view vbox";
-
- this._searchPanelElement = this.element.createChild("div", "search-drawer-header");
- this._searchPanelElement.addEventListener("keydown", this._onKeyDown.bind(this), false);
-
- this._searchResultsElement = this.element.createChild("div");
- this._searchResultsElement.className = "search-results";
-
- this._search = this._searchPanelElement.createChild("input");
- this._search.placeholder = WebInspector.UIString("Search sources");
- this._search.setAttribute("type", "text");
- this._search.classList.add("search-config-search");
- this._search.setAttribute("results", "0");
- this._search.setAttribute("size", 30);
-
- this._ignoreCaseLabel = this._searchPanelElement.createChild("label");
- this._ignoreCaseLabel.classList.add("search-config-label");
- this._ignoreCaseCheckbox = this._ignoreCaseLabel.createChild("input");
- this._ignoreCaseCheckbox.setAttribute("type", "checkbox");
- this._ignoreCaseCheckbox.classList.add("search-config-checkbox");
- this._ignoreCaseLabel.appendChild(document.createTextNode(WebInspector.UIString("Ignore case")));
-
- this._regexLabel = this._searchPanelElement.createChild("label");
- this._regexLabel.classList.add("search-config-label");
- this._regexCheckbox = this._regexLabel.createChild("input");
- this._regexCheckbox.setAttribute("type", "checkbox");
- this._regexCheckbox.classList.add("search-config-checkbox");
- this._regexLabel.appendChild(document.createTextNode(WebInspector.UIString("Regular expression")));
-
- this._searchStatusBarElement = this.element.createChild("div", "search-status-bar-summary");
- this._searchMessageElement = this._searchStatusBarElement.createChild("span");
- this._searchResultsMessageElement = document.createElement("span");
-
- this._load();
-}
-
-// Number of recent search queries to store.
-WebInspector.SearchView.maxQueriesCount = 20;
-
-WebInspector.SearchView.prototype = {
- /**
- * @return {!WebInspector.SearchConfig}
- */
- get searchConfig()
- {
- return new WebInspector.SearchConfig(this._search.value, this._ignoreCaseCheckbox.checked, this._regexCheckbox.checked);
- },
-
- /**
- * @type {!WebInspector.SearchResultsPane}
- */
- set resultsPane(resultsPane)
- {
- this.resetResults();
- this._searchResultsElement.appendChild(resultsPane.element);
- },
-
- /**
- * @param {!WebInspector.ProgressIndicator} progressIndicator
- */
- searchStarted: function(progressIndicator)
- {
- this.resetResults();
- this._resetCounters();
-
- this._searchMessageElement.textContent = WebInspector.UIString("Searching...");
- progressIndicator.show(this._searchStatusBarElement);
- this._updateSearchResultsMessage();
-
- if (!this._searchingView)
- this._searchingView = new WebInspector.EmptyView(WebInspector.UIString("Searching..."));
- this._searchingView.show(this._searchResultsElement);
- },
-
- /**
- * @param {!WebInspector.ProgressIndicator} progressIndicator
- */
- indexingStarted: function(progressIndicator)
- {
- this._searchMessageElement.textContent = WebInspector.UIString("Indexing...");
- progressIndicator.show(this._searchStatusBarElement);
- },
-
- /**
- * @param {boolean} finished
- */
- indexingFinished: function(finished)
- {
- this._searchMessageElement.textContent = finished ? "" : WebInspector.UIString("Indexing interrupted.");
- },
-
- _updateSearchResultsMessage: function()
- {
- if (this._searchMatchesCount && this._searchResultsCount)
- this._searchResultsMessageElement.textContent = WebInspector.UIString("Found %d matches in %d files.", this._searchMatchesCount, this._nonEmptySearchResultsCount);
- else
- this._searchResultsMessageElement.textContent = "";
- },
-
- resetResults: function()
- {
- if (this._searchingView)
- this._searchingView.detach();
- if (this._notFoundView)
- this._notFoundView.detach();
- this._searchResultsElement.removeChildren();
- },
-
- _resetCounters: function()
- {
- this._searchMatchesCount = 0;
- this._searchResultsCount = 0;
- this._nonEmptySearchResultsCount = 0;
- },
-
- nothingFound: function()
- {
- this.resetResults();
-
- if (!this._notFoundView)
- this._notFoundView = new WebInspector.EmptyView(WebInspector.UIString("No matches found."));
- this._notFoundView.show(this._searchResultsElement);
- this._searchResultsMessageElement.textContent = WebInspector.UIString("No matches found.");
- },
-
- /**
- * @param {!WebInspector.FileBasedSearchResultsPane.SearchResult} searchResult
- */
- addSearchResult: function(searchResult)
- {
- this._searchMatchesCount += searchResult.searchMatches.length;
- this._searchResultsCount++;
- if (searchResult.searchMatches.length)
- this._nonEmptySearchResultsCount++;
- this._updateSearchResultsMessage();
- },
-
- /**
- * @param {boolean} finished
- */
- searchFinished: function(finished)
- {
- this._searchMessageElement.textContent = finished ? WebInspector.UIString("Search finished.") : WebInspector.UIString("Search interrupted.");
- },
-
- focus: function()
- {
- WebInspector.setCurrentFocusElement(this._search);
- this._search.select();
- },
-
- afterShow: function()
- {
- this.focus();
- },
-
- willHide: function()
- {
- this._controller.stopSearch();
- },
-
- /**
- * @param {?Event} event
- */
- _onKeyDown: function(event)
- {
- switch (event.keyCode) {
- case WebInspector.KeyboardShortcut.Keys.Enter.code:
- this._onAction();
- break;
- }
- },
-
- _save: function()
- {
- WebInspector.settings.advancedSearchConfig.set(this.searchConfig);
- },
-
- _load: function()
- {
- var searchConfig = WebInspector.settings.advancedSearchConfig.get();
- this._search.value = searchConfig.query;
- this._ignoreCaseCheckbox.checked = searchConfig.ignoreCase;
- this._regexCheckbox.checked = searchConfig.isRegex;
- },
-
- _onAction: function()
- {
- var searchConfig = this.searchConfig;
- if (!searchConfig.query || !searchConfig.query.length)
- return;
-
- this._save();
- this._controller.startSearch(searchConfig);
- },
-
- __proto__: WebInspector.View.prototype
-}
-
-
-/**
- * @constructor
- * @param {string} query
- * @param {boolean} ignoreCase
- * @param {boolean} isRegex
- */
-WebInspector.SearchConfig = function(query, ignoreCase, isRegex)
-{
- this.query = query;
- this.ignoreCase = ignoreCase;
- this.isRegex = isRegex;
- this._parse();
-}
-
-WebInspector.SearchConfig.prototype = {
- _parse: function()
- {
- var filePattern = "file:(([^\\\\ ]|\\\\.)+)"; // After file: prefix: any symbol except space and backslash or any symbol escaped with a backslash.
- var quotedPattern = "\"(([^\\\\\"]|\\\\.)+)\""; // Inside double quotes: any symbol except double quote and backslash or any symbol escaped with a backslash.
- var unquotedPattern = "(([^\\\\ ]|\\\\.)+)"; // any symbol except space and backslash or any symbol escaped with a backslash.
-
- var pattern = "(" + filePattern + ")|(" + quotedPattern + ")|(" + unquotedPattern + ")";
- var regexp = new RegExp(pattern, "g");
- var queryParts = this.query.match(regexp) || [];
-
- this._fileQueries = [];
- this._queries = [];
-
- for (var i = 0; i < queryParts.length; ++i) {
- var queryPart = queryParts[i];
- if (!queryPart)
- continue;
- if (queryPart.startsWith("file:")) {
- this._fileQueries.push(this._parseFileQuery(queryPart));
- continue;
- }
- if (queryPart.startsWith("\"")) {
- if (!queryPart.endsWith("\""))
- continue;
- this._queries.push(this._parseQuotedQuery(queryPart));
- continue;
- }
- this._queries.push(this._parseUnquotedQuery(queryPart));
- }
- },
-
- fileQueries: function()
- {
- return this._fileQueries;
- },
-
- queries: function()
- {
- return this._queries;
- },
-
- _parseUnquotedQuery: function(query)
- {
- return query.replace(/\\(.)/g, "$1");
- },
-
- _parseQuotedQuery: function(query)
- {
- return query.substring(1, query.length - 1).replace(/\\(.)/g, "$1");
- },
-
- _parseFileQuery: function(query)
- {
- query = query.substr("file:".length);
- var result = "";
- for (var i = 0; i < query.length; ++i) {
- var char = query[i];
- if (char === "*") {
- result += ".*";
- } else if (char === "\\") {
- ++i;
- var nextChar = query[i];
- if (nextChar === " ")
- result += " ";
- } else {
- if (String.regexSpecialCharacters().indexOf(query.charAt(i)) !== -1)
- result += "\\";
- result += query.charAt(i);
- }
- }
- return result;
- }
-}
-
-/**
- * @interface
- */
-WebInspector.SearchScope = function()
-{
-}
-
-WebInspector.SearchScope.prototype = {
- /**
- * @param {!WebInspector.SearchConfig} searchConfig
- * @param {!WebInspector.Progress} progress
- * @param {function(!WebInspector.FileBasedSearchResultsPane.SearchResult)} searchResultCallback
- * @param {function(boolean)} searchFinishedCallback
- */
- performSearch: function(searchConfig, progress, searchResultCallback, searchFinishedCallback) { },
-
- stopSearch: function() { },
-
- /**
- * @param {!WebInspector.SearchConfig} searchConfig
- * @return {!WebInspector.SearchResultsPane}
- */
- createSearchResultsPane: function(searchConfig) { }
-}
-
-/**
- * @constructor
- * @param {!WebInspector.SearchConfig} searchConfig
- */
-WebInspector.SearchResultsPane = function(searchConfig)
-{
- this._searchConfig = searchConfig;
- this.element = document.createElement("div");
-}
-
-WebInspector.SearchResultsPane.prototype = {
- /**
- * @return {!WebInspector.SearchConfig}
- */
- get searchConfig()
- {
- return this._searchConfig;
- },
-
- /**
- * @param {!WebInspector.FileBasedSearchResultsPane.SearchResult} searchResult
- */
- addSearchResult: function(searchResult) { }
-}
-
-/**
- * @constructor
- * @extends {WebInspector.SearchResultsPane}
- * @param {!WebInspector.SearchConfig} searchConfig
- */
-WebInspector.FileBasedSearchResultsPane = function(searchConfig)
-{
- WebInspector.SearchResultsPane.call(this, searchConfig);
-
- this._searchResults = [];
-
- this.element.id = "search-results-pane-file-based";
-
- this._treeOutlineElement = document.createElement("ol");
- this._treeOutlineElement.className = "search-results-outline-disclosure";
- this.element.appendChild(this._treeOutlineElement);
- this._treeOutline = new TreeOutline(this._treeOutlineElement);
-
- this._matchesExpandedCount = 0;
-}
-
-WebInspector.FileBasedSearchResultsPane.matchesExpandedByDefaultCount = 20;
-WebInspector.FileBasedSearchResultsPane.fileMatchesShownAtOnce = 20;
-
-WebInspector.FileBasedSearchResultsPane.prototype = {
- /**
- * @param {!WebInspector.UISourceCode} uiSourceCode
- * @param {number} lineNumber
- * @param {number} columnNumber
- * @return {!Element}
- */
- _createAnchor: function(uiSourceCode, lineNumber, columnNumber)
- {
- var anchor = document.createElement("a");
- anchor.preferredPanel = "sources";
- anchor.href = sanitizeHref(uiSourceCode.originURL());
- anchor.uiSourceCode = uiSourceCode;
- anchor.lineNumber = lineNumber;
- return anchor;
- },
-
- /**
- * @param {!WebInspector.FileBasedSearchResultsPane.SearchResult} searchResult
- */
- addSearchResult: function(searchResult)
- {
- this._searchResults.push(searchResult);
- var uiSourceCode = searchResult.uiSourceCode;
- if (!uiSourceCode)
- return;
- var searchMatches = searchResult.searchMatches;
-
- var fileTreeElement = this._addFileTreeElement(uiSourceCode.fullDisplayName(), searchMatches.length, this._searchResults.length - 1);
- },
-
- /**
- * @param {!WebInspector.FileBasedSearchResultsPane.SearchResult} searchResult
- * @param {!TreeElement} fileTreeElement
- */
- _fileTreeElementExpanded: function(searchResult, fileTreeElement)
- {
- if (fileTreeElement._initialized)
- return;
-
- var toIndex = Math.min(searchResult.searchMatches.length, WebInspector.FileBasedSearchResultsPane.fileMatchesShownAtOnce);
- if (toIndex < searchResult.searchMatches.length) {
- this._appendSearchMatches(fileTreeElement, searchResult, 0, toIndex - 1);
- this._appendShowMoreMatchesElement(fileTreeElement, searchResult, toIndex - 1);
- } else
- this._appendSearchMatches(fileTreeElement, searchResult, 0, toIndex);
-
- fileTreeElement._initialized = true;
- },
-
- /**
- * @param {!TreeElement} fileTreeElement
- * @param {!WebInspector.FileBasedSearchResultsPane.SearchResult} searchResult
- * @param {number} fromIndex
- * @param {number} toIndex
- */
- _appendSearchMatches: function(fileTreeElement, searchResult, fromIndex, toIndex)
- {
- var uiSourceCode = searchResult.uiSourceCode;
- var searchMatches = searchResult.searchMatches;
-
- var queries = this._searchConfig.queries();
- var regexes = [];
- for (var i = 0; i < queries.length; ++i)
- regexes.push(createSearchRegex(queries[i], !this._searchConfig.ignoreCase, this._searchConfig.isRegex));
-
- for (var i = fromIndex; i < toIndex; ++i) {
- var lineNumber = searchMatches[i].lineNumber;
- var lineContent = searchMatches[i].lineContent;
- var matchRanges = [];
- for (var j = 0; j < regexes.length; ++j)
- matchRanges = matchRanges.concat(this._regexMatchRanges(lineContent, regexes[j]));
-
- var anchor = this._createAnchor(uiSourceCode, lineNumber, matchRanges[0].offset);
-
- var numberString = numberToStringWithSpacesPadding(lineNumber + 1, 4);
- var lineNumberSpan = document.createElement("span");
- lineNumberSpan.classList.add("search-match-line-number");
- lineNumberSpan.textContent = numberString;
- anchor.appendChild(lineNumberSpan);
-
- var contentSpan = this._createContentSpan(lineContent, matchRanges);
- anchor.appendChild(contentSpan);
-
- var searchMatchElement = new TreeElement("");
- searchMatchElement.selectable = false;
- fileTreeElement.appendChild(searchMatchElement);
- searchMatchElement.listItemElement.className = "search-match source-code";
- searchMatchElement.listItemElement.appendChild(anchor);
- }
- },
-
- /**
- * @param {!TreeElement} fileTreeElement
- * @param {!WebInspector.FileBasedSearchResultsPane.SearchResult} searchResult
- * @param {number} startMatchIndex
- */
- _appendShowMoreMatchesElement: function(fileTreeElement, searchResult, startMatchIndex)
- {
- var matchesLeftCount = searchResult.searchMatches.length - startMatchIndex;
- var showMoreMatchesText = WebInspector.UIString("Show all matches (%d more).", matchesLeftCount);
- var showMoreMatchesElement = new TreeElement(showMoreMatchesText);
- fileTreeElement.appendChild(showMoreMatchesElement);
- showMoreMatchesElement.listItemElement.classList.add("show-more-matches");
- showMoreMatchesElement.onselect = this._showMoreMatchesElementSelected.bind(this, searchResult, startMatchIndex, showMoreMatchesElement);
- },
-
- /**
- * @param {!WebInspector.FileBasedSearchResultsPane.SearchResult} searchResult
- * @param {number} startMatchIndex
- * @param {!TreeElement} showMoreMatchesElement
- * @return {boolean}
- */
- _showMoreMatchesElementSelected: function(searchResult, startMatchIndex, showMoreMatchesElement)
- {
- var fileTreeElement = showMoreMatchesElement.parent;
- fileTreeElement.removeChild(showMoreMatchesElement);
- this._appendSearchMatches(fileTreeElement, searchResult, startMatchIndex, searchResult.searchMatches.length);
- return false;
- },
-
- /**
- * @param {string} fileName
- * @param {number} searchMatchesCount
- * @param {number} searchResultIndex
- */
- _addFileTreeElement: function(fileName, searchMatchesCount, searchResultIndex)
- {
- var fileTreeElement = new TreeElement("", null, true);
- fileTreeElement.toggleOnClick = true;
- fileTreeElement.selectable = false;
-
- this._treeOutline.appendChild(fileTreeElement);
- fileTreeElement.listItemElement.classList.add("search-result");
-
- var fileNameSpan = document.createElement("span");
- fileNameSpan.className = "search-result-file-name";
- fileNameSpan.textContent = fileName;
- fileTreeElement.listItemElement.appendChild(fileNameSpan);
-
- var matchesCountSpan = document.createElement("span");
- matchesCountSpan.className = "search-result-matches-count";
- if (searchMatchesCount === 1)
- matchesCountSpan.textContent = WebInspector.UIString("(%d match)", searchMatchesCount);
- else
- matchesCountSpan.textContent = WebInspector.UIString("(%d matches)", searchMatchesCount);
-
- fileTreeElement.listItemElement.appendChild(matchesCountSpan);
-
- var searchResult = this._searchResults[searchResultIndex];
- fileTreeElement.onexpand = this._fileTreeElementExpanded.bind(this, searchResult, fileTreeElement);
-
- // Expand until at least certain amount of matches is expanded.
- if (this._matchesExpandedCount < WebInspector.FileBasedSearchResultsPane.matchesExpandedByDefaultCount)
- fileTreeElement.expand();
- this._matchesExpandedCount += searchResult.searchMatches.length;
-
- return fileTreeElement;
- },
-
- /**
- * @param {string} lineContent
- * @param {!RegExp} regex
- * @return {!Array.<!WebInspector.SourceRange>}
- */
- _regexMatchRanges: function(lineContent, regex)
- {
- regex.lastIndex = 0;
- var match;
- var offset = 0;
- var matchRanges = [];
- while ((regex.lastIndex < lineContent.length) && (match = regex.exec(lineContent)))
- matchRanges.push(new WebInspector.SourceRange(match.index, match[0].length));
-
- return matchRanges;
- },
-
- /**
- * @param {string} lineContent
- * @param {!Array.<!WebInspector.SourceRange>} matchRanges
- */
- _createContentSpan: function(lineContent, matchRanges)
- {
- var contentSpan = document.createElement("span");
- contentSpan.className = "search-match-content";
- contentSpan.textContent = lineContent;
- WebInspector.highlightRangesWithStyleClass(contentSpan, matchRanges, "highlighted-match");
- return contentSpan;
- },
-
- __proto__: WebInspector.SearchResultsPane.prototype
-}
-
-/**
- * @constructor
- * @param {!WebInspector.UISourceCode} uiSourceCode
- * @param {!Array.<!Object>} searchMatches
- */
-WebInspector.FileBasedSearchResultsPane.SearchResult = function(uiSourceCode, searchMatches) {
- this.uiSourceCode = uiSourceCode;
- this.searchMatches = searchMatches;
-}
-
-/**
- * @type {!WebInspector.AdvancedSearchController}
- */
-WebInspector.advancedSearchController;