summaryrefslogtreecommitdiffstats
path: root/js/xpconnect/tests/unit/test_FrameScriptEnvironment.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /js/xpconnect/tests/unit/test_FrameScriptEnvironment.js
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/xpconnect/tests/unit/test_FrameScriptEnvironment.js')
-rw-r--r--js/xpconnect/tests/unit/test_FrameScriptEnvironment.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/js/xpconnect/tests/unit/test_FrameScriptEnvironment.js b/js/xpconnect/tests/unit/test_FrameScriptEnvironment.js
new file mode 100644
index 0000000000..d02c9900e1
--- /dev/null
+++ b/js/xpconnect/tests/unit/test_FrameScriptEnvironment.js
@@ -0,0 +1,46 @@
+let ppmm = Services.ppmm.getChildAt(0);
+
+Services.prefs.setBoolPref("security.allow_eval_with_system_principal", true);
+registerCleanupFunction(() => {
+ Services.prefs.clearUserPref("security.allow_eval_with_system_principal");
+});
+
+add_task(async function test_bindings() {
+ let {strict, bound} = await new Promise(function(resolve) {
+ // Use a listener to get results from child
+ ppmm.addMessageListener("results", function listener(msg) {
+ ppmm.removeMessageListener("results", listener);
+ resolve(msg.data);
+ });
+
+ // Bind vars in first process script
+ ppmm.loadProcessScript("resource://test/environment_script.js", false);
+
+ // Check visibility in second process script
+ ppmm.loadProcessScript(`data:,
+ let strict = (function() { return this; })() === undefined;
+ var bound = "";
+
+ try { void vu; bound += "vu,"; } catch (e) {}
+ try { void vq; bound += "vq,"; } catch (e) {}
+ try { void vl; bound += "vl,"; } catch (e) {}
+ try { void gt; bound += "gt,"; } catch (e) {}
+ try { void ed; bound += "ed,"; } catch (e) {}
+ try { void ei; bound += "ei,"; } catch (e) {}
+ try { void fo; bound += "fo,"; } catch (e) {}
+ try { void fi; bound += "fi,"; } catch (e) {}
+ try { void fd; bound += "fd,"; } catch (e) {}
+
+ sendAsyncMessage("results", { strict, bound });
+ `, false);
+ });
+
+ // FrameScript loader should share |this| access
+ if (strict) {
+ if (bound != "gt,ed,ei,fo,")
+ throw new Error("Unexpected global binding set - " + bound);
+ } else {
+ if (bound != "gt,ed,ei,fo,fi,fd,")
+ throw new Error("Unexpected global binding set - " + bound);
+ }
+});