From 21a0a0ce72bfa68adf6f01c397a76b84993cb0f1 Mon Sep 17 00:00:00 2001 From: Jason Pang Date: Fri, 25 Aug 2017 21:23:35 -0700 Subject: [PATCH 1/3] Fix Chrome detection for Android 8 OPR6 build num One of Android 8's build numbers is 'opr6.170623.013'. This is expressed in the user agent as: "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPR6.170623.013) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.107 Mobile Safari/537.36" Because this library detects the Opera browser if "opera", "opr", or "opios" is contained in the user agent, the above user agent string is incorrectly detected as a versionless Opera, instead of Chrome 60. This commit changes the detection of "opr" to require a trailing slash '/' character. This works because uild numbers are expressed as Build/X..., whereas Opera versions are expressed as OPR/X. fixes #193 --- src/bowser.js | 4 ++-- src/useragents.js | 30 ++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/bowser.js b/src/bowser.js index a510e96..19a7079 100644 --- a/src/bowser.js +++ b/src/bowser.js @@ -56,7 +56,7 @@ , opera: t , version: versionIdentifier || getFirstMatch(/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i) } - } else if (/opr|opios/i.test(ua)) { + } else if (/opr\/|opios/i.test(ua)) { // a new Opera result = { name: 'Opera' @@ -351,7 +351,7 @@ default: return undefined } } - + // OS version extraction var osVersion = ''; if (result.windows) { diff --git a/src/useragents.js b/src/useragents.js index 719b7a0..91a13c7 100644 --- a/src/useragents.js +++ b/src/useragents.js @@ -7,7 +7,16 @@ */ module.exports.useragents = { Chrome: { - 'Mozilla/5.0 (Linux; Android 5.1.1; Nexus 9 Build/LMY48T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Safari/537.36': { + 'Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPR6.170623.013) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.107 Mobile Safari/537.36': { + chrome: true + , android: true + , osversion: '8.0.0' + , mobile: true + , version: '60.0' + , blink: true + , a: true + } + , 'Mozilla/5.0 (Linux; Android 5.1.1; Nexus 9 Build/LMY48T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Safari/537.36': { chrome: true , android: true , osversion: '5.1.1' @@ -206,7 +215,24 @@ module.exports.useragents = { } } , Opera: { - 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 7 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.72 Safari/537.36 OPR/19.0.1340.69721': { + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36 OPR/47.0.2631.55': { + opera: true + , blink: true + , mac: true + , osversion: '10.11.6' + , version: '47.0' + , a: true + } + , 'Mozilla/5.0 (Linux; Android 8.0; Nexus 6P Build/OPR6.170623.013) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.91 Mobile Safari/537.36 OPR/42.7.2246.114996': { + opera: true + , blink: true + , android: true + , osversion: '8.0' + , mobile: true + , version: '42.7' + , a: true + } + , 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 7 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.72 Safari/537.36 OPR/19.0.1340.69721': { opera: true , blink: true , android: true From c6b56893dd497533e913b8e6caeb965360080d04 Mon Sep 17 00:00:00 2001 From: Michael Hsu Date: Mon, 21 Aug 2017 11:29:07 +0800 Subject: [PATCH 2/3] docs(CHANGELOG): typo 1.7.2 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fe85bb..b34603c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Bowser Changelog -### 1.7.1 (August 17, 2017) +### 1.7.2 (August 17, 2017) - [FIX] Fix typings.d.ts according to #185 ### 1.7.1 (July 13, 2017) From 76cff33b348db2c8163e05f1f4faf5d0396ae510 Mon Sep 17 00:00:00 2001 From: Denis Demchenko Date: Wed, 30 Aug 2017 08:53:42 +0300 Subject: [PATCH 3/3] chore: bump versions, write changelogs --- CHANGELOG.md | 3 +++ bower.json | 2 +- package.json | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b34603c..e66297a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Bowser Changelog +### 1.7.3 (August 30, 2017) +- [FIX] Fix detection of Chrome on Android 8 OPR6 (#193) + ### 1.7.2 (August 17, 2017) - [FIX] Fix typings.d.ts according to #185 diff --git a/bower.json b/bower.json index 38426f2..151ed7a 100644 --- a/bower.json +++ b/bower.json @@ -11,7 +11,7 @@ "ender", "sniff" ], - "version": "1.7.2", + "version": "1.7.3", "homepage": "https://github.com/lancedikson/bowser", "scripts": [ "src/bowser.js" diff --git a/package.json b/package.json index fad06b2..6e0c0c7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bowser", - "version": "1.7.2", + "version": "1.7.3", "description": "Lightweight browser detector", "keywords": [ "browser",