From: <rb...@us...> - 2017-11-26 10:39:34
|
Revision: 14978 http://sourceforge.net/p/htmlunit/code/14978 Author: rbri Date: 2017-11-26 10:39:31 +0000 (Sun, 26 Nov 2017) Log Message: ----------- JavaScript: URL.searchParams added Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/URL.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/URLSearchParams.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/URLTest.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2017-11-26 10:37:57 UTC (rev 14977) +++ trunk/htmlunit/src/changes/changes.xml 2017-11-26 10:39:31 UTC (rev 14978) @@ -9,11 +9,14 @@ <body> <release version="2.29" date="xx, 2017" description=""> <action type="add" dev="rbri"> + JavaScript: URL.searchParams added. + </action> + <action type="add" dev="rbri"> New configuration settings webSocketMaxTextMessageSize, webSocketMaxTextMessageBufferSize, webSocketMaxBinaryMessageSize, and webSocketMaxBinaryMessageBufferSize. </action> <action type="add" dev="rbri"> - JavaScript: URL constuctor and origin property added. + JavaScript: URL constructor and origin property added. </action> </release> <release version="2.28" date="November 12, 2017" description="Bugfixes, Chrome 62, improved Promise"> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/URL.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/URL.java 2017-11-26 10:37:57 UTC (rev 14977) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/URL.java 2017-11-26 10:39:31 UTC (rev 14978) @@ -120,6 +120,18 @@ } /** + * @return the origin + */ + @JsxGetter + public URLSearchParams getSearchParams() { + if (url_ == null) { + return null; + } + + return new URLSearchParams(url_.getQuery()); + } + + /** * Calls for instance for implicit conversion to string. * @see com.gargoylesoftware.htmlunit.javascript.SimpleScriptable#getDefaultValue(java.lang.Class) * @param hint the type hint Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/URLSearchParams.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/URLSearchParams.java 2017-11-26 10:37:57 UTC (rev 14977) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/URLSearchParams.java 2017-11-26 10:39:31 UTC (rev 14978) @@ -66,7 +66,7 @@ // TODO: Pass in a record // new URLSearchParams({"foo" : 1 , "bar" : 2}); - if (Undefined.instance == params) { + if (Undefined.instance == params || null == params) { return; } @@ -232,7 +232,10 @@ paramStr.append(param.getKey()); paramStr.append("="); // TODO: need to encode value - paramStr.append(param.getValue()); + final String value = param.getValue(); + if (value != null) { + paramStr.append(param.getValue()); + } } return paramStr.toString(); } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/URLTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/URLTest.java 2017-11-26 10:37:57 UTC (rev 14977) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/URLTest.java 2017-11-26 10:39:31 UTC (rev 14978) @@ -176,4 +176,31 @@ FileUtils.deleteQuietly(tstFile); } } + + /** + * @throws Exception if an error occurs + */ + @Test + @Alerts(DEFAULT = {"", "a=u&x="}, + IE = {}) + public void searchParams() throws Exception { + final String html = + "<html>\n" + + "<head>\n" + + " <script>\n" + + " function test() {\n" + + " if (typeof window.URL === 'function') {\n" + + " var u = new URL('http://developer.mozilla.org/en-US/docs');\n" + + " alert(u.searchParams);\n" + + " u = new URL('http://developer.mozilla.org/en-US/docs?a=u&x');\n" + + " alert(u.searchParams);\n" + + " }\n" + + " }\n" + + " </script>\n" + + "</head>\n" + + "<body onload='test()'>\n" + + "</body>\n" + + "</html>"; + loadPageWithAlerts2(html); + } } |