From 0be8378aa628b4d345876054180f567b31c10e1a Mon Sep 17 00:00:00 2001 From: Marco Castelluccio Date: Mon, 23 Mar 2020 22:33:02 +0000 Subject: [PATCH] Bug 1622428 [wpt PR 22248] - [UA-CH] Add userAgentData worker support, a=testonly Automatic update from web-platform-tests [UA-CH] Add userAgentData worker support This implements PR #80 [1] and exposes userAgentData in workers. [1] https://github.com/WICG/ua-client-hints/pull/80 Bug: 1062192 Change-Id: I1de6067ab6c00855d7bf820e9646eb4e5a8c5fdb Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2093220 Commit-Queue: Yoav Weiss Reviewed-by: Hiroki Nakagawa Reviewed-by: Kinuko Yasuda Reviewed-by: Matt Falkenhagen Cr-Commit-Position: refs/heads/master{#751295} -- wpt-commits: 7a23db2a7457ed7ba96ea34ad3ec7016d0e8fe11 wpt-pr: 22248 UltraBlame original commit: 55b18a468398700bafe55b2dbff3bf4a104e6397 --- .../navigator_user_agent.https.html | 38 +-- .../WorkerNavigator_userAgentData.http.html | 152 +++++++++ .../WorkerNavigator_userAgentData.https.html | 317 ++++++++++++++++++ .../tests/workers/support/WorkerNavigator.js | 127 ++++++- 4 files changed, 614 insertions(+), 20 deletions(-) create mode 100644 testing/web-platform/tests/workers/WorkerNavigator_userAgentData.http.html create mode 100644 testing/web-platform/tests/workers/WorkerNavigator_userAgentData.https.html diff --git a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html index b5c27a8647eb6..00e031b92d8c6 100644 --- a/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html +++ b/testing/web-platform/tests/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html @@ -39,25 +39,6 @@ > < script -src -= -" -/ -webrtc -/ -dictionary -- -helper -. -js -" -> -< -/ -script -> -< -script > test ( @@ -74,6 +55,25 @@ navigator ) ; +assert_true +( +" +NavigatorUAData +" +in +window +) +; +assert_equals +( +typeof +self +. +NavigatorUAData +" +function +" +) } " navigator diff --git a/testing/web-platform/tests/workers/WorkerNavigator_userAgentData.http.html b/testing/web-platform/tests/workers/WorkerNavigator_userAgentData.http.html new file mode 100644 index 0000000000000..fd9efed98bda3 --- /dev/null +++ b/testing/web-platform/tests/workers/WorkerNavigator_userAgentData.http.html @@ -0,0 +1,152 @@ +< +! +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 +. +uaList +undefined +) +; +assert_equals +( +e +. +data +. +mobile +undefined +) +; +assert_equals +( +e +. +data +. +getHighEntropyValues +undefined +) +; +} +" +Test +that +userAgentData +is +not +available +in +workers +in +non +- +secure +contexts +" +) +; +< +/ +script +> diff --git a/testing/web-platform/tests/workers/WorkerNavigator_userAgentData.https.html b/testing/web-platform/tests/workers/WorkerNavigator_userAgentData.https.html new file mode 100644 index 0000000000000..026aa39e7db15 --- /dev/null +++ b/testing/web-platform/tests/workers/WorkerNavigator_userAgentData.https.html @@ -0,0 +1,317 @@ +< +! +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 +. +uaList +. +length +navigator +. +userAgentData +. +uaList +. +length +) +; +for +( +let +i += +0 +; +i +< +e +. +data +. +uaList +. +length +; ++ ++ +i +) +{ +const +workerUA += +e +. +data +. +uaList +[ +i +] +; +const +windowUA += +navigator +. +userAgentData +. +uaList +[ +i +] +; +assert_equals +( +workerUA +. +brand +windowUA +. +brand +) +; +assert_equals +( +workerUA +. +version +windowUA +. +version +) +; +} +assert_equals +( +e +. +data +. +mobile +navigator +. +userAgentData +. +mobile +) +; +const +highEntropyValues += +await +navigator +. +userAgentData +. +getHighEntropyValues +( +[ +" +platform +" +" +platformVersion +" +" +architecture +" +" +model +" +" +uaFullVersion +" +] +) +; +assert_equals +( +e +. +data +. +model +highEntropyValues +. +model +) +; +assert_equals +( +e +. +data +. +platform +highEntropyValues +. +platform +) +; +assert_equals +( +e +. +data +. +platformVersion +highEntropyValues +. +platformVersion +) +; +assert_equals +( +e +. +data +. +architecture +highEntropyValues +. +architecture +) +; +assert_equals +( +e +. +data +. +uaFullVersion +highEntropyValues +. +uaFullVersion +) +; +assert_equals +( +e +. +data +. +NavigatorUADataExposed +true +) +; +} +" +Test +that +userAgentData +is +available +in +workers +in +secure +contexts +" +) +; +< +/ +script +> diff --git a/testing/web-platform/tests/workers/support/WorkerNavigator.js b/testing/web-platform/tests/workers/support/WorkerNavigator.js index b682bfa8d572b..7b3ce017bc26b 100644 --- a/testing/web-platform/tests/workers/support/WorkerNavigator.js +++ b/testing/web-platform/tests/workers/support/WorkerNavigator.js @@ -1,4 +1,11 @@ -var +( +async +( +) += +> +{ +const obj = new @@ -46,8 +53,126 @@ navigator . onLine ; +if +( +navigator +. +userAgentData +) +{ +obj +. +uaList += +navigator +. +userAgentData +. +uaList +; +obj +. +mobile += +navigator +. +userAgentData +. +mobile +; +const +highEntropyValues += +await +navigator +. +userAgentData +. +getHighEntropyValues +( +[ +" +platform +" +" +platformVersion +" +" +architecture +" +" +model +" +" +uaFullVersion +" +] +) +; +obj +. +platform += +highEntropyValues +. +platform +; +obj +. +platformVersion += +highEntropyValues +. +platformVersion +; +obj +. +architecture += +highEntropyValues +. +architecture +; +obj +. +model += +highEntropyValues +. +model +; +obj +. +uaFullVersion += +highEntropyValues +. +uaFullVersion +; +obj +. +NavigatorUADataExposed += +( +typeof +self +. +NavigatorUAData +! += +" +undefined +" +) +; +} postMessage ( obj ) ; +} +) +( +) +;