diff --git a/src/constants.js b/src/constants.js index 330b977..6dd0071 100644 --- a/src/constants.js +++ b/src/constants.js @@ -23,6 +23,8 @@ export const BROWSER_ALIASES_MAP = { PhantomJS: 'phantomjs', Puffin: 'puffin', QupZilla: 'qupzilla', + QQ: 'qq', + QQLite: 'qqlite', Safari: 'safari', Sailfish: 'sailfish', 'Samsung Internet for Android': 'samsung_internet', @@ -61,6 +63,8 @@ export const BROWSER_MAP = { phantomjs: 'PhantomJS', puffin: 'Puffin', qupzilla: 'QupZilla', + qq: 'QQ Browser', + qqlite: 'QQ Browser Lite', safari: 'Safari', sailfish: 'Sailfish', samsung_internet: 'Samsung Internet for Android', diff --git a/src/parser-browsers.js b/src/parser-browsers.js index 6a8c28a..57d3285 100644 --- a/src/parser-browsers.js +++ b/src/parser-browsers.js @@ -288,6 +288,21 @@ const browsersList = [ return browser; }, }, + { + test: [/qqbrowser/i], + describe(ua) { + const browser = { + name: (/qqbrowserlite/i).test(ua) ? 'QQ Browser Lite' : 'QQ Browser', + }; + const version = Utils.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, { test: [/msie|trident/i], describe(ua) { diff --git a/test/acceptance/useragentstrings.yml b/test/acceptance/useragentstrings.yml index 8e3e7d0..d0d8e0f 100644 --- a/test/acceptance/useragentstrings.yml +++ b/test/acceptance/useragentstrings.yml @@ -2799,3 +2799,95 @@ platform: type: "tv" engine: {} + QQ Browser: + - + ua: "Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.0 QQ-URL-Manager Mobile Safari/537.36" + spec: + browser: + name: "QQ Browser" + version: "5.0" + os: + name: "Android" + version: "4.4.2" + versionName: "KitKat" + platform: + type: "mobile" + engine: + name: "Blink" + - + ua: "Mozilla/5.0 (iPhone 84; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.0 MQQBrowser/7.8.0 Mobile/14G60 Safari/8536.25 MttCustomUA/2 QBWebViewType/1 WKType/1" + spec: + browser: + name: "QQ Browser" + version: "7.8.0" + os: + name: "iOS" + version: "10.3.3" + platform: + model: "iPhone" + type: "mobile" + vendor: "Apple" + engine: + name: "WebKit" + version: "603.3.8" + - + ua: "Mozilla/5.0 (Linux; U; Android 9; zh-cn; DUK-AL20 Build/HUAWEIDUK-AL20) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/9.6 Mobile Safari/537.36" + spec: + browser: + name: "QQ Browser" + version: "9.6" + os: + name: "Android" + version: "9" + versionName: "Pie" + platform: + type: "mobile" + vendor: "Huawei" + engine: + name: "Blink" + - + ua: "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2141.400 QQBrowser/9.5.10219.400" + spec: + browser: + name: "QQ Browser" + version: "9.5.10219.400" + os: + name: "Windows" + version: "NT 6.1" + versionName: "7" + platform: + type: "desktop" + engine: + name: "Blink" + - + ua: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36 QQBrowser/3.8.3858.400" + spec: + browser: + name: "QQ Browser" + version: "3.8.3858.400" + os: + name: "macOS" + version: "10.10.5" + versionName: "Yosemite" + platform: + type: "desktop" + vendor: "Apple" + engine: + name: "Blink" + QQ Browser Lite: + - + ua: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.3 Safari/605.1.15 QQBrowserLite/1.2.5" + spec: + browser: + name: "QQ Browser Lite" + version: "1.2.5" + os: + name: "macOS" + version: "10.13.6" + versionName: "High Sierra" + platform: + type: "desktop" + vendor: "Apple" + engine: + name: "WebKit" + version: "605.1.15"