From c0db6d70320ad6fb29a6a89aae3811a81b5adedf Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Mon, 19 Sep 2022 14:08:12 -0700 Subject: [PATCH] =?utf8?q?CSS:=20Don=E2=80=99t=20trim=20whitespace=20of=20?= =?utf8?q?undefined=20custom=20property?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Fixes gh-5105 Closes gh-5106 Signed-off-by: Anders Kaseorg (cherry picked from commit ed306c0261ab63746040e5d58bb4477c3069a427) --- src/css/curCSS.js | 2 +- test/unit/css.js | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/css/curCSS.js b/src/css/curCSS.js index f36e369ce..eed7f633e 100644 --- a/src/css/curCSS.js +++ b/src/css/curCSS.js @@ -31,7 +31,7 @@ function curCSS( elem, name, computed ) { ret = computed.getPropertyValue( name ) || computed[ name ]; // trim whitespace for custom property (issue gh-4926) - if ( isCustomProp ) { + if ( isCustomProp && ret !== undefined ) { // rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED // as whitespace while CSS does not, but this is not a problem diff --git a/test/unit/css.js b/test/unit/css.js index 2df877de8..fc7d4c3d4 100644 --- a/test/unit/css.js +++ b/test/unit/css.js @@ -1760,6 +1760,7 @@ QUnit.test( "Do not throw on frame elements from css method (trac-15098)", funct " --prop10:\f\r\n\t val10 \f\r\n\t;\n" + " --prop11:\u000C\u000D\u000A\u0009\u0020val11\u0020\u0009\u000A\u000D\u000C;\n" + " --prop12:\u000Bval12\u000B;\n" + + " --empty:;\n" + " }\n" + "" ); @@ -1768,7 +1769,7 @@ QUnit.test( "Do not throw on frame elements from css method (trac-15098)", funct $elem = jQuery( "
" ).addClass( "test__customProperties" ) .appendTo( "#qunit-fixture" ), webkitOrBlink = /\bsafari\b/i.test( navigator.userAgent ), - expected = 17; + expected = 19; if ( webkitOrBlink ) { expected -= 2; @@ -1814,6 +1815,8 @@ QUnit.test( "Do not throw on frame elements from css method (trac-15098)", funct assert.equal( $elem.css( "--prop10" ), "val10", "Multiple preceding and following escaped unicode whitespace trimmed" ); assert.equal( $elem.css( "--prop11" ), "val11", "Multiple preceding and following unicode whitespace trimmed" ); assert.equal( $elem.css( "--prop12" ), "\u000Bval12\u000B", "Multiple preceding and following non-CSS whitespace reserved" ); + assert.equal( $elem.css( "--empty" ), undefined ); + assert.equal( $elem.css( "--nonexistent" ), undefined ); } ); QUnit[ supportsCssVars ? "test" : "skip" ]( "Don't append px to CSS vars", function( assert ) { -- 2.39.5