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 03322ed79abe776de72eb3681954f70dd6d74a2a..5833256888badfc329ac26c14717e7b27b69823d 100644 |
--- a/third_party/WebKit/Source/core/workers/WorkerThreadTest.cpp |
+++ b/third_party/WebKit/Source/core/workers/WorkerThreadTest.cpp |
@@ -33,14 +33,19 @@ void waitForSignalTask(WorkerThread* workerThread, WaitableEvent* waitableEvent) |
} // namespace |
-class WorkerThreadTest : public ::testing::Test { |
+class WorkerThreadTest : public ::testing::TestWithParam<BlinkGC::ThreadHeapMode> { |
public: |
+ WorkerThreadTest() |
+ : m_threadHeapMode(GetParam()) |
+ { |
+ } |
+ |
void SetUp() override |
{ |
m_loaderProxyProvider = wrapUnique(new MockWorkerLoaderProxyProvider()); |
m_reportingProxy = wrapUnique(new MockWorkerReportingProxy()); |
m_securityOrigin = SecurityOrigin::create(KURL(ParsedURLString, "http://fake.url/")); |
- m_workerThread = wrapUnique(new WorkerThreadForTest(m_loaderProxyProvider.get(), *m_reportingProxy)); |
+ m_workerThread = wrapUnique(new WorkerThreadForTest(m_loaderProxyProvider.get(), *m_reportingProxy, m_threadHeapMode)); |
m_lifecycleObserver = new MockWorkerThreadLifecycleObserver(m_workerThread->getWorkerThreadLifecycleContext()); |
} |
@@ -115,9 +120,18 @@ protected: |
std::unique_ptr<MockWorkerReportingProxy> m_reportingProxy; |
std::unique_ptr<WorkerThreadForTest> m_workerThread; |
Persistent<MockWorkerThreadLifecycleObserver> m_lifecycleObserver; |
+ const BlinkGC::ThreadHeapMode m_threadHeapMode; |
}; |
-TEST_F(WorkerThreadTest, ShouldScheduleToTerminateExecution) |
+INSTANTIATE_TEST_CASE_P(MainThreadHeap, |
+ WorkerThreadTest, |
+ ::testing::Values(BlinkGC::MainThreadHeapMode)); |
+ |
+INSTANTIATE_TEST_CASE_P(PerThreadHeap, |
+ WorkerThreadTest, |
+ ::testing::Values(BlinkGC::PerThreadHeapMode)); |
+ |
+TEST_P(WorkerThreadTest, ShouldScheduleToTerminateExecution) |
{ |
using ThreadState = WorkerThread::ThreadState; |
MutexLocker dummyLock(m_workerThread->m_threadStateMutex); |
@@ -139,7 +153,7 @@ TEST_F(WorkerThreadTest, ShouldScheduleToTerminateExecution) |
m_workerThread->setExitCode(dummyLock, ExitCode::GracefullyTerminated); |
} |
-TEST_F(WorkerThreadTest, AsyncTerminate_OnIdle) |
+TEST_P(WorkerThreadTest, AsyncTerminate_OnIdle) |
{ |
expectReportingCalls(); |
start(); |
@@ -156,7 +170,7 @@ TEST_F(WorkerThreadTest, AsyncTerminate_OnIdle) |
EXPECT_EQ(ExitCode::GracefullyTerminated, getExitCode()); |
} |
-TEST_F(WorkerThreadTest, SyncTerminate_OnIdle) |
+TEST_P(WorkerThreadTest, SyncTerminate_OnIdle) |
{ |
expectReportingCalls(); |
start(); |
@@ -169,7 +183,7 @@ TEST_F(WorkerThreadTest, SyncTerminate_OnIdle) |
EXPECT_EQ(ExitCode::SyncForciblyTerminated, getExitCode()); |
} |
-TEST_F(WorkerThreadTest, AsyncTerminate_ImmediatelyAfterStart) |
+TEST_P(WorkerThreadTest, AsyncTerminate_ImmediatelyAfterStart) |
{ |
expectReportingCallsForWorkerPossiblyTerminatedBeforeInitialization(); |
start(); |
@@ -185,7 +199,7 @@ TEST_F(WorkerThreadTest, AsyncTerminate_ImmediatelyAfterStart) |
EXPECT_EQ(ExitCode::GracefullyTerminated, exitCode); |
} |
-TEST_F(WorkerThreadTest, SyncTerminate_ImmediatelyAfterStart) |
+TEST_P(WorkerThreadTest, SyncTerminate_ImmediatelyAfterStart) |
{ |
expectReportingCallsForWorkerPossiblyTerminatedBeforeInitialization(); |
start(); |
@@ -201,7 +215,7 @@ TEST_F(WorkerThreadTest, SyncTerminate_ImmediatelyAfterStart) |
EXPECT_TRUE(ExitCode::GracefullyTerminated == exitCode || ExitCode::SyncForciblyTerminated == exitCode); |
} |
-TEST_F(WorkerThreadTest, AsyncTerminate_WhileTaskIsRunning) |
+TEST_P(WorkerThreadTest, AsyncTerminate_WhileTaskIsRunning) |
{ |
const long long kForceTerminationDelayInMs = 10; |
setForceTerminationDelayInMs(kForceTerminationDelayInMs); |
@@ -226,7 +240,7 @@ TEST_F(WorkerThreadTest, AsyncTerminate_WhileTaskIsRunning) |
EXPECT_EQ(ExitCode::AsyncForciblyTerminated, getExitCode()); |
} |
-TEST_F(WorkerThreadTest, SyncTerminate_WhileTaskIsRunning) |
+TEST_P(WorkerThreadTest, SyncTerminate_WhileTaskIsRunning) |
{ |
expectReportingCallsForWorkerForciblyTerminated(); |
startWithSourceCodeNotToFinish(); |
@@ -237,7 +251,7 @@ TEST_F(WorkerThreadTest, SyncTerminate_WhileTaskIsRunning) |
EXPECT_EQ(ExitCode::SyncForciblyTerminated, getExitCode()); |
} |
-TEST_F(WorkerThreadTest, AsyncTerminateAndThenSyncTerminate_WhileTaskIsRunning) |
+TEST_P(WorkerThreadTest, AsyncTerminateAndThenSyncTerminate_WhileTaskIsRunning) |
{ |
const long long kForceTerminationDelayInMs = 10; |
setForceTerminationDelayInMs(kForceTerminationDelayInMs); |
@@ -257,7 +271,7 @@ TEST_F(WorkerThreadTest, AsyncTerminateAndThenSyncTerminate_WhileTaskIsRunning) |
EXPECT_EQ(ExitCode::SyncForciblyTerminated, getExitCode()); |
} |
-TEST_F(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunningOnInitialization) |
+TEST_P(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunningOnInitialization) |
{ |
EXPECT_CALL(*m_reportingProxy, didLoadWorkerScriptMock(_, _)).Times(1); |
EXPECT_CALL(*m_reportingProxy, didCreateWorkerGlobalScope(_)).Times(1); |
@@ -320,7 +334,7 @@ TEST_F(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunningOnInitialization) |
EXPECT_EQ(ExitCode::GracefullyTerminated, getExitCode()); |
} |
-TEST_F(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunning) |
+TEST_P(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunning) |
{ |
expectReportingCalls(); |
start(); |