export function getBrowserName()

in authui-container/src/utils/browser.ts [39:84]


export function getBrowserName(userAgent?: string): string {
  const ua = (userAgent || getUserAgentString()).toLowerCase();
  if (ua.indexOf('opera/') !== -1 ||
      ua.indexOf('opr/') !== -1 ||
      ua.indexOf('opios/') !== -1) {
    return BrowserName.Opera;
  } else if (ua.indexOf('iemobile') !== -1) {
    // Windows phone IEMobile browser.
    return BrowserName.IEMobile;
  } else if (ua.indexOf('msie') !== -1 ||
             ua.indexOf('trident/') !== -1) {
    return BrowserName.IE;
  } else if (ua.indexOf('edge/') !== -1) {
    return BrowserName.Edge;
  } else if (ua.indexOf('firefox/') !== -1) {
    return BrowserName.Firefox;
  } else if (ua.indexOf('silk/') !== -1) {
    return BrowserName.Silk;
  } else if (ua.indexOf('blackberry') !== -1) {
    // Blackberry browser.
    return BrowserName.Blackberry;
  } else if (ua.indexOf('webos') !== -1) {
    // WebOS default browser.
    return BrowserName.Webos;
  } else if (ua.indexOf('safari/') !== -1 &&
             ua.indexOf('chrome/') === -1 &&
             ua.indexOf('crios/') === -1 &&
             ua.indexOf('android') === -1) {
    return BrowserName.Safari;
  } else if ((ua.indexOf('chrome/') !== -1 ||
              ua.indexOf('crios/') !== -1) &&
             ua.indexOf('edge/') === -1) {
    return BrowserName.Chrome;
  } else if (ua.indexOf('android') !== -1) {
    // Android stock browser.
    return BrowserName.Android;
  } else {
    // Most modern browsers have name/version at end of user agent string.
    const re = new RegExp('([a-zA-Z\\d\\.]+)\/[a-zA-Z\\d\\.]*$');
    const matches = userAgent.match(re);
    if (matches && matches.length === 2) {
      return matches[1];
    }
  }
  return BrowserName.Other;
}