OLD | NEW |
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 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 return ScriptPromise::cast(scriptState, v8::Undefined(scriptState->isola
te())); | 153 return ScriptPromise::cast(scriptState, v8::Undefined(scriptState->isola
te())); |
154 } | 154 } |
155 | 155 |
156 // WebDataConsumerHandle::Client | 156 // WebDataConsumerHandle::Client |
157 void didGetReadable() override | 157 void didGetReadable() override |
158 { | 158 { |
159 ASSERT(m_body); | 159 ASSERT(m_body); |
160 enqueueToStreamFromHandle(); | 160 enqueueToStreamFromHandle(); |
161 } | 161 } |
162 | 162 |
163 void startStream(ReadableStreamImpl<ReadableStreamChunkTypeTraits<DOMArrayBu
ffer>>* stream) | 163 void startStream(ReadableStreamImpl<ReadableStreamChunkTypeTraits<DOMArrayBu
ffer> >* stream) |
164 { | 164 { |
165 m_stream = stream; | 165 m_stream = stream; |
166 stream->didSourceStart(); | 166 stream->didSourceStart(); |
167 } | 167 } |
168 | 168 |
169 void didReceiveData(const char* data, size_t size) | 169 void didReceiveData(const char* data, size_t size) |
170 { | 170 { |
171 m_stream->enqueue(DOMArrayBuffer::create(data, size)); | 171 m_stream->enqueue(DOMArrayBuffer::create(data, size)); |
172 } | 172 } |
173 | 173 |
(...skipping 1412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1586 m_finalResponseCharset = extractCharsetFromMediaType(m_mimeTypeOverride)
; | 1586 m_finalResponseCharset = extractCharsetFromMediaType(m_mimeTypeOverride)
; |
1587 } | 1587 } |
1588 | 1588 |
1589 if (m_finalResponseCharset.isEmpty()) | 1589 if (m_finalResponseCharset.isEmpty()) |
1590 m_finalResponseCharset = response.textEncodingName(); | 1590 m_finalResponseCharset = response.textEncodingName(); |
1591 | 1591 |
1592 if (handle) { | 1592 if (handle) { |
1593 ASSERT(!m_responseStream); | 1593 ASSERT(!m_responseStream); |
1594 ASSERT(!m_responseStreamSource); | 1594 ASSERT(!m_responseStreamSource); |
1595 m_responseStreamSource = new ReadableStreamSource(this, handle); | 1595 m_responseStreamSource = new ReadableStreamSource(this, handle); |
1596 m_responseStream = new ReadableStreamImpl<ReadableStreamChunkTypeTraits<
DOMArrayBuffer>>(executionContext(), m_responseStreamSource); | 1596 m_responseStream = new ReadableStreamImpl<ReadableStreamChunkTypeTraits<
DOMArrayBuffer> >(executionContext(), m_responseStreamSource); |
1597 m_responseStreamSource->startStream(m_responseStream); | 1597 m_responseStreamSource->startStream(m_responseStream); |
1598 | 1598 |
1599 // This protection seems needed to keep |this| alive after changeState | 1599 // This protection seems needed to keep |this| alive after changeState |
1600 // calling which may call event listeners. | 1600 // calling which may call event listeners. |
1601 RefPtrWillBeRawPtr<XMLHttpRequest> protect(this); | 1601 RefPtrWillBeRawPtr<XMLHttpRequest> protect(this); |
1602 changeState(HEADERS_RECEIVED); | 1602 changeState(HEADERS_RECEIVED); |
1603 if (m_error) { | 1603 if (m_error) { |
1604 // We need to check for |m_error| because |changeState| may trigger | 1604 // We need to check for |m_error| because |changeState| may trigger |
1605 // readystatechange, and user javascript can cause |abort()|. | 1605 // readystatechange, and user javascript can cause |abort()|. |
1606 return; | 1606 return; |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1686 m_binaryResponseBuilder = SharedBuffer::create(); | 1686 m_binaryResponseBuilder = SharedBuffer::create(); |
1687 m_binaryResponseBuilder->append(data, len); | 1687 m_binaryResponseBuilder->append(data, len); |
1688 } else if (m_responseTypeCode == ResponseTypeLegacyStream) { | 1688 } else if (m_responseTypeCode == ResponseTypeLegacyStream) { |
1689 if (!m_responseLegacyStream) | 1689 if (!m_responseLegacyStream) |
1690 m_responseLegacyStream = Stream::create(executionContext(), response
Type()); | 1690 m_responseLegacyStream = Stream::create(executionContext(), response
Type()); |
1691 m_responseLegacyStream->addData(data, len); | 1691 m_responseLegacyStream->addData(data, len); |
1692 } else if (m_responseTypeCode == ResponseTypeStream) { | 1692 } else if (m_responseTypeCode == ResponseTypeStream) { |
1693 if (!m_responseStream) { | 1693 if (!m_responseStream) { |
1694 ASSERT(!m_responseStreamSource); | 1694 ASSERT(!m_responseStreamSource); |
1695 m_responseStreamSource = new ReadableStreamSource(this, nullptr); | 1695 m_responseStreamSource = new ReadableStreamSource(this, nullptr); |
1696 m_responseStream = new ReadableStreamImpl<ReadableStreamChunkTypeTra
its<DOMArrayBuffer>>(executionContext(), m_responseStreamSource); | 1696 m_responseStream = new ReadableStreamImpl<ReadableStreamChunkTypeTra
its<DOMArrayBuffer> >(executionContext(), m_responseStreamSource); |
1697 m_responseStreamSource->startStream(m_responseStream); | 1697 m_responseStreamSource->startStream(m_responseStream); |
1698 } | 1698 } |
1699 m_responseStreamSource->didReceiveData(data, len); | 1699 m_responseStreamSource->didReceiveData(data, len); |
1700 } | 1700 } |
1701 | 1701 |
1702 if (m_blobLoader) { | 1702 if (m_blobLoader) { |
1703 // In this case, the data is provided by m_blobLoader. As progress | 1703 // In this case, the data is provided by m_blobLoader. As progress |
1704 // events are already fired, we should return here. | 1704 // events are already fired, we should return here. |
1705 return; | 1705 return; |
1706 } | 1706 } |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1766 bool XMLHttpRequest::hasPendingActivity() const | 1766 bool XMLHttpRequest::hasPendingActivity() const |
1767 { | 1767 { |
1768 // Neither this object nor the JavaScript wrapper should be deleted while | 1768 // Neither this object nor the JavaScript wrapper should be deleted while |
1769 // a request is in progress because we need to keep the listeners alive, | 1769 // a request is in progress because we need to keep the listeners alive, |
1770 // and they are referenced by the JavaScript wrapper. | 1770 // and they are referenced by the JavaScript wrapper. |
1771 // |m_loader| is non-null while request is active and ThreadableLoaderClient | 1771 // |m_loader| is non-null while request is active and ThreadableLoaderClient |
1772 // callbacks may be called, and |m_responseDocumentParser| is non-null while | 1772 // callbacks may be called, and |m_responseDocumentParser| is non-null while |
1773 // DocumentParserClient callbacks may be called. | 1773 // DocumentParserClient callbacks may be called. |
1774 if (m_loader || m_responseDocumentParser) | 1774 if (m_loader || m_responseDocumentParser) |
1775 return true; | 1775 return true; |
1776 if (m_responseStream && m_responseStream->hasPendingActivity()) | 1776 if (m_responseStream && (m_responseStream->state() == ReadableStream::Readab
le || m_responseStream->state() == ReadableStream::Waiting)) |
1777 return true; | 1777 return true; |
1778 return false; | 1778 return false; |
1779 } | 1779 } |
1780 | 1780 |
1781 void XMLHttpRequest::contextDestroyed() | 1781 void XMLHttpRequest::contextDestroyed() |
1782 { | 1782 { |
1783 ASSERT(!m_loader); | 1783 ASSERT(!m_loader); |
1784 ActiveDOMObject::contextDestroyed(); | 1784 ActiveDOMObject::contextDestroyed(); |
1785 } | 1785 } |
1786 | 1786 |
(...skipping 17 matching lines...) Expand all Loading... |
1804 visitor->trace(m_responseDocumentParser); | 1804 visitor->trace(m_responseDocumentParser); |
1805 visitor->trace(m_progressEventThrottle); | 1805 visitor->trace(m_progressEventThrottle); |
1806 visitor->trace(m_upload); | 1806 visitor->trace(m_upload); |
1807 visitor->trace(m_blobLoader); | 1807 visitor->trace(m_blobLoader); |
1808 XMLHttpRequestEventTarget::trace(visitor); | 1808 XMLHttpRequestEventTarget::trace(visitor); |
1809 DocumentParserClient::trace(visitor); | 1809 DocumentParserClient::trace(visitor); |
1810 ActiveDOMObject::trace(visitor); | 1810 ActiveDOMObject::trace(visitor); |
1811 } | 1811 } |
1812 | 1812 |
1813 } // namespace blink | 1813 } // namespace blink |
OLD | NEW |