| Index: Source/modules/serviceworkers/Response.cpp
|
| diff --git a/Source/modules/serviceworkers/Response.cpp b/Source/modules/serviceworkers/Response.cpp
|
| index 7f0a608a6f5fc45debb18df001e840e92527744e..3f5a4f5fbea5b49c92d4b4e5124925ad33bcdc0b 100644
|
| --- a/Source/modules/serviceworkers/Response.cpp
|
| +++ b/Source/modules/serviceworkers/Response.cpp
|
| @@ -29,19 +29,30 @@ FetchResponseData* createFetchResponseDataFromWebResponse(const WebServiceWorker
|
| response->setURL(webResponse.url());
|
| response->setStatus(webResponse.status());
|
| response->setStatusMessage(webResponse.statusText());
|
| - return response;
|
| -}
|
|
|
| -Headers* createHeadersFromWebResponse(const WebServiceWorkerResponse& webResponse)
|
| -{
|
| - Headers* headers = Headers::create();
|
| - TrackExceptionState exceptionState;
|
| for (HTTPHeaderMap::const_iterator i = webResponse.headers().begin(), end = webResponse.headers().end(); i != end; ++i) {
|
| - headers->append(i->key, i->value, exceptionState);
|
| - if (exceptionState.hadException())
|
| - return 0;
|
| + response->headerList()->append(i->key, i->value);
|
| + }
|
| +
|
| + // Filter the response according to |webResponse|'s ResponseType.
|
| + switch (webResponse.responseType()) {
|
| + case WebServiceWorkerResponse::BasicType:
|
| + response = response->createBasicFilteredResponse();
|
| + break;
|
| + case WebServiceWorkerResponse::CORSType:
|
| + response = response->createCORSFilteredResponse();
|
| + break;
|
| + case WebServiceWorkerResponse::OpaqueType:
|
| + response = response->createOpaqueFilteredResponse();
|
| + break;
|
| + case WebServiceWorkerResponse::DefaultType:
|
| + break;
|
| + case WebServiceWorkerResponse::ErrorType:
|
| + ASSERT(response->type() == FetchResponseData::ErrorType);
|
| + break;
|
| }
|
| - return headers;
|
| +
|
| + return response;
|
| }
|
|
|
| }
|
| @@ -149,7 +160,9 @@ Response* Response::create(ExecutionContext* context, FetchResponseData* respons
|
|
|
| Response* Response::create(ExecutionContext* context, const WebServiceWorkerResponse& webResponse)
|
| {
|
| - Response* r = new Response(context, webResponse);
|
| + // FIXME: Handle response body data.
|
| + FetchResponseData* responseData = createFetchResponseDataFromWebResponse(webResponse);
|
| + Response* r = new Response(context, responseData);
|
| r->suspendIfNeeded();
|
| return r;
|
| }
|
| @@ -243,14 +256,6 @@ Response::Response(ExecutionContext* context, FetchResponseData* response)
|
| m_headers->setGuard(Headers::ResponseGuard);
|
| }
|
|
|
| -// FIXME: Handle response body data.
|
| -Response::Response(ExecutionContext* context, const WebServiceWorkerResponse& webResponse)
|
| - : Body(context)
|
| - , m_response(createFetchResponseDataFromWebResponse(webResponse))
|
| - , m_headers(createHeadersFromWebResponse(webResponse))
|
| -{
|
| - m_headers->setGuard(Headers::ResponseGuard);
|
| -}
|
|
|
| PassRefPtr<BlobDataHandle> Response::blobDataHandle()
|
| {
|
|
|