forked from mirrors/gecko-dev
Differential Revision: https://phabricator.services.mozilla.com/D17837 --HG-- extra : moz-landing-system : lando
81 lines
2.6 KiB
JavaScript
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.
|
|
});
|