From: <rb...@us...> - 2017-05-21 08:03:42
|
Revision: 14466 http://sourceforge.net/p/htmlunit/code/14466 Author: rbri Date: 2017-05-21 08:03:39 +0000 (Sun, 21 May 2017) Log Message: ----------- code cleanup and test for 1863 added Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser4Test.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java 2017-05-20 19:30:15 UTC (rev 14465) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java 2017-05-21 08:03:39 UTC (rev 14466) @@ -403,7 +403,6 @@ private DomNode currentNode_; private StringBuilder characters_; private HeadParsed headParsed_ = HeadParsed.NO; - private boolean parsingInnerHead_ = false; private HtmlElement body_; private boolean lastTagWasSynthesized_; private HtmlForm formWaitingForLostChildren_; @@ -549,7 +548,6 @@ } if ("head".equals(tagLower)) { if (headParsed_ == HeadParsed.YES || page_.isParsingHtmlSnippet()) { - parsingInnerHead_ = true; return; } @@ -769,12 +767,6 @@ } } - if (parsingInnerHead_) { - if ("head".equals(tagLower)) { - parsingInnerHead_ = false; - } - } - // Need to reset this at each closing form tag because a valid form could start afterwards. if ("form".equals(tagLower)) { formWaitingForLostChildren_ = null; @@ -953,10 +945,6 @@ if ("form".equals(element.localpart)) { formWaitingForLostChildren_ = null; } - - if (parsingInnerHead_ && "head".equalsIgnoreCase(element.localpart)) { - parsingInnerHead_ = false; - } } /** @@ -972,10 +960,6 @@ if (body_ != null && "html".equalsIgnoreCase(elem.localpart) && attrs != null) { copyAttributes((DomElement) body_.getParentNode(), attrs); } - - if (headParsed_ == HeadParsed.YES && "head".equalsIgnoreCase(elem.localpart)) { - parsingInnerHead_ = true; - } } private static void copyAttributes(final DomElement to, final XMLAttributes attrs) { Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser4Test.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser4Test.java 2017-05-20 19:30:15 UTC (rev 14465) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser4Test.java 2017-05-21 08:03:39 UTC (rev 14466) @@ -203,6 +203,28 @@ * @throws Exception failure */ @Test + @Alerts("<html><head><title>foo</title></head>" + + "<body><script>alert(document.documentElement.outerHTML);</script></body></html>") + public void badlyFormedHTML_duplicateHeadStructure() throws Exception { + final String html = HtmlPageTest.STANDARDS_MODE_PREFIX_ + + "<html>" + + "<head>" + + "<head>" + + "<title>foo</title>" + + "</head>" + + "</head>" + + "<body>" + + "<script>alert(document.documentElement.outerHTML);</script>" + + "</body>" + + "</html>"; + + loadPageWithAlerts2(html); + } + + /** + * @throws Exception failure + */ + @Test @Alerts("<p title=\"Nimbus\ufffd X\">Nimbus\ufffd X</p>") public void badlyFormedHTML_invalidNumericCharacterReference() throws Exception { final String html = HtmlPageTest.STANDARDS_MODE_PREFIX_ |