firebaseui.auth.sni.isSupported = function()

in javascript/utils/sni.js [174:231]


firebaseui.auth.sni.isSupported = function(opt_userAgent) {
  var ua = opt_userAgent || (window.navigator && window.navigator.userAgent);
  if (ua) {
    var result;
    if (result = ua.match(firebaseui.auth.sni.REGEX_OPERA_UA_)) {
      var version = new firebaseui.auth.sni.Version(result[3] || result[1]);
      // Opera Mini, No.
      if (ua.indexOf('Opera Mini') >= 0) {
        return false;
      }
      // Opera Mobile 10.1 or later on Android supports SNI.
      if (ua.indexOf('Opera Mobi') >= 0) {
        return ua.indexOf('Android') >= 0 && version.ge('10.1');
      }
      // Desktop Opera 8.0 or later suppports SNI.
      return version.ge('8.0');
    } else if (result = ua.match(firebaseui.auth.sni.REGEX_FIREFOX_UA_)) {
      // Firefox 2.0 or later supports SNI.
      return new firebaseui.auth.sni.Version(result[1]).ge('2.0');
    } else if (result = ua.match(firebaseui.auth.sni.REGEX_CHROME_UA_)) {
      // Chrome 6.0 or later supports SNI.
      return new firebaseui.auth.sni.Version(result[1]).ge('6.0');
    } else if (result = ua.match(firebaseui.auth.sni.REGEX_SAFARI_UA_)) {
      // Safari 2.1 or later on OS X 10.5.6 or higher and Windows Vista or
      // higher supports SNI.
      var version = new firebaseui.auth.sni.Version(result[6]);
      var winVersion = result[3] && new firebaseui.auth.sni.Version(result[3]);
      var osxVersion = result[5] &&
          new firebaseui.auth.sni.Version(result[5], '_');
      var platSupport = !!(winVersion && winVersion.ge('6.0')) ||
          !!(osxVersion && osxVersion.ge('10.5.6'));
      return platSupport && version.ge('3.0');
    } else if (result = ua.match(firebaseui.auth.sni.REGEX_ANDROID_UA_)) {
      // Android default browser on Android OS 3.0 or higher supports SNI.
      return new firebaseui.auth.sni.Version(result[1]).ge('3.0');
    } else if (result = ua.match(firebaseui.auth.sni.REGEX_MOBILE_SAFARI_UA_)) {
      // Mobile Safari on iOS 4.0 or higher supports SNI.
      return new firebaseui.auth.sni.Version(result[1], '_').ge('4.0');
    } else if (result = ua.match(firebaseui.auth.sni.REGEX_KONQUEROR_UA_)) {
      // Konqueror 4.7 or later supports SNI.
      return new firebaseui.auth.sni.Version(result[1]).ge('4.7');
    } else if (result = ua.match(firebaseui.auth.sni.REGEX_MOBILE_MSIE_UA_)) {
      // Mobile IE on WP7 supports SNI.
      var version = new firebaseui.auth.sni.Version(result[1]);
      var winVersion = new firebaseui.auth.sni.Version(result[2]);
      return version.ge('7.0') && winVersion.ge('7.0');
    } else if (result = ua.match(firebaseui.auth.sni.REGEX_MSIE_UA_)) {
      // Only IE7 or later on Windows Vista or higher supports SNI.
      var version = new firebaseui.auth.sni.Version(result[1]);
      var winVersion = new firebaseui.auth.sni.Version(result[2]);
      return version.ge('7.0') && winVersion.ge('6.0');
    } else if (result = ua.match(firebaseui.auth.sni.REGEX_OLD_SAFARI_UA_)) {
      // Old version Safari doesn't support SNI.
      return false;
    }
  }
  return true;
};