summaryrefslogtreecommitdiffstats
path: root/browser/modules/test/unit/test_FirefoxBridgeExtensionUtils.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/modules/test/unit/test_FirefoxBridgeExtensionUtils.js')
-rw-r--r--browser/modules/test/unit/test_FirefoxBridgeExtensionUtils.js461
1 files changed, 265 insertions, 196 deletions
diff --git a/browser/modules/test/unit/test_FirefoxBridgeExtensionUtils.js b/browser/modules/test/unit/test_FirefoxBridgeExtensionUtils.js
index 77db0d8286..d4dcd4fad6 100644
--- a/browser/modules/test/unit/test_FirefoxBridgeExtensionUtils.js
+++ b/browser/modules/test/unit/test_FirefoxBridgeExtensionUtils.js
@@ -7,9 +7,10 @@ const { FirefoxBridgeExtensionUtils } = ChromeUtils.importESModule(
"resource:///modules/FirefoxBridgeExtensionUtils.sys.mjs"
);
-const FIREFOX_SHELL_OPEN_COMMAND_PATH = "firefox\\shell\\open\\command";
-const FIREFOX_PRIVATE_SHELL_OPEN_COMMAND_PATH =
- "firefox-private\\shell\\open\\command";
+const OLD_FIREFOX_SHELL_OPEN_COMMAND_PATH = `${FirefoxBridgeExtensionUtils.OLD_PUBLIC_PROTOCOL}\\shell\\open\\command`;
+const OLD_FIREFOX_PRIVATE_SHELL_OPEN_COMMAND_PATH = `${FirefoxBridgeExtensionUtils.OLD_PRIVATE_PROTOCOL}\\shell\\open\\command`;
+const FIREFOX_SHELL_OPEN_COMMAND_PATH = `${FirefoxBridgeExtensionUtils.PUBLIC_PROTOCOL}\\shell\\open\\command`;
+const FIREFOX_PRIVATE_SHELL_OPEN_COMMAND_PATH = `${FirefoxBridgeExtensionUtils.PRIVATE_PROTOCOL}\\shell\\open\\command`;
class StubbedRegistryKey {
#children;
@@ -145,206 +146,274 @@ class StubbedDeleteBridgeProtocolRegistryEntryHelper {
}
add_task(async function test_DeleteWhenSameFirefoxInstall() {
- const applicationPath = "testPath";
-
- const firefoxEntries = new Map();
- firefoxEntries.set("", `\"${applicationPath}\" -osint -url \"%1\"`);
-
- const firefoxProtocolRegKey = new StubbedRegistryKey(
- new Map(),
- firefoxEntries
- );
-
- const firefoxPrivateEntries = new Map();
- firefoxPrivateEntries.set(
- "",
- `\"${applicationPath}\" -osint -private-window \"%1\"`
- );
- const firefoxPrivateProtocolRegKey = new StubbedRegistryKey(
- new Map(),
- firefoxPrivateEntries
- );
-
- const children = new Map();
- children.set(FIREFOX_SHELL_OPEN_COMMAND_PATH, firefoxProtocolRegKey);
- children.set(
- FIREFOX_PRIVATE_SHELL_OPEN_COMMAND_PATH,
- firefoxPrivateProtocolRegKey
- );
-
- const registryRootKey = new StubbedRegistryKey(children, new Map());
-
- const stubbedDeleteBridgeProtocolRegistryHelper =
- new StubbedDeleteBridgeProtocolRegistryEntryHelper({
- applicationPath,
- registryRootKey,
- });
-
- FirefoxBridgeExtensionUtils.maybeDeleteBridgeProtocolRegistryEntries(
- stubbedDeleteBridgeProtocolRegistryHelper
- );
-
- ok(registryRootKey.wasCloseCalled, "Root key closed");
-
- ok(firefoxProtocolRegKey.wasOpenedForRead, "Firefox key opened");
- ok(firefoxProtocolRegKey.wasCloseCalled, "Firefox key closed");
- ok(
- registryRootKey.isChildDeleted("firefox"),
- "Firefox protocol registry entry deleted"
- );
-
- ok(
- firefoxPrivateProtocolRegKey.wasOpenedForRead,
- "Firefox private key opened"
- );
- ok(firefoxPrivateProtocolRegKey.wasCloseCalled, "Firefox private key closed");
- ok(
- registryRootKey.isChildDeleted("firefox-private"),
- "Firefox private protocol registry entry deleted"
- );
+ for (let protocols of [
+ [
+ FirefoxBridgeExtensionUtils.OLD_PUBLIC_PROTOCOL,
+ FirefoxBridgeExtensionUtils.OLD_PRIVATE_PROTOCOL,
+ OLD_FIREFOX_SHELL_OPEN_COMMAND_PATH,
+ OLD_FIREFOX_PRIVATE_SHELL_OPEN_COMMAND_PATH,
+ ],
+ [
+ FirefoxBridgeExtensionUtils.PUBLIC_PROTOCOL,
+ FirefoxBridgeExtensionUtils.PRIVATE_PROTOCOL,
+ FIREFOX_SHELL_OPEN_COMMAND_PATH,
+ FIREFOX_PRIVATE_SHELL_OPEN_COMMAND_PATH,
+ ],
+ ]) {
+ let [publicProtocol, privateProtocol, publicPath, privatePath] = protocols;
+ const applicationPath = "testPath";
+
+ const firefoxEntries = new Map();
+ firefoxEntries.set("", `\"${applicationPath}\" -osint -url \"%1\"`);
+
+ const firefoxProtocolRegKey = new StubbedRegistryKey(
+ new Map(),
+ firefoxEntries
+ );
+
+ const firefoxPrivateEntries = new Map();
+ firefoxPrivateEntries.set(
+ "",
+ `\"${applicationPath}\" -osint -private-window \"%1\"`
+ );
+ const firefoxPrivateProtocolRegKey = new StubbedRegistryKey(
+ new Map(),
+ firefoxPrivateEntries
+ );
+
+ const children = new Map();
+ children.set(publicPath, firefoxProtocolRegKey);
+ children.set(privatePath, firefoxPrivateProtocolRegKey);
+
+ const registryRootKey = new StubbedRegistryKey(children, new Map());
+
+ const stubbedDeleteBridgeProtocolRegistryHelper =
+ new StubbedDeleteBridgeProtocolRegistryEntryHelper({
+ applicationPath,
+ registryRootKey,
+ });
+
+ FirefoxBridgeExtensionUtils.maybeDeleteBridgeProtocolRegistryEntries(
+ publicProtocol,
+ privateProtocol,
+ stubbedDeleteBridgeProtocolRegistryHelper
+ );
+
+ ok(registryRootKey.wasCloseCalled, "Root key closed");
+
+ ok(firefoxProtocolRegKey.wasOpenedForRead, "Firefox key opened");
+ ok(firefoxProtocolRegKey.wasCloseCalled, "Firefox key closed");
+ ok(
+ registryRootKey.isChildDeleted(publicProtocol),
+ "Firefox protocol registry entry deleted"
+ );
+
+ ok(
+ firefoxPrivateProtocolRegKey.wasOpenedForRead,
+ "Firefox private key opened"
+ );
+ ok(
+ firefoxPrivateProtocolRegKey.wasCloseCalled,
+ "Firefox private key closed"
+ );
+ ok(
+ registryRootKey.isChildDeleted(privateProtocol),
+ "Firefox private protocol registry entry deleted"
+ );
+ }
});
add_task(async function test_DeleteWhenDifferentFirefoxInstall() {
- const applicationPath = "testPath";
- const badApplicationPath = "testPath2";
-
- const firefoxEntries = new Map();
- firefoxEntries.set("", `\"${badApplicationPath}\" -osint -url \"%1\"`);
-
- const firefoxProtocolRegKey = new StubbedRegistryKey(
- new Map(),
- firefoxEntries
- );
-
- const firefoxPrivateEntries = new Map();
- firefoxPrivateEntries.set(
- "",
- `\"${badApplicationPath}\" -osint -private-window \"%1\"`
- );
- const firefoxPrivateProtocolRegKey = new StubbedRegistryKey(
- new Map(),
- firefoxPrivateEntries
- );
-
- const children = new Map();
- children.set(FIREFOX_SHELL_OPEN_COMMAND_PATH, firefoxProtocolRegKey);
- children.set(
- FIREFOX_PRIVATE_SHELL_OPEN_COMMAND_PATH,
- firefoxPrivateProtocolRegKey
- );
-
- const registryRootKey = new StubbedRegistryKey(children, new Map());
-
- const stubbedDeleteBridgeProtocolRegistryHelper =
- new StubbedDeleteBridgeProtocolRegistryEntryHelper({
- applicationPath,
- registryRootKey,
- });
-
- FirefoxBridgeExtensionUtils.maybeDeleteBridgeProtocolRegistryEntries(
- stubbedDeleteBridgeProtocolRegistryHelper
- );
-
- ok(registryRootKey.wasCloseCalled, "Root key closed");
-
- ok(firefoxProtocolRegKey.wasOpenedForRead, "Firefox key opened");
- ok(firefoxProtocolRegKey.wasCloseCalled, "Firefox key closed");
- ok(
- !registryRootKey.isChildDeleted("firefox"),
- "Firefox protocol registry entry not deleted"
- );
-
- ok(
- firefoxPrivateProtocolRegKey.wasOpenedForRead,
- "Firefox private key opened"
- );
- ok(firefoxPrivateProtocolRegKey.wasCloseCalled, "Firefox private key closed");
- ok(
- !registryRootKey.isChildDeleted("firefox-private"),
- "Firefox private protocol registry entry not deleted"
- );
+ for (let protocols of [
+ [
+ FirefoxBridgeExtensionUtils.OLD_PUBLIC_PROTOCOL,
+ FirefoxBridgeExtensionUtils.OLD_PRIVATE_PROTOCOL,
+ OLD_FIREFOX_SHELL_OPEN_COMMAND_PATH,
+ OLD_FIREFOX_PRIVATE_SHELL_OPEN_COMMAND_PATH,
+ ],
+ [
+ FirefoxBridgeExtensionUtils.PUBLIC_PROTOCOL,
+ FirefoxBridgeExtensionUtils.PRIVATE_PROTOCOL,
+ FIREFOX_SHELL_OPEN_COMMAND_PATH,
+ FIREFOX_PRIVATE_SHELL_OPEN_COMMAND_PATH,
+ ],
+ ]) {
+ let [publicProtocol, privateProtocol, publicPath, privatePath] = protocols;
+ const applicationPath = "testPath";
+ const badApplicationPath = "testPath2";
+
+ const firefoxEntries = new Map();
+ firefoxEntries.set("", `\"${badApplicationPath}\" -osint -url \"%1\"`);
+
+ const firefoxProtocolRegKey = new StubbedRegistryKey(
+ new Map(),
+ firefoxEntries
+ );
+
+ const firefoxPrivateEntries = new Map();
+ firefoxPrivateEntries.set(
+ "",
+ `\"${badApplicationPath}\" -osint -private-window \"%1\"`
+ );
+ const firefoxPrivateProtocolRegKey = new StubbedRegistryKey(
+ new Map(),
+ firefoxPrivateEntries
+ );
+
+ const children = new Map();
+ children.set(publicPath, firefoxProtocolRegKey);
+ children.set(privatePath, firefoxPrivateProtocolRegKey);
+
+ const registryRootKey = new StubbedRegistryKey(children, new Map());
+
+ const stubbedDeleteBridgeProtocolRegistryHelper =
+ new StubbedDeleteBridgeProtocolRegistryEntryHelper({
+ applicationPath,
+ registryRootKey,
+ });
+
+ FirefoxBridgeExtensionUtils.maybeDeleteBridgeProtocolRegistryEntries(
+ publicProtocol,
+ privateProtocol,
+ stubbedDeleteBridgeProtocolRegistryHelper
+ );
+
+ ok(registryRootKey.wasCloseCalled, "Root key closed");
+
+ ok(firefoxProtocolRegKey.wasOpenedForRead, "Firefox key opened");
+ ok(firefoxProtocolRegKey.wasCloseCalled, "Firefox key closed");
+ ok(
+ !registryRootKey.isChildDeleted(publicProtocol),
+ "Firefox protocol registry entry not deleted"
+ );
+
+ ok(
+ firefoxPrivateProtocolRegKey.wasOpenedForRead,
+ "Firefox private key opened"
+ );
+ ok(
+ firefoxPrivateProtocolRegKey.wasCloseCalled,
+ "Firefox private key closed"
+ );
+ ok(
+ !registryRootKey.isChildDeleted(privateProtocol),
+ "Firefox private protocol registry entry not deleted"
+ );
+ }
});
add_task(async function test_DeleteWhenNoRegistryEntries() {
- const applicationPath = "testPath";
-
- const firefoxPrivateEntries = new Map();
- const firefoxPrivateProtocolRegKey = new StubbedRegistryKey(
- new Map(),
- firefoxPrivateEntries
- );
-
- const children = new Map();
- children.set(
- FIREFOX_PRIVATE_SHELL_OPEN_COMMAND_PATH,
- firefoxPrivateProtocolRegKey
- );
-
- const registryRootKey = new StubbedRegistryKey(children, new Map());
-
- const stubbedDeleteBridgeProtocolRegistryHelper =
- new StubbedDeleteBridgeProtocolRegistryEntryHelper({
- applicationPath,
- registryRootKey,
- });
-
- FirefoxBridgeExtensionUtils.maybeDeleteBridgeProtocolRegistryEntries(
- stubbedDeleteBridgeProtocolRegistryHelper
- );
-
- ok(registryRootKey.wasCloseCalled, "Root key closed");
-
- ok(
- firefoxPrivateProtocolRegKey.wasOpenedForRead,
- "Firefox private key opened"
- );
- ok(firefoxPrivateProtocolRegKey.wasCloseCalled, "Firefox private key closed");
- ok(
- !registryRootKey.isChildDeleted("firefox"),
- "Firefox protocol registry entry deleted when it shouldn't be"
- );
- ok(
- !registryRootKey.isChildDeleted("firefox-private"),
- "Firefox private protocol registry deleted when it shouldn't be"
- );
+ for (let protocols of [
+ [
+ FirefoxBridgeExtensionUtils.OLD_PUBLIC_PROTOCOL,
+ FirefoxBridgeExtensionUtils.OLD_PRIVATE_PROTOCOL,
+ OLD_FIREFOX_PRIVATE_SHELL_OPEN_COMMAND_PATH,
+ ],
+ [
+ FirefoxBridgeExtensionUtils.PUBLIC_PROTOCOL,
+ FirefoxBridgeExtensionUtils.PRIVATE_PROTOCOL,
+ FIREFOX_PRIVATE_SHELL_OPEN_COMMAND_PATH,
+ ],
+ ]) {
+ let [publicProtocol, privateProtocol, privatePath] = protocols;
+ const applicationPath = "testPath";
+
+ const firefoxPrivateEntries = new Map();
+ const firefoxPrivateProtocolRegKey = new StubbedRegistryKey(
+ new Map(),
+ firefoxPrivateEntries
+ );
+
+ const children = new Map();
+ children.set(privatePath, firefoxPrivateProtocolRegKey);
+
+ const registryRootKey = new StubbedRegistryKey(children, new Map());
+
+ const stubbedDeleteBridgeProtocolRegistryHelper =
+ new StubbedDeleteBridgeProtocolRegistryEntryHelper({
+ applicationPath,
+ registryRootKey,
+ });
+
+ FirefoxBridgeExtensionUtils.maybeDeleteBridgeProtocolRegistryEntries(
+ publicProtocol,
+ privateProtocol,
+ stubbedDeleteBridgeProtocolRegistryHelper
+ );
+
+ ok(registryRootKey.wasCloseCalled, "Root key closed");
+
+ ok(
+ firefoxPrivateProtocolRegKey.wasOpenedForRead,
+ "Firefox private key opened"
+ );
+ ok(
+ firefoxPrivateProtocolRegKey.wasCloseCalled,
+ "Firefox private key closed"
+ );
+ ok(
+ !registryRootKey.isChildDeleted(publicProtocol),
+ "Firefox protocol registry entry deleted when it shouldn't be"
+ );
+ ok(
+ !registryRootKey.isChildDeleted(privateProtocol),
+ "Firefox private protocol registry deleted when it shouldn't be"
+ );
+ }
});
add_task(async function test_DeleteWhenUnexpectedRegistryEntries() {
- const applicationPath = "testPath";
-
- const firefoxEntries = new Map();
- firefoxEntries.set("", `\"${applicationPath}\" -osint -url \"%1\"`);
- firefoxEntries.set("extraEntry", "extraValue");
- const firefoxProtocolRegKey = new StubbedRegistryKey(
- new Map(),
- firefoxEntries
- );
-
- const children = new Map();
- children.set(FIREFOX_SHELL_OPEN_COMMAND_PATH, firefoxProtocolRegKey);
-
- const registryRootKey = new StubbedRegistryKey(children, new Map());
-
- const stubbedDeleteBridgeProtocolRegistryHelper =
- new StubbedDeleteBridgeProtocolRegistryEntryHelper({
- applicationPath,
- registryRootKey,
- });
-
- FirefoxBridgeExtensionUtils.maybeDeleteBridgeProtocolRegistryEntries(
- stubbedDeleteBridgeProtocolRegistryHelper
- );
-
- ok(registryRootKey.wasCloseCalled, "Root key closed");
-
- ok(firefoxProtocolRegKey.wasOpenedForRead, "Firefox key opened");
- ok(firefoxProtocolRegKey.wasCloseCalled, "Firefox key closed");
- ok(
- !registryRootKey.isChildDeleted("firefox"),
- "Firefox protocol registry entry deleted when it shouldn't be"
- );
- ok(
- !registryRootKey.isChildDeleted("firefox-private"),
- "Firefox private protocol registry deleted when it shouldn't be"
- );
+ for (let protocols of [
+ [
+ FirefoxBridgeExtensionUtils.OLD_PUBLIC_PROTOCOL,
+ FirefoxBridgeExtensionUtils.OLD_PRIVATE_PROTOCOL,
+ OLD_FIREFOX_SHELL_OPEN_COMMAND_PATH,
+ ],
+ [
+ FirefoxBridgeExtensionUtils.PUBLIC_PROTOCOL,
+ FirefoxBridgeExtensionUtils.PRIVATE_PROTOCOL,
+ FIREFOX_SHELL_OPEN_COMMAND_PATH,
+ ],
+ ]) {
+ let [publicProtocol, privateProtocol, publicPath] = protocols;
+ const applicationPath = "testPath";
+
+ const firefoxEntries = new Map();
+ firefoxEntries.set("", `\"${applicationPath}\" -osint -url \"%1\"`);
+ firefoxEntries.set("extraEntry", "extraValue");
+ const firefoxProtocolRegKey = new StubbedRegistryKey(
+ new Map(),
+ firefoxEntries
+ );
+
+ const children = new Map();
+ children.set(publicPath, firefoxProtocolRegKey);
+
+ const registryRootKey = new StubbedRegistryKey(children, new Map());
+
+ const stubbedDeleteBridgeProtocolRegistryHelper =
+ new StubbedDeleteBridgeProtocolRegistryEntryHelper({
+ applicationPath,
+ registryRootKey,
+ });
+
+ FirefoxBridgeExtensionUtils.maybeDeleteBridgeProtocolRegistryEntries(
+ publicProtocol,
+ privateProtocol,
+ stubbedDeleteBridgeProtocolRegistryHelper
+ );
+
+ ok(registryRootKey.wasCloseCalled, "Root key closed");
+
+ ok(firefoxProtocolRegKey.wasOpenedForRead, "Firefox key opened");
+ ok(firefoxProtocolRegKey.wasCloseCalled, "Firefox key closed");
+ ok(
+ !registryRootKey.isChildDeleted(publicProtocol),
+ "Firefox protocol registry entry deleted when it shouldn't be"
+ );
+ ok(
+ !registryRootKey.isChildDeleted(privateProtocol),
+ "Firefox private protocol registry deleted when it shouldn't be"
+ );
+ }
});