From 726a458c84937e07ddea0e3b889afc9b042eaf34 Mon Sep 17 00:00:00 2001 From: Masahiko Sato Date: Fri, 17 Jan 2020 15:42:02 +0900 Subject: [PATCH 1/2] Try to detect Android device models from unidentified vendors. --- src/ua-parser.js | 8 ++++++++ test/device-test.json | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/ua-parser.js b/src/ua-parser.js index 88765b2..920a1ee 100755 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -668,6 +668,14 @@ /android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i // Gigaset Tablets ], [VENDOR, MODEL, [TYPE, TABLET]], [ + // Android Phones from Unidentified Vendors + /android .+?;\s([^;]+?)(?:\sbuild.+?)?\) applewebkit.+?\smobile\ssafari/i + ], [MODEL, [TYPE, MOBILE]], [ + + // Android Tablets from Unidentified Vendors + /android .+?;\s([^;]+?)(?:\sbuild.+?)?\) applewebkit.+?(?!\smobile)\ssafari/i + ], [MODEL, [TYPE, TABLET]], [ + /\s(tablet|tab)[;\/]/i, // Unidentifiable Tablet /\s(mobile)(?:[;\/]|\ssafari)/i // Unidentifiable Mobile ], [[TYPE, util.lowerize], VENDOR, MODEL], [ diff --git a/test/device-test.json b/test/device-test.json index a0bf104..0ee8440 100644 --- a/test/device-test.json +++ b/test/device-test.json @@ -794,12 +794,44 @@ }, { "desc": "Generic Android Device", - "ua": "Mozilla/5.0 (Linux; U; Android 6.0.1; i980 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36", + "ua": "Mozilla/5.0 (Linux; U; Android 6.0.1; i980 Build/MRA58K)", "expect": { "vendor": "Generic", "model": "Android 6.0.1" } }, + { + "desc": "Android Phone Unidentified Vendor (docomo F-04K)", + "ua": "Mozilla/5.0 (Linux; Android 8.1.0; F-04K Build/V15R060P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.137 Mobile Safari/537.36", + "expect": { + "model": "F-04K", + "type": "mobile" + } + }, + { + "desc": "Android Phone Unidentified Vendor (docomo SH-02M)", + "ua": "Mozilla/5.0 (Linux; Android 9; SH-02M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36", + "expect": { + "model": "SH-02M", + "type": "mobile" + } + }, + { + "desc": "Android Tablet Unidentified Vendor (docomo F-02K)", + "ua": "Mozilla/5.0 (Linux; Android 8.1.0; F-02K Build/V44R059G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Safari/537.36", + "expect": { + "model": "F-02K", + "type": "tablet" + } + }, + { + "desc": "Android Tablet Unidentified Vendor (docomo d-02K)", + "ua": "Mozilla/5.0 (Linux; Android 9; d-02K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Safari/537.36", + "expect": { + "model": "d-02K", + "type": "tablet" + } + }, { "desc": "LG VK Series Tablet", "ua": "Mozilla/5.0 (Linux; Android 5.0.2; VK700 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.84 Safari/537.36", From 7568f0a6f53b0bb8b042a2503da47e2dc06303e5 Mon Sep 17 00:00:00 2001 From: Masahiko Sato Date: Mon, 20 Jan 2020 17:15:57 +0900 Subject: [PATCH 2/2] Updated the regexp patterns to be simpler/safer. --- 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 920a1ee..a9e6c53 100755 --- a/src/ua-parser.js +++ b/src/ua-parser.js @@ -667,13 +667,11 @@ /android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i // Gigaset Tablets ], [VENDOR, MODEL, [TYPE, TABLET]], [ - // Android Phones from Unidentified Vendors - /android .+?;\s([^;]+?)(?:\sbuild.+?)?\) applewebkit.+?\smobile\ssafari/i + /android .+?; ([^;]+?)(?: build|\) applewebkit).+? mobile safari/i ], [MODEL, [TYPE, MOBILE]], [ - // Android Tablets from Unidentified Vendors - /android .+?;\s([^;]+?)(?:\sbuild.+?)?\) applewebkit.+?(?!\smobile)\ssafari/i + /android .+?;\s([^;]+?)(?: build|\) applewebkit).+?(?! mobile) safari/i ], [MODEL, [TYPE, TABLET]], [ /\s(tablet|tab)[;\/]/i, // Unidentifiable Tablet