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

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

Issue 1998563002: Fix URLSearchParams to use the right encoding algorithm (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 7 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 5e3493b5ef114cedc23267b86fd886a103b47a22..30d3a09d4f01ca234a0427fd1432e29303957527 100644
--- a/third_party/WebKit/Source/core/dom/URLSearchParams.cpp
+++ b/third_party/WebKit/Source/core/dom/URLSearchParams.cpp
@@ -7,7 +7,6 @@
#include "core/dom/DOMURL.h"
#include "platform/network/FormDataEncoder.h"
#include "platform/weborigin/KURL.h"
-#include "wtf/text/StringBuilder.h"
#include "wtf/text/TextEncoding.h"
namespace blink {
@@ -124,22 +123,11 @@ void URLSearchParams::setInput(const String& queryString)
runUpdateSteps();
}
-static String encodeString(const String& input)
-{
- return encodeWithURLEscapeSequences(input).replace("%20", "+");
-}
-
String URLSearchParams::toString() const
{
- StringBuilder result;
- for (size_t i = 0; i < m_params.size(); ++i) {
- if (i)
- result.append('&');
- result.append(encodeString(m_params[i].first));
- result.append('=');
- result.append(encodeString(m_params[i].second));
- }
- return result.toString();
+ Vector<char> encodedData;
+ encodeAsFormData(encodedData);
+ return String(encodedData.data(), encodedData.size());
}
void URLSearchParams::append(const String& name, const String& value)
@@ -212,11 +200,16 @@ void URLSearchParams::set(const String& name, const String& value)
runUpdateSteps();
}
-PassRefPtr<EncodedFormData> URLSearchParams::encodeFormData() const
+void URLSearchParams::encodeAsFormData(Vector<char>& encodedData) const
{
- Vector<char> encodedData;
for (const auto& param : m_params)
- FormDataEncoder::addKeyValuePairAsFormData(encodedData, param.first.utf8(), param.second.utf8(), EncodedFormData::FormURLEncoded);
+ FormDataEncoder::addKeyValuePairAsFormData(encodedData, param.first.utf8(), param.second.utf8(), EncodedFormData::FormURLEncoded, FormDataEncoder::DoNotNormalizeCRLF);
+}
+
+PassRefPtr<EncodedFormData> URLSearchParams::toEncodedFormData() const
+{
+ Vector<char> encodedData;
+ encodeAsFormData(encodedData);
return EncodedFormData::create(encodedData.data(), encodedData.size());
}
« no previous file with comments | « third_party/WebKit/Source/core/dom/URLSearchParams.h ('k') | third_party/WebKit/Source/core/dom/URLSearchParamsTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698