Index: Source/modules/serviceworkers/Request.cpp |
diff --git a/Source/modules/serviceworkers/Request.cpp b/Source/modules/serviceworkers/Request.cpp |
index 7ad7f6f674fd0648261e8d786a1531a5e44095de..228183ab44e1f76190ec19d5d79be7e9cc30d7fc 100644 |
--- a/Source/modules/serviceworkers/Request.cpp |
+++ b/Source/modules/serviceworkers/Request.cpp |
@@ -44,7 +44,7 @@ private: |
WebServiceWorkerRequest* m_webRequest; |
}; |
-Request* createRequestWithRequestData(FetchRequestData* request, const RequestInit& init, FetchRequestData::Mode mode, FetchRequestData::Credentials credentials, ExceptionState& exceptionState) |
+Request* createRequestWithRequestData(ExecutionContext* context, FetchRequestData* request, const RequestInit& init, FetchRequestData::Mode mode, FetchRequestData::Credentials credentials, ExceptionState& exceptionState) |
{ |
// "6. Let |mode| be |init|'s mode member if it is present, and |
// |fallbackMode| otherwise." |
@@ -94,8 +94,8 @@ Request* createRequestWithRequestData(FetchRequestData* request, const RequestIn |
request->setMethod(XMLHttpRequest::uppercaseKnownHTTPMethod(AtomicString(init.method))); |
} |
// "11. Let |r| be a new Request object associated with |request|, Headers |
- // object, and FetchBodyStream object." |
- Request* r = Request::create(request); |
+ // object." |
+ Request* r = Request::create(context, request); |
// "12. Let |headers| be a copy of |r|'s Headers object." |
// "13. If |init|'s headers member is present, set |headers| to |init|'s |
@@ -149,9 +149,9 @@ Request* createRequestWithRequestData(FetchRequestData* request, const RequestIn |
if (exceptionState.hadException()) |
return 0; |
} |
- // "18. Set |r|'s FetchBodyStream object's MIME type to the result of |
- // extracting a MIME type from |r|'s request's header list." |
- // FIXME: We don't have MIME type in FetchBodyStream object yet. |
+ // "18. Set |r|'s MIME type to the result of extracting a MIME type from |
+ // |r|'s request's header list." |
+ // FIXME: We don't have MIME type in Request object yet. |
// "19. Return |r|." |
return r; |
@@ -184,7 +184,7 @@ Request* Request::create(ExecutionContext* context, const String& input, const D |
request->setURL(parsedURL); |
// "4. Set |fallbackMode| to CORS." |
// "5. Set |fallbackCredentials| to omit." |
- return createRequestWithRequestData(request, RequestInit(context, init, exceptionState), FetchRequestData::CORSMode, FetchRequestData::OmitCredentials, exceptionState); |
+ return createRequestWithRequestData(context, request, RequestInit(context, init, exceptionState), FetchRequestData::CORSMode, FetchRequestData::OmitCredentials, exceptionState); |
} |
Request* Request::create(ExecutionContext* context, Request* input, ExceptionState& exceptionState) |
@@ -204,28 +204,34 @@ Request* Request::create(ExecutionContext* context, Request* input, const Dictio |
// mode and credentials; it has the same effect. |
const FetchRequestData::Mode currentMode = request->mode(); |
const FetchRequestData::Credentials currentCredentials = request->credentials(); |
- return createRequestWithRequestData(request, RequestInit(context, init, exceptionState), currentMode, currentCredentials, exceptionState); |
+ return createRequestWithRequestData(context, request, RequestInit(context, init, exceptionState), currentMode, currentCredentials, exceptionState); |
} |
-Request* Request::create(FetchRequestData* request) |
+Request* Request::create(ExecutionContext* context, FetchRequestData* request) |
{ |
- return new Request(request); |
+ Request* r = new Request(context, request); |
+ r->suspendIfNeeded(); |
+ return r; |
} |
-Request::Request(FetchRequestData* request) |
- : m_request(request) |
+Request::Request(ExecutionContext* context, FetchRequestData* request) |
+ : Body(context) |
+ , m_request(request) |
, m_headers(Headers::create(m_request->headerList())) |
{ |
m_headers->setGuard(Headers::RequestGuard); |
} |
-Request* Request::create(const WebServiceWorkerRequest& webRequest) |
+Request* Request::create(ExecutionContext* context, const WebServiceWorkerRequest& webRequest) |
{ |
- return new Request(webRequest); |
+ Request* r = new Request(context, webRequest); |
+ r->suspendIfNeeded(); |
+ return r; |
} |
-Request::Request(const WebServiceWorkerRequest& webRequest) |
- : m_request(FetchRequestData::create(webRequest)) |
+Request::Request(ExecutionContext* context, const WebServiceWorkerRequest& webRequest) |
+ : Body(context) |
+ , m_request(FetchRequestData::create(webRequest)) |
, m_headers(Headers::create(m_request->headerList())) |
{ |
m_headers->setGuard(Headers::RequestGuard); |
@@ -247,16 +253,6 @@ String Request::url() const |
return url; |
} |
-FetchBodyStream* Request::body(ExecutionContext* context) |
-{ |
- if (!m_request->blobDataHandle()) |
- return 0; |
- if (!m_fetchBodyStream) |
- m_fetchBodyStream = FetchBodyStream::create(context, m_request->blobDataHandle()); |
- return m_fetchBodyStream; |
-} |
- |
- |
String Request::referrer() const |
{ |
// "The referrer attribute's getter must return the empty string if |
@@ -309,16 +305,21 @@ void Request::populateWebServiceWorkerRequest(WebServiceWorkerRequest& webReques |
// to plumb this information in to here. |
} |
-void Request::setBodyBlobHandle(PassRefPtr<BlobDataHandle>blobHandle) |
+void Request::setBodyBlobHandle(PassRefPtr<BlobDataHandle> blobDataHandle) |
+{ |
+ m_request->setBlobDataHandle(blobDataHandle); |
+} |
+ |
+PassRefPtr<BlobDataHandle> Request::blobDataHandle() |
{ |
- m_request->setBlobDataHandle(blobHandle); |
+ return m_request->blobDataHandle(); |
} |
void Request::trace(Visitor* visitor) |
{ |
+ Body::trace(visitor); |
visitor->trace(m_request); |
visitor->trace(m_headers); |
- visitor->trace(m_fetchBodyStream); |
} |
} // namespace blink |