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

Side by Side Diff: Source/modules/fetch/FetchRequestData.cpp

Issue 1192913007: Change BodyStreamBuffer to be FetchDataConsumerHandle-based and enable backpressure in Fetch API (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Reflect comments #14 Created 5 years, 5 months 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/fetch/FetchRequestData.h ('k') | Source/modules/fetch/FetchResponseData.h » ('j') | 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 "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
OLDNEW
« no previous file with comments | « Source/modules/fetch/FetchRequestData.h ('k') | Source/modules/fetch/FetchResponseData.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698