tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_providersManager.js (2228B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 ChromeUtils.defineESModuleGetters(this, {
      7  ProvidersManager:
      8    "moz-src:///browser/components/urlbar/UrlbarProvidersManager.sys.mjs",
      9 });
     10 
     11 add_task(async function test_providers() {
     12  Assert.throws(
     13    () => UrlbarProvidersManager.registerProvider(),
     14    /invalid provider/,
     15    "Should throw with no arguments"
     16  );
     17  Assert.throws(
     18    () => UrlbarProvidersManager.registerProvider({}),
     19    /invalid provider/,
     20    "Should throw with empty object"
     21  );
     22  Assert.throws(
     23    () =>
     24      UrlbarProvidersManager.registerProvider({
     25        name: "",
     26      }),
     27    /invalid provider/,
     28    "Should throw with empty name"
     29  );
     30  Assert.throws(
     31    () =>
     32      UrlbarProvidersManager.registerProvider({
     33        name: "test",
     34        startQuery: "no",
     35      }),
     36    /invalid provider/,
     37    "Should throw with invalid startQuery"
     38  );
     39  Assert.throws(
     40    () =>
     41      UrlbarProvidersManager.registerProvider({
     42        name: "test",
     43        startQuery: () => {},
     44        cancelQuery: "no",
     45      }),
     46    /invalid provider/,
     47    "Should throw with invalid cancelQuery"
     48  );
     49 
     50  let match = new UrlbarResult({
     51    type: UrlbarUtils.RESULT_TYPE.TAB_SWITCH,
     52    source: UrlbarUtils.RESULT_SOURCE.TABS,
     53    payload: { url: "http://mozilla.org/foo/" },
     54  });
     55 
     56  let provider = registerBasicTestProvider([match]);
     57  let context = createContext(undefined, { providers: [provider.name] });
     58  let controller = UrlbarTestUtils.newMockController();
     59  let resultsPromise = promiseControllerNotification(
     60    controller,
     61    "onQueryResults"
     62  );
     63 
     64  await UrlbarProvidersManager.startQuery(context, controller);
     65  // Sanity check that this doesn't throw. It should be a no-op since we await
     66  // for startQuery.
     67  UrlbarProvidersManager.cancelQuery(context);
     68 
     69  let params = await resultsPromise;
     70  Assert.deepEqual(params[0].results, [match]);
     71 });
     72 
     73 add_task(async function test_criticalSection() {
     74  // Just a sanity check, this shouldn't throw.
     75  await ProvidersManager.runInCriticalSection(async () => {
     76    let db = await PlacesUtils.promiseLargeCacheDBConnection();
     77    await db.execute(`PRAGMA page_cache`);
     78  });
     79 });