From ffc03acd64069d287e02c675bb963dfa21103117 Mon Sep 17 00:00:00 2001 From: Paris Morgan Date: Tue, 21 Sep 2021 12:31:16 -0700 Subject: [PATCH 1/5] Add different oculus browser --- test/browser-test.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/test/browser-test.json b/test/browser-test.json index 2f4c2e0f..afd576e4 100644 --- a/test/browser-test.json +++ b/test/browser-test.json @@ -789,7 +789,7 @@ } }, { - "desc" : "Oculus Browser", + "desc" : "Oculus Browser", "ua" : "Mozilla/5.0 (Linux; Android 7.0; SM-G920I Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/3.4.9 SamsungBrowser/4.0 Chrome/57.0.2987.146 Mobile VR Safari/537.36", "expect" : { @@ -798,6 +798,16 @@ "major" : "3" } }, + { + "desc" : "Oculus Browser", + "ua" : "Mozilla/5.0 (Linux; Android 7.1.1; Pacific Build/N9F27L) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/4.0.0.17 SamsungBrowser/4.0 Chrome/61.0.3163.109 Mobile VR Safari/537.36", + "expect" : + { + "name" : "Oculus Browser", + "version" : "3.4.9", + "major" : "3" + } + }, { "desc" : "OmniWeb", "ua" : "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/85 (KHTML, like Gecko) OmniWeb/v558.48", From f57bd9523d81f9e20d5f7aca8a918d38646c8a89 Mon Sep 17 00:00:00 2001 From: Paris Morgan Date: Tue, 21 Sep 2021 15:31:02 -0700 Subject: [PATCH 2/5] 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 7d8beb67..e6108cf6 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 afd576e4..ca377771 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 ae9392fe..3a60d8ed 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 ad54ef43..58c9b3d3 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); From ee743946e8df499f7b77a521b13ed3de9a2d2149 Mon Sep 17 00:00:00 2001 From: Paris Morgan Date: Tue, 21 Sep 2021 15:40:04 -0700 Subject: [PATCH 3/5] cleanup --- test/browser-test.json | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/test/browser-test.json b/test/browser-test.json index ca377771..393aba75 100644 --- a/test/browser-test.json +++ b/test/browser-test.json @@ -789,7 +789,7 @@ } }, { - "desc" : "Oculus Browser", + "desc" : "Oculus Browser", "ua" : "Mozilla/5.0 (Linux; Android 7.0; SM-G920I Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/3.4.9 SamsungBrowser/4.0 Chrome/57.0.2987.146 Mobile VR Safari/537.36", "expect" : { @@ -800,26 +800,6 @@ }, { "desc" : "Oculus Browser", - "ua" : "Mozilla/5.0 (Linux; Android 7.1.1; Pacific Build/N9F27L) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/4.0.0.17 SamsungBrowser/4.0 Chrome/61.0.3163.109 Mobile VR Safari/537.36", - "expect" : - { - "name" : "Oculus Browser", - "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" : { From 79535f5d612128e062ccca921a1c38cfedb2c31f Mon Sep 17 00:00:00 2001 From: Paris Morgan Date: Tue, 21 Sep 2021 15:40:47 -0700 Subject: [PATCH 4/5] cleanup --- test/test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test.js b/test/test.js index 58c9b3d3..ad54ef43 100644 --- a/test/test.js +++ b/test/test.js @@ -39,8 +39,7 @@ 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'; @@ -63,6 +62,7 @@ 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); From 343d584f8f74a15fcaa621e1ad76b425db8119c8 Mon Sep 17 00:00:00 2001 From: Paris Morgan Date: Mon, 4 Oct 2021 09:06:00 -0700 Subject: [PATCH 5/5] change to single line regex --- src/ua-parser.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index e6108cf6..0453e508 100755 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -632,10 +632,8 @@ ], [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]], [ + /(quest( 2)?)/i // Oculus Quest + ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [ /////////////////// // EMBEDDED