Merge "Remove duplication from browser whitelist"

This commit is contained in:
jenkins-bot 2017-10-12 17:32:47 +00:00 committed by Gerrit Code Review
commit 0fbf8971c1
2 changed files with 21 additions and 10 deletions

View file

@ -107,7 +107,8 @@ ve.init.mw.DesktopArticleTarget.static.actionGroups = [
];
/**
* Compatibility map used with jQuery.client to black-list incompatible browsers.
* Compatibility map used with jQuery.client to decide if a browser should
* receive a compatibility warning. Blacklisting is handled in DesktopArticleTarget.init.
*
* @static
* @property
@ -117,13 +118,14 @@ ve.init.mw.DesktopArticleTarget.static.compatibility = {
// The value is either null (match all versions) or a list of tuples
// containing an inequality (<,>,<=,>=) and a version number
whitelist: {
firefox: [ [ '>=', 12 ] ],
iceweasel: [ [ '>=', 10 ] ],
safari: [ [ '>=', 7 ] ],
chrome: [ [ '>=', 19 ] ],
msie: [ [ '>=', 10 ] ],
edge: [ [ '>=', 12 ] ],
opera: [ [ '>=', 15 ] ]
iceweasel: [ [ '>=', 10 ] ],
opera: [ [ '>=', 15 ] ],
// All non-blacklisted versions are whitelisted:
firefox: null,
safari: null,
msie: null,
edge: null
}
};

View file

@ -8,7 +8,7 @@
QUnit.module( 've.init.mw.DesktopArticleTarget', ve.test.utils.mwEnvironment );
QUnit.test( 'compatibility', function ( assert ) {
var i, profile, list, matches, compatibility,
var i, profile, matches, compatibility,
cases = [
{
msg: 'Unidentified browser',
@ -150,6 +150,11 @@ QUnit.test( 'compatibility', function ( assert ) {
userAgent: 'Opera/9.80 (Windows NT 5.1) Presto/2.12.388 Version/12.16',
matches: []
},
{
msg: 'Opera 15.0',
userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.100',
matches: [ 'whitelist' ]
},
{
msg: 'BlackBerry',
userAgent: 'Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+',
@ -176,11 +181,15 @@ QUnit.test( 'compatibility', function ( assert ) {
for ( i = 0; i < cases.length; i++ ) {
profile = $.client.profile( { userAgent: cases[ i ].userAgent, platform: '' } );
matches = [];
for ( list in compatibility ) {
// eslint-disable-next-line no-loop-func
[ 'blacklist', 'whitelist' ].every( function ( list ) {
if ( $.client.test( compatibility[ list ], profile, true ) ) {
matches.push( list );
// Don't check whitelist if on blacklist
return false;
}
}
return true;
} );
assert.deepEqual( matches, cases[ i ].matches,
cases[ i ].msg + ': ' + ( cases[ i ].matches.length ? cases[ i ].matches.join() : 'greylist (no matches)' ) );
}