fune/browser/components/urlbar/tests/unit/test_muxer.js
Dão Gottwald 969b56a313 Bug 1522425 - Rename MATCH_SOURCE to RESULT_SOURCE. r=mak
Differential Revision: https://phabricator.services.mozilla.com/D17837

--HG--
extra : moz-landing-system : lando
2019-01-29 09:29:21 +00:00

81 lines
2.6 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
add_task(async function test_muxer() {
Assert.throws(() => UrlbarProvidersManager.registerMuxer(),
/invalid muxer/,
"Should throw with no arguments");
Assert.throws(() => UrlbarProvidersManager.registerMuxer({}),
/invalid muxer/,
"Should throw with empty object");
Assert.throws(() => UrlbarProvidersManager.registerMuxer({
name: "",
}),
/invalid muxer/,
"Should throw with empty name");
Assert.throws(() => UrlbarProvidersManager.registerMuxer({
name: "test",
sort: "no",
}),
/invalid muxer/,
"Should throw with invalid sort");
let matches = [
new UrlbarResult(UrlbarUtils.RESULT_TYPE.TAB_SWITCH,
UrlbarUtils.RESULT_SOURCE.TABS,
{ url: "http://mozilla.org/tab/" }),
new UrlbarResult(UrlbarUtils.RESULT_TYPE.URL,
UrlbarUtils.RESULT_SOURCE.BOOKMARKS,
{ url: "http://mozilla.org/bookmark/" }),
new UrlbarResult(UrlbarUtils.RESULT_TYPE.URL,
UrlbarUtils.RESULT_SOURCE.HISTORY,
{ url: "http://mozilla.org/history/" }),
];
let providerName = registerBasicTestProvider(matches);
let context = createContext(undefined, {providers: [providerName]});
let controller = new UrlbarController({
browserWindow: {
location: {
href: AppConstants.BROWSER_CHROME_URL,
},
},
});
/**
* A test muxer.
*/
class TestMuxer extends UrlbarMuxer {
get name() {
return "TestMuxer";
}
sort(queryContext) {
queryContext.results.sort((a, b) => {
if (b.source == UrlbarUtils.RESULT_SOURCE.TABS) {
return -1;
}
if (b.source == UrlbarUtils.RESULT_SOURCE.BOOKMARKS) {
return 1;
}
return a.source == UrlbarUtils.RESULT_SOURCE.BOOKMARKS ? -1 : 1;
});
}
}
let muxer = new TestMuxer();
UrlbarProvidersManager.registerMuxer(muxer);
context.muxer = "TestMuxer";
info("Check results, the order should be: bookmark, history, tab");
await UrlbarProvidersManager.startQuery(context, controller);
Assert.deepEqual(context.results, [
matches[1],
matches[2],
matches[0],
]);
// Sanity check, should not throw.
UrlbarProvidersManager.unregisterMuxer(muxer);
UrlbarProvidersManager.unregisterMuxer("TestMuxer"); // no-op.
});