Index: third_party/WebKit/Source/devtools/front_end/sources/FilteredUISourceCodeListDelegate.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/FilteredUISourceCodeListDelegate.js b/third_party/WebKit/Source/devtools/front_end/sources/FilteredUISourceCodeListDelegate.js |
index 8baf1ed08a50ca8c295c0d15fd2eb407d04e74a7..a4381daeed48a10e447edcf60bc12fc5964cbe36 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/sources/FilteredUISourceCodeListDelegate.js |
+++ b/third_party/WebKit/Source/devtools/front_end/sources/FilteredUISourceCodeListDelegate.js |
@@ -3,224 +3,213 @@ |
* Use of this source code is governed by a BSD-style license that can be |
* found in the LICENSE file. |
*/ |
- |
/** |
- * @constructor |
- * @extends {WebInspector.FilteredListWidget.Delegate} |
- * @param {!Map.<!WebInspector.UISourceCode, number>=} defaultScores |
- * @param {!Array<string>=} history |
+ * @unrestricted |
*/ |
-WebInspector.FilteredUISourceCodeListDelegate = function(defaultScores, history) |
-{ |
- WebInspector.FilteredListWidget.Delegate.call(this, history || []); |
+WebInspector.FilteredUISourceCodeListDelegate = class extends WebInspector.FilteredListWidget.Delegate { |
+ /** |
+ * @param {!Map.<!WebInspector.UISourceCode, number>=} defaultScores |
+ * @param {!Array<string>=} history |
+ */ |
+ constructor(defaultScores, history) { |
+ super(history || []); |
this._defaultScores = defaultScores; |
- this._scorer = new WebInspector.FilePathScoreFunction(""); |
- WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.UISourceCodeAdded, this._uiSourceCodeAdded, this); |
+ this._scorer = new WebInspector.FilePathScoreFunction(''); |
+ WebInspector.workspace.addEventListener( |
+ WebInspector.Workspace.Events.UISourceCodeAdded, this._uiSourceCodeAdded, this); |
WebInspector.workspace.addEventListener(WebInspector.Workspace.Events.ProjectRemoved, this._projectRemoved, this); |
-}; |
- |
-WebInspector.FilteredUISourceCodeListDelegate.prototype = { |
- /** |
- * @param {!WebInspector.Event} event |
- */ |
- _projectRemoved: function(event) |
- { |
- var project = /** @type {!WebInspector.Project} */ (event.data); |
- this.populate(project); |
- this.refresh(); |
- }, |
- |
- /** |
- * @protected |
- * @param {!WebInspector.Project=} skipProject |
- */ |
- populate: function(skipProject) |
- { |
- /** @type {!Array.<!WebInspector.UISourceCode>} */ |
- this._uiSourceCodes = []; |
- var projects = WebInspector.workspace.projects().filter(this.filterProject.bind(this)); |
- for (var i = 0; i < projects.length; ++i) { |
- if (skipProject && projects[i] === skipProject) |
- continue; |
- var uiSourceCodes = projects[i].uiSourceCodes().filter(this._filterUISourceCode.bind(this)); |
- this._uiSourceCodes = this._uiSourceCodes.concat(uiSourceCodes); |
- } |
- }, |
- |
- /** |
- * @param {!WebInspector.UISourceCode} uiSourceCode |
- * @return {boolean} |
- */ |
- _filterUISourceCode: function(uiSourceCode) |
- { |
- var binding = WebInspector.persistence.binding(uiSourceCode); |
- return !binding || binding.network === uiSourceCode; |
- }, |
- |
- /** |
- * @param {?WebInspector.UISourceCode} uiSourceCode |
- * @param {number=} lineNumber |
- * @param {number=} columnNumber |
- */ |
- uiSourceCodeSelected: function(uiSourceCode, lineNumber, columnNumber) |
- { |
- // Overridden by subclasses |
- }, |
- |
- /** |
- * @param {!WebInspector.Project} project |
- * @return {boolean} |
- */ |
- filterProject: function(project) |
- { |
- return true; |
- // Overridden by subclasses |
- }, |
- |
- /** |
- * @override |
- * @return {number} |
- */ |
- itemCount: function() |
- { |
- return this._uiSourceCodes.length; |
- }, |
- |
- /** |
- * @override |
- * @param {number} itemIndex |
- * @return {string} |
- */ |
- itemKeyAt: function(itemIndex) |
- { |
- return this._uiSourceCodes[itemIndex].url(); |
- }, |
- |
- /** |
- * @override |
- * @param {number} itemIndex |
- * @param {string} query |
- * @return {number} |
- */ |
- itemScoreAt: function(itemIndex, query) |
- { |
- var uiSourceCode = this._uiSourceCodes[itemIndex]; |
- var score = this._defaultScores ? (this._defaultScores.get(uiSourceCode) || 0) : 0; |
- if (!query || query.length < 2) |
- return score; |
- |
- if (this._query !== query) { |
- this._query = query; |
- this._scorer = new WebInspector.FilePathScoreFunction(query); |
- } |
- |
- var url = uiSourceCode.url(); |
- return score + 10 * this._scorer.score(url, null); |
- }, |
- |
- /** |
- * @override |
- * @param {number} itemIndex |
- * @param {string} query |
- * @param {!Element} titleElement |
- * @param {!Element} subtitleElement |
- */ |
- renderItem: function(itemIndex, query, titleElement, subtitleElement) |
- { |
- query = this.rewriteQuery(query); |
- var uiSourceCode = this._uiSourceCodes[itemIndex]; |
- var fullDisplayName = uiSourceCode.fullDisplayName(); |
- var indexes = []; |
- var score = new WebInspector.FilePathScoreFunction(query).score(fullDisplayName, indexes); |
- var fileNameIndex = fullDisplayName.lastIndexOf("/"); |
- |
- titleElement.textContent = uiSourceCode.displayName() + (this._queryLineNumberAndColumnNumber || ""); |
- this._renderSubtitleElement(subtitleElement, fullDisplayName); |
- subtitleElement.title = fullDisplayName; |
- var ranges = []; |
- for (var i = 0; i < indexes.length; ++i) |
- ranges.push({offset: indexes[i], length: 1}); |
- |
- if (indexes[0] > fileNameIndex) { |
- for (var i = 0; i < ranges.length; ++i) |
- ranges[i].offset -= fileNameIndex + 1; |
- WebInspector.highlightRangesWithStyleClass(titleElement, ranges, "highlight"); |
- } else { |
- WebInspector.highlightRangesWithStyleClass(subtitleElement, ranges, "highlight"); |
- } |
- }, |
- |
- /** |
- * @param {!Element} element |
- * @param {string} text |
- */ |
- _renderSubtitleElement: function(element, text) |
- { |
- element.removeChildren(); |
- var splitPosition = text.lastIndexOf("/"); |
- if (text.length > 55) |
- splitPosition = text.length - 55; |
- var first = element.createChild("div", "first-part"); |
- first.textContent = text.substring(0, splitPosition); |
- var second = element.createChild("div", "second-part"); |
- second.textContent = text.substring(splitPosition); |
- element.title = text; |
- }, |
- |
- /** |
- * @override |
- * @param {?number} itemIndex |
- * @param {string} promptValue |
- */ |
- selectItem: function(itemIndex, promptValue) |
- { |
- var parsedExpression = promptValue.trim().match(/^([^:]*)(:\d+)?(:\d+)?$/); |
- if (!parsedExpression) |
- return; |
- |
- var lineNumber; |
- var columnNumber; |
- if (parsedExpression[2]) |
- lineNumber = parseInt(parsedExpression[2].substr(1), 10) - 1; |
- if (parsedExpression[3]) |
- columnNumber = parseInt(parsedExpression[3].substr(1), 10) - 1; |
- var uiSourceCode = itemIndex !== null ? this._uiSourceCodes[itemIndex] : null; |
- this.uiSourceCodeSelected(uiSourceCode, lineNumber, columnNumber); |
- }, |
- |
- /** |
- * @override |
- * @param {string} query |
- * @return {string} |
- */ |
- rewriteQuery: function(query) |
- { |
- if (!query) |
- return query; |
- query = query.trim(); |
- var lineNumberMatch = query.match(/^([^:]+)((?::[^:]*){0,2})$/); |
- this._queryLineNumberAndColumnNumber = lineNumberMatch ? lineNumberMatch[2] : ""; |
- return lineNumberMatch ? lineNumberMatch[1] : query; |
- }, |
- |
- /** |
- * @param {!WebInspector.Event} event |
- */ |
- _uiSourceCodeAdded: function(event) |
- { |
- var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data); |
- if (!this._filterUISourceCode(uiSourceCode) || !this.filterProject(uiSourceCode.project())) |
- return; |
- this._uiSourceCodes.push(uiSourceCode); |
- this.refresh(); |
- }, |
- |
- dispose: function() |
- { |
- WebInspector.workspace.removeEventListener(WebInspector.Workspace.Events.UISourceCodeAdded, this._uiSourceCodeAdded, this); |
- WebInspector.workspace.removeEventListener(WebInspector.Workspace.Events.ProjectRemoved, this._projectRemoved, this); |
- }, |
- |
- __proto__: WebInspector.FilteredListWidget.Delegate.prototype |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.Event} event |
+ */ |
+ _projectRemoved(event) { |
+ var project = /** @type {!WebInspector.Project} */ (event.data); |
+ this.populate(project); |
+ this.refresh(); |
+ } |
+ |
+ /** |
+ * @protected |
+ * @param {!WebInspector.Project=} skipProject |
+ */ |
+ populate(skipProject) { |
+ /** @type {!Array.<!WebInspector.UISourceCode>} */ |
+ this._uiSourceCodes = []; |
+ var projects = WebInspector.workspace.projects().filter(this.filterProject.bind(this)); |
+ for (var i = 0; i < projects.length; ++i) { |
+ if (skipProject && projects[i] === skipProject) |
+ continue; |
+ var uiSourceCodes = projects[i].uiSourceCodes().filter(this._filterUISourceCode.bind(this)); |
+ this._uiSourceCodes = this._uiSourceCodes.concat(uiSourceCodes); |
+ } |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.UISourceCode} uiSourceCode |
+ * @return {boolean} |
+ */ |
+ _filterUISourceCode(uiSourceCode) { |
+ var binding = WebInspector.persistence.binding(uiSourceCode); |
+ return !binding || binding.network === uiSourceCode; |
+ } |
+ |
+ /** |
+ * @param {?WebInspector.UISourceCode} uiSourceCode |
+ * @param {number=} lineNumber |
+ * @param {number=} columnNumber |
+ */ |
+ uiSourceCodeSelected(uiSourceCode, lineNumber, columnNumber) { |
+ // Overridden by subclasses |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.Project} project |
+ * @return {boolean} |
+ */ |
+ filterProject(project) { |
+ return true; |
+ // Overridden by subclasses |
+ } |
+ |
+ /** |
+ * @override |
+ * @return {number} |
+ */ |
+ itemCount() { |
+ return this._uiSourceCodes.length; |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {number} itemIndex |
+ * @return {string} |
+ */ |
+ itemKeyAt(itemIndex) { |
+ return this._uiSourceCodes[itemIndex].url(); |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {number} itemIndex |
+ * @param {string} query |
+ * @return {number} |
+ */ |
+ itemScoreAt(itemIndex, query) { |
+ var uiSourceCode = this._uiSourceCodes[itemIndex]; |
+ var score = this._defaultScores ? (this._defaultScores.get(uiSourceCode) || 0) : 0; |
+ if (!query || query.length < 2) |
+ return score; |
+ |
+ if (this._query !== query) { |
+ this._query = query; |
+ this._scorer = new WebInspector.FilePathScoreFunction(query); |
+ } |
+ |
+ var url = uiSourceCode.url(); |
+ return score + 10 * this._scorer.score(url, null); |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {number} itemIndex |
+ * @param {string} query |
+ * @param {!Element} titleElement |
+ * @param {!Element} subtitleElement |
+ */ |
+ renderItem(itemIndex, query, titleElement, subtitleElement) { |
+ query = this.rewriteQuery(query); |
+ var uiSourceCode = this._uiSourceCodes[itemIndex]; |
+ var fullDisplayName = uiSourceCode.fullDisplayName(); |
+ var indexes = []; |
+ var score = new WebInspector.FilePathScoreFunction(query).score(fullDisplayName, indexes); |
+ var fileNameIndex = fullDisplayName.lastIndexOf('/'); |
+ |
+ titleElement.textContent = uiSourceCode.displayName() + (this._queryLineNumberAndColumnNumber || ''); |
+ this._renderSubtitleElement(subtitleElement, fullDisplayName); |
+ subtitleElement.title = fullDisplayName; |
+ var ranges = []; |
+ for (var i = 0; i < indexes.length; ++i) |
+ ranges.push({offset: indexes[i], length: 1}); |
+ |
+ if (indexes[0] > fileNameIndex) { |
+ for (var i = 0; i < ranges.length; ++i) |
+ ranges[i].offset -= fileNameIndex + 1; |
+ WebInspector.highlightRangesWithStyleClass(titleElement, ranges, 'highlight'); |
+ } else { |
+ WebInspector.highlightRangesWithStyleClass(subtitleElement, ranges, 'highlight'); |
+ } |
+ } |
+ |
+ /** |
+ * @param {!Element} element |
+ * @param {string} text |
+ */ |
+ _renderSubtitleElement(element, text) { |
+ element.removeChildren(); |
+ var splitPosition = text.lastIndexOf('/'); |
+ if (text.length > 55) |
+ splitPosition = text.length - 55; |
+ var first = element.createChild('div', 'first-part'); |
+ first.textContent = text.substring(0, splitPosition); |
+ var second = element.createChild('div', 'second-part'); |
+ second.textContent = text.substring(splitPosition); |
+ element.title = text; |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {?number} itemIndex |
+ * @param {string} promptValue |
+ */ |
+ selectItem(itemIndex, promptValue) { |
+ var parsedExpression = promptValue.trim().match(/^([^:]*)(:\d+)?(:\d+)?$/); |
+ if (!parsedExpression) |
+ return; |
+ |
+ var lineNumber; |
+ var columnNumber; |
+ if (parsedExpression[2]) |
+ lineNumber = parseInt(parsedExpression[2].substr(1), 10) - 1; |
+ if (parsedExpression[3]) |
+ columnNumber = parseInt(parsedExpression[3].substr(1), 10) - 1; |
+ var uiSourceCode = itemIndex !== null ? this._uiSourceCodes[itemIndex] : null; |
+ this.uiSourceCodeSelected(uiSourceCode, lineNumber, columnNumber); |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {string} query |
+ * @return {string} |
+ */ |
+ rewriteQuery(query) { |
+ if (!query) |
+ return query; |
+ query = query.trim(); |
+ var lineNumberMatch = query.match(/^([^:]+)((?::[^:]*){0,2})$/); |
+ this._queryLineNumberAndColumnNumber = lineNumberMatch ? lineNumberMatch[2] : ''; |
+ return lineNumberMatch ? lineNumberMatch[1] : query; |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.Event} event |
+ */ |
+ _uiSourceCodeAdded(event) { |
+ var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (event.data); |
+ if (!this._filterUISourceCode(uiSourceCode) || !this.filterProject(uiSourceCode.project())) |
+ return; |
+ this._uiSourceCodes.push(uiSourceCode); |
+ this.refresh(); |
+ } |
+ |
+ /** |
+ * @override |
+ */ |
+ dispose() { |
+ WebInspector.workspace.removeEventListener( |
+ WebInspector.Workspace.Events.UISourceCodeAdded, this._uiSourceCodeAdded, this); |
+ WebInspector.workspace.removeEventListener( |
+ WebInspector.Workspace.Events.ProjectRemoved, this._projectRemoved, this); |
+ } |
}; |