Index: Source/modules/fetch/Request.cpp |
diff --git a/Source/modules/fetch/Request.cpp b/Source/modules/fetch/Request.cpp |
index d0264b2d262275260b489057fd7e8f43c796760b..a22a72df424250ea8b67235dab49bb190f74d62c 100644 |
--- a/Source/modules/fetch/Request.cpp |
+++ b/Source/modules/fetch/Request.cpp |
@@ -42,6 +42,7 @@ FetchRequestData* createCopyOfFetchRequestDataForFetch(ScriptState* scriptState, |
request->setMode(original->mode()); |
request->setCredentials(original->credentials()); |
request->setRedirect(original->redirect()); |
+ request->setIntegrity(original->integrity()); |
// FIXME: Set cache mode. |
// TODO(yhirano): Set redirect mode. |
return request; |
@@ -159,9 +160,12 @@ Request* Request::createRequestWithRequestOrString(ScriptState* scriptState, Req |
// TODO(horo): "22. If |init|'s redirect member is present, set |request|'s |
// redirect mode to it." |
- // TODO(jww): "23. If |init|'s integrity member is present, set |request|'s |
+ // "If |init|'s integrity member is present, set |request|'s |
// integrity metadata to it." |
+ if (!init.integrity.isNull()) |
+ request->setIntegrity(init.integrity); |
+ |
// "24. If |init|'s method member is present, let |method| be it and run |
// these substeps:" |
if (!init.method.isNull()) { |
@@ -201,7 +205,13 @@ Request* Request::createRequestWithRequestOrString(ScriptState* scriptState, Req |
exceptionState.throwTypeError("'" + r->request()->method() + "' is unsupported in no-cors mode."); |
return nullptr; |
} |
- // "Set |r|'s Headers object's guard to |request-no-CORS|. |
+ // "2. If |request|'s integrity metadata is not the empty string, throw |
+ // a TypeError." |
+ if (!request->integrity().isEmpty()) { |
+ exceptionState.throwTypeError("The integrity attribute is unsupported in no-cors mode."); |
+ return nullptr; |
+ } |
+ // "3. Set |r|'s Headers object's guard to |request-no-CORS|. |
r->headers()->setGuard(Headers::RequestNoCORSGuard); |
} |
// "30. Fill |r|'s Headers object with |headers|. Rethrow any exceptions." |
@@ -477,6 +487,11 @@ String Request::redirect() const |
return ""; |
} |
+String Request::integrity() const |
+{ |
+ return m_request->integrity(); |
+} |
+ |
Request* Request::clone(ExceptionState& exceptionState) |
{ |
if (bodyUsed()) { |