@@ -24,8 +24,8 @@ var ConfigParser = {
24
24
25
25
setBrowserVersion : function ( browserObject , verStr ) {
26
26
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 ) ;
29
29
}
30
30
} ) . filter ( function ( currentValue , index , array ) {
31
31
return currentValue && array . indexOf ( currentValue ) === index ;
@@ -42,33 +42,62 @@ var ConfigParser = {
42
42
43
43
populateOsAndOsVersion : function ( browserObject ) {
44
44
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
+
52
65
}
53
66
return browserObject ;
54
67
} ,
55
68
56
69
getBrowserObject : function ( entry ) {
57
70
var browserObject = { } ;
71
+ var version = null ;
72
+ var sliceStart = 1 ;
58
73
if ( typeof ( entry ) == 'string' ) {
59
74
var browserData = entry . split ( "_" ) ;
60
75
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
+ }
62
84
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 ] ) ;
65
87
}
66
88
else {
67
- browserObject . browser_version = browserData . slice ( 1 , lindex + 1 ) . join ( "." ) ;
89
+ version = browserData . slice ( sliceStart , lindex + 1 ) . join ( "." ) ;
68
90
}
69
91
}
70
92
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 ;
72
101
}
73
102
} else {
74
103
browserObject = entry ;
0 commit comments