Chromium Code Reviews| Index: third_party/WebKit/Source/modules/fetch/ReadableStreamDataConsumerHandle.cpp |
| diff --git a/third_party/WebKit/Source/modules/fetch/ReadableStreamDataConsumerHandle.cpp b/third_party/WebKit/Source/modules/fetch/ReadableStreamDataConsumerHandle.cpp |
| index bbfc917052e078b816cc3c646fa04c7ed86b20e1..f9fd9b7a513217864b0f94b96c4a539e3814cd27 100644 |
| --- a/third_party/WebKit/Source/modules/fetch/ReadableStreamDataConsumerHandle.cpp |
| +++ b/third_party/WebKit/Source/modules/fetch/ReadableStreamDataConsumerHandle.cpp |
| @@ -115,10 +115,10 @@ public: |
| class ReaderImpl final : public FetchDataConsumerHandle::Reader { |
| public: |
| - ReaderImpl(PassRefPtr<ReadingContext> context, Client* client) |
| + ReaderImpl(PassRefPtr<ReadingContext> context, Client* client, std::unique_ptr<WebTaskRunner> readerTaskRunner) |
| : m_readingContext(context) |
| { |
| - m_readingContext->attachReader(client); |
| + m_readingContext->attachReader(client, std::move(readerTaskRunner)); |
| } |
| ~ReaderImpl() override |
| { |
| @@ -144,9 +144,10 @@ public: |
| return adoptRef(new ReadingContext(scriptState, streamReader)); |
| } |
| - void attachReader(WebDataConsumerHandle::Client* client) |
| + void attachReader(WebDataConsumerHandle::Client* client, std::unique_ptr<WebTaskRunner> readerTaskRunner) |
| { |
| m_client = client; |
| + m_readerTaskRunner = std::move(readerTaskRunner); |
| notifyLater(); |
| } |
| @@ -242,7 +243,7 @@ public: |
| void notifyLater() |
| { |
| ASSERT(m_client); |
| - Platform::current()->currentThread()->getWebTaskRunner()->postTask(BLINK_FROM_HERE, WTF::bind(&ReadingContext::notify, PassRefPtr<ReadingContext>(this))); |
| + m_readerTaskRunner->postTask(BLINK_FROM_HERE, WTF::bind(&ReadingContext::notify, PassRefPtr<ReadingContext>(this))); |
|
haraken
2016/07/27 11:05:25
For example, you can avoid adding m_readerTaskRunn
tzik
2016/07/27 14:59:41
Done.
Frame/Document/ScriptState seem not availabl
|
| } |
| private: |
| @@ -280,6 +281,7 @@ private: |
| ScopedPersistent<v8::Value> m_reader; |
| RefPtr<ScriptState> m_scriptState; |
| WebDataConsumerHandle::Client* m_client; |
| + std::unique_ptr<WebTaskRunner> m_readerTaskRunner; |
| Persistent<DOMUint8Array> m_pendingBuffer; |
| size_t m_pendingOffset; |
| bool m_isReading; |
| @@ -293,9 +295,9 @@ ReadableStreamDataConsumerHandle::ReadableStreamDataConsumerHandle(ScriptState* |
| } |
| ReadableStreamDataConsumerHandle::~ReadableStreamDataConsumerHandle() = default; |
| -std::unique_ptr<FetchDataConsumerHandle::Reader> ReadableStreamDataConsumerHandle::obtainFetchDataReader(Client* client) |
| +std::unique_ptr<FetchDataConsumerHandle::Reader> ReadableStreamDataConsumerHandle::obtainFetchDataReader(Client* client, std::unique_ptr<WebTaskRunner> readerTaskRunner) |
| { |
| - return WTF::wrapUnique(new ReadingContext::ReaderImpl(m_readingContext, client)); |
| + return WTF::wrapUnique(new ReadingContext::ReaderImpl(m_readingContext, client, std::move(readerTaskRunner))); |
| } |
| } // namespace blink |