Revision: 5492
Author:   [email protected]
Date:     Mon Jul 15 13:10:17 2013
Log:      Get rid of unnecessary ES53-only checks for non-CSS2.1 colors.
https://codereview.appspot.com/11294043

CSSRewriter used to convert color keywords that were not recognized by
a strict interpretation of CSS2.1.

This was never done client-side, and the messages reported are now of
marginal value.

Removing this has the nice side-effect of making CssRewriter completely
independent of the CSS schema.

[email protected]

http://code.google.com/p/google-caja/source/detail?r=5492

Modified:
 /trunk/src/com/google/caja/parser/js/Parser.java
 /trunk/src/com/google/caja/plugin/BuildServiceImplementation.java
 /trunk/src/com/google/caja/plugin/CssRewriter.java
 /trunk/src/com/google/caja/plugin/stages/ValidateCssStage.java
 /trunk/src/com/google/caja/plugin/templates/HtmlAttributeRewriter.java
 /trunk/tests/com/google/caja/parser/quasiliteral/RewriterTestCase.java
 /trunk/tests/com/google/caja/plugin/CssDynamicExpressionRewriterTest.java
 /trunk/tests/com/google/caja/plugin/CssRewriterTest.java
 /trunk/tests/com/google/caja/plugin/css-stylesheet-tests.js
 /trunk/tests/com/google/caja/plugin/templates/TemplateCompilerTest.java

=======================================
--- /trunk/src/com/google/caja/parser/js/Parser.java Tue Jun 5 15:38:57 2012 +++ /trunk/src/com/google/caja/parser/js/Parser.java Mon Jul 15 13:10:17 2013
@@ -925,6 +925,7 @@
           }
           break;
           case BRACKET:
+            assert right != null;
             if (Operator.FUNCTION_CALL == op) {
// Function calls can take nothing or multiple on the right, so
               // we wrap function calls up in an ActualList.
@@ -986,12 +987,13 @@
     }
   }

-  private double toNumber(Token<JsTokenType> t) {
+  private static double toNumber(Token<JsTokenType> t) {
     // Double.parseDouble is not locale dependent.
     return Double.parseDouble(t.text);
   }

- private String floatToString(Token<JsTokenType> t) throws ParseException {
+  private static String floatToString(Token<JsTokenType> t)
+      throws ParseException {
     try {
       return NumberLiteral.numberToString(new BigDecimal(t.text));
     } catch (NumberFormatException e) {
@@ -1002,7 +1004,7 @@
     }
   }

-  private NumberLiteral toNumberLiteral(Token<JsTokenType> t) {
+  private static NumberLiteral toNumberLiteral(Token<JsTokenType> t) {
     return new RealLiteral(t.pos, toNumber(t));
   }

@@ -1034,7 +1036,7 @@
     }
   }

-  private Pair<String, Integer> breakOutRadix(String n) {
+  private static Pair<String, Integer> breakOutRadix(String n) {
     if (n.startsWith("0X") || n.startsWith("0x")) {
       return Pair.pair(n.substring(2), 16);
     } else if (n.startsWith("0")) {
=======================================
--- /trunk/src/com/google/caja/plugin/BuildServiceImplementation.java Mon Jul 30 16:13:42 2012 +++ /trunk/src/com/google/caja/plugin/BuildServiceImplementation.java Mon Jul 15 13:10:17 2013
@@ -275,6 +275,7 @@

     // Write the output
     if (passed) {
+      assert outputJs != null;
       // Write out as HTML if the output file has the right extension.
       boolean asXml = output.getName().endsWith(".xhtml");
       boolean emitMarkup = asXml || output.getName().endsWith(".html");
@@ -319,7 +320,8 @@
     return passed;
   }

- private boolean concat(List<File> inputs, File output, PrintWriter logger) {
+  private static boolean concat(
+      List<File> inputs, File output, PrintWriter logger) {
     StringBuilder result = new StringBuilder();
     boolean ok = true;
     boolean first = true;
@@ -366,7 +368,7 @@
    * sanity check when concatenating JS files in the build process, and we
    * control all the JS files involved.
    */
-  private boolean isStrict(CharSequence js) {
+  private static boolean isStrict(CharSequence js) {
     return strictRE.matcher(js).find();
   }

=======================================
--- /trunk/src/com/google/caja/plugin/CssRewriter.java Thu Jul 11 15:50:37 2013 +++ /trunk/src/com/google/caja/plugin/CssRewriter.java Mon Jul 15 13:10:17 2013
@@ -15,9 +15,6 @@
 package com.google.caja.plugin;

 import com.google.caja.SomethingWidgyHappenedError;
-import com.google.caja.lang.css.CssPropertyPatterns;
-import com.google.caja.lang.css.CssSchema;
-import com.google.caja.lang.css.CssSchema.SymbolInfo;
 import com.google.caja.lang.html.HtmlSchema;
 import com.google.caja.lexer.ExternalReference;
 import com.google.caja.lexer.FilePosition;
@@ -37,7 +34,6 @@
 import com.google.caja.reporting.MessageQueue;
 import com.google.caja.reporting.RenderContext;
 import com.google.caja.util.Lists;
-import com.google.caja.util.Maps;
 import com.google.caja.util.Name;
 import com.google.caja.util.Pair;
 import com.google.caja.util.Sets;
@@ -46,7 +42,6 @@
 import java.net.URISyntaxException;
 import java.util.Collections;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 import java.util.regex.Pattern;

@@ -61,15 +56,14 @@
  */
 public final class CssRewriter {
   private final UriPolicy uriPolicy;
-  private final CssSchema cssSchema;
   private HtmlSchema htmlSchema;
   private final MessageQueue mq;
   private MessageLevel invalidNodeMessageLevel = MessageLevel.ERROR;

- public CssRewriter(UriPolicy uriPolicy, CssSchema cssSchema, HtmlSchema htmlSchema, MessageQueue mq) {
+  public CssRewriter(
+      UriPolicy uriPolicy, HtmlSchema htmlSchema, MessageQueue mq) {
     assert null != mq;
     this.uriPolicy = uriPolicy;
-    this.cssSchema = cssSchema;
     this.htmlSchema = htmlSchema;
     this.mq = mq;
   }
@@ -291,7 +285,8 @@
     }
   }

- private boolean containsLinkPseudoClass(CssTree.SimpleSelector selector) {
+  private static boolean containsLinkPseudoClass(
+      CssTree.SimpleSelector selector) {
     final boolean[] result = new boolean[1];
     selector.visitPreOrder(new ParseTreeNodeVisitor() {
       public boolean visit(ParseTreeNode node) {
@@ -396,21 +391,12 @@
   }

   /**
-   * Make sure that unitless lengths have units, and convert non-standard
-   * colors to hex constants.
+   * Make sure that unitless lengths have units.
* <a href="http://www.w3.org/TR/CSS21/syndata.html#length-units";>Lengths</a>
    * require units unless the value is zero.  All browsers assume px if the
    * suffix is missing.
    */
   private void fixTerms(AncestorChain<? extends CssTree> t) {
-    SymbolInfo stdColors = cssSchema.getSymbol(Name.css("color-standard"));
-    final Pattern stdColorMatcher;
-    if (stdColors != null) {
-      stdColorMatcher = new CssPropertyPatterns(cssSchema)
-          .cssPropertyToJavaRegex(stdColors.sig);
-    } else {
-      stdColorMatcher = null;
-    }
     t.node.visitPreOrder(new ParseTreeNodeVisitor() {
         public boolean visit(ParseTreeNode node) {
           if (!(node instanceof CssTree.Term)) {
@@ -433,33 +419,13 @@
                             quantity.getFilePosition(),
                             MessagePart.Factory.valueOf(value));
             }
-            return false;
-          } else if (stdColorMatcher != null
-                     && CssPropertyPartType.IDENT == partType
-                     && (propertyPart(term).getCanonicalForm()
-                         .endsWith("::color"))) {
-            Name colorName = Name.css(
-                ((CssTree.IdentLiteral) term.getExprAtom()).getValue());
- if (!stdColorMatcher.matcher(colorName.getCanonicalForm() + " ")
-                .matches()) {
-              FilePosition pos = term.getExprAtom().getFilePosition();
-              CssTree.HashLiteral replacement = colorHash(pos, colorName);
-              MessageLevel lvl = MessageLevel.LINT;
-              if (replacement == null) {
-                lvl = MessageLevel.ERROR;
-                replacement = CssTree.HashLiteral.hex(pos, 0, 3);
-              }
-              term.replaceChild(replacement, term.getExprAtom());
-              mq.addMessage(
- PluginMessageType.NON_STANDARD_COLOR, lvl, pos, colorName,
-                  MessagePart.Factory.valueOf(replacement.getValue()));
-            }
             return false;
           }
           return true;
         }
       });
   }
+
   private static boolean isZeroOrHasUnits(String value) {
     int len = value.length();
     char ch = value.charAt(len - 1);
@@ -473,7 +439,7 @@
   }

   /** Get rid of rules like <code>p { }</code>. */
-  private void removeEmptyDeclarationsAndSelectors(
+  private static void removeEmptyDeclarationsAndSelectors(
       AncestorChain<? extends CssTree> t) {
     t.node.acceptPreOrder(new Visitor() {
         public boolean visit(AncestorChain<?> ancestors) {
@@ -500,7 +466,8 @@
         }
       }, t.parent);
   }
-  private void removeEmptyRuleSets(AncestorChain<? extends CssTree> t) {
+
+ private static void removeEmptyRuleSets(AncestorChain<? extends CssTree> t) {
     t.node.acceptPreOrder(new Visitor() {
         public boolean visit(AncestorChain<?> ancestors) {
           ParseTreeNode node = ancestors.node;
@@ -551,13 +518,14 @@
         }
       }, t.parent);
   }
+
private void renameVirtualizedElements(AncestorChain<? extends CssTree> t) {
     t.node.visitPreOrder(new ParseTreeNodeVisitor() {
         public boolean visit(ParseTreeNode node) {
if (node instanceof CssTree.SuffixedSelectorPart) { return false; }
           if (!(node instanceof CssTree.SimpleSelector)) { return true; }
           CssTree.SimpleSelector ss = (CssTree.SimpleSelector) node;
-          CssTree name = (CssTree) ss.children().get(0);
+          CssTree name = ss.children().get(0);
           if (name instanceof CssTree.IdentLiteral) {
             CssTree.IdentLiteral lit = (CssTree.IdentLiteral) name;

@@ -572,7 +540,8 @@
         }
       });
   }
-  private void suffixIds(AncestorChain<? extends CssTree> t) {
+
+  private static void suffixIds(AncestorChain<? extends CssTree> t) {
     // Rewrite IDs with the gadget suffix.
     t.node.visitPreOrder(new ParseTreeNodeVisitor() {
           public boolean visit(ParseTreeNode node) {
@@ -593,7 +562,7 @@
           }
         });
   }
-  private void restrictRulesToSubtreesWithGadgetClass(
+  private static void restrictRulesToSubtreesWithGadgetClass(
       AncestorChain<? extends CssTree> t) {
     t.node.visitPreOrder(new ParseTreeNodeVisitor() {
       public boolean visit(ParseTreeNode node) {
@@ -939,7 +908,7 @@
     return true;
   }

-  private boolean mightContainUrl(CssTree.Expr expr) {
+  private static boolean mightContainUrl(CssTree.Expr expr) {
     for (int n = expr.getNTerms(), i = 0; i < n; ++i) {
       CssTree.CssExprAtom atom = expr.getNthTerm(i).getExprAtom();
       if (!(atom instanceof CssTree.IdentLiteral
@@ -996,164 +965,6 @@
     return true;
   }

- public static CssTree.HashLiteral colorHash(FilePosition pos, Name color) {
-    Integer hexI = CSS3_COLORS.get(color.getCanonicalForm());
-    return hexI != null ? colorHash(pos, hexI) : null;
-  }
-
-  public static CssTree.HashLiteral colorHash(FilePosition pos, int hex) {
-    if ((hex & 0x0f0f0f) == ((hex >>> 4) & 0x0f0f0f)) {  // #rgb
-      return CssTree.HashLiteral.hex(
- pos, ((hex >>> 8) & 0xf00) | ((hex >>> 4) & 0xf0) | (hex & 0xf), 3);
-    } else { // #rrggbb
-      return CssTree.HashLiteral.hex(pos, hex, 6);
-    }
-  }
-
-  // http://www.w3.org/TR/css3-iccprof#x11-color
-  private static final Map<String, Integer> CSS3_COLORS
-      = Maps.<String, Integer>immutableMap()
-        .put("aliceblue", 0xF0F8FF)
-        .put("antiquewhite", 0xFAEBD7)
-        .put("aqua", 0x00FFFF)
-        .put("aquamarine", 0x7FFFD4)
-        .put("azure", 0xF0FFFF)
-        .put("beige", 0xF5F5DC)
-        .put("bisque", 0xFFE4C4)
-        .put("black", 0x000000)
-        .put("blanchedalmond", 0xFFEBCD)
-        .put("blue", 0x0000FF)
-        .put("blueviolet", 0x8A2BE2)
-        .put("brown", 0xA52A2A)
-        .put("burlywood", 0xDEB887)
-        .put("cadetblue", 0x5F9EA0)
-        .put("chartreuse", 0x7FFF00)
-        .put("chocolate", 0xD2691E)
-        .put("coral", 0xFF7F50)
-        .put("cornflowerblue", 0x6495ED)
-        .put("cornsilk", 0xFFF8DC)
-        .put("crimson", 0xDC143C)
-        .put("cyan", 0x00FFFF)
-        .put("darkblue", 0x00008B)
-        .put("darkcyan", 0x008B8B)
-        .put("darkgoldenrod", 0xB8860B)
-        .put("darkgray", 0xA9A9A9)
-        .put("darkgreen", 0x006400)
-        .put("darkkhaki", 0xBDB76B)
-        .put("darkmagenta", 0x8B008B)
-        .put("darkolivegreen", 0x556B2F)
-        .put("darkorange", 0xFF8C00)
-        .put("darkorchid", 0x9932CC)
-        .put("darkred", 0x8B0000)
-        .put("darksalmon", 0xE9967A)
-        .put("darkseagreen", 0x8FBC8F)
-        .put("darkslateblue", 0x483D8B)
-        .put("darkslategray", 0x2F4F4F)
-        .put("darkturquoise", 0x00CED1)
-        .put("darkviolet", 0x9400D3)
-        .put("deeppink", 0xFF1493)
-        .put("deepskyblue", 0x00BFFF)
-        .put("dimgray", 0x696969)
-        .put("dodgerblue", 0x1E90FF)
-        .put("firebrick", 0xB22222)
-        .put("floralwhite", 0xFFFAF0)
-        .put("forestgreen", 0x228B22)
-        .put("fuchsia", 0xFF00FF)
-        .put("gainsboro", 0xDCDCDC)
-        .put("ghostwhite", 0xF8F8FF)
-        .put("gold", 0xFFD700)
-        .put("goldenrod", 0xDAA520)
-        .put("gray", 0x808080)
-        .put("green", 0x008000)
-        .put("greenyellow", 0xADFF2F)
-        .put("honeydew", 0xF0FFF0)
-        .put("hotpink", 0xFF69B4)
-        .put("indianred", 0xCD5C5C)
-        .put("indigo", 0x4B0082)
-        .put("ivory", 0xFFFFF0)
-        .put("khaki", 0xF0E68C)
-        .put("lavender", 0xE6E6FA)
-        .put("lavenderblush", 0xFFF0F5)
-        .put("lawngreen", 0x7CFC00)
-        .put("lemonchiffon", 0xFFFACD)
-        .put("lightblue", 0xADD8E6)
-        .put("lightcoral", 0xF08080)
-        .put("lightcyan", 0xE0FFFF)
-        .put("lightgoldenrodyellow", 0xFAFAD2)
-        .put("lightgreen", 0x90EE90)
-        .put("lightgrey", 0xD3D3D3)
-        .put("lightpink", 0xFFB6C1)
-        .put("lightsalmon", 0xFFA07A)
-        .put("lightseagreen", 0x20B2AA)
-        .put("lightskyblue", 0x87CEFA)
-        .put("lightslategray", 0x778899)
-        .put("lightsteelblue", 0xB0C4DE)
-        .put("lightyellow", 0xFFFFE0)
-        .put("lime", 0x00FF00)
-        .put("limegreen", 0x32CD32)
-        .put("linen", 0xFAF0E6)
-        .put("magenta", 0xFF00FF)
-        .put("maroon", 0x800000)
-        .put("mediumaquamarine", 0x66CDAA)
-        .put("mediumblue", 0x0000CD)
-        .put("mediumorchid", 0xBA55D3)
-        .put("mediumpurple", 0x9370DB)
-        .put("mediumseagreen", 0x3CB371)
-        .put("mediumslateblue", 0x7B68EE)
-        .put("mediumspringgreen", 0x00FA9A)
-        .put("mediumturquoise", 0x48D1CC)
-        .put("mediumvioletred", 0xC71585)
-        .put("midnightblue", 0x191970)
-        .put("mintcream", 0xF5FFFA)
-        .put("mistyrose", 0xFFE4E1)
-        .put("moccasin", 0xFFE4B5)
-        .put("navajowhite", 0xFFDEAD)
-        .put("navy", 0x000080)
-        .put("oldlace", 0xFDF5E6)
-        .put("olive", 0x808000)
-        .put("olivedrab", 0x6B8E23)
-        .put("orange", 0xFFA500)
-        .put("orangered", 0xFF4500)
-        .put("orchid", 0xDA70D6)
-        .put("palegoldenrod", 0xEEE8AA)
-        .put("palegreen", 0x98FB98)
-        .put("paleturquoise", 0xAFEEEE)
-        .put("palevioletred", 0xDB7093)
-        .put("papayawhip", 0xFFEFD5)
-        .put("peachpuff", 0xFFDAB9)
-        .put("peru", 0xCD853F)
-        .put("pink", 0xFFC0CB)
-        .put("plum", 0xDDA0DD)
-        .put("powderblue", 0xB0E0E6)
-        .put("purple", 0x800080)
-        .put("red", 0xFF0000)
-        .put("rosybrown", 0xBC8F8F)
-        .put("royalblue", 0x4169E1)
-        .put("saddlebrown", 0x8B4513)
-        .put("salmon", 0xFA8072)
-        .put("sandybrown", 0xF4A460)
-        .put("seagreen", 0x2E8B57)
-        .put("seashell", 0xFFF5EE)
-        .put("sienna", 0xA0522D)
-        .put("silver", 0xC0C0C0)
-        .put("skyblue", 0x87CEEB)
-        .put("slateblue", 0x6A5ACD)
-        .put("slategray", 0x708090)
-        .put("snow", 0xFFFAFA)
-        .put("springgreen", 0x00FF7F)
-        .put("steelblue", 0x4682B4)
-        .put("tan", 0xD2B48C)
-        .put("teal", 0x008080)
-        .put("thistle", 0xD8BFD8)
-        .put("tomato", 0xFF6347)
-        .put("turquoise", 0x40E0D0)
-        .put("violet", 0xEE82EE)
-        .put("wheat", 0xF5DEB3)
-        .put("white", 0xFFFFFF)
-        .put("whitesmoke", 0xF5F5F5)
-        .put("yellow", 0xFFFF00)
-        .put("yellowgreen", 0x9ACD32)
-        .create();

   /**
    * A class literal that is allowed in certain positions.
=======================================
--- /trunk/src/com/google/caja/plugin/stages/ValidateCssStage.java Wed Oct 3 15:58:36 2012 +++ /trunk/src/com/google/caja/plugin/stages/ValidateCssStage.java Mon Jul 15 13:10:17 2013
@@ -54,7 +54,7 @@
     CssValidator v = new CssValidator(
         cssSchema, htmlSchema, jobs.getMessageQueue());
     CssRewriter rw = new CssRewriter(
-        jobs.getPluginMeta().getUriPolicy(), cssSchema, htmlSchema,
+        jobs.getPluginMeta().getUriPolicy(), htmlSchema,
         jobs.getMessageQueue());

     for (MessageLevel level : new MessageLevel[] {
=======================================
--- /trunk/src/com/google/caja/plugin/templates/HtmlAttributeRewriter.java Thu May 2 14:19:49 2013 +++ /trunk/src/com/google/caja/plugin/templates/HtmlAttributeRewriter.java Mon Jul 15 13:10:17 2013
@@ -242,7 +242,7 @@
         v.validateCss(AncestorChain.instance(decls));
         // The rewriter will remove any unsafe constructs.
         // and put URLs in the proper filename namespace
-        new CssRewriter(meta.getUriPolicy(), cssSchema, htmlSchema, mq)
+        new CssRewriter(meta.getUriPolicy(), htmlSchema, mq)
             .withInvalidNodeMessageLevel(MessageLevel.WARNING)
             .rewrite(AncestorChain.instance(decls));
         new CssDynamicExpressionRewriter(meta).rewriteCss(decls);
@@ -352,7 +352,7 @@
     return new SanitizedAttr(true, dynamicValue);
   }

-  Expression sanitizeFrameTargetValue(AttrValue attr) {
+  static Expression sanitizeFrameTargetValue(AttrValue attr) {
// If the guest code supplied an attribute value for 'target', we get it // in 'attr.src'. Otherwise, TemplateCompiler gives us an 'attr.src' with // a value equal to the empty string, which Domado's rewriteTargetAttribute
=======================================
--- /trunk/tests/com/google/caja/parser/quasiliteral/RewriterTestCase.java Sun Jun 3 14:36:01 2012 +++ /trunk/tests/com/google/caja/parser/quasiliteral/RewriterTestCase.java Mon Jul 15 13:10:17 2013
@@ -84,10 +84,14 @@
         firstError = m;
       }
     }
-    firstError.format(mc, messageText);
+    if (firstError != null) {
+      firstError.format(mc, messageText);
+    } else {
+      messageText.append("NO ERROR");
+    }
     assertTrue(
         "First error is not \"" + error + "\": " + messageText.toString(),
-        messageText.toString().contains(error));
+        firstError != null && messageText.toString().contains(error));
   }

   protected void checkSucceeds(ParseTreeNode inputNode,
@@ -233,12 +237,12 @@
     assertEquals(message, plainRepr, rewrittenRepr);
   }

-  protected final <T extends ParseTreeNode> T syntheticTree(T node) {
+ protected static final <T extends ParseTreeNode> T syntheticTree(T node) {
     for (ParseTreeNode c : node.children()) { syntheticTree(c); }
     return makeSynthetic(node);
   }

-  protected final <T extends ParseTreeNode> T makeSynthetic(T node) {
+ protected static final <T extends ParseTreeNode> T makeSynthetic(T node) {
     SyntheticNodes.s(node);
     return node;
   }
=======================================
--- /trunk/tests/com/google/caja/plugin/CssDynamicExpressionRewriterTest.java Wed Oct 3 15:58:36 2012 +++ /trunk/tests/com/google/caja/plugin/CssDynamicExpressionRewriterTest.java Mon Jul 15 13:10:17 2013
@@ -14,7 +14,6 @@

 package com.google.caja.plugin;

-import com.google.caja.lang.css.CssSchema;
 import com.google.caja.lang.html.HtmlSchema;
 import com.google.caja.lexer.ParseException;
 import com.google.caja.parser.AncestorChain;
@@ -163,17 +162,16 @@
       boolean dynamic) {
     PluginMeta pm = new PluginMeta();
     if (!dynamic) { pm.setIdClass("xyz___"); }
-    new CssRewriter(null, CssSchema.getDefaultCss21Schema(mq),
-                    HtmlSchema.getDefault(mq), mq)
+    new CssRewriter(null, HtmlSchema.getDefault(mq), mq)
         .rewrite(AncestorChain.instance(css));
     new CssDynamicExpressionRewriter(pm).rewriteCss(css);
     ArrayConstructor ac = CssDynamicExpressionRewriter.cssToJs(css);
     assertEquals(golden, render(ac, 160));
   }

-  private CssTree.StyleSheet safeUnsafe(CssTree.StyleSheet css,
-                                        final List<String> safeUris,
-                                        final List<String> unsafeUris) {
+  private static CssTree.StyleSheet safeUnsafe(CssTree.StyleSheet css,
+                                               final List<String> safeUris,
+ final List<String> unsafeUris) {
     css.acceptPreOrder(new Visitor() {
       public boolean visit(AncestorChain<?> ancestors) {
         ParseTreeNode node = ancestors.node;
=======================================
--- /trunk/tests/com/google/caja/plugin/CssRewriterTest.java Mon Jun 24 15:05:32 2013 +++ /trunk/tests/com/google/caja/plugin/CssRewriterTest.java Mon Jul 15 13:10:17 2013
@@ -263,26 +263,6 @@
         Name.css("z-index"));
   }

-  public final void testNonStandardColors() throws Exception {
-    FilePosition u = FilePosition.UNKNOWN;
-    assertNull(CssRewriter.colorHash(u, Name.css("invisible")));
-    // Can get color hashes even for standard colors.
- assertEquals("#00f", CssRewriter.colorHash(u, Name.css("blue")).getValue());
-    // Is case insensitive.
- assertEquals("#00f", CssRewriter.colorHash(u, Name.css("Blue")).getValue()); - assertEquals("#00f", CssRewriter.colorHash(u, Name.css("BLUE")).getValue());
-
-    assertEquals("#000", CssRewriter.colorHash(u, 0).getValue());
-    assertEquals("#fff", CssRewriter.colorHash(u, 0xffffff).getValue());
-    assertEquals("#123", CssRewriter.colorHash(u, 0x112233).getValue());
-    // A change in any quartet causes the long form to be used.
-    assertEquals(
- "#022233", CssRewriter.colorHash(u, 0x112233 ^ 0x130000).getValue());
-    assertEquals(
- "#111333", CssRewriter.colorHash(u, 0x112233 ^ 0x003100).getValue());
-    assertEquals(
- "#112220", CssRewriter.colorHash(u, 0x112233 ^ 0x000013).getValue());
-  }

public final void testUrisCalledWithProperPropertyPart() throws Exception {
     // The CssRewriter needs to rewrite URIs.
@@ -311,8 +291,7 @@
     new CssValidator(CssSchema.getDefaultCss21Schema(mq),
         HtmlSchema.getDefault(mq), mq)
         .validateCss(AncestorChain.instance(t));
-    new CssRewriter(uriPolicy, CssSchema.getDefaultCss21Schema(mq),
-                    HtmlSchema.getDefault(mq), mq)
+    new CssRewriter(uriPolicy, HtmlSchema.getDefault(mq), mq)
         .rewrite(AncestorChain.instance(t));
     t.acceptPreOrder(new Visitor() {
       public boolean visit(AncestorChain<?> ancestors) {
@@ -416,7 +395,7 @@
             }
           }
         },
-        cssSchema, htmlSchema, mq)
+        htmlSchema, mq)
         .rewrite(AncestorChain.instance(t));

     {
@@ -451,7 +430,7 @@
             return ref.getUri().toString();
           }
         },
-        cssSchema, htmlSchema, mq)
+        htmlSchema, mq)
         .rewrite(AncestorChain.instance(t));

     MoreAsserts.assertListsEqual(
=======================================
--- /trunk/tests/com/google/caja/plugin/css-stylesheet-tests.js Thu Jul 11 15:50:37 2013 +++ /trunk/tests/com/google/caja/plugin/css-stylesheet-tests.js Mon Jul 15 13:10:17 2013
@@ -488,31 +488,13 @@
     ]
   },
   {
-    "test_name": "NonStandardColors",
+    "test_name": "NonCSS21Colors",
     "tests": [
       {
         "cssText": "a.c { color: LightSlateGray; background: ivory; }",
- "golden": ".namespace__ a.c {\n color: #789;\n background: #fffff0\n}",
-        // TODO: see if special color names work when quoted.
+ "golden": ".namespace__ a.c {\n color: LightSlateGray;\n background: ivory\n}", "altGolden": ".namespace__ a.c{color:lightslategray;background:ivory}",
-        "messages": [
-          {
-            "type": "NON_STANDARD_COLOR",
-            "level": "LINT",
-            "args": [
-              "lightslategray",
-              "#789"
-            ]
-          },
-          {
-            "type": "NON_STANDARD_COLOR",
-            "level": "LINT",
-            "args": [
-              "ivory",
-              "#fffff0"
-            ]
-          }
-        ]
+        "messages": []
       }
     ]
   },
=======================================
--- /trunk/tests/com/google/caja/plugin/templates/TemplateCompilerTest.java Thu May 2 14:19:49 2013 +++ /trunk/tests/com/google/caja/plugin/templates/TemplateCompilerTest.java Mon Jul 15 13:10:17 2013
@@ -1226,8 +1226,7 @@
     for (JobEnvelope j : jobs.getJobs()) {
       switch (j.job.getType()) {
         case HTML:
-          DocumentFragment f = (DocumentFragment)
-            ((Dom) j.job.getRoot()).getValue();
+          DocumentFragment f = ((Dom) j.job.getRoot()).getValue();
           htmlOut.add(new IhtmlRoot(j, f, baseUri));
           break;
         case JS:
@@ -1235,9 +1234,7 @@
           break;
         case CSS:
           CssTree.StyleSheet css = (CssTree.StyleSheet) j.job.getRoot();
-          CssRewriter rw = new CssRewriter(
-              null, CssSchema.getDefaultCss21Schema(mq),
-              HtmlSchema.getDefault(mq), mq);
+ CssRewriter rw = new CssRewriter(null, HtmlSchema.getDefault(mq), mq);
           rw.rewrite(AncestorChain.instance(css));
           CssDynamicExpressionRewriter rrw =
               new CssDynamicExpressionRewriter(meta);
@@ -1251,7 +1248,7 @@
     assertMessagesLessSevereThan(MessageLevel.ERROR);
   }

-  private Block consolidate(List<SafeJsChunk> chunks) {
+  private static Block consolidate(List<SafeJsChunk> chunks) {
     Block consolidated = new Block();
     MutableParseTreeNode.Mutation mut = consolidated.createMutation();
     FilePosition unk = FilePosition.UNKNOWN;

--

--- You received this message because you are subscribed to the Google Groups "Google Caja Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to