2002/css-validator/org/w3c/css/parser CssFouffa.java,1.48,1.49

Update of /sources/public/2002/css-validator/org/w3c/css/parser
In directory hutz:/tmp/cvs-serv17380/org/w3c/css/parser

Modified Files:
	CssFouffa.java 
Log Message:
fix for charset support of fake URIs (upload and text input)

Index: CssFouffa.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/parser/CssFouffa.java,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -d -r1.48 -r1.49
--- CssFouffa.java	14 Feb 2009 09:05:03 -0000	1.48
+++ CssFouffa.java	15 Feb 2009 18:23:24 -0000	1.49
@@ -20,6 +20,8 @@
 import java.util.Enumeration;
 import java.util.Vector;
 
+import java.nio.charset.Charset;
+
 import org.w3c.css.css.StyleSheetOrigin;
 import org.w3c.css.parser.analyzer.CssParser;
 import org.w3c.css.parser.analyzer.CssParserTokenManager;
@@ -330,10 +332,21 @@
      *                if an I/O error occurs.
      */
     public void ReInit(ApplContext ac, URL file) throws IOException {
-	Frame f = new Frame(this, file.toString(), ac.getWarningLevel());
+	InputStream is;
+	URL url;
+	Frame f;
+	
+	f = new Frame(this, file.toString(), ac.getWarningLevel());
 	ac.setFrame(f);
-	URLConnection urlC = HTTPURL.getConnection(file, ac);
-	ReInit(ac, HTTPURL.getInputStream(ac, urlC), urlC.getURL(), f);
+	if (ac.isInputFake()) {
+	    is = ac.getFakeInputStream();
+	    url = file;
+	} else {
+	    URLConnection urlC = HTTPURL.getConnection(file, ac);
+	    is  = HTTPURL.getInputStream(ac, urlC);
+	    url = urlC.getURL();
+	}
+	ReInit(ac, is, url, f);
     }
 
     /**
@@ -679,20 +692,24 @@
 	     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);
-	    }
+	Charset c = null;
+	try {
+	    c = Charset.forName(charset);
+	} catch (Exception ex) {
+	    return;
+	}
+	Charset originalCharset = ac.getCharsetObjForURL(getURL());
+	if (originalCharset == null) {
+	    ac.setCharsetForURL(getURL(), c);
+	    try {
+		ReInit(ac, getURL());
+	    } catch (IOException ioex) {}
+	} else if (c.compareTo(originalCharset) != 0) {
+	    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 Sunday, 15 February 2009 18:32:01 UTC