| Index: Source/modules/fetch/Response.cpp
|
| diff --git a/Source/modules/fetch/Response.cpp b/Source/modules/fetch/Response.cpp
|
| index fcc11891b0f07569487c2dfce1f2f150855b53ea..0863925b33142597ae7fa5f517bdbcfa4bc16b8a 100644
|
| --- a/Source/modules/fetch/Response.cpp
|
| +++ b/Source/modules/fetch/Response.cpp
|
| @@ -243,6 +243,28 @@ Response* Response::error(ExecutionContext* context)
|
| return r;
|
| }
|
|
|
| +Response* Response::redirect(ExecutionContext* context, const String& url, unsigned short status, ExceptionState& exceptionState)
|
| +{
|
| + KURL parsedURL = context->completeURL(url);
|
| + if (!parsedURL.isValid()) {
|
| + exceptionState.throwTypeError("Failed to parse URL from " + url);
|
| + return nullptr;
|
| + }
|
| +
|
| + if (status != 301 && status != 302 && status != 303 && status != 307 && status != 308) {
|
| + exceptionState.throwRangeError("Invalid status code");
|
| + return nullptr;
|
| + }
|
| +
|
| + Response* r = new Response(context);
|
| + r->suspendIfNeeded();
|
| + r->m_headers->setGuard(Headers::ImmutableGuard);
|
| + r->m_response->setStatus(status);
|
| + r->m_response->headerList()->set("Location", parsedURL);
|
| +
|
| + return r;
|
| +}
|
| +
|
| String Response::type() const
|
| {
|
| // "The type attribute's getter must return response's type."
|
|
|