diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /devtools/shared/tests/xpcshell/test_invisible_loader.js | |
parent | Initial commit. (diff) | |
download | firefox-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 'devtools/shared/tests/xpcshell/test_invisible_loader.js')
-rw-r--r-- | devtools/shared/tests/xpcshell/test_invisible_loader.js | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/devtools/shared/tests/xpcshell/test_invisible_loader.js b/devtools/shared/tests/xpcshell/test_invisible_loader.js new file mode 100644 index 0000000000..d83efd9c2a --- /dev/null +++ b/devtools/shared/tests/xpcshell/test_invisible_loader.js @@ -0,0 +1,80 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const { addDebuggerToGlobal } = ChromeUtils.importESModule( + "resource://gre/modules/jsdebugger.sys.mjs" +); +addDebuggerToGlobal(globalThis); + +/** + * Ensure that sandboxes created via the Dev Tools loader respect the + * invisibleToDebugger flag. + */ +function run_test() { + visible_loader(); + invisible_loader(); + // TODO: invisibleToDebugger should be deprecated in favor of + // useDistinctSystemPrincipalLoader, but we might move out from the loader + // to using only standard imports instead. + distinct_system_principal_loader(); +} + +function visible_loader() { + const loader = new DevToolsLoader({ + invisibleToDebugger: false, + }); + loader.require("resource://devtools/shared/indentation.js"); + + const dbg = new Debugger(); + const sandbox = loader.loader.sharedGlobal; + + try { + dbg.addDebuggee(sandbox); + Assert.ok(true); + } catch (e) { + do_throw("debugger could not add visible value"); + } +} + +function invisible_loader() { + const loader = new DevToolsLoader({ + invisibleToDebugger: true, + }); + loader.require("resource://devtools/shared/indentation.js"); + + const dbg = new Debugger(); + const sandbox = loader.loader.sharedGlobal; + + try { + dbg.addDebuggee(sandbox); + do_throw("debugger added invisible value"); + } catch (e) { + Assert.ok(true); + } +} + +function distinct_system_principal_loader() { + const { + useDistinctSystemPrincipalLoader, + releaseDistinctSystemPrincipalLoader, + } = ChromeUtils.importESModule( + "resource://devtools/shared/loader/DistinctSystemPrincipalLoader.sys.mjs" + ); + + const requester = {}; + const loader = useDistinctSystemPrincipalLoader(requester); + loader.require("resource://devtools/shared/indentation.js"); + + const dbg = new Debugger(); + const sandbox = loader.loader.sharedGlobal; + + try { + dbg.addDebuggee(sandbox); + do_throw("debugger added invisible value"); + } catch (e) { + Assert.ok(true); + } + releaseDistinctSystemPrincipalLoader(requester); +} |