diff --git a/src/queries.ts b/src/queries.ts index 816b6cab..6471384f 100644 --- a/src/queries.ts +++ b/src/queries.ts @@ -242,6 +242,7 @@ const browser_appnames: Record = { zen: ['app.zen_browser.zen'], floorp: ['one.ablaze.floorp'], helium: ['net.imput.helium'], + safari: ['com.apple.Safari'], }; // Returns a list of (browserName, bucketId) pairs for found browser buckets @@ -275,6 +276,7 @@ export const browser_appname_regex: Record = { zen: '(?i)(zen)', floorp: '(?i)(floorp)', helium: '(?i)(helium)', + safari: '(?i)^safari(浏览器)?$', }; // Returns a list of active browser events (where the browser was the active window) from all browser buckets diff --git a/test/unit/queries.test.node.ts b/test/unit/queries.test.node.ts index 19dab25f..039b1a94 100644 --- a/test/unit/queries.test.node.ts +++ b/test/unit/queries.test.node.ts @@ -230,4 +230,13 @@ describe('browser_appname_regex', () => { expect(re.test(name)).toBe(true); } }); + + test('safari pattern matches known Safari app names', () => { + const re = toRegex(browser_appname_regex.safari); + expect(re.test('Safari')).toBe(true); + expect(re.test('safari')).toBe(true); + expect(re.test('Safari浏览器')).toBe(true); // macOS Chinese localization + // Should not match unrelated apps + expect(re.test('SafariBrowser')).toBe(false); + }); });