Chromium Code Reviews| 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..a42f26422f92574d21dc0bd7d7c00e5d21ab1bae 100644 |
| --- a/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h |
| +++ b/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h |
| @@ -38,6 +38,7 @@ public: |
| DISALLOW_NEW(); |
| public: |
| void didGetReadable() override { } |
| + WebTaskRunner* getTaskRunner() override { return nullptr; } |
| }; |
| // Thread has a WebThreadSupportingGC. It initializes / shutdowns |
| @@ -60,6 +61,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 +129,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 +277,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 +311,10 @@ public: |
| { |
| ASSERT_NOT_REACHED(); |
| } |
| + WebTaskRunner* getTaskRunner() override |
| + { |
| + return m_context->getReadingThreadTaskRunner(); |
| + } |
| std::unique_ptr<WebDataConsumerHandle> m_handle; |
| }; |
| @@ -346,6 +361,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 +435,7 @@ public: |
| Deque<Command> m_commands; |
| size_t m_offset; |
| - WebThread* m_readerThread; |
| + std::unique_ptr<WebTaskRunner> m_readerTaskRunner; |
|
haraken
2016/07/28 09:19:30
Ditto.
tzik
2016/07/28 14:45:34
This task runner seems to be used to identify atta
|
| Client* m_client; |
| Result m_result; |
| bool m_isHandleAttached; |
| @@ -459,12 +475,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 +495,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 +519,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 +536,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) |
| @@ -537,6 +557,8 @@ public: |
| }; |
| }; |
| +std::unique_ptr<WebTaskRunner> getCurrentTaskRunner(); |
| + |
| } // namespace blink |
| #endif // DataConsumerHandleTestUtil_h |