benchmark
Version:
A benchmarking library that works on nearly all JavaScript platforms, supports high-resolution timers, and returns statistically significant results.
850 lines (661 loc) • 33.8 kB
JavaScript
module("Benchmark.platform");
test("user agent detection", function() {
var getPlatform = (function() {
var compiled,
xhr,
isClassOf = Benchmark.isClassOf,
isHostType = Benchmark.isHostType,
reduce = Benchmark.reduce,
toString = {}.toString,
trim = function(string) { return string.replace(/^\s+/, '').replace(/\s+$/, ''); }
if (isHostType(window, 'ActiveXObject')) {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
} else if (isHostType(window, 'XMLHttpRequest')) {
xhr = new XMLHttpRequest;
}
Benchmark.each(document.getElementsByTagName('script'), function(element) {
var src = element.src;
if (/benchmark\.js/.test(src)) {
xhr.open('get', src, false);
xhr.send();
compiled = Function('isClassOf,isHostType,reduce,toString,trim,options',
'return ' +
(/(\s*)Benchmark.platform\s*=((?:.|\n)*?)\1}/.exec(xhr.responseText)[2] + '}())')
.replace(/\bme\s*=[^,;]+([,;])/, 'me=options$1')
.replace(/\bua\s*=[^,;]+([,;])/, 'ua=me.ua$1')
.replace(/\bopera\.version\(\)/, 'opera')
.replace(/\bIN_JAVA\b/g, 'false')
.replace(/\bwindow\b/g, 'me')
.replace(/\bexports\b/g, 'me.exports')
.replace(/([^.\x22\x27])global\b/g, '$1me.global')
.replace(/\bprocess\b/g, 'me.process')
.replace(/\bsystem\b/g, 'me.system')
.replace(/\bEnvironment\b/g, 'Object')
.replace(/\bnav\.appMinorVersion/g, 'me.appMinorVersion')
.replace(/\bexternal/g, 'me.external')
.replace(/\bdoc\.documentMode/g, 'me.mode'));
}
});
return function(options) {
// http://www.howtocreate.co.uk/operaStuff/operaObject.html
if (options.opera < 7.6) {
delete options.opera;
}
return compiled(isClassOf, isHostType, reduce, toString, trim, options);
};
}());
var Tests = {
'Avant Browser on Windows Vista': {
'ua': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Avant Browser)',
'mode': 8
},
'Avant Browser (running in IE 7 mode) on Windows XP': {
'ua': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Avant Browser)',
'mode': 7
},
'Android Browser 3.1.2 (like Safari 3.x) on Android 1.6': {
'ua': 'Mozilla/5.0 (Linux; U; Android 1.6; en-us; HTC_TATTOO_A3288 Build/DRC79) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1'
},
'Android Browser (like Safari 4.x) on Android 2.1': {
'ua': 'Mozilla/5.0 (Linux; U; Android 2.1-update1; en-us; Sprint APA9292KT Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko)'
},
'Android Browser 4.0 (like Safari 4+) on Android 2.2': {
'ua': 'Mozilla/5.0 (Linux; U; Android 2.2; zh-cn;) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
},
'Android Browser 4.0 (like Safari 4+) on Android 2.2.1': {
'ua': 'Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; Nexus One Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1'
},
'Android Browser 4.1#{alpha} (platform preview; like Safari 4+) on Android 2.2.1': {
'ua': 'Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; Nexus One Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.1a Mobile Safari/533.1',
'external': null
},
'BlackBerry Browser 4.0.0 on BlackBerry 7250': {
'ua': 'BlackBerry7250/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1'
},
'BlackBerry Browser 4.5.1.231 on BlackBerry 8900': {
'ua': 'BlackBerry8900/4.5.1.231 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/100'
},
'BlackBerry Browser 6.0.0.91 (like Safari 4+) on BlackBerry 9800': {
'ua': 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Version/6.0.0.91 Mobile Safari/534.1 ,gzip(gfe),gzip(gfe)'
},
'Camino 0.7 on Mac OS X': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.0.1) Gecko/20030306 Camino/0.7'
},
'Camino 1.0#{beta}2+ on Mac OS X': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.1) Gecko/20060119 Camino/1.0b2+'
},
'Camino 1.0+ on Mac OS X': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1) Gecko/20061013 Camino/1.0+ (Firefox compatible)'
},
'Camino 1.1#{alpha}1+ on Mac OS X': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.1pre) Gecko/20061126 Camino/1.1a1+'
},
'Camino 1.6#{alpha} on Mac OS X': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en; rv:1.8.1.4pre) Gecko/20070511 Camino/1.6pre'
},
'Camino 2.0#{beta}3 on Mac OS X 10.5': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en; rv:1.9.0.10pre) Gecko/2009041800 Camino/2.0b3pre (like Firefox/3.0.10pre)'
},
'Camino 2.0.3 on Mac OS X 10.6': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; nl; rv:1.9.0.19) Gecko/2010051911 Camino/2.0.3 (MultiLang) (like Firefox/3.0.19)'
},
'Chrome 0.2.149.27 on Windows 2000': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13'
},
'Chrome 5.0.375.99 on Windows Server 2003 / XP x64': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4'
},
'Chrome 8.1.0.0 on Linux x86_64': {
'ua': 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/540.0 (KHTML, like Gecko) Ubuntu/10.10 Chrome/8.1.0.0 Safari/540.0'
},
'Epiphany 0.9.2 on Linux i686': {
'ua': 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030908 Epiphany/0.9.2'
},
'Epiphany 2.22 on Linux x86_64': {
'ua': 'Mozilla/5.0 (X11; U; Linux x86_64; en; rv:1.9.0.8) Gecko/20080528 Fedora/2.24.3-4.fc10 Epiphany/2.22 Firefox/3.0'
},
'Epiphany 2.30.6 on Linux x86_64': {
'ua': 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Epiphany/2.30.6 Safari/534.7'
},
'Firefox 3.0#{alpha}1 on Mac OS X': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.9a1) Gecko/20061204 Firefox/3.0a1'
},
'Firefox 3.0.1#{alpha} on Linux armv7l': {
'ua': 'Mozilla/5.0 (X11; U; Linux armv7l; en-US; rv:1.9.0.1) Gecko/2009010915 Minefield/3.0.1'
},
'Firefox 3.6.11 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.11) Gecko/20101012 Firefox/3.6.11 (.NET CLR 3.5.30729)'
},
'Firefox 3.7#{alpha}5 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.3a5pre) Gecko/20100418 Minefield/3.7a5pre'
},
'Fennec 2.0#{beta}1 on Android': {
'ua': 'Mozilla/5.0 (Android; Linux armv7l; rv:2.0b6pre) Gecko/20100907 Firefox/4.0b6pre Fennec/2.0b1pre'
},
'Fennec 2.0.1 on Linux i686': {
'ua': 'Mozilla/5.0 (X11; Linux i686 on x86_64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Fennec/2.0.1'
},
'Flock 2.0#{alpha}1 on Linux i686': {
'ua': 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9pre) Gecko/2008051917 Firefox/3.0pre Flock/2.0a1pre'
},
'Flock 2.0#{beta}3 on Linux x86_64': {
'ua': 'Mozilla/5.0 (X11; U; Linux x86_64; es-AR; rv:1.9.0.2) Gecko/2008091920 Firefox/3.0.2 Flock/2.0b3'
},
'Flock 2.0.3 on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008121620 Firefox/3.0.5 Flock/2.0.3'
},
'Flock 2.6.0 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.19) Gecko/2010061201 Firefox/3.0.19 Flock/2.6.0'
},
'Galeon 1.2.5 on Linux i686': {
'ua': 'Mozilla/5.0 Galeon/1.2.5 (X11; Linux i686; U;) Gecko/20020809'
},
'Galeon 2.0.7 on Linux i686': {
'ua': 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko/20090327 Galeon/2.0.7'
},
'GreenBrowser (running in IE 7 mode) on Windows XP': {
'ua': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GreenBrowser)',
'mode': 7
},
'GreenBrowser (running in IE 5 mode) on Windows XP': {
'ua': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; GreenBrowser)',
'mode': 5
},
'iCab 2.8.1 on Mac OS': {
'ua': 'Mozilla/4.5 (compatible; iCab 2.8.1; Macintosh; I; PPC)'
},
'iCab 3.0.2 on Mac OS': {
'ua': 'iCab/3.0.2 (Macintosh; U; PPC Mac OS)'
},
'iCab 4.5 on Mac OS X Leopard 10.5.8': {
'ua': 'iCab/4.5 (Macintosh; U; Mac OS X Leopard 10.5.8)'
},
'iCab 4.7 on Mac OS X': {
'ua': 'iCab/4.7 (Macintosh; U; Intel Mac OS X)'
},
'IE 4.0 on Windows 95': {
'ua': 'Mozilla/4.0 (compatible; MSIE 4.0; Windows 95)'
},
'IE 5.5 on Windows 98': {
'ua': 'Mozilla/4.0 (compatible;MSIE 5.5; Windows 98)'
},
'IE 5.05 on Windows NT': {
'ua': 'Mozilla/4.0 (compatible; MSIE 5.05; Windows NT 4.0)'
},
'IE 6.0#{beta} on Windows ME': {
'ua': 'Mozilla/4.0 (compatible; MSIE 6.0b; Windows 98; Win 9x 4.90)'
},
'IE 6.0 on Windows 2000': {
'ua': 'Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 5.0)'
},
'IE 7.0#{beta} on Windows Server 2003 / XP x64': {
'ua': 'Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2)'
},
'IE 7.0 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 5.1; en-US)'
},
'IE 8.0#{beta}2 on Windows XP': {
'ua': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
'appMinorVersion': 'beta 2'
},
'IE 8.0 on Windows XP': {
'ua': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe)'
},
'IE 8.0 (running in IE 5 mode) on Windows XP': {
'ua': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',
'mode': 5
},
'IE 8.0 (running in IE 7 mode) on Windows XP': {
'ua': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; chromeframe)',
'mode': 7
},
'IE 9.0#{beta} (platform preview) on Windows 7': {
'ua': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
'appMinorVersion': 'beta',
'external': null,
'mode': 9
},
'IE 9.0#{beta} (platform preview; running in IE 5 mode) on Windows 7': {
'ua': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
'appMinorVersion': 'beta',
'external': null,
'mode': 5
},
'IE 9.0#{beta} (platform preview; running in IE 7 mode) on Windows 7': {
'ua': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
'appMinorVersion': 'beta',
'external': null,
'mode': 7
},
'IE 9.0#{beta} (platform preview; running in IE 8 mode) on Windows 7': {
'ua': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
'appMinorVersion': 'beta',
'external': null,
'mode': 8
},
'IE 9.0#{beta} on Windows Vista': {
'ua': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)',
'appMinorVersion': 'beta'
},
'IE 9.0#{beta} (running in IE 5 mode) on Windows 7': {
'ua': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
'appMinorVersion': 'beta',
'mode': 5
},
'IE 9.0#{beta} (running in IE 7 mode) on Windows 7': {
'ua': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
'appMinorVersion': 'beta',
'mode': 7
},
'IE 9.0#{beta} (running in IE 8 mode) on Windows 7': {
'ua': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
'appMinorVersion': 'beta',
'mode': 8
},
'IE 9.0 on Windows 7': {
'ua': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
'mode': 9
},
'Iron 0.2.152.0 on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Iron/0.2.152.0 Safari/41562480.525'
},
'Iron 7.0.520.1 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Iron/7.0.520.1 Chrome/7.0.520.1 Safari/534.7'
},
'Kindle Browser 3.3 on Kindle 1.0': {
'ua': 'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)'
},
'Kindle Browser 3.4 on Kindle 2.0': {
'ua': 'Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 600x800)'
},
'Kindle Browser 4.0 (like Safari 4.x) on Kindle 3.0': {
'ua': 'Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600x800; rotate)'
},
'K-Meleon 1.5.0#{beta}2 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080406 K-Meleon/1.5.0b2'
},
'K-Meleon 1.5.4 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.24pre) Gecko/20100228 K-Meleon/1.5.4'
},
'Konqueror 4.4 on Linux 2.6.32': {
'ua': 'Mozilla/5.0 (compatible; Konqueror/4.4; Linux 2.6.32-22-generic; X11; en_US) KHTML/4.4.3 (like Gecko) Kubuntu'
},
'Lunascape 5.0#{alpha}3 on Windows Server 2003 / XP x64': {
'ua': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Lunascape 5.0 alpha3)'
},
'Lunascape 6.1.7.21880 (Trident) on Windows 7': {
'ua': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Lunascape 6.1.7.21880)',
'mode': 8
},
'Lunascape 6.2.1.22445 (Gecko) on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.13) Gecko/20100917 Firefox/3.5.13 Lunascape/6.2.1.22445'
},
'Lunascape 6.3.1.22729#{beta} (platform preview; rendered by Trident) on Windows Vista': {
'ua': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; Lunascape/6.3.1.22729',
'appMinorVersion': 'beta',
'external': null,
'mode': 9
},
'Lunascape 6.3.2.22803 (like Safari 4+) on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.3 (KHTML, like Gecko) Lunascape/6.3.2.22803 Safari/533.3'
},
'Maxthon 2.x (Trident) on Windows XP': {
'ua': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Maxthon 2.0)',
'mode': 8
},
'Maxthon 2.x (running in IE 7 mode) on Windows XP': {
'ua': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon 2.0)',
'mode': 7
},
'Maxthon 3.x (like Safari 4+) on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.9 (KHTML, like Gecko) Maxthon/3.0 Safari/533.9'
},
'Maxthon 3.x (running in IE 7 mode) on Windows XP': {
'ua': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Maxthon/3.0)',
'external': null,
'mode': 7
},
'Maxthon 3.x#{alpha} (platform preview; rendered by Trident) on Windows XP': {
'ua': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Maxthon/3.0)',
'appMinorVersion': 'alpha',
'external': null,
'mode': 8
},
'Narwhal on Cygwin': (function() {
var object = {
'exports': { },
'system': { 'os': 'cygwin' }
};
object.global = object.system.global = object;
return object;
}()),
'Node.js 0.3.1 on Cygwin': {
'exports': { },
'global': { },
'process': { 'version': 'v0.3.1', 'platform': 'cygwin' },
},
'Nook Browser 1.0': {
'ua': 'nook browser/1.0'
},
'Opera Mobile 10.00 on Linux i686': {
'ua': 'Opera/9.80 (Linux i686; Opera Mobi/1038; U; en) Presto/2.5.24 Version/10.00'
},
'Opera 11.00 on Windows XP': {
'ua': 'Opera/9.80 (Windows NT 5.1; U; en) Presto/2.6.37 Version/11.00',
'opera': '11.00'
},
'Rhino': {
'global': { },
'environment': { }
},
'RingoJS': (function() {
var object = {
'exports': { },
'system': { }
};
object.global = object;
return object;
}()),
'RockMelt 0.8.34.820 on Mac OS X 10.5.8': {
'ua': 'Mozilla/5.0(Macintosh; U; Intel Mac OS X 10_5_8; en-US)AppleWebKit/534.3(KHTML,like Gecko)RockMelt/0.8.34.820 Chrome/6.0.472.63 Safari/534.3'
},
'Safari 1.x on Mac OS X': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5'
},
'Safari 2.x on Mac OS': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS; en-en) AppleWebKit/412 (KHTML, like Gecko) Safari/412'
},
'Safari 3.x on iPod iOS 2.2.1': {
'ua': 'Mozilla/5.0 (iPod; U; CPU iPhone OS 2_2_1 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Mobile/5H11a'
},
'Safari 3.0 on iPod iOS': {
'ua': 'Mozila/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Geckto) Version/3.0 Mobile/3A101a Safari/419.3'
},
'Safari 3.1.1 on iPhone iOS 2.0.1': {
'ua': 'Mozilla/5.0 (Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0_1 like Mac OS X; fr-fr) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20'
},
'Safari 3.1.1 on Mac OS X 10.5.7': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; de-de) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.20'
},
'Safari 3.1.1 on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.18 (KHTML, like Gecko) Version/3.1.1 Safari/525.17'
},
'Safari 3.1.2 on Mac OS X 10.5.6': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.2 Safari/525.20.1'
},
'Safari 3.1.2 on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; pl-PL) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21'
},
'Safari 3.2 on Mac OS X 10.5.5': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_5; en-us) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.12'
},
'Safari 3.2 on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; hu-HU) AppleWebKit/525.26.2 (KHTML, like Gecko) Version/3.2 Safari/525.26.13'
},
'Safari 3.2.1 on Mac OS X 10.4.11': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; pl-pl) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1'
},
'Safari 3.2.1 on Mac OS X 10.5.6': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; it-it) AppleWebKit/528.8+ (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1'
},
'Safari 3.2.1 on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; sv-SE) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1'
},
'Safari 3.2.2 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1'
},
'Safari 3.2.2 on Windows Server 2003 / XP x64': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1'
},
'Safari 3.2.2 on Windows 7': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/525.28 (KHTML, like Gecko) Version/3.2.2 Safari/525.28.1'
},
'Safari 3.2.3 on Mac OS X 10.5.7': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; de-de) AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 Safari/525.28.3'
},
'Safari 3.2.3 on Mac OS X 10.5.8': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; ja-jp) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/3.2.3 Safari/525.28.3'
},
'Safari 3.2.3 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ) AppleWebKit/525.28.3 (KHTML, like Gecko) Version/3.2.3 Safari/525.29'
},
'Safari 4.x on iPhone iOS 3.1': {
'ua': 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Mobile/7E18,gzip(gfe),gzip(gfe)'
},
'Safari 4.x on iPhone iOS 4.1': {
'ua': 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Mobile/8B117'
},
'Safari 4.0#{alpha}1 on Mac OS X 10.4.11': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; tr) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2'
},
'Safari 4.0#{alpha}1 on Mac OS X 10.5.4': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; en-us) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2'
},
'Safari 4.0#{alpha}1 on Mac OS X 10.5.6': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-gb) AppleWebKit/528.10+ (KHTML, like Gecko) Version/4.0dp1 Safari/526.11.2'
},
'Safari 4.0#{alpha}1 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en) AppleWebKit/526.9 (KHTML, like Gecko) Version/4.0dp1 Safari/526.8'
},
'Safari 4.0 on iPhone iOS 3.0': {
'ua': 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; ko-kr) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16'
},
'Safari 4.0 on iPod iOS 3.0': {
'ua': 'Mozilla/5.0 (iPod; U; CPU iPhone OS 3_0 like Mac OS X; ja-jp) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16'
},
'Safari 4.0 on iPhone iOS 3.1': {
'ua': 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7C97d Safari/528.16'
},
'Safari 4.0 on iPhone iOS 3.1.3': {
'ua': 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_3 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7E18 Safari/528.16'
},
'Safari 4.0 on iPhone iOS 4.1.1': {
'ua': 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1_1 like Mac OS X; en-en) AppleWebKit/548.18 (KHTML, like Gecko) Version/4.0 Mobile/8F12 Safari/548.16'
},
'Safari 4.0 on Mac OS X 10.4.11': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en) AppleWebKit/530.1+ (KHTML, like Gecko) Version/4.0 Safari/528.16'
},
'Safari 4.0 on Mac OS X 10.5.4': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_4; nl-nl) AppleWebKit/528.4+ (KHTML, like Gecko) Version/4.0 Safari/528.1'
},
'Safari 4.0 on Mac OS X 10.5.6': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_6; tr-TR) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.1'
},
'Safari 4.0 on Mac OS X 10.6': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6; en-us) AppleWebKit/530.6+ (KHTML, like Gecko) Version/4.0 Safari/530.6'
},
'Safari 4.0 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16'
},
'Safari 4.0 on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru-RU) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16'
},
'Safari 4.0.1 on Mac OS X 10.5.7': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/4.0.1 Safari/530.18'
},
'Safari 4.0.2 on Mac OS X 10.5.7': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_7; en-us) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19'
},
'Safari 4.0.2 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1'
},
'Safari 4.0.2 on Windows Server 2003 / XP x64': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.2; de-DE) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1'
},
'Safari 4.0.2 on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; zh-TW) AppleWebKit/530.19.2 (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1'
},
'Safari 4.0.2 on Windows 7': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532+ (KHTML, like Gecko) Version/4.0.2 Safari/530.19.1'
},
'Safari 4.0.3 on Mac OS X 10.5.8': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/532.0+ (KHTML, like Gecko) Version/4.0.3 Safari/531.9.2009'
},
'Safari 4.0.3 on Mac OS X 10.6.1': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_1; nl-nl) AppleWebKit/532.3+ (KHTML, like Gecko) Version/4.0.3 Safari/531.9'
},
'Safari 4.0.3 on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9'
},
'Safari 4.0.4 on iPad iOS 3.2': {
'ua': 'Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10'
},
'Safari 4.0.4 on iPhone iOS 3.2': {
'ua': 'Mozilla/5.0 (iPhone; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10'
},
'Safari 4.0.4 on Mac OS X 10.4.11': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; hu-hu) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10'
},
'Safari 4.0.4 on Mac OS X 10.6.2': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; ru-ru) AppleWebKit/533.2+ (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10'
},
'Safari 4.0.4 on Mac OS X 10.6.3': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/531.21.11 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10'
},
'Safari 4.0.4 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE) AppleWebKit/532+ (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10'
},
'Safari 4.0.4 on Windows Server 2003 / XP x64': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10'
},
'Safari 4.0.4 on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10'
},
'Safari 4.0.4 on Windows 7': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; ko-KR) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10'
},
'Safari 4.0.5 on iPhone iOS 4.1': {
'ua': 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B5097d Safari/6531.22.7'
},
'Safari 4.0.5 on Mac OS X 10.4.11': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; da-dk) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7'
},
'Safari 4.0.5 on Mac OS X 10.5.8': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; en-us) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7'
},
'Safari 4.0.5 on Mac OS X 10.6.2': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; ja-jp) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7'
},
'Safari 4.0.5 on Mac OS X 10.6.3': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; ja-jp) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7'
},
'Safari 4.0.5 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; cs-CZ) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7'
},
'Safari 4.0.5 on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7'
},
'Safari 4.0.5 on Windows 7': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; es-ES) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7'
},
'Safari 4.1 on Mac OS X 10.4.11': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; nl-nl) AppleWebKit/533.16 (KHTML, like Gecko) Version/4.1 Safari/533.16'
},
'Safari 4.1 on Mac OS X 10.7': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7; en-us) AppleWebKit/533.4 (KHTML, like Gecko) Version/4.1 Safari/533.4'
},
'Safari 5.0 on Linux x86_64': {
'ua': 'Mozilla/5.0 (X11; U; Linux x86_64; en-ca) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/531.2+'
},
'Safari 5.0 on Mac OS X 10.5.8': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; ja-jp) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16'
},
'Safari 5.0 on Mac OS X 10.4.11': {
'ua': 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_4_11; fr) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16'
},
'Safari 5.0 on Mac OS X 10.6.3': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; zh-cn) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16'
},
'Safari 5.0 on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16'
},
'Safari 5.0 on Windows 7': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; ja-JP) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16'
},
'Safari 5.0.1 on Windows Server 2003 / XP x64': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8'
},
'Safari 5.0.2 on Mac OS X 10.5.8': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; zh-cn) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5'
},
'Safari 5.0.2 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5'
},
'Safari 5.0.2 on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; tr-TR) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5'
},
'Safari 5.0.2 on Windows 7': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-HK) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5'
},
'SeaMonkey 1.1.7#{alpha}': {
'ua': 'Mozilla/5.0 (BeOS; U; Haiku BePC; en-US; rv:1.8.1.10pre) Gecko/20080112 SeaMonkey/1.1.7pre'
},
'SeaMonkey 1.1.13': {
'ua': 'Seamonkey-1.1.13-1(X11; U; GNU Fedora fc 10) Gecko/20081112'
},
'SeaMonkey 2.0#{beta}1 on Windows Vista': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.1pre) Gecko/20090717 SeaMonkey/2.0b1'
},
'SeaMonkey 2.0.8 on Windows XP': {
'ua': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.13) Gecko/20100914 Mnenhy/0.8.3 SeaMonkey/2.0.8'
},
'Sleipnir 2.8.4 on Windows XP': {
'ua': 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Sleipnir 2.8.4)'
},
'Sleipnir 2.9.2#{beta} (platform preview; rendered by Trident) on Windows XP': {
'ua': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Sleipnir/2.9.2)',
'appMinorVersion': 'beta',
'external': null,
'mode': 8
},
'Sleipnir 2.9.4 (running in IE 7 mode) on Windows Vista': {
'ua': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; Sleipnir/2.9.4)',
'mode': 7
},
'Sleipnir 2.9.6 (Trident) on Windows 7': {
'ua': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Sleipnir/2.9.6)',
'mode': 8
},
'SlimBrowser (running in IE 7 mode) on Windows XP': {
'ua': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SlimBrowser)',
'mode': 7
},
'SlimBrowser (running in IE 5 mode) on Windows 7': {
'ua': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SlimBrowser)',
'mode': 5
},
'Sunrise 1.7.5 on Mac OS X 10.5.5': {
'ua': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_5; ja-jp) AppleWebKit/525.18 (KHTML, like Gecko) Sunrise/1.7.5 like Safari/5525.20.1'
},
'Sunrise 4.0.1 on Linux x86_64': {
'ua': 'Mozilla/6.0 (X11; U; Linux x86_64; en-US; rv:2.9.0.3) Gecko/2009022510 FreeBSD/ Sunrise/4.0.1/like Safari'
},
'Swiftfox 2.0.0.6 on Linux i686': {
'ua': 'Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.6) Gecko/20070803 Firefox/2.0.0.6 (Swiftfox)'
},
'Swiftfox 3.0.10#{alpha} on Linux i686': {
'ua': 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10pre) Gecko/2009041814 Firefox/3.0.10pre (Swiftfox)',
},
'webOS Browser 1.0 (like Safari 3.x) on webOS 1.2.9': {
'ua': 'Mozilla/5.0 (webOS/Palm webOS 1.2.9; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pixi/1.0'
},
'webOS Browser 1.0 (like Safari 4.x) on webOS 1.4.0': {
'ua': 'Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.0'
},
'Mozilla/5.0 (PLAYSTATION 3; 2.00)': {
'ua': 'Mozilla/5.0 (PLAYSTATION 3; 2.00)'
}
};
Benchmark.forIn(Tests, function(value, key) {
var platform = getPlatform(value);
key = Benchmark.interpolate(key, { 'alpha': '\u03b1', 'beta': '\u03b2' });
// test toString()
equals(String(platform), key, key);
// test null values
Benchmark.forIn(platform, function(value, key) {
if (!value) {
strictEqual(value, null, 'Benchmark.platform.' + key);
}
});
});
});