Index: third_party/WebKit/Source/devtools/front_end/sources/FileBasedSearchResultsPane.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/FileBasedSearchResultsPane.js b/third_party/WebKit/Source/devtools/front_end/sources/FileBasedSearchResultsPane.js |
index 626d153ae435cbeb5077e570a8a2840636474ad7..7bb17ca9d21d9abf5415d72e9cac43d8baf5efad 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/sources/FileBasedSearchResultsPane.js |
+++ b/third_party/WebKit/Source/devtools/front_end/sources/FileBasedSearchResultsPane.js |
@@ -1,227 +1,217 @@ |
// Copyright 2014 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
- |
/** |
- * @constructor |
- * @extends {WebInspector.SearchResultsPane} |
- * @param {!WebInspector.ProjectSearchConfig} searchConfig |
+ * @unrestricted |
*/ |
-WebInspector.FileBasedSearchResultsPane = function(searchConfig) |
-{ |
- WebInspector.SearchResultsPane.call(this, searchConfig); |
+WebInspector.FileBasedSearchResultsPane = class extends WebInspector.SearchResultsPane { |
+ /** |
+ * @param {!WebInspector.ProjectSearchConfig} searchConfig |
+ */ |
+ constructor(searchConfig) { |
+ super(searchConfig); |
this._searchResults = []; |
this._treeOutline = new TreeOutlineInShadow(); |
- this._treeOutline.registerRequiredCSS("sources/fileBasedSearchResultsPane.css"); |
+ this._treeOutline.registerRequiredCSS('sources/fileBasedSearchResultsPane.css'); |
this.element.appendChild(this._treeOutline.element); |
this._matchesExpandedCount = 0; |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {!WebInspector.FileBasedSearchResult} searchResult |
+ */ |
+ addSearchResult(searchResult) { |
+ this._searchResults.push(searchResult); |
+ var uiSourceCode = searchResult.uiSourceCode; |
+ if (!uiSourceCode) |
+ return; |
+ this._addFileTreeElement(searchResult); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.FileBasedSearchResult} searchResult |
+ */ |
+ _addFileTreeElement(searchResult) { |
+ var fileTreeElement = new WebInspector.FileBasedSearchResultsPane.FileTreeElement(this._searchConfig, searchResult); |
+ this._treeOutline.appendChild(fileTreeElement); |
+ // Expand until at least a certain number of matches is expanded. |
+ if (this._matchesExpandedCount < WebInspector.FileBasedSearchResultsPane.matchesExpandedByDefaultCount) |
+ fileTreeElement.expand(); |
+ this._matchesExpandedCount += searchResult.searchMatches.length; |
+ } |
}; |
WebInspector.FileBasedSearchResultsPane.matchesExpandedByDefaultCount = 20; |
WebInspector.FileBasedSearchResultsPane.fileMatchesShownAtOnce = 20; |
-WebInspector.FileBasedSearchResultsPane.prototype = { |
- /** |
- * @override |
- * @param {!WebInspector.FileBasedSearchResult} searchResult |
- */ |
- addSearchResult: function(searchResult) |
- { |
- this._searchResults.push(searchResult); |
- var uiSourceCode = searchResult.uiSourceCode; |
- if (!uiSourceCode) |
- return; |
- this._addFileTreeElement(searchResult); |
- }, |
- |
- /** |
- * @param {!WebInspector.FileBasedSearchResult} searchResult |
- */ |
- _addFileTreeElement: function(searchResult) |
- { |
- var fileTreeElement = new WebInspector.FileBasedSearchResultsPane.FileTreeElement(this._searchConfig, searchResult); |
- this._treeOutline.appendChild(fileTreeElement); |
- // Expand until at least a certain number of matches is expanded. |
- if (this._matchesExpandedCount < WebInspector.FileBasedSearchResultsPane.matchesExpandedByDefaultCount) |
- fileTreeElement.expand(); |
- this._matchesExpandedCount += searchResult.searchMatches.length; |
- }, |
- |
- __proto__: WebInspector.SearchResultsPane.prototype |
-}; |
- |
/** |
- * @constructor |
- * @extends {TreeElement} |
- * @param {!WebInspector.ProjectSearchConfig} searchConfig |
- * @param {!WebInspector.FileBasedSearchResult} searchResult |
+ * @unrestricted |
*/ |
-WebInspector.FileBasedSearchResultsPane.FileTreeElement = function(searchConfig, searchResult) |
-{ |
- TreeElement.call(this, "", true); |
+WebInspector.FileBasedSearchResultsPane.FileTreeElement = class extends TreeElement { |
+ /** |
+ * @param {!WebInspector.ProjectSearchConfig} searchConfig |
+ * @param {!WebInspector.FileBasedSearchResult} searchResult |
+ */ |
+ constructor(searchConfig, searchResult) { |
+ super('', true); |
this._searchConfig = searchConfig; |
this._searchResult = searchResult; |
this.toggleOnClick = true; |
this.selectable = false; |
-}; |
- |
-WebInspector.FileBasedSearchResultsPane.FileTreeElement.prototype = { |
- onexpand: function() |
- { |
- if (this._initialized) |
- return; |
- |
- this._updateMatchesUI(); |
- this._initialized = true; |
- }, |
- |
- _updateMatchesUI: function() |
- { |
- this.removeChildren(); |
- var toIndex = Math.min(this._searchResult.searchMatches.length, WebInspector.FileBasedSearchResultsPane.fileMatchesShownAtOnce); |
- if (toIndex < this._searchResult.searchMatches.length) { |
- this._appendSearchMatches(0, toIndex - 1); |
- this._appendShowMoreMatchesElement(toIndex - 1); |
- } else { |
- this._appendSearchMatches(0, toIndex); |
- } |
- }, |
- |
- onattach: function() |
- { |
- this._updateSearchMatches(); |
- }, |
- |
- _updateSearchMatches: function() |
- { |
- this.listItemElement.classList.add("search-result"); |
- |
- var fileNameSpan = createElement("span"); |
- fileNameSpan.className = "search-result-file-name"; |
- fileNameSpan.textContent = this._searchResult.uiSourceCode.fullDisplayName(); |
- this.listItemElement.appendChild(fileNameSpan); |
- |
- var matchesCountSpan = createElement("span"); |
- matchesCountSpan.className = "search-result-matches-count"; |
- |
- var searchMatchesCount = this._searchResult.searchMatches.length; |
- if (searchMatchesCount === 1) |
- matchesCountSpan.textContent = WebInspector.UIString("(%d match)", searchMatchesCount); |
- else |
- matchesCountSpan.textContent = WebInspector.UIString("(%d matches)", searchMatchesCount); |
- |
- this.listItemElement.appendChild(matchesCountSpan); |
- if (this.expanded) |
- this._updateMatchesUI(); |
- }, |
- |
- /** |
- * @param {number} fromIndex |
- * @param {number} toIndex |
- */ |
- _appendSearchMatches: function(fromIndex, toIndex) |
- { |
- var searchResult = this._searchResult; |
- 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 = 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; |
- this.appendChild(searchMatchElement); |
- searchMatchElement.listItemElement.className = "search-match source-code"; |
- searchMatchElement.listItemElement.appendChild(anchor); |
- } |
- }, |
- |
- /** |
- * @param {number} startMatchIndex |
- */ |
- _appendShowMoreMatchesElement: function(startMatchIndex) |
- { |
- var matchesLeftCount = this._searchResult.searchMatches.length - startMatchIndex; |
- var showMoreMatchesText = WebInspector.UIString("Show all matches (%d more).", matchesLeftCount); |
- this._showMoreMatchesTreeElement = new TreeElement(showMoreMatchesText); |
- this.appendChild(this._showMoreMatchesTreeElement); |
- this._showMoreMatchesTreeElement.listItemElement.classList.add("show-more-matches"); |
- this._showMoreMatchesTreeElement.onselect = this._showMoreMatchesElementSelected.bind(this, startMatchIndex); |
- }, |
- |
- /** |
- * @param {!WebInspector.UISourceCode} uiSourceCode |
- * @param {number} lineNumber |
- * @param {number} columnNumber |
- * @return {!Element} |
- */ |
- _createAnchor: function(uiSourceCode, lineNumber, columnNumber) |
- { |
- return WebInspector.Linkifier.linkifyUsingRevealer(uiSourceCode.uiLocation(lineNumber, columnNumber), ""); |
- }, |
- |
- /** |
- * @param {string} lineContent |
- * @param {!Array.<!WebInspector.SourceRange>} matchRanges |
- */ |
- _createContentSpan: function(lineContent, matchRanges) |
- { |
- var contentSpan = createElement("span"); |
- contentSpan.className = "search-match-content"; |
- contentSpan.textContent = lineContent; |
- WebInspector.highlightRangesWithStyleClass(contentSpan, matchRanges, "highlighted-match"); |
- return contentSpan; |
- }, |
- |
- /** |
- * @param {string} lineContent |
- * @param {!RegExp} regex |
- * @return {!Array.<!WebInspector.SourceRange>} |
- */ |
- _regexMatchRanges: function(lineContent, regex) |
- { |
- regex.lastIndex = 0; |
- var match; |
- var matchRanges = []; |
- while ((regex.lastIndex < lineContent.length) && (match = regex.exec(lineContent))) |
- matchRanges.push(new WebInspector.SourceRange(match.index, match[0].length)); |
- |
- return matchRanges; |
- }, |
- |
- /** |
- * @param {number} startMatchIndex |
- * @return {boolean} |
- */ |
- _showMoreMatchesElementSelected: function(startMatchIndex) |
- { |
- this.removeChild(this._showMoreMatchesTreeElement); |
- this._appendSearchMatches(startMatchIndex, this._searchResult.searchMatches.length); |
- return false; |
- }, |
- |
- __proto__: TreeElement.prototype |
+ } |
+ |
+ /** |
+ * @override |
+ */ |
+ onexpand() { |
+ if (this._initialized) |
+ return; |
+ |
+ this._updateMatchesUI(); |
+ this._initialized = true; |
+ } |
+ |
+ _updateMatchesUI() { |
+ this.removeChildren(); |
+ var toIndex = Math.min( |
+ this._searchResult.searchMatches.length, WebInspector.FileBasedSearchResultsPane.fileMatchesShownAtOnce); |
+ if (toIndex < this._searchResult.searchMatches.length) { |
+ this._appendSearchMatches(0, toIndex - 1); |
+ this._appendShowMoreMatchesElement(toIndex - 1); |
+ } else { |
+ this._appendSearchMatches(0, toIndex); |
+ } |
+ } |
+ |
+ /** |
+ * @override |
+ */ |
+ onattach() { |
+ this._updateSearchMatches(); |
+ } |
+ |
+ _updateSearchMatches() { |
+ this.listItemElement.classList.add('search-result'); |
+ |
+ var fileNameSpan = createElement('span'); |
+ fileNameSpan.className = 'search-result-file-name'; |
+ fileNameSpan.textContent = this._searchResult.uiSourceCode.fullDisplayName(); |
+ this.listItemElement.appendChild(fileNameSpan); |
+ |
+ var matchesCountSpan = createElement('span'); |
+ matchesCountSpan.className = 'search-result-matches-count'; |
+ |
+ var searchMatchesCount = this._searchResult.searchMatches.length; |
+ if (searchMatchesCount === 1) |
+ matchesCountSpan.textContent = WebInspector.UIString('(%d match)', searchMatchesCount); |
+ else |
+ matchesCountSpan.textContent = WebInspector.UIString('(%d matches)', searchMatchesCount); |
+ |
+ this.listItemElement.appendChild(matchesCountSpan); |
+ if (this.expanded) |
+ this._updateMatchesUI(); |
+ } |
+ |
+ /** |
+ * @param {number} fromIndex |
+ * @param {number} toIndex |
+ */ |
+ _appendSearchMatches(fromIndex, toIndex) { |
+ var searchResult = this._searchResult; |
+ 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 = 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; |
+ this.appendChild(searchMatchElement); |
+ searchMatchElement.listItemElement.className = 'search-match source-code'; |
+ searchMatchElement.listItemElement.appendChild(anchor); |
+ } |
+ } |
+ |
+ /** |
+ * @param {number} startMatchIndex |
+ */ |
+ _appendShowMoreMatchesElement(startMatchIndex) { |
+ var matchesLeftCount = this._searchResult.searchMatches.length - startMatchIndex; |
+ var showMoreMatchesText = WebInspector.UIString('Show all matches (%d more).', matchesLeftCount); |
+ this._showMoreMatchesTreeElement = new TreeElement(showMoreMatchesText); |
+ this.appendChild(this._showMoreMatchesTreeElement); |
+ this._showMoreMatchesTreeElement.listItemElement.classList.add('show-more-matches'); |
+ this._showMoreMatchesTreeElement.onselect = this._showMoreMatchesElementSelected.bind(this, startMatchIndex); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.UISourceCode} uiSourceCode |
+ * @param {number} lineNumber |
+ * @param {number} columnNumber |
+ * @return {!Element} |
+ */ |
+ _createAnchor(uiSourceCode, lineNumber, columnNumber) { |
+ return WebInspector.Linkifier.linkifyUsingRevealer(uiSourceCode.uiLocation(lineNumber, columnNumber), ''); |
+ } |
+ |
+ /** |
+ * @param {string} lineContent |
+ * @param {!Array.<!WebInspector.SourceRange>} matchRanges |
+ */ |
+ _createContentSpan(lineContent, matchRanges) { |
+ var contentSpan = createElement('span'); |
+ contentSpan.className = 'search-match-content'; |
+ contentSpan.textContent = lineContent; |
+ WebInspector.highlightRangesWithStyleClass(contentSpan, matchRanges, 'highlighted-match'); |
+ return contentSpan; |
+ } |
+ |
+ /** |
+ * @param {string} lineContent |
+ * @param {!RegExp} regex |
+ * @return {!Array.<!WebInspector.SourceRange>} |
+ */ |
+ _regexMatchRanges(lineContent, regex) { |
+ regex.lastIndex = 0; |
+ var match; |
+ var matchRanges = []; |
+ while ((regex.lastIndex < lineContent.length) && (match = regex.exec(lineContent))) |
+ matchRanges.push(new WebInspector.SourceRange(match.index, match[0].length)); |
+ |
+ return matchRanges; |
+ } |
+ |
+ /** |
+ * @param {number} startMatchIndex |
+ * @return {boolean} |
+ */ |
+ _showMoreMatchesElementSelected(startMatchIndex) { |
+ this.removeChild(this._showMoreMatchesTreeElement); |
+ this._appendSearchMatches(startMatchIndex, this._searchResult.searchMatches.length); |
+ return false; |
+ } |
}; |