in packages/auth/src/core/util/browser.ts [49:89]
export function _getBrowserName(userAgent: string): BrowserName | string {
const ua = userAgent.toLowerCase();
if (ua.includes('opera/') || ua.includes('opr/') || ua.includes('opios/')) {
return BrowserName.OPERA;
} else if (_isIEMobile(ua)) {
// Windows phone IEMobile browser.
return BrowserName.IEMOBILE;
} else if (ua.includes('msie') || ua.includes('trident/')) {
return BrowserName.IE;
} else if (ua.includes('edge/')) {
return BrowserName.EDGE;
} else if (_isFirefox(ua)) {
return BrowserName.FIREFOX;
} else if (ua.includes('silk/')) {
return BrowserName.SILK;
} else if (_isBlackBerry(ua)) {
// Blackberry browser.
return BrowserName.BLACKBERRY;
} else if (_isWebOS(ua)) {
// WebOS default browser.
return BrowserName.WEBOS;
} else if (_isSafari(ua)) {
return BrowserName.SAFARI;
} else if (
(ua.includes('chrome/') || _isChromeIOS(ua)) &&
!ua.includes('edge/')
) {
return BrowserName.CHROME;
} else if (_isAndroid(ua)) {
// Android stock browser.
return BrowserName.ANDROID;
} else {
// Most modern browsers have name/version at end of user agent string.
const re = /([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/;
const matches = userAgent.match(re);
if (matches?.length === 2) {
return matches[1];
}
}
return BrowserName.OTHER;
}