Gss2Css converter: Don't escape StringValue content. Change-Id: Icffa55f9b196fca49c85d179b3b88f814533bd70 (cherry picked from commit 509da4abf6fa7c50a7136a692e953e89b59c27a8)
diff --git a/user/src/com/google/gwt/resources/converter/GssGenerationVisitor.java b/user/src/com/google/gwt/resources/converter/GssGenerationVisitor.java index 63280fa..2c47501 100644 --- a/user/src/com/google/gwt/resources/converter/GssGenerationVisitor.java +++ b/user/src/com/google/gwt/resources/converter/GssGenerationVisitor.java
@@ -29,6 +29,7 @@ import com.google.gwt.resources.css.ast.CssPageRule; import com.google.gwt.resources.css.ast.CssProperty; import com.google.gwt.resources.css.ast.CssProperty.DotPathValue; +import com.google.gwt.resources.css.ast.CssProperty.StringValue; import com.google.gwt.resources.css.ast.CssProperty.Value; import com.google.gwt.resources.css.ast.CssRule; import com.google.gwt.resources.css.ast.CssSelector; @@ -596,7 +597,11 @@ } } - builder.append(unescape(expression)); + if (value instanceof StringValue) { + builder.append(expression); + } else { + builder.append(unescape(expression)); + } } return builder.toString();
diff --git a/user/test/com/google/gwt/resources/converter/Css2GssTest.java b/user/test/com/google/gwt/resources/converter/Css2GssTest.java index 4476cd4..4816ec8 100644 --- a/user/test/com/google/gwt/resources/converter/Css2GssTest.java +++ b/user/test/com/google/gwt/resources/converter/Css2GssTest.java
@@ -89,6 +89,10 @@ "invalidConstantName.css", "invalidConstantName.gss", true); } + public void testEscaping() throws IOException, UnableToCompleteException { + assertFileContentEqualsAfterConversion("escape.css", "escape.gss", true); + } + private void assertFileContentEqualsAfterConversion(String inputCssFile, String expectedGssFile) throws IOException, UnableToCompleteException { assertFileContentEqualsAfterConversion(inputCssFile, expectedGssFile, false);
diff --git a/user/test/com/google/gwt/resources/converter/escape.css b/user/test/com/google/gwt/resources/converter/escape.css new file mode 100644 index 0000000..53c25ea --- /dev/null +++ b/user/test/com/google/gwt/resources/converter/escape.css
@@ -0,0 +1,11 @@ +.replacement:after { + content: "Hello\\\" world"; +} + +div { + \-some-wacky-extension: \-bar; +} + +p:nth-child\(2\) { + width: 10px; +}
diff --git a/user/test/com/google/gwt/resources/converter/escape.gss b/user/test/com/google/gwt/resources/converter/escape.gss new file mode 100644 index 0000000..2477687 --- /dev/null +++ b/user/test/com/google/gwt/resources/converter/escape.gss
@@ -0,0 +1,12 @@ + +.replacement:after { + content: "Hello\\\" world"; +} + +div { + -some-wacky-extension: -bar; +} + +p:nth-child(2) { + width: 10px; +}