Chromium Code Reviews| Index: Source/modules/fetch/Request.cpp |
| diff --git a/Source/modules/fetch/Request.cpp b/Source/modules/fetch/Request.cpp |
| index 44339b9bf18cfee062b936c06de1fdc2243b4828..d8a7c9d71304c049edda0c50c42099e899f5a524 100644 |
| --- a/Source/modules/fetch/Request.cpp |
| +++ b/Source/modules/fetch/Request.cpp |
| @@ -35,8 +35,8 @@ FetchRequestData* createCopyOfFetchRequestDataForFetch(ExecutionContext* context |
| request->mutableReferrer()->setClient(); |
| request->setMode(original->mode()); |
| request->setCredentials(original->credentials()); |
| + request->setRedirect(original->redirect()); |
| // FIXME: Set cache mode. |
| - // TODO(yhirano): Set redirect mode. |
| return request; |
| } |
| @@ -140,14 +140,30 @@ Request* Request::createRequestWithRequestOrString(ExecutionContext* context, Re |
| // |fallbackCache| otherwise." |
| // FIXME: "15. If |cache| is non-null, set |request|'s cache mode to |
| // |cache|." |
| + |
| // TODO(yhirano): "16. If |init|'s redirect member is present and its is |
|
yhirano
2015/05/25 06:30:52
Please delete this TODO as you implement it.
shiva.jm
2015/05/25 12:01:57
Done.
|
| // manual, throw a TypeError." |
| + if (init.redirect == "manual") { |
| + exceptionState.throwTypeError("'" + init.redirect + "' manual redirect method is unsupported."); |
| + return nullptr; |
| + } |
| + |
| // TODO(yhirano): "17. Let |redirect| be |init|'s redirect member if it is |
|
yhirano
2015/05/25 06:30:53
ditto
shiva.jm
2015/05/25 12:01:57
Done.
|
| // present, and |fallbackRedirect| otherwise." |
| // TODO(yhirano): "18 If |redirect| is non-null, set |request|'s redirect |
|
yhirano
2015/05/25 06:30:52
ditto
shiva.jm
2015/05/25 12:01:57
Done.
|
| // mode to |redirect|." |
| // TODO(yhirano): "19 If |request|'s redirect mode is manual, set it to |
|
yhirano
2015/05/25 06:30:52
ditto
shiva.jm
2015/05/25 12:01:57
Done.
|
| // follow." |
| + if (init.redirect == "follow") { |
| + request->setRedirect(WebURLRequest::FetchRedirectModeFollow); |
| + } else if (init.redirect == "manual") { |
| + request->setRedirect(WebURLRequest::FetchRedirectModeFollow); |
| + } else if (init.redirect == "error") { |
| + request->setRedirect(WebURLRequest::FetchRedirectModeError); |
| + } else { |
| + if (!inputRequest) |
| + request->setRedirect(WebURLRequest::FetchRedirectModeFollow); |
| + } |
| // "20. If |init|'s method member is present, let |method| be it and run |
| // these substeps:" |
| @@ -450,6 +466,21 @@ String Request::credentials() const |
| return ""; |
| } |
| +String Request::redirect() const |
| +{ |
| + // "The redirect attribute's getter must return request's redirect mode." |
| + switch (m_request->redirect()) { |
| + case WebURLRequest::FetchRedirectModeFollow: |
| + return "follow"; |
| + case WebURLRequest::FetchRedirectModeError: |
| + return "error"; |
| + case WebURLRequest::FetchRedirectModeManual: |
| + return "manual"; |
| + } |
| + ASSERT_NOT_REACHED(); |
| + return ""; |
| +} |
| + |
| Request* Request::clone(ExceptionState& exceptionState) const |
| { |
| if (bodyUsed()) { |
| @@ -487,6 +518,7 @@ void Request::populateWebServiceWorkerRequest(WebServiceWorkerRequest& webReques |
| { |
| webRequest.setMethod(method()); |
| webRequest.setRequestContext(m_request->context()); |
| + webRequest.setRedirectMode(m_request->redirect()); |
| // This strips off the fragment part. |
| webRequest.setURL(url()); |