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 /dom/tests/mochitest/bugs/test_navigator_buildID.html | |
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 'dom/tests/mochitest/bugs/test_navigator_buildID.html')
-rw-r--r-- | dom/tests/mochitest/bugs/test_navigator_buildID.html | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/dom/tests/mochitest/bugs/test_navigator_buildID.html b/dom/tests/mochitest/bugs/test_navigator_buildID.html new file mode 100644 index 0000000000..231bd99c23 --- /dev/null +++ b/dom/tests/mochitest/bugs/test_navigator_buildID.html @@ -0,0 +1,93 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=583181 +--> +<head> + <title>Test for Bug 583181</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <script src="/tests/SimpleTest/ChromeTask.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body onload="onLoad()"> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=583181">Mozilla Bug 583181</a> +<p id="display"></p> +<div id="content" style="display: none"> + +</div> +<pre id="test"> +<script class="testbody" type="text/javascript"> +"use strict"; + +SimpleTest.waitForExplicitFinish(); + +const LEGACY_BUILD_ID = 20181001000000; + +// +// Access navigator.buildID from unprivileged web content. +// +var isOK = false; +try { + var contentBuildID = navigator.buildID; + isOK = true; +} catch (ex) { +} +ok(isOK, "navigator.buildID should never throw"); +is(typeof(contentBuildID), "string", "navigator.buildID should be a string"); +is(+contentBuildID, LEGACY_BUILD_ID, + "navigator.buildID should be spoofed in content"); + +async function onLoad() { + // + // Access navigator.buildID from chrome. + // + let chromeBuildID = await ChromeTask.spawn(null, () => { + const browser = Services.wm.getMostRecentBrowserWindow(); + return browser.navigator.buildID; + }); + + ok(+chromeBuildID > LEGACY_BUILD_ID, + `navigator.buildID should be exposed in chrome - got "${chromeBuildID}"`); + + // + // Access navigator.buildID from mozilla.org. + // + let mozillaBuildID = await getMozillaBuildID(); + + ok(+mozillaBuildID > LEGACY_BUILD_ID, + `navigator.buildID should be exposed on mozilla.org ` + + `- got "${mozillaBuildID}"`); + is(chromeBuildID, mozillaBuildID, + "navigator.buildID should be the same in chrome and on mozilla.org"); + + // + // Access navigator.buildID from mozilla.org when resisting fingerprinting. + // + await SpecialPowers.pushPrefEnv( + {"set": [["privacy.resistFingerprinting", true]]}); + + let resistBuildID = await getMozillaBuildID(); + + is(+resistBuildID, LEGACY_BUILD_ID, + "navigator.buildID should be spoofed on mozilla.org when " + + "resisting fingerprinting"); + + SimpleTest.finish(); +} + +async function getMozillaBuildID() { + let iframe = document.getElementById("mozillaIFrame"); + + await new Promise(resolve => { + iframe.addEventListener("load", resolve, { once: true }); + SpecialPowers.spawn(iframe, [], () => this.content.location.reload()); + }); + + return SpecialPowers.spawn( + iframe, [], () => this.content.wrappedJSObject.navigator.buildID); +} +</script> +</pre> +<iframe id="mozillaIFrame" src="https://www.mozilla.org/" /> +</body> +</html> |