- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 25 Mar 2008 18:43:13 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/properties/css21 In directory hutz:/tmp/cvs-serv7132/css/properties/css21 Modified Files: CssBackgroundCSS21.java CssBackgroundPositionCSS21.java Log Message: background: red foo was validated as background: red 0% 0%, now it fails, as it should Index: CssBackgroundPositionCSS21.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css21/CssBackgroundPositionCSS21.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- CssBackgroundPositionCSS21.java 19 Apr 2006 11:28:06 -0000 1.3 +++ CssBackgroundPositionCSS21.java 25 Mar 2008 18:43:11 -0000 1.4 @@ -43,13 +43,12 @@ setByUser(); CssValue val = expression.getValue(); char op = expression.getOperator(); - if (op != SPACE) throw new InvalidParamException("operator", ((new Character(op)).toString()), ac); - if (val.equals(inherit)) { + if (inherit.equals(val)) { if(expression.getCount() > 1) { throw new InvalidParamException("unrecognize", ac); } Index: CssBackgroundCSS21.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css21/CssBackgroundCSS21.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- CssBackgroundCSS21.java 17 Mar 2008 18:23:13 -0000 1.3 +++ CssBackgroundCSS21.java 25 Mar 2008 18:43:10 -0000 1.4 @@ -1,6 +1,7 @@ // $Id$ // Author: Jean-Guilhem Rouel -// (c) COPYRIGHT MIT, ERCIM and Keio, 2005. +// Revised by: Yves Lafon +// (c) COPYRIGHT MIT, ERCIM and Keio, 2005-2008. // Please first read the full copyright statement in file COPYRIGHT.html package org.w3c.css.properties.css21; @@ -11,8 +12,11 @@ import org.w3c.css.util.ApplContext; import org.w3c.css.util.InvalidParamException; import org.w3c.css.values.CssExpression; +import org.w3c.css.values.CssIdent; import org.w3c.css.values.CssValue; import org.w3c.css.values.CssString; +import org.w3c.css.values.CssTypes; +import org.w3c.css.values.CssURL; /** * CssBackgroundCSS21<br /> @@ -49,75 +53,109 @@ boolean manyValues = (expression.getCount() > 1); while (find) { - find = false; val = expression.getValue(); - op = expression.getOperator(); - if (val == null) { break; } - + op = expression.getOperator(); + // if there are many values, we can't have inherit as one of them - if(manyValues && val != null && val.equals(inherit)) { + if(manyValues && val.equals(inherit)) { throw new InvalidParamException("unrecognize", null, null, ac); } - if(check && (val instanceof CssString)) { - throw new InvalidParamException("unrecognize", ac); - } - if (getColor2() == null) { - try { - setColor(new CssBackgroundColorCSS21(ac, expression)); - find = true; - } catch (InvalidParamException e) { - // nothing to do, image will test this value + switch (val.getType()) { + case CssTypes.CSS_STRING: + if (check) { + throw new InvalidParamException("unrecognize", ac); } - } - if (!find && getImage() == null) { - try { + find = false; + break; + case CssTypes.CSS_URL: + if (getImage() == null) { setImage(new CssBackgroundImageCSS2(ac, expression)); - find = true; - } catch (InvalidParamException e) { - // nothing to do, repeat will test this value + continue; } - } - if (!find && getRepeat() == null) { - try { - setRepeat(new CssBackgroundRepeatCSS2(ac, expression)); - find = true; - } catch (InvalidParamException e) { - // nothing to do, attachment will test this value + find = false; + break; + case CssTypes.CSS_COLOR: + if (getColor2() == null) { + setColor(new CssBackgroundColorCSS21(ac, expression)); + continue; } - } - if (!find && getAttachment() == null) { - try { - setAttachment(new CssBackgroundAttachmentCSS2(ac, expression)); - find = true; - } catch (InvalidParamException e) { - // nothing to do, position will test this value + find = false; + break; + case CssTypes.CSS_NUMBER: + case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_LENGTH: + if (getPosition() == null) { + setPosition(new CssBackgroundPositionCSS21(ac,expression)); + continue; } - } - if (!find && getPosition() == null) { - try { - setPosition(new CssBackgroundPositionCSS21(ac, expression)); - find = true; - } catch (InvalidParamException e) { - // nothing to do + find = false; + break; + case CssTypes.CSS_IDENT: + // the hard part, as ident can be from different subproperties + find = false; + CssIdent identval = (CssIdent) val; + // check background-image ident + if (CssBackgroundImageCSS2.checkMatchingIdent(identval)) { + if (getImage() == null) { + setImage(new CssBackgroundImageCSS2(ac, expression)); + find = true; + } + break; } + // check background-repeat ident + if (CssBackgroundRepeatCSS2.checkMatchingIdent(identval)) { + if (getRepeat() == null) { + setRepeat(new CssBackgroundRepeatCSS2(ac, expression)); + find = true; + } + break; + } + // check background-attachment ident + if (CssBackgroundAttachmentCSS2.checkMatchingIdent(identval)) { + if (getAttachment() == null) { + setAttachment(new CssBackgroundAttachmentCSS2(ac, expression)); + find = true; + } + break; + } + // check backgorund-position ident + if (CssBackgroundPositionCSS21.checkMatchingIdent(identval)) { + if (getPosition() == null) { + setPosition(new CssBackgroundPositionCSS21(ac, expression)); + find = true; + } + break; + } + + if (getColor2() == null) { + try { + setColor(new CssBackgroundColorCSS21(ac, expression)); + find = true; + break; + } catch (InvalidParamException e) { + // nothing to do, image will test this value + } + } + + default: + if (check) { + throw new InvalidParamException("unrecognize", ac); + } + find = false; } - if(check && val != null && !find) { + if(check && !find) { throw new InvalidParamException("unrecognize", ac); } if (op != SPACE) { throw new InvalidParamException("operator", - ((new Character(op)).toString()), + Character.toString(op), ac); } - if(check && !find && val != null) { - throw new InvalidParamException("unrecognize", ac); - } } - } public CssBackgroundCSS21(ApplContext ac, CssExpression expression)
Received on Tuesday, 25 March 2008 18:43:45 UTC