Rietveld is down atm (giving 500 errors) so i'll comment here: 

Le mercredi 4 mai 2011 02:21:56 UTC+2, unnurg a écrit :
>
> Index: user/src/com/google/gwt/resources/css/GenerateCssAst.java
> ===================================================================
> --- user/src/com/google/gwt/resources/css/GenerateCssAst.java (revision  
> 10132)
> +++ user/src/com/google/gwt/resources/css/GenerateCssAst.java (working 
> copy)
> @@ -92,6 +92,10 @@
>   @SuppressWarnings("unused")
>   public class GenerateCssAst {
>
> +  private static List<String> validPseudoClasses = Arrays.asList(
> +    "link", "visited", "active", "hover", "focus", "first-letter", 
> "first-line",
> +    "first-child", "before", "after");
> +
>

There are a number of pseudo classes not covered here:
http://www.w3.org/TR/css3-selectors/#pseudo-classes
Those would all be treated as pseudo elements instead (using the "::" 
notation) and could very well fail in browsers (not tested though), because 
"only one pseudo-element may appear per selector" <
http://www.w3.org/TR/css3-selectors/#pseudo-elements>
The real fix would be to distinguish pseudo classes and pseudo-elements at 
parse time and emit them the same as what they were parsed from; but this 
probably means updating SAC.

(btw, there are a bunch CSS3 selectors I would have liked to use with 
CssResource and couldn't because the parser only understands CSS2, namely 
:nth-child(-n+4) and :not([someattribute]), so maybe Flute/SAC/whatever 
should instead be updated to allow roundtripping "unknown constructs", 
rather than discarding them)
 

>     /**
>      * Maps SAC CSSParseExceptions into a TreeLogger. All parsing errors  
> will be
>      * recorded in a single TreeLogger branch, which will be created only 
> if  
> a
> @@ -937,7 +941,11 @@
>           case Condition.SAC_CLASS_CONDITION:
>             return "." + c.getValue();
>           case Condition.SAC_PSEUDO_CLASS_CONDITION:
> -          return ":" + c.getValue();
> +          if (validPseudoClasses.contains(c.getValue().toLowerCase())) {
> +            return ":" + c.getValue();
> +          } else {
> +            return "::" + c.getValue();
> +          }
>         }
>
>       } else if (condition instanceof CombinatorCondition) {
>
>
>
Beware of the "turkish bug" with toLowerCase/toUpperCase, you should use 
toLowerCase(Locale.ENGLISH) (see the javadoc for the rationale) 

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to