From: <rb...@us...> - 2017-09-10 10:18:37
|
Revision: 14822 http://sourceforge.net/p/htmlunit/code/14822 Author: rbri Date: 2017-09-10 10:18:34 +0000 (Sun, 10 Sep 2017) Log Message: ----------- document.createElementNS is now able to create svg elements also Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocumentTest.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2017-09-10 08:00:04 UTC (rev 14821) +++ trunk/htmlunit/src/changes/changes.xml 2017-09-10 10:18:34 UTC (rev 14822) @@ -8,6 +8,9 @@ <body> <release version="2.28" date="???" description="Bugfixes, Chrome 61"> + <action type="fix" dev="rbri"> + JavaScript: document.createElementNS is now able to create svg elements also. + </action> <action type="add" dev="rbri"> JavaScript: support NetworkInformation (Chrome only at the moment). </action> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java 2017-09-10 08:00:04 UTC (rev 14821) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java 2017-09-10 10:18:34 UTC (rev 14822) @@ -365,9 +365,9 @@ } if (namespaceURI == null || namespaceURI.isEmpty() - || !qualifiedName.contains(":") - || namespaceURI.equals(XHTML_NAMESPACE) - || namespaceURI.equals(SVG_NAMESPACE)) { + || XHTML_NAMESPACE.equals(namespaceURI) + || SVG_NAMESPACE.equals(namespaceURI) + || !qualifiedName.contains(":")) { String tagName = qualifiedName; final int index = tagName.indexOf(':'); @@ -377,7 +377,13 @@ else { tagName = tagName.substring(index + 1); } - final ElementFactory factory = ELEMENT_FACTORIES.get(tagName); + final ElementFactory factory; + if (!"svg".equals(tagName) && SVG_NAMESPACE.equals(namespaceURI)) { + factory = SVG_FACTORY; + } + else { + factory = ELEMENT_FACTORIES.get(tagName); + } if (factory != null) { return factory; Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocumentTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocumentTest.java 2017-09-10 08:00:04 UTC (rev 14821) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocumentTest.java 2017-09-10 10:18:34 UTC (rev 14822) @@ -350,6 +350,25 @@ * @throws Exception if the test fails */ @Test + @Alerts("[object SVGRectElement]") + public void createElementNS() throws Exception { + final String html = HtmlPageTest.STANDARDS_MODE_PREFIX_ + + "<html><head>\n" + + "<script>\n" + + " function test() {\n" + + " alert(document.createElementNS('http://www.w3.org/2000/svg', 'rect'));\n" + + " }\n" + + "</script>\n" + + "</head><body onload='test()'>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } + + /** + * @throws Exception if the test fails + */ + @Test @Alerts("exception") public void createDocumentNS_xul() throws Exception { final String html = "<html><body>\n" |