You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by ja...@apache.org on 2010/07/26 05:46:24 UTC
svn commit: r979145 - in /shindig/trunk/java/gadgets/src:
main/java/org/apache/shindig/gadgets/parse/caja/
main/java/org/apache/shindig/gadgets/rewrite/
test/java/org/apache/shindig/gadgets/render/
test/java/org/apache/shindig/gadgets/rewrite/ test/res...
Author: jasvir
Date: Mon Jul 26 03:46:24 2010
New Revision: 979145
URL: http://svn.apache.org/viewvc?rev=979145&view=rev
Log:
* uses full caja parser rather than a lexer workaround for @imports in CSS
* Adds missing broken test for @import "url"
* Corrected test in StyleTagProxyEmbeddedUrlsVisitorTest to conform to CSS2.1 spec
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaCssParser.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaCssSanitizer.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriter.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitor.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingGadgetRewriterTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingResponseRewriterTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriterTest.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java
shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/old/rewritebasic-expected.css
shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/rewritebasic-expected.css
shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/rewritebasic.css
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaCssParser.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaCssParser.java?rev=979145&r1=979144&r2=979145&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaCssParser.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaCssParser.java Mon Jul 26 03:46:24 2010
@@ -19,6 +19,7 @@ package org.apache.shindig.gadgets.parse
import org.apache.shindig.common.cache.Cache;
import org.apache.shindig.common.cache.CacheProvider;
+import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.common.util.HashUtil;
import org.apache.shindig.gadgets.GadgetException;
import org.apache.shindig.gadgets.http.HttpResponse;
@@ -45,19 +46,17 @@ import com.google.inject.Inject;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;
-import java.net.URI;
import java.util.Collections;
/** A CSS DOM parser using Caja. */
public class CajaCssParser {
/**
- * Dummy URI that is never read from. Needed to construct Caja parser
+ * Fake URI source if one is not provided by the calling context.
*/
- private static final URI FAKE_SOURCE = URI.create("http://a.dummy.url");
+ private static final Uri FAKE_SOURCE = Uri.parse("http://a.dummy.url");
- // Switch to "parsedCss" once CajaCssLexerParser is removed. See ehCacheConfig
- private static final String PARSED_CSS = "parsedCssDom";
+ private static final String PARSED_CSS = "parsedCss";
private Cache<String, CssTree.StyleSheet> parsedCssCache;
@@ -72,6 +71,12 @@ public class CajaCssParser {
* @return A parsed stylesheet
*/
public CssTree.StyleSheet parseDom(String content) throws GadgetException {
+ // Use a fake source if the real source is unknown
+ return parseDom(content, FAKE_SOURCE);
+ }
+
+ public CssTree.StyleSheet parseDom(String content, Uri source)
+ throws GadgetException {
CssTree.StyleSheet parsedCss = null;
boolean shouldCache = shouldCache();
String key = null;
@@ -82,7 +87,7 @@ public class CajaCssParser {
}
if (parsedCss == null) {
try {
- parsedCss = parseImpl(content);
+ parsedCss = parseImpl(content, source);
if (shouldCache) {
parsedCssCache.addElement(key, parsedCss);
}
@@ -98,8 +103,9 @@ public class CajaCssParser {
return parsedCss;
}
- private CssTree.StyleSheet parseImpl(String css) throws ParseException {
- InputSource inputSource = new InputSource(FAKE_SOURCE);
+ private CssTree.StyleSheet parseImpl(String css, Uri source)
+ throws ParseException {
+ InputSource inputSource = new InputSource(source.toJavaUri());
CharProducer producer = CharProducer.Factory.create(new StringReader(css),
inputSource);
TokenStream<CssTokenType> lexer = new CssLexer(producer);
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaCssSanitizer.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaCssSanitizer.java?rev=979145&r1=979144&r2=979145&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaCssSanitizer.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/parse/caja/CajaCssSanitizer.java Mon Jul 26 03:46:24 2010
@@ -75,7 +75,7 @@ public class CajaCssSanitizer {
public String sanitize(String content, Uri linkContext, ProxyUriManager importRewriter,
ProxyUriManager imageRewriter) {
try {
- CssTree.StyleSheet stylesheet = parser.parseDom(content);
+ CssTree.StyleSheet stylesheet = parser.parseDom(content, linkContext);
sanitize(stylesheet, linkContext, importRewriter, imageRewriter);
// Write the rewritten CSS back into the element
return parser.serialize(stylesheet);
@@ -97,7 +97,8 @@ public class CajaCssSanitizer {
ProxyUriManager imageRewriter) {
String content = null;
try {
- CssTree.StyleSheet stylesheet = parser.parseDom(styleElem.getTextContent());
+ CssTree.StyleSheet stylesheet =
+ parser.parseDom(styleElem.getTextContent(), linkContext);
sanitize(stylesheet, linkContext, importRewriter, imageRewriter);
// Write the rewritten CSS back into the element
content = parser.serialize(stylesheet);
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriter.java?rev=979145&r1=979144&r2=979145&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriter.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriter.java Mon Jul 26 03:46:24 2010
@@ -24,7 +24,7 @@ import org.apache.shindig.gadgets.Gadget
import org.apache.shindig.gadgets.http.HttpRequest;
import org.apache.shindig.gadgets.http.HttpResponse;
import org.apache.shindig.gadgets.http.HttpResponseBuilder;
-import org.apache.shindig.gadgets.parse.caja.CajaCssLexerParser;
+import org.apache.shindig.gadgets.parse.caja.CajaCssParser;
import org.apache.shindig.gadgets.uri.ProxyUriManager;
import org.w3c.dom.Element;
@@ -39,6 +39,10 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import com.google.caja.lexer.ParseException;
+import com.google.caja.parser.AbstractParseTreeNode;
+import com.google.caja.parser.AncestorChain;
+import com.google.caja.parser.Visitor;
+import com.google.caja.parser.css.CssTree;
import com.google.common.collect.Lists;
import com.google.inject.Inject;
@@ -49,12 +53,12 @@ public class CssResponseRewriter impleme
private static final Logger LOG = Logger.getLogger(CssResponseRewriter.class.getName());
- private final CajaCssLexerParser cssParser;
+ private final CajaCssParser cssParser;
private final ProxyUriManager proxyUriManager;
private final ContentRewriterFeature.Factory rewriterFeatureFactory;
@Inject
- public CssResponseRewriter(CajaCssLexerParser cssParser,
+ public CssResponseRewriter(CajaCssParser cssParser,
ProxyUriManager proxyUriManager, ContentRewriterFeature.Factory rewriterFeatureFactory) {
this.cssParser = cssParser;
this.proxyUriManager = proxyUriManager;
@@ -89,7 +93,7 @@ public class CssResponseRewriter impleme
try {
String original = IOUtils.toString(content);
try {
- List<Object> stylesheet = cssParser.parse(original);
+ CssTree.StyleSheet stylesheet = cssParser.parseDom(original, source);
List<String> stringList = rewrite(stylesheet, source, uriMaker, extractImports);
// Serialize the stylesheet
cssParser.serialize(stylesheet, writer);
@@ -121,7 +125,8 @@ public class CssResponseRewriter impleme
public List<String> rewrite(Element styleNode, Uri source,
UriMaker uriMaker, boolean extractImports) throws RewritingException {
try {
- List<Object> stylesheet = cssParser.parse(styleNode.getTextContent());
+ CssTree.StyleSheet stylesheet =
+ cssParser.parseDom(styleNode.getTextContent(), source);
List<String> imports = rewrite(stylesheet, source, uriMaker, extractImports);
// Write the rewritten CSS back into the element
String content = cssParser.serialize(stylesheet);
@@ -152,26 +157,35 @@ public class CssResponseRewriter impleme
* referenced URIs.
* @return Empty list of extracted import URIs.
*/
- public static List<String> rewrite(List<Object> styleSheet, final Uri source,
+ public static List<String> rewrite(CssTree.StyleSheet styleSheet, final Uri source,
final UriMaker uriMaker, final boolean extractImports) {
final List<String> imports = Lists.newLinkedList();
-
- for (int i = styleSheet.size() - 1; i >= 0; i--) {
- if (styleSheet.get(i) instanceof CajaCssLexerParser.ImportDecl) {
- if (extractImports) {
- imports.add(0, ((CajaCssLexerParser.ImportDecl)styleSheet.get(i)).getUri());
- styleSheet.remove(i);
- } else {
- CajaCssLexerParser.ImportDecl importDecl = (CajaCssLexerParser.ImportDecl) styleSheet
- .get(i);
- importDecl.setUri(rewriteUri(uriMaker, importDecl.getUri(), source));
+ final List<CssTree.UriLiteral> skip = Lists.newLinkedList();
+
+ styleSheet.acceptPreOrder(new Visitor() {
+ public boolean visit(AncestorChain<?> chain) {
+ System.err.println("Entering rewrite chain.node=" + chain.node);
+ if (chain.node instanceof CssTree.Import) {
+ CssTree.Import importNode = (CssTree.Import) chain.node;
+ CssTree.UriLiteral uriLiteral = importNode.getUri();
+ System.err.println("Import: uriLiteral.getValue() ");
+ skip.add(importNode.getUri());
+ if (extractImports) {
+ imports.add(uriLiteral.getValue());
+ ((AbstractParseTreeNode) chain.getParentNode()).removeChild(chain.node);
+ } else {
+ String rewritten = rewriteUri(uriMaker, uriLiteral.getValue(), source);
+ uriLiteral.setValue(rewritten);
+ }
+ } else if (chain.node instanceof CssTree.UriLiteral &&
+ !skip.contains(chain.node)) {
+ CssTree.UriLiteral uriDecl = (CssTree.UriLiteral) chain.node;
+ String rewritten = rewriteUri(uriMaker, uriDecl.getValue(), source);
+ uriDecl.setValue(rewritten);
}
- } else if (styleSheet.get(i) instanceof CajaCssLexerParser.UriDecl) {
- CajaCssLexerParser.UriDecl uriDecl = (CajaCssLexerParser.UriDecl) styleSheet
- .get(i);
- uriDecl.setUri(rewriteUri(uriMaker, uriDecl.getUri(), source));
- }
- }
+ return true;
+ }}, null);
+
return imports;
}
Modified: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitor.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitor.java?rev=979145&r1=979144&r2=979145&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitor.java (original)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitor.java Mon Jul 26 03:46:24 2010
@@ -57,6 +57,7 @@ public class StyleTagProxyEmbeddedUrlsVi
public boolean revisit(Gadget gadget, List<Node> nodes) throws RewritingException {
Uri contentBase = gadget.getSpec().getUrl();
+ System.err.println("Entering revist");
for (Node node: nodes) {
Element elem = (Element) node;
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingGadgetRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingGadgetRewriterTest.java?rev=979145&r1=979144&r2=979145&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingGadgetRewriterTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingGadgetRewriterTest.java Mon Jul 26 03:46:24 2010
@@ -82,12 +82,12 @@ public class SanitizingGadgetRewriterTes
super.setUp();
gadget = new Gadget().setContext(unsanitaryGadgetContext);
- gadget.setSpec(new GadgetSpec(Uri.parse("www.example.org/gadget.xml"),
+ gadget.setSpec(new GadgetSpec(Uri.parse("http://www.example.org/gadget.xml"),
"<Module><ModulePrefs title=''/><Content type='x-html-sanitized'/></Module>"));
gadget.setCurrentView(gadget.getSpec().getViews().values().iterator().next());
gadgetNoCacheAndDebug = new Gadget().setContext(unsanitaryGadgetContextNoCacheAndDebug);
- gadgetNoCacheAndDebug.setSpec(new GadgetSpec(Uri.parse("www.example.org/gadget.xml"),
+ gadgetNoCacheAndDebug.setSpec(new GadgetSpec(Uri.parse("http://www.example.org/gadget.xml"),
"<Module><ModulePrefs title=''/><Content type='x-html-sanitized'/></Module>"));
gadgetNoCacheAndDebug.setCurrentView(gadgetNoCacheAndDebug.getSpec().getViews().values().iterator().next());
}
@@ -207,7 +207,7 @@ public class SanitizingGadgetRewriterTes
// since this does not work in IE
String sanitized =
"<html><head><style>"
- + "@import url('http://host.com/proxy?url=www.example.org%2Fwww.evil.com%2Fx.js&"
+ + "@import url('http://host.com/proxy?url=http%3A%2F%2Fwww.example.org%2Fwww.evil.com%2Fx.js&"
+ "sanitize=1&rewriteMime=text%2Fcss');"
+ "</style></head><body></body></html>";
String rewritten = rewrite(gadget, markup, set("style"), set());
@@ -222,7 +222,7 @@ public class SanitizingGadgetRewriterTes
// since this does not work in IE
String sanitized =
"<html><head><style>"
- + "@import url('http://host.com/proxy?url=www.example.org%2Fwww.evil.com%2Fx.js&sanitize=1"
+ + "@import url('http://host.com/proxy?url=http%3A%2F%2Fwww.example.org%2Fwww.evil.com%2Fx.js&sanitize=1"
+ "&rewriteMime=text%2Fcss');</style></head><body></body></html>";
String rewritten = rewrite(gadgetNoCacheAndDebug, markup, set("style"), set());
assertEquals(sanitized, rewritten);
@@ -381,7 +381,7 @@ public class SanitizingGadgetRewriterTes
"<b>bold text</b></p><b>Bold text</b></body></html>";
Gadget gadget = new Gadget().setContext(sanitaryGadgetContext);
- gadget.setSpec(new GadgetSpec(Uri.parse("www.example.org/gadget.xml"),
+ gadget.setSpec(new GadgetSpec(Uri.parse("http://www.example.org/gadget.xml"),
"<Module><ModulePrefs title=''/><Content type='html'/></Module>"));
gadget.setCurrentView(gadget.getSpec().getViews().values().iterator().next());
assertEquals(sanitized, rewrite(gadget, markup, set("p", "b", "style"), set()));
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingResponseRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingResponseRewriterTest.java?rev=979145&r1=979144&r2=979145&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingResponseRewriterTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/render/SanitizingResponseRewriterTest.java Mon Jul 26 03:46:24 2010
@@ -38,7 +38,7 @@ import java.util.Collections;
import java.util.Set;
public class SanitizingResponseRewriterTest extends RewriterTestBase {
- private static final Uri CONTENT_URI = Uri.parse("www.example.org/content");
+ private static final Uri CONTENT_URI = Uri.parse("http://www.example.org/content");
private String rewrite(HttpRequest request, HttpResponse response) throws Exception {
request.setSanitizationRequested(true);
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriterTest.java?rev=979145&r1=979144&r2=979145&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriterTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/CssResponseRewriterTest.java Mon Jul 26 03:46:24 2010
@@ -25,14 +25,17 @@ import org.apache.shindig.common.uri.Uri
import org.apache.shindig.gadgets.http.HttpRequest;
import org.apache.shindig.gadgets.http.HttpResponseBuilder;
import org.apache.shindig.gadgets.parse.caja.CajaCssLexerParser;
+import org.apache.shindig.gadgets.parse.caja.CajaCssParser;
import org.apache.shindig.gadgets.uri.PassthruManager;
import org.apache.shindig.gadgets.uri.ProxyUriManager;
import org.easymock.EasyMock;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.io.StringReader;
import java.io.StringWriter;
+import java.net.URI;
import java.util.List;
import com.google.common.collect.Lists;
@@ -61,7 +64,7 @@ public class CssResponseRewriterTest ext
}
};
proxyUriManager = new PassthruManager("www.test.com", "/dir/proxy");
- rewriterNoOverrideExpires = new CssResponseRewriter(new CajaCssLexerParser(),
+ rewriterNoOverrideExpires = new CssResponseRewriter(new CajaCssParser(),
proxyUriManager, factoryNoOverrideExpires);
final ContentRewriterFeature.Config overrideFeature =
rewriterFeatureFactory.get(createSpecWithRewrite(".*", ".*exclude.*", "3600", tags));
@@ -72,7 +75,7 @@ public class CssResponseRewriterTest ext
}
};
- rewriter = new CssResponseRewriter(new CajaCssLexerParser(),
+ rewriter = new CssResponseRewriter(new CajaCssParser(),
proxyUriManager, factory);
dummyUri = Uri.parse("http://www.w3c.org");
}
@@ -142,7 +145,7 @@ public class CssResponseRewriterTest ext
getResourceAsStream("org/apache/shindig/gadgets/rewrite/rewritebasic-expected.css"));
expected = replaceDefaultWithMockServer(expected);
proxyUriManager = new PassthruManager("www.mock.com", "/dir/proxy");
- rewriter = new CssResponseRewriter(new CajaCssLexerParser(),
+ rewriter = new CssResponseRewriter(new CajaCssParser(),
proxyUriManager, factory);
HttpRequest request = new HttpRequest(Uri.parse("http://www.example.org/path/rewritebasic.css"));
@@ -211,8 +214,23 @@ public class CssResponseRewriterTest ext
List<String> stringList = rewriter
.rewrite(new StringReader(original), dummyUri,
CssResponseRewriter.uriMaker(proxyUriManager, defaultRewriterFeature), sw, true);
- assertEquals(expected, sw.toString());
- assertEquals(stringList, Lists.newArrayList("www.example.org/some.css",
- "www.example.org/someother.css", "www.example.org/another.css"));
+ assertEquals(StringUtils.deleteWhitespace(expected),
+ StringUtils.deleteWhitespace(sw.toString()));
+ assertEquals(Lists.newArrayList("www.example.org/some.css",
+ "www.example.org/someother.css", "www.example.org/another.css"), stringList);
+ }
+
+ @Test
+ public void testMalformedImport() throws Exception {
+ String original = " @import \"www.example.org/some.css\";\n" +
+ " span { color: red; }";
+ String expected = " span { color: red; }";
+ StringWriter sw = new StringWriter();
+ List<String> stringList = rewriter
+ .rewrite(new StringReader(original), dummyUri,
+ CssResponseRewriter.uriMaker(proxyUriManager, defaultRewriterFeature), sw, true);
+ assertEquals(StringUtils.deleteWhitespace(expected),
+ StringUtils.deleteWhitespace(sw.toString()));
+ assertEquals(Lists.newArrayList("www.example.org/some.css"), stringList);
}
}
Modified: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java?rev=979145&r1=979144&r2=979145&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java (original)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/rewrite/StyleTagProxyEmbeddedUrlsVisitorTest.java Mon Jul 26 03:46:24 2010
@@ -21,6 +21,7 @@ package org.apache.shindig.gadgets.rewri
import com.google.common.collect.ImmutableList;
import com.google.inject.Guice;
import com.google.inject.Injector;
+import org.apache.commons.lang.StringUtils;
import org.apache.shindig.common.PropertiesModule;
import org.apache.shindig.common.uri.Uri;
import org.apache.shindig.gadgets.DefaultGuiceModule;
@@ -61,8 +62,8 @@ public class StyleTagProxyEmbeddedUrlsVi
public void testImportsAndBackgroundUrlsInStyleTag() throws Exception {
String html = "<html><head>"
+ "<style>"
- + "P {color:blue;}"
+ "@import url(/1.css);"
+ + "P {color:blue;}"
+ "P {color:red;}"
+ "A {background: url(/2.jpg);}"
+ "</style>"
@@ -70,10 +71,11 @@ public class StyleTagProxyEmbeddedUrlsVi
+ "</body></html>";
String expected =
"<html><head>"
- + "<style>P {color:blue;}"
+ + "<style>"
+ "@import url('//localhost:8080/gadgets/proxy?container=default&"
+ "gadget=http%3A%2F%2F1.com%2F&debug=0&nocache=0"
+ "&url=http%3A%2F%2F1.com%2F1.css');\n"
+ + "P {color:blue;}"
+ "P {color:red;}"
+ "A {background: url('//localhost:8080/gadgets/proxy?container=default"
+ "&gadget=http%3A%2F%2F1.com%2F&debug=0&nocache=0"
@@ -96,6 +98,7 @@ public class StyleTagProxyEmbeddedUrlsVi
visitor.revisit(gadget, ImmutableList.of(list.item(0)));
EasyMock.verify();
- assertEquals(expected, serializer.serialize(doc));
+ assertEquals(StringUtils.deleteWhitespace(expected),
+ StringUtils.deleteWhitespace(serializer.serialize(doc)));
}
}
Modified: shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/old/rewritebasic-expected.css
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/old/rewritebasic-expected.css?rev=979145&r1=979144&r2=979145&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/old/rewritebasic-expected.css (original)
+++ shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/old/rewritebasic-expected.css Mon Jul 26 03:46:24 2010
@@ -1,6 +1,3 @@
-
-/* Rewrite various url forms in input statements, absolute and host/path relative.
- Test exclusions */
@import url('http://www.test.com/dir/proxy?url=http%3A%2F%2Fwww.example.org%2Fother1.css&gadget=http%3A%2F%2Fwww.example.org%2Fdir%2Fg.xml&fp=1150739864&refresh=3600');
@import url('http://www.test.com/dir/proxy?url=http%3A%2F%2Fwww.example.org%2Fpath%2Frelative%2Fother2.css&gadget=http%3A%2F%2Fwww.example.org%2Fdir%2Fg.xml&fp=1150739864&refresh=3600');
@import url('http://www.example.org/hostrelative/excluded/other1.css');
@@ -8,5 +5,3 @@ DiV {
font: arial;
background-image : url('http://www.test.com/dir/proxy?url=http%3A%2F%2Fwww.some.site%2Fimage.gif&gadget=http%3A%2F%2Fwww.example.org%2Fdir%2Fg.xml&fp=1150739864&refresh=3600');
}
-
-/* A comment? */
Modified: shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/rewritebasic-expected.css
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/rewritebasic-expected.css?rev=979145&r1=979144&r2=979145&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/rewritebasic-expected.css (original)
+++ shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/rewritebasic-expected.css Mon Jul 26 03:46:24 2010
@@ -1,12 +1,8 @@
-
-/* Rewrite various url forms in input statements, absolute and host/path relative.
- Test exclusions */
@import url('http://www.test.com/dir/proxy?url=http%3A%2F%2Fwww.example.org%2Fother1.css');
@import url('http://www.test.com/dir/proxy?url=http%3A%2F%2Fwww.example.org%2Fpath%2Frelative%2Fother2.css');
@import url('http://www.example.org/hostrelative/excluded/other1.css');
+
DiV {
font: arial;
background-image : url('http://www.test.com/dir/proxy?url=http%3A%2F%2Fwww.some.site%2Fimage.gif');
}
-
-/* A comment? */
\ No newline at end of file
Modified: shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/rewritebasic.css
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/rewritebasic.css?rev=979145&r1=979144&r2=979145&view=diff
==============================================================================
--- shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/rewritebasic.css (original)
+++ shindig/trunk/java/gadgets/src/test/resources/org/apache/shindig/gadgets/rewrite/rewritebasic.css Mon Jul 26 03:46:24 2010
@@ -1,6 +1,3 @@
-
-/* Rewrite various url forms in input statements, absolute and host/path relative.
- Test exclusions */
@import url(http://www.example.org/other1.css);
@import url("relative/other2.css");
@import url('/hostrelative/excluded/other1.css');
@@ -9,5 +6,3 @@ DiV {
font: arial;
background-image : url("http://www.some.site/image.gif");
}
-
-/* A comment? */
\ No newline at end of file