| Index: Source/modules/serviceworkers/Request.cpp
|
| diff --git a/Source/modules/serviceworkers/Request.cpp b/Source/modules/serviceworkers/Request.cpp
|
| index 228183ab44e1f76190ec19d5d79be7e9cc30d7fc..71744fbad68a3ff3b7138ff56ae12c08e44b03b6 100644
|
| --- a/Source/modules/serviceworkers/Request.cpp
|
| +++ b/Source/modules/serviceworkers/Request.cpp
|
| @@ -194,12 +194,21 @@ Request* Request::create(ExecutionContext* context, Request* input, ExceptionSta
|
|
|
| Request* Request::create(ExecutionContext* context, Request* input, const Dictionary& init, ExceptionState& exceptionState)
|
| {
|
| - // "1. Let |request| be |input|'s associated request, if |input| is a
|
| + // "1. If input is a Request object, run these substeps:"
|
| + // " 1. If input's used flag is set, throw a TypeError."
|
| + // " 2. Set input's used flag."
|
| + if (input->bodyUsed()) {
|
| + exceptionState.throwTypeError(
|
| + "Cannot construct a Request with a Request object that has already been used.");
|
| + return 0;
|
| + }
|
| + input->setUsed();
|
| + // "2. Let |request| be |input|'s associated request, if |input| is a
|
| // Request object, and a new request otherwise."
|
| - // "2. Set |request| to a restricted copy of itself."
|
| + // "3. Set |request| to a restricted copy of itself."
|
| FetchRequestData* request(input->request()->createRestrictedCopy(context, SecurityOrigin::create(context->url())));
|
| - // "3. Let |fallbackMode| be null."
|
| - // "4. Let |fallbackCredentials| be null."
|
| + // "4. Let |fallbackMode| be null."
|
| + // "5. Let |fallbackCredentials| be null."
|
| // Instead of using null as a special fallback value, just pass the current
|
| // mode and credentials; it has the same effect.
|
| const FetchRequestData::Mode currentMode = request->mode();
|
|
|