Browser naming adjustments for Client Hints:

- `Google Chrome` => `Chrome`
- `Microsoft Edge` => `Edge`
- `Android WebView` => `Chrome WebView`
- `HeadlessChrome` => `Chrome Headless`
This commit is contained in:
Faisal Salman 2024-11-30 13:09:02 +07:00
parent fc851b40c5
commit dbd24a579f
2 changed files with 44 additions and 1 deletions

View File

@ -1167,9 +1167,15 @@
var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName; var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName;
if (brands) { if (brands) {
for (var i in brands) { for (var i in brands) {
var brandName = strip(/(Google|Microsoft) /, brands[i].brand || brands[i]), var brandName = brands[i].brand || brands[i],
brandVersion = brands[i].version; brandVersion = brands[i].version;
if (this.itemType == UA_BROWSER && !/not.a.brand/i.test(brandName) && (!prevName || (/chrom/i.test(prevName) && brandName != CHROMIUM))) { if (this.itemType == UA_BROWSER && !/not.a.brand/i.test(brandName) && (!prevName || (/chrom/i.test(prevName) && brandName != CHROMIUM))) {
brandName = strMapper(brandName, {
'Chrome' : 'Google Chrome',
'Edge' : 'Microsoft Edge',
'Chrome WebView' : 'Android WebView',
'Chrome Headless' : 'HeadlessChrome'
});
this.set(NAME, brandName) this.set(NAME, brandName)
.set(VERSION, brandVersion) .set(VERSION, brandVersion)
.set(MAJOR, majorize(brandVersion)); .set(MAJOR, majorize(brandVersion));

37
test/unit/ua-ch.js Normal file
View File

@ -0,0 +1,37 @@
const assert = require('assert');
const { UAParser } = require('../../src/main/ua-parser');
describe('Browser naming adjustments', () => {
it('Google Chrome => Chrome', () => {
const headers = {
'sec-ch-ua' : '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"',
};
const { browser } = UAParser(headers).withClientHints();
assert.strictEqual(browser.name, 'Chrome');
});
it('Microsoft Edge => Edge', () => {
const headers = {
'sec-ch-ua' : '"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"',
};
const { browser } = UAParser(headers).withClientHints();
assert.strictEqual(browser.name, 'Edge');
});
it('Android WebView => Chrome WebView', () => {
const headers = {
'sec-ch-ua' : '"Android WebView";v="123", "Not:A-Brand";v="8", "Chromium";v="123"',
};
const { browser } = UAParser(headers).withClientHints();
assert.strictEqual(browser.name, 'Chrome WebView');
});
it('HeadlessChrome => Chrome Headless', () => {
const headers = {
'sec-ch-ua' : '"Chromium";v="124", "HeadlessChrome";v="124", "Not-A.Brand";v="99"',
};
const { browser } = UAParser(headers).withClientHints();
assert.strictEqual(browser.name, 'Chrome Headless');
});
});