- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Fri, 21 Oct 2011 01:49:11 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/parser
In directory hutz:/tmp/cvs-serv28700/org/w3c/css/parser
Modified Files:
AtRule.java AtRuleFontFace.java AtRuleImport.java
AtRuleNamespace.java AtRulePage.java
AtRulePhoneticAlphabet.java AtRulePreference.java
CssFouffa.java CssPropertyFactory.java CssSelectors.java
Removed Files:
AtRuleMedia.java AtRuleMediaCSS1.java AtRuleMediaCSS2.java
MediaEnumeration.java
Log Message:
redone the Media Features of media queries, up to date per http://www.w3.org/TR/2010/CR-css3-mediaqueries-20100727/, todo, parsing of media in HTML form
Index: CssSelectors.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/CssSelectors.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -d -r1.34 -r1.35
--- CssSelectors.java 4 Oct 2011 20:04:09 -0000 1.34
+++ CssSelectors.java 21 Oct 2011 01:49:08 -0000 1.35
@@ -555,11 +555,11 @@
private boolean canMatch(CssSelectors selector) {
boolean result = canApply(getSelectors(), selector.getSelectors());
// current work
- Util.verbose("canMatched this " + this + " selector: " + selector);
+ Util.verbose("canMatch this " + this + " selector: " + selector);
Util.verbose("connector " + connector);
Util.verbose(getSelectors().toString());
Util.verbose(selector.getSelectors().toString());
- Util.verbose("canMatched for attributes :" + result);
+ Util.verbose("canMatch for attributes :" + result);
if ((hashElement != selector.hashElement) && hashElement != 0) {
if ((connector == DESCENDANT) && (selector.next != null)) {
@@ -571,7 +571,7 @@
// here we are in this case :
// H1 and HTML
// H1 can't matched HTML and HTML don't have next
- Util.verbose("canMatched RETURN FALSE");
+ Util.verbose("canMatch RETURN FALSE");
return false;
}
}
@@ -581,7 +581,7 @@
// H1 and BODY HTML H1
// or :
// HTML BODY and BODY (this case won't appear in principle)
- Util.verbose("canMatched RETURN " + result);
+ Util.verbose("canMatch RETURN " + result);
return canApply(getSelectors(), selector.getSelectors());
} else {
// here we are in this case :
Index: CssPropertyFactory.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/CssPropertyFactory.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- CssPropertyFactory.java 5 Oct 2011 07:12:16 -0000 1.29
+++ CssPropertyFactory.java 21 Oct 2011 01:49:08 -0000 1.30
@@ -7,6 +7,9 @@
package org.w3c.css.parser;
+import org.w3c.css.media.AtRuleMedia;
+import org.w3c.css.media.Media;
+import org.w3c.css.media.MediaFeature;
import org.w3c.css.properties.PropertiesLoader;
import org.w3c.css.properties.css.CssProperty;
import org.w3c.css.util.ApplContext;
@@ -77,50 +80,56 @@
return list;
}
- // public void setUserMedium(String usermedium) {
- // this.usermedium = usermedium;
- // }
-
// bug: FIXME
// @media screen and (min-width: 400px) and (max-width: 700px), print {
// a {
// border: 0;
// }
// }
- public synchronized CssProperty createMediaFeature(ApplContext ac, AtRule atRule, String property,
- CssExpression expression) throws Exception {
- // String result = "ok";
- String media = atRule.toString();
- String upmedia = media.toUpperCase();
- int pos = -1;
- int pos2 = upmedia.indexOf("AND");
+ public synchronized MediaFeature createMediaFeature(ApplContext ac, AtRule atRule, String feature,
+ CssExpression expression) throws Exception {
+ String modifier = null;
+ String classname;
+ int dashpos = feature.indexOf('-');
+ feature = feature.toLowerCase();
- if (pos2 == -1) {
- pos2 = media.length();
- }
- pos = upmedia.indexOf("NOT");
- if (pos != -1) {
- media = media.substring(pos + 4, pos2);
- } else if ((pos = upmedia.indexOf("ONLY")) != -1) {
- media = media.substring(pos + 4, pos2);
- } else {
- pos = media.indexOf(" ");
- media = media.substring(pos + 1, pos2);
+ if (dashpos != -1) {
+ if (dashpos == 0) {
+ // vendor media?
+ try {
+ AtRuleMedia atRuleMedia = (AtRuleMedia) atRule;
+ // I don't know this property
+ // TODO get the latest media it applies to
+ throw new InvalidParamException("noexistence-media", feature,
+ atRuleMedia.getCurrentMedia(), ac);
+ } catch (ClassCastException cce) {
+ // I don't know this property
+ throw new InvalidParamException("noexistence", feature, "not media @rule", ac);
+ }
+ }
+ modifier = feature.substring(0, dashpos);
+ // clash between feature name and modifier...
+ // link min-width and color-index, so we check we have min- or max-
+ if (modifier.equals("min") || modifier.equals("max")) {
+ feature = feature.substring(dashpos + 1);
+ } else {
+ // back to normal
+ modifier = null;
+ }
}
- media = media.trim();
-
- String classname = properties.getProperty("mediafeature" + "." + property);
+ classname = properties.getProperty("mediafeature" + "." + feature.toLowerCase());
if (classname == null) {
- if (atRule instanceof AtRuleMedia && (!media.equals("all"))) {
+ try {
+ AtRuleMedia atRuleMedia = (AtRuleMedia) atRule;
// I don't know this property
- throw new InvalidParamException("noexistence-media", property, media, ac);
- // ac.getFrame().addWarning("noexistence-media", property);
- // classname = allprops.getProperty(property);
- } else {
+ // TODO get the latest media it applies to
+ throw new InvalidParamException("noexistence-media", feature,
+ atRuleMedia.getCurrentMedia(), ac);
+ } catch (ClassCastException cce) {
// I don't know this property
- throw new InvalidParamException("noexistence", property, media, ac);
+ throw new InvalidParamException("noexistence", feature, "not media @rule", ac);
}
}
@@ -132,41 +141,37 @@
}
// Maybe it will be necessary to add the check parameter as for
// create property, so... FIXME
- Class[] parametersType = {ac.getClass(), expressionclass};
+ Class[] parametersType = {ac.getClass(), String.class, expressionclass};
Constructor constructor = Class.forName(classname).getConstructor(parametersType);
- Object[] parameters = {ac, expression};
+ Object[] parameters = {ac, modifier, expression};
// invoke the constructor
- return (CssProperty) constructor.newInstance(parameters);
+ return (MediaFeature) constructor.newInstance(parameters);
} catch (InvocationTargetException e) {
// catch InvalidParamException
Exception ex = (Exception) e.getTargetException();
throw ex;
}
-
}
public synchronized CssProperty createProperty(ApplContext ac, AtRule atRule, String property,
CssExpression expression) throws Exception {
String classname = null;
- String media = atRule.toString();
- int pos = -1;
- String upperMedia = media.toUpperCase();
- int pos2 = upperMedia.indexOf("AND ");
-
- if (pos2 == -1) {
- pos2 = media.length();
- }
+ AtRuleMedia atRuleMedia;
+ String media = null;
- if ((pos = upperMedia.indexOf("NOT")) != -1) {
- media = media.substring(pos + 4, pos2);
- } else if ((pos = upperMedia.indexOf("ONLY")) != -1) {
- media = media.substring(pos + 4, pos2);
- } else {
- pos = media.indexOf(' ');
- media = media.substring(pos + 1, pos2);
+ try {
+ atRuleMedia = (AtRuleMedia) atRule;
+ // TODO FIXME in fact, it should use a vector of media instead of extracting
+ // only one media, so let's use kludges
+ for (Media m : atRuleMedia.getMediaList()) {
+ if (!m.getNot()) {
+ media = m.getMedia();
+ break;
+ }
+ }
+ } catch (ClassCastException cce) {
+ media = "all";
}
-
- media = media.trim();
classname = setClassName(atRule, media, ac, property);
// the property does not exist in this profile
@@ -187,30 +192,30 @@
}
if (pfsOk.size() > 0) {
if (ac.getCssProfile() == CssProfile.NONE) {
- String latestVersion = pfsOk.get(pfsOk.size()-1);
+ String latestVersion = pfsOk.get(pfsOk.size() - 1);
CssVersion v = CssVersion.resolve(ac, latestVersion);
// should always be true... otherwise there is an issue...
if (v.compareTo(ac.getCssVersion()) > 0) {
- ac.getFrame().addWarning("noexistence", new String[] { property, ac.getMsg().getString(ac.getPropertyKey()), pfsOk.toString() });
+ ac.getFrame().addWarning("noexistence", new String[]{property, ac.getMsg().getString(ac.getPropertyKey()), pfsOk.toString()});
ac.setCssVersion(v);
}
classname = setClassName(atRule, media, ac, property);
} else {
- /*
- // This should be uncommented when no-profile in enabled
- if (ac.getProfileString().equals("none")) {
- // the last one should be the best one to use
- String pf = (String) pfsOk.get(pfsOk.size()-1),
- old_pf = ac.getCssVersionString();
- ac.setCssVersion(pf);
- ac.getFrame().addWarning("noexistence", new String[] { property, ac.getMsg().getString(old_pf), pfsOk.toString() });
- classname = setClassName(atRule, media, ac, property);
- ac.setCssVersion(old_pf);
- }
- else
- */
- throw new InvalidParamException("noexistence", new String[]{property, ac.getMsg().getString(ac.getPropertyKey()), pfsOk.toString()}, ac);
+ /*
+ // This should be uncommented when no-profile in enabled
+ if (ac.getProfileString().equals("none")) {
+ // the last one should be the best one to use
+ String pf = (String) pfsOk.get(pfsOk.size()-1),
+ old_pf = ac.getCssVersionString();
+ ac.setCssVersion(pf);
+ ac.getFrame().addWarning("noexistence", new String[] { property, ac.getMsg().getString(old_pf), pfsOk.toString() });
+ classname = setClassName(atRule, media, ac, property);
+ ac.setCssVersion(old_pf);
+ }
+ else
+ */
+ throw new InvalidParamException("noexistence", new String[]{property, ac.getMsg().getString(ac.getPropertyKey()), pfsOk.toString()}, ac);
}
} else {
throw new InvalidParamException("noexistence-at-all", property, ac);
--- AtRuleMedia.java DELETED ---
Index: AtRulePage.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/AtRulePage.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- AtRulePage.java 29 Aug 2011 07:21:00 -0000 1.5
+++ AtRulePage.java 21 Oct 2011 01:49:08 -0000 1.6
@@ -131,7 +131,7 @@
/**
* The second must only match this one
*/
- public boolean canMatched(AtRule atRule) {
+ public boolean canMatch(AtRule atRule) {
AtRulePage atRulePage;
try {
atRulePage = (AtRulePage) atRule;
Index: AtRulePreference.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/AtRulePreference.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- AtRulePreference.java 14 Sep 2005 15:14:18 -0000 1.4
+++ AtRulePreference.java 21 Oct 2011 01:49:08 -0000 1.5
@@ -45,7 +45,7 @@
/**
* The second must only match this one
*/
- public boolean canMatched(AtRule atRule) {
+ public boolean canMatch(AtRule atRule) {
return (atRule instanceof AtRulePreference);
}
Index: CssFouffa.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/CssFouffa.java,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -d -r1.56 -r1.57
--- CssFouffa.java 17 Sep 2011 06:02:26 -0000 1.56
+++ CssFouffa.java 21 Oct 2011 01:49:08 -0000 1.57
@@ -11,6 +11,8 @@
package org.w3c.css.parser;
import org.w3c.css.css.StyleSheetOrigin;
+import org.w3c.css.media.AtRuleMedia;
+import org.w3c.css.media.MediaFeature;
import org.w3c.css.parser.analyzer.CssParser;
import org.w3c.css.parser.analyzer.CssParserTokenManager;
import org.w3c.css.parser.analyzer.ParseException;
@@ -18,7 +20,6 @@
import org.w3c.css.properties.PropertiesLoader;
import org.w3c.css.properties.css.CssProperty;
import org.w3c.css.util.ApplContext;
-import org.w3c.css.util.CssProfile;
import org.w3c.css.util.CssVersion;
import org.w3c.css.util.HTTPURL;
import org.w3c.css.util.InvalidParamException;
@@ -112,7 +113,7 @@
classStyle = PropertiesLoader.config.getProperty(spec);
if (classStyle == null) {
- spec = CssVersion.getDefault().toString();
+ spec = CssVersion.getDefault().toString();
classStyle = PropertiesLoader.config.getProperty(spec);
}
@@ -202,9 +203,9 @@
// if ("css1".equals(ac.getCssVersionString())) {
// media = new AtRuleMediaCSS1();
// } else if ("css2".equals(ac.getCssVersionString())) {
- // media = new AtRuleMediaCSS2();
+ // media = new AtRuleMedia();
// } else {
- // media = new AtRuleMediaCSS2();
+ // media = new AtRuleMedia();
// }
/*
* if (ac.getMedium() == null) { try { media.addMedia("all", ac); }
@@ -527,12 +528,7 @@
}
try {
- if (getMediaDeclaration().equals("on") && (getAtRule() instanceof AtRuleMedia)) {
- prop = properties.createMediaFeature(ac, getAtRule(), property, expression);
- } else {
- prop = properties.createProperty(ac, getAtRule(), property, expression);
- }
-
+ prop = properties.createProperty(ac, getAtRule(), property, expression);
} catch (InvalidParamException e) {
throw e;
} catch (Exception e) {
@@ -556,6 +552,42 @@
}
/**
+ * Assign an expression to a MediaFeature. This function create a new
+ * media feature with <code>feature</code> and assign to it the expression
+ *
+ * @param feature the name of the media feature
+ * @param expression The expression representation of expression
+ * @return a CssProperty
+ * @throw InvalidParamException
+ * An error appears during the property creation.
+ */
+ public MediaFeature handleMediaFeature(String feature, CssExpression expression)
+ throws InvalidParamException {
+ MediaFeature mf;
+ if (Util.onDebug) {
+ System.err.println("Creating MediaFeature" + feature + ": " + expression);
+ }
+
+ try {
+ mf = properties.createMediaFeature(ac, getAtRule(), feature, expression);
+ } catch (InvalidParamException e) {
+ throw e;
+ } catch (Exception e) {
+ e.printStackTrace();
+ if (Util.onDebug) {
+ e.printStackTrace();
+ }
+ throw new InvalidParamException(e.toString(), ac);
+ }
+
+ mf.setOrigin(origin);
+ // set informations for errors and warnings
+ mf.setInfo(ac.getFrame().getLine(), ac.getFrame().getSourceFile());
+ // ok, return the new property
+ return mf;
+ }
+
+ /**
* Parse only a list of declarations. This is useful to parse the
* <code>STYLE</code> attribute in a HTML document.
* <p/>
--- MediaEnumeration.java DELETED ---
Index: AtRulePhoneticAlphabet.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/AtRulePhoneticAlphabet.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- AtRulePhoneticAlphabet.java 26 Nov 2007 05:07:17 -0000 1.2
+++ AtRulePhoneticAlphabet.java 21 Oct 2011 01:49:08 -0000 1.3
@@ -58,7 +58,7 @@
/**
* The second must only match this one
*/
- public boolean canMatched(AtRule atRule) {
+ public boolean canMatch(AtRule atRule) {
return (atRule instanceof AtRulePhoneticAlphabet);
}
Index: AtRuleNamespace.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/AtRuleNamespace.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- AtRuleNamespace.java 13 Feb 2009 14:03:36 -0000 1.1
+++ AtRuleNamespace.java 21 Oct 2011 01:49:08 -0000 1.2
@@ -40,7 +40,7 @@
/**
* The second must only match this one
*/
- public boolean canMatched(AtRule atRule) {
+ public boolean canMatch(AtRule atRule) {
return false;
}
Index: AtRule.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/AtRule.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- AtRule.java 13 Feb 2009 14:03:36 -0000 1.5
+++ AtRule.java 21 Oct 2011 01:49:08 -0000 1.6
@@ -29,7 +29,7 @@
/**
* The second must only match this one
*/
- public abstract boolean canMatched(AtRule atRule);
+ public abstract boolean canMatch(AtRule atRule);
public boolean isEmpty() {
return false;
--- AtRuleMediaCSS1.java DELETED ---
--- AtRuleMediaCSS2.java DELETED ---
Index: AtRuleImport.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/AtRuleImport.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- AtRuleImport.java 13 Feb 2009 14:03:36 -0000 1.1
+++ AtRuleImport.java 21 Oct 2011 01:49:08 -0000 1.2
@@ -9,7 +9,7 @@
*/
package org.w3c.css.parser;
-import java.net.URL;
+import org.w3c.css.media.AtRuleMedia;
/**
* This class manages all imports
@@ -41,7 +41,7 @@
/**
* The second must only match this one
*/
- public boolean canMatched(AtRule atRule) {
+ public boolean canMatch(AtRule atRule) {
return false;
}
Index: AtRuleFontFace.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/AtRuleFontFace.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- AtRuleFontFace.java 26 Nov 2007 05:07:17 -0000 1.4
+++ AtRuleFontFace.java 21 Oct 2011 01:49:08 -0000 1.5
@@ -52,7 +52,7 @@
/**
* The second must only match this one
*/
- public boolean canMatched(AtRule atRule) {
+ public boolean canMatch(AtRule atRule) {
return (atRule instanceof AtRuleFontFace);
}
Received on Friday, 21 October 2011 01:49:49 UTC