From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../extensions/test/xpcshell/test_ext_simple.js | 208 +++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 toolkit/components/extensions/test/xpcshell/test_ext_simple.js (limited to 'toolkit/components/extensions/test/xpcshell/test_ext_simple.js') diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_simple.js b/toolkit/components/extensions/test/xpcshell/test_ext_simple.js new file mode 100644 index 0000000000..ad74d80ede --- /dev/null +++ b/toolkit/components/extensions/test/xpcshell/test_ext_simple.js @@ -0,0 +1,208 @@ +/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set sts=2 sw=2 et tw=80: */ +"use strict"; + +AddonTestUtils.init(this); +AddonTestUtils.overrideCertDB(); +AddonTestUtils.createAppInfo( + "xpcshell@tests.mozilla.org", + "XPCShell", + "1", + "43" +); + +add_task(async function test_simple() { + let extensionData = { + manifest: { + name: "Simple extension test", + version: "1.0", + manifest_version: 2, + description: "", + }, + }; + + let extension = ExtensionTestUtils.loadExtension(extensionData); + await extension.startup(); + await extension.unload(); +}); + +add_task(async function test_manifest_V3_disabled() { + Services.prefs.setBoolPref("extensions.manifestV3.enabled", false); + let extensionData = { + manifest: { + manifest_version: 3, + }, + }; + + let extension = ExtensionTestUtils.loadExtension(extensionData); + await Assert.rejects( + extension.startup(), + /Unsupported manifest version: 3/, + "manifest V3 cannot be loaded" + ); + Services.prefs.clearUserPref("extensions.manifestV3.enabled"); +}); + +add_task(async function test_manifest_V3_enabled() { + Services.prefs.setBoolPref("extensions.manifestV3.enabled", true); + let extensionData = { + manifest: { + manifest_version: 3, + }, + }; + + let extension = ExtensionTestUtils.loadExtension(extensionData); + await extension.startup(); + equal(extension.extension.manifest.manifest_version, 3, "manifest V3 loads"); + await extension.unload(); + Services.prefs.clearUserPref("extensions.manifestV3.enabled"); +}); + +add_task(async function test_background() { + function background() { + browser.test.log("running background script"); + + browser.test.onMessage.addListener((x, y) => { + browser.test.assertEq(x, 10, "x is 10"); + browser.test.assertEq(y, 20, "y is 20"); + + browser.test.notifyPass("background test passed"); + }); + + browser.test.sendMessage("running", 1); + } + + let extensionData = { + background, + manifest: { + name: "Simple extension test", + version: "1.0", + manifest_version: 2, + description: "", + }, + }; + + let extension = ExtensionTestUtils.loadExtension(extensionData); + + let [, x] = await Promise.all([ + extension.startup(), + extension.awaitMessage("running"), + ]); + equal(x, 1, "got correct value from extension"); + + extension.sendMessage(10, 20); + await extension.awaitFinish(); + await extension.unload(); +}); + +add_task(async function test_extensionTypes() { + let extensionData = { + background: function () { + browser.test.assertEq( + typeof browser.extensionTypes, + "object", + "browser.extensionTypes exists" + ); + browser.test.assertEq( + typeof browser.extensionTypes.RunAt, + "object", + "browser.extensionTypes.RunAt exists" + ); + browser.test.notifyPass("extentionTypes test passed"); + }, + }; + + let extension = ExtensionTestUtils.loadExtension(extensionData); + + await extension.startup(); + await extension.awaitFinish(); + await extension.unload(); +}); + +add_task(async function test_policy_temporarilyInstalled() { + await AddonTestUtils.promiseStartupManager(); + + let extensionData = { + manifest: { + manifest_version: 2, + }, + }; + + async function runTest(useAddonManager) { + let extension = ExtensionTestUtils.loadExtension({ + ...extensionData, + useAddonManager, + }); + + const expected = useAddonManager === "temporary"; + await extension.startup(); + const { temporarilyInstalled } = WebExtensionPolicy.getByID(extension.id); + equal( + temporarilyInstalled, + expected, + `Got the expected WebExtensionPolicy.temporarilyInstalled value on "${useAddonManager}"` + ); + await extension.unload(); + } + + await runTest("temporary"); + await runTest("permanent"); +}); + +add_task(async function test_manifest_allowInsecureRequests() { + Services.prefs.setBoolPref("extensions.manifestV3.enabled", true); + let extensionData = { + allowInsecureRequests: true, + manifest: { + manifest_version: 3, + }, + }; + + let extension = ExtensionTestUtils.loadExtension(extensionData); + await extension.startup(); + equal( + extension.extension.manifest.content_security_policy.extension_pages, + `script-src 'self'`, + "insecure allowed" + ); + await extension.unload(); + Services.prefs.clearUserPref("extensions.manifestV3.enabled"); +}); + +add_task(async function test_manifest_allowInsecureRequests_throws() { + Services.prefs.setBoolPref("extensions.manifestV3.enabled", true); + let extensionData = { + allowInsecureRequests: true, + manifest: { + manifest_version: 3, + content_security_policy: { + extension_pages: `script-src 'self'`, + }, + }, + }; + + await Assert.throws( + () => ExtensionTestUtils.loadExtension(extensionData), + /allowInsecureRequests cannot be used with manifest.content_security_policy/, + "allowInsecureRequests with content_security_policy cannot be loaded" + ); + Services.prefs.clearUserPref("extensions.manifestV3.enabled"); +}); + +add_task(async function test_gecko_android_key_in_applications() { + const extensionData = { + manifest: { + manifest_version: 2, + applications: { + gecko_android: {}, + }, + }, + }; + const extension = ExtensionTestUtils.loadExtension(extensionData); + + await Assert.rejects( + extension.startup(), + /applications: Property "gecko_android" is unsupported by Firefox/, + "expected applications.gecko_android to be invalid" + ); +}); -- cgit v1.2.3