Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(140)

Unified Diff: third_party/WebKit/LayoutTests/http/tests/inspector-unit/filtered-list-widget-providers.js

Issue 2736853002: DevTools: Convert FilteredListWidget to use an optional provider (Closed)
Patch Set: missing timeout Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/http/tests/inspector-unit/filtered-list-widget-providers.js
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector-unit/filtered-list-widget-providers.js b/third_party/WebKit/LayoutTests/http/tests/inspector-unit/filtered-list-widget-providers.js
new file mode 100644
index 0000000000000000000000000000000000000000..44774ddb2726dee6bd173c7884b6455f8460cee9
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/inspector-unit/filtered-list-widget-providers.js
@@ -0,0 +1,59 @@
+TestRunner.loadLazyModules(['quick_open']).then(test);
+function test() {
+ TestRunner.addResult(
+ 'Test that FilteredListWidget.setProvider changes the provider.');
+
+ var StubProvider = class extends QuickOpen.FilteredListWidget.Provider {
+ constructor(input) {
+ super();
+ this._input = input
+ }
+ itemKeyAt(itemIndex) { return this._input[itemIndex]; }
+ itemScoreAt(itemIndex) { return 0; }
+ itemCount() { return this._input.length; }
+ shouldShowMatchingItems() { return true; }
+ renderItem(item, query, titleElement, subtitleElement) {
+ titleElement.textContent = this._input[item];
+ }
+ };
+
+ var filteredListWidget = new QuickOpen.FilteredListWidget(null, []);
+ filteredListWidget.showAsDialog();
+
+ TestRunner.runTests([
+ function providerWithOneItem() {
+ return setProvider(new StubProvider(['One Item']));
+ },
+ function nullProvider() {
+ return setProvider(null);
+ },
+ function providerWithTwoItems() {
+ return setProvider(new StubProvider(['First Item', 'Second item']));
+ },
+ function providerWithNoItems() {
+ return setProvider(new StubProvider([]));
+ }
+ ]);
+
+ function setProvider(provider) {
+ var promise = TestRunner.addSniffer(filteredListWidget, "_itemsFilteredForTest").then(dump);
+ filteredListWidget.setProvider(provider);
+ return promise;
+ }
+
+ function dump() {
+ var list = filteredListWidget._list;
+ if (filteredListWidget._bottomElementsContainer.classList.contains('hidden')) {
+ TestRunner.addResult('Output: <hidden>');
+ return;
+ }
+ if (list.element.classList.contains('hidden')) {
+ TestRunner.addResult('Output: ' + filteredListWidget._notFoundElement.textContent);
+ return;
+ }
+ var output = [];
+ for (var i = 0; i < list.length(); ++i)
+ output.push(filteredListWidget._provider.itemKeyAt(list.itemAtIndex(i)));
+ TestRunner.addResult('Output:' + JSON.stringify(output));
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698