Index: third_party/WebKit/Source/devtools/front_end/quick_open/HelpQuickOpen.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/quick_open/HelpQuickOpen.js b/third_party/WebKit/Source/devtools/front_end/quick_open/HelpQuickOpen.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..36b0d4c7fd4604d157dfadc3129624490b27ef5e |
--- /dev/null |
+++ b/third_party/WebKit/Source/devtools/front_end/quick_open/HelpQuickOpen.js |
@@ -0,0 +1,78 @@ |
+// Copyright 2017 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. |
+QuickOpen.HelpQuickOpen = class extends QuickOpen.FilteredListWidget.Provider { |
+ constructor() { |
+ super(); |
+ /** @type {!Array<{prefix: string, title: string}>} */ |
+ this._providers = []; |
+ self.runtime.extensions(QuickOpen.FilteredListWidget.Provider).forEach(this._addProvider.bind(this)); |
+ } |
+ |
+ /** |
+ * @param {!Runtime.Extension} extension |
+ */ |
+ _addProvider(extension) { |
+ if (extension.descriptor()['title']) |
+ this._providers.push({prefix: extension.descriptor()['prefix'], title: extension.descriptor()['title']}); |
+ } |
+ |
+ /** |
+ * @override |
+ * @return {number} |
+ */ |
+ itemCount() { |
+ return this._providers.length; |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {number} itemIndex |
+ * @return {string} |
+ */ |
+ itemKeyAt(itemIndex) { |
+ return this._providers[itemIndex].prefix; |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {number} itemIndex |
+ * @param {string} query |
+ * @return {number} |
+ */ |
+ itemScoreAt(itemIndex, query) { |
+ return -this._providers[itemIndex].prefix.length; |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {number} itemIndex |
+ * @param {string} query |
+ * @param {!Element} titleElement |
+ * @param {!Element} subtitleElement |
+ */ |
+ renderItem(itemIndex, query, titleElement, subtitleElement) { |
+ var provider = this._providers[itemIndex]; |
+ var prefixElement = titleElement.createChild('span', 'monospace'); |
+ prefixElement.textContent = (provider.prefix || '\u2026') + ' '; |
+ titleElement.createTextChild(provider.title); |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {?number} itemIndex |
+ * @param {string} promptValue |
+ */ |
+ selectItem(itemIndex, promptValue) { |
+ if (itemIndex !== null) |
+ QuickOpen.QuickOpen.show(this._providers[itemIndex].prefix); |
+ } |
+ |
+ /** |
+ * @override |
+ * @return {boolean} |
+ */ |
+ renderAsTwoRows() { |
+ return false; |
+ } |
+}; |