123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580 |
- goog.provide('goog.userAgent');
- goog.require('goog.labs.userAgent.browser');
- goog.require('goog.labs.userAgent.engine');
- goog.require('goog.labs.userAgent.platform');
- goog.require('goog.labs.userAgent.util');
- goog.require('goog.reflect');
- goog.require('goog.string');
- goog.define('goog.userAgent.ASSUME_IE', false);
- goog.define('goog.userAgent.ASSUME_EDGE', false);
- goog.define('goog.userAgent.ASSUME_GECKO', false);
- goog.define('goog.userAgent.ASSUME_WEBKIT', false);
- goog.define('goog.userAgent.ASSUME_MOBILE_WEBKIT', false);
- goog.define('goog.userAgent.ASSUME_OPERA', false);
- goog.define('goog.userAgent.ASSUME_ANY_VERSION', false);
- goog.userAgent.BROWSER_KNOWN_ = goog.userAgent.ASSUME_IE ||
- goog.userAgent.ASSUME_EDGE || goog.userAgent.ASSUME_GECKO ||
- goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.ASSUME_WEBKIT ||
- goog.userAgent.ASSUME_OPERA;
- goog.userAgent.getUserAgentString = function() {
- return goog.labs.userAgent.util.getUserAgent();
- };
- goog.userAgent.getNavigator = function() {
-
-
-
- return goog.global['navigator'] || null;
- };
- goog.userAgent.OPERA = goog.userAgent.BROWSER_KNOWN_ ?
- goog.userAgent.ASSUME_OPERA :
- goog.labs.userAgent.browser.isOpera();
- goog.userAgent.IE = goog.userAgent.BROWSER_KNOWN_ ?
- goog.userAgent.ASSUME_IE :
- goog.labs.userAgent.browser.isIE();
- goog.userAgent.EDGE = goog.userAgent.BROWSER_KNOWN_ ?
- goog.userAgent.ASSUME_EDGE :
- goog.labs.userAgent.engine.isEdge();
- goog.userAgent.EDGE_OR_IE = goog.userAgent.EDGE || goog.userAgent.IE;
- goog.userAgent.GECKO = goog.userAgent.BROWSER_KNOWN_ ?
- goog.userAgent.ASSUME_GECKO :
- goog.labs.userAgent.engine.isGecko();
- goog.userAgent.WEBKIT = goog.userAgent.BROWSER_KNOWN_ ?
- goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_MOBILE_WEBKIT :
- goog.labs.userAgent.engine.isWebKit();
- goog.userAgent.isMobile_ = function() {
- return goog.userAgent.WEBKIT &&
- goog.labs.userAgent.util.matchUserAgent('Mobile');
- };
- goog.userAgent.MOBILE =
- goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.isMobile_();
- goog.userAgent.SAFARI = goog.userAgent.WEBKIT;
- goog.userAgent.determinePlatform_ = function() {
- var navigator = goog.userAgent.getNavigator();
- return navigator && navigator.platform || '';
- };
- goog.userAgent.PLATFORM = goog.userAgent.determinePlatform_();
- goog.define('goog.userAgent.ASSUME_MAC', false);
- goog.define('goog.userAgent.ASSUME_WINDOWS', false);
- goog.define('goog.userAgent.ASSUME_LINUX', false);
- goog.define('goog.userAgent.ASSUME_X11', false);
- goog.define('goog.userAgent.ASSUME_ANDROID', false);
- goog.define('goog.userAgent.ASSUME_IPHONE', false);
- goog.define('goog.userAgent.ASSUME_IPAD', false);
- goog.define('goog.userAgent.ASSUME_IPOD', false);
- goog.userAgent.PLATFORM_KNOWN_ = goog.userAgent.ASSUME_MAC ||
- goog.userAgent.ASSUME_WINDOWS || goog.userAgent.ASSUME_LINUX ||
- goog.userAgent.ASSUME_X11 || goog.userAgent.ASSUME_ANDROID ||
- goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD ||
- goog.userAgent.ASSUME_IPOD;
- goog.userAgent.MAC = goog.userAgent.PLATFORM_KNOWN_ ?
- goog.userAgent.ASSUME_MAC :
- goog.labs.userAgent.platform.isMacintosh();
- goog.userAgent.WINDOWS = goog.userAgent.PLATFORM_KNOWN_ ?
- goog.userAgent.ASSUME_WINDOWS :
- goog.labs.userAgent.platform.isWindows();
- goog.userAgent.isLegacyLinux_ = function() {
- return goog.labs.userAgent.platform.isLinux() ||
- goog.labs.userAgent.platform.isChromeOS();
- };
- goog.userAgent.LINUX = goog.userAgent.PLATFORM_KNOWN_ ?
- goog.userAgent.ASSUME_LINUX :
- goog.userAgent.isLegacyLinux_();
- goog.userAgent.isX11_ = function() {
- var navigator = goog.userAgent.getNavigator();
- return !!navigator &&
- goog.string.contains(navigator['appVersion'] || '', 'X11');
- };
- goog.userAgent.X11 = goog.userAgent.PLATFORM_KNOWN_ ?
- goog.userAgent.ASSUME_X11 :
- goog.userAgent.isX11_();
- goog.userAgent.ANDROID = goog.userAgent.PLATFORM_KNOWN_ ?
- goog.userAgent.ASSUME_ANDROID :
- goog.labs.userAgent.platform.isAndroid();
- goog.userAgent.IPHONE = goog.userAgent.PLATFORM_KNOWN_ ?
- goog.userAgent.ASSUME_IPHONE :
- goog.labs.userAgent.platform.isIphone();
- goog.userAgent.IPAD = goog.userAgent.PLATFORM_KNOWN_ ?
- goog.userAgent.ASSUME_IPAD :
- goog.labs.userAgent.platform.isIpad();
- goog.userAgent.IPOD = goog.userAgent.PLATFORM_KNOWN_ ?
- goog.userAgent.ASSUME_IPOD :
- goog.labs.userAgent.platform.isIpod();
- goog.userAgent.IOS = goog.userAgent.PLATFORM_KNOWN_ ?
- (goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD ||
- goog.userAgent.ASSUME_IPOD) :
- goog.labs.userAgent.platform.isIos();
- goog.userAgent.determineVersion_ = function() {
-
-
-
-
- var version = '';
- var arr = goog.userAgent.getVersionRegexResult_();
- if (arr) {
- version = arr ? arr[1] : '';
- }
- if (goog.userAgent.IE) {
-
-
-
-
-
- var docMode = goog.userAgent.getDocumentMode_();
- if (docMode != null && docMode > parseFloat(version)) {
- return String(docMode);
- }
- }
- return version;
- };
- goog.userAgent.getVersionRegexResult_ = function() {
- var userAgent = goog.userAgent.getUserAgentString();
- if (goog.userAgent.GECKO) {
- return /rv\:([^\);]+)(\)|;)/.exec(userAgent);
- }
- if (goog.userAgent.EDGE) {
- return /Edge\/([\d\.]+)/.exec(userAgent);
- }
- if (goog.userAgent.IE) {
- return /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(userAgent);
- }
- if (goog.userAgent.WEBKIT) {
-
- return /WebKit\/(\S+)/.exec(userAgent);
- }
- if (goog.userAgent.OPERA) {
-
-
- return /(?:Version)[ \/]?(\S+)/.exec(userAgent);
- }
- return undefined;
- };
- goog.userAgent.getDocumentMode_ = function() {
-
- var doc = goog.global['document'];
- return doc ? doc['documentMode'] : undefined;
- };
- goog.userAgent.VERSION = goog.userAgent.determineVersion_();
- goog.userAgent.compare = function(v1, v2) {
- return goog.string.compareVersions(v1, v2);
- };
- goog.userAgent.isVersionOrHigherCache_ = {};
- goog.userAgent.isVersionOrHigher = function(version) {
- return goog.userAgent.ASSUME_ANY_VERSION ||
- goog.reflect.cache(
- goog.userAgent.isVersionOrHigherCache_, version, function() {
- return goog.string.compareVersions(
- goog.userAgent.VERSION, version) >= 0;
- });
- };
- goog.userAgent.isVersion = goog.userAgent.isVersionOrHigher;
- goog.userAgent.isDocumentModeOrHigher = function(documentMode) {
- return Number(goog.userAgent.DOCUMENT_MODE) >= documentMode;
- };
- goog.userAgent.isDocumentMode = goog.userAgent.isDocumentModeOrHigher;
- goog.userAgent.DOCUMENT_MODE = (function() {
- var doc = goog.global['document'];
- var mode = goog.userAgent.getDocumentMode_();
- if (!doc || !goog.userAgent.IE) {
- return undefined;
- }
- return mode || (doc['compatMode'] == 'CSS1Compat' ?
- parseInt(goog.userAgent.VERSION, 10) :
- 5);
- })();
|