OLD | NEW |
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 "modules/fetch/Request.h" | 6 #include "modules/fetch/Request.h" |
7 | 7 |
8 #include "bindings/core/v8/Dictionary.h" | 8 #include "bindings/core/v8/Dictionary.h" |
9 #include "core/dom/Document.h" | 9 #include "core/dom/Document.h" |
10 #include "core/dom/ExecutionContext.h" | 10 #include "core/dom/ExecutionContext.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 request->setURL(original->url()); | 27 request->setURL(original->url()); |
28 request->setMethod(original->method()); | 28 request->setMethod(original->method()); |
29 request->setHeaderList(original->headerList()->clone()); | 29 request->setHeaderList(original->headerList()->clone()); |
30 request->setUnsafeRequestFlag(true); | 30 request->setUnsafeRequestFlag(true); |
31 request->setBlobDataHandle(original->blobDataHandle()); | 31 request->setBlobDataHandle(original->blobDataHandle()); |
32 // FIXME: Set client. | 32 // FIXME: Set client. |
33 request->setOrigin(SecurityOrigin::create(context->url())); | 33 request->setOrigin(SecurityOrigin::create(context->url())); |
34 // FIXME: Set ForceOriginHeaderFlag. | 34 // FIXME: Set ForceOriginHeaderFlag. |
35 request->setSameOriginDataURLFlag(true); | 35 request->setSameOriginDataURLFlag(true); |
36 request->mutableReferrer()->setClient(); | 36 request->mutableReferrer()->setClient(); |
37 request->setContext(WebURLRequest::RequestContextFetch); | 37 request->setContext(original->context()); |
38 request->setMode(original->mode()); | 38 request->setMode(original->mode()); |
39 request->setCredentials(original->credentials()); | 39 request->setCredentials(original->credentials()); |
40 // FIXME: Set cache mode. | 40 // FIXME: Set cache mode. |
41 return request; | 41 return request; |
42 } | 42 } |
43 | 43 |
44 Request* Request::createRequestWithRequestOrString(ExecutionContext* context, Re
quest* inputRequest, const String& inputString, const RequestInit& init, Excepti
onState& exceptionState) | 44 Request* Request::createRequestWithRequestOrString(ExecutionContext* context, Re
quest* inputRequest, const String& inputString, const RequestInit& init, Excepti
onState& exceptionState) |
45 { | 45 { |
46 // "1. If input is a Request object, run these substeps:" | 46 // "1. If input is a Request object, run these substeps:" |
47 if (inputRequest) { | 47 if (inputRequest) { |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 KURL Request::url() const | 276 KURL Request::url() const |
277 { | 277 { |
278 // The url attribute's getter must return request's url, serialized with the
exclude fragment flag set. | 278 // The url attribute's getter must return request's url, serialized with the
exclude fragment flag set. |
279 if (!m_request->url().hasFragmentIdentifier()) | 279 if (!m_request->url().hasFragmentIdentifier()) |
280 return m_request->url(); | 280 return m_request->url(); |
281 KURL url(m_request->url()); | 281 KURL url(m_request->url()); |
282 url.removeFragmentIdentifier(); | 282 url.removeFragmentIdentifier(); |
283 return url; | 283 return url; |
284 } | 284 } |
285 | 285 |
| 286 String Request::context() const |
| 287 { |
| 288 // "The context attribute's getter must return request's context" |
| 289 switch (m_request->context()) { |
| 290 case WebURLRequest::RequestContextUnspecified: |
| 291 return ""; |
| 292 case WebURLRequest::RequestContextAudio: |
| 293 return "audio"; |
| 294 case WebURLRequest::RequestContextBeacon: |
| 295 return "beacon"; |
| 296 case WebURLRequest::RequestContextCSPReport: |
| 297 return "cspreport"; |
| 298 case WebURLRequest::RequestContextDownload: |
| 299 return "download"; |
| 300 case WebURLRequest::RequestContextEmbed: |
| 301 return "embed"; |
| 302 case WebURLRequest::RequestContextEventSource: |
| 303 return "eventsource"; |
| 304 case WebURLRequest::RequestContextFavicon: |
| 305 return "favicon"; |
| 306 case WebURLRequest::RequestContextFetch: |
| 307 return "fetch"; |
| 308 case WebURLRequest::RequestContextFont: |
| 309 return "font"; |
| 310 case WebURLRequest::RequestContextForm: |
| 311 return "form"; |
| 312 case WebURLRequest::RequestContextFrame: |
| 313 return "frame"; |
| 314 case WebURLRequest::RequestContextHyperlink: |
| 315 return "hyperlink"; |
| 316 case WebURLRequest::RequestContextIframe: |
| 317 return "iframe"; |
| 318 case WebURLRequest::RequestContextImage: |
| 319 return "image"; |
| 320 case WebURLRequest::RequestContextImageSet: |
| 321 return "imageset"; |
| 322 case WebURLRequest::RequestContextImport: |
| 323 return "import"; |
| 324 case WebURLRequest::RequestContextInternal: |
| 325 return "internal"; |
| 326 case WebURLRequest::RequestContextLocation: |
| 327 return "location"; |
| 328 case WebURLRequest::RequestContextManifest: |
| 329 return "manifest"; |
| 330 case WebURLRequest::RequestContextObject: |
| 331 return "object"; |
| 332 case WebURLRequest::RequestContextPing: |
| 333 return "ping"; |
| 334 case WebURLRequest::RequestContextPlugin: |
| 335 return "plugin"; |
| 336 case WebURLRequest::RequestContextPrefetch: |
| 337 return "prefetch"; |
| 338 case WebURLRequest::RequestContextScript: |
| 339 return "script"; |
| 340 case WebURLRequest::RequestContextServiceWorker: |
| 341 return "serviceworker"; |
| 342 case WebURLRequest::RequestContextSharedWorker: |
| 343 return "sharedworker"; |
| 344 case WebURLRequest::RequestContextSubresource: |
| 345 return "subresource"; |
| 346 case WebURLRequest::RequestContextStyle: |
| 347 return "style"; |
| 348 case WebURLRequest::RequestContextTrack: |
| 349 return "track"; |
| 350 case WebURLRequest::RequestContextVideo: |
| 351 return "video"; |
| 352 case WebURLRequest::RequestContextWorker: |
| 353 return "worker"; |
| 354 case WebURLRequest::RequestContextXMLHttpRequest: |
| 355 return "xmlhttprequest"; |
| 356 case WebURLRequest::RequestContextXSLT: |
| 357 return "xslt"; |
| 358 } |
| 359 ASSERT_NOT_REACHED(); |
| 360 return ""; |
| 361 } |
| 362 |
286 String Request::referrer() const | 363 String Request::referrer() const |
287 { | 364 { |
288 // "The referrer attribute's getter must return the empty string if | 365 // "The referrer attribute's getter must return the empty string if |
289 // request's referrer is no referrer, "about:client" if request's referrer | 366 // request's referrer is no referrer, "about:client" if request's referrer |
290 // is client and request's referrer, serialized, otherwise." | 367 // is client and request's referrer, serialized, otherwise." |
291 if (m_request->referrer().isNoReferrer()) | 368 if (m_request->referrer().isNoReferrer()) |
292 return String(); | 369 return String(); |
293 if (m_request->referrer().isClient()) | 370 if (m_request->referrer().isClient()) |
294 return String("about:client"); | 371 return String("about:client"); |
295 return m_request->referrer().referrer().referrer; | 372 return m_request->referrer().referrer().referrer; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 FetchRequestData* Request::passRequestData() | 424 FetchRequestData* Request::passRequestData() |
348 { | 425 { |
349 ASSERT(!bodyUsed()); | 426 ASSERT(!bodyUsed()); |
350 setBodyUsed(); | 427 setBodyUsed(); |
351 return m_request->pass(); | 428 return m_request->pass(); |
352 } | 429 } |
353 | 430 |
354 void Request::populateWebServiceWorkerRequest(WebServiceWorkerRequest& webReques
t) const | 431 void Request::populateWebServiceWorkerRequest(WebServiceWorkerRequest& webReques
t) const |
355 { | 432 { |
356 webRequest.setMethod(method()); | 433 webRequest.setMethod(method()); |
| 434 webRequest.setRequestContext(m_request->context()); |
357 // This strips off the fragment part. | 435 // This strips off the fragment part. |
358 webRequest.setURL(url()); | 436 webRequest.setURL(url()); |
359 | 437 |
360 const FetchHeaderList* headerList = m_headers->headerList(); | 438 const FetchHeaderList* headerList = m_headers->headerList(); |
361 for (size_t i = 0, size = headerList->size(); i < size; ++i) { | 439 for (size_t i = 0, size = headerList->size(); i < size; ++i) { |
362 const FetchHeaderList::Header& header = headerList->entry(i); | 440 const FetchHeaderList::Header& header = headerList->entry(i); |
363 webRequest.appendHeader(header.first, header.second); | 441 webRequest.appendHeader(header.first, header.second); |
364 } | 442 } |
365 | 443 |
366 webRequest.setReferrer(m_request->referrer().referrer().referrer, static_cas
t<WebReferrerPolicy>(m_request->referrer().referrer().referrerPolicy)); | 444 webRequest.setReferrer(m_request->referrer().referrer().referrer, static_cas
t<WebReferrerPolicy>(m_request->referrer().referrer().referrerPolicy)); |
(...skipping 28 matching lines...) Expand all Loading... |
395 } | 473 } |
396 | 474 |
397 DEFINE_TRACE(Request) | 475 DEFINE_TRACE(Request) |
398 { | 476 { |
399 Body::trace(visitor); | 477 Body::trace(visitor); |
400 visitor->trace(m_request); | 478 visitor->trace(m_request); |
401 visitor->trace(m_headers); | 479 visitor->trace(m_headers); |
402 } | 480 } |
403 | 481 |
404 } // namespace blink | 482 } // namespace blink |
OLD | NEW |