Deleting last URLSearchParams key should remove trailing ? in associated URL
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 13 Jul 2017 18:21:48 +0000 (18:21 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 13 Jul 2017 18:21:48 +0000 (18:21 +0000)
https://bugs.webkit.org/show_bug.cgi?id=174465

Patch by Alex Christensen <achristensen@webkit.org> on 2017-07-13
Reviewed by Chris Dumez.

Source/WebCore:

This makes us match the behavior of Chrome and Firefox, and the spec after https://github.com/whatwg/url/issues/332 is approved.
This will be covered by an upcoming web platform test, and I updated fast/dom/DOMURL/searchparams.html to cover it now.

* platform/URLParser.cpp:
(WebCore::URLParser::serialize):
If there are no tuples, serialize to the null string instead of a non-null empty string.
This makes it so URL::setQuery removes the ?

LayoutTests:

* fast/dom/DOMURL/searchparams-expected.txt:
* fast/dom/DOMURL/searchparams.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@219458 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/dom/DOMURL/searchparams-expected.txt
LayoutTests/fast/dom/DOMURL/searchparams.html
Source/WebCore/ChangeLog
Source/WebCore/platform/URLParser.cpp

index a1b1f4a..fce9bbc 100644 (file)
@@ -1,3 +1,13 @@
+2017-07-13  Alex Christensen  <achristensen@webkit.org>
+
+        Deleting last URLSearchParams key should remove trailing ? in associated URL
+        https://bugs.webkit.org/show_bug.cgi?id=174465
+
+        Reviewed by Chris Dumez.
+
+        * fast/dom/DOMURL/searchparams-expected.txt:
+        * fast/dom/DOMURL/searchparams.html:
+
 2017-07-13  Miguel Gomez  <magomez@igalia.com>
 
         Unreviewed GTK+ gardening. Update expectations of several tests failing at r219449.
index d301fb3..bb86b17 100644 (file)
@@ -1,3 +1,5 @@
 CONSOLE MESSAGE: line 8: PASS
 CONSOLE MESSAGE: line 11: PASS
+CONSOLE MESSAGE: line 15: PASS
+CONSOLE MESSAGE: line 19: PASS
 
index 0f099d2..ac34e86 100644 (file)
@@ -9,4 +9,13 @@ console.log(u.searchParams.foo == 1 ? "PASS" : "FAIL");
 
 var x = new URLSearchParams("a=ß");
 console.log(x == "a=%C3%83%C5%B8" ? "PASS" : "FAIL");
+
+const a = new URL("http://host/?param");
+a.searchParams.delete("param");
+console.log(a == "http://host/" ? "PASS" : "FAIL");
+
+let b = new URLSearchParams("a=b");
+b.delete("a");
+console.log(b == "" ? "PASS" : "FAIL");
+
 </script>
index 29a9c34..60ccbd8 100644 (file)
@@ -1,3 +1,18 @@
+2017-07-13  Alex Christensen  <achristensen@webkit.org>
+
+        Deleting last URLSearchParams key should remove trailing ? in associated URL
+        https://bugs.webkit.org/show_bug.cgi?id=174465
+
+        Reviewed by Chris Dumez.
+
+        This makes us match the behavior of Chrome and Firefox, and the spec after https://github.com/whatwg/url/issues/332 is approved.
+        This will be covered by an upcoming web platform test, and I updated fast/dom/DOMURL/searchparams.html to cover it now.
+
+        * platform/URLParser.cpp:
+        (WebCore::URLParser::serialize):
+        If there are no tuples, serialize to the null string instead of a non-null empty string.
+        This makes it so URL::setQuery removes the ?
+
 2017-07-13  Jeremy Jones  <jeremyj@apple.com>
 
         Style fix. Replace strongThis with protectedThis.
index 472ba76..717a169 100644 (file)
@@ -2837,6 +2837,9 @@ static void serializeURLEncodedForm(const String& input, Vector<LChar>& output)
     
 String URLParser::serialize(const URLEncodedForm& tuples)
 {
+    if (tuples.isEmpty())
+        return { };
+
     Vector<LChar> output;
     for (auto& tuple : tuples) {
         if (!output.isEmpty())