| <!DOCTYPE html> |
| <title> WorkerNavigator.userAgentData </title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script> |
| |
| promise_test(async () => { |
| const e = await new Promise((resolve, reject) => { |
| const worker = new Worker("./support/WorkerNavigator.js"); |
| worker.onmessage = resolve; |
| }); |
| |
| assert_equals(e.data.brands.length, navigator.userAgentData.brands.length); |
| for (let i = 0; i < e.data.brands.length; ++i) { |
| const workerUA = e.data.brands[i]; |
| const windowUA = navigator.userAgentData.brands[i]; |
| assert_equals(workerUA.brand, windowUA.brand); |
| assert_equals(workerUA.version, windowUA.version); |
| } |
| assert_equals(e.data.mobile, navigator.userAgentData.mobile); |
| assert_equals(e.data.platform, navigator.userAgentData.platform); |
| const highEntropyValues = await navigator.userAgentData.getHighEntropyValues([ |
| "architecture", "bitness", "fullVersionList", "model", |
| "platformVersion", "uaFullVersion", "wow64", "formFactors", |
| ]); |
| |
| assert_equals(e.data.fullVersionList.length, |
| highEntropyValues.fullVersionList.length); |
| for (let i = 0; i < e.data.fullVersionList.length; ++i) { |
| const workerFV = e.data.fullVersionList[i]; |
| const windowFV = highEntropyValues.fullVersionList[i]; |
| assert_equals(workerFV.brand, windowFV.brand); |
| assert_equals(workerFV.version, windowFV.version); |
| } |
| |
| assert_equals(e.data.architecture, highEntropyValues.architecture); |
| assert_equals(e.data.bitness, highEntropyValues.bitness); |
| assert_equals(e.data.model, highEntropyValues.model); |
| assert_equals(e.data.platformVersion, highEntropyValues.platformVersion); |
| assert_equals(e.data.uaFullVersion, highEntropyValues.uaFullVersion); |
| assert_equals(e.data.wow64, highEntropyValues.wow64); |
| assert_equals(e.data.formFactors.join(','), highEntropyValues.formFactors.join(',')); |
| assert_equals(e.data.NavigatorUADataExposed, true); |
| |
| // Architecture should be one of two permitted values. |
| assert_true(["x86", "arm"].some(arch => arch == e.data.architecture)) |
| }, "Test that userAgentData is available in workers in secure contexts"); |
| |
| promise_test(async () => { |
| const e = await new Promise((resolve) => { |
| const worker = new Worker("./support/WorkerNavigator.js"); |
| worker.onmessage = resolve; |
| }); |
| const highEntropyValues = await navigator.userAgentData.getHighEntropyValues([ |
| "platformVersion", "wow64" |
| ]); |
| |
| if (["Fuchsia", "Linux"].includes(navigator.userAgentData.platform)) { |
| assert_true(e.data.platformVersion === ""); |
| assert_equals(e.data.wow64, false); |
| assert_true(highEntropyValues.platformVersion === ""); |
| assert_equals(highEntropyValues.wow64, false); |
| } |
| }, "Platform version and wow64-ness on Linux and Fuchsia should contain fixed values"); |
| </script> |