Emoji: Work around a mod_security
rule which prevents pages with 4 or more instances of String.fromCharCode(
from being served.
Fixes #35412 for trunk. git-svn-id: https://develop.svn.wordpress.org/trunk@36359 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
1d82f671a3
commit
65267f09fb
@ -13,6 +13,7 @@
|
|||||||
function browserSupportsEmoji( type ) {
|
function browserSupportsEmoji( type ) {
|
||||||
var canvas = document.createElement( 'canvas' ),
|
var canvas = document.createElement( 'canvas' ),
|
||||||
context = canvas.getContext && canvas.getContext( '2d' ),
|
context = canvas.getContext && canvas.getContext( '2d' ),
|
||||||
|
stringFromCharCode = String.fromCharCode,
|
||||||
tone;
|
tone;
|
||||||
|
|
||||||
if ( ! context || ! context.fillText ) {
|
if ( ! context || ! context.fillText ) {
|
||||||
@ -37,7 +38,7 @@
|
|||||||
* The first two will encode to small images (1-2KB data URLs), the third will encode
|
* The first two will encode to small images (1-2KB data URLs), the third will encode
|
||||||
* to a larger image (4-5KB data URL).
|
* to a larger image (4-5KB data URL).
|
||||||
*/
|
*/
|
||||||
context.fillText( String.fromCharCode( 55356, 56806, 55356, 56826 ), 0, 0 );
|
context.fillText( stringFromCharCode( 55356, 56806, 55356, 56826 ), 0, 0 );
|
||||||
return canvas.toDataURL().length > 3000;
|
return canvas.toDataURL().length > 3000;
|
||||||
} else if ( 'diversity' === type ) {
|
} else if ( 'diversity' === type ) {
|
||||||
/*
|
/*
|
||||||
@ -45,9 +46,9 @@
|
|||||||
* emoji with no skin tone specified (in this case, Santa). It then adds a skin tone, and
|
* emoji with no skin tone specified (in this case, Santa). It then adds a skin tone, and
|
||||||
* compares if the emoji rendering has changed.
|
* compares if the emoji rendering has changed.
|
||||||
*/
|
*/
|
||||||
context.fillText( String.fromCharCode( 55356, 57221 ), 0, 0 );
|
context.fillText( stringFromCharCode( 55356, 57221 ), 0, 0 );
|
||||||
tone = context.getImageData( 16, 16, 1, 1 ).data.toString();
|
tone = context.getImageData( 16, 16, 1, 1 ).data.toString();
|
||||||
context.fillText( String.fromCharCode( 55356, 57221, 55356, 57343 ), 0, 0 );
|
context.fillText( stringFromCharCode( 55356, 57221, 55356, 57343 ), 0, 0 );
|
||||||
// Chrome has issues comparing arrays, so we compare it as a string, instead.
|
// Chrome has issues comparing arrays, so we compare it as a string, instead.
|
||||||
return tone !== context.getImageData( 16, 16, 1, 1 ).data.toString();
|
return tone !== context.getImageData( 16, 16, 1, 1 ).data.toString();
|
||||||
} else {
|
} else {
|
||||||
@ -57,13 +58,13 @@
|
|||||||
* center pixel. In browsers that don't support emoji, the character will be rendered
|
* center pixel. In browsers that don't support emoji, the character will be rendered
|
||||||
* as an empty square, so the center pixel will be blank.
|
* as an empty square, so the center pixel will be blank.
|
||||||
*/
|
*/
|
||||||
context.fillText( String.fromCharCode( 55357, 56835 ), 0, 0 );
|
context.fillText( stringFromCharCode( 55357, 56835 ), 0, 0 );
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* To check for Unicode 8 support, let's try rendering the most important advancement
|
* To check for Unicode 8 support, let's try rendering the most important advancement
|
||||||
* that the Unicode Consortium have made in years: the burrito.
|
* that the Unicode Consortium have made in years: the burrito.
|
||||||
*/
|
*/
|
||||||
context.fillText( String.fromCharCode( 55356, 57135 ), 0, 0 );
|
context.fillText( stringFromCharCode( 55356, 57135 ), 0, 0 );
|
||||||
}
|
}
|
||||||
return context.getImageData( 16, 16, 1, 1 ).data[0] !== 0;
|
return context.getImageData( 16, 16, 1, 1 ).data[0] !== 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user