From fc851b40c5db6fe582f2bb017aec694b00b1f9f6 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Sat, 30 Nov 2024 08:33:16 +0700 Subject: [PATCH] Improve device detection: recognize MIUI as Xiaomi --- src/extensions/ua-parser-extensions.js | 2 +- src/main/ua-parser.js | 3 ++- test/data/ua/device/xiaomi.json | 27 ++++++++++++++++++++++++++ test/data/ua/os/android.json | 9 +++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/extensions/ua-parser-extensions.js b/src/extensions/ua-parser-extensions.js index 79dd0b0..69ae56b 100644 --- a/src/extensions/ua-parser-extensions.js +++ b/src/extensions/ua-parser-extensions.js @@ -161,7 +161,7 @@ const ExtraDevices = Object.freeze({ /\b(zur\d{3}) b/i // Swiss ZUR Tablet ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [ - /\b((zeki)?tb.*\b) b/i // Zeki Tablets + /^((zeki)?tb.*\b) b/i // Zeki Tablets ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [ /\b([yr]\d{2}) b/i, diff --git a/src/main/ua-parser.js b/src/main/ua-parser.js index 1f4a5ef..00884b1 100755 --- a/src/main/ua-parser.js +++ b/src/main/ua-parser.js @@ -553,7 +553,8 @@ /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, // Xiaomi Hongmi /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, // Xiaomi Redmi /oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i, // Xiaomi Redmi 'numeric' models - /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i // Xiaomi Mi + /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i, // Xiaomi Mi + / ([\w ]+) miui\/v?\d/i ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [ // OPPO diff --git a/test/data/ua/device/xiaomi.json b/test/data/ua/device/xiaomi.json index 688bd61..22fe005 100644 --- a/test/data/ua/device/xiaomi.json +++ b/test/data/ua/device/xiaomi.json @@ -1,4 +1,31 @@ [ + { + "desc": "MIUI Xiaomi Mi MIX 3 5G", + "ua": "Dalvik/2.1.0 (Linux; U; Android 9; Mi MIX 3 5G MIUI/V10.3.2.0.PEMEUVF)", + "expect": { + "vendor": "Xiaomi", + "model": "Mi MIX 3 5G", + "type": "mobile" + } + }, + { + "desc": "MIUI POCOPHONE F1", + "ua": "Dalvik/2.1.0 (Linux; U; Android 9; POCOPHONE F1 MIUI/9.6.27)", + "expect": { + "vendor": "Xiaomi", + "model": "POCOPHONE F1", + "type": "mobile" + } + }, + { + "desc": "MIUI Xiaomi M2006C3MT", + "ua": "Dalvik/2.1.0 (Linux; U; Android 10; M2006C3MT MIUI/V12.0.7.0.QCRMIXM)", + "expect": { + "vendor": "Xiaomi", + "model": "M2006C3MT", + "type": "mobile" + } + }, { "desc": "Xiaomi 2201117TG", "ua": "Mozilla/5.0 (Linux; Android 11; 2201117TG) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.98 Mobile Safari/537.36", diff --git a/test/data/ua/os/android.json b/test/data/ua/os/android.json index 440fafe..7304e1e 100644 --- a/test/data/ua/os/android.json +++ b/test/data/ua/os/android.json @@ -8,6 +8,15 @@ "version" : "2.2.2" } }, + { + "desc" : "MIUI", + "ua" : "Dalvik/2.1.0 (Linux; U; Android 9; Mi MIX 3 5G MIUI/V10.3.2.0.PEMEUVF)", + "expect" : + { + "name" : "Android", + "version" : "9" + } + }, { "desc" : "KTB-Nexus 5", "ua" : "APP-My App/1.0 (Linux; Android 4.2.1; Nexus 5 Build/JOP40D)",