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

Side by Side Diff: Source/modules/serviceworkers/Request.cpp

Issue 706543002: [ServiceWorker] Stop using FetchRequestData::Mode and FetchRequestData::Credentials. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 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 unified diff | Download patch
« no previous file with comments | « Source/modules/serviceworkers/Request.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "Request.h" 6 #include "Request.h"
7 7
8 #include "bindings/core/v8/Dictionary.h" 8 #include "bindings/core/v8/Dictionary.h"
9 #include "core/dom/ExecutionContext.h" 9 #include "core/dom/ExecutionContext.h"
10 #include "core/fetch/FetchUtils.h" 10 #include "core/fetch/FetchUtils.h"
11 #include "core/fetch/ResourceLoaderOptions.h" 11 #include "core/fetch/ResourceLoaderOptions.h"
12 #include "core/loader/ThreadableLoader.h" 12 #include "core/loader/ThreadableLoader.h"
13 #include "modules/serviceworkers/FetchManager.h" 13 #include "modules/serviceworkers/FetchManager.h"
14 #include "modules/serviceworkers/RequestInit.h" 14 #include "modules/serviceworkers/RequestInit.h"
15 #include "platform/network/HTTPParsers.h" 15 #include "platform/network/HTTPParsers.h"
16 #include "platform/network/ResourceRequest.h" 16 #include "platform/network/ResourceRequest.h"
17 #include "platform/weborigin/Referrer.h" 17 #include "platform/weborigin/Referrer.h"
18 #include "public/platform/WebServiceWorkerRequest.h" 18 #include "public/platform/WebServiceWorkerRequest.h"
19 #include "public/platform/WebURLRequest.h"
19 20
20 namespace blink { 21 namespace blink {
21 22
22 Request* Request::createRequestWithRequestData(ExecutionContext* context, FetchR equestData* request, const RequestInit& init, FetchRequestData::Mode mode, Fetch RequestData::Credentials credentials, ExceptionState& exceptionState) 23 Request* Request::createRequestWithRequestData(ExecutionContext* context, FetchR equestData* request, const RequestInit& init, WebURLRequest::FetchRequestMode mo de, WebURLRequest::FetchCredentialsMode credentials, ExceptionState& exceptionSt ate)
23 { 24 {
24 // "7. Let |mode| be |init|'s mode member if it is present, and 25 // "7. Let |mode| be |init|'s mode member if it is present, and
25 // |fallbackMode| otherwise." 26 // |fallbackMode| otherwise."
26 // "8. If |mode| is non-null, set |request|'s mode to |mode|." 27 // "8. If |mode| is non-null, set |request|'s mode to |mode|."
27 if (init.mode == "same-origin") { 28 if (init.mode == "same-origin") {
28 request->setMode(FetchRequestData::SameOriginMode); 29 request->setMode(WebURLRequest::FetchRequestModeSameOrigin);
29 } else if (init.mode == "no-cors") { 30 } else if (init.mode == "no-cors") {
30 request->setMode(mode = FetchRequestData::NoCORSMode); 31 request->setMode(mode = WebURLRequest::FetchRequestModeNoCORS);
31 } else if (init.mode == "cors") { 32 } else if (init.mode == "cors") {
32 request->setMode(FetchRequestData::CORSMode); 33 request->setMode(WebURLRequest::FetchRequestModeCORS);
33 } else { 34 } else {
34 // Instead of using null as a special fallback value, we pass the 35 // Instead of using null as a special fallback value, we pass the
35 // current mode in Request::create(). So we just set here. 36 // current mode in Request::create(). So we just set here.
36 request->setMode(mode); 37 request->setMode(mode);
37 } 38 }
38 39
39 // "9. Let |credentials| be |init|'s credentials member if it is present, 40 // "9. Let |credentials| be |init|'s credentials member if it is present,
40 // and |fallbackCredentials| otherwise." 41 // and |fallbackCredentials| otherwise."
41 // "10. If |credentials| is non-null, set |request|'s credentials mode to 42 // "10. If |credentials| is non-null, set |request|'s credentials mode to
42 // |credentials|. 43 // |credentials|.
43 if (init.credentials == "omit") { 44 if (init.credentials == "omit") {
44 request->setCredentials(FetchRequestData::OmitCredentials); 45 request->setCredentials(WebURLRequest::FetchCredentialsModeOmit);
45 } else if (init.credentials == "same-origin") { 46 } else if (init.credentials == "same-origin") {
46 request->setCredentials(FetchRequestData::SameOriginCredentials); 47 request->setCredentials(WebURLRequest::FetchCredentialsModeSameOrigin);
47 } else if (init.credentials == "include") { 48 } else if (init.credentials == "include") {
48 request->setCredentials(FetchRequestData::IncludeCredentials); 49 request->setCredentials(WebURLRequest::FetchCredentialsModeInclude);
49 } else { 50 } else {
50 // Instead of using null as a special fallback value, we pass the 51 // Instead of using null as a special fallback value, we pass the
51 // current credentials in Request::create(). So we just set here. 52 // current credentials in Request::create(). So we just set here.
52 request->setCredentials(credentials); 53 request->setCredentials(credentials);
53 } 54 }
54 55
55 // "11. If |init|'s method member is present, let |method| be it and run 56 // "11. If |init|'s method member is present, let |method| be it and run
56 // these substeps:" 57 // these substeps:"
57 if (!init.method.isEmpty()) { 58 if (!init.method.isEmpty()) {
58 // "1. If |method| is not a useful method, throw a TypeError." 59 // "1. If |method| is not a useful method, throw a TypeError."
(...skipping 19 matching lines...) Expand all
78 // We don't create a copy of r's Headers object when init's headers member 79 // We don't create a copy of r's Headers object when init's headers member
79 // is present. 80 // is present.
80 Headers* headers = 0; 81 Headers* headers = 0;
81 if (!init.headers && init.headersDictionary.isUndefinedOrNull()) { 82 if (!init.headers && init.headersDictionary.isUndefinedOrNull()) {
82 headers = r->headers()->createCopy(); 83 headers = r->headers()->createCopy();
83 } 84 }
84 // "15. Empty |r|'s request's header list." 85 // "15. Empty |r|'s request's header list."
85 r->clearHeaderList(); 86 r->clearHeaderList();
86 87
87 // "16. If |r|'s request's mode is no CORS, run these substeps: 88 // "16. If |r|'s request's mode is no CORS, run these substeps:
88 if (r->request()->mode() == FetchRequestData::NoCORSMode) { 89 if (r->request()->mode() == WebURLRequest::FetchRequestModeNoCORS) {
89 // "1. If |r|'s request's method is not a simple method, throw a 90 // "1. If |r|'s request's method is not a simple method, throw a
90 // TypeError." 91 // TypeError."
91 if (!FetchUtils::isSimpleMethod(r->request()->method())) { 92 if (!FetchUtils::isSimpleMethod(r->request()->method())) {
92 exceptionState.throwTypeError("'" + r->request()->method() + "' is u nsupported in no-cors mode."); 93 exceptionState.throwTypeError("'" + r->request()->method() + "' is u nsupported in no-cors mode.");
93 return 0; 94 return 0;
94 } 95 }
95 // "Set |r|'s Headers object's guard to |request-no-CORS|. 96 // "Set |r|'s Headers object's guard to |request-no-CORS|.
96 r->headers()->setGuard(Headers::RequestNoCORSGuard); 97 r->headers()->setGuard(Headers::RequestNoCORSGuard);
97 } 98 }
98 99
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 KURL parsedURL = context->completeURL(input); 151 KURL parsedURL = context->completeURL(input);
151 // "2. If |parsedURL| is failure, throw a TypeError." 152 // "2. If |parsedURL| is failure, throw a TypeError."
152 if (!parsedURL.isValid()) { 153 if (!parsedURL.isValid()) {
153 exceptionState.throwTypeError("Invalid URL"); 154 exceptionState.throwTypeError("Invalid URL");
154 return 0; 155 return 0;
155 } 156 }
156 // "3. Set |request|'s url to |parsedURL|." 157 // "3. Set |request|'s url to |parsedURL|."
157 request->setURL(parsedURL); 158 request->setURL(parsedURL);
158 // "4. Set |fallbackMode| to CORS." 159 // "4. Set |fallbackMode| to CORS."
159 // "5. Set |fallbackCredentials| to omit." 160 // "5. Set |fallbackCredentials| to omit."
160 return createRequestWithRequestData(context, request, RequestInit(context, i nit, exceptionState), FetchRequestData::CORSMode, FetchRequestData::OmitCredenti als, exceptionState); 161 return createRequestWithRequestData(context, request, RequestInit(context, i nit, exceptionState), WebURLRequest::FetchRequestModeCORS, WebURLRequest::FetchC redentialsModeOmit, exceptionState);
161 } 162 }
162 163
163 Request* Request::create(ExecutionContext* context, Request* input, ExceptionSta te& exceptionState) 164 Request* Request::create(ExecutionContext* context, Request* input, ExceptionSta te& exceptionState)
164 { 165 {
165 return create(context, input, Dictionary(), exceptionState); 166 return create(context, input, Dictionary(), exceptionState);
166 } 167 }
167 168
168 Request* Request::create(ExecutionContext* context, Request* input, const Dictio nary& init, ExceptionState& exceptionState) 169 Request* Request::create(ExecutionContext* context, Request* input, const Dictio nary& init, ExceptionState& exceptionState)
169 { 170 {
170 // "1. If input is a Request object, run these substeps:" 171 // "1. If input is a Request object, run these substeps:"
171 // " 1. If input's used flag is set, throw a TypeError." 172 // " 1. If input's used flag is set, throw a TypeError."
172 // " 2. Set input's used flag." 173 // " 2. Set input's used flag."
173 if (input->bodyUsed()) { 174 if (input->bodyUsed()) {
174 exceptionState.throwTypeError( 175 exceptionState.throwTypeError(
175 "Cannot construct a Request with a Request object that has already b een used."); 176 "Cannot construct a Request with a Request object that has already b een used.");
176 return 0; 177 return 0;
177 } 178 }
178 input->setBodyUsed(); 179 input->setBodyUsed();
179 // "2. Let |request| be |input|'s associated request, if |input| is a 180 // "2. Let |request| be |input|'s associated request, if |input| is a
180 // Request object, and a new request otherwise." 181 // Request object, and a new request otherwise."
181 // "3. Set |request| to a restricted copy of itself." 182 // "3. Set |request| to a restricted copy of itself."
182 FetchRequestData* request(input->request()->createRestrictedCopy(context, Se curityOrigin::create(context->url()))); 183 FetchRequestData* request(input->request()->createRestrictedCopy(context, Se curityOrigin::create(context->url())));
183 // "4. Let |fallbackMode| be null." 184 // "4. Let |fallbackMode| be null."
184 // "5. Let |fallbackCredentials| be null." 185 // "5. Let |fallbackCredentials| be null."
185 // Instead of using null as a special fallback value, just pass the current 186 // Instead of using null as a special fallback value, just pass the current
186 // mode and credentials; it has the same effect. 187 // mode and credentials; it has the same effect.
187 const FetchRequestData::Mode currentMode = request->mode(); 188 const WebURLRequest::FetchRequestMode currentMode = request->mode();
188 const FetchRequestData::Credentials currentCredentials = request->credential s(); 189 const WebURLRequest::FetchCredentialsMode currentCredentials = request->cred entials();
189 return createRequestWithRequestData(context, request, RequestInit(context, i nit, exceptionState), currentMode, currentCredentials, exceptionState); 190 return createRequestWithRequestData(context, request, RequestInit(context, i nit, exceptionState), currentMode, currentCredentials, exceptionState);
190 } 191 }
191 192
192 Request* Request::create(ExecutionContext* context, FetchRequestData* request) 193 Request* Request::create(ExecutionContext* context, FetchRequestData* request)
193 { 194 {
194 Request* r = new Request(context, request); 195 Request* r = new Request(context, request);
195 r->suspendIfNeeded(); 196 r->suspendIfNeeded();
196 return r; 197 return r;
197 } 198 }
198 199
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 // request's referrer is none, and request's referrer, serialized, 257 // request's referrer is none, and request's referrer, serialized,
257 // otherwise." 258 // otherwise."
258 return m_request->referrer().referrer().referrer; 259 return m_request->referrer().referrer().referrer;
259 } 260 }
260 261
261 String Request::mode() const 262 String Request::mode() const
262 { 263 {
263 // "The mode attribute's getter must return the value corresponding to the 264 // "The mode attribute's getter must return the value corresponding to the
264 // first matching statement, switching on request's mode:" 265 // first matching statement, switching on request's mode:"
265 switch (m_request->mode()) { 266 switch (m_request->mode()) {
266 case FetchRequestData::SameOriginMode: 267 case WebURLRequest::FetchRequestModeSameOrigin:
267 return "same-origin"; 268 return "same-origin";
268 case FetchRequestData::NoCORSMode: 269 case WebURLRequest::FetchRequestModeNoCORS:
269 return "no-cors"; 270 return "no-cors";
270 case FetchRequestData::CORSMode: 271 case WebURLRequest::FetchRequestModeCORS:
271 case FetchRequestData::CORSWithForcedPreflight: 272 case WebURLRequest::FetchRequestModeCORSWithForcedPreflight:
272 return "cors"; 273 return "cors";
273 } 274 }
274 ASSERT_NOT_REACHED(); 275 ASSERT_NOT_REACHED();
275 return ""; 276 return "";
276 } 277 }
277 278
278 String Request::credentials() const 279 String Request::credentials() const
279 { 280 {
280 // "The credentials attribute's getter must return the value corresponding 281 // "The credentials attribute's getter must return the value corresponding
281 // to the first matching statement, switching on request's credentials 282 // to the first matching statement, switching on request's credentials
282 // mode:" 283 // mode:"
283 switch (m_request->credentials()) { 284 switch (m_request->credentials()) {
284 case FetchRequestData::OmitCredentials: 285 case WebURLRequest::FetchCredentialsModeOmit:
285 return "omit"; 286 return "omit";
286 case FetchRequestData::SameOriginCredentials: 287 case WebURLRequest::FetchCredentialsModeSameOrigin:
287 return "same-origin"; 288 return "same-origin";
288 case FetchRequestData::IncludeCredentials: 289 case WebURLRequest::FetchCredentialsModeInclude:
289 return "include"; 290 return "include";
290 } 291 }
291 ASSERT_NOT_REACHED(); 292 ASSERT_NOT_REACHED();
292 return ""; 293 return "";
293 } 294 }
294 295
295 Request* Request::clone() const 296 Request* Request::clone() const
296 { 297 {
297 return Request::create(*this); 298 return Request::create(*this);
298 } 299 }
(...skipping 30 matching lines...) Expand all
329 } 330 }
330 331
331 void Request::trace(Visitor* visitor) 332 void Request::trace(Visitor* visitor)
332 { 333 {
333 Body::trace(visitor); 334 Body::trace(visitor);
334 visitor->trace(m_request); 335 visitor->trace(m_request);
335 visitor->trace(m_headers); 336 visitor->trace(m_headers);
336 } 337 }
337 338
338 } // namespace blink 339 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/serviceworkers/Request.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698