| Index: third_party/WebKit/Source/modules/fetch/DataConsumerHandleUtil.cpp
|
| diff --git a/third_party/WebKit/Source/modules/fetch/DataConsumerHandleUtil.cpp b/third_party/WebKit/Source/modules/fetch/DataConsumerHandleUtil.cpp
|
| index ac28f5d7bcd0ccd2bb26c71f1753a905de73a401..246f32b6888ae761c6648a4f1fd0567d8f85b0cf 100644
|
| --- a/third_party/WebKit/Source/modules/fetch/DataConsumerHandleUtil.cpp
|
| +++ b/third_party/WebKit/Source/modules/fetch/DataConsumerHandleUtil.cpp
|
| @@ -34,14 +34,16 @@ private:
|
| return UnexpectedError;
|
| }
|
| };
|
| - std::unique_ptr<Reader> obtainReader(Client*) override { return WTF::wrapUnique(new ReaderImpl); }
|
| + std::unique_ptr<Reader> obtainReader(Client*, std::unique_ptr<WebTaskRunner>) override { return WTF::wrapUnique(new ReaderImpl); }
|
|
|
| const char* debugName() const override { return "WaitingHandle"; }
|
| };
|
|
|
| class RepeatingReader final : public WebDataConsumerHandle::Reader {
|
| public:
|
| - explicit RepeatingReader(Result result, WebDataConsumerHandle::Client* client) : m_result(result), m_notifier(client) { }
|
| + explicit RepeatingReader(Result result, WebDataConsumerHandle::Client* client, std::unique_ptr<WebTaskRunner> readerTaskRunner)
|
| + : m_result(result)
|
| + , m_notifier(client, readerTaskRunner.get()) { }
|
|
|
| private:
|
| Result beginRead(const void** buffer, WebDataConsumerHandle::Flags, size_t *available) override
|
| @@ -61,13 +63,19 @@ private:
|
|
|
| class DoneHandle final : public WebDataConsumerHandle {
|
| private:
|
| - std::unique_ptr<Reader> obtainReader(Client* client) override { return WTF::wrapUnique(new RepeatingReader(Done, client)); }
|
| + std::unique_ptr<Reader> obtainReader(Client* client, std::unique_ptr<WebTaskRunner> readerTaskRunner) override
|
| + {
|
| + return WTF::wrapUnique(new RepeatingReader(Done, client, std::move(readerTaskRunner)));
|
| + }
|
| const char* debugName() const override { return "DoneHandle"; }
|
| };
|
|
|
| class UnexpectedErrorHandle final : public WebDataConsumerHandle {
|
| private:
|
| - std::unique_ptr<Reader> obtainReader(Client* client) override { return WTF::wrapUnique(new RepeatingReader(UnexpectedError, client)); }
|
| + std::unique_ptr<Reader> obtainReader(Client* client, std::unique_ptr<WebTaskRunner> readerTaskRunner) override
|
| + {
|
| + return WTF::wrapUnique(new RepeatingReader(UnexpectedError, client, std::move(readerTaskRunner)));
|
| + }
|
| const char* debugName() const override { return "UnexpectedErrorHandle"; }
|
| };
|
|
|
| @@ -95,9 +103,9 @@ private:
|
| std::unique_ptr<WebDataConsumerHandle::Reader> m_reader;
|
| };
|
|
|
| - std::unique_ptr<Reader> obtainFetchDataReader(Client* client) override
|
| + std::unique_ptr<Reader> obtainFetchDataReader(Client* client, std::unique_ptr<WebTaskRunner> readerTaskRunner) override
|
| {
|
| - return WTF::wrapUnique(new ReaderImpl(m_handle->obtainReader(client)));
|
| + return WTF::wrapUnique(new ReaderImpl(m_handle->obtainReader(client, std::move(readerTaskRunner))));
|
| }
|
|
|
| const char* debugName() const override { return m_handle->debugName(); }
|
| @@ -127,14 +135,15 @@ std::unique_ptr<FetchDataConsumerHandle> createFetchDataConsumerHandleFromWebHan
|
| return wrapUnique(new WebToFetchDataConsumerHandleAdapter(std::move(handle)));
|
| }
|
|
|
| -NotifyOnReaderCreationHelper::NotifyOnReaderCreationHelper(WebDataConsumerHandle::Client* client)
|
| +NotifyOnReaderCreationHelper::NotifyOnReaderCreationHelper(WebDataConsumerHandle::Client* client, WebTaskRunner* taskRunner)
|
| : m_factory(this)
|
| {
|
| + DCHECK(taskRunner->runsTasksOnCurrentThread());
|
| if (!client)
|
| return;
|
| // Note we don't need thread safety here because this object is
|
| // bound to the current thread.
|
| - Platform::current()->currentThread()->getWebTaskRunner()->postTask(BLINK_FROM_HERE, WTF::bind(&NotifyOnReaderCreationHelper::notify, m_factory.createWeakPtr(), WTF::unretained(client)));
|
| + taskRunner->postTask(BLINK_FROM_HERE, WTF::bind(&NotifyOnReaderCreationHelper::notify, m_factory.createWeakPtr(), WTF::unretained(client)));
|
| }
|
|
|
| void NotifyOnReaderCreationHelper::notify(WebDataConsumerHandle::Client* client)
|
|
|