| Index: Source/modules/serviceworkers/Cache.cpp
|
| diff --git a/Source/modules/serviceworkers/Cache.cpp b/Source/modules/serviceworkers/Cache.cpp
|
| index 4865a28ab56332a18b65b72754e9b9a593ae1261..475187ec91e345a82409fc4b0f16ead1090c44d2 100644
|
| --- a/Source/modules/serviceworkers/Cache.cpp
|
| +++ b/Source/modules/serviceworkers/Cache.cpp
|
| @@ -303,13 +303,22 @@ ScriptPromise Cache::deleteImpl(ScriptState* scriptState, const Request* request
|
| return promise;
|
| }
|
|
|
| -ScriptPromise Cache::putImpl(ScriptState* scriptState, const Request* request, Response* response)
|
| +ScriptPromise Cache::putImpl(ScriptState* scriptState, Request* request, Response* response)
|
| {
|
| KURL url(KURL(), request->url());
|
| if (!url.protocolIsInHTTPFamily())
|
| return ScriptPromise::reject(scriptState, V8ThrowException::createTypeError(scriptState->isolate(), "Request scheme '" + url.protocol() + "' is unsupported"));
|
| if (request->method() != "GET")
|
| return ScriptPromise::reject(scriptState, V8ThrowException::createTypeError(scriptState->isolate(), "Request method '" + request->method() + "' is unsupported"));
|
| + if (request->hasBody() && request->bodyUsed())
|
| + return ScriptPromise::reject(scriptState, V8ThrowException::createTypeError(scriptState->isolate(), "Request body is already used"));
|
| + if (response->hasBody() && response->bodyUsed())
|
| + return ScriptPromise::reject(scriptState, V8ThrowException::createTypeError(scriptState->isolate(), "Response body is already used"));
|
| +
|
| + if (request->hasBody())
|
| + request->setBodyUsed();
|
| + if (response->hasBody())
|
| + response->setBodyUsed();
|
|
|
| WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1));
|
| batchOperations[0].operationType = WebServiceWorkerCache::OperationTypePut;
|
|
|