From bad451ce7f298928bcc424605178d5e82f1776e7 Mon Sep 17 00:00:00 2001 From: Yoav Weiss Date: Wed, 18 Mar 2020 03:36:05 -0700 Subject: [PATCH] [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 --- .../navigator_user_agent.https.html | 3 +- .../WorkerNavigator_userAgentData.http.html | 17 +++++++++++ .../WorkerNavigator_userAgentData.https.html | 29 +++++++++++++++++++ workers/support/WorkerNavigator.js | 28 +++++++++++++----- 4 files changed, 68 insertions(+), 9 deletions(-) create mode 100644 workers/WorkerNavigator_userAgentData.http.html create mode 100644 workers/WorkerNavigator_userAgentData.https.html diff --git a/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html b/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html index 0fb9e372b0dd6f5..9409dd08e4d0e7a 100644 --- a/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html +++ b/html/webappapis/system-state-and-capabilities/the-navigator-object/navigator_user_agent.https.html @@ -1,10 +1,11 @@ - + + diff --git a/workers/WorkerNavigator_userAgentData.https.html b/workers/WorkerNavigator_userAgentData.https.html new file mode 100644 index 000000000000000..91a63966c01fa30 --- /dev/null +++ b/workers/WorkerNavigator_userAgentData.https.html @@ -0,0 +1,29 @@ + + WorkerNavigator.userAgentData + + + diff --git a/workers/support/WorkerNavigator.js b/workers/support/WorkerNavigator.js index 084e45b24585b9d..1daeb2b35d57793 100644 --- a/workers/support/WorkerNavigator.js +++ b/workers/support/WorkerNavigator.js @@ -1,8 +1,20 @@ -var obj = new Object(); -obj.appName = navigator.appName; -obj.appVersion = navigator.appVersion; -obj.platform = navigator.platform; -obj.userAgent = navigator.userAgent; -obj.onLine = navigator.onLine; - -postMessage(obj); +(async () => { + var obj = new Object(); + obj.appName = navigator.appName; + obj.appVersion = navigator.appVersion; + obj.platform = navigator.platform; + obj.userAgent = navigator.userAgent; + obj.onLine = 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); +})();