From: <asa...@us...> - 2012-12-18 07:35:15
|
Revision: 7871 http://sourceforge.net/p/htmlunit/code/7871 Author: asashour Date: 2012-12-18 07:35:12 +0000 (Tue, 18 Dec 2012) Log Message: ----------- JavaScript: add document.charset, .characterSet, .defaultCharset and .inputEncoding Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocument.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocumentTest.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2012-12-18 06:26:11 UTC (rev 7870) +++ trunk/htmlunit/src/changes/changes.xml 2012-12-18 07:35:12 UTC (rev 7871) @@ -8,6 +8,9 @@ <body> <release version="2.12" date="???" description="Bugfixes"> + <action type="add" dev="asashour"> + JavaScript: add document.charset, .characterSet, .defaultCharset and .inputEncoding. + </action> <action type="fix" dev="asashour"> CSS: fix DirectAdjacentSelector (E + F). </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2012-12-18 06:26:11 UTC (rev 7870) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2012-12-18 07:35:12 UTC (rev 7871) @@ -576,6 +576,10 @@ @BrowserFeature(@WebBrowser(IE)) HTMLDOCUMENT_COLOR, + /** Is document.charset lower-case (and defaultCharset is 'windows-1252'). */ + @BrowserFeature(@WebBrowser(IE)) + HTMLDOCUMENT_CHARSET_LOWERCASE, + /** Allows invalid 'align' values. */ @BrowserFeature({ @WebBrowser(FF), @WebBrowser(CHROME) }) HTMLELEMENT_ALIGN_INVALID, Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java 2012-12-18 06:26:11 UTC (rev 7870) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java 2012-12-18 07:35:12 UTC (rev 7871) @@ -424,8 +424,7 @@ } // if parentNode is null in IE, create a DocumentFragment to be the parentNode - if (domNode.getParentNode() == null - && getWindow().getWebWindow().getWebClient().getBrowserVersion() + if (domNode.getParentNode() == null && getBrowserVersion() .hasFeature(JS_APPEND_CHILD_CREATE_DOCUMENT_FRAGMENT_PARENT)) { final DomDocumentFragment fragment = domNode.getPage().createDomDocumentFragment(); fragment.appendChild(domNode); Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocument.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocument.java 2012-12-18 06:26:11 UTC (rev 7870) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocument.java 2012-12-18 07:35:12 UTC (rev 7871) @@ -28,6 +28,7 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.GENERATED_61; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.GENERATED_63; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLCOLLECTION_OBJECT_DETECTION; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLDOCUMENT_CHARSET_LOWERCASE; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLDOCUMENT_COLOR; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_ANCHORS_REQUIRES_NAME_OR_ID; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_DOCUMENT_APPEND_CHILD_SUPPORTED; @@ -79,6 +80,7 @@ import com.gargoylesoftware.htmlunit.ElementNotFoundException; import com.gargoylesoftware.htmlunit.ScriptResult; import com.gargoylesoftware.htmlunit.StringWebResponse; +import com.gargoylesoftware.htmlunit.TextUtil; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.WebResponse; import com.gargoylesoftware.htmlunit.WebWindow; @@ -870,6 +872,49 @@ } /** + * Returns a string representing the encoding under which the document was parsed. + * @return a string representing the encoding under which the document was parsed + */ + @JsxGetter({ @WebBrowser(FF), @WebBrowser(CHROME) }) + public String getInputEncoding() { + return getHtmlPage().getPageEncoding(); + } + + /** + * Returns the character encoding of the current document. + * @return the character encoding of the current document + */ + @JsxGetter({ @WebBrowser(FF), @WebBrowser(CHROME) }) + public String getCharacterSet() { + return getHtmlPage().getPageEncoding(); + } + + /** + * Retrieves the character set used to encode the document. + * @return the character set used to encode the document + */ + @JsxGetter({ @WebBrowser(IE), @WebBrowser(CHROME) }) + public String getCharset() { + String charset = getHtmlPage().getPageEncoding(); + if (getBrowserVersion().hasFeature(HTMLDOCUMENT_CHARSET_LOWERCASE)) { + charset = charset.toLowerCase(); + } + return charset; + } + + /** + * Gets the default character set from the current regional language settings. + * @return the default character set from the current regional language settings + */ + @JsxGetter({ @WebBrowser(IE), @WebBrowser(CHROME) }) + public String getDefaultCharset() { + if (getBrowserVersion().hasFeature(HTMLDOCUMENT_CHARSET_LOWERCASE)) { + return "windows-1252"; + } + return TextUtil.DEFAULT_CHARSET; + } + + /** * Returns the value of the "URL" property. * @return the value of the "URL" property */ Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocumentTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocumentTest.java 2012-12-18 06:26:11 UTC (rev 7870) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocumentTest.java 2012-12-18 07:35:12 UTC (rev 7871) @@ -1453,10 +1453,9 @@ * @throws Exception if the test fails */ @Test - @Alerts(IE = { "undefined", "undefined", "iso-8859-1", "windows-1256" }, + @Alerts(IE = { "undefined", "undefined", "iso-8859-1", "windows-1252" }, FF = { "ISO-8859-1", "ISO-8859-1", "undefined", "undefined" }, CHROME = { "ISO-8859-1", "ISO-8859-1", "ISO-8859-1", "ISO-8859-1" }) - @NotYetImplemented public void encoding() throws Exception { final String html = "<html>\n" + "<head>\n" |