This is an automated email from the ASF dual-hosted git repository.
benw pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git
The following commit(s) were added to refs/heads/master by this push:
new 47a6e746f TAP5-2791: Fixing CssCompressor SVG data url handling
47a6e746f is described below
commit 47a6e746fd3a344fa088dbf676aaa8e75c467174
Author: Ben Weidig <[email protected]>
AuthorDate: Sun Nov 10 17:26:42 2024 +0100
TAP5-2791: Fixing CssCompressor SVG data url handling
---
.../apache/tapestry5/internal/webresources/CssCompressor.java | 10 ++++++++--
.../test/groovy/t5/webresources/tests/CssCompressorSpec.groovy | 1 +
.../src/test/resources/t5/webresources/css/TAP5-2791.css | 4 ++++
.../src/test/resources/t5/webresources/css/TAP5-2791.css.min | 1 +
4 files changed, 14 insertions(+), 2 deletions(-)
diff --git
a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CssCompressor.java
b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CssCompressor.java
index c50760958..ce803f202 100644
---
a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CssCompressor.java
+++
b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CssCompressor.java
@@ -134,8 +134,14 @@ public class CssCompressor {
if (foundTerminator) {
String token = css.substring(startIndex, endIndex);
- if (removeWhiteSpace)
- token = WHITESPACE.matcher(token).replaceAll("");
+ if (removeWhiteSpace) {
+ if (token.indexOf("data:image/svg+xml") != -1) {
+ token = token.trim();
+ }
+ else {
+ token = WHITESPACE.matcher(token).replaceAll("");
+ }
+ }
preservedTokens.add(token);
String preserver = preservedToken + "(___YUICSSMIN_PRESERVED_"
+ preserverIdentifier + "_"
diff --git
a/tapestry-webresources/src/test/groovy/t5/webresources/tests/CssCompressorSpec.groovy
b/tapestry-webresources/src/test/groovy/t5/webresources/tests/CssCompressorSpec.groovy
index 85d7e655f..6c29de79f 100644
---
a/tapestry-webresources/src/test/groovy/t5/webresources/tests/CssCompressorSpec.groovy
+++
b/tapestry-webresources/src/test/groovy/t5/webresources/tests/CssCompressorSpec.groovy
@@ -32,6 +32,7 @@ class CssCompressorSpec extends Specification {
'TAP5-2524' | 'minify CSS with keyframes'
'TAP5-2600' | 'preserve 0s in transition'
'TAP5-2753' | 'preserve space for calc operators'
+ 'TAP5-2791' | 'data url svg whitespace'
}
/**
diff --git
a/tapestry-webresources/src/test/resources/t5/webresources/css/TAP5-2791.css
b/tapestry-webresources/src/test/resources/t5/webresources/css/TAP5-2791.css
new file mode 100644
index 000000000..11ae2074c
--- /dev/null
+++ b/tapestry-webresources/src/test/resources/t5/webresources/css/TAP5-2791.css
@@ -0,0 +1,4 @@
+.some-class
+{
+ background-image: url('data:image/svg+xml;utf-8,<svg width="16"
height="16" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd"
clip-rule="evenodd" d="M6 5C5.73478 5 5.48043 5.10536 5.29289 5.29289C5.10536
5.48043 5 5.73478 5 6V20C5 20.2652 5.10536 20.5196 5.29289 20.7071C5.48043
20.8946 5.73478 21 6 21H18C18.2652 21 18.5196 20.8946 18.7071 20.7071C18.8946
20.5196 19 20.2652 19 20V6C19 5.73478 18.8946 5.48043 18.7071 5.29289C18.5196
5.10536 18 [...]
+}
\ No newline at end of file
diff --git
a/tapestry-webresources/src/test/resources/t5/webresources/css/TAP5-2791.css.min
b/tapestry-webresources/src/test/resources/t5/webresources/css/TAP5-2791.css.min
new file mode 100644
index 000000000..dfad87c03
--- /dev/null
+++
b/tapestry-webresources/src/test/resources/t5/webresources/css/TAP5-2791.css.min
@@ -0,0 +1 @@
+.some-class{background-image:url('data:image/svg+xml;utf-8,<svg width="16"
height="16" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd"
clip-rule="evenodd" d="M6 5C5.73478 5 5.48043 5.10536 5.29289 5.29289C5.10536
5.48043 5 5.73478 5 6V20C5 20.2652 5.10536 20.5196 5.29289 20.7071C5.48043
20.8946 5.73478 21 6 21H18C18.2652 21 18.5196 20.8946 18.7071 20.7071C18.8946
20.5196 19 20.2652 19 20V6C19 5.73478 18.8946 5.48043 18.7071 5.29289C18.5196
5.1 [...]
\ No newline at end of file