the browser is based on WebKit.
437016
function DetectAndroidWebKit()
   {
      if (($this->DetectAndroid() == $this->true) &&
		($this->DetectWebkit() == $this->true))
         return $this->true; 
      else
         return $this->false; 
   }
1246680
function checkBrowser () {
        if (cordova.platformId === 'browser' && require('./isChrome')()) { // eslint-disable-line no-undef
            module.exports = window.requestFileSystem || window.webkitRequestFileSystem;
            return true;
        }
        return false;
    }
392229
function configureLocalBrowsers (config) {
  var isMac = /^darwin/.test(process.platform);
  var isWindows = /^win/.test(process.platform);
  var isLinux = !isMac && !isWindows;

  if (isMac) {
    config.browsers = ['Firefox', 'Chrome', 'Safari'];
  }
  else if (isLinux) {
    config.browsers = ['Firefox', 'ChromeHeadless'];
  }
  else if (isWindows) {
    config.browsers = ['Firefox', 'Chrome', 'IE9', 'IE10', 'IE'];

    // NOTE: IE 6, 7, 8 are not supported by Chai
    config.customLaunchers = {
      IE9: {
        base: 'IE',
        'x-ua-compatible': 'IE=EmulateIE9'
      },
      IE10: {
        base: 'IE',
        'x-ua-compatible': 'IE=EmulateIE10'
      }
    };
  }
}
592421
function detect(ua) {
    var os = {};
    var browser = {};
    // var webkit = ua.match(/Web[kK]it[\/]{0,1}([\d.]+)/);
    // var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
    // var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
    // var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
    // var iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/);
    // var webos = ua.match(/(webOS|hpwOS)[\s\/]([\d.]+)/);
    // var touchpad = webos && ua.match(/TouchPad/);
    // var kindle = ua.match(/Kindle\/([\d.]+)/);
    // var silk = ua.match(/Silk\/([\d._]+)/);
    // var blackberry = ua.match(/(BlackBerry).*Version\/([\d.]+)/);
    // var bb10 = ua.match(/(BB10).*Version\/([\d.]+)/);
    // var rimtabletos = ua.match(/(RIM\sTablet\sOS)\s([\d.]+)/);
    // var playbook = ua.match(/PlayBook/);
    // var chrome = ua.match(/Chrome\/([\d.]+)/) || ua.match(/CriOS\/([\d.]+)/);
    var firefox = ua.match(/Firefox\/([\d.]+)/);
    // var safari = webkit && ua.match(/Mobile\//) && !chrome;
    // var webview = ua.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/) && !chrome;
    var ie = ua.match(/MSIE\s([\d.]+)/)
        // IE 11 Trident/7.0; rv:11.0
        || ua.match(/Trident\/.+?rv:(([\d.]+))/);
    var edge = ua.match(/Edge\/([\d.]+)/); // IE 12 and 12+

    var weChat = (/micromessenger/i).test(ua);

    // Todo: clean this up with a better OS/browser seperation:
    // - discern (more) between multiple browsers on android
    // - decide if kindle fire in silk mode is android or not
    // - Firefox on Android doesn't specify the Android version
    // - possibly devide in os, device and browser hashes

    // if (browser.webkit = !!webkit) browser.version = webkit[1];

    // if (android) os.android = true, os.version = android[2];
    // if (iphone && !ipod) os.ios = os.iphone = true, os.version = iphone[2].replace(/_/g, '.');
    // if (ipad) os.ios = os.ipad = true, os.version = ipad[2].replace(/_/g, '.');
    // if (ipod) os.ios = os.ipod = true, os.version = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
    // if (webos) os.webos = true, os.version = webos[2];
    // if (touchpad) os.touchpad = true;
    // if (blackberry) os.blackberry = true, os.version = blackberry[2];
    // if (bb10) os.bb10 = true, os.version = bb10[2];
    // if (rimtabletos) os.rimtabletos = true, os.version = rimtabletos[2];
    // if (playbook) browser.playbook = true;
    // if (kindle) os.kindle = true, os.version = kindle[1];
    // if (silk) browser.silk = true, browser.version = silk[1];
    // if (!silk && os.android && ua.match(/Kindle Fire/)) browser.silk = true;
    // if (chrome) browser.chrome = true, browser.version = chrome[1];
    if (firefox) {
        browser.firefox = true;
        browser.version = firefox[1];
    }
    // if (safari && (ua.match(/Safari/) || !!os.ios)) browser.safari = true;
    // if (webview) browser.webview = true;

    if (ie) {
        browser.ie = true;
        browser.version = ie[1];
    }

    if (edge) {
        browser.edge = true;
        browser.version = edge[1];
    }

    // It is difficult to detect WeChat in Win Phone precisely, because ua can
    // not be set on win phone. So we do not consider Win Phone.
    if (weChat) {
        browser.weChat = true;
    }

    // os.tablet = !!(ipad || playbook || (android && !ua.match(/Mobile/)) ||
    //     (firefox && ua.match(/Tablet/)) || (ie && !ua.match(/Phone/) && ua.match(/Touch/)));
    // os.phone  = !!(!os.tablet && !os.ipod && (android || iphone || webos ||
    //     (chrome && ua.match(/Android/)) || (chrome && ua.match(/CriOS\/([\d.]+)/)) ||
    //     (firefox && ua.match(/Mobile/)) || (ie && ua.match(/Touch/))));

    return {
        browser: browser,
        os: os,
        node: false,
        // 原生canvas支持，改极端点了
        // canvasSupported : !(browser.ie && parseFloat(browser.version) < 9)
        canvasSupported: !!document.createElement('canvas').getContext,
        svgSupported: typeof SVGRect !== 'undefined',
        // works on most browsers
        // IE10/11 does not support touch event, and MS Edge supports them but not by
        // default, so we dont check navigator.maxTouchPoints for them here.
        touchEventsSupported: 'ontouchstart' in window && !browser.ie && !browser.edge,
        // <http://caniuse.com/#search=pointer%20event>.
        pointerEventsSupported: 'onpointerdown' in window
            // Firefox supports pointer but not by default, only MS browsers are reliable on pointer
            // events currently. So we dont use that on other browsers unless tested sufficiently.
            // Although IE 10 supports pointer event, it use old style and is different from the
            // standard. So we exclude that. (IE 10 is hardly used on touch device)
            && (browser.edge || (browser.ie && browser.version >= 11)),
        // passiveSupported: detectPassiveSupport()
        domSupported: typeof document !== 'undefined'
    };
}
872412
function browserSpecific() {
    var data = '';
    return through(
        function(buf) {
            data += buf;
        },
        function() {
            this.queue(data.replace(/\.\/node\//g, './browser/'));
            this.queue(null);
        }
    );
}
480835
function getBrowserInformation(userAgent) {
  var browserInfo = _bowser2.default._detect(userAgent);

  for (var browser in prefixByBrowser) {
    if (browserInfo.hasOwnProperty(browser)) {
      var prefix = prefixByBrowser[browser];

      browserInfo.jsPrefix = prefix;
      browserInfo.cssPrefix = '-' + prefix.toLowerCase() + '-';
      break;
    }
  }

  browserInfo.browserName = getBrowserName(browserInfo);

  // For cordova IOS 8 the version is missing, set truncated osversion to prevent NaN
  if (browserInfo.version) {
    browserInfo.browserVersion = parseFloat(browserInfo.version);
  } else {
    browserInfo.browserVersion = parseInt(parseFloat(browserInfo.osversion), 10);
  }

  browserInfo.osVersion = parseFloat(browserInfo.osversion);

  // iOS forces all browsers to use Safari under the hood
  // as the Safari version seems to match the iOS version
  // we just explicitely use the osversion instead
  // https://github.com/rofrischmann/inline-style-prefixer/issues/72
  if (browserInfo.browserName === 'ios_saf' && browserInfo.browserVersion > browserInfo.osVersion) {
    browserInfo.browserVersion = browserInfo.osVersion;
  }

  // seperate native android chrome
  // https://github.com/rofrischmann/inline-style-prefixer/issues/45
  if (browserInfo.browserName === 'android' && browserInfo.chrome && browserInfo.browserVersion > 37) {
    browserInfo.browserName = 'and_chr';
  }

  // For android < 4.4 we want to check the osversion
  // not the chrome version, see issue #26
  // https://github.com/rofrischmann/inline-style-prefixer/issues/26
  if (browserInfo.browserName === 'android' && browserInfo.osVersion < 5) {
    browserInfo.browserVersion = browserInfo.osVersion;
  }

  // Samsung browser are basically build on Chrome > 44
  // https://github.com/rofrischmann/inline-style-prefixer/issues/102
  if (browserInfo.browserName === 'android' && browserInfo.samsungBrowser) {
    browserInfo.browserName = 'and_chr';
    browserInfo.browserVersion = 44;
  }

  return browserInfo;
}
1154053
function detectBrowser (browsers, browserQuery) {
  var b = false;
  browserQuery = browserslist(browserQuery);
  for (var i = 0; i < browsers.length; i++) {
    for (var j = 0; j < browserQuery.length; j++) {
      if (browsers[i] === browserQuery[j]) {
        b = true;
        break;
      }
    }
    if (b) { break; }
  }
  return b;
}
417837
def detect_s60_oss_browser()

      if (detect_webkit() && (user_agent.include?(DEVICE_SYMBIAN) || user_agent.include?(DEVICE_S60)))
        return true
      end
      return false
    end
467855
function pollWebKit() {
    var css = pending.css, i, ret = false;

    if (css) {
      i = styleSheets.length;

      // Look for a stylesheet matching the pending URL.
      while (--i >= 0) {
        if (styleSheets[i].href === css.urls[0]) {
          ret = true;
          finish('css');
          break;
        }
      }

      pollCount += 1;

      if (css) {
        if (pollCount < 200) {
          setTimeout(pollWebKit, 50);
        } else {
          // We've been polling for 10 seconds and nothing's happened, which may
          // indicate that the stylesheet has been removed from the document
          // before it had a chance to load. Stop polling and finish the pending
          // request to prevent blocking further requests.
          finish('css');
        }
      }
    }
    return ret;
  }
215286
function (browser) {
    var isValid = this.platforms.reduce(function (previousValue, platform) {
      if (previousValue === browser.platform || platform === browser.platform) {
        return browser.platform;
      }
    });

    return isValid || this.desiredCapabilities.platform;
  }
1184312
def open_browser(self):
        """"""
        webbrowser.open(
            "http://{host}:{port}/".format(host=self.host, port=self.port))
1065334
function checkBrowser() {
	this.ver = navigator.appVersion
	this.dom = document.getElementById ? 1 : 0
	this.ie5 = (this.ver.indexOf("MSIE 5") > -1 && this.dom) ? 1 : 0;
	this.ie4 = (document.all && !this.dom) ? 1 : 0;
	this.ns5 = (this.dom && parseInt(this.ver) >= 5) ? 1 : 0;
	this.ns4 = (document.layers && !this.dom) ? 1 : 0;
	this.bw = (this.ie5 || this.ie4 || this.ns4 || this.ns5)
	return this
}
1281912
function(window) {
    var navigator = window && window.navigator;

    // Returned result object.
    var result = {};
    result.browser = null;
    result.version = null;

    // Fail early if it's not a browser
    if (typeof window === 'undefined' || !window.navigator) {
      result.browser = 'Not a browser.';
      return result;
    }

    if (navigator.mozGetUserMedia) { // Firefox.
      result.browser = 'firefox';
      result.version = extractVersion(navigator.userAgent,
          /Firefox\/(\d+)\./, 1);
    } else if (navigator.webkitGetUserMedia) {
      // Chrome, Chromium, Webview, Opera.
      // Version matches Chrome/WebRTC version.
      result.browser = 'chrome';
      result.version = extractVersion(navigator.userAgent,
          /Chrom(e|ium)\/(\d+)\./, 2);
    } else if (navigator.mediaDevices &&
        navigator.userAgent.match(/Edge\/(\d+).(\d+)$/)) { // Edge.
      result.browser = 'edge';
      result.version = extractVersion(navigator.userAgent,
          /Edge\/(\d+).(\d+)$/, 2);
    } else if (window.RTCPeerConnection &&
        navigator.userAgent.match(/AppleWebKit\/(\d+)\./)) { // Safari.
      result.browser = 'safari';
      result.version = extractVersion(navigator.userAgent,
          /AppleWebKit\/(\d+)\./, 1);
    } else { // Default fallthrough: not supported.
      result.browser = 'Not a supported browser.';
      return result;
    }

    return result;
  }
712042
function() {
            this._styleCache = {};

            // -----------------------------------------------------------------

            this.ua = "";

            this.name = "";
            this.version = "";

            this.majorVersion = 0;
            /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
            this._browserType = "";
            this._browserVersion = "";
            /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */
            this.isIE = false;
            /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
            this._isIE6 = false;
            /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */
            this.isIE7 = false;
            this.isIE8 = false;
            this.isIE9 = false;
            this.isIE10 = false;
            this.isIE11 = false;
            this.isOldIE = false;
            this.isModernIE = false;
            this.isEdge = false;
            this.isFirefox = false;
            /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
            this._isFF = false;
            /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */
            this.isChrome = false;
            this.isSafari = false;
            this.isOpera = false;
            this.isBlackBerryBrowser = false;
            this.isAndroidBrowser = false;
            this.isSafariMobile = false;
            this.isIEMobile = false;
            this.isOperaMobile = false;
            this.isOperaMini = false;
            this.isS60 = false;
            this.isPhantomJS = false;
            this.isOtherBrowser = false;

            this.isWebkit = false;
            this.isGecko = false;

            this.osName = "";
            this.osVersion = "";
            /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
            this._environment = "";
            /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */
            this.isWindows = false;
            this.isMac = false;
            this.isIOS = false;
            this.isAndroid = false;
            this.isWindowsPhone = false;
            this.isBlackBerry = false;
            this.isSymbian = false;
            this.isOtherOS = false;
            /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
            this._isOtherMobile = false;
            /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */

            this.isMobileView = false;
            this.isDesktopView = false;
            /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
            this._DesktopView = false;
            /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */

            /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
            this._isPhone = false;
            this._isTablet = false;
            this._deviceName = "";
            /* BACKWARD-COMPATIBILITY-END (GitHub #1397) */
        }
734961
function () {
            var browser = api.browser.name, version = api.browser.version;

            switch (browser) {
                case "ie":
                    return version >= 9;
                    
                case "chrome":
                    return version >= 13;
                    
                case "ff":
                    return version >= 6;
                    
                case "ios":
                    return version >= 5;

                case "android":
                    return false;

                case "webkit":
                    return version >= 5.1;
                    
                case "opera":
                    return version >= 10;
                    
                default:
                    return false;
            }
        }
37947
function getBrowser()
    {
        $sys = $this->server['HTTP_USER_AGENT'];
        if (stripos($sys, "Firefox/") > 0)
        {
            preg_match("/Firefox\/([^;)]+)+/i", $sys, $b);
            $exp[0] = "Firefox";
            $exp[1] = $b[1];
        }
        elseif (stripos($sys, "Maxthon") > 0)
        {
            preg_match("/Maxthon\/([\d\.]+)/", $sys, $aoyou);
            $exp[0] = "傲游";
            $exp[1] = $aoyou[1];
        }
        elseif (stripos($sys, "MSIE") > 0)
        {
            preg_match("/MSIE\s+([^;)]+)+/i", $sys, $ie);
            $exp[0] = "IE";
            $exp[1] = $ie[1];
        }
        elseif (stripos($sys, "OPR") > 0)
        {
            preg_match("/OPR\/([\d\.]+)/", $sys, $opera);
            $exp[0] = "Opera";
            $exp[1] = $opera[1];
        }
        elseif (stripos($sys, "Edge") > 0)
        {
            preg_match("/Edge\/([\d\.]+)/", $sys, $Edge);
            $exp[0] = "Edge";
            $exp[1] = $Edge[1];
        }
        elseif (stripos($sys, "Chrome") > 0)
        {
            preg_match("/Chrome\/([\d\.]+)/", $sys, $google);
            $exp[0] = "Chrome";
            $exp[1] = $google[1];
        }
        elseif (stripos($sys, 'rv:') > 0 && stripos($sys, 'Gecko') > 0)
        {
            preg_match("/rv:([\d\.]+)/", $sys, $IE);
            $exp[0] = "IE";
            $exp[1] = $IE[1];
        }
        else
        {
            $exp[0] = "Unkown";
            $exp[1] = "";
        }

        return $exp[0] . '(' . $exp[1] . ')';
    }
1363392
function () {
        /**
         * Cache for the supported CSS styles.
         * @type Object
         * @private
         */
        this._styleCache = {};

        /**
         * Cache for properties computed by <em>init</em> for a given user agent.
         * @type Object
         * @private
         */
        this._propertiesCache = {};

        ////////////////////////////////////////////////////////////////////////
        // User agent
        ////////////////////////////////////////////////////////////////////////

        /**
         * The user agent.
         * @type String
         */
        this.ua = "";



        ////////////////////////////////////////////////////////////////////////
        // Browser
        ////////////////////////////////////////////////////////////////////////

        /**
         * Browser name.
         * @type String
         */
        this.name = "";

        /**
         * Browser version.
         * @type String
         */
        this.version = "";

        /**
         * Browser major version.
         * @type Integer
         */
        this.majorVersion = 0;

        /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
        /**
         * <b>Deprecated, use <em>aria.core.Browser.name instead</em>.</b>
         *
         * <p>
         * Browser name.
         * </p>
         *
         * @type String
         * @deprecated use aria.core.Browser.name instead
         */
        this.browserType = "";

        /**
         * <b>Deprecated, use <em>aria.core.Browser.version instead</em>.</b>
         *
         * <p>
         * Browser version.
         * </p>
         *
         * @type String
         * @deprecated use aria.core.Browser.version instead
         */
        this.browserVersion = "";
         */

        /**
         * <em>true</em> if the browser is any version of Internet Explorer.
         * @type Boolean
         */
        this.isIE = false;

        /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
        /**
         * <b>Deprecated, <em>isIE6</em> is not supported anymore.</b>
         *
         * <em>true</em> if the browser is Internet Explorer 6.
         *
         * @type Boolean
         * @deprecated isIE6 is not supported anymore
         */
        this.isIE6 = false;
         */

        /**
         * <em>true</em> if the browser is Internet Explorer 7.
         * @type Boolean
         */
        this.isIE7 = false;

        /**
         * <em>true</em> if the browser is Internet Explorer 8.
         * @type Boolean
         */
        this.isIE8 = false;

        /**
         * <em>true</em> if the browser is Internet Explorer 9.
         * @type Boolean
         */
        this.isIE9 = false;

        /**
         * <em>true</em> if the browser is Internet Explorer 10.
         * @type Boolean
         */
        this.isIE10 = false;

        /**
         * <em>true</em> if the browser is Internet Explorer 11.
         * @type Boolean
         */
        this.isIE11 = false;

        /**
         * <em>true</em> if the browser is Internet Explorer 10 or less.
         * @type Boolean
         */
        this.isOldIE = false;

        /**
         * <em>true</em> if the browser is Internet Explorer 11 or more.
         * @type Boolean
         */
        this.isModernIE = false;

        /**
         * <em>true</em> if the browser is any version of Firefox.
         * Some reference: http://hacks.mozilla.org/2010/09/final-user-agent-string-for-firefox-4/
         * @type Boolean
         */
        this.isFirefox = false;

        /**
         * <em>true</em> if the browser is any version of Microsoft Edge.
         * Some reference: https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx#edge
         * @type Boolean
         */
        this.isEdge = false;

        /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
        /**
         * <b>Deprecated, use <em>aria.core.Browser.isFirefox instead</em>.</b>
         *
         * <p>
         * <em>true</em> if the browser is any version of Firefox.
         * </p>
         *
         * @type Boolean
         * @deprecated use aria.core.Browser.isFirefox instead
         */
        this.isFF = false;
         */

        /**
         * <em>true</em> if the browser is any version of Chrome.
         * @type Boolean
         */
        this.isChrome = false;

        /**
         * <em>true</em> if the browser is any version of Safari.
         * @type Boolean
         */
        this.isSafari = false;

        /**
         * <em>true</em> if the browser is any version of Opera.
         * @type Boolean
         */
        this.isOpera = false;

        /**
         * <em>true</em> if the browser is any version of BlackBerry.
         * @type Boolean
         */
        this.isBlackBerryBrowser = false;

        /**
         * <em>true</em> if the browser is any version of Android.
         * @type Boolean
         */
        this.isAndroidBrowser = false;

        /**
         * <em>true</em> if the browser is any version of Safari Mobile.
         * @type Boolean
         */
        this.isSafariMobile = false;

        /**
         * <em>true</em> if the browser is any version of IE Mobile.
         * @type Boolean
         */
        this.isIEMobile = false;

        /**
         * <em>true</em> if the browser is any version of Opera Mobile.
         * @type Boolean
         */
        this.isOperaMobile = false;

        /**
         * <em>true</em> if the browser is any version of Opera Mini.
         * @type Boolean
         */
        this.isOperaMini = false;

        /**
         * <em>true</em> if the browser is any version of S60.
         * @type Boolean
         */
        this.isS60 = false;

        /**
         * <em>true</em> if the browser is any version of PhantomJS.
         * @type Boolean
         */
        this.isPhantomJS = false;

        /**
         * <em>true</em> if browser is not a known one.
         * @type Boolean
         */
        this.isOtherBrowser = false;



        ////////////////////////////////////////////////////////////////////////
        // Rendering engine
        ////////////////////////////////////////////////////////////////////////

        /**
         * <em>true</em> if the rendering engine is Webkit.
         * @type Boolean
         */
        this.isWebkit = false;

        /**
         * <em>true</em> if the rendering engine is Gecko.
         * @type Boolean
         */
        this.isGecko = false;



        ////////////////////////////////////////////////////////////////////////
        // OS
        ////////////////////////////////////////////////////////////////////////

        /**
         * Name of the operating system on which the browser runs.
         * @type String
         */
        this.osName = "";

        /**
         * Version of the operating system on which the browser runs.
         * @type String
         */
        this.osVersion = "";

        /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
        /**
         * <b>Deprecated, use <em>aria.core.Browser.osName instead</em>.</b>
         *
         * <p>
         * MacOS or Windows.
         * </p>
         *
         * @type String
         * @deprecated use aria.core.Browser.osName instead
         */
        this.environment = "";
         */

        /**
         * <em>true</em> if the operating system is Windows.
         * @type Boolean
         */
        this.isWindows = false;

        /**
         * <em>true</em> if the operating system is Mac OS.
         * @type Boolean
         */
        this.isMac = false;

        /**
         * <em>true</em> if operating system is iOS.
         * @type Boolean
         */
        this.isIOS = false;

        /**
         * <em>true</em> if operating system is Android.
         * @type Boolean
         */
        this.isAndroid = false;

        /**
         * <em>true</em> if operating system is Windows.
         * @type Boolean
         */
        this.isWindowsPhone = false;

        /**
         * <em>true</em> if operating system is BlackBerry.
         * @type Boolean
         */
        this.isBlackBerry = false;

        /**
         * <em>true</em> if operating system is Symbian.
         * @type Boolean
         */
        this.isSymbian = false;

        /**
         * <em>true</em> if operating system is not a known one.
         * @type Boolean
         */
        this.isOtherOS = false;

        /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
        /**
         * <b>Deprecated, use <em>aria.core.Browser.isOtherOS instead</em>.</b>
         *
         * <p>
         * <em>true</em> if operating system is not a known one.
         * </p>
         *
         * @type Boolean
         * @deprecated use aria.core.Browser.isOtherOS instead
         */
        this.isOtherMobile = false;
         */



        ////////////////////////////////////////////////////////////////////////
        // Mobile browser specific properties
        //
        // Only for Window Phone with IE+9
        ////////////////////////////////////////////////////////////////////////

        // Only for Window Phone with IE+9
        /**
         * <em>true</em> if view type is Mobile.
         * @type Boolean
         */
        this.isMobileView = false;

        /**
         * <em>true</em> if view type is Desktop.
         * @type Boolean
         */
        this.isDesktopView = false;

        /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
        /**
         * <b>Deprecated, use <em>aria.core.Browser.isDesktopView instead</em>.</b>
         *
         * <p>
         * <em>true</em> if view type is Desktop.
         * </p>
         *
         * @type Boolean
         * @deprecated use aria.core.Browser.isDesktopView instead
         */
        this.DesktopView = false;
         */



        /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
        ////////////////////////////////////////////////////////////////////////
        // Device properties
        ////////////////////////////////////////////////////////////////////////

        // For Mobile Browsers
        /**
         * <b>Deprecated, use <em>aria.utils.Device.isPhone instead</em>.</b>
         *
         * <p>
         * <em>true</em> if the device is of type phone.
         * </p>
         *
         * @type Boolean
         * @deprecated use aria.utils.Device.isPhone instead
         */
        this.isPhone = false;

        /**
         * <b>Deprecated, use <em>aria.utils.Device.isTablet instead</em>.</b>
         *
         * <p>
         * <em>true</em> if the device is of type tablet.
         * </p>
         *
         * @type Boolean
         * @deprecated use aria.utils.Device.isTablet instead
         */
        this.isTablet = false;

        /**
         * <b>Deprecated, use <em>aria.utils.Device.deviceName instead</em>.</b>
         *
         * <p>
         * Name of the device, combining the vendor and the model.
         * </p>
         *
         * @type String
         * @deprecated use aria.utils.Device.deviceName instead
         */
        this.deviceName = "";
         */



        ////////////////////////////////////////////////////////////////////////
        // Initialization
        ////////////////////////////////////////////////////////////////////////

        /* BACKWARD-COMPATIBILITY-BEGIN (GitHub #1397) */
        var properties = [
            "isIE6",
            "environment",
            {
                name: "isFF",
                synonym: "isFirefox"
            },
            {
                name: "browserType",
                synonym: "name"
            },
            {
                name: "browserVersion",
                synonym: "version"
            },

            {
                name: "isOtherMobile",
                synonym: "isOtherOS"
            },

            {
                name: "DesktopView",
                synonym: "isDesktopView"
            },

            {
                name: "isPhone",
                alternative: "aria.utils.Device.isPhone"
            },
            {
                name: "isTablet",
                alternative: "aria.utils.Device.isTablet"
            },
            {
                name: "deviceName",
                alternative: "aria.utils.Device.deviceName"
            },
            {
                name: "toString",
                type: "method"
            }
        ];

        var deprecatedProperties = [];
        var isString = ariaUtilsType.isString;
        ariaUtilsArray.forEach(properties, function(property) {
            // ------------------------------------------------ property factory

            if (isString(property)) {
                property = {name: property};
            }

            // ------------------------------------------------------------ name

            var name = property.name;

            // ------------------------------------------------------------ type

            var type = property.type;

            if (type == null) {
                type = "attribute";
            }

            property.type = type;

            // ----------------------------------------------- underlying method

            if (type == "method") {
                var underlyingContainer = this;
                var underlyingName = name;
                var underlying = underlyingContainer[underlyingName];

                property.underlying = underlying;
            }

            // --------------------------------------------------------- synonym

            var possibleAlternative;

            var synonym = property.synonym;

            possibleAlternative = synonym;

            // ----------------------------------------------------- alternative

            var alternative = property.alternative;

            if (alternative == null && possibleAlternative != null) {
                alternative = possibleAlternative;
            }

            property.alternative = alternative;

            // --------------------------------------------------- extrapolation

            var loggingMessage;
            var loggingMessageArguments = [name];

            if (alternative != null) {
                loggingMessage = type == "attribute" ? "DEPRECATED_REPLACED_PROPERTY" : "DEPRECATED_REPLACED_METHOD";
                loggingMessageArguments.push(alternative);
            } else {
                loggingMessage = type == "attribute" ? "DEPRECATED_REMOVED_PROPERTY" : "DEPRECATED_REMOVED_METHOD";
            }

            property.loggingMessage = this[loggingMessage];
            property.loggingMessageArguments = loggingMessageArguments;

            // ---------------------------------------------------------- result

            deprecatedProperties.push(property);
        }, this);

        this._deprecatedProperties = deprecatedProperties;
        this.__deprecateProperties();
         */

        this.init();
    }