Skip to content

Commit 656fb27

Browse files
committed
Merge pull request #50 from browserstack/mobile_browsers
Mobile browsers
2 parents 0a983b3 + bd44756 commit 656fb27

File tree

2 files changed

+44
-15
lines changed

2 files changed

+44
-15
lines changed

lib/configParser.js

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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;

lib/utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ var uuid = function uuidGenerator() {
2424
};
2525

2626
var browserString = function browserString(config) {
27-
return config.os + ' ' + config.os_version + ', ' + titleCase(config.browser || config.device) + ' ' + config.browser_version;
27+
return config.os + ' ' + config.os_version + ', ' + titleCase(config.browser || config.device) + ' ' + (config.browser_version || config.device);
2828
};
2929

3030
var objectSize = function objectSize(obj) {

0 commit comments

Comments
 (0)