Takeshi Yoshino posted comments on this change.
Patch set 2:Commit-Queue +1
To view, visit change 515243. To unsubscribe, visit settings.
Takeshi Yoshino posted comments on this change.
Patch set 3:Commit-Queue +1
Takeshi Yoshino posted comments on this change.
Patch set 4:Commit-Queue +1
Takeshi Yoshino posted comments on this change.
Patch set 5:
+mkwst
Since the change is small, I'm going to skip I-to-S and get this reviewed by one of API owners. Let me know if you think it should go through the standard process.
Takeshi Yoshino would like Mike West to review this change.
Implement URLSearchParams.sort()
Spec:
https://url.spec.whatwg.org/#dom-urlsearchparams-sort
Interoperability and Compatibility risk:
Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1331864 and
WebKit https://bugs.webkit.org/show_bug.cgi?id=167154 have implemented
it.
web-platform-tests:
url/urlsearchparams-sort.html
Feature dashboard:
https://www.chromestatus.com/feature/5632900720492544
Bug: 682143
Change-Id: I5a1831503579079d3d95de3028b2f8195192c88d
---
D third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-sort-expected.txt
M third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
M third_party/WebKit/LayoutTests/platform/win/virtual/stable/webexposed/global-interface-listing-expected.txt
M third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
M third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-dedicated-worker-expected.txt
M third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-expected.txt
M third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-shared-worker-expected.txt
M third_party/WebKit/LayoutTests/virtual/stable/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
M third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt
M third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt
M third_party/WebKit/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt
M third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
M third_party/WebKit/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt
M third_party/WebKit/Source/core/dom/URLSearchParams.cpp
M third_party/WebKit/Source/core/dom/URLSearchParams.h
M third_party/WebKit/Source/core/dom/URLSearchParams.idl
16 files changed, 26 insertions(+), 13 deletions(-)
diff --git a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-sort-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-sort-expected.txt
deleted file mode 100644
index 9066ba7..0000000
--- a/third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-sort-expected.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-This is a testharness.js-based test.
-FAIL Parse and sort: z=b&a=b&z=a&a=a params.sort is not a function
-FAIL URL parse and sort: z=b&a=b&z=a&a=a url.searchParams.sort is not a function
-FAIL Parse and sort: �=x&&�=a params.sort is not a function
-FAIL URL parse and sort: �=x&&�=a url.searchParams.sort is not a function
-FAIL Parse and sort: ffi&🌈 params.sort is not a function
-FAIL URL parse and sort: ffi&🌈 url.searchParams.sort is not a function
-FAIL Parse and sort: é&e�&é params.sort is not a function
-FAIL URL parse and sort: é&e�&é url.searchParams.sort is not a function
-FAIL Parse and sort: z=z&a=a&z=y&a=b&z=x&a=c&z=w&a=d&z=v&a=e&z=u&a=f&z=t&a=g params.sort is not a function
-FAIL URL parse and sort: z=z&a=a&z=y&a=b&z=x&a=c&z=w&a=d&z=v&a=e&z=u&a=f&z=t&a=g url.searchParams.sort is not a function
-Harness: the test ran to completion.
-
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt b/third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
index 1c7dc04..e0846e3 100644
--- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
+++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
@@ -1078,6 +1078,7 @@
method has
method keys
method set
+ method sort
method toString
method values
interface WebGL2RenderingContext
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/stable/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/stable/webexposed/global-interface-listing-expected.txt
index 6ee660b..585cb5d 100644
--- a/third_party/WebKit/LayoutTests/platform/win/virtual/stable/webexposed/global-interface-listing-expected.txt
+++ b/third_party/WebKit/LayoutTests/platform/win/virtual/stable/webexposed/global-interface-listing-expected.txt
@@ -5864,6 +5864,7 @@
method has
method keys
method set
+ method sort
method toString
method values
interface VTTCue : TextTrackCue
diff --git a/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt b/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
index aa22acd..5ad8d5d 100644
--- a/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
+++ b/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
@@ -1069,6 +1069,7 @@
method has
method keys
method set
+ method sort
method toString
method values
interface WebGL2RenderingContext
diff --git a/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-dedicated-worker-expected.txt b/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-dedicated-worker-expected.txt
index 904cfe4..3a9a596 100644
--- a/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-dedicated-worker-expected.txt
+++ b/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-dedicated-worker-expected.txt
@@ -980,6 +980,7 @@
[Worker] method has
[Worker] method keys
[Worker] method set
+[Worker] method sort
[Worker] method toString
[Worker] method values
[Worker] interface WebGL2RenderingContext
diff --git a/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-expected.txt
index 8f6fc9f..6539585 100644
--- a/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-expected.txt
+++ b/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-expected.txt
@@ -6919,6 +6919,7 @@
method has
method keys
method set
+ method sort
method toString
method values
interface USB : EventTarget
diff --git a/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-shared-worker-expected.txt b/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-shared-worker-expected.txt
index 0d32b6a..b272baa 100644
--- a/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-shared-worker-expected.txt
+++ b/third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-shared-worker-expected.txt
@@ -980,6 +980,7 @@
[Worker] method has
[Worker] method keys
[Worker] method set
+[Worker] method sort
[Worker] method toString
[Worker] method values
[Worker] interface WebGL2RenderingContext
diff --git a/third_party/WebKit/LayoutTests/virtual/stable/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt b/third_party/WebKit/LayoutTests/virtual/stable/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
index c2426aa..d256dd0 100644
--- a/third_party/WebKit/LayoutTests/virtual/stable/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
+++ b/third_party/WebKit/LayoutTests/virtual/stable/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
@@ -694,6 +694,7 @@
method has
method keys
method set
+ method sort
method toString
method values
interface WebSocket : EventTarget
diff --git a/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt
index 5ce8f21..144cb73 100644
--- a/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt
+++ b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt
@@ -653,6 +653,7 @@
[Worker] method has
[Worker] method keys
[Worker] method set
+[Worker] method sort
[Worker] method toString
[Worker] method values
[Worker] interface WebSocket : EventTarget
diff --git a/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt
index a88a980..fb80761 100644
--- a/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt
+++ b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt
@@ -653,6 +653,7 @@
[Worker] method has
[Worker] method keys
[Worker] method set
+[Worker] method sort
[Worker] method toString
[Worker] method values
[Worker] interface WebSocket : EventTarget
diff --git a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt
index 8fadf5a..2278f6b 100644
--- a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt
+++ b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt
@@ -988,6 +988,7 @@
[Worker] method has
[Worker] method keys
[Worker] method set
+[Worker] method sort
[Worker] method toString
[Worker] method values
[Worker] interface WebGL2RenderingContext
diff --git a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
index 3f564ad..e3efafd 100644
--- a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
@@ -6927,6 +6927,7 @@
method has
method keys
method set
+ method sort
method toString
method values
interface USB : EventTarget
diff --git a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt
index 5b37c04..d0b071d 100644
--- a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt
+++ b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt
@@ -988,6 +988,7 @@
[Worker] method has
[Worker] method keys
[Worker] method set
+[Worker] method sort
[Worker] method toString
[Worker] method values
[Worker] interface WebGL2RenderingContext
diff --git a/third_party/WebKit/Source/core/dom/URLSearchParams.cpp b/third_party/WebKit/Source/core/dom/URLSearchParams.cpp
index e6ce11d..0ec3eed 100644
--- a/third_party/WebKit/Source/core/dom/URLSearchParams.cpp
+++ b/third_party/WebKit/Source/core/dom/URLSearchParams.cpp
@@ -4,6 +4,7 @@
#include "core/dom/URLSearchParams.h"
+#include <algorithm>
#include <utility>
#include "core/dom/DOMURL.h"
#include "platform/network/FormDataEncoder.h"
@@ -38,6 +39,11 @@
size_t current_;
};
+bool CompareParams(const std::pair<String, String>& a,
+ const std::pair<String, String>& b) {
+ return WTF::CodePointCompareLessThan(a.first, b.first);
+}
+
} // namespace
URLSearchParams* URLSearchParams::Create(const URLSearchParamsInit& init,
@@ -222,6 +228,11 @@
RunUpdateSteps();
}
+void URLSearchParams::sort() {
+ std::stable_sort(params_.begin(), params_.end(), CompareParams);
+ RunUpdateSteps();
+}
+
void URLSearchParams::EncodeAsFormData(Vector<char>& encoded_data) const {
for (const auto& param : params_)
FormDataEncoder::AddKeyValuePairAsFormData(
diff --git a/third_party/WebKit/Source/core/dom/URLSearchParams.h b/third_party/WebKit/Source/core/dom/URLSearchParams.h
index 8ff91cd..3567653 100644
--- a/third_party/WebKit/Source/core/dom/URLSearchParams.h
+++ b/third_party/WebKit/Source/core/dom/URLSearchParams.h
@@ -49,6 +49,7 @@
Vector<String> getAll(const String&) const;
bool has(const String&) const;
void set(const String& name, const String& value);
+ void sort();
void SetInput(const String&);
// Internal helpers
diff --git a/third_party/WebKit/Source/core/dom/URLSearchParams.idl b/third_party/WebKit/Source/core/dom/URLSearchParams.idl
index a350573..ba6fe93 100644
--- a/third_party/WebKit/Source/core/dom/URLSearchParams.idl
+++ b/third_party/WebKit/Source/core/dom/URLSearchParams.idl
@@ -16,6 +16,8 @@
boolean has(USVString name);
void set(USVString name, USVString value);
+ void sort();
+
iterable<USVString, USVString>;
stringifier;
};
To view, visit change 515243. To unsubscribe, visit settings.
Mike West posted comments on this change.
Patch set 5:Code-Review +1
Patch Set 5:
+mkwst
Since the change is small, I'm going to skip I-to-S and get this reviewed by one of API owners. Let me know if you think it should go through the standard process.
I agree that this is borderline, but I'd suggest erring on the side of transparency by sending an intent to ship. It looks like you've already created a chromestatus entry and a tracking bug, which is the hard part. :) Wrapping that up into an email doesn't take much more effort, and it's good to be public about catching up to other vendors, even in small ways.
The code change LGTM, in any event.
Takeshi Yoshino posted comments on this change.
Patch set 5:
Patch Set 5: Code-Review+1
Patch Set 5:
+mkwst
Since the change is small, I'm going to skip I-to-S and get this reviewed by one of API owners. Let me know if you think it should go through the standard process.
I agree that this is borderline, but I'd suggest erring on the side of transparency by sending an intent to ship. It looks like you've already created a chromestatus entry and a tracking bug, which is the hard part. :) Wrapping that up into an email doesn't take much more effort, and it's good to be public about catching up to other vendors, even in small ways.
The code change LGTM, in any event.
Thank you, Mike. Got it, I'll send an I-to-IS :)
Takeshi Yoshino posted comments on this change.
Patch set 5:
Patch Set 5:
Patch Set 5: Code-Review+1
Patch Set 5:
+mkwst
Since the change is small, I'm going to skip I-to-S and get this reviewed by one of API owners. Let me know if you think it should go through the standard process.
I agree that this is borderline, but I'd suggest erring on the side of transparency by sending an intent to ship. It looks like you've already created a chromestatus entry and a tracking bug, which is the hard part. :) Wrapping that up into an email doesn't take much more effort, and it's good to be public about catching up to other vendors, even in small ways.
The code change LGTM, in any event.
Thank you, Mike. Got it, I'll send an I-to-IS :)
Sent a I-to-IS finally
https://groups.google.com/a/chromium.org/d/topic/blink-dev/U0p_jFYpgss/discussion
Takeshi Yoshino posted comments on this change.
Patch set 7:
Uploaded patch set 7.
Rebaselined
Rebased and rebaselined the virtual stable expectations for the webexposed tests
Takeshi Yoshino posted comments on this change.
Patch set 7:Commit-Queue +1
Takeshi Yoshino posted comments on this change.
Patch set 9:
Received 3 LGTMs
https://groups.google.com/a/chromium.org/d/topic/blink-dev/U0p_jFYpgss/discussion
Takeshi Yoshino posted comments on this change.
Patch set 9:Commit-Queue +2
Commit Bot posted comments on this change.
Patch set 9:
CQ is trying da patch.
Note: The patchset sent to CQ was uploaded after this CL was approved.
"Rebase" https://chromium-review.googlesource.com/c/515243/9
Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/chromium-review.googlesource.com/515243/9
Bot data: {"action": "start", "triggered_at": "2017-06-27T06:24:41.0Z", "cq_cfg_revision": "e12d437dc7f395d72995b548c9dacf21b0b1526e", "revision": "21988ffd1caa5c6140084cf013e042533e5467b7"}
Try jobs failed on following builders:
mac_chromium_rel_ng on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_ng/builds/486955)
Bot data: {"action": "cancel", "triggered_at": "2017-06-27T06:24:41.0Z", "cq_cfg_revision": "e12d437dc7f395d72995b548c9dacf21b0b1526e", "revision": "21988ffd1caa5c6140084cf013e042533e5467b7"}
Takeshi Yoshino posted comments on this change.
Patch set 10:Commit-Queue +2
Commit Bot posted comments on this change.
Patch set 10:
CQ is trying da patch.
Note: The patchset sent to CQ was uploaded after this CL was approved.
"Update Mac expectations" https://chromium-review.googlesource.com/c/515243/10
Follow status at: https://chromium-cq-status.appspot.com/v2/patch-status/chromium-review.googlesource.com/515243/10
Bot data: {"action": "start", "triggered_at": "2017-06-27T08:46:45.0Z", "cq_cfg_revision": "e12d437dc7f395d72995b548c9dacf21b0b1526e", "revision": "fe5e69c7e9b83002c8ae48ddbb9e8fa4405e5b8e"}
Commit Bot merged this change.
Implement URLSearchParams.sort()
Spec:
https://url.spec.whatwg.org/#dom-urlsearchparams-sort
Interoperability and Compatibility risk:
Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1331864 and
WebKit https://bugs.webkit.org/show_bug.cgi?id=167154 have implemented
it.
web-platform-tests:
url/urlsearchparams-sort.html
Feature dashboard:
https://www.chromestatus.com/feature/5632900720492544
Bug: 682143
Change-Id: I5a1831503579079d3d95de3028b2f8195192c88d
Reviewed-on: https://chromium-review.googlesource.com/515243
Commit-Queue: Takeshi Yoshino <tyos...@chromium.org>
Reviewed-by: Mike West <mk...@chromium.org>
Cr-Commit-Position: refs/heads/master@{#482590}
---
D third_party/WebKit/LayoutTests/external/wpt/url/urlsearchparams-sort-expected.txt
M third_party/WebKit/LayoutTests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
M third_party/WebKit/LayoutTests/platform/mac/virtual/stable/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
M third_party/WebKit/LayoutTests/platform/mac/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt
M third_party/WebKit/LayoutTests/platform/mac/virtual/stable/webexposed/global-interface-listing-expected.txt
M third_party/WebKit/LayoutTests/platform/mac/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt
M third_party/WebKit/LayoutTests/platform/win/virtual/stable/webexposed/global-interface-listing-expected.txt
M third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
M third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-dedicated-worker-expected.txt
M third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-expected.txt
M third_party/WebKit/LayoutTests/virtual/service-worker-navigation-preload-disabled/webexposed/global-interface-listing-shared-worker-expected.txt
M third_party/WebKit/LayoutTests/virtual/stable/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
M third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt
M third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt
M third_party/WebKit/LayoutTests/webexposed/global-interface-listing-dedicated-worker-expected.txt
M third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
M third_party/WebKit/LayoutTests/webexposed/global-interface-listing-shared-worker-expected.txt
M third_party/WebKit/Source/core/dom/URLSearchParams.cpp
M third_party/WebKit/Source/core/dom/URLSearchParams.h
M third_party/WebKit/Source/core/dom/URLSearchParams.idl
20 files changed, 30 insertions(+), 13 deletions(-)