From: <rb...@us...> - 2013-10-07 20:31:19
|
Revision: 8612 http://sourceforge.net/p/htmlunit/code/8612 Author: rbri Date: 2013-10-07 20:31:15 +0000 (Mon, 07 Oct 2013) Log Message: ----------- outerHTML don't check for correct tag closing in FF mode. 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/html/HTMLElement.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2013-10-07 18:49:56 UTC (rev 8611) +++ trunk/htmlunit/src/changes/changes.xml 2013-10-07 20:31:15 UTC (rev 8612) @@ -8,6 +8,9 @@ <body> <release version="2.13" date="???" description="Bugfixes"> + <action type="fix" dev="rbri"> + JavaScript: .outerHTML don't check for correct tag closing in FF mode. + </action> <action type="fix" dev="asashour" issue="1502"> IEConditionalCompilationScriptPreProcessor fix when evaluated to false. </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2013-10-07 18:49:56 UTC (rev 8611) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2013-10-07 20:31:15 UTC (rev 8612) @@ -1023,6 +1023,12 @@ @BrowserFeature(@WebBrowser(IE)) JS_OUTER_HTML_BODY_HEAD_READONLY, + /** element.outerHTML throws an exception, if the new tag will close + * the outer one when parsing the html source (IE). + */ + @BrowserFeature(@WebBrowser(IE)) + JS_OUTER_THROW_EXCEPTION_WHEN_CLOSES, + /** If <tt>true</tt>, then treat <tt>__parent__</tt> and <tt>__proto__</tt> as special properties. */ @BrowserFeature(@WebBrowser(IE)) JS_PARENT_PROTO_PROPERTIES, 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 2013-10-07 18:49:56 UTC (rev 8611) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2013-10-07 20:31:15 UTC (rev 8612) @@ -35,6 +35,7 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_NATIVE_FUNCTION_TOSTRING_NEW_LINE; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_OFFSET_PARENT_THROWS_NOT_ATTACHED; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_OUTER_HTML_BODY_HEAD_READONLY; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_OUTER_THROW_EXCEPTION_WHEN_CLOSES; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_PREFIX_RETURNS_EMPTY_WHEN_UNDEFINED; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_SET_ATTRIBUTE_CONSIDERS_ATTR_FOR_CLASS_AS_REAL; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_SET_ATTRIBUTE_SUPPORTS_EVENT_HANDLERS; @@ -1072,7 +1073,7 @@ final DomDocumentFragment fragment = (DomDocumentFragment) domNode.getPage().createDocumentFragment(); parseHtmlSnippet(fragment, false, value); DomNode child = fragment.getFirstChild(); - if (child instanceof DomElement) { + if (getBrowserVersion().hasFeature(JS_OUTER_THROW_EXCEPTION_WHEN_CLOSES) && child instanceof DomElement) { final String parentName = domNode.getParentNode().getNodeName().toUpperCase(Locale.ENGLISH); final short[] closes = HTMLElements.getElement(child.getNodeName()).closes; if (closes != null) { 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 2013-10-07 18:49:56 UTC (rev 8611) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java 2013-10-07 20:31:15 UTC (rev 8612) @@ -1228,7 +1228,6 @@ "New = <span id=\"innerNode\">Old outerHTML</span>" }, IE6 = { "Old = <SPAN id=innerNode>Old outerHTML</SPAN>", "exception" }, IE8 = { "Old = <SPAN id=innerNode>Old outerHTML</SPAN>", "exception" }) - @NotYetImplemented(FF17) public void setOuterHTMLAddBlockToParagraph() throws Exception { final String html = createPageForSetOuterHTML("p", "<div>test</div>"); loadPageWithAlerts2(html); @@ -1250,7 +1249,6 @@ "New = <span id=\"innerNode\">Old outerHTML</span>" }, IE6 = { "Old = <SPAN id=innerNode>Old outerHTML</SPAN>", "exception" }, IE8 = { "Old = <SPAN id=innerNode>Old outerHTML</SPAN>", "exception" }) - @NotYetImplemented(FF17) public void setOuterHTMLAddParagraphToParagraph() throws Exception { final String html = createPageForSetOuterHTML("p", "<p>test</p>"); loadPageWithAlerts2(html); @@ -1290,7 +1288,6 @@ "New = <span id=\"innerNode\">Old outerHTML</span>" }, IE6 = { "Old = <SPAN id=innerNode>Old outerHTML</SPAN>", "exception" }, IE8 = { "Old = <SPAN id=innerNode>Old outerHTML</SPAN>", "exception" }) - @NotYetImplemented(FF17) public void setOuterHTMLAddAnchorToAnchor() throws Exception { final String html = createPageForSetOuterHTML("a", "<a>test</a>"); loadPageWithAlerts2(html); |