Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(899)

Unified Diff: third_party/WebKit/Source/modules/fetch/Request.cpp

Issue 1391583002: Introduce "navigate" mode in Requests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..864982cb2b9dc3abc48d5334ba99ae6bcce0fad0 100644
--- a/third_party/WebKit/Source/modules/fetch/Request.cpp
+++ b/third_party/WebKit/Source/modules/fetch/Request.cpp
@@ -120,15 +120,27 @@ 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 from a Request having mode set as 'navigate' with RequestInit members being set and mode 'navigate' cannot be specified in Request constructor.");
yhirano 2015/11/06 07:50:24 [optional] "Cannot construct a Request with a Requ
shiva.jm 2015/11/09 07:15:47 Done.
+ return nullptr;
+ }
+ // "2. Unset |request|'s omit-Origin-header flag."
+ // "3. Set |request|'s referrer to "client"."
+ // "4. Set |request|'s referrer policy to the empty string."
+ // => RequestInit::RequestInit.
+ }
+
// 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
+ // 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 +173,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.
// "18. If |mode| is non-null, set |request|'s mode to |mode|."
+ if (init.mode == "navigate") {
+ exceptionState.throwTypeError("Cannot construct a Request from a Request having mode set as 'navigate' with RequestInit members being set and mode 'navigate' cannot be specified in Request constructor.");
yhirano 2015/11/06 07:50:24 "Cannot construct a Request with a RequestInit who
shiva.jm 2015/11/09 07:15:47 Done.
+ return nullptr;
+ }
if (init.mode == "same-origin") {
request->setMode(WebURLRequest::FetchRequestModeSameOrigin);
} else if (init.mode == "no-cors") {
@@ -497,6 +513,8 @@ String Request::mode() const
case WebURLRequest::FetchRequestModeCORS:
case WebURLRequest::FetchRequestModeCORSWithForcedPreflight:
return "cors";
+ case WebURLRequest::FetchRequestModeNavigate:
+ return "navigate";
}
ASSERT_NOT_REACHED();
return "";

Powered by Google App Engine
This is Rietveld 408576698