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/FetchRequestData.h" | 6 #include "modules/fetch/FetchRequestData.h" |
7 | 7 |
8 #include "core/dom/ExecutionContext.h" | 8 #include "core/dom/ExecutionContext.h" |
9 #include "core/fetch/ResourceLoaderOptions.h" | 9 #include "core/fetch/ResourceLoaderOptions.h" |
10 #include "core/loader/ThreadableLoader.h" | 10 #include "core/loader/ThreadableLoader.h" |
11 #include "modules/fetch/BodyStreamBuffer.h" | |
12 #include "modules/fetch/DataConsumerTee.h" | |
13 #include "modules/fetch/FetchBlobDataConsumerHandle.h" | |
11 #include "modules/fetch/FetchHeaderList.h" | 14 #include "modules/fetch/FetchHeaderList.h" |
12 #include "platform/network/ResourceRequest.h" | 15 #include "platform/network/ResourceRequest.h" |
13 #include "public/platform/WebServiceWorkerRequest.h" | 16 #include "public/platform/WebServiceWorkerRequest.h" |
14 #include "public/platform/WebURLRequest.h" | 17 #include "public/platform/WebURLRequest.h" |
15 | 18 |
16 namespace blink { | 19 namespace blink { |
17 | 20 |
18 FetchRequestData* FetchRequestData::create() | 21 FetchRequestData* FetchRequestData::create() |
19 { | 22 { |
20 return new FetchRequestData(); | 23 return new FetchRequestData(); |
21 } | 24 } |
22 | 25 |
23 FetchRequestData* FetchRequestData::create(const WebServiceWorkerRequest& webReq uest) | 26 FetchRequestData* FetchRequestData::create(ExecutionContext* executionContext, c onst WebServiceWorkerRequest& webRequest) |
24 { | 27 { |
25 FetchRequestData* request = FetchRequestData::create(); | 28 FetchRequestData* request = FetchRequestData::create(); |
26 request->m_url = webRequest.url(); | 29 request->m_url = webRequest.url(); |
27 request->m_method = webRequest.method(); | 30 request->m_method = webRequest.method(); |
28 for (HTTPHeaderMap::const_iterator it = webRequest.headers().begin(); it != webRequest.headers().end(); ++it) | 31 for (HTTPHeaderMap::const_iterator it = webRequest.headers().begin(); it != webRequest.headers().end(); ++it) |
29 request->m_headerList->append(it->key, it->value); | 32 request->m_headerList->append(it->key, it->value); |
30 request->m_blobDataHandle = webRequest.blobDataHandle(); | 33 if (webRequest.blobDataHandle()) |
34 request->setBuffer(BodyStreamBuffer::create(FetchBlobDataConsumerHandle: :create(executionContext, webRequest.blobDataHandle()))); | |
31 request->setContext(webRequest.requestContext()); | 35 request->setContext(webRequest.requestContext()); |
32 request->m_referrer.setURL(webRequest.referrer()); | 36 request->m_referrer.setURL(webRequest.referrer()); |
33 request->setMode(webRequest.mode()); | 37 request->setMode(webRequest.mode()); |
34 request->setCredentials(webRequest.credentialsMode()); | 38 request->setCredentials(webRequest.credentialsMode()); |
35 request->setMIMEType(request->m_headerList->extractMIMEType()); | 39 request->setMIMEType(request->m_headerList->extractMIMEType()); |
36 return request; | 40 return request; |
37 } | 41 } |
38 | 42 |
39 FetchRequestData* FetchRequestData::clone() const | 43 FetchRequestData* FetchRequestData::clone(ExecutionContext* executionContext) |
40 { | 44 { |
41 // TODO(yhirano): This method will be destructive. | 45 // TODO(yhirano): This method will be destructive. |
yhirano
2015/07/06 06:14:00
Please remove this comment.
hiroshige
2015/07/07 03:50:57
Done.
| |
42 FetchRequestData* request = FetchRequestData::create(); | 46 FetchRequestData* request = FetchRequestData::create(); |
43 request->m_url = m_url; | 47 request->m_url = m_url; |
44 request->m_method = m_method; | 48 request->m_method = m_method; |
45 request->m_headerList = m_headerList->clone(); | 49 request->m_headerList = m_headerList->clone(); |
46 request->m_unsafeRequestFlag = m_unsafeRequestFlag; | 50 request->m_unsafeRequestFlag = m_unsafeRequestFlag; |
47 request->m_blobDataHandle = m_blobDataHandle; | 51 if (m_buffer) { |
52 OwnPtr<FetchDataConsumerHandle> dest1, dest2; | |
53 DataConsumerTee::create(executionContext, m_buffer->releaseHandle(), &de st1, &dest2); | |
54 m_buffer = BodyStreamBuffer::create(dest1.release()); | |
55 request->m_buffer = BodyStreamBuffer::create(dest2.release()); | |
56 } | |
48 request->m_origin = m_origin; | 57 request->m_origin = m_origin; |
49 request->m_sameOriginDataURLFlag = m_sameOriginDataURLFlag; | 58 request->m_sameOriginDataURLFlag = m_sameOriginDataURLFlag; |
50 request->m_context = m_context; | 59 request->m_context = m_context; |
51 request->m_referrer = m_referrer; | 60 request->m_referrer = m_referrer; |
52 request->m_mode = m_mode; | 61 request->m_mode = m_mode; |
53 request->m_credentials = m_credentials; | 62 request->m_credentials = m_credentials; |
54 request->m_responseTainting = m_responseTainting; | 63 request->m_responseTainting = m_responseTainting; |
55 request->m_mimeType = m_mimeType; | 64 request->m_mimeType = m_mimeType; |
56 return request; | 65 return request; |
57 } | 66 } |
58 | 67 |
59 FetchRequestData* FetchRequestData::pass() const | 68 FetchRequestData* FetchRequestData::pass(ExecutionContext* executionContext) |
60 { | 69 { |
61 // TODO(yhirano): This method will be destructive. | 70 // TODO(yhirano): This method will be destructive. |
hiroshige
2015/07/07 03:50:57
Also removed this.
| |
62 return clone(); | 71 return clone(executionContext); |
63 } | 72 } |
64 | 73 |
65 FetchRequestData::~FetchRequestData() | 74 FetchRequestData::~FetchRequestData() |
66 { | 75 { |
67 } | 76 } |
68 | 77 |
69 FetchRequestData::FetchRequestData() | 78 FetchRequestData::FetchRequestData() |
70 : m_method("GET") | 79 : m_method("GET") |
71 , m_headerList(FetchHeaderList::create()) | 80 , m_headerList(FetchHeaderList::create()) |
72 , m_unsafeRequestFlag(false) | 81 , m_unsafeRequestFlag(false) |
73 , m_context(WebURLRequest::RequestContextUnspecified) | 82 , m_context(WebURLRequest::RequestContextUnspecified) |
74 , m_sameOriginDataURLFlag(false) | 83 , m_sameOriginDataURLFlag(false) |
75 , m_mode(WebURLRequest::FetchRequestModeNoCORS) | 84 , m_mode(WebURLRequest::FetchRequestModeNoCORS) |
76 , m_credentials(WebURLRequest::FetchCredentialsModeOmit) | 85 , m_credentials(WebURLRequest::FetchCredentialsModeOmit) |
77 , m_responseTainting(BasicTainting) | 86 , m_responseTainting(BasicTainting) |
78 { | 87 { |
79 } | 88 } |
80 | 89 |
81 DEFINE_TRACE(FetchRequestData) | 90 DEFINE_TRACE(FetchRequestData) |
82 { | 91 { |
92 visitor->trace(m_buffer); | |
83 visitor->trace(m_headerList); | 93 visitor->trace(m_headerList); |
84 } | 94 } |
85 | 95 |
86 } // namespace blink | 96 } // namespace blink |
OLD | NEW |