diff --git a/src/parser-browsers.js b/src/parser-browsers.js index 8d1b55b..1a3ca28 100644 --- a/src/parser-browsers.js +++ b/src/parser-browsers.js @@ -79,6 +79,51 @@ const browsersList = [ return browser; }, }, + { + test: [/Whale/i], + describe(ua) { + const browser = { + name: 'NAVER Whale Browser', + }; + const version = getFirstMatch(commonVersionIdentifier, ua) || getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/MZBrowser/i], + describe(ua) { + const browser = { + name: 'MZ Browser', + }; + const version = getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i, ua) || getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/focus/i], + describe(ua) { + const browser = { + name: 'Focus', + }; + const version = getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i, ua) || getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, { test: [/coast/i], describe(ua) { @@ -337,12 +382,12 @@ const browsersList = [ }, }, { - test: [/(web|hpw)os/i], + test: [/(web|hpw)[o0]s/i], describe(ua) { const browser = { name: 'WebOS Browser', }; - const version = getFirstMatch(commonVersionIdentifier, ua) || getFirstMatch(/w(?:eb)?osbrowser\/(\d+(\.?_?\d+)+)/i, ua); + const version = getFirstMatch(commonVersionIdentifier, ua) || getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i, ua); if (version) { browser.version = version; diff --git a/src/parser-os.js b/src/parser-os.js index 8ca6446..ad94a42 100644 --- a/src/parser-os.js +++ b/src/parser-os.js @@ -74,13 +74,17 @@ export default [ /* WebOS */ { - test: [/(web|hpw)os/i], + test: [/(web|hpw)[o0]s/i], describe(ua) { - const version = getFirstMatch(/(?:web|hpw)os\/(\d+(\.\d+)*)/i, ua); - return { + const version = getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i, ua); + const os = { name: 'WebOS', - version, }; + + if (version && version.length) { + os.version = version; + } + return os; }, }, diff --git a/test/acceptance/useragentstrings.yml b/test/acceptance/useragentstrings.yml index 66b8c81..bd58f3f 100644 --- a/test/acceptance/useragentstrings.yml +++ b/test/acceptance/useragentstrings.yml @@ -1848,6 +1848,16 @@ engine: name: "WebKit" version: "525.27.1" + - + ua: "Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 WebAppManager" + spec: + browser: + name: "WebOS Browser" + os: + name: "WebOS" + platform: {} + engine: + name: "Blink" Android Browser: - ua: "Mozilla/5.0 (Linux; U; Android 4.4.2; de-de; Nexus 7 Build/KOT49H) AppleWebKit/537.16 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.16" @@ -2348,3 +2358,46 @@ type: "mobile" engine: name: "Blink" + NAVER Whale Browser: + - + ua: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Whale/1.0.40.10 Safari/537.36" + spec: + browser: + name: "NAVER Whale Browser" + version: "1.0.40.10" + os: + name: "macOS" + version: "10.12.6" + platform: + type: "desktop" + vendor: "Apple" + engine: + name: "Blink" + MZ Browser: + - + ua: "Mozilla/5.0 (Linux; U; Android 6.0; zh-CN; MZ-PRO 6 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 MZBrowser/6.9.511-2018012510 UWS/2.11.0.33 Mobile Safari/537.36" + spec: + browser: + name: "MZ Browser" + version: "6.9.511" + os: + name: "Android" + version: "6.0" + platform: + type: "mobile" + engine: + name: "Blink" + Focus: + - + ua: "Mozilla/5.0 (Linux; Android 7.1.1) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.2.1 Chrome/59.0.3071.125" + spec: + browser: + name: "Focus" + version: "1.2.1" + os: + name: "Android" + version: "7.1.1" + platform: + type: "tablet" + engine: + name: "Blink"