Krinkle has uploaded a new change for review. https://gerrit.wikimedia.org/r/57693
Change subject: startup: Add unit tests and add Firefox < 10 to blacklist. ...................................................................... startup: Add unit tests and add Firefox < 10 to blacklist. Change-Id: Id8214c6a54f1bed2f9e1abb668248c46dcf7317e --- M resources/startup.js M tests/qunit/QUnitTestResources.php A tests/qunit/suites/resources/startup.test.js 3 files changed, 105 insertions(+), 7 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/93/57693/1 diff --git a/resources/startup.js b/resources/startup.js index deff7e6..90b345e 100644 --- a/resources/startup.js +++ b/resources/startup.js @@ -10,22 +10,33 @@ * This function will be deleted after it's used, so do not expand it to be * generally useful beyond startup. * + * See also: + * - https://www.mediawiki.org/wiki/Compatibility#Browser + * - http://jquery.com/browser-support/ + * * MediaWiki & jQuery compatibility: - * - Internet Explorer 6.0+ + * - Chrome * - Firefox 10+ * - Safari 5.0+ * - Opera 11+ - * - Chrome + * - Internet Explorer 6.0+ */ /*jshint unused: false */ -function isCompatible() { - // IE < 6.0 - if ( navigator.appVersion.indexOf( 'MSIE' ) !== -1 - && parseFloat( navigator.appVersion.split( 'MSIE' )[1] ) < 6 ) - { +function isCompatible( ua ) { + if ( ua === undefined ) { + ua = navigator.userAgent; + } + + if ( + // Internet Explorer < 6 + ( ua.indexOf( 'MSIE' ) !== -1 && parseFloat( ua.split( 'MSIE' )[1] ) < 6 ) || + // Firefox < 10 + ( ua.indexOf( 'Firefox/' ) !== -1 && parseFloat( ua.split( 'Firefox/' )[1] ) < 10 ) + ) { return false; } + return true; } diff --git a/tests/qunit/QUnitTestResources.php b/tests/qunit/QUnitTestResources.php index 01072d8..74a62b2 100644 --- a/tests/qunit/QUnitTestResources.php +++ b/tests/qunit/QUnitTestResources.php @@ -6,6 +6,7 @@ 'mediawiki.tests.qunit.suites' => array( 'scripts' => array( + 'tests/qunit/suites/resources/startup.test.js', 'tests/qunit/suites/resources/jquery/jquery.autoEllipsis.test.js', 'tests/qunit/suites/resources/jquery/jquery.byteLength.test.js', 'tests/qunit/suites/resources/jquery/jquery.byteLimit.test.js', diff --git a/tests/qunit/suites/resources/startup.test.js b/tests/qunit/suites/resources/startup.test.js new file mode 100644 index 0000000..d15536f --- /dev/null +++ b/tests/qunit/suites/resources/startup.test.js @@ -0,0 +1,86 @@ +/*global isCompatible: true */ +( function ( $ ) { + var testcases = { + // Supported: Compatible + gradeA: [ + // Chrome + 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16', + // Firefox 10+ + 'Mozilla/5.0 (Macintosh; I; Intel Mac OS X 11_7_9; de-LI; rv:1.9b4) Gecko/2012010317 Firefox/10.0a4', + 'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120403211507 Firefox/12.0', + 'Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1', + // Safari 5.0+ + 'Mozilla/5.0 (Macintosh; I; Intel Mac OS X 10_6_7; ru-ru) AppleWebKit/534.31+ (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1', + // Opera 11+ + 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.8.131 Version/11.10', + // Internet Explorer 6+ + 'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)', + 'Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; en-US)', + 'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; Media Center PC 4.0; SLCC1; .NET CLR 3.0.04320)', + 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)', + 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)' + ], + // Supported: Uncompatible, serve basic content + gradeB: [ + // Internet Explorer < 6 + 'Mozilla/2.0 (compatible; MSIE 3.03; Windows 3.1)', + 'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)', + 'Mozilla/4.0 (compatible; MSIE 5.0; Windows 98;)', + 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)', + // Firefox < 10 + 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2', + 'Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.1.1) Gecko/20070311 Firefox/2.0.0.1', + 'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3', + 'Mozilla/5.0 (Windows NT 6.1.1; rv:5.0) Gecko/20100101 Firefox/5.0', + 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0' + + ], + // No special treatment blacklisting, benefit of doubt at own risk + gradeX: [ + // Gecko + 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060928 (Debian|Debian-1.8.0.7-1) Epiphany/2.14', + 'Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.6) Gecko/20070817 IceWeasel/2.0.0.6-g2', + // KHTML + 'Mozilla/5.0 (compatible; Konqueror/4.3; Linux) KHTML/4.3.5 (like Gecko)', + // Text browsers + 'Links (2.1pre33; Darwin 8.11.0 Power Macintosh; x)', + 'Links (6.9; Unix 6.9-astral sparc; 80x25)', + 'Lynx/2.8.6rel.4 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8g', + 'w3m/0.5.1', + // Bots + 'Googlebot/2.1 (+http://www.google.com/bot.html)', + 'Mozilla/5.0 (compatible; googlebot/2.1; +http://www.google.com/bot.html)', + 'Mozilla/5.0 (compatible; YandexBot/3.0)', + // Scripts + 'curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5', + 'Wget/1.9', + 'Wget/1.10.1 (Red Hat modified)', + // Unknown + 'I\'m an unknown browser', + // Empty + '' + ] + }; + + QUnit.module( 'startup', QUnit.newMwEnvironment() ); + + QUnit.test( 'isCompatible( Grade A )', testcases.gradeA.length, function ( assert ) { + $.each( testcases.gradeA, function ( i, ua ) { + assert.strictEqual( isCompatible( ua ), true, ua ); + } + ); + } ); + QUnit.test( 'isCompatible( Grade B )', testcases.gradeB.length, function ( assert ) { + $.each( testcases.gradeB, function ( i, ua ) { + assert.strictEqual( isCompatible( ua ), false, ua ); + } + ); + } ); + QUnit.test( 'isCompatible( Grade X )', testcases.gradeX.length, function ( assert ) { + $.each( testcases.gradeX, function ( i, ua ) { + assert.strictEqual( isCompatible( ua ), true, ua ); + } + ); + } ); +}( jQuery ) ); + -- To view, visit https://gerrit.wikimedia.org/r/57693 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id8214c6a54f1bed2f9e1abb668248c46dcf7317e Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Krinkle <[email protected]> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
