@@ -24,8 +24,8 @@ var ConfigParser = {
2424
2525 setBrowserVersion : function ( browserObject , verStr ) {
2626 var filteredBrowsers = ConfigParser . bsBrowsers . map ( function ( currentValue , index , array ) {
27- if ( currentValue . browser == browserObject . browser ) {
28- return currentValue . browser_version ;
27+ if ( currentValue . browser . toLowerCase ( ) == browserObject . browser ) {
28+ return ( browserObject . mobile ? currentValue . os_version : currentValue . browser_version ) ;
2929 }
3030 } ) . filter ( function ( currentValue , index , array ) {
3131 return currentValue && array . indexOf ( currentValue ) === index ;
@@ -42,33 +42,62 @@ var ConfigParser = {
4242
4343 populateOsAndOsVersion : function ( browserObject ) {
4444 if ( ! ( browserObject . os && browserObject . os_version ) ) {
45- var windowsFiltered = ConfigParser . bsBrowsers . filter ( function ( currentValue , index , array ) {
46- return currentValue . os == 'Windows' && currentValue . browser == browserObject . browser && parseFloat ( currentValue . browser_version ) . toPrecision ( 4 ) == parseFloat ( browserObject . browser_version ) . toPrecision ( 4 ) ;
47- } ) ;
48- var osxFiltered = ConfigParser . bsBrowsers . filter ( function ( currentValue , index , array ) {
49- return currentValue . os == 'OS X' && currentValue . browser == browserObject . browser && parseFloat ( currentValue . browser_version ) . toPrecision ( 4 ) == parseFloat ( browserObject . browser_version ) . toPrecision ( 4 ) ;
50- } ) ;
51- browserObject = windowsFiltered . length > 0 ? windowsFiltered [ Math . floor ( Math . random ( ) * windowsFiltered . length ) ] : osxFiltered [ Math . floor ( Math . random ( ) * osxFiltered . length ) ] ;
45+ if ( browserObject . mobile ) {
46+
47+ var mobileFiltered = ConfigParser . bsBrowsers . filter ( function ( currentValue , index , array ) {
48+ return currentValue . browser . toLowerCase ( ) == browserObject . browser && parseFloat ( currentValue . os_version ) . toPrecision ( 4 ) == parseFloat ( browserObject . os_version ) . toPrecision ( 4 ) ;
49+ } ) ;
50+
51+ browserObject = mobileFiltered [ Math . floor ( Math . random ( ) * mobileFiltered . length ) ] ;
52+ }
53+ else {
54+
55+ var windowsFiltered = ConfigParser . bsBrowsers . filter ( function ( currentValue , index , array ) {
56+ return currentValue . os == 'Windows' && currentValue . browser == browserObject . browser && parseFloat ( currentValue . browser_version ) . toPrecision ( 4 ) == parseFloat ( browserObject . browser_version ) . toPrecision ( 4 ) ;
57+ } ) ;
58+
59+ var osxFiltered = ConfigParser . bsBrowsers . filter ( function ( currentValue , index , array ) {
60+ return currentValue . os == 'OS X' && currentValue . browser == browserObject . browser && parseFloat ( currentValue . browser_version ) . toPrecision ( 4 ) == parseFloat ( browserObject . browser_version ) . toPrecision ( 4 ) ;
61+ } ) ;
62+ browserObject = windowsFiltered . length > 0 ? windowsFiltered [ Math . floor ( Math . random ( ) * windowsFiltered . length ) ] : osxFiltered [ Math . floor ( Math . random ( ) * osxFiltered . length ) ] ;
63+ }
64+
5265 }
5366 return browserObject ;
5467 } ,
5568
5669 getBrowserObject : function ( entry ) {
5770 var browserObject = { } ;
71+ var version = null ;
72+ var sliceStart = 1 ;
5873 if ( typeof ( entry ) == 'string' ) {
5974 var browserData = entry . split ( "_" ) ;
6075 var lindex = browserData . length - 1 ;
61- browserObject . browser = browserData [ 0 ] ;
76+ if ( browserData [ 0 ] == 'mobile' || browserData [ 0 ] == 'android' || ( browserData [ 0 ] == 'opera' && browserData [ 1 ] == 'browser' ) ) {
77+ browserObject . browser = browserData [ 0 ] + ' ' + browserData [ 1 ] ;
78+ browserObject . mobile = true ;
79+ sliceStart = 2 ;
80+ }
81+ else {
82+ browserObject . browser = browserData [ 0 ] ;
83+ }
6284 if ( browserData [ lindex ] && browserData [ lindex ] . indexOf ( "+" ) == - 1 ) {
63- if ( [ "current" , "previous" ] . indexOf ( browserData [ 1 ] ) != - 1 ) {
64- browserObject . browser_version = ConfigParser . setBrowserVersion ( browserObject , browserData [ 1 ] ) ;
85+ if ( [ "current" , "previous" ] . indexOf ( browserData [ lindex ] ) != - 1 ) {
86+ version = ConfigParser . setBrowserVersion ( browserObject , browserData [ lindex ] ) ;
6587 }
6688 else {
67- browserObject . browser_version = browserData . slice ( 1 , lindex + 1 ) . join ( "." ) ;
89+ version = browserData . slice ( sliceStart , lindex + 1 ) . join ( "." ) ;
6890 }
6991 }
7092 else {
71- browserObject . browser_version = browserData . slice ( 1 , lindex + 1 ) . join ( "." ) ;
93+ version = browserData . slice ( sliceStart , lindex + 1 ) . join ( "." ) ;
94+ }
95+ if ( browserObject . mobile ) {
96+ browserObject . os_version = version ;
97+ browserObject . browser_version = null ;
98+ }
99+ else {
100+ browserObject . browser_version = version ;
72101 }
73102 } else {
74103 browserObject = entry ;
0 commit comments