| Index: third_party/WebKit/Source/core/workers/WorkerThreadTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/workers/WorkerThreadTest.cpp b/third_party/WebKit/Source/core/workers/WorkerThreadTest.cpp
|
| index e96b1a3f44ceb3602e38a6ff567ad4699be25e85..025ba222120176e9f50fac465cb71760fbfffc81 100644
|
| --- a/third_party/WebKit/Source/core/workers/WorkerThreadTest.cpp
|
| +++ b/third_party/WebKit/Source/core/workers/WorkerThreadTest.cpp
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "core/workers/WorkerThread.h"
|
|
|
| +#include "core/workers/ParentFrameTaskRunners.h"
|
| #include "core/workers/WorkerThreadTestHelper.h"
|
| #include "platform/WaitableEvent.h"
|
| #include "platform/testing/UnitTestHelpers.h"
|
| @@ -19,23 +20,6 @@ namespace blink {
|
|
|
| using ExitCode = WorkerThread::ExitCode;
|
|
|
| -namespace {
|
| -
|
| -// Used as a debugger task. Waits for a signal from the main thread.
|
| -void waitForSignalTask(WorkerThread* workerThread,
|
| - WaitableEvent* waitableEvent) {
|
| - EXPECT_TRUE(workerThread->isCurrentThread());
|
| -
|
| - // Notify the main thread that the debugger task is waiting for the signal.
|
| - workerThread->workerReportingProxy()
|
| - .getParentFrameTaskRunners()
|
| - ->get(TaskType::Internal)
|
| - ->postTask(BLINK_FROM_HERE, crossThreadBind(&testing::exitRunLoop));
|
| - waitableEvent->wait();
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| class WorkerThreadTest
|
| : public ::testing::TestWithParam<BlinkGC::ThreadHeapMode> {
|
| public:
|
| @@ -50,6 +34,7 @@ class WorkerThreadTest
|
| m_loaderProxyProvider.get(), *m_reportingProxy, m_threadHeapMode));
|
| m_lifecycleObserver = new MockWorkerThreadLifecycleObserver(
|
| m_workerThread->getWorkerThreadLifecycleContext());
|
| + m_parentFrameTaskRunners = ParentFrameTaskRunners::create(nullptr);
|
| }
|
|
|
| void TearDown() override {
|
| @@ -78,6 +63,16 @@ class WorkerThreadTest
|
| return m_workerThread->m_forcibleTerminationTaskHandle.isActive();
|
| }
|
|
|
| + // Used as a debugger task. Waits for a signal from the main thread.
|
| + void waitForSignalTask(WaitableEvent* waitableEvent) {
|
| + EXPECT_TRUE(m_workerThread->isCurrentThread());
|
| +
|
| + // Notify the main thread that the debugger task is waiting for the signal.
|
| + m_parentFrameTaskRunners->get(TaskType::Internal)
|
| + ->postTask(BLINK_FROM_HERE, crossThreadBind(&testing::exitRunLoop));
|
| + waitableEvent->wait();
|
| + }
|
| +
|
| protected:
|
| void expectReportingCalls() {
|
| EXPECT_CALL(*m_reportingProxy, didCreateWorkerGlobalScope(_)).Times(1);
|
| @@ -119,6 +114,7 @@ class WorkerThreadTest
|
| std::unique_ptr<MockWorkerReportingProxy> m_reportingProxy;
|
| std::unique_ptr<WorkerThreadForTest> m_workerThread;
|
| Persistent<MockWorkerThreadLifecycleObserver> m_lifecycleObserver;
|
| + Persistent<ParentFrameTaskRunners> m_parentFrameTaskRunners;
|
| const BlinkGC::ThreadHeapMode m_threadHeapMode;
|
| };
|
|
|
| @@ -293,7 +289,7 @@ TEST_P(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunningOnInitialization) {
|
| // worker thread.
|
| WaitableEvent waitableEvent;
|
| m_workerThread->appendDebuggerTask(crossThreadBind(
|
| - &waitForSignalTask, crossThreadUnretained(m_workerThread.get()),
|
| + &WorkerThreadTest::waitForSignalTask, crossThreadUnretained(this),
|
| crossThreadUnretained(&waitableEvent)));
|
|
|
| // Wait for the debugger task.
|
| @@ -333,7 +329,7 @@ TEST_P(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunning) {
|
| // worker thread.
|
| WaitableEvent waitableEvent;
|
| m_workerThread->appendDebuggerTask(crossThreadBind(
|
| - &waitForSignalTask, crossThreadUnretained(m_workerThread.get()),
|
| + &WorkerThreadTest::waitForSignalTask, crossThreadUnretained(this),
|
| crossThreadUnretained(&waitableEvent)));
|
|
|
| // Wait for the debugger task.
|
|
|