Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1186)

Unified Diff: Source/modules/serviceworkers/Response.cpp

Issue 795323003: Move Fetch API releted code to modules/fetch. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/modules/serviceworkers/Response.h ('k') | Source/modules/serviceworkers/Response.idl » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/serviceworkers/Response.cpp
diff --git a/Source/modules/serviceworkers/Response.cpp b/Source/modules/serviceworkers/Response.cpp
deleted file mode 100644
index b72910c46431a10a23d35f9c08e51331e6f8af72..0000000000000000000000000000000000000000
--- a/Source/modules/serviceworkers/Response.cpp
+++ /dev/null
@@ -1,316 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "config.h"
-#include "Response.h"
-
-#include "bindings/core/v8/Dictionary.h"
-#include "bindings/core/v8/ExceptionState.h"
-#include "core/dom/DOMArrayBuffer.h"
-#include "core/dom/DOMArrayBufferView.h"
-#include "core/fileapi/Blob.h"
-#include "modules/serviceworkers/ResponseInit.h"
-#include "public/platform/WebServiceWorkerResponse.h"
-#include "wtf/RefPtr.h"
-
-namespace blink {
-
-namespace {
-
-FetchResponseData* createFetchResponseDataFromWebResponse(const WebServiceWorkerResponse& webResponse)
-{
- FetchResponseData* response = 0;
- if (200 <= webResponse.status() && webResponse.status() < 300)
- response = FetchResponseData::create();
- else
- response = FetchResponseData::createNetworkErrorResponse();
-
- response->setURL(webResponse.url());
- response->setStatus(webResponse.status());
- response->setStatusMessage(webResponse.statusText());
-
- for (HTTPHeaderMap::const_iterator i = webResponse.headers().begin(), end = webResponse.headers().end(); i != end; ++i) {
- response->headerList()->append(i->key, i->value);
- }
-
- response->setBlobDataHandle(webResponse.blobDataHandle());
-
- // Filter the response according to |webResponse|'s ResponseType.
- switch (webResponse.responseType()) {
- case WebServiceWorkerResponseTypeBasic:
- response = response->createBasicFilteredResponse();
- break;
- case WebServiceWorkerResponseTypeCORS:
- response = response->createCORSFilteredResponse();
- break;
- case WebServiceWorkerResponseTypeOpaque:
- response = response->createOpaqueFilteredResponse();
- break;
- case WebServiceWorkerResponseTypeDefault:
- break;
- case WebServiceWorkerResponseTypeError:
- ASSERT(response->type() == FetchResponseData::ErrorType);
- break;
- }
-
- return response;
-}
-
-}
-
-Response* Response::create(ExecutionContext* context, ExceptionState& exceptionState)
-{
- return create(context, nullptr, ResponseInit(), exceptionState);
-}
-
-Response* Response::create(ExecutionContext* context, const BodyInit& body, const Dictionary& responseInit, ExceptionState& exceptionState)
-{
- ASSERT(!body.isNull());
- if (body.isBlob())
- return create(context, body.getAsBlob(), ResponseInit(responseInit, exceptionState), exceptionState);
- if (body.isUSVString()) {
- OwnPtr<BlobData> blobData = BlobData::create();
- blobData->appendText(body.getAsUSVString(), false);
- // "Set |Content-Type| to `text/plain;charset=UTF-8`."
- blobData->setContentType("text/plain;charset=UTF-8");
- const long long length = blobData->length();
- Blob* blob = Blob::create(BlobDataHandle::create(blobData.release(), length));
- return create(context, blob, ResponseInit(responseInit, exceptionState), exceptionState);
- }
- if (body.isArrayBuffer()) {
- RefPtr<DOMArrayBuffer> arrayBuffer = body.getAsArrayBuffer();
- OwnPtr<BlobData> blobData = BlobData::create();
- blobData->appendBytes(arrayBuffer->data(), arrayBuffer->byteLength());
- const long long length = blobData->length();
- Blob* blob = Blob::create(BlobDataHandle::create(blobData.release(), length));
- return create(context, blob, ResponseInit(responseInit, exceptionState), exceptionState);
- }
- if (body.isArrayBufferView()) {
- RefPtr<DOMArrayBufferView> arrayBufferView = body.getAsArrayBufferView();
- OwnPtr<BlobData> blobData = BlobData::create();
- blobData->appendBytes(arrayBufferView->baseAddress(), arrayBufferView->byteLength());
- const long long length = blobData->length();
- Blob* blob = Blob::create(BlobDataHandle::create(blobData.release(), length));
- return create(context, blob, ResponseInit(responseInit, exceptionState), exceptionState);
- }
- ASSERT_NOT_REACHED();
- return nullptr;
-}
-
-Response* Response::create(ExecutionContext* context, Blob* body, const ResponseInit& responseInit, ExceptionState& exceptionState)
-{
- // "1. If |init|'s status member is not in the range 200 to 599, throw a
- // RangeError."
- if (responseInit.status < 200 || 599 < responseInit.status) {
- exceptionState.throwRangeError("Invalid status");
- return 0;
- }
-
- // FIXME: "2. If |init|'s statusText member does not match the Reason-Phrase
- // token production, throw a TypeError."
-
- // "3. Let |r| be a new Response object, associated with a new response,
- // Headers object, and Body object."
- Response* r = new Response(context);
- r->suspendIfNeeded();
-
- // "4. Set |r|'s response's status to |init|'s status member."
- r->m_response->setStatus(responseInit.status);
-
- // "5. Set |r|'s response's status message to |init|'s statusText member."
- r->m_response->setStatusMessage(AtomicString(responseInit.statusText));
-
- // "6. If |init|'s headers member is present, run these substeps:"
- if (responseInit.headers) {
- // "1. Empty |r|'s response's header list."
- r->m_response->headerList()->clearList();
- // "2. Fill |r|'s Headers object with |init|'s headers member. Rethrow
- // any exceptions."
- r->m_headers->fillWith(responseInit.headers.get(), exceptionState);
- if (exceptionState.hadException())
- return 0;
- } else if (!responseInit.headersDictionary.isUndefinedOrNull()) {
- // "1. Empty |r|'s response's header list."
- r->m_response->headerList()->clearList();
- // "2. Fill |r|'s Headers object with |init|'s headers member. Rethrow
- // any exceptions."
- r->m_headers->fillWith(responseInit.headersDictionary, exceptionState);
- if (exceptionState.hadException())
- return 0;
- }
- // "7. If body is given, run these substeps:"
- if (body) {
- // "1. Let |stream| and |Content-Type| be the result of extracting body."
- // "2. Set |r|'s response's body to |stream|."
- // "3. If |Content-Type| is non-null and |r|'s response's header list
- // contains no header named `Content-Type`, append `Content-Type`/
- // |Content-Type| to |r|'s response's header list."
- r->m_response->setBlobDataHandle(body->blobDataHandle());
- if (!body->type().isNull() && !r->m_response->headerList()->has("Content-Type"))
- r->m_response->headerList()->append("Content-Type", body->type());
- }
-
- // FIXME: "8. Set |r|'s MIME type to the result of extracting a MIME type
- // from |r|'s response's header list."
-
- // "9. Return |r|."
- return r;
-}
-
-Response* Response::create(ExecutionContext* context, FetchResponseData* response)
-{
- Response* r = new Response(context, response);
- r->suspendIfNeeded();
- return r;
-}
-
-Response* Response::create(ExecutionContext* context, const WebServiceWorkerResponse& webResponse)
-{
- FetchResponseData* responseData = createFetchResponseDataFromWebResponse(webResponse);
- Response* r = new Response(context, responseData);
- r->suspendIfNeeded();
- return r;
-}
-
-Response* Response::createClone(const Response& cloneFrom)
-{
- Response* r = new Response(cloneFrom);
- r->suspendIfNeeded();
- return r;
-}
-
-String Response::type() const
-{
- // "The type attribute's getter must return response's type."
- switch (m_response->type()) {
- case FetchResponseData::BasicType:
- return "basic";
- case FetchResponseData::CORSType:
- return "cors";
- case FetchResponseData::DefaultType:
- return "default";
- case FetchResponseData::ErrorType:
- return "error";
- case FetchResponseData::OpaqueType:
- return "opaque";
- }
- ASSERT_NOT_REACHED();
- return "";
-}
-
-String Response::url() const
-{
- // "The url attribute's getter must return the empty string if response's
- // url is null and response's url, serialized with the exclude fragment
- // flag set, otherwise."
- if (!m_response->url().hasFragmentIdentifier())
- return m_response->url();
- KURL url(m_response->url());
- url.removeFragmentIdentifier();
- return url;
-}
-
-unsigned short Response::status() const
-{
- // "The status attribute's getter must return response's status."
- return m_response->status();
-}
-
-String Response::statusText() const
-{
- // "The statusText attribute's getter must return response's status message."
- return m_response->statusMessage();
-}
-
-Headers* Response::headers() const
-{
- // "The headers attribute's getter must return the associated Headers object."
- return m_headers;
-}
-
-Response* Response::clone(ExceptionState& exceptionState) const
-{
- if (bodyUsed()) {
- exceptionState.throwTypeError("Response body is already used");
- return nullptr;
- }
- if (streamAccessed()) {
- // FIXME: Support clone() of the stream accessed Response.
- exceptionState.throwTypeError("clone() of the Response which .body is accessed is not supported.");
- return nullptr;
- }
- return Response::createClone(*this);
-}
-
-void Response::populateWebServiceWorkerResponse(WebServiceWorkerResponse& response)
-{
- m_response->populateWebServiceWorkerResponse(response);
-}
-
-Response::Response(ExecutionContext* context)
- : Body(context)
- , m_response(FetchResponseData::create())
- , m_headers(Headers::create(m_response->headerList()))
-{
- m_headers->setGuard(Headers::ResponseGuard);
-}
-
-Response::Response(const Response& clone_from)
- : Body(clone_from)
- , m_response(clone_from.m_response->clone())
- , m_headers(Headers::create(m_response->headerList()))
-{
-}
-
-Response::Response(ExecutionContext* context, FetchResponseData* response)
- : Body(context)
- , m_response(response)
- , m_headers(Headers::create(m_response->headerList()))
-{
- m_headers->setGuard(Headers::ResponseGuard);
-}
-
-bool Response::hasBody() const
-{
- return internalBlobDataHandle() || internalBuffer();
-}
-
-PassRefPtr<BlobDataHandle> Response::blobDataHandle() const
-{
- return m_response->blobDataHandle();
-}
-
-BodyStreamBuffer* Response::buffer() const
-{
- return m_response->buffer();
-}
-
-String Response::contentTypeForBuffer() const
-{
- return m_response->contentTypeForBuffer();
-}
-
-PassRefPtr<BlobDataHandle> Response::internalBlobDataHandle() const
-{
- return m_response->internalBlobDataHandle();
-}
-
-BodyStreamBuffer* Response::internalBuffer() const
-{
- return m_response->internalBuffer();
-}
-
-String Response::internalContentTypeForBuffer() const
-{
- return m_response->internalContentTypeForBuffer();
-}
-
-void Response::trace(Visitor* visitor)
-{
- Body::trace(visitor);
- visitor->trace(m_response);
- visitor->trace(m_headers);
-}
-
-} // namespace blink
« no previous file with comments | « Source/modules/serviceworkers/Response.h ('k') | Source/modules/serviceworkers/Response.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698