| Index: Source/modules/serviceworkers/Response.cpp
|
| diff --git a/Source/modules/serviceworkers/Response.cpp b/Source/modules/serviceworkers/Response.cpp
|
| index 8ca7b0519a698f900df9d8e965ad1115d9fb042a..25a8e5f90f23b130e73cb2fbdea931f9832d6779 100644
|
| --- a/Source/modules/serviceworkers/Response.cpp
|
| +++ b/Source/modules/serviceworkers/Response.cpp
|
| @@ -173,9 +173,9 @@ Response* Response::create(ExecutionContext* context, const WebServiceWorkerResp
|
| return r;
|
| }
|
|
|
| -Response* Response::create(const Response& copyFrom)
|
| +Response* Response::createClone(const Response& cloneFrom)
|
| {
|
| - Response* r = new Response(copyFrom);
|
| + Response* r = new Response(cloneFrom);
|
| r->suspendIfNeeded();
|
| return r;
|
| }
|
| @@ -235,7 +235,12 @@ Response* Response::clone(ExceptionState& exceptionState) const
|
| exceptionState.throwTypeError("Response body is already used");
|
| return nullptr;
|
| }
|
| - return Response::create(*this);
|
| + 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)
|
| @@ -251,10 +256,10 @@ Response::Response(ExecutionContext* context)
|
| m_headers->setGuard(Headers::ResponseGuard);
|
| }
|
|
|
| -Response::Response(const Response& copy_from)
|
| - : Body(copy_from)
|
| - , m_response(copy_from.m_response)
|
| - , m_headers(copy_from.m_headers->createCopy())
|
| +Response::Response(const Response& clone_from)
|
| + : Body(clone_from)
|
| + , m_response(clone_from.m_response->clone())
|
| + , m_headers(Headers::create(m_response->headerList()))
|
| {
|
| }
|
|
|
| @@ -266,12 +271,41 @@ Response::Response(ExecutionContext* context, FetchResponseData* response)
|
| m_headers->setGuard(Headers::ResponseGuard);
|
| }
|
|
|
| +bool Response::hasBody() const
|
| +{
|
| + return internalBlobDataHandle() || internalBuffer();
|
| +}
|
|
|
| -PassRefPtr<BlobDataHandle> Response::blobDataHandle()
|
| +PassRefPtr<BlobDataHandle> Response::blobDataHandle() const
|
| {
|
| return m_response->blobDataHandle();
|
| }
|
|
|
| +BodyStreamBuffer* Response::buffer() const
|
| +{
|
| + return m_response->buffer();
|
| +}
|
| +
|
| +String Response::contentType() const
|
| +{
|
| + return m_response->contentType();
|
| +}
|
| +
|
| +PassRefPtr<BlobDataHandle> Response::internalBlobDataHandle() const
|
| +{
|
| + return m_response->internalBlobDataHandle();
|
| +}
|
| +
|
| +BodyStreamBuffer* Response::internalBuffer() const
|
| +{
|
| + return m_response->internalBuffer();
|
| +}
|
| +
|
| +String Response::internalContentType() const
|
| +{
|
| + return m_response->internalContentType();
|
| +}
|
| +
|
| void Response::trace(Visitor* visitor)
|
| {
|
| Body::trace(visitor);
|
|
|