- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 23 Oct 2012 10:22:34 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/properties/css3
In directory hutz:/tmp/cvs-serv30626
Modified Files:
CssBackground.java
Log Message:
added extra state (this should be rewritten) to cope with the new grammar <position> [ / <size> ]?, bumped the spec link
Index: CssBackground.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css3/CssBackground.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- CssBackground.java 18 Oct 2012 09:46:03 -0000 1.6
+++ CssBackground.java 23 Oct 2012 10:22:31 -0000 1.7
@@ -21,7 +21,7 @@
import static org.w3c.css.values.CssOperator.SPACE;
/**
- * @spec http://www.w3.org/TR/2012/WD-css3-background-20120214/#the-background
+ * @spec http://www.w3.org/TR/2012/CR-css3-background-20120724/#the-background
* @see org.w3c.css.properties.css.CssBackgroundColor
* @see org.w3c.css.properties.css.CssBackgroundImage
* @see org.w3c.css.properties.css.CssBackgroundRepeat
@@ -126,7 +126,6 @@
CssExpression exp = new CssExpression();
exp.addValue(expression.getValue());
- CssBackgroundRepeat bg_size;
repeat = new CssBackgroundRepeat(ac, exp, check);
// now check if we can add a second value ;)
if ((op == SPACE) && !expression.end()) {
@@ -240,11 +239,12 @@
char op;
CssExpression exp;
CssBackgroundValue v = new CssBackgroundValue();
- boolean next_is_size, got_size;
+ boolean next_is_size, got_size, prev_is_position;
Object res;
next_is_size = false;
got_size = false;
+ prev_is_position = false;
while (!expression.end()) {
val = expression.getValue();
op = expression.getOperator();
@@ -252,6 +252,7 @@
switch (val.getType()) {
case CssTypes.CSS_HASH_IDENT:
case CssTypes.CSS_COLOR:
+ prev_is_position = false;
// we already got one, fail...
if (v.color != null || next_is_size || !is_final) {
throw new InvalidParamException("value", val,
@@ -266,6 +267,7 @@
break;
case CssTypes.CSS_URL:
+ prev_is_position = false;
// we already got one, fail...
if (v.bg_image != null || next_is_size) {
throw new InvalidParamException("value", val,
@@ -288,6 +290,7 @@
case CssTypes.CSS_NUMBER:
case CssTypes.CSS_LENGTH:
case CssTypes.CSS_PERCENTAGE:
+ prev_is_position = false;
// ok, so now we have a background position or size.
// and...
// in <bg_layer>: where '<bg-position>' must occur before
@@ -321,7 +324,8 @@
}
res = getCssBackgroundPositionValue(ac, expression, check);
op = expression.getOperator();
- // we only have one vale so it should always be the case
+ prev_is_position = true;
+ // we only have one value so it should always be the case
if (res instanceof CssValue) {
v.bg_position = (CssValue) res;
} else {
@@ -332,6 +336,7 @@
}
break;
case CssTypes.CSS_IDENT:
+ prev_is_position = false;
// inherit is already taken care of...
CssIdent ident_val = (CssIdent) val;
if (CssBackgroundAttachment.isMatchingIdent(ident_val)) {
@@ -468,6 +473,7 @@
}
res = getCssBackgroundPositionValue(ac, expression, check);
op = expression.getOperator();
+ prev_is_position = true;
// we only have one vale so it should always be the case
if (res instanceof CssValue) {
v.bg_position = (CssValue) res;
@@ -494,6 +500,7 @@
// unrecognized or unwanted ident
// let it fail now
case CssTypes.CSS_FUNCTION:
+ prev_is_position = false;
// function can only be a value here
// we already got one, fail...
if (v.color != null || next_is_size || !is_final) {
@@ -509,6 +516,10 @@
// the infamous switch...
// note that we should check that we got something first.
case CssTypes.CSS_SWITCH:
+ if (!prev_is_position){
+ throw new InvalidParamException("operator", val,
+ getPropertyName(), ac);
+ }
next_is_size = true;
break;
default:
@@ -517,7 +528,7 @@
}
if (op != SPACE) {
- throw new InvalidParamException("operator", val,
+ throw new InvalidParamException("operator", op,
getPropertyName(), ac);
}
expression.next();
Received on Tuesday, 23 October 2012 10:22:35 UTC