From f51ed7911856fe87786503a22b4cec42fbd7f5f8 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Tue, 20 May 2025 16:41:00 +0700 Subject: [PATCH] Improve device detection: HMD, Infinix, Tecno --- src/main/ua-parser.js | 12 ++++++++---- test/data/ua/device/hmd.json | 27 +++++++++++++++++++++++++++ test/data/ua/device/infinix.json | 27 +++++++++++++++++++++++++++ test/data/ua/device/tecno.json | 27 +++++++++++++++++++++++++++ 4 files changed, 89 insertions(+), 4 deletions(-) diff --git a/src/main/ua-parser.js b/src/main/ua-parser.js index 9d9279d..ae91dbd 100755 --- a/src/main/ua-parser.js +++ b/src/main/ua-parser.js @@ -729,14 +729,18 @@ /; (ac[3-6]\d\w{2,8})( b|\))/i ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [ + // HMD + /; (n159v)/i + ], [MODEL, [VENDOR, 'HMD'], [TYPE, MOBILE]], [ + // MIXED /(imo) (tab \w+)/i, // IMO - /(infinix) (x1101b?)/i // Infinix XPad + /(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i // Infinix XPad / Tecno ], [VENDOR, MODEL, [TYPE, TABLET]], [ - /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i, - // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan - /; (blu|hmd|imo|lava|oneplus|tcl)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i, // BLU/HMD/IMO/Lava/OnePlus/TCL + /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\w]*)/i, + // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Tecno/Micromax/Advan + /; (blu|hmd|imo|infinix|lava|oneplus|tcl)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i, // BLU/HMD/IMO/Infinix/Lava/OnePlus/TCL /(hp) ([\w ]+\w)/i, // HP iPAQ /(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia /(oppo) ?([\w ]+) bui/i // OPPO diff --git a/test/data/ua/device/hmd.json b/test/data/ua/device/hmd.json index a7d38e2..037148c 100644 --- a/test/data/ua/device/hmd.json +++ b/test/data/ua/device/hmd.json @@ -8,6 +8,15 @@ "type": "mobile" } }, + { + "desc": "HMD Fusion", + "ua": "Mozilla/5.0 (Linux; Android 14; HMD Fusion) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Mobile Safari/537.36", + "expect": { + "vendor": "HMD", + "model": "Fusion", + "type": "mobile" + } + }, { "desc": "HMD Pulse", "ua": "Mozilla/5.0 (Linux; Android 14; HMD Pulse) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Mobile Safari/537.36", @@ -34,5 +43,23 @@ "model": "Pulse Pro", "type": "mobile" } + }, + { + "desc": "HMD Skyline", + "ua": "Mozilla/5.0 (Linux; arm_64; Android 14; HMD Skyline) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.1804 YaApp_Android/24.120.1 YaSearchBrowser/24.120.1 BroPP/1.0 SA/3 Mobile Safari/537.36", + "expect": { + "vendor": "HMD", + "model": "Skyline", + "type": "mobile" + } + }, + { + "desc": "HMD Vibe", + "ua": "Mozilla/5.0 (Linux; Android 14; N159V Build/UKQ1.231025.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/135.0.7049.111 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/497.0.0.47.36;]", + "expect": { + "vendor": "HMD", + "model": "N159V", + "type": "mobile" + } } ] \ No newline at end of file diff --git a/test/data/ua/device/infinix.json b/test/data/ua/device/infinix.json index 6c356d3..3474003 100644 --- a/test/data/ua/device/infinix.json +++ b/test/data/ua/device/infinix.json @@ -1,4 +1,22 @@ [ + { + "desc": "Infinix Hot 4", + "ua": "Mozilla/5.0 (Linux; U; Android 7.0; en-us; Infinix HOT 4 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36 PHX/17.9", + "expect": { + "vendor": "Infinix", + "model": "HOT 4", + "type": "mobile" + } + }, + { + "desc": "Infinix Hot 4 Pro", + "ua": "Mozilla/5.0 (Linux; Android 6.0; Infinix_X556_LTE Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/390.0.0.27.105;]", + "expect": { + "vendor": "Infinix", + "model": "X556_LTE", + "type": "mobile" + } + }, { "desc": "Infinix Hot 7 Pro", "ua": "Mozilla/5.0 (Linux; Android 9; Infinix X625C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36", @@ -26,6 +44,15 @@ "type": "mobile" } }, + { + "desc": "Infinix Note 3", + "ua": "Mozilla/5.0 (Linux; Android 6.0; Infinix_X601_LTE Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/81.0.4044.111 Mobile Safari/537.36 GSA/11.5.9.21.arm64", + "expect": { + "vendor": "Infinix", + "model": "X601_LTE", + "type": "mobile" + } + }, { "desc": "Infinix Smart 5", "ua": "Mozilla/5.0 (Linux; Android 10; Infinix X657C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Mobile Safari/537.36", diff --git a/test/data/ua/device/tecno.json b/test/data/ua/device/tecno.json index a002fcf..4413f95 100644 --- a/test/data/ua/device/tecno.json +++ b/test/data/ua/device/tecno.json @@ -1,4 +1,31 @@ [ + { + "desc": "Tecno DroiPad 8D", + "ua": "Mozilla/5.0 (Linux; U; Android 5.1; TECNO DP8D Build/LMY47D; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Safari/537.36 OPR/42.0.2254.139280", + "expect": { + "vendor": "TECNO", + "model": "DP8D", + "type": "tablet" + } + }, + { + "desc": "Tecno DroiPad 10A Pro", + "ua": "Mozilla/5.0 (Linux; Android 5.1; TECNO DP10A Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.74 Safari/537.36", + "expect": { + "vendor": "TECNO", + "model": "DP10A Pro", + "type": "tablet" + } + }, + { + "desc": "Tecno DroiPad 10D 4G", + "ua": "Mozilla/5.0 (Linux; Android 7.0; TECNO P904) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Mobile Safari/537.36 OPR/77.0.4054.90", + "expect": { + "vendor": "TECNO", + "model": "P904", + "type": "tablet" + } + }, { "desc": "Tecno KC8", "ua": "Mozilla/5.0 (Linux; Android 10; TECNO KC8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36",