From f57bd9523d81f9e20d5f7aca8a918d38646c8a89 Mon Sep 17 00:00:00 2001 From: Paris Morgan Date: Tue, 21 Sep 2021 15:31:02 -0700 Subject: [PATCH] Oculus devices --- src/ua-parser.js | 9 +++++++-- test/browser-test.json | 24 ++++++++++++++++++++++-- test/device-test.json | 18 ++++++++++++++++++ test/test.js | 4 ++-- 4 files changed, 49 insertions(+), 6 deletions(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index 7d8beb6..e6108cf 100755 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -56,7 +56,8 @@ SAMSUNG = 'Samsung', SONY = 'Sony', XIAOMI = 'Xiaomi', - ZEBRA = 'Zebra'; + ZEBRA = 'Zebra', + FACEBOOK = 'Facebook'; /////////// // Helper @@ -278,7 +279,7 @@ // WebView /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android - ], [[NAME, 'Facebook'], VERSION], [ + ], [[NAME, FACEBOOK], VERSION], [ /safari (line)\/([\w\.]+)/i, // Line App for iOS /\b(line)\/([\w\.]+)\/iab/i, // Line App for Android /(chromium|instagram)[\/ ]([-\w\.]+)/i // Chromium/Instagram @@ -631,6 +632,10 @@ ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [ /droid.+; (wt63?0{2,3})\)/i ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [ + /quest 2/i + ], [[MODEL, 'Quest 2'], [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [ + /quest/i + ], [[MODEL, 'Quest'], [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [ /////////////////// // EMBEDDED diff --git a/test/browser-test.json b/test/browser-test.json index afd576e..ca37777 100644 --- a/test/browser-test.json +++ b/test/browser-test.json @@ -804,8 +804,28 @@ "expect" : { "name" : "Oculus Browser", - "version" : "3.4.9", - "major" : "3" + "version" : "4.0.0.17", + "major" : "4" + } + }, + { + "desc" : "Oculus Browser", + "ua" : "Mozilla/5.0 (Linux; Android 9; SM-N960F) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/6.2.11.181027543 SamsungBrowser/4.0 Chrome/74.0.3729.182 Mobile VR Safari/537.36", + "expect" : + { + "name" : "Oculus Browser", + "version" : "6.2.11.181027543", + "major" : "6" + } + }, + { + "desc" : "Oculus Browser (NOTE PARIS FROM https://developer.oculus.com/documentation/web/browser-specs/)", + "ua" : "Mozilla/5.0 (Linux; Android 10; Quest 2) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/15.0.0.0.22.280317669 SamsungBrowser/4.0 Chrome/89.0.4389.90 VR Safari/537.36", + "expect" : + { + "name" : "Oculus Browser", + "version" : "15.0.0.0.22.280317669", + "major" : "15" } }, { diff --git a/test/device-test.json b/test/device-test.json index ae9392f..3a60d8e 100644 --- a/test/device-test.json +++ b/test/device-test.json @@ -1053,6 +1053,24 @@ "type": "mobile" } }, + { + "desc": "Oculus Quest", + "ua": "Mozilla/5.0 (Linux; Android 10; Quest) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/15.0.0.0.22.280317669 SamsungBrowser/4.0 Chrome/89.0.4389.90 VR Safari/537.36", + "expect": { + "vendor": "Facebook", + "model": "Quest", + "type": "wearable" + } + }, + { + "desc": "Oculus Quest 2", + "ua": "Mozilla/5.0 (Linux; Android 10; Quest 2) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/15.0.0.0.22.280317669 SamsungBrowser/4.0 Chrome/89.0.4389.90 VR Safari/537.36", + "expect": { + "vendor": "Facebook", + "model": "Quest 2", + "type": "wearable" + } + }, { "desc": "OnePlus One", "ua": "Mozilla/5.0 (Linux; Android 4.4.4; A0001 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36", diff --git a/test/test.js b/test/test.js index ad54ef4..58c9b3d 100644 --- a/test/test.js +++ b/test/test.js @@ -39,7 +39,8 @@ var methods = [ label : 'os', list : os, properties : ['name', 'version'] -}]; + } +]; describe('UAParser()', function () { var ua = 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6'; @@ -62,7 +63,6 @@ for (var i in methods) { describe('"' + methods[i]['list'][j].ua + '"', function () { var expect = methods[i]['list'][j].expect; var result = parser.setUA(methods[i]['list'][j].ua).getResult()[methods[i]['label']]; - methods[i]['properties'].forEach(function(m) { it('should return ' + methods[i]['label'] + ' ' + m + ': ' + expect[m], function () { assert.strictEqual(result[m], expect[m] != 'undefined' ? expect[m] : undefined);