summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustOff <Off.Just.Off@gmail.com>2019-03-13 21:22:29 +0200
committerJustOff <Off.Just.Off@gmail.com>2019-03-13 21:22:29 +0200
commit706810babd643272f6568661071cba7e01d1355e (patch)
treec95b7e4047a0c6e9f000769ba20b4c1ddd144c0d
parent4a1e73c3884d17310b8e048a07efbecfe5b70a40 (diff)
downloaduxp-706810babd643272f6568661071cba7e01d1355e.tar.gz
Construct URLSearchParams from record<>
-rw-r--r--dom/url/URLSearchParams.cpp8
-rw-r--r--dom/url/URLSearchParams.h4
-rw-r--r--dom/webidl/URLSearchParams.webidl2
3 files changed, 10 insertions, 4 deletions
diff --git a/dom/url/URLSearchParams.cpp b/dom/url/URLSearchParams.cpp
index 8303272e17..ad23460f38 100644
--- a/dom/url/URLSearchParams.cpp
+++ b/dom/url/URLSearchParams.cpp
@@ -327,7 +327,7 @@ URLSearchParams::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
/* static */ already_AddRefed<URLSearchParams>
URLSearchParams::Constructor(const GlobalObject& aGlobal,
- const USVStringSequenceSequenceOrUSVString& aInit,
+ const USVStringSequenceSequenceOrUSVStringUSVStringRecordOrUSVString& aInit,
ErrorResult& aRv)
{
RefPtr<URLSearchParams> sp =
@@ -351,6 +351,12 @@ URLSearchParams::Constructor(const GlobalObject& aGlobal,
}
sp->Append(item[0], item[1]);
}
+ } else if (aInit.IsUSVStringUSVStringRecord()) {
+ const Record<nsString, nsString>& record =
+ aInit.GetAsUSVStringUSVStringRecord();
+ for (auto& entry : record.Entries()) {
+ sp->Append(entry.mKey, entry.mValue);
+ }
} else {
MOZ_CRASH("This should not happen.");
}
diff --git a/dom/url/URLSearchParams.h b/dom/url/URLSearchParams.h
index 5eef1b1a95..9fefd78dde 100644
--- a/dom/url/URLSearchParams.h
+++ b/dom/url/URLSearchParams.h
@@ -20,7 +20,7 @@ namespace mozilla {
namespace dom {
class URLSearchParams;
-class USVStringSequenceSequenceOrUSVString;
+class USVStringSequenceSequenceOrUSVStringUSVStringRecordOrUSVString;
class URLSearchParamsObserver : public nsISupports
{
@@ -148,7 +148,7 @@ public:
static already_AddRefed<URLSearchParams>
Constructor(const GlobalObject& aGlobal,
- const USVStringSequenceSequenceOrUSVString& aInit,
+ const USVStringSequenceSequenceOrUSVStringUSVStringRecordOrUSVString& aInit,
ErrorResult& aRv);
void ParseInput(const nsACString& aInput);
diff --git a/dom/webidl/URLSearchParams.webidl b/dom/webidl/URLSearchParams.webidl
index e44565654b..b93f4e8b1e 100644
--- a/dom/webidl/URLSearchParams.webidl
+++ b/dom/webidl/URLSearchParams.webidl
@@ -13,7 +13,7 @@
* http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0.
*/
-[Constructor(optional (sequence<sequence<USVString>> or USVString) init = ""),
+[Constructor(optional (sequence<sequence<USVString>> or record<USVString, USVString> or USVString) init = ""),
Exposed=(Window,Worker,WorkerDebugger,System)]
interface URLSearchParams {
void append(USVString name, USVString value);