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

Side by Side Diff: third_party/WebKit/Source/modules/fetch/BodyStreamBuffer.cpp

Issue 1895693004: [Fetch API] Add streams predicates to BodyStreamBuffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
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 "modules/fetch/BodyStreamBuffer.h" 5 #include "modules/fetch/BodyStreamBuffer.h"
6 6
7 #include "core/dom/DOMArrayBuffer.h" 7 #include "core/dom/DOMArrayBuffer.h"
8 #include "core/dom/DOMTypedArray.h" 8 #include "core/dom/DOMTypedArray.h"
9 #include "core/dom/ExceptionCode.h" 9 #include "core/dom/ExceptionCode.h"
10 #include "modules/fetch/DataConsumerHandleUtil.h" 10 #include "modules/fetch/DataConsumerHandleUtil.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 : m_handle(handle) 77 : m_handle(handle)
78 , m_reader(m_handle->obtainReader(this)) 78 , m_reader(m_handle->obtainReader(this))
79 , m_stream(new ReadableByteStream(this, new ReadableByteStream::StrictStrate gy)) 79 , m_stream(new ReadableByteStream(this, new ReadableByteStream::StrictStrate gy))
80 , m_streamNeedsMore(false) 80 , m_streamNeedsMore(false)
81 { 81 {
82 m_stream->didSourceStart(); 82 m_stream->didSourceStart();
83 } 83 }
84 84
85 PassRefPtr<BlobDataHandle> BodyStreamBuffer::drainAsBlobDataHandle(FetchDataCons umerHandle::Reader::BlobSizePolicy policy) 85 PassRefPtr<BlobDataHandle> BodyStreamBuffer::drainAsBlobDataHandle(FetchDataCons umerHandle::Reader::BlobSizePolicy policy)
86 { 86 {
87 ASSERT(!stream()->isLocked()); 87 ASSERT(!isStreamLocked());
88 m_stream->setIsDisturbed(); 88 m_stream->setIsDisturbed();
89 if (ReadableStream::Closed == m_stream->stateInternal() || ReadableStream::E rrored == m_stream->stateInternal()) 89 if (isStreamClosed() || isStreamErrored())
90 return nullptr; 90 return nullptr;
91 91
92 RefPtr<BlobDataHandle> blobDataHandle = m_reader->drainAsBlobDataHandle(poli cy); 92 RefPtr<BlobDataHandle> blobDataHandle = m_reader->drainAsBlobDataHandle(poli cy);
93 if (blobDataHandle) { 93 if (blobDataHandle) {
94 close(); 94 close();
95 return blobDataHandle.release(); 95 return blobDataHandle.release();
96 } 96 }
97 return nullptr; 97 return nullptr;
98 } 98 }
99 99
100 PassRefPtr<EncodedFormData> BodyStreamBuffer::drainAsFormData() 100 PassRefPtr<EncodedFormData> BodyStreamBuffer::drainAsFormData()
101 { 101 {
102 ASSERT(!stream()->isLocked()); 102 ASSERT(!isStreamLocked());
103 m_stream->setIsDisturbed(); 103 m_stream->setIsDisturbed();
104 if (ReadableStream::Closed == m_stream->stateInternal() || ReadableStream::E rrored == m_stream->stateInternal()) 104 if (isStreamClosed() || isStreamErrored())
105 return nullptr; 105 return nullptr;
106 106
107 RefPtr<EncodedFormData> formData = m_reader->drainAsFormData(); 107 RefPtr<EncodedFormData> formData = m_reader->drainAsFormData();
108 if (formData) { 108 if (formData) {
109 close(); 109 close();
110 return formData.release(); 110 return formData.release();
111 } 111 }
112 return nullptr; 112 return nullptr;
113 } 113 }
114 114
115 PassOwnPtr<FetchDataConsumerHandle> BodyStreamBuffer::releaseHandle(ExecutionCon text* executionContext) 115 PassOwnPtr<FetchDataConsumerHandle> BodyStreamBuffer::releaseHandle(ExecutionCon text* executionContext)
116 { 116 {
117 ASSERT(!stream()->isLocked()); 117 ASSERT(!isStreamLocked());
118 m_reader = nullptr; 118 m_reader = nullptr;
119 m_stream->setIsDisturbed(); 119 m_stream->setIsDisturbed();
120 TrackExceptionState exceptionState; 120 TrackExceptionState exceptionState;
121 m_stream->getBytesReader(executionContext, exceptionState); 121 m_stream->getBytesReader(executionContext, exceptionState);
122 122
123 if (ReadableStream::Closed == m_stream->stateInternal()) 123 if (isStreamClosed())
124 return createFetchDataConsumerHandleFromWebHandle(createDoneDataConsumer Handle()); 124 return createFetchDataConsumerHandleFromWebHandle(createDoneDataConsumer Handle());
125 if (ReadableStream::Errored == m_stream->stateInternal()) 125 if (isStreamErrored())
126 return createFetchDataConsumerHandleFromWebHandle(createUnexpectedErrorD ataConsumerHandle()); 126 return createFetchDataConsumerHandleFromWebHandle(createUnexpectedErrorD ataConsumerHandle());
127 127
128 ASSERT(m_handle); 128 ASSERT(m_handle);
129 OwnPtr<FetchDataConsumerHandle> handle = m_handle.release(); 129 OwnPtr<FetchDataConsumerHandle> handle = m_handle.release();
130 close(); 130 close();
131 return handle.release(); 131 return handle.release();
132 } 132 }
133 133
134 void BodyStreamBuffer::startLoading(ExecutionContext* executionContext, FetchDat aLoader* loader, FetchDataLoader::Client* client) 134 void BodyStreamBuffer::startLoading(ExecutionContext* executionContext, FetchDat aLoader* loader, FetchDataLoader::Client* client)
135 { 135 {
136 ASSERT(!m_loader); 136 ASSERT(!m_loader);
137 OwnPtr<FetchDataConsumerHandle> handle = releaseHandle(executionContext); 137 OwnPtr<FetchDataConsumerHandle> handle = releaseHandle(executionContext);
138 m_loader = loader; 138 m_loader = loader;
139 loader->start(handle.get(), new LoaderClient(executionContext, this, client) ); 139 loader->start(handle.get(), new LoaderClient(executionContext, this, client) );
140 } 140 }
141 141
142 bool BodyStreamBuffer::hasPendingActivity() const 142 bool BodyStreamBuffer::hasPendingActivity() const
143 { 143 {
144 return m_loader || (m_stream->isLocked() && m_stream->stateInternal() == Rea dableStream::Readable); 144 return m_loader || (isStreamLocked() && isStreamReadable());
145 } 145 }
146 146
147 void BodyStreamBuffer::stop() 147 void BodyStreamBuffer::stop()
148 { 148 {
149 m_reader = nullptr; 149 m_reader = nullptr;
150 m_handle = nullptr; 150 m_handle = nullptr;
151 } 151 }
152 152
153 void BodyStreamBuffer::pullSource() 153 void BodyStreamBuffer::pullSource()
154 { 154 {
(...skipping 28 matching lines...) Expand all
183 case WebDataConsumerHandle::ResourceExhausted: 183 case WebDataConsumerHandle::ResourceExhausted:
184 case WebDataConsumerHandle::UnexpectedError: 184 case WebDataConsumerHandle::UnexpectedError:
185 error(); 185 error();
186 return; 186 return;
187 } 187 }
188 return; 188 return;
189 } 189 }
190 processData(); 190 processData();
191 } 191 }
192 192
193 bool BodyStreamBuffer::isStreamReadable() const
194 {
195 return m_stream->stateInternal() == ReadableStream::Readable;
196 }
197
198 bool BodyStreamBuffer::isStreamClosed() const
199 {
200 return m_stream->stateInternal() == ReadableStream::Closed;
201 }
202
203 bool BodyStreamBuffer::isStreamErrored() const
204 {
205 return m_stream->stateInternal() == ReadableStream::Errored;
206 }
207
208 bool BodyStreamBuffer::isStreamLocked() const
209 {
210 return m_stream->isLocked();
211 }
212
213 bool BodyStreamBuffer::isStreamDisturbed() const
214 {
215 return m_stream->isDisturbed();
216 }
217
193 void BodyStreamBuffer::close() 218 void BodyStreamBuffer::close()
194 { 219 {
195 m_reader = nullptr; 220 m_reader = nullptr;
196 m_stream->close(); 221 m_stream->close();
197 m_handle.clear(); 222 m_handle.clear();
198 } 223 }
199 224
200 void BodyStreamBuffer::error() 225 void BodyStreamBuffer::error()
201 { 226 {
202 m_reader = nullptr; 227 m_reader = nullptr;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 266
242 void BodyStreamBuffer::stopLoading() 267 void BodyStreamBuffer::stopLoading()
243 { 268 {
244 if (!m_loader) 269 if (!m_loader)
245 return; 270 return;
246 m_loader->cancel(); 271 m_loader->cancel();
247 m_loader = nullptr; 272 m_loader = nullptr;
248 } 273 }
249 274
250 } // namespace blink 275 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698