Files
react-native-devtools-frontend/front_end/quick_open/HelpQuickOpen.js
T
Tim van der Lippe 7f2002c598 [globals] self.runtime
Migrate all usages of self.runtime to Root.Runtime.Runtime.instance().

This also requires various type updates, as now Closure/TypeScript
can better understand the code and discover issues.

R=jacktfranklin@chromium.org

Bug: 1011811
Change-Id: Ice07aa0ca959e61a6acdf4618b9a272d8c1096b8
Fixed: 1081614
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2434339
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
2020-09-29 10:52:39 +00:00

90 lines
2.1 KiB
JavaScript

// 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.
// @ts-nocheck
// TODO(crbug.com/1011811): Enable TypeScript compiler checks
import * as Root from '../root/root.js';
import {Provider} from './FilteredListWidget.js';
import {QuickOpenImpl} from './QuickOpen.js';
export class HelpQuickOpen extends Provider {
constructor() {
super();
/** @type {!Array<{prefix: string, title: string}>} */
this._providers = [];
Root.Runtime.Runtime.instance().extensions(Provider).forEach(this._addProvider.bind(this));
}
/**
* @param {!Root.Runtime.Extension} extension
*/
_addProvider(extension) {
if (extension.title()) {
this._providers.push({prefix: extension.descriptor()['prefix'], title: extension.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) {
const provider = this._providers[itemIndex];
const prefixElement = titleElement.createChild('span', 'monospace');
prefixElement.textContent = (provider.prefix || '…') + ' ';
titleElement.createTextChild(provider.title);
}
/**
* @override
* @param {?number} itemIndex
* @param {string} promptValue
*/
selectItem(itemIndex, promptValue) {
if (itemIndex !== null) {
QuickOpenImpl.show(this._providers[itemIndex].prefix);
}
}
/**
* @override
* @return {boolean}
*/
renderAsTwoRows() {
return false;
}
}