| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/DataConsumerHandleUtil.h" | 6 #include "modules/fetch/DataConsumerHandleUtil.h" |
| 7 | 7 |
| 8 #include "platform/Task.h" | 8 #include "platform/Task.h" |
| 9 #include "platform/blob/BlobData.h" | 9 #include "platform/blob/BlobData.h" |
| 10 #include "public/platform/Platform.h" | 10 #include "public/platform/Platform.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 *available = 0; | 32 *available = 0; |
| 33 *buffer = nullptr; | 33 *buffer = nullptr; |
| 34 return ShouldWait; | 34 return ShouldWait; |
| 35 } | 35 } |
| 36 Result endRead(size_t) override | 36 Result endRead(size_t) override |
| 37 { | 37 { |
| 38 return UnexpectedError; | 38 return UnexpectedError; |
| 39 } | 39 } |
| 40 }; | 40 }; |
| 41 Reader* obtainReaderInternal(Client*) override { return new ReaderImpl; } | 41 Reader* obtainReaderInternal(Client*) override { return new ReaderImpl; } |
| 42 |
| 43 const char* debugName() const override { return "WaitingHandle"; } |
| 42 }; | 44 }; |
| 43 | 45 |
| 44 class RepeatingReader final : public WebDataConsumerHandle::Reader { | 46 class RepeatingReader final : public WebDataConsumerHandle::Reader { |
| 45 public: | 47 public: |
| 46 explicit RepeatingReader(Result result, WebDataConsumerHandle::Client* clien
t) : m_result(result), m_notifier(client) { } | 48 explicit RepeatingReader(Result result, WebDataConsumerHandle::Client* clien
t) : m_result(result), m_notifier(client) { } |
| 47 | 49 |
| 48 private: | 50 private: |
| 49 Result read(void*, size_t, WebDataConsumerHandle::Flags, size_t *readSize) o
verride | 51 Result read(void*, size_t, WebDataConsumerHandle::Flags, size_t *readSize) o
verride |
| 50 { | 52 { |
| 51 *readSize = 0; | 53 *readSize = 0; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 62 return WebDataConsumerHandle::UnexpectedError; | 64 return WebDataConsumerHandle::UnexpectedError; |
| 63 } | 65 } |
| 64 | 66 |
| 65 Result m_result; | 67 Result m_result; |
| 66 NotifyOnReaderCreationHelper m_notifier; | 68 NotifyOnReaderCreationHelper m_notifier; |
| 67 }; | 69 }; |
| 68 | 70 |
| 69 class DoneHandle final : public WebDataConsumerHandle { | 71 class DoneHandle final : public WebDataConsumerHandle { |
| 70 private: | 72 private: |
| 71 Reader* obtainReaderInternal(Client* client) override { return new Repeating
Reader(Done, client); } | 73 Reader* obtainReaderInternal(Client* client) override { return new Repeating
Reader(Done, client); } |
| 74 const char* debugName() const override { return "DoneHandle"; } |
| 72 }; | 75 }; |
| 73 | 76 |
| 74 class UnexpectedErrorHandle final : public WebDataConsumerHandle { | 77 class UnexpectedErrorHandle final : public WebDataConsumerHandle { |
| 75 private: | 78 private: |
| 76 Reader* obtainReaderInternal(Client* client) override { return new Repeating
Reader(UnexpectedError, client); } | 79 Reader* obtainReaderInternal(Client* client) override { return new Repeating
Reader(UnexpectedError, client); } |
| 80 const char* debugName() const override { return "UnexpectedErrorHandle"; } |
| 77 }; | 81 }; |
| 78 | 82 |
| 79 class WebToFetchDataConsumerHandleAdapter : public FetchDataConsumerHandle { | 83 class WebToFetchDataConsumerHandleAdapter : public FetchDataConsumerHandle { |
| 80 public: | 84 public: |
| 81 WebToFetchDataConsumerHandleAdapter(PassOwnPtr<WebDataConsumerHandle> handle
) : m_handle(handle) { } | 85 WebToFetchDataConsumerHandleAdapter(PassOwnPtr<WebDataConsumerHandle> handle
) : m_handle(handle) { } |
| 82 private: | 86 private: |
| 83 class ReaderImpl final : public FetchDataConsumerHandle::Reader { | 87 class ReaderImpl final : public FetchDataConsumerHandle::Reader { |
| 84 public: | 88 public: |
| 85 ReaderImpl(PassOwnPtr<WebDataConsumerHandle::Reader> reader) : m_reader(
reader) { } | 89 ReaderImpl(PassOwnPtr<WebDataConsumerHandle::Reader> reader) : m_reader(
reader) { } |
| 86 Result read(void* data, size_t size, Flags flags, size_t* readSize) over
ride | 90 Result read(void* data, size_t size, Flags flags, size_t* readSize) over
ride |
| 87 { | 91 { |
| 88 return m_reader->read(data, size, flags, readSize); | 92 return m_reader->read(data, size, flags, readSize); |
| 89 } | 93 } |
| 90 | 94 |
| 91 Result beginRead(const void** buffer, Flags flags, size_t* available) ov
erride | 95 Result beginRead(const void** buffer, Flags flags, size_t* available) ov
erride |
| 92 { | 96 { |
| 93 return m_reader->beginRead(buffer, flags, available); | 97 return m_reader->beginRead(buffer, flags, available); |
| 94 } | 98 } |
| 95 Result endRead(size_t readSize) override | 99 Result endRead(size_t readSize) override |
| 96 { | 100 { |
| 97 return m_reader->endRead(readSize); | 101 return m_reader->endRead(readSize); |
| 98 } | 102 } |
| 99 private: | 103 private: |
| 100 OwnPtr<WebDataConsumerHandle::Reader> m_reader; | 104 OwnPtr<WebDataConsumerHandle::Reader> m_reader; |
| 101 }; | 105 }; |
| 102 | 106 |
| 103 Reader* obtainReaderInternal(Client* client) override { return new ReaderImp
l(m_handle->obtainReader(client)); } | 107 Reader* obtainReaderInternal(Client* client) override { return new ReaderImp
l(m_handle->obtainReader(client)); } |
| 104 | 108 |
| 109 const char* debugName() const override { return m_handle->debugName(); } |
| 110 |
| 105 OwnPtr<WebDataConsumerHandle> m_handle; | 111 OwnPtr<WebDataConsumerHandle> m_handle; |
| 106 }; | 112 }; |
| 107 | 113 |
| 108 } // namespace | 114 } // namespace |
| 109 | 115 |
| 110 PassOwnPtr<WebDataConsumerHandle> createWaitingDataConsumerHandle() | 116 PassOwnPtr<WebDataConsumerHandle> createWaitingDataConsumerHandle() |
| 111 { | 117 { |
| 112 return adoptPtr(new WaitingHandle); | 118 return adoptPtr(new WaitingHandle); |
| 113 } | 119 } |
| 114 | 120 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 142 // |client| dereference is safe here because: | 148 // |client| dereference is safe here because: |
| 143 // - |this| is owned by a reader, | 149 // - |this| is owned by a reader, |
| 144 // so the reader outlives |this|, and | 150 // so the reader outlives |this|, and |
| 145 // - |client| is the client of the reader, so |client| outlives the reader | 151 // - |client| is the client of the reader, so |client| outlives the reader |
| 146 // (guaranteed by the user of the reader), | 152 // (guaranteed by the user of the reader), |
| 147 // and therefore |client| outlives |this|. | 153 // and therefore |client| outlives |this|. |
| 148 client->didGetReadable(); | 154 client->didGetReadable(); |
| 149 } | 155 } |
| 150 | 156 |
| 151 } // namespace blink | 157 } // namespace blink |
| OLD | NEW |