Bug 1431449 - Introduce URLParams::Parse; r?bz
MozReview-Commit-ID: LicbWjZHxjz
--- a/caps/OriginAttributes.cpp
+++ b/caps/OriginAttributes.cpp
@@ -246,21 +246,18 @@ OriginAttributes::PopulateFromSuffix(con
if (aStr.IsEmpty()) {
return true;
}
if (aStr[0] != '^') {
return false;
}
- URLParams params;
- params.ParseInput(Substring(aStr, 1, aStr.Length() - 1));
-
PopulateFromSuffixIterator iterator(this);
- return params.ForEach(iterator);
+ return URLParams::Parse(Substring(aStr, 1, aStr.Length() - 1), iterator);
}
bool
OriginAttributes::PopulateFromOrigin(const nsACString& aOrigin,
nsACString& aOriginNoSuffix)
{
// RFindChar is only available on nsCString.
nsCString origin(aOrigin);
--- a/dom/base/BodyUtil.cpp
+++ b/dom/base/BodyUtil.cpp
@@ -464,22 +464,19 @@ BodyUtil::ConsumeFormData(nsIGlobalObjec
NS_NAMED_LITERAL_CSTRING(urlDataMimeType, "application/x-www-form-urlencoded");
bool isValidUrlEncodedMimeType = StringBeginsWith(aMimeType, urlDataMimeType);
if (isValidUrlEncodedMimeType && aMimeType.Length() > urlDataMimeType.Length()) {
isValidUrlEncodedMimeType = aMimeType[urlDataMimeType.Length()] == ';';
}
if (isValidUrlEncodedMimeType) {
- URLParams params;
- params.ParseInput(aStr);
-
RefPtr<FormData> fd = new FormData(aParent);
FillFormIterator iterator(fd);
- DebugOnly<bool> status = params.ForEach(iterator);
+ DebugOnly<bool> status = URLParams::Parse(aStr, iterator);
MOZ_ASSERT(status);
return fd.forget();
}
aRv.ThrowTypeError<MSG_BAD_FORMDATA>();
return nullptr;
}
--- a/dom/url/URLSearchParams.cpp
+++ b/dom/url/URLSearchParams.cpp
@@ -158,16 +158,24 @@ URLParams::DecodeString(const nsACString
unescaped.Append(*start);
++start;
}
ConvertString(unescaped, aOutput);
}
+/* static */ bool
+URLParams::Parse(const nsACString& aInput, ForEachIterator& aIterator)
+{
+ URLParams params;
+ params.ParseInput(aInput);
+ return params.ForEach(aIterator);
+}
+
void
URLParams::ParseInput(const nsACString& aInput)
{
// Remove all the existing data before parsing a new input.
DeleteAll();
nsACString::const_iterator start, end;
aInput.BeginReading(start);
--- a/dom/url/URLSearchParams.h
+++ b/dom/url/URLSearchParams.h
@@ -45,16 +45,19 @@ public:
class ForEachIterator
{
public:
virtual bool
URLParamsIterator(const nsString& aName, const nsString& aValue) = 0;
};
+ static bool
+ Parse(const nsACString& aInput, ForEachIterator& aIterator);
+
void
ParseInput(const nsACString& aInput);
bool
ForEach(ForEachIterator& aIterator) const
{
for (uint32_t i = 0; i < mParams.Length(); ++i) {
if (!aIterator.URLParamsIterator(mParams[i].mKey, mParams[i].mValue)) {