- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Sat, 14 Feb 2009 09:05:05 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/parser
In directory hutz:/tmp/cvs-serv2661/org/w3c/css/parser
Modified Files:
CssFouffa.java Frame.java
Log Message:
support of @charset (generating re-parsing using the new charset definition)
Index: Frame.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/Frame.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- Frame.java 13 Sep 2007 10:00:28 -0000 1.10
+++ Frame.java 14 Feb 2009 09:05:03 -0000 1.11
@@ -44,7 +44,9 @@
* @param sourceFile The name of the source file.
* @param beginLine The begin line
*/
- public Frame(CssFouffa cssFouffa, String sourceFile, int beginLine, int warningLevel) {
+ public Frame(CssFouffa cssFouffa, String sourceFile, int beginLine,
+ int warningLevel)
+ {
this(cssFouffa, sourceFile, warningLevel);
line = beginLine;
}
@@ -55,16 +57,16 @@
* @param error The new error.
*/
public void addError(CssError error) {
- error.sourceFile = getSourceFile();
- error.line = getLine();
- errors.addError(error);
+ error.sourceFile = getSourceFile();
+ error.line = getLine();
+ errors.addError(error);
}
/**
* Returns all errors.
*/
public Errors getErrors() {
- return errors;
+ return errors;
}
/**
@@ -75,8 +77,8 @@
* @see org.w3c.css.util.Warning
*/
public void addWarning(String warningMessage) {
- warnings.addWarning(new Warning(getSourceFile(), getLine(),
- warningMessage, 0, ac));
+ warnings.addWarning(new Warning(getSourceFile(), getLine(),
+ warningMessage, 0, ac));
}
/**
@@ -88,8 +90,9 @@
* @see org.w3c.css.util.Warning
*/
public void addWarning(String warningMessage, String message) {
- warnings.addWarning(new Warning(getSourceFile(), getLine(),
- warningMessage, 0, new String[] { message }, ac));
+ warnings.addWarning(new Warning(getSourceFile(), getLine(),
+ warningMessage, 0,
+ new String[] { message }, ac));
}
/**
@@ -100,38 +103,38 @@
* @param messages Some add-on messages.
* @see org.w3c.css.util.Warning
*/
- public void addWarning(String warningMessage, String[] messages) {
- warnings.addWarning(new Warning(getSourceFile(), getLine(),
- warningMessage, 0, messages, ac));
- }
+ public void addWarning(String warningMessage, String[] messages) {
+ warnings.addWarning(new Warning(getSourceFile(), getLine(),
+ warningMessage, 0, messages, ac));
+ }
/**
* Get all warnings.
*/
public Warnings getWarnings() {
- return warnings;
+ return warnings;
}
/**
* Get the name of the source file.
*/
public String getSourceFile() {
- return sourceFile;
+ return sourceFile;
}
/**
* Get the begin line.
*/
public int getBeginLine() {
- return line;
+ return line;
}
/**
* Get the current line.
*/
public int getLine() {
- //return line; //+ cssFouffa.token.beginLine;
- return line + cssFouffa.token.beginLine;
+ //return line; //+ cssFouffa.token.beginLine;
+ return line + cssFouffa.token.beginLine;
}
/**
@@ -140,8 +143,8 @@
* @param frame The other frame for merging.
*/
public void join(Frame frame) {
- errors.addErrors(frame.errors);
- warnings.addWarnings(frame.warnings);
+ errors.addErrors(frame.errors);
+ warnings.addWarnings(frame.warnings);
}
}
Index: CssFouffa.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/CssFouffa.java,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -d -r1.47 -r1.48
--- CssFouffa.java 13 Feb 2009 21:50:15 -0000 1.47
+++ CssFouffa.java 14 Feb 2009 09:05:03 -0000 1.48
@@ -100,16 +100,19 @@
* @exception IOException
* if an I/O error occurs.
*/
- public CssFouffa(ApplContext ac, InputStream input, String charset, URL file, int beginLine)
+ public CssFouffa(ApplContext ac, InputStream input, String charset,
+ URL file, int beginLine)
throws IOException
{
- super(new InputStreamReader(input, (charset == null) ? "iso-8859-1" : charset));
+ super(new InputStreamReader(input, (charset == null) ?
+ "iso-8859-1" : charset));
if (ac.getOrigin() == -1) {
setOrigin(StyleSheetOrigin.AUTHOR); // default is user
} else {
setOrigin(ac.getOrigin()); // default is user
}
- ac.setFrame(new Frame(this, file.toString(), beginLine, ac.getWarningLevel()));
+ ac.setFrame(new Frame(this, file.toString(), beginLine,
+ ac.getWarningLevel()));
setApplContext(ac);
// @@this is a default media ...
/*
@@ -123,7 +126,8 @@
*/
setURL(file);
if (Util.onDebug) {
- System.err.println("[DEBUG] CSS version " + ac.getCssVersion() + " medium " + ac.getMedium() + " at-rule "
+ System.err.println("[DEBUG] CSS version " + ac.getCssVersion() +
+ " medium " + ac.getMedium() + " at-rule "
+ getAtRule() + " profile " + ac.getProfile());
}
@@ -144,7 +148,8 @@
style = Class.forName(classStyle);
ac.setCssSelectorsStyle(style);
} catch (ClassNotFoundException e) {
- System.err.println("org.w3c.css.parser.CssFouffa: couldn't" + " load the style");
+ System.err.println("org.w3c.css.parser.CssFouffa: couldn't" +
+ " load the style");
e.printStackTrace();
}
@@ -162,8 +167,11 @@
* @exception IOException
* if an I/O error occurs.
*/
- public CssFouffa(ApplContext ac, InputStream input, URL file) throws IOException {
- this(ac, input, "iso-8859-1", file, 0);
+ public CssFouffa(ApplContext ac, InputStream input, URL file)
+ throws IOException
+ {
+ this(ac, input, (ac.getCharsetForURL(file) != null) ?
+ ac.getCharsetForURL(file):"iso-8859-1", file, 0);
}
/**
@@ -208,7 +216,9 @@
private CssFouffa(ApplContext ac, InputStream in, URL url,
Vector<CssValidatorListener> listeners,
Vector<String> urlvisited,
- CssPropertyFactory cssfactory, boolean mode) throws IOException {
+ CssPropertyFactory cssfactory, boolean mode)
+ throws IOException
+ {
this(ac, in, ac.getCharsetForURL(url), url, 0);
this.visited = urlvisited;
setURL(url);
@@ -219,7 +229,8 @@
this.mode = mode;
}
- private void ReInit(ApplContext ac, InputStream input, URL file, Frame frame) {
+ private void ReInit(ApplContext ac, InputStream input,
+ URL file, Frame frame) {
// reinitialize the parser with a new data input
// and a new frame for errors and warnings
super.ReInitWithAc(input, ac, ac.getCharsetForURL(file));
@@ -281,10 +292,12 @@
* @exception IOException
* if an I/O error occurs.
*/
- public void ReInit(ApplContext ac, InputStream input, URL file, int beginLine)
+ public void ReInit(ApplContext ac, InputStream input, URL file,
+ int beginLine)
throws IOException
{
- Frame f = new Frame(this, file.toString(), beginLine, ac.getWarningLevel());
+ Frame f = new Frame(this, file.toString(), beginLine,
+ ac.getWarningLevel());
ac.setFrame(f);
ReInit(ac, input, file, f);
}
@@ -299,7 +312,9 @@
* @exception IOException
* if an I/O error occurs.
*/
- public void ReInit(ApplContext ac, InputStream input, URL file) throws IOException {
+ public void ReInit(ApplContext ac, InputStream input, URL file)
+ throws IOException
+ {
Frame f = new Frame(this, file.toString(), ac.getWarningLevel());
ac.setFrame(f);
ReInit(ac, input, file, f);
@@ -447,11 +462,15 @@
// check that we didn't already got this URL, or that the
// number of imports is not exploding
if (visited.contains(surl)) {
- CssError cerr = new CssError(new Exception("Import loop" + " detected in " + surl));
+ CssError cerr = new CssError(new Exception("Import loop" +
+ " detected in "+
+ surl));
ac.getFrame().addError(cerr);
return;
} else if (visited.size() > 42) {
- CssError cerr = new CssError(new Exception("Maximum number" + " of imports " + "reached"));
+ CssError cerr = new CssError(new Exception("Maximum number"+
+ " of imports " +
+ "reached"));
ac.getFrame().addError(cerr);
return;
}
@@ -460,7 +479,8 @@
newVisited.addElement(surl);
if (Util.importSecurity) {
- throw new FileNotFoundException("[SECURITY] You can't " + "import URL sorry.");
+ throw new FileNotFoundException("[SECURITY] You can't " +
+ "import URL sorry.");
}
URLConnection importURL = HTTPURL.getConnection(importedURL, ac);
@@ -474,7 +494,8 @@
}
String mtype = httpURL.getContentType();
if (mtype == null) {
- throw new FileNotFoundException(importURL.getURL() + "No Media Type defined");
+ throw new FileNotFoundException(importURL.getURL() +
+ "No Media Type defined");
} else {
if (mtype.toLowerCase().indexOf("text/html") != -1) {
throw new FileNotFoundException(importURL.getURL() +
@@ -485,9 +506,10 @@
}
Frame f = ac.getFrame();
try {
- CssFouffa cssFouffa = new CssFouffa(ac, HTTPURL.getInputStream(ac, importURL),
- importedURL, listeners, newVisited,
- properties, mode);
+ CssFouffa cssFouffa = new CssFouffa(ac,
+ HTTPURL.getInputStream(ac, importURL),
+ importedURL, listeners, newVisited,
+ properties, mode);
cssFouffa.setOrigin(getOrigin());
if (!media.isEmpty()) {
cssFouffa.setAtRule(media);
@@ -657,6 +679,21 @@
e.hasMoreElements();) {
e.nextElement().addCharSet(charset);
}
+ String originalCharset = ac.getCharsetForURL(getURL());
+ if (!charset.equalsIgnoreCase(originalCharset)) {
+ if (originalCharset == null) {
+ ac.setCharsetForURL(getURL(), charset);
+ try {
+ ReInit(ac, getURL());
+ } catch (IOException ioex) {}
+ } else {
+ Exception ex = new Exception("Conflicting charset definition"+
+ "between network and @charset "+
+ originalCharset+" and "+charset);
+ CssError cerr = new CssError(ex);
+ ac.getFrame().addError(cerr);
+ }
+ }
}
/**
Received on Saturday, 14 February 2009 09:05:16 UTC