1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-12 14:34:02 +00:00

Add new device type for DuckDuckGo browser

This commit is contained in:
Todd Martin
2025-05-09 13:30:05 -04:00
parent 89be04a45e
commit 96ab8165f9
3 changed files with 32 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
// FIXME: Update this file to be type safe and remove this and next line
// @ts-strict-ignore
import { DeviceType } from "@bitwarden/common/enums";
import { WebPlatformUtilsService } from "./web-platform-utils.service";
describe("Web Platform Utils Service", () => {
@@ -114,4 +116,27 @@ describe("Web Platform Utils Service", () => {
expect(result).toBe("2022.10.2");
});
});
describe("getDevice", () => {
const originalUserAgent = navigator.userAgent;
const setUserAgent = (userAgent: string) => {
Object.defineProperty(navigator, "userAgent", {
value: userAgent,
configurable: true,
});
};
afterEach(() => {
// Reset to original after each test
setUserAgent(originalUserAgent);
});
test("returns DuckDuckGo browser with example User-Agent", () => {
setUserAgent(
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.3.1 Safari/605.1.15 Ddg/18.3.1",
);
const result = webPlatformUtilsService.getDevice();
expect(result).toBe(DeviceType.DuckDuckGoBrowser);
});
});
});

View File

@@ -34,6 +34,11 @@ export class WebPlatformUtilsService implements PlatformUtilsService {
this.browserCache = DeviceType.EdgeBrowser;
} else if (navigator.userAgent.indexOf(" Vivaldi/") !== -1) {
this.browserCache = DeviceType.VivaldiBrowser;
} else if (
navigator.userAgent.indexOf(" Safari/") !== -1 &&
navigator.userAgent.indexOf("Ddg") !== -1
) {
this.browserCache = DeviceType.DuckDuckGoBrowser;
} else if (
navigator.userAgent.indexOf(" Safari/") !== -1 &&
navigator.userAgent.indexOf("Chrome") === -1

View File

@@ -25,6 +25,7 @@ export enum DeviceType {
WindowsCLI = 23,
MacOsCLI = 24,
LinuxCLI = 25,
DuckDuckGoBrowser = 26,
}
/**
@@ -53,6 +54,7 @@ export const DeviceTypeMetadata: Record<DeviceType, DeviceTypeMetadata> = {
[DeviceType.IEBrowser]: { category: "webVault", platform: "IE" },
[DeviceType.SafariBrowser]: { category: "webVault", platform: "Safari" },
[DeviceType.VivaldiBrowser]: { category: "webVault", platform: "Vivaldi" },
[DeviceType.DuckDuckGoBrowser]: { category: "webVault", platform: "DuckDuckGo" },
[DeviceType.UnknownBrowser]: { category: "webVault", platform: "Unknown" },
[DeviceType.WindowsDesktop]: { category: "desktop", platform: "Windows" },
[DeviceType.MacOsDesktop]: { category: "desktop", platform: "macOS" },