From: <rb...@us...> - 2014-02-02 14:29:04
|
Revision: 9101 http://sourceforge.net/p/htmlunit/code/9101 Author: rbri Date: 2014-02-02 14:29:00 +0000 (Sun, 02 Feb 2014) Log Message: ----------- Fix encoding of innerHTML result for script content 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/HTMLScriptElementTest.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2014-02-02 10:34:29 UTC (rev 9100) +++ trunk/htmlunit/src/changes/changes.xml 2014-02-02 14:29:00 UTC (rev 9101) @@ -8,6 +8,9 @@ <body> <release version="2.14" date="???" description="FF24, Bugfixes, initial work on IE11"> + <action type="fix" dev="rbri" issue="1509"> + JavaScript: Fix encoding of innerHTML result for script content. + </action> <action type="fix" dev="asashour" issue="1572"> JavaScript: handle 'arguments' as a parameter. </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 2014-02-02 10:34:29 UTC (rev 9100) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2014-02-02 14:29:00 UTC (rev 9101) @@ -941,7 +941,10 @@ } buffer.append(">"); // Add the children. - printChildren(buffer, node, html); + final boolean isHtml = html + && !(scriptObject instanceof HTMLScriptElement) + && !(scriptObject instanceof HTMLStyleElement); + printChildren(buffer, node, isHtml); if (null == htmlElement || !htmlElement.isEndTagForbidden()) { buffer.append("</").append(tag).append(">"); } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLScriptElementTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLScriptElementTest.java 2014-02-02 10:34:29 UTC (rev 9100) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLScriptElementTest.java 2014-02-02 14:29:00 UTC (rev 9101) @@ -909,4 +909,35 @@ loadPageWithAlerts2(html); } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts(DEFAULT = { "\n <script id=\"testScript\">function foo() { return a > b}</script>\n " }, + IE8 = { "" }) + @NotYetImplemented(IE8) + public void innerHTMLGetSet() throws Exception { + final String html + = "<html>\n" + + "<head></head>\n" + + "<body>\n" + + + " <div id='tester'>\n" + + " <script id='testScript'>function foo() { return a > b}</script>\n" + + " </div>\n" + + + " <script type='text/javascript'>\n" + + " var div = document.getElementById('tester');\n" + + " try {\n" + + " div.innerHTML = div.innerHTML;\n" + + " } catch (e) { alert('exception'); }\n" + + " alert(div.innerHTML);\n" + + " </script>\n" + + + "</body>\n" + + "</html>\n"; + + loadPageWithAlerts2(html); + } } |