| Index: third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h
|
| diff --git a/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h b/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h
|
| index 2506af4e00842c49be6d5ccd8afc48e7940f5f76..b9d1967cfefcee51cc9591e008a2f142389a1862 100644
|
| --- a/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h
|
| +++ b/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h
|
| @@ -38,6 +38,10 @@ public:
|
| DISALLOW_NEW();
|
| public:
|
| void didGetReadable() override { }
|
| + WebTaskRunner* getTaskRunner() override
|
| + {
|
| + return Platform::current()->currentThread()->getWebTaskRunner();
|
| + }
|
| };
|
|
|
| // Thread has a WebThreadSupportingGC. It initializes / shutdowns
|
| @@ -60,6 +64,7 @@ public:
|
| ~Thread();
|
|
|
| WebThreadSupportingGC* thread() { return m_thread.get(); }
|
| + WebTaskRunner* taskRunner() { return m_thread->platformThread().getWebTaskRunner(); }
|
| ExecutionContext* getExecutionContext() { return m_executionContext.get(); }
|
| ScriptState* getScriptState() { return m_scriptState.get(); }
|
| v8::Isolate* isolate() { return m_isolateHolder->isolate(); }
|
| @@ -127,6 +132,11 @@ public:
|
| m_holder->updatingThread()->postTask(location, std::move(task));
|
| }
|
|
|
| + WebTaskRunner* getReadingThreadTaskRunner()
|
| + {
|
| + return m_holder->readingThread()->platformThread().getWebTaskRunner();
|
| + }
|
| +
|
| private:
|
| Context()
|
| : m_holder(nullptr) { }
|
| @@ -270,6 +280,10 @@ public:
|
| postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::resetReader, wrapPassRefPtr(this)));
|
| postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::signalDone, wrapPassRefPtr(this)));
|
| }
|
| + WebTaskRunner* getTaskRunner() override
|
| + {
|
| + return m_context->getReadingThreadTaskRunner();
|
| + }
|
|
|
| std::unique_ptr<WebDataConsumerHandle> m_handle;
|
| };
|
| @@ -300,6 +314,10 @@ public:
|
| {
|
| ASSERT_NOT_REACHED();
|
| }
|
| + WebTaskRunner* getTaskRunner() override
|
| + {
|
| + return m_context->getReadingThreadTaskRunner();
|
| + }
|
|
|
| std::unique_ptr<WebDataConsumerHandle> m_handle;
|
| };
|
| @@ -346,6 +364,7 @@ public:
|
| MOCK_METHOD1(didFetchDataLoadedString, void(const String&));
|
| MOCK_METHOD0(didFetchDataLoadStream, void());
|
| MOCK_METHOD0(didFetchDataLoadFailed, void());
|
| + MOCK_METHOD0(getTaskRunner, WebTaskRunner*());
|
|
|
| void didFetchDataLoadedArrayBuffer(DOMArrayBuffer* arrayBuffer) override
|
| {
|
| @@ -419,7 +438,7 @@ public:
|
|
|
| Deque<Command> m_commands;
|
| size_t m_offset;
|
| - WebThread* m_readerThread;
|
| + std::unique_ptr<WebTaskRunner> m_readerTaskRunner;
|
| Client* m_client;
|
| Result m_result;
|
| bool m_isHandleAttached;
|
| @@ -459,12 +478,14 @@ public:
|
| public:
|
| using OnFinishedReading = WTF::Function<void(std::unique_ptr<HandleReadResult>)>;
|
|
|
| - HandleReader(std::unique_ptr<WebDataConsumerHandle>, std::unique_ptr<OnFinishedReading>);
|
| + HandleReader(std::unique_ptr<WebDataConsumerHandle>, std::unique_ptr<OnFinishedReading>, std::unique_ptr<WebTaskRunner> readerTaskRunner);
|
| void didGetReadable() override;
|
| + WebTaskRunner* getTaskRunner() override;
|
|
|
| private:
|
| void runOnFinishedReading(std::unique_ptr<HandleReadResult>);
|
|
|
| + std::unique_ptr<WebTaskRunner> m_readerTaskRunner;
|
| std::unique_ptr<WebDataConsumerHandle::Reader> m_reader;
|
| std::unique_ptr<OnFinishedReading> m_onFinishedReading;
|
| Vector<char> m_data;
|
| @@ -477,12 +498,14 @@ public:
|
| public:
|
| using OnFinishedReading = WTF::Function<void(std::unique_ptr<HandleReadResult>)>;
|
|
|
| - HandleTwoPhaseReader(std::unique_ptr<WebDataConsumerHandle>, std::unique_ptr<OnFinishedReading>);
|
| + HandleTwoPhaseReader(std::unique_ptr<WebDataConsumerHandle>, std::unique_ptr<OnFinishedReading>, std::unique_ptr<WebTaskRunner>);
|
| void didGetReadable() override;
|
| + WebTaskRunner* getTaskRunner() override;
|
|
|
| private:
|
| void runOnFinishedReading(std::unique_ptr<HandleReadResult>);
|
|
|
| + std::unique_ptr<WebTaskRunner> m_readerTaskRunner;
|
| std::unique_ptr<WebDataConsumerHandle::Reader> m_reader;
|
| std::unique_ptr<OnFinishedReading> m_onFinishedReading;
|
| Vector<char> m_data;
|
| @@ -499,7 +522,7 @@ public:
|
| , m_event(wrapUnique(new WaitableEvent()))
|
| , m_isDone(false)
|
| {
|
| - m_thread->thread()->postTask(BLINK_FROM_HERE, crossThreadBind(&HandleReaderRunner::start, crossThreadUnretained(this), passed(std::move(handle))));
|
| + m_thread->thread()->postTask(BLINK_FROM_HERE, crossThreadBind(&HandleReaderRunner::start, crossThreadUnretained(this), passed(std::move(handle)), passed(m_thread->taskRunner()->clone())));
|
| }
|
| ~HandleReaderRunner()
|
| {
|
| @@ -516,9 +539,9 @@ public:
|
| }
|
|
|
| private:
|
| - void start(std::unique_ptr<WebDataConsumerHandle> handle)
|
| + void start(std::unique_ptr<WebDataConsumerHandle> handle, std::unique_ptr<WebTaskRunner> readerTaskRunner)
|
| {
|
| - m_handleReader = wrapUnique(new T(std::move(handle), WTF::bind(&HandleReaderRunner::onFinished, WTF::unretained(this))));
|
| + m_handleReader = wrapUnique(new T(std::move(handle), WTF::bind(&HandleReaderRunner::onFinished, WTF::unretained(this)), std::move(readerTaskRunner)));
|
| }
|
|
|
| void onFinished(std::unique_ptr<HandleReadResult> result)
|
|
|