| 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->state() == ReadableStream::Readab
le || m_responseStream->state() == ReadableStream::Waiting)) | 1776 if (m_responseStream && m_responseStream->hasPendingActivity()) |
| 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 |