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

Side by Side Diff: Source/core/xmlhttprequest/XMLHttpRequest.cpp

Issue 1163653005: Remove deprecated APIs from WebDataConsumerHandle. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@reader-interface
Patch Set: Created 5 years, 6 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 | « no previous file | public/platform/WebDataConsumerHandle.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 /* 1 /*
2 * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2004, 2006, 2008 Apple Inc. All rights reserved.
3 * Copyright (C) 2005-2007 Alexey Proskuryakov <ap@webkit.org> 3 * Copyright (C) 2005-2007 Alexey Proskuryakov <ap@webkit.org>
4 * Copyright (C) 2007, 2008 Julien Chaffraix <jchaffraix@webkit.org> 4 * Copyright (C) 2007, 2008 Julien Chaffraix <jchaffraix@webkit.org>
5 * Copyright (C) 2008, 2011 Google Inc. All rights reserved. 5 * Copyright (C) 2008, 2011 Google Inc. All rights reserved.
6 * Copyright (C) 2012 Intel Corporation 6 * Copyright (C) 2012 Intel Corporation
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public 9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 ReadableStreamSource(XMLHttpRequest* owner, PassOwnPtr<WebDataConsumerHandle > body) 154 ReadableStreamSource(XMLHttpRequest* owner, PassOwnPtr<WebDataConsumerHandle > body)
155 : m_owner(owner) 155 : m_owner(owner)
156 , m_body(body) 156 , m_body(body)
157 , m_needsMore(false) 157 , m_needsMore(false)
158 , m_hasReadBody(false) 158 , m_hasReadBody(false)
159 , m_hasGotDidFinishLoading(false) 159 , m_hasGotDidFinishLoading(false)
160 { 160 {
161 if (m_body) { 161 if (m_body) {
162 // |m_body| has |this| as a raw pointer, but it is not a problem 162 // |m_body| has |this| as a raw pointer, but it is not a problem
163 // because |this| owns |m_body|. 163 // because |this| owns |m_body|.
164 m_body->registerClient(this); 164 m_reader = m_body->obtainReader(this);
165 } 165 }
166 } 166 }
167 ~ReadableStreamSource() override { } 167 ~ReadableStreamSource() override { }
168 168
169 WebDataConsumerHandle* body() { return m_body.get(); } 169 WebDataConsumerHandle* body() { return m_body.get(); }
170 170
171 // UnderlyingSource 171 // UnderlyingSource
172 void pullSource() override 172 void pullSource() override
173 { 173 {
174 if (m_body) { 174 if (m_body) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 UnderlyingSource::trace(visitor); 222 UnderlyingSource::trace(visitor);
223 } 223 }
224 224
225 private: 225 private:
226 void enqueueToStreamFromHandle() 226 void enqueueToStreamFromHandle()
227 { 227 {
228 ASSERT(m_body); 228 ASSERT(m_body);
229 while (m_needsMore) { 229 while (m_needsMore) {
230 const void* buffer = nullptr; 230 const void* buffer = nullptr;
231 size_t size = 0; 231 size_t size = 0;
232 Result result = m_body->beginRead(&buffer, WebDataConsumerHandle::Fl agNone, &size); 232 Result result = m_reader->beginRead(&buffer, WebDataConsumerHandle:: FlagNone, &size);
233 if (result == WebDataConsumerHandle::ShouldWait) 233 if (result == WebDataConsumerHandle::ShouldWait)
234 return; 234 return;
235 if (result == WebDataConsumerHandle::Done) { 235 if (result == WebDataConsumerHandle::Done) {
236 m_hasReadBody = true; 236 m_hasReadBody = true;
237 if (m_hasGotDidFinishLoading) { 237 if (m_hasGotDidFinishLoading) {
238 // If we got didFinishLoading, we should close the stream 238 // If we got didFinishLoading, we should close the stream
239 // here. If we didn't, it's possible that the loading 239 // here. If we didn't, it's possible that the loading
240 // actually failed and didFail will be notified, so we 240 // actually failed and didFail will be notified, so we
241 // don't close the stream. 241 // don't close the stream.
242 m_stream->close(); 242 m_stream->close();
243 } 243 }
244 m_needsMore = false; 244 m_needsMore = false;
245 return; 245 return;
246 } 246 }
247 if (result != WebDataConsumerHandle::Ok) { 247 if (result != WebDataConsumerHandle::Ok) {
248 m_stream->error(DOMException::create(NetworkError)); 248 m_stream->error(DOMException::create(NetworkError));
249 m_owner->abort(); 249 m_owner->abort();
250 m_needsMore = false; 250 m_needsMore = false;
251 return; 251 return;
252 } 252 }
253 RefPtr<DOMArrayBuffer> arrayBuffer = DOMArrayBuffer::create(size, 1) ; 253 RefPtr<DOMArrayBuffer> arrayBuffer = DOMArrayBuffer::create(size, 1) ;
254 memcpy(arrayBuffer->data(), buffer, size); 254 memcpy(arrayBuffer->data(), buffer, size);
255 result = m_body->endRead(size); 255 result = m_reader->endRead(size);
256 if (result != WebDataConsumerHandle::Ok) { 256 if (result != WebDataConsumerHandle::Ok) {
257 m_stream->error(DOMException::create(NetworkError)); 257 m_stream->error(DOMException::create(NetworkError));
258 m_owner->abort(); 258 m_owner->abort();
259 m_needsMore = false; 259 m_needsMore = false;
260 return; 260 return;
261 } 261 }
262 m_needsMore = m_stream->enqueue(DOMUint8Array::create(arrayBuffer.re lease(), 0, size)); 262 m_needsMore = m_stream->enqueue(DOMUint8Array::create(arrayBuffer.re lease(), 0, size));
263 } 263 }
264 } 264 }
265 265
266 // This is RawPtr in non-oilpan build to avoid the reference cycle. To 266 // This is RawPtr in non-oilpan build to avoid the reference cycle. To
267 // avoid use-after free, the associated ReadableStream must be closed 267 // avoid use-after free, the associated ReadableStream must be closed
268 // or errored when m_owner is gone. 268 // or errored when m_owner is gone.
269 RawPtrWillBeMember<XMLHttpRequest> m_owner; 269 RawPtrWillBeMember<XMLHttpRequest> m_owner;
270 Member<ReadableStreamImpl<ReadableStreamChunkTypeTraits<DOMArrayBufferView>> > m_stream; 270 Member<ReadableStreamImpl<ReadableStreamChunkTypeTraits<DOMArrayBufferView>> > m_stream;
271 OwnPtr<WebDataConsumerHandle> m_body; 271 OwnPtr<WebDataConsumerHandle> m_body;
272 OwnPtr<WebDataConsumerHandle::Reader> m_reader;
272 bool m_needsMore; 273 bool m_needsMore;
273 bool m_hasReadBody; 274 bool m_hasReadBody;
274 bool m_hasGotDidFinishLoading; 275 bool m_hasGotDidFinishLoading;
275 }; 276 };
276 277
277 class XMLHttpRequest::BlobLoader final : public GarbageCollectedFinalized<XMLHtt pRequest::BlobLoader>, public FileReaderLoaderClient { 278 class XMLHttpRequest::BlobLoader final : public GarbageCollectedFinalized<XMLHtt pRequest::BlobLoader>, public FileReaderLoaderClient {
278 public: 279 public:
279 static BlobLoader* create(XMLHttpRequest* xhr, PassRefPtr<BlobDataHandle> ha ndle) 280 static BlobLoader* create(XMLHttpRequest* xhr, PassRefPtr<BlobDataHandle> ha ndle)
280 { 281 {
281 return new BlobLoader(xhr, handle); 282 return new BlobLoader(xhr, handle);
(...skipping 1582 matching lines...) Expand 10 before | Expand all | Expand 10 after
1864 visitor->trace(m_responseDocumentParser); 1865 visitor->trace(m_responseDocumentParser);
1865 visitor->trace(m_progressEventThrottle); 1866 visitor->trace(m_progressEventThrottle);
1866 visitor->trace(m_upload); 1867 visitor->trace(m_upload);
1867 visitor->trace(m_blobLoader); 1868 visitor->trace(m_blobLoader);
1868 XMLHttpRequestEventTarget::trace(visitor); 1869 XMLHttpRequestEventTarget::trace(visitor);
1869 DocumentParserClient::trace(visitor); 1870 DocumentParserClient::trace(visitor);
1870 ActiveDOMObject::trace(visitor); 1871 ActiveDOMObject::trace(visitor);
1871 } 1872 }
1872 1873
1873 } // namespace blink 1874 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | public/platform/WebDataConsumerHandle.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698