diff options
author | Pierre Ossman <ossman@cendio.se> | 2022-12-23 16:58:45 +0100 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2022-12-27 12:50:57 +0100 |
commit | 12a7c6f0de0ca51126c9a7292669c03f483049e0 (patch) | |
tree | a13c1160382750627f4dd178f73d4ddd6817e8c0 | |
parent | a187821e4f576c0569e7ca9a71ebb525734dda00 (diff) | |
download | novnc-12a7c6f0de0ca51126c9a7292669c03f483049e0.tar.gz |
Check for Android using userAgent
Modern Android systems seem to report "Linux" for navigator.platform, so
we can no longer rely on that.
-rw-r--r-- | core/util/browser.js | 3 | ||||
-rw-r--r-- | tests/test.browser.js | 11 |
2 files changed, 8 insertions, 6 deletions
diff --git a/core/util/browser.js b/core/util/browser.js index 8195438..bbc9f5c 100644 --- a/core/util/browser.js +++ b/core/util/browser.js @@ -94,7 +94,8 @@ export function isIOS() { } export function isAndroid() { - return !!(/android/i).exec(navigator.platform); + /* Android sets navigator.platform to Linux :/ */ + return !!navigator.userAgent.match('Android '); } export function isChromeOS() { diff --git a/tests/test.browser.js b/tests/test.browser.js index 4b6c127..3b2299f 100644 --- a/tests/test.browser.js +++ b/tests/test.browser.js @@ -73,13 +73,14 @@ describe('OS detection', function () { }); it('should handle Android', function () { - const platforms = [ - "Android", + let userAgents = [ + "Mozilla/5.0 (Linux; Android 13; SM-G960U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.128 Mobile Safari/537.36", + "Mozilla/5.0 (Android 13; Mobile; LG-M255; rv:108.0) Gecko/108.0 Firefox/108.0", ]; - navigator.userAgent = "Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0"; - platforms.forEach((platform) => { - navigator.platform = platform; + navigator.platform = "Linux x86_64"; + userAgents.forEach((ua) => { + navigator.userAgent = ua; expect(isMac()).to.be.false; expect(isWindows()).to.be.false; expect(isIOS()).to.be.false; |