Chromium Code Reviews| Index: third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.cpp |
| diff --git a/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.cpp b/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.cpp |
| index 21f39da4c2f0a800a93040e89c1073e7d1ef4f33..dd6253f704bd4b674399310ba55fd00a0ebf02e1 100644 |
| --- a/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.cpp |
| +++ b/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.cpp |
| @@ -92,9 +92,9 @@ void DataConsumerHandleTestUtil::ReplayingHandle::Context::add(const Command& co |
| void DataConsumerHandleTestUtil::ReplayingHandle::Context::attachReader(WebDataConsumerHandle::Client* client) |
| { |
| MutexLocker locker(m_mutex); |
| - DCHECK(!m_readerThread); |
| + DCHECK(!m_readerTaskRunner); |
| DCHECK(!m_client); |
| - m_readerThread = Platform::current()->currentThread(); |
| + m_readerTaskRunner = client->getTaskRunner()->clone(); |
| m_client = client; |
| if (m_client && !(isEmpty() && m_result == ShouldWait)) |
| @@ -104,8 +104,8 @@ void DataConsumerHandleTestUtil::ReplayingHandle::Context::attachReader(WebDataC |
| void DataConsumerHandleTestUtil::ReplayingHandle::Context::detachReader() |
| { |
| MutexLocker locker(m_mutex); |
| - DCHECK(m_readerThread && m_readerThread->isCurrentThread()); |
| - m_readerThread = nullptr; |
| + DCHECK(m_readerTaskRunner && m_readerTaskRunner->runsTasksOnCurrentThread()); |
| + m_readerTaskRunner = nullptr; |
| m_client = nullptr; |
| if (!m_isHandleAttached) |
| m_detached->signal(); |
| @@ -115,7 +115,7 @@ void DataConsumerHandleTestUtil::ReplayingHandle::Context::detachHandle() |
| { |
| MutexLocker locker(m_mutex); |
| m_isHandleAttached = false; |
| - if (!m_readerThread) |
| + if (!m_readerTaskRunner) |
| m_detached->signal(); |
| } |
| @@ -163,7 +163,7 @@ WebDataConsumerHandle::Result DataConsumerHandleTestUtil::ReplayingHandle::Conte |
| DataConsumerHandleTestUtil::ReplayingHandle::Context::Context() |
| : m_offset(0) |
| - , m_readerThread(nullptr) |
| + , m_readerTaskRunner(nullptr) |
| , m_client(nullptr) |
| , m_result(ShouldWait) |
| , m_isHandleAttached(true) |
| @@ -194,15 +194,15 @@ void DataConsumerHandleTestUtil::ReplayingHandle::Context::notify() |
| { |
| if (!m_client) |
| return; |
| - DCHECK(m_readerThread); |
| - m_readerThread->getWebTaskRunner()->postTask(BLINK_FROM_HERE, crossThreadBind(&Context::notifyInternal, wrapPassRefPtr(this))); |
| + DCHECK(m_readerTaskRunner); |
| + m_readerTaskRunner->postTask(BLINK_FROM_HERE, crossThreadBind(&Context::notifyInternal, wrapPassRefPtr(this))); |
| } |
| void DataConsumerHandleTestUtil::ReplayingHandle::Context::notifyInternal() |
| { |
| { |
| MutexLocker locker(m_mutex); |
| - if (!m_client || !m_readerThread->isCurrentThread()) { |
| + if (!m_client || !m_readerTaskRunner->runsTasksOnCurrentThread()) { |
| // There is no client, or a new reader is attached. |
| return; |
| } |
| @@ -231,8 +231,9 @@ void DataConsumerHandleTestUtil::ReplayingHandle::add(const Command& command) |
| m_context->add(command); |
| } |
| -DataConsumerHandleTestUtil::HandleReader::HandleReader(std::unique_ptr<WebDataConsumerHandle> handle, std::unique_ptr<OnFinishedReading> onFinishedReading) |
| - : m_reader(handle->obtainReader(this)) |
| +DataConsumerHandleTestUtil::HandleReader::HandleReader(std::unique_ptr<WebDataConsumerHandle> handle, std::unique_ptr<OnFinishedReading> onFinishedReading, std::unique_ptr<WebTaskRunner> readerTaskRunner) |
| + : m_readerTaskRunner(std::move(readerTaskRunner)) |
| + , m_reader(handle->obtainReader(this)) |
| , m_onFinishedReading(std::move(onFinishedReading)) |
| { |
| } |
| @@ -252,10 +253,15 @@ void DataConsumerHandleTestUtil::HandleReader::didGetReadable() |
| } |
| std::unique_ptr<HandleReadResult> result = wrapUnique(new HandleReadResult(r, m_data)); |
| m_data.clear(); |
| - Platform::current()->currentThread()->getWebTaskRunner()->postTask(BLINK_FROM_HERE, WTF::bind(&HandleReader::runOnFinishedReading, WTF::unretained(this), passed(std::move(result)))); |
| + m_readerTaskRunner->postTask(BLINK_FROM_HERE, WTF::bind(&HandleReader::runOnFinishedReading, WTF::unretained(this), passed(std::move(result)))); |
| m_reader = nullptr; |
| } |
| +WebTaskRunner* DataConsumerHandleTestUtil::HandleReader::getTaskRunner() |
| +{ |
| + return m_readerTaskRunner.get(); |
| +} |
| + |
| void DataConsumerHandleTestUtil::HandleReader::runOnFinishedReading(std::unique_ptr<HandleReadResult> result) |
| { |
| DCHECK(m_onFinishedReading); |
| @@ -263,8 +269,9 @@ void DataConsumerHandleTestUtil::HandleReader::runOnFinishedReading(std::unique_ |
| (*onFinishedReading)(std::move(result)); |
| } |
| -DataConsumerHandleTestUtil::HandleTwoPhaseReader::HandleTwoPhaseReader(std::unique_ptr<WebDataConsumerHandle> handle, std::unique_ptr<OnFinishedReading> onFinishedReading) |
| - : m_reader(handle->obtainReader(this)) |
| +DataConsumerHandleTestUtil::HandleTwoPhaseReader::HandleTwoPhaseReader(std::unique_ptr<WebDataConsumerHandle> handle, std::unique_ptr<OnFinishedReading> onFinishedReading, std::unique_ptr<WebTaskRunner> readerTaskRunner) |
| + : m_readerTaskRunner(std::move(readerTaskRunner)) |
| + , m_reader(handle->obtainReader(this)) |
| , m_onFinishedReading(std::move(onFinishedReading)) |
| { |
| } |
| @@ -287,10 +294,15 @@ void DataConsumerHandleTestUtil::HandleTwoPhaseReader::didGetReadable() |
| } |
| std::unique_ptr<HandleReadResult> result = wrapUnique(new HandleReadResult(r, m_data)); |
| m_data.clear(); |
| - Platform::current()->currentThread()->getWebTaskRunner()->postTask(BLINK_FROM_HERE, WTF::bind(&HandleTwoPhaseReader::runOnFinishedReading, WTF::unretained(this), passed(std::move(result)))); |
| + m_readerTaskRunner->postTask(BLINK_FROM_HERE, WTF::bind(&HandleTwoPhaseReader::runOnFinishedReading, WTF::unretained(this), passed(std::move(result)))); |
| m_reader = nullptr; |
| } |
| +WebTaskRunner* DataConsumerHandleTestUtil::HandleTwoPhaseReader::getTaskRunner() |
| +{ |
| + return m_readerTaskRunner.get(); |
| +} |
| + |
| void DataConsumerHandleTestUtil::HandleTwoPhaseReader::runOnFinishedReading(std::unique_ptr<HandleReadResult> result) |
| { |
| DCHECK(m_onFinishedReading); |
| @@ -298,4 +310,9 @@ void DataConsumerHandleTestUtil::HandleTwoPhaseReader::runOnFinishedReading(std: |
| (*onFinishedReading)(std::move(result)); |
| } |
| +std::unique_ptr<WebTaskRunner> getCurrentTaskRunner() |
| +{ |
| + return Platform::current()->currentThread()->getWebTaskRunner()->clone(); |
|
haraken
2016/07/28 09:19:30
Do you need clone()?
tzik
2016/07/28 14:45:34
This is no longer used. Let me remove it.
|
| +} |
| + |
| } // namespace blink |