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