From 7416e86b258caf7b4a3b0ab6bbf03317b87affe1 Mon Sep 17 00:00:00 2001 From: AlexCD Date: Mon, 30 Aug 2021 22:52:42 +0300 Subject: [PATCH] fix URL.searchParams cannot find function --- .../htmlunit/javascript/host/URL.java | 5 ++++- .../javascript/host/URLSearchParamsTest.java | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/URL.java b/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/URL.java index 23dd665f3f0..1c68a5ec4b8 100644 --- a/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/URL.java +++ b/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/URL.java @@ -272,7 +272,10 @@ public URLSearchParams getSearchParams() { return null; } - return new URLSearchParams(url_.getQuery()); + URLSearchParams searchParams = new URLSearchParams(url_.getQuery()); + searchParams.setParentScope(getParentScope()); + searchParams.setPrototype(getPrototype(searchParams.getClass())); + return searchParams; } /** diff --git a/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/URLSearchParamsTest.java b/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/URLSearchParamsTest.java index 1fc670665fe..9dac1c7d93f 100644 --- a/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/URLSearchParamsTest.java +++ b/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/URLSearchParamsTest.java @@ -350,6 +350,11 @@ public void getAll() throws Exception { */ @Test @Alerts(DEFAULT = {"key1=val1&key2=val2&key2=val3&key4=val4", + "key1=new1&key2=val2&key2=val3&key4=val4", + "key1=new1&key2=new2&key4=val4", + "key1=new1&key2=new2&key4=val4&key3=undefined", + "key1=new1&key2=new2&key4=null&key3=undefined", + "key1=val1&key2=val2&key2=val3&key4=val4", "key1=new1&key2=val2&key2=val3&key4=val4", "key1=new1&key2=new2&key4=val4", "key1=new1&key2=new2&key4=val4&key3=undefined", @@ -373,6 +378,17 @@ public void set() throws Exception { + " alert(param);\n" + " param.set('key4', null);\n" + " alert(param);\n" + + " param = new URL('http://test.com/p?key1=val1&key2=val2&key2=val3').searchParams;\n" + + " param.set('key4', 'val4');\n" + + " alert(param);\n" + + " param.set('key1', 'new1');\n" + + " alert(param);\n" + + " param.set('key2', 'new2');\n" + + " alert(param);\n" + + " param.set('key3', undefined);\n" + + " alert(param);\n" + + " param.set('key4', null);\n" + + " alert(param);\n" + " }\n" + " }\n" + " \n"