Index: third_party/WebKit/Source/modules/fetch/Request.cpp |
diff --git a/third_party/WebKit/Source/modules/fetch/Request.cpp b/third_party/WebKit/Source/modules/fetch/Request.cpp |
index 5db7648fc618dc5a97b6b56c8e60dc2fd44edc7b..3189fd5552e3bff89f7b1060d4f8fdc12d3caad3 100644 |
--- a/third_party/WebKit/Source/modules/fetch/Request.cpp |
+++ b/third_party/WebKit/Source/modules/fetch/Request.cpp |
@@ -120,15 +120,23 @@ Request* Request::createRequestWithRequestOrString(ScriptState* scriptState, Req |
// We don't use fallback values. We set these flags directly in below. |
} |
- // 14. If any of |init|'s members are present, set |request|'s referrer |
- // to client, and |request|'s referrer policy to the empty string. |
- // => RequestInit::RequestInit. |
+ // "14. If any of |init|'s members are present, run these substeps:" |
+ if (init.areAnyMembersSet) { |
+ // "1. If request's |mode| is "navigate", throw a TypeError." |
+ if (request->mode() == WebURLRequest::FetchRequestModeNavigate) { |
+ exceptionState.throwTypeError("Cannot construct a Request with a Request mode as navigate."); |
hiroshige
2015/10/30 12:31:30
Making the message here and L177 will be better.
shiva.jm
2015/11/02 12:06:20
Done.
|
+ return nullptr; |
+ } |
+ } |
+ |
// 15. If |init|'s referrer member is present, run these substeps: |
// Note that JS null and undefined are encoded as an empty string and thus |
// a null string means referrer member is not set. |
// 16. If |init|'s referrerPolicy member is present, set |request|'s |
// referrer policy to it. |
- if (init.isReferrerSet) { |
+ // areAnyMembersSet will be True, if any members in RequestInit are set and |
hiroshige
2015/10/30 12:31:30
nit: This comment (L137-138) is not needed.
IIUC
yhirano
2015/10/30 13:18:41
- If no member is set on |init| => use |request|'s
shiva.jm
2015/11/02 12:06:20
These comment is needed, as discussed in:
https://
shiva.jm
2015/11/02 12:06:20
Done, retained old comment, after line 129 in new
|
+ // hence the referrer member |
+ if (init.areAnyMembersSet) { |
// 1. Let |referrer| be |init|'s referrer member. |
if (init.referrer.referrer.isEmpty()) { |
// 2. if |referrer| is the empty string, set |request|'s referrer to |
@@ -161,10 +169,14 @@ Request* Request::createRequestWithRequestOrString(ScriptState* scriptState, Req |
request->setReferrerPolicy(init.referrer.referrerPolicy); |
} |
- |
- // "17. Let |mode| be |init|'s mode member if it is present, and |
+ // "16. Let |mode| be |init|'s mode member if it is present, and |
// |fallbackMode| otherwise." |
+ // "17.If mode is "navigate", throw a TypeError. |
hiroshige
2015/10/30 12:31:30
nit: a space between "17." and "If".
shiva.jm
2015/11/02 12:06:20
Done.
|
// "18. If |mode| is non-null, set |request|'s mode to |mode|." |
+ if (init.mode == "navigate") { |
+ exceptionState.throwTypeError("Cannot construct a Request with a Request mode as navigate."); |
+ return nullptr; |
+ } |
if (init.mode == "same-origin") { |
request->setMode(WebURLRequest::FetchRequestModeSameOrigin); |
} else if (init.mode == "no-cors") { |
@@ -497,6 +509,8 @@ String Request::mode() const |
case WebURLRequest::FetchRequestModeCORS: |
case WebURLRequest::FetchRequestModeCORSWithForcedPreflight: |
return "cors"; |
+ case WebURLRequest::FetchRequestModeNavigate: |
+ return "navigate"; |
} |
ASSERT_NOT_REACHED(); |
return ""; |