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

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, 4 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
« no previous file with comments | « Source/modules/fetch/FetchManager.cpp ('k') | Source/modules/fetch/FetchResponseData.cpp » ('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"
(...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;
55 } 58 }
56 request->m_origin = m_origin; 59 request->m_origin = m_origin;
57 request->m_sameOriginDataURLFlag = m_sameOriginDataURLFlag; 60 request->m_sameOriginDataURLFlag = m_sameOriginDataURLFlag;
58 request->m_context = m_context; 61 request->m_context = m_context;
59 request->m_referrer = m_referrer; 62 request->m_referrer = m_referrer;
60 request->m_mode = m_mode; 63 request->m_mode = m_mode;
61 request->m_credentials = m_credentials; 64 request->m_credentials = m_credentials;
62 request->m_responseTainting = m_responseTainting; 65 request->m_responseTainting = m_responseTainting;
63 request->m_mimeType = m_mimeType; 66 request->m_mimeType = m_mimeType;
64 return request; 67 return request;
65 } 68 }
66 69
67 FetchRequestData* FetchRequestData::pass(ExecutionContext* executionContext) 70 FetchRequestData* FetchRequestData::pass(ExecutionContext* executionContext)
68 { 71 {
69 return clone(executionContext); 72 FetchRequestData* request = FetchRequestData::create();
73 request->m_url = m_url;
74 request->m_method = m_method;
75 request->m_headerList = m_headerList->clone();
76 request->m_unsafeRequestFlag = m_unsafeRequestFlag;
77 request->m_buffer = m_buffer;
78 m_buffer = new BodyStreamBuffer;
79 request->m_origin = m_origin;
80 request->m_sameOriginDataURLFlag = m_sameOriginDataURLFlag;
81 request->m_context = m_context;
82 request->m_referrer = m_referrer;
83 request->m_mode = m_mode;
84 request->m_credentials = m_credentials;
85 request->m_responseTainting = m_responseTainting;
86 request->m_mimeType = m_mimeType;
87 return request;
hiroshige 2015/07/29 09:23:09 optional: pass() and clone() have duplicated code
yhirano 2015/07/29 10:52:05 Done.
70 } 88 }
71 89
72 FetchRequestData::~FetchRequestData() 90 FetchRequestData::~FetchRequestData()
73 { 91 {
74 } 92 }
75 93
76 FetchRequestData::FetchRequestData() 94 FetchRequestData::FetchRequestData()
77 : m_method("GET") 95 : m_method("GET")
78 , m_headerList(FetchHeaderList::create()) 96 , m_headerList(FetchHeaderList::create())
79 , m_unsafeRequestFlag(false) 97 , m_unsafeRequestFlag(false)
80 , m_context(WebURLRequest::RequestContextUnspecified) 98 , m_context(WebURLRequest::RequestContextUnspecified)
81 , m_sameOriginDataURLFlag(false) 99 , m_sameOriginDataURLFlag(false)
82 , m_mode(WebURLRequest::FetchRequestModeNoCORS) 100 , m_mode(WebURLRequest::FetchRequestModeNoCORS)
83 , m_credentials(WebURLRequest::FetchCredentialsModeOmit) 101 , m_credentials(WebURLRequest::FetchCredentialsModeOmit)
84 , m_responseTainting(BasicTainting) 102 , m_responseTainting(BasicTainting)
103 , m_buffer(new BodyStreamBuffer)
85 { 104 {
86 } 105 }
87 106
88 DEFINE_TRACE(FetchRequestData) 107 DEFINE_TRACE(FetchRequestData)
89 { 108 {
90 visitor->trace(m_buffer); 109 visitor->trace(m_buffer);
91 visitor->trace(m_headerList); 110 visitor->trace(m_headerList);
92 } 111 }
93 112
94 } // namespace blink 113 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/fetch/FetchManager.cpp ('k') | Source/modules/fetch/FetchResponseData.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698