Index: Source/modules/fetch/Request.cpp |
diff --git a/Source/modules/fetch/Request.cpp b/Source/modules/fetch/Request.cpp |
index 7d4223c09ba2756cbfd23e77ac3d5f9bae849501..830023c354a4805da7e9da4964140a6ab7a96127 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; |
@@ -166,8 +167,10 @@ Request* Request::createRequestWithRequestOrString(ScriptState* scriptState, Req |
request->setRedirect(WebURLRequest::FetchRedirectModeManual); |
} |
- // 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:" |
@@ -208,7 +211,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." |
@@ -486,6 +495,11 @@ String Request::redirect() const |
return ""; |
} |
+String Request::integrity() const |
+{ |
+ return m_request->integrity(); |
+} |
+ |
Request* Request::clone(ExceptionState& exceptionState) |
{ |
if (bodyUsed()) { |