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 "core/streams/ReadableStream.h" |
11 #include "modules/fetch/BodyStreamBuffer.h" | 12 #include "modules/fetch/BodyStreamBuffer.h" |
| 13 #include "modules/fetch/DataConsumerHandleUtil.h" |
12 #include "modules/fetch/DataConsumerTee.h" | 14 #include "modules/fetch/DataConsumerTee.h" |
13 #include "modules/fetch/FetchBlobDataConsumerHandle.h" | 15 #include "modules/fetch/FetchBlobDataConsumerHandle.h" |
14 #include "modules/fetch/FetchHeaderList.h" | 16 #include "modules/fetch/FetchHeaderList.h" |
15 #include "platform/network/ResourceRequest.h" | 17 #include "platform/network/ResourceRequest.h" |
16 #include "public/platform/WebURLRequest.h" | 18 #include "public/platform/WebURLRequest.h" |
17 #include "public/platform/modules/serviceworker/WebServiceWorkerRequest.h" | 19 #include "public/platform/modules/serviceworker/WebServiceWorkerRequest.h" |
18 | 20 |
19 namespace blink { | 21 namespace blink { |
20 | 22 |
21 FetchRequestData* FetchRequestData::create() | 23 FetchRequestData* FetchRequestData::create() |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 request->m_mimeType = m_mimeType; | 61 request->m_mimeType = m_mimeType; |
60 request->m_integrity = m_integrity; | 62 request->m_integrity = m_integrity; |
61 return request; | 63 return request; |
62 } | 64 } |
63 | 65 |
64 FetchRequestData* FetchRequestData::clone(ExecutionContext* executionContext) | 66 FetchRequestData* FetchRequestData::clone(ExecutionContext* executionContext) |
65 { | 67 { |
66 FetchRequestData* request = FetchRequestData::cloneExceptBody(); | 68 FetchRequestData* request = FetchRequestData::cloneExceptBody(); |
67 if (m_buffer) { | 69 if (m_buffer) { |
68 OwnPtr<FetchDataConsumerHandle> dest1, dest2; | 70 OwnPtr<FetchDataConsumerHandle> dest1, dest2; |
69 // TODO(yhirano): unlock the buffer. | 71 DataConsumerTee::create(executionContext, m_buffer->releaseHandle(execut
ionContext), &dest1, &dest2); |
70 DataConsumerTee::create(executionContext, m_buffer->lock(executionContex
t), &dest1, &dest2); | |
71 m_buffer = new BodyStreamBuffer(dest1.release()); | 72 m_buffer = new BodyStreamBuffer(dest1.release()); |
72 request->m_buffer = new BodyStreamBuffer(dest2.release()); | 73 request->m_buffer = new BodyStreamBuffer(dest2.release()); |
73 } | 74 } |
74 return request; | 75 return request; |
75 } | 76 } |
76 | 77 |
77 FetchRequestData* FetchRequestData::pass(ExecutionContext* executionContext) | 78 FetchRequestData* FetchRequestData::pass(ExecutionContext* executionContext) |
78 { | 79 { |
79 FetchRequestData* request = FetchRequestData::cloneExceptBody(); | 80 FetchRequestData* request = FetchRequestData::cloneExceptBody(); |
80 request->m_buffer = m_buffer; | 81 if (m_buffer) { |
81 m_buffer = nullptr; | 82 request->m_buffer = m_buffer; |
| 83 m_buffer = new BodyStreamBuffer(createFetchDataConsumerHandleFromWebHand
le(createDoneDataConsumerHandle())); |
| 84 m_buffer->stream()->setIsDisturbed(); |
| 85 } |
82 return request; | 86 return request; |
83 } | 87 } |
84 | 88 |
85 FetchRequestData::~FetchRequestData() | 89 FetchRequestData::~FetchRequestData() |
86 { | 90 { |
87 } | 91 } |
88 | 92 |
89 FetchRequestData::FetchRequestData() | 93 FetchRequestData::FetchRequestData() |
90 : m_method("GET") | 94 : m_method("GET") |
91 , m_headerList(FetchHeaderList::create()) | 95 , m_headerList(FetchHeaderList::create()) |
92 , m_unsafeRequestFlag(false) | 96 , m_unsafeRequestFlag(false) |
93 , m_context(WebURLRequest::RequestContextUnspecified) | 97 , m_context(WebURLRequest::RequestContextUnspecified) |
94 , m_sameOriginDataURLFlag(false) | 98 , m_sameOriginDataURLFlag(false) |
95 , m_referrer(Referrer(clientReferrerString(), ReferrerPolicyDefault)) | 99 , m_referrer(Referrer(clientReferrerString(), ReferrerPolicyDefault)) |
96 , m_mode(WebURLRequest::FetchRequestModeNoCORS) | 100 , m_mode(WebURLRequest::FetchRequestModeNoCORS) |
97 , m_credentials(WebURLRequest::FetchCredentialsModeOmit) | 101 , m_credentials(WebURLRequest::FetchCredentialsModeOmit) |
98 , m_redirect(WebURLRequest::FetchRedirectModeFollow) | 102 , m_redirect(WebURLRequest::FetchRedirectModeFollow) |
99 , m_responseTainting(BasicTainting) | 103 , m_responseTainting(BasicTainting) |
100 { | 104 { |
101 } | 105 } |
102 | 106 |
103 DEFINE_TRACE(FetchRequestData) | 107 DEFINE_TRACE(FetchRequestData) |
104 { | 108 { |
105 visitor->trace(m_buffer); | 109 visitor->trace(m_buffer); |
106 visitor->trace(m_headerList); | 110 visitor->trace(m_headerList); |
107 } | 111 } |
108 | 112 |
109 } // namespace blink | 113 } // namespace blink |
OLD | NEW |