Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(325)

Unified Diff: third_party/WebKit/Source/core/dom/URLSearchParams.cpp

Issue 1860623002: Add support for URL.searchParams getter. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 906ec4cbf22a54e4a2db64fd7d62727a70f771d6..5fbe139215e0bffd8ac5ce2a428b58325a4f0509 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 "core/dom/DOMURL.h"
#include "platform/network/FormDataEncoder.h"
#include "platform/weborigin/KURL.h"
#include "wtf/text/StringBuilder.h"
@@ -46,7 +47,8 @@ URLSearchParams* URLSearchParams::create(const URLSearchParamsInit& init)
return new URLSearchParams(String());
}
-URLSearchParams::URLSearchParams(const String& queryString)
+URLSearchParams::URLSearchParams(const String& queryString, DOMURL* urlObject)
+ : m_urlObject(urlObject)
{
if (!queryString.isEmpty())
setInput(queryString);
@@ -62,6 +64,29 @@ URLSearchParams::~URLSearchParams()
{
}
+DEFINE_TRACE(URLSearchParams)
+{
+ visitor->trace(m_urlObject);
+}
+
+#if ENABLE(ASSERT)
+DOMURL* URLSearchParams::urlObject() const
+{
+ return m_urlObject;
+}
+#endif
+
+void URLSearchParams::runUpdateSteps()
+{
+ if (!m_urlObject)
+ return;
+
+ if (m_urlObject->isInUpdate())
+ return;
+
+ m_urlObject->setSearchInternal(toString());
+}
+
static String decodeString(String input)
{
return decodeURLEscapeSequences(input.replace('+', ' '));
@@ -69,7 +94,8 @@ static String decodeString(String input)
void URLSearchParams::setInput(const String& queryString)
{
- DCHECK(m_params.isEmpty());
+ m_params.clear();
+
size_t start = 0;
size_t queryStringLength = queryString.length();
while (start < queryStringLength) {
@@ -91,7 +117,9 @@ void URLSearchParams::setInput(const String& queryString)
}
start = nameValueEnd + 1;
}
+ runUpdateSteps();
}
+
static String encodeString(const String& input)
{
return encodeWithURLEscapeSequences(input).replace("%20", "+");
@@ -113,6 +141,7 @@ String URLSearchParams::toString() const
void URLSearchParams::append(const String& name, const String& value)
{
m_params.append(std::make_pair(name, value));
+ runUpdateSteps();
}
void URLSearchParams::deleteAllWithName(const String& name)
@@ -123,6 +152,7 @@ void URLSearchParams::deleteAllWithName(const String& name)
else
i++;
}
+ runUpdateSteps();
}
String URLSearchParams::get(const String& name) const
@@ -174,6 +204,8 @@ void URLSearchParams::set(const String& name, const String& value)
// Otherwise, append a new name-value pair to the list.
if (!foundMatch)
append(name, value);
+ else
+ runUpdateSteps();
}
PassRefPtr<EncodedFormData> URLSearchParams::encodeFormData() const
@@ -184,10 +216,6 @@ PassRefPtr<EncodedFormData> URLSearchParams::encodeFormData() const
return EncodedFormData::create(encodedData.data(), encodedData.size());
}
-DEFINE_TRACE(URLSearchParams)
-{
-}
-
PairIterable<String, String>::IterationSource* URLSearchParams::startIteration(ScriptState*, ExceptionState&)
{
return new URLSearchParamsIterationSource(m_params);
« no previous file with comments | « third_party/WebKit/Source/core/dom/URLSearchParams.h ('k') | third_party/WebKit/Source/core/dom/URLUtils.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698