Chromium Code Reviews| Index: third_party/WebKit/Source/core/dom/URLSearchParams.cpp |
| diff --git a/third_party/WebKit/Source/core/dom/URLSearchParams.cpp b/third_party/WebKit/Source/core/dom/URLSearchParams.cpp |
| index 30ba1da486351f1baf909e7e40e874f864b3404d..fac8afdfeed40681ab37a4d71f38eb1145d06b3d 100644 |
| --- a/third_party/WebKit/Source/core/dom/URLSearchParams.cpp |
| +++ b/third_party/WebKit/Source/core/dom/URLSearchParams.cpp |
| @@ -39,20 +39,44 @@ class URLSearchParamsIterationSource final |
| } // namespace |
| -URLSearchParams* URLSearchParams::create(const URLSearchParamsInit& init) { |
| +URLSearchParams* URLSearchParams::create(const URLSearchParamsInit& init, |
| + ExceptionState& exceptionState) { |
| if (init.isUSVString()) { |
| const String& queryString = init.getAsUSVString(); |
| if (queryString.startsWith('?')) |
| return new URLSearchParams(queryString.substring(1)); |
| return new URLSearchParams(queryString); |
| } |
| + // TODO(sof): copy constructor no longer in the spec, |
| + // consider removing. |
| if (init.isURLSearchParams()) |
| return new URLSearchParams(init.getAsURLSearchParams()); |
| + if (init.isUSVStringSequenceSequence()) { |
| + return URLSearchParams::create(init.getAsUSVStringSequenceSequence(), |
| + exceptionState); |
| + } |
| + |
| DCHECK(init.isNull()); |
| return new URLSearchParams(String()); |
| } |
| +URLSearchParams* URLSearchParams::create(const Vector<Vector<String>>& init, |
| + ExceptionState& exceptionState) { |
| + URLSearchParams* instance = new URLSearchParams(String()); |
| + for (unsigned i = 0; i < init.size(); ++i) { |
| + const Vector<String>& pair = init[i]; |
| + if (pair.size() != 2) { |
| + exceptionState.throwTypeError(ExceptionMessages::failedToConstruct( |
| + "URLSearchParams", |
| + "Sequence initializer must only contain pair elements")); |
| + return nullptr; |
| + } |
| + instance->append(pair[0], pair[1]); |
|
tyoshino (SeeGerritForStatus)
2017/03/01 08:07:26
can we populate m_params first and then runUpdateS
sof
2017/03/01 08:40:59
Done, runUpdateSteps() would be near no-op in this
|
| + } |
| + return instance; |
| +} |
| + |
| URLSearchParams::URLSearchParams(const String& queryString, DOMURL* urlObject) |
| : m_urlObject(urlObject) { |
| if (!queryString.isEmpty()) |