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

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

Issue 1233573002: [Fetch API] Remove DrainingBuffer. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: 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 | Annotate | Revision Log
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"
(...skipping 13 matching lines...) Expand all
24 } 24 }
25 25
26 FetchRequestData* FetchRequestData::create(ExecutionContext* executionContext, c onst WebServiceWorkerRequest& webRequest) 26 FetchRequestData* FetchRequestData::create(ExecutionContext* executionContext, c onst WebServiceWorkerRequest& webRequest)
27 { 27 {
28 FetchRequestData* request = FetchRequestData::create(); 28 FetchRequestData* request = FetchRequestData::create();
29 request->m_url = webRequest.url(); 29 request->m_url = webRequest.url();
30 request->m_method = webRequest.method(); 30 request->m_method = webRequest.method();
31 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)
32 request->m_headerList->append(it->key, it->value); 32 request->m_headerList->append(it->key, it->value);
33 if (webRequest.blobDataHandle()) 33 if (webRequest.blobDataHandle())
34 request->setBuffer(BodyStreamBuffer::create(FetchBlobDataConsumerHandle: :create(executionContext, webRequest.blobDataHandle()))); 34 request->setBuffer(new BodyStreamBuffer(FetchBlobDataConsumerHandle::cre ate(executionContext, webRequest.blobDataHandle())));
35 request->setContext(webRequest.requestContext()); 35 request->setContext(webRequest.requestContext());
36 request->m_referrer.setURL(webRequest.referrer()); 36 request->m_referrer.setURL(webRequest.referrer());
37 request->setMode(webRequest.mode()); 37 request->setMode(webRequest.mode());
38 request->setCredentials(webRequest.credentialsMode()); 38 request->setCredentials(webRequest.credentialsMode());
39 request->setMIMEType(request->m_headerList->extractMIMEType()); 39 request->setMIMEType(request->m_headerList->extractMIMEType());
40 return request; 40 return request;
41 } 41 }
42 42
43 FetchRequestData* FetchRequestData::clone(ExecutionContext* executionContext) 43 FetchRequestData* FetchRequestData::clone(ExecutionContext* executionContext)
44 { 44 {
45 FetchRequestData* request = FetchRequestData::create(); 45 FetchRequestData* request = FetchRequestData::create();
46 request->m_url = m_url; 46 request->m_url = m_url;
47 request->m_method = m_method; 47 request->m_method = m_method;
48 request->m_headerList = m_headerList->clone(); 48 request->m_headerList = m_headerList->clone();
49 request->m_unsafeRequestFlag = m_unsafeRequestFlag; 49 request->m_unsafeRequestFlag = m_unsafeRequestFlag;
50 if (m_buffer) { 50 if (m_buffer->hasBody()) {
51 OwnPtr<FetchDataConsumerHandle> dest1, dest2; 51 OwnPtr<FetchDataConsumerHandle> dest1, dest2;
52 DataConsumerTee::create(executionContext, m_buffer->releaseHandle(), &de st1, &dest2); 52 // TODO(yhirano): unlock the buffer.
53 m_buffer = BodyStreamBuffer::create(dest1.release()); 53 DataConsumerTee::create(executionContext, m_buffer->lock(executionContex t), &dest1, &dest2);
54 request->m_buffer = BodyStreamBuffer::create(dest2.release()); 54 m_buffer = new BodyStreamBuffer(dest1.release());
55 request->m_buffer = new BodyStreamBuffer(dest2.release());
56 } else {
57 m_buffer = new BodyStreamBuffer;
58 request->m_buffer = new BodyStreamBuffer;
hiroshige 2015/07/24 12:47:03 same as the FetchResponseData::clone()'s comment.
yhirano 2015/07/29 08:45:02 Done.
55 } 59 }
56 request->m_origin = m_origin; 60 request->m_origin = m_origin;
57 request->m_sameOriginDataURLFlag = m_sameOriginDataURLFlag; 61 request->m_sameOriginDataURLFlag = m_sameOriginDataURLFlag;
58 request->m_context = m_context; 62 request->m_context = m_context;
59 request->m_referrer = m_referrer; 63 request->m_referrer = m_referrer;
60 request->m_mode = m_mode; 64 request->m_mode = m_mode;
61 request->m_credentials = m_credentials; 65 request->m_credentials = m_credentials;
62 request->m_responseTainting = m_responseTainting; 66 request->m_responseTainting = m_responseTainting;
63 request->m_mimeType = m_mimeType; 67 request->m_mimeType = m_mimeType;
64 return request; 68 return request;
65 } 69 }
66 70
67 FetchRequestData* FetchRequestData::pass(ExecutionContext* executionContext) 71 FetchRequestData* FetchRequestData::pass(ExecutionContext* executionContext)
68 { 72 {
69 return clone(executionContext); 73 FetchRequestData* request = FetchRequestData::create();
74 request->m_url = m_url;
75 request->m_method = m_method;
76 request->m_headerList = m_headerList->clone();
77 request->m_unsafeRequestFlag = m_unsafeRequestFlag;
78 request->m_buffer = m_buffer;
79 m_buffer = new BodyStreamBuffer;
80 request->m_origin = m_origin;
81 request->m_sameOriginDataURLFlag = m_sameOriginDataURLFlag;
82 request->m_context = m_context;
83 request->m_referrer = m_referrer;
84 request->m_mode = m_mode;
85 request->m_credentials = m_credentials;
86 request->m_responseTainting = m_responseTainting;
87 request->m_mimeType = m_mimeType;
88 return request;
70 } 89 }
71 90
72 FetchRequestData::~FetchRequestData() 91 FetchRequestData::~FetchRequestData()
73 { 92 {
74 } 93 }
75 94
76 FetchRequestData::FetchRequestData() 95 FetchRequestData::FetchRequestData()
77 : m_method("GET") 96 : m_method("GET")
78 , m_headerList(FetchHeaderList::create()) 97 , m_headerList(FetchHeaderList::create())
79 , m_unsafeRequestFlag(false) 98 , m_unsafeRequestFlag(false)
80 , m_context(WebURLRequest::RequestContextUnspecified) 99 , m_context(WebURLRequest::RequestContextUnspecified)
81 , m_sameOriginDataURLFlag(false) 100 , m_sameOriginDataURLFlag(false)
82 , m_mode(WebURLRequest::FetchRequestModeNoCORS) 101 , m_mode(WebURLRequest::FetchRequestModeNoCORS)
83 , m_credentials(WebURLRequest::FetchCredentialsModeOmit) 102 , m_credentials(WebURLRequest::FetchCredentialsModeOmit)
84 , m_responseTainting(BasicTainting) 103 , m_responseTainting(BasicTainting)
104 , m_buffer(new BodyStreamBuffer)
85 { 105 {
86 } 106 }
87 107
88 DEFINE_TRACE(FetchRequestData) 108 DEFINE_TRACE(FetchRequestData)
89 { 109 {
90 visitor->trace(m_buffer); 110 visitor->trace(m_buffer);
91 visitor->trace(m_headerList); 111 visitor->trace(m_headerList);
92 } 112 }
93 113
94 } // namespace blink 114 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698