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;
};