diff options
author | JustOff <Off.Just.Off@gmail.com> | 2019-03-13 21:22:29 +0200 |
---|---|---|
committer | JustOff <Off.Just.Off@gmail.com> | 2019-03-13 21:22:29 +0200 |
commit | 706810babd643272f6568661071cba7e01d1355e (patch) | |
tree | c95b7e4047a0c6e9f000769ba20b4c1ddd144c0d | |
parent | 4a1e73c3884d17310b8e048a07efbecfe5b70a40 (diff) | |
download | uxp-706810babd643272f6568661071cba7e01d1355e.tar.gz |
Construct URLSearchParams from record<>
-rw-r--r-- | dom/url/URLSearchParams.cpp | 8 | ||||
-rw-r--r-- | dom/url/URLSearchParams.h | 4 | ||||
-rw-r--r-- | dom/webidl/URLSearchParams.webidl | 2 |
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); |