Bug 1292293 - Part 2: Remove custom default ByteString handling logic from ResponseInit, r=bz
--- a/dom/fetch/Response.cpp
+++ b/dom/fetch/Response.cpp
@@ -130,39 +130,33 @@ Response::Constructor(const GlobalObject
{
nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(aGlobal.GetAsSupports());
if (aInit.mStatus < 200 || aInit.mStatus > 599) {
aRv.ThrowRangeError<MSG_INVALID_RESPONSE_STATUSCODE_ERROR>();
return nullptr;
}
- nsCString statusText;
- if (aInit.mStatusText.WasPassed()) {
- statusText = aInit.mStatusText.Value();
- nsACString::const_iterator start, end;
- statusText.BeginReading(start);
- statusText.EndReading(end);
- if (FindCharInReadable('\r', start, end)) {
- aRv.ThrowTypeError<MSG_RESPONSE_INVALID_STATUSTEXT_ERROR>();
- return nullptr;
- }
- // Reset iterator since FindCharInReadable advances it.
- statusText.BeginReading(start);
- if (FindCharInReadable('\n', start, end)) {
- aRv.ThrowTypeError<MSG_RESPONSE_INVALID_STATUSTEXT_ERROR>();
- return nullptr;
- }
- } else {
- // Since we don't support default values for ByteString.
- statusText = NS_LITERAL_CSTRING("OK");
+ // Check if the status text contains illegal characters
+ nsACString::const_iterator start, end;
+ aInit.mStatusText.BeginReading(start);
+ aInit.mStatusText.EndReading(end);
+ if (FindCharInReadable('\r', start, end)) {
+ aRv.ThrowTypeError<MSG_RESPONSE_INVALID_STATUSTEXT_ERROR>();
+ return nullptr;
+ }
+ // Reset iterator since FindCharInReadable advances it.
+ aInit.mStatusText.BeginReading(start);
+ if (FindCharInReadable('\n', start, end)) {
+ aRv.ThrowTypeError<MSG_RESPONSE_INVALID_STATUSTEXT_ERROR>();
+ return nullptr;
}
RefPtr<InternalResponse> internalResponse =
- new InternalResponse(aInit.mStatus, statusText);
+ new InternalResponse(aInit.mStatus, aInit.mStatusText);
// Grab a valid channel info from the global so this response is 'valid' for
// interception.
if (NS_IsMainThread()) {
ChannelInfo info;
nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(global);
if (window) {
nsIDocument* doc = window->GetExtantDoc();
--- a/dom/webidl/Response.webidl
+++ b/dom/webidl/Response.webidl
@@ -27,14 +27,13 @@ interface Response {
NewObject] Response clone();
[ChromeOnly, NewObject, Throws] Response cloneUnfiltered();
};
Response implements Body;
dictionary ResponseInit {
unsigned short status = 200;
- // WebIDL spec doesn't allow default values for ByteString.
- ByteString statusText;
+ ByteString statusText = "OK";
HeadersInit headers;
};
enum ResponseType { "basic", "cors", "default", "error", "opaque", "opaqueredirect" };