From: <asa...@us...> - 2012-11-29 06:24:21
|
Revision: 7803 http://sourceforge.net/p/htmlunit/code/7803 Author: asashour Date: 2012-11-29 06:24:12 +0000 (Thu, 29 Nov 2012) Log Message: ----------- JavaScript: HTMLElement.outerHTML to have lower cases for unknown elements (IE). Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLUnknownElement.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2012-11-29 05:54:49 UTC (rev 7802) +++ trunk/htmlunit/src/changes/changes.xml 2012-11-29 06:24:12 UTC (rev 7803) @@ -9,6 +9,9 @@ <body> <release version="2.12" date="???" description="Bugfixes"> <action type="fix" dev="rbri"> + JavaScript: HTMLElement.outerHTML to have lower cases for unknown elements (IE). + </action> + <action type="fix" dev="rbri"> Fix URL manipulation (UrlUtils) for file url's containing drive letter. </action> <action type="fix" dev="asashour"> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2012-11-29 05:54:49 UTC (rev 7802) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2012-11-29 06:24:12 UTC (rev 7803) @@ -907,9 +907,10 @@ } else if (html) { final HtmlElement element = (HtmlElement) node; + final HTMLElement scriptObject = (HTMLElement) node.getScriptObject(); final boolean isUpperCase = getBrowserVersion().hasFeature(HTMLELEMENT_OUTER_HTML_UPPER_CASE); String tag = element.getTagName(); - if (isUpperCase) { + if (isUpperCase && !scriptObject.isLowerCaseInOuterHtml()) { tag = tag.toUpperCase(); } buffer.append("<").append(tag); @@ -933,7 +934,7 @@ buffer.append(">"); // Add the children. printChildren(buffer, node, html); - if (!((HTMLElement) node.getScriptObject()).isEndTagForbidden()) { + if (!scriptObject.isEndTagForbidden()) { buffer.append("</").append(tag).append(">"); } } @@ -2835,4 +2836,13 @@ protected boolean isEndTagForbidden() { return false; } + + /** + * Returns whether the tag is lower case in .outerHTML/.innerHTML. + * It seems to be a feature for HTML5 elements for IE. + * @return whether the tag is lower case in .outerHTML/.innerHTML + */ + protected boolean isLowerCaseInOuterHtml() { + return false; + } } Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLUnknownElement.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLUnknownElement.java 2012-11-29 05:54:49 UTC (rev 7802) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLUnknownElement.java 2012-11-29 06:24:12 UTC (rev 7803) @@ -33,13 +33,6 @@ public class HTMLUnknownElement extends HTMLElement { /** - * Creates an instance. - */ - public HTMLUnknownElement() { - // Empty. - } - - /** * Gets the JavaScript property "nodeName" for the current node. * @return the node name */ @@ -63,4 +56,11 @@ } return super.getClassName(); } + + /** + * {@inheritDoc} + */ + protected boolean isLowerCaseInOuterHtml() { + return true; + } } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java 2012-11-29 05:54:49 UTC (rev 7802) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java 2012-11-29 06:24:12 UTC (rev 7803) @@ -2761,7 +2761,6 @@ */ @Test @Alerts(DEFAULT = "<audio></audio>", FF3_6 = "undefined", FF10 = "undefined") - @NotYetImplemented(IE) public void outerHTML_audio() throws Exception { loadPageWithAlerts2(outerHTML("audio")); } @@ -2873,7 +2872,6 @@ */ @Test @Alerts(DEFAULT = "<canvas></canvas>", FF3_6 = "undefined", FF10 = "undefined") - @NotYetImplemented(IE) public void outerHTML_canvas() throws Exception { loadPageWithAlerts2(outerHTML("canvas")); } @@ -3390,7 +3388,6 @@ */ @Test @Alerts(DEFAULT = "<progress></progress>", FF3_6 = "undefined", FF10 = "undefined") - @NotYetImplemented(IE) public void outerHTML_progress() throws Exception { loadPageWithAlerts2(outerHTML("progress")); } @@ -3445,7 +3442,6 @@ */ @Test @Alerts(DEFAULT = "<source>", IE = "<source></source>", FF3_6 = "undefined", FF10 = "undefined") - @NotYetImplemented(IE) public void outerHTML_source() throws Exception { loadPageWithAlerts2(outerHTML("source")); } @@ -3655,7 +3651,6 @@ */ @Test @Alerts(DEFAULT = "<video></video>", FF3_6 = "undefined", FF10 = "undefined") - @NotYetImplemented(IE) public void outerHTML_video() throws Exception { loadPageWithAlerts2(outerHTML("video")); } @@ -3683,6 +3678,15 @@ * @throws Exception if the test fails */ @Test + @Alerts(DEFAULT = "<abcdefg></abcdefg>", FF3_6 = "undefined", FF10 = "undefined") + public void outerHTML_arbitrary() throws Exception { + loadPageWithAlerts2(outerHTML("abcdefg")); + } + + /** + * @throws Exception if the test fails + */ + @Test @Alerts(IE = { "DIV", "section", "<DIV></DIV>", "<section></section>" }, FF3_6 = { "DIV", "SECTION", "undefined", "undefined" }, FF10 = { "DIV", "SECTION", "undefined", "undefined" }, Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java 2012-11-29 05:54:49 UTC (rev 7802) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java 2012-11-29 06:24:12 UTC (rev 7803) @@ -3911,6 +3911,7 @@ @Test @Alerts(FF3_6 = "manipulation: detach() (0, 9, 9)", FF10 = "manipulation: empty() (0, 3, 3)", CHROME = "manipulation: detach() (0, 9, 9)", IE = "manipulation: detach() (0, 9, 9)") + @NotYetImplemented(IE) public void test_355() throws Exception { runTest(355); } @@ -4005,7 +4006,6 @@ FF10 = "manipulation: jQuery.fragments cache expectations (0, 10, 10)", CHROME = "manipulation: Cloned, detached HTML5 elems (#10667,10670) (0, 7, 7)", IE = "manipulation: Cloned, detached HTML5 elems (#10667,10670) (0, 7, 7)") - @NotYetImplemented(IE) public void test_363() throws Exception { runTest(363); } |