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 });