Name Description Size Coverage
.eslintrc.mjs 758 -
data -
head.js exported createHttpServer, cleanupDir, clearCache, optionalPermissionsPromptHandler, promiseConsoleOutput, promiseQuotaManagerServiceReset, promiseQuotaManagerServiceClear, runWithPrefs, testEnv, withHandlingUserInput, resetHandlingUserInput, assertPersistentListeners, promiseExtensionEvent, assertHasPersistedScriptsCachedFlag, assertIsPersistedScriptsCachedFlag, setup_crash_reporter_override_and_cleaner, crashFrame, crashExtensionBackground, makeRkvDatabaseDir 20725 -
head_dnr.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 7010 -
head_dnr_static_rules.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 5513 -
head_legacy_ep.js 330 -
head_native_messaging.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 4456 -
head_remote.js globals testEnv 232 -
head_schemas.js exported Schemas, LocalAPIImplementation, SchemaAPIInterface, getContextWrapper 2991 -
head_service_worker.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 5097 -
head_storage.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 46445 -
head_sync.js Call the given function with a newly-constructed context. Unload the context on the way out. @param {Function} f the function to call 1219 -
head_telemetry.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 16905 -
linux_native-messaging-portal_requirements.txt 194 -
native_messaging.toml 1263 -
test_change_backgroundServiceWorker_enabled_pref_false.js 1584 -
test_change_backgroundServiceWorker_enabled_pref_true.js 3025 -
test_change_remote_mode.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 608 -
test_ChannelWrapper.js The ChannelWrapper API is part of the implementation of WebRequest, and not really meant to be used in isolation. In practice, there are several in-tree uses of ChannelWrapper, so this test serves as a sanity check that ChannelWrapper behaves reasonable in the absence of WebRequest. 17939 -
test_csp_custom_policies.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 9801 -
test_csp_validator.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 10083 -
test_ext_activityLog.js 2204 -
test_ext_adoption_with_private_field_xrays.js / 4287 -
test_ext_adoption_with_xrays.js / 3499 -
test_ext_alarms.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 11388 -
test_ext_alarms_does_not_fire.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1037 -
test_ext_alarms_periodic.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1398 -
test_ext_alarms_replaces.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1728 -
test_ext_api_events_listener_calls_exceptions.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 14776 -
test_ext_api_permissions.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1651 -
test_ext_asyncAPICall_isHandlingUserInput.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 4240 -
test_ext_audio_mozextension.js 1650 -
test_ext_background_api_injection.js 1172 -
test_ext_background_early_quit.js 2632 -
test_ext_background_early_shutdown.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 32784 -
test_ext_background_empty.js 1954 -
test_ext_background_file_invalid.js 1839 -
test_ext_background_generated_load_events.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 751 -
test_ext_background_generated_reload.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 700 -
test_ext_background_global_history.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 697 -
test_ext_background_iframe.js 14372 -
test_ext_background_private_browsing.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1241 -
test_ext_background_runtime_connect_params.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2420 -
test_ext_background_script_and_service_worker.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 7642 -
test_ext_background_service_worker.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 9883 -
test_ext_background_sub_windows.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 6196 -
test_ext_background_teardown.js 2538 -
test_ext_background_telemetry.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 3236 -
test_ext_background_type_module.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 3954 -
test_ext_background_window_properties.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1096 -
test_ext_brokenlinks.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1590 -
test_ext_browser_style_deprecation.js 12210 -
test_ext_browserSettings.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 18360 -
test_ext_browserSettings_homepage.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 935 -
test_ext_browsingData.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1530 -
test_ext_browsingData_cookies_cache.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 12498 -
test_ext_browsingData_cookies_cookieStoreId.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 5743 -
test_ext_cache_api.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 9841 -
test_ext_captivePortal.js This duplicates the test from netwerk/test/unit/test_captive_portal_service.js however using an extension to gather the captive portal information. 6147 -
test_ext_captivePortal_url.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1370 -
test_ext_clear_cached_resources.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 12227 -
test_ext_content_security_policy.js ", "moz-extension:", "'self'", ], }, // Keep in sync with extensions.webextensions.base-content-security-policy.v3 v3: { "script-src": ["'self'", "'wasm-unsafe-eval'"], }, // Keep in sync with extensions.webextensions.base-content-security-policy.v3-with-localhost v3_with_localhost: { "script-src": [ "'self'", "'wasm-unsafe-eval'", "http://localhost:*", "http://127.0.0.1:*", ], }, }; /** @typedef TestPolicyExpects @type {object} @param {boolean} workerEvalAllowed @param {boolean} workerImportScriptsAllowed @param {boolean} workerWasmAllowed @param {boolean} localhostAllowed 11858 -
test_ext_contentscript.js / 7526 -
test_ext_contentscript_about_blank_start.js 2168 -
test_ext_contentscript_antitracking.js 8715 -
test_ext_contentscript_api_injection.js 1824 -
test_ext_contentscript_async_loading.js 2268 -
test_ext_contentscript_canvas_tainting.js 3498 -
test_ext_contentscript_context.js eslint-disable mozilla/balanced-listeners 14119 -
test_ext_contentscript_context_isolation.js globals exportFunction 7364 -
test_ext_contentscript_create_iframe.js 4841 -
test_ext_contentscript_csp.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 12901 -
test_ext_contentscript_css.js 1226 -
test_ext_contentscript_css_origin.js 2473 -
test_ext_contentscript_dynamic_registration.js / 5867 -
test_ext_contentscript_errors.js / 5278 -
test_ext_contentscript_exporthelpers.js globals exportFunction, precisePi, reportPi 2586 -
test_ext_contentscript_importmap.js 3688 -
test_ext_contentscript_in_background.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1483 -
test_ext_contentscript_integritypolicy.js 2232 -
test_ext_contentscript_json_api.js 3309 -
test_ext_contentscript_module_import.js eslint-disable no-eval, no-implied-eval 13692 -
test_ext_contentscript_order.js 17443 -
test_ext_contentscript_perf_observers.js 2238 -
test_ext_contentscript_permissions_change.js 3274 -
test_ext_contentscript_permissions_fetch.js 2687 -
test_ext_contentscript_preloading.js Extension content scripts execution happens in two stages: 1. preload content script when a request for a document is observed. 2. actual content script execution when the document has loaded. This is generally an internal implementation detail and an optimization, but if it does not happen, it may lead to difficult-to-diagnose intermittent failures as seen at https://bugzilla.mozilla.org/show_bug.cgi?id=1583700#c12 This test hooks the internal content script execution mechanism to confirm that preloading happens as expected. There are some cases where preload is triggered unexpectedly (or not), especially when null principals (e.g. sandboxed frames) are involved, or when principal-inheriting URLs (e.g. about:blank and blob:) are involved. This is not ideal but as long as we don't execute when we should not, we are good. See comment at DocInfo::PrincipalURL in WebExtensionPolicy.cpp 27518 -
test_ext_contentscript_restrictSchemes.js 4255 -
test_ext_contentscript_scriptCreated.js / 1586 -
test_ext_contentscript_slow_frame.js 13965 -
test_ext_contentscript_teardown.js 2841 -
test_ext_contentscript_triggeringPrincipal.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 43121 -
test_ext_contentscript_trustedtypes.js globals exportFunction, browserTestSendMessage, browserTestAssertEq, browserTestAssertTrue 22348 -
test_ext_contentscript_unregister_during_loadContentScript.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 2950 -
test_ext_contentscript_world.js /*"], // MAIN and ISOLATED are the only supported values. The userScripts API // may define userScripts.ExecutionWorld.USER_SCRIPT, but that should // not be permitted as a value in manifest.json. world: "USER_SCRIPT", }, ], }); ExtensionTestUtils.failOnSchemaWarnings(true); equal( normalized.error, 'Error processing content_scripts.0.world: Invalid enumeration value "USER_SCRIPT"', "Should refuse to load extension with an unsupported world value" ); Assert.deepEqual(normalized.errors, [], "Should not have any other warnings"); }); add_task(async function manifest_content_scripts_world_MAIN() { let extension = ExtensionTestUtils.loadExtension({ manifest: { content_scripts: [ { js: ["main.js"], matches: ["*:// 7929 -
test_ext_contentscript_xml_prettyprint.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 2316 -
test_ext_contentscript_xorigin_frame.js 2087 -
test_ext_contentscript_xrays.js / 7021 -
test_ext_contentScripts_register.js /file_sample_registered_styles.html"]; browser.test.assertThrows( () => { browser.contentScripts.register({ matches, unknownParam: "unexpected property", }); }, /Unexpected property "unknownParam"/, "contentScripts.register throws on unexpected properties" ); let fileScript = await browser.contentScripts.register({ css: [{ file: "registered_ext_style.css" }], matches, runAt: "document_start", }); let textScript = await browser.contentScripts.register({ css: [{ code: cssCode }], matches, runAt: "document_start", }); browser.test.onMessage.addListener(async msg => { switch (msg) { case "unregister-text": await textScript.unregister().catch(err => { browser.test.fail( `Unexpected exception while unregistering text style: ${err}` ); }); await browser.test.assertRejects( textScript.unregister(), /Content script already unregistered/, "Got the expected rejection on calling script.unregister() multiple times" ); browser.test.sendMessage("unregister-text:done"); break; case "unregister-file": await fileScript.unregister().catch(err => { browser.test.fail( `Unexpected exception while unregistering url style: ${err}` ); }); await browser.test.assertRejects( fileScript.unregister(), /Content script already unregistered/, "Got the expected rejection on calling script.unregister() multiple times" ); browser.test.sendMessage("unregister-file:done"); break; default: browser.test.fail(`Unexpected test message received: ${msg}`); } }); browser.test.sendMessage("background_ready"); } let extension = ExtensionTestUtils.loadExtension({ manifest: { permissions: [ "http://localhost/ 25345 -
test_ext_contexts.js 5633 -
test_ext_contexts_gc.js / 9032 -
test_ext_contextual_identities.js 20038 -
test_ext_contextual_identities_move.js 3427 -
test_ext_cookieBehaviors.js 22686 -
test_ext_cookies_errors.js 5858 -
test_ext_cookies_expirationDate.js 2889 -
test_ext_cookies_firstParty.js 11372 -
test_ext_cookies_onChanged.js 4673 -
test_ext_cookies_partitionKey.js This test verifies that the extension API's access to cookies is consistent with the cookies as seen by web pages under the following modes: - Every top-level document shares the same cookie jar, every subdocument of the top-level document has a distinct cookie jar tied to the site of the top-level document (dFPI). - All documents have a cookie jar keyed by the domain of the top-level document (FPI). - All cookies are in one cookie jar (classic behavior = no FPI nor dFPI) FPI and dFPI are implemented using OriginAttributes, and historically the consequence of not recognizing an origin attribute is that cookies cannot be deleted. Hence, the functionality of the cookies API is verified as follows, by the testCookiesAPI/runTestCase methods. 1. Load page that creates cookies for the top and a framed document: - "delete_me" - "edit_me" 2. cookies.getAll: get all cookies with extension API. 3. cookies.remove: Remove "delete_me" cookies with the extension API. 4. cookies.set: Edit "edit_me" cookie with the extension API. 5. Verify that the web page can see "edit_me" cookie (via document.cookie). 6. cookies.get: "edit_me" is still present. 7. cookies.remove: "edit_me" can be removed. 8. cookies.getAll: no cookies left. 40008 -
test_ext_cookies_samesite.js 3985 -
test_ext_cookies_sort.js 2157 -
test_ext_cookies_validation.js 4212 -
test_ext_cors_mozextension.js 7942 -
test_ext_csp_frame_ancestors.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 8374 -
test_ext_csp_upgrade_requests.js 1800 -
test_ext_data_collection_permissions.js Any copyright is dedicated to the Public Domain. https://creativecommons.org/publicdomain/zero/1.0/ 6361 -
test_ext_debugging_utils.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 8147 -
test_ext_dnr_across_redirects.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 3384 -
test_ext_dnr_allowAllRequests.js 44727 -
test_ext_dnr_api.js 12751 -
test_ext_dnr_cache.js 20836 -
test_ext_dnr_domainType.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 10830 -
test_ext_dnr_download.js 7696 -
test_ext_dnr_dynamic_rules.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 46506 -
test_ext_dnr_file_access.js "]; if (hasFilePermissions) { host_permissions.push("file:///*"); } let extension = ExtensionTestUtils.loadExtension({ manifest: { permissions: ["declarativeNetRequest", "declarativeNetRequestFeedback"], host_permissions, }, background: async () => { const hasFilePermissions = await browser.permissions.contains({ origins: ["file:///*"], }); const dnr = browser.declarativeNetRequest; await dnr.updateSessionRules({ addRules: [ { id: 1, condition: { excludedResourceTypes: [] }, // "allow" action does not require permissions because of the // "declarativeNetRequest" permission, which enables actions such // as "block" and "allow" without host permissions. action: { type: "allow" }, }, { id: 2, priority: 2, condition: { excludedResourceTypes: [] }, // "modifyHeaders" action requires host permissions to the request // URL and the initiator (with exceptions, see below). action: { type: "modifyHeaders", responseHeaders: [{ operation: "set", header: "x", value: "y" }], }, }, ], }); async function testMatchesRequest(request, ruleIds, description) { browser.test.assertDeepEq( ruleIds, (await dnr.testMatchOutcome(request)).matchedRules.map(m => m.ruleId), description ); } const url = "http://example.com/"; if (hasFilePermissions) { await testMatchesRequest( { url, initiator: "file:///tmp", type: "other" }, [1, 2], "Can modify requests from file:-initiator, with permission" ); } else { await testMatchesRequest( { url, initiator: "file:///tmp", type: "other" }, [1], "Cannot modify requests from file:-initiator, without permission" ); } // main_frame/sub_frame are exempt from initiator checks by design, for // context see: https://bugzilla.mozilla.org/show_bug.cgi?id=1825824#c2 await testMatchesRequest( { url, initiator: "file:///tmp", type: "main_frame" }, [1, 2], "Can match requests from file:-initiator for main_frame requests" ); await testMatchesRequest( { url, initiator: "file:///tmp", type: "sub_frame" }, [1, 2], "Can match requests from file:-initiator for sub_frame requests" ); // Regardless of initiator, file:-requests themselves cannot be matched by // DNR, both by design and in its implementation, which is only hooked up // to http(s) requests via NetworkIntegration.startDNREvaluation. // testMatchesRequest can artifically match file:-URLs but that is not // supported and should be fixed when we fix bug 1827422. await testMatchesRequest( { url: "file:///", initiator: "file:///tmp", type: "sub_frame" }, [1], // Ideally [], would be fixed by bug 1827422. "Cannot match file:-requests from file." ); await testMatchesRequest( { url: "file:///", type: "sub_frame" }, [1], // Ideally [], would be fixed by bug 1827422. "Cannot match file:-requests from file." ); browser.test.notifyPass(); }, }); await extension.startup(); await extension.awaitFinish(); await extension.unload(); } add_task(async function dnr_without_file_permissions() { await test_dnr_with_file_initiator(/* hasFilePermissions 3988 -
test_ext_dnr_modifyHeaders.js merge 37492 -
test_ext_dnr_private_browsing.js 4388 -
test_ext_dnr_redirect_main_frame.js 2818 -
test_ext_dnr_redirect_transform.js 25874 -
test_ext_dnr_regexFilter.js 19781 -
test_ext_dnr_regexFilter_limits.js 20032 -
test_ext_dnr_session_rules.js 40900 -
test_ext_dnr_startup_cache.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 19430 -
test_ext_dnr_static_rules.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 45083 -
test_ext_dnr_static_rules_limits.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 15913 -
test_ext_dnr_system_restrictions.js 10855 -
test_ext_dnr_tabIds.js 8448 -
test_ext_dnr_testMatchOutcome.js 56799 -
test_ext_dnr_update_static_rules.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 17544 -
test_ext_dnr_urlFilter.js 36351 -
test_ext_dnr_webrequest.js 9866 -
test_ext_dnr_without_webrequest.js 33216 -
test_ext_dns.js PROXYCONFIG_MANUAL 4583 -
test_ext_downloads.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1181 -
test_ext_downloads_blob_url.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 5782 -
test_ext_downloads_cookies.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 7922 -
test_ext_downloads_cookieStoreId.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 14663 -
test_ext_downloads_download.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 18828 -
test_ext_downloads_eventpage.js 4815 -
test_ext_downloads_misc.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 35788 -
test_ext_downloads_partitionKey.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 5738 -
test_ext_downloads_private.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 10701 -
test_ext_downloads_resume.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 6135 -
test_ext_downloads_search.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 19790 -
test_ext_downloads_urlencoded.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 8817 -
test_ext_error_location.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1341 -
test_ext_eventpage_idle.js 28356 -
test_ext_eventpage_messaging.js 10096 -
test_ext_eventpage_messaging_wakeup.js 11518 -
test_ext_eventpage_settings.js 4915 -
test_ext_eventpage_warning.js 2711 -
test_ext_experiments.js globals browser 10671 -
test_ext_experiments_console.js globals ExtensionAPI 6215 -
test_ext_experiments_glean.js globals ExtensionAPI 3620 -
test_ext_extension.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2131 -
test_ext_extension_content_telemetry.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 6371 -
test_ext_extension_page_navigated.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 10673 -
test_ext_extension_startup_failure.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1274 -
test_ext_extension_startup_telemetry.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2964 -
test_ext_extensionPreferencesManager.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 24750 -
test_ext_extensionSettingsStore.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 30023 -
test_ext_file_access.js "], js: ["content_script.js"], }, ], }, files: { "content_script.js": async () => { let response = await fetch(document.URL); browser.test.assertEq(200, response.status, "expected load"); let responseText = await response.text(); browser.test.assertTrue( responseText.includes("<p>Page</p>"), `expected file content in response of ${response.url}` ); // Now with content.fetch: response = await content.fetch(document.URL); browser.test.assertEq(200, response.status, "expected load (content)"); browser.test.sendMessage("done"); }, }, }); await extension.startup(); let contentPage = await ExtensionTestUtils.loadContentPage(FILE_DUMMY_URL); await extension.awaitMessage("done"); await contentPage.close(); await extension.unload(); }); // XHR/fetch for other file is not allowed, even with file://-permissions. add_task(async function content_script_xhr_to_other_file_not_allowed() { let extension = ExtensionTestUtils.loadExtension({ manifest: { permissions: ["file:///*"], content_scripts: [ { matches: ["file:///*"], js: ["content_script.js"], }, ], }, files: { "content_script.js": async () => { let otherFileUrl = document.URL.replace( "dummy_page.html", "file_sample.html" ); let x = new XMLHttpRequest(); x.open("GET", otherFileUrl); await new Promise(resolve => { x.onloadend = resolve; x.send(); }); browser.test.assertEq(0, x.status, "expected error"); browser.test.assertEq("", x.responseText, "request should fail"); // Now with content.XMLHttpRequest. x = new content.XMLHttpRequest(); x.open("GET", otherFileUrl); x.onloadend = () => { browser.test.assertEq(0, x.status, "expected error (content)"); browser.test.sendMessage("done"); }; x.send(); }, }, }); await extension.startup(); let contentPage = await ExtensionTestUtils.loadContentPage(FILE_DUMMY_URL); await extension.awaitMessage("done"); await contentPage.close(); await extension.unload(); }); // "file://" permission does not grant access to files in the extension page. add_task(async function file_access_from_extension_page_not_allowed() { let extension = ExtensionTestUtils.loadExtension({ manifest: { permissions: ["file:///*"], description: FILE_DUMMY_URL, }, async background() { const FILE_DUMMY_URL = browser.runtime.getManifest().description; await browser.test.assertRejects( fetch(FILE_DUMMY_URL), /NetworkError when attempting to fetch resource/, "block request to file from background page despite file permission" ); // Regression test for bug 1420296 . await browser.test.assertRejects( fetch(FILE_DUMMY_URL, { mode: "same-origin" }), /NetworkError when attempting to fetch resource/, "block request to file from background page despite 'same-origin' mode" ); browser.test.sendMessage("done"); }, }); await extension.startup(); await extension.awaitMessage("done"); await extension.unload(); }); // webRequest listeners should see subresource requests from file:-principals. add_task(async function webRequest_script_request_from_file_principals() { // Extension without file:-permission should not see the request. let extensionWithoutFilePermission = ExtensionTestUtils.loadExtension({ manifest: { permissions: ["http://example.net/", "webRequest"], }, background() { browser.webRequest.onBeforeRequest.addListener( details => { browser.test.fail(`Unexpected request from ${details.originUrl}`); }, { urls: ["http://example.net/intercept_by_webRequest.js"] } ); }, }); // Extension with <all_urls> (which matches the resource URL at example.net // and the origin at file:// 6115 -
test_ext_geckoProfiler_control.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 7557 -
test_ext_geckoProfiler_schema.js 1932 -
test_ext_geturl.js 5005 -
test_ext_i18n.js / 19341 -
test_ext_i18n_css.js / 5099 -
test_ext_i18n_system.js / 2641 -
test_ext_idle.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 9624 -
test_ext_incognito.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 3436 -
test_ext_indexedDB_principal.js 4904 -
test_ext_ipcBlob.js / 4240 -
test_ext_json_parser.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 5002 -
test_ext_l10n.js 4926 -
test_ext_localStorage.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1411 -
test_ext_management.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 9482 -
test_ext_management_policy.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 4520 -
test_ext_management_uninstall_self.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 4081 -
test_ext_manifest.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 17471 -
test_ext_manifest_content_security_policy.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 5112 -
test_ext_manifest_incognito.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2331 -
test_ext_manifest_minimum_chrome_version.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 419 -
test_ext_manifest_minimum_opera_version.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 417 -
test_ext_manifest_themes.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1058 -
test_ext_MessageManagerProxy.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2865 -
test_ext_messaging_startup.js 7245 -
test_ext_native_messaging.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 33997 -
test_ext_native_messaging_concurrent.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 3507 -
test_ext_native_messaging_perf.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 3764 -
test_ext_native_messaging_portal.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 13068 -
test_ext_native_messaging_portal_real.js Requires Ubuntu 22.04 and higher, depends on https://launchpad.net/bugs/1968215 Future Ubuntu versions may depend on xdg-native-messaging-proxy instead, see https://bugzilla.mozilla.org/show_bug.cgi?id=1955255 6118 -
test_ext_native_messaging_unresponsive.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2107 -
test_ext_networkStatus.js 6163 -
test_ext_notifications_incognito.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2700 -
test_ext_notifications_unsupported.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 1405 -
test_ext_optional_host_permissions.js 1796 -
test_ext_permission_warnings.js 26590 -
test_ext_permission_xhr.js eslint-disable mozilla/balanced-listeners 7051 -
test_ext_permissions.js 39389 -
test_ext_permissions_api.js 31634 -
test_ext_permissions_migrate.js 11233 -
test_ext_permissions_optional_only.js 13387 -
test_ext_permissions_uninstall.js 10468 -
test_ext_persistent_events.js global EventManager 63692 -
test_ext_privacy.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 28851 -
test_ext_privacy_disable.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 5031 -
test_ext_privacy_nonPersistentCookies.js 1307 -
test_ext_privacy_update.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 4300 -
test_ext_proxy_authorization_via_proxyinfo.js 3283 -
test_ext_proxy_bypass_localhost.js 5285 -
test_ext_proxy_config.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 20429 -
test_ext_proxy_containerIsolation.js 1633 -
test_ext_proxy_http3.js Sets up HTTP3 proxy configuration for extension tests 4036 -
test_ext_proxy_onauthrequired.js 8602 -
test_ext_proxy_settings.js 2894 -
test_ext_proxy_socks.js globals TCPServerSocket 16686 -
test_ext_proxy_speculative.js 1503 -
test_ext_proxy_startup.js 7303 -
test_ext_redirects.js 20637 -
test_ext_runtime_connect_no_receiver.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 747 -
test_ext_runtime_getBackgroundPage.js 4351 -
test_ext_runtime_getBrowserInfo.js 963 -
test_ext_runtime_getContexts.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 4959 -
test_ext_runtime_getPlatformInfo.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 932 -
test_ext_runtime_id.js 1160 -
test_ext_runtime_messaging_self.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2847 -
test_ext_runtime_onInstalled_and_onStartup.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 15441 -
test_ext_runtime_onPerformanceWarning.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2939 -
test_ext_runtime_ports.js 2112 -
test_ext_runtime_ports_gc.js globals ExtensionAPI 4950 -
test_ext_runtime_sendMessage.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 14273 -
test_ext_runtime_sendMessage_args.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 4189 -
test_ext_runtime_sendMessage_errors.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2105 -
test_ext_runtime_sendMessage_multiple.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2418 -
test_ext_runtime_sendMessage_no_receiver.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2839 -
test_ext_same_site_cookies.js Description of the test: (1) We load an image from mochi.test which sets a same site cookie (2) We have the web extension perform an XHR request to mochi.test (3) We verify the web-extension can access the same-site cookie 3993 -
test_ext_same_site_redirects.js This test tests various redirection scenarios, and checks whether sameSite cookies are sent. The file has the following tests: - verify_firstparty_web_behavior - base case, confirms normal web behavior. - samesite_is_foreign_without_host_permissions - wildcard_host_permissions_enable_samesite_cookies - explicit_host_permissions_enable_samesite_cookies - some_host_permissions_enable_some_samesite_cookies 8045 -
test_ext_sandbox_var.js 949 -
test_ext_sandboxed_resource.js eslint-disable-next-line mozilla/balanced-listeners 3426 -
test_ext_schema.js 2195 -
test_ext_schemas.js 62827 -
test_ext_schemas_allowed_contexts.js 4961 -
test_ext_schemas_async.js 9123 -
test_ext_schemas_interactive.js globals ExtensionAPI 4327 -
test_ext_schemas_manifest_permissions.js 4719 -
test_ext_schemas_privileged.js 4007 -
test_ext_schemas_revoke.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 12220 -
test_ext_schemas_roots.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 5228 -
test_ext_schemas_versioned.js 23454 -
test_ext_script_filenames.js 10779 -
test_ext_scripting_contentScripts.js "], granted_host_permissions: true, ...manifestProps, }, temporarilyInstalled: true, ...otherProps, }); }; add_task(async function test_registerContentScripts_runAt() { let extension = makeExtension({ async background() { const TEST_CASES = [ { title: "runAt: document_idle", params: [ { id: "script-idle", js: ["script-idle.js"], matches: ["http:// 16160 -
test_ext_scripting_contentScripts_css.js "], granted_host_permissions: true, ...manifestProps, }, allowInsecureRequests: true, temporarilyInstalled: true, ...otherProps, }); }; add_task(async function test_registerContentScripts_css() { let extension = makeExtension({ async background() { // This script is injected in all frames after the styles so that we can // verify the registered styles. const checkAppliedStyleScript = { id: "check-applied-styles", allFrames: true, matches: ["http:// 19567 -
test_ext_scripting_contentScripts_file.js "] }, { id: "script-3", matches: ["file:// 2116 -
test_ext_scripting_mv2.js 552 -
test_ext_scripting_persistAcrossSessions.js / 25359 -
test_ext_scripting_startupCache.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 6152 -
test_ext_scripting_updateContentScripts.js "], granted_host_permissions: true, ...manifestProps, }, temporarilyInstalled: true, ...otherProps, }); }; add_task(async function test_scripting_updateContentScripts() { let extension = makeExtension({ async background() { const script = { id: "a-script", js: ["script-1.js"], matches: ["http:// 3327 -
test_ext_secfetch.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 10656 -
test_ext_service_worker_messaging.js Any copyright is dedicated to the Public Domain. https://creativecommons.org/publicdomain/zero/1.0/ 3664 -
test_ext_shadowdom.js / 1627 -
test_ext_shared_array_buffer.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 3608 -
test_ext_shared_workers.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 1246 -
test_ext_shutdown_cleanup.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 966 -
test_ext_simple.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 5516 -
test_ext_startup_cache.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 5338 -
test_ext_startup_cache_telemetry.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 5038 -
test_ext_startup_perf.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2438 -
test_ext_startup_request_handler.js 1590 -
test_ext_startupData.js 1314 -
test_ext_storage_content_local.js 1428 -
test_ext_storage_content_sync.js 763 -
test_ext_storage_content_sync_kinto.js 769 -
test_ext_storage_idb_data_migration.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 23165 -
test_ext_storage_local.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2647 -
test_ext_storage_local_corrupted_idb.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 13963 -
test_ext_storage_managed.js 7502 -
test_ext_storage_managed_policy.js 1117 -
test_ext_storage_quota_exceeded_errors.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2607 -
test_ext_storage_sanitizer.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 3679 -
test_ext_storage_session.js 7465 -
test_ext_storage_session_on_crash.js 2095 -
test_ext_storage_sync.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2994 -
test_ext_storage_sync_kinto.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 74157 -
test_ext_storage_sync_kinto_crypto.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 3215 -
test_ext_storage_tab.js 6996 -
test_ext_storage_telemetry.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 13452 -
test_ext_tab_teardown.js 3001 -
test_ext_telemetry.js 25758 -
test_ext_test_mock.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 2166 -
test_ext_test_wrapper.js 2033 -
test_ext_theme_experiments.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 3031 -
test_ext_theme_startupData.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 9780 -
test_ext_trustworthy_origin.js This test is asserting that moz-extension: URLs are recognized as trustworthy local origins 508 -
test_ext_unknown_permissions.js 1579 -
test_ext_unlimitedStorage.js 5539 -
test_ext_unload_frame.js 7110 -
test_ext_urlclassifier.js 4779 -
test_ext_userScripts.js / 18738 -
test_ext_userScripts_exports.js /file_sample.html"], scriptMetadata, }); if (messageListener) { browser.runtime.onMessage.addListener(messageListener); } browser.test.sendMessage("background-ready"); } function notifyFinish(failureReason) { browser.test.assertEq( undefined, failureReason, "should be completed without errors" ); browser.test.sendMessage("test_userScript_APIMethod:done"); } function assertTrue(val, message) { browser.test.assertTrue(val, message); if (!val) { browser.test.sendMessage("test_userScript_APIMethod:done"); throw message; } } let extension = ExtensionTestUtils.loadExtension({ manifest: { permissions: ["http://localhost/ 31549 -
test_ext_userScripts_mv3_availability.js 15991 -
test_ext_userScripts_mv3_csp.js 12364 -
test_ext_userScripts_mv3_injection.js 11570 -
test_ext_userScripts_mv3_messaging.js 23095 -
test_ext_userScripts_mv3_persistence.js 21341 -
test_ext_userScripts_mv3_worlds.js 14618 -
test_ext_userScripts_register.js 3504 -
test_ext_wasm.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 3912 -
test_ext_web_accessible_resources.js 4720 -
test_ext_web_accessible_resources_matches.js 14517 -
test_ext_webRequest_auth.js 17663 -
test_ext_webRequest_cached.js /file_sample.html?r=*"], }, ["blocking", "responseHeaders"] ); browser.webRequest.onResponseStarted.addListener( details => { let needle = details.fromCache ? testHeaders[1] : testHeaders[0]; let header = details.responseHeaders.filter(header => { browser.test.log(`header ${header.name} = ${header.value}`); return header.name == needle.name && header.value == needle.value; }); browser.test.assertEq( header.length, 1, "header exists with correct value" ); if (details.fromCache) { browser.test.sendMessage("from-cache"); } }, { urls: ["http://example.com/ 10159 -
test_ext_webRequest_cancelWithReason.js 1859 -
test_ext_webRequest_containerIsolation.js 1654 -
test_ext_webRequest_download.js 1242 -
test_ext_webRequest_eventPage_StreamFilter.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 10792 -
test_ext_webRequest_filter_urls.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 862 -
test_ext_webRequest_filterResponseData.js 24228 -
test_ext_webRequest_filterTypes.js 2745 -
test_ext_webRequest_from_extension_page.js 1743 -
test_ext_webRequest_handlerBehaviorChanged.js 4585 -
test_ext_webRequest_host.js 2525 -
test_ext_webRequest_incognito.js 2636 -
test_ext_webRequest_mergecsp.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 16018 -
test_ext_webRequest_permission.js globals content 4444 -
test_ext_webRequest_redirect_mozextension.js ", ], web_accessible_resources: ["test.html"], }, files: { "test.html": '<!DOCTYPE html><script src="test.js"></script>', "test.js": () => { browser.test.assertTrue( browser.webRequest, "webRequest API should be available" ); browser.test.sendMessage("test_done"); }, }, background: () => { browser.webRequest.onBeforeRequest.addListener( () => { return { redirectUrl: browser.runtime.getURL("test.html"), }; }, { urls: ["*:// 1199 -
test_ext_webRequest_redirect_StreamFilter.js /*"], }, background() { const closeCounts = {}; browser.webRequest.onBeforeRequest.addListener( details => { let expectedError = "Channel redirected"; if (details.type === "main_frame" || details.type === "sub_frame") { // Message differs for the reason stated at the top of this file. // TODO bug 1683862: Make error message more accurate. expectedError = "Invalid request ID"; } closeCounts[details.requestId] = 0; let filter = browser.webRequest.filterResponseData(details.requestId); filter.onstart = () => { filter.disconnect(); browser.test.fail("Unexpected filter.onstart"); }; filter.onerror = function () { closeCounts[details.requestId]++; browser.test.assertEq(expectedError, filter.error, "filter.error"); }; }, { urls: ["*:// 4602 -
test_ext_webRequest_redirectProperty.js 1870 -
test_ext_webRequest_requestSize.js /*"] } ); browser.webRequest.onCompleted.addListener( async details => { browser.test.assertTrue(details.requestSize > 100, "have requestSize"); browser.test.assertTrue( details.responseSize > 100, "have responseSize" ); browser.test.log(`details.requestSize: ${details.requestSize}`); browser.test.log(`details.responseSize: ${details.responseSize}`); browser.test.sendMessage("done"); }, { urls: ["*:// 1729 -
test_ext_webRequest_responseBody.js eslint-disable mozilla/no-arbitrary-setTimeout 18963 -
test_ext_webRequest_restrictedHeaders.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 7383 -
test_ext_webRequest_set_cookie.js Check that all the cookies described by `prefixes` are in the cookie jar. @param {Array.string} prefixes Zero or more prefixes, describing cookies that are expected to be set in the current cookie jar. Each prefix describes both a cookie name and corresponding value. For example, if the string "ext" is passed as an argument, then this function expects to see a cookie called "extcookie" and corresponding value of "extvalue". 10249 -
test_ext_webRequest_startup.js That that we get the expected events @param {Extension} extension @param {Map} events @param {object} expect @param {boolean} expect.background delayed startup event expected @param {boolean} expect.started background has already started @param {boolean} expect.delayedStart startup is delayed, notify start and expect the starting event @param {boolean} expect.request wait for the request event 23017 -
test_ext_webRequest_startup_StreamFilter.js 1927 -
test_ext_webRequest_style_cache.js 1348 -
test_ext_webRequest_suspend.js 7930 -
test_ext_webRequest_type_json.js 2781 -
test_ext_webRequest_urlclassification.js If this test fails, likely nsIClassifiedChannel has added or changed a CLASSIFIED_* flag. Those changes must be in sync with ChannelWrapper.webidl/cpp and the web_request.json schema file. 1144 -
test_ext_webRequest_userContextId.js 1164 -
test_ext_webRequest_viewsource.js 2714 -
test_ext_webRequest_viewsource_StreamFilter.js /dummy"] }, ["blocking"] ); browser.webRequest.onBeforeRequest.addListener( details => { browser.test.assertEq(`${BASE_URL}/redir`, details.url, "Got redirect"); let filter = browser.webRequest.filterResponseData(details.requestId); filter.onstop = () => { filter.disconnect(); browser.test.fail("Unexpected onstop for redirect"); browser.test.sendMessage("redirect_done"); }; filter.onerror = () => { browser.test.assertEq( // TODO bug 1683862: must be "Channel redirected", but it is not // because document requests are handled differently compared to // other requests, see the comment at the top of // test_ext_webRequest_redirect_StreamFilter.js. "Invalid request ID", filter.error, "Expected error in filter.onerror" ); browser.test.sendMessage("redirect_done"); }; }, { urls: ["*:// 5136 -
test_ext_webRequest_webSocket.js 1484 -
test_ext_webSocket.js "] }]; let extension = ExtensionTestUtils.loadExtension({ manifest: { manifest_version, permissions: ["webRequest", "webRequestBlocking"], host_permissions: ["<all_urls>"], granted_host_permissions: true, web_accessible_resources, content_security_policy, content_scripts: [ { matches: ["http:// 4595 -
test_ext_xhr_capabilities.js 1983 -
test_ext_xhr_cors.js 7076 -
test_extension_permissions_migrate_kvstore_path.js /*"], }; const expectedPermsAddon02 = { permissions: ["proxy"], origins: ["https:// 7675 -
test_extension_permissions_migration.js fileDeleted 2765 -
test_extension_process_alive.js 12414 -
test_ExtensionShortcutKeyMap.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 4771 -
test_ExtensionTaskScheduler.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 9777 -
test_extensionUtils.js Any copyright is dedicated to the Public Domain. https://creativecommons.org/publicdomain/zero/1.0/ 2025 -
test_load_all_api_modules.js 6827 -
test_locale_converter.js 4098 -
test_locale_data.js 5464 -
test_MatchPattern.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 22058 -
test_native_manifests.js 18887 -
test_OriginControls.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 22110 -
test_process_crash_telemetry.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 4145 -
test_proxy_failover.js 9463 -
test_proxy_incognito.js eslint no-unused-vars: ["error", {"args": "none", "varsIgnorePattern": "^(FindProxyForURL)$"}] 2916 -
test_proxy_info_results.js 14132 -
test_proxy_listener.js 8222 -
test_proxy_userContextId.js 1263 -
test_QuarantinedDomains.js 11788 -
test_resistfingerprinting_exempt.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 996 -
test_StorageSyncService.js Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ 8687 -
test_WebExtensionContentScript.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 14599 -
test_WebExtensionContentScript_mozextMatchWarning.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 8090 -
test_WebExtensionPolicy.js -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- 16095 -
test_webRequest_ancestors.js 2312 -
test_webRequest_cookies.js 2850 -
test_webRequest_filtering.js /*_style_*"]) }; WebRequest.onBeforeRequest.addListener(onBeforeRequest, filter, ["blocking"]); WebRequest.onBeforeSendHeaders.addListener(onBeforeSendHeaders, filter, [ "blocking", ]); WebRequest.onResponseStarted.addListener(onResponseStarted, filter); await openAndCloseContentPage(URL); compareLists(requested, expected_urls, "requested"); compareLists(sendHeaders, expected_urls, "sendHeaders"); compareLists(completed, expected_urls, "completed"); WebRequest.onBeforeRequest.removeListener(onBeforeRequest); WebRequest.onBeforeSendHeaders.removeListener(onBeforeSendHeaders); WebRequest.onResponseStarted.removeListener(onResponseStarted); }); add_task(async function filter_types() { resetExpectations(); let filter = { types: ["stylesheet"] }; WebRequest.onBeforeRequest.addListener(onBeforeRequest, filter, ["blocking"]); WebRequest.onBeforeSendHeaders.addListener(onBeforeSendHeaders, filter, [ "blocking", ]); WebRequest.onResponseStarted.addListener(onResponseStarted, filter); await openAndCloseContentPage(URL); compareLists(requested, expected_urls, "requested"); compareLists(sendHeaders, expected_urls, "sendHeaders"); compareLists(completed, expected_urls, "completed"); WebRequest.onBeforeRequest.removeListener(onBeforeRequest); WebRequest.onBeforeSendHeaders.removeListener(onBeforeSendHeaders); WebRequest.onResponseStarted.removeListener(onResponseStarted); }); add_task(async function filter_windowId() { resetExpectations(); // Check that adding windowId will exclude non-matching requests. // test_ext_webrequest_filter.html provides coverage for matching requests. let filter = { urls: new MatchPatternSet(["*:// 5857 -
test_wpt_test_events.js 7895 -
webidl-api -
xpcshell-common-e10s.toml 360 -
xpcshell-common.toml 18145 -
xpcshell-content.toml 1053 -
xpcshell-e10s.toml 1358 -
xpcshell-legacy-ep.toml 866 -
xpcshell-remote.toml 2026 -
xpcshell-serviceworker.toml 1251 -
xpcshell.toml 4261 -