diff --git a/src/main/ua-parser.js b/src/main/ua-parser.js index 11ff265..98e3b81 100755 --- a/src/main/ua-parser.js +++ b/src/main/ua-parser.js @@ -1056,7 +1056,7 @@ var brands = uaCH[FULLVERLIST] || uaCH[BRANDS]; if (brands) { for (var i in brands) { - var brandName = brands[i].brand, + var brandName = brands[i].brand || brands[i], brandVersion = brands[i].version; if (!/not.a.brand/i.test(brandName) && (i < 1 || /chromi/i.test(this.get(NAME)))) { this.set(NAME, strip(GOOGLE+' ', brandName)) diff --git a/test/mocha-test.js b/test/mocha-test.js index db0c355..13fddc7 100644 --- a/test/mocha-test.js +++ b/test/mocha-test.js @@ -490,4 +490,26 @@ describe('Map UA-CH headers', function () { assert.strictEqual(ua.device.type, undefined); }); }); + + it('Avoid error on headers variation', function () { + + const headers2 = { + 'sec-ch-ua' : '"Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"', + 'sec-ch-ua-full-version-list' : '"Google Chrome", "Chromium", "Not?A_Brand";v="24.0.0.0"', + 'sec-ch-ua-full-version' : '""', + 'sec-ch-ua-mobile' : '?0', + 'sec-ch-ua-arch' : '""', + 'sec-ch-ua-bitness' : '""', + 'sec-ch-ua-model' : '""', + 'sec-ch-ua-platform' : '"Windows"', + 'sec-ch-ua-platform-version' : '""', + 'sec-ch-ua-wow64' : '?0', + }; + + uap = UAParser(headers2).withClientHints(); + + assert.strictEqual(uap.browser.name, "Chrome"); + assert.strictEqual(uap.browser.version, undefined); + assert.strictEqual(uap.browser.major, undefined); + }); }); \ No newline at end of file