From: <rb...@us...> - 2013-02-01 13:36:22
|
Revision: 8072 http://sourceforge.net/p/htmlunit/code/8072 Author: rbri Date: 2013-02-01 13:36:15 +0000 (Fri, 01 Feb 2013) Log Message: ----------- Method innerHTML does not encode entities for style tags. Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLStyleElementTest.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2013-02-01 07:35:03 UTC (rev 8071) +++ trunk/htmlunit/src/changes/changes.xml 2013-02-01 13:36:15 UTC (rev 8072) @@ -8,6 +8,9 @@ <body> <release version="2.12" date="???" description="Bugfixes, CSS3 Selectors"> + <action type="fix" dev="rbri"> + Method innerHTML does not encode entities for style tags. + </action> <action type="add" dev="mguillem"> Initial support for HtmlMeter (FF 17). </action> 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-02-01 07:35:03 UTC (rev 8071) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2013-02-01 13:36:15 UTC (rev 8072) @@ -851,8 +851,12 @@ @JsxGetter public String getInnerHTML() { final StringBuilder buf = new StringBuilder(); + + final String tagName = getTagName(); + boolean isPlain = "SCRIPT".equals(tagName) || "STYLE".equals(tagName); + // we can't rely on DomNode.asXml because it adds indentation and new lines - printChildren(buf, getDomNodeOrDie(), !"SCRIPT".equals(getTagName())); + printChildren(buf, getDomNodeOrDie(), !isPlain); return buf.toString(); } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLStyleElementTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLStyleElementTest.java 2013-02-01 07:35:03 UTC (rev 8071) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLStyleElementTest.java 2013-02-01 13:36:15 UTC (rev 8072) @@ -26,6 +26,7 @@ * * @version $Revision$ * @author Marc Guillemot + * @author Ronald Brill */ @RunWith(BrowserRunner.class) public class HTMLStyleElementTest extends WebDriverTestCase { @@ -78,4 +79,33 @@ loadPageWithAlerts2(html); } -} + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts({ ".a > .t { }", ".b > .t { }", ".c > .t { }" }) + public void innerHtml() throws Exception { + final String html + = "<html><head><title>foo</title>\n" + + + "<style id='style_none'>.a > .t { }</style>\n" + + "<style type='text/test' id='style_text'>.b > .t { }</style>\n" + + "<style type='text/html' id='style_html'>.c > .t { }</style>\n" + + + "<script>\n" + + "function doTest() {\n" + + " style = document.getElementById('style_none');\n" + + " alert(style.innerHTML);\n" + + " style = document.getElementById('style_text');\n" + + " alert(style.innerHTML);\n" + + " style = document.getElementById('style_html');\n" + + " alert(style.innerHTML);\n" + + "}\n" + + "</script>\n" + + "</head><body onload='doTest()'>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } +} \ No newline at end of file |