all files / montage/core/ browser.js

100% Statements 15/15
76.92% Branches 10/13
100% Functions 3/3
100% Lines 15/15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49                                                                   
/*global navigator*/
var Montage = require("montage").Montage;
 
var regExAppleWebKit = new RegExp(/AppleWebKit\/([\d.]+)/);
 
var Browser = Montage.specialize({
    constructor: {
        value: function Browser(userAgent) {
            this._userAgent = userAgent;
            this._analyze(userAgent);
        }
    },
 
    _analyze: {
        value: function (userAgent) {
            if (/*isAndroidMobile*/ userAgent.indexOf("Android") > -1 && userAgent.indexOf("Mozilla/5.0") > -1 && userAgent.indexOf("AppleWebKit") > -1) {
                this.android = {};
                var resultAppleWebKitRegEx = regExAppleWebKit.exec(userAgent);
                var appleWebKitVersion = (resultAppleWebKitRegEx === null ? null : parseFloat(regExAppleWebKit.exec(userAgent)[1]));
                this.android.androidBrowser = appleWebKitVersion !== null && appleWebKitVersion < 537;
            }
        }
    },
 
    _userAgent: {
        value: null
    }
 
});
 
var _browser = null;
 
Montage.defineProperties(exports, {
 
    browser: {
        get: function () {
            Eif(_browser === null) {
                _browser = new Browser(global.navigator ? global.navigator.userAgent : '');
            }
            return _browser;
        }
    },
 
    Browser: {
        value: Browser
    }
 
});