Commit d82e1629 authored by nhiroki's avatar nhiroki Committed by Commit bot

Worker: Stop running worker tests with BlinkGC::MainThreadHeapMode

Oilpan's per-thread heap mode is already shipped for workers and we no longer
have to run the tests on both BlinkGC::MainThreadHeapMode and
BlinkGC::PerThreadHeapMode.

BUG=674400

Review-Url: https://codereview.chromium.org/2578053002
Cr-Commit-Position: refs/heads/master@{#438790}
parent e51457b8
...@@ -98,7 +98,6 @@ KURL redirectLoopURL() { ...@@ -98,7 +98,6 @@ KURL redirectLoopURL() {
enum ThreadableLoaderToTest { enum ThreadableLoaderToTest {
DocumentThreadableLoaderTest, DocumentThreadableLoaderTest,
WorkerThreadableLoaderTest, WorkerThreadableLoaderTest,
PerThreadHeapEnabledWorkerThreadableLoaderTest
}; };
class ThreadableLoaderTestHelper { class ThreadableLoaderTestHelper {
...@@ -168,10 +167,8 @@ class DocumentThreadableLoaderTestHelper : public ThreadableLoaderTestHelper { ...@@ -168,10 +167,8 @@ class DocumentThreadableLoaderTestHelper : public ThreadableLoaderTestHelper {
class WorkerThreadableLoaderTestHelper : public ThreadableLoaderTestHelper, class WorkerThreadableLoaderTestHelper : public ThreadableLoaderTestHelper,
public WorkerLoaderProxyProvider { public WorkerLoaderProxyProvider {
public: public:
explicit WorkerThreadableLoaderTestHelper( WorkerThreadableLoaderTestHelper()
BlinkGC::ThreadHeapMode threadHeapMode) : m_dummyPageHolder(DummyPageHolder::create(IntSize(1, 1))) {}
: m_dummyPageHolder(DummyPageHolder::create(IntSize(1, 1))),
m_threadHeapMode(threadHeapMode) {}
void createLoader( void createLoader(
ThreadableLoaderClient* client, ThreadableLoaderClient* client,
...@@ -242,8 +239,8 @@ class WorkerThreadableLoaderTestHelper : public ThreadableLoaderTestHelper, ...@@ -242,8 +239,8 @@ class WorkerThreadableLoaderTestHelper : public ThreadableLoaderTestHelper,
m_securityOrigin = document().getSecurityOrigin(); m_securityOrigin = document().getSecurityOrigin();
m_parentFrameTaskRunners = m_parentFrameTaskRunners =
ParentFrameTaskRunners::create(&m_dummyPageHolder->frame()); ParentFrameTaskRunners::create(&m_dummyPageHolder->frame());
m_workerThread = WTF::wrapUnique(new WorkerThreadForTest( m_workerThread = WTF::wrapUnique(
this, *m_mockWorkerReportingProxy, m_threadHeapMode)); new WorkerThreadForTest(this, *m_mockWorkerReportingProxy));
expectWorkerLifetimeReportingCalls(); expectWorkerLifetimeReportingCalls();
m_workerThread->startWithSourceCode(m_securityOrigin.get(), m_workerThread->startWithSourceCode(m_securityOrigin.get(),
...@@ -355,7 +352,6 @@ class WorkerThreadableLoaderTestHelper : public ThreadableLoaderTestHelper, ...@@ -355,7 +352,6 @@ class WorkerThreadableLoaderTestHelper : public ThreadableLoaderTestHelper,
Checkpoint m_checkpoint; Checkpoint m_checkpoint;
// |m_loader| must be touched only from the worker thread only. // |m_loader| must be touched only from the worker thread only.
CrossThreadPersistent<ThreadableLoader> m_loader; CrossThreadPersistent<ThreadableLoader> m_loader;
const BlinkGC::ThreadHeapMode m_threadHeapMode;
}; };
class ThreadableLoaderTest class ThreadableLoaderTest
...@@ -367,12 +363,7 @@ class ThreadableLoaderTest ...@@ -367,12 +363,7 @@ class ThreadableLoaderTest
m_helper = WTF::wrapUnique(new DocumentThreadableLoaderTestHelper); m_helper = WTF::wrapUnique(new DocumentThreadableLoaderTestHelper);
break; break;
case WorkerThreadableLoaderTest: case WorkerThreadableLoaderTest:
m_helper = WTF::wrapUnique( m_helper = WTF::wrapUnique(new WorkerThreadableLoaderTestHelper());
new WorkerThreadableLoaderTestHelper(BlinkGC::MainThreadHeapMode));
break;
case PerThreadHeapEnabledWorkerThreadableLoaderTest:
m_helper = WTF::wrapUnique(
new WorkerThreadableLoaderTestHelper(BlinkGC::PerThreadHeapMode));
break; break;
} }
} }
...@@ -474,11 +465,6 @@ INSTANTIATE_TEST_CASE_P(Worker, ...@@ -474,11 +465,6 @@ INSTANTIATE_TEST_CASE_P(Worker,
ThreadableLoaderTest, ThreadableLoaderTest,
::testing::Values(WorkerThreadableLoaderTest)); ::testing::Values(WorkerThreadableLoaderTest));
INSTANTIATE_TEST_CASE_P(
PerThreadHeapEnabledWorker,
ThreadableLoaderTest,
::testing::Values(PerThreadHeapEnabledWorkerThreadableLoaderTest));
TEST_P(ThreadableLoaderTest, StartAndStop) {} TEST_P(ThreadableLoaderTest, StartAndStop) {}
TEST_P(ThreadableLoaderTest, CancelAfterStart) { TEST_P(ThreadableLoaderTest, CancelAfterStart) {
......
...@@ -37,14 +37,12 @@ class DedicatedWorkerThreadForTest final : public DedicatedWorkerThread { ...@@ -37,14 +37,12 @@ class DedicatedWorkerThreadForTest final : public DedicatedWorkerThread {
public: public:
DedicatedWorkerThreadForTest( DedicatedWorkerThreadForTest(
WorkerLoaderProxyProvider* workerLoaderProxyProvider, WorkerLoaderProxyProvider* workerLoaderProxyProvider,
InProcessWorkerObjectProxy& workerObjectProxy, InProcessWorkerObjectProxy& workerObjectProxy)
BlinkGC::ThreadHeapMode threadHeapMode)
: DedicatedWorkerThread( : DedicatedWorkerThread(
WorkerLoaderProxy::create(workerLoaderProxyProvider), WorkerLoaderProxy::create(workerLoaderProxyProvider),
workerObjectProxy, workerObjectProxy,
monotonicallyIncreasingTime()) { monotonicallyIncreasingTime()) {
m_workerBackingThread = m_workerBackingThread = WorkerBackingThread::createForTest("Test thread");
WorkerBackingThread::createForTest("Test thread", threadHeapMode);
} }
WorkerOrWorkletGlobalScope* createWorkerGlobalScope( WorkerOrWorkletGlobalScope* createWorkerGlobalScope(
...@@ -86,8 +84,7 @@ class DedicatedWorkerThreadForTest final : public DedicatedWorkerThread { ...@@ -86,8 +84,7 @@ class DedicatedWorkerThreadForTest final : public DedicatedWorkerThread {
class InProcessWorkerMessagingProxyForTest class InProcessWorkerMessagingProxyForTest
: public InProcessWorkerMessagingProxy { : public InProcessWorkerMessagingProxy {
public: public:
InProcessWorkerMessagingProxyForTest(ExecutionContext* executionContext, InProcessWorkerMessagingProxyForTest(ExecutionContext* executionContext)
BlinkGC::ThreadHeapMode threadHeapMode)
: InProcessWorkerMessagingProxy(executionContext, : InProcessWorkerMessagingProxy(executionContext,
nullptr /* workerObject */, nullptr /* workerObject */,
nullptr /* workerClients */) { nullptr /* workerClients */) {
...@@ -97,9 +94,8 @@ class InProcessWorkerMessagingProxyForTest ...@@ -97,9 +94,8 @@ class InProcessWorkerMessagingProxyForTest
m_mockWorkerLoaderProxyProvider = m_mockWorkerLoaderProxyProvider =
WTF::makeUnique<MockWorkerLoaderProxyProvider>(); WTF::makeUnique<MockWorkerLoaderProxyProvider>();
m_workerThread = WTF::wrapUnique( m_workerThread = WTF::wrapUnique(new DedicatedWorkerThreadForTest(
new DedicatedWorkerThreadForTest(m_mockWorkerLoaderProxyProvider.get(), m_mockWorkerLoaderProxyProvider.get(), workerObjectProxy()));
workerObjectProxy(), threadHeapMode));
m_mockWorkerThreadLifecycleObserver = new MockWorkerThreadLifecycleObserver( m_mockWorkerThreadLifecycleObserver = new MockWorkerThreadLifecycleObserver(
m_workerThread->getWorkerThreadLifecycleContext()); m_workerThread->getWorkerThreadLifecycleContext());
EXPECT_CALL(*m_mockWorkerThreadLifecycleObserver, contextDestroyed()) EXPECT_CALL(*m_mockWorkerThreadLifecycleObserver, contextDestroyed())
...@@ -201,16 +197,14 @@ class InProcessWorkerMessagingProxyForTest ...@@ -201,16 +197,14 @@ class InProcessWorkerMessagingProxyForTest
using Notification = InProcessWorkerMessagingProxyForTest::Notification; using Notification = InProcessWorkerMessagingProxyForTest::Notification;
class DedicatedWorkerTest class DedicatedWorkerTest : public ::testing::Test {
: public ::testing::TestWithParam<BlinkGC::ThreadHeapMode> {
public: public:
DedicatedWorkerTest() : m_threadHeapMode(GetParam()) {} DedicatedWorkerTest() {}
void SetUp() override { void SetUp() override {
m_page = DummyPageHolder::create(); m_page = DummyPageHolder::create();
m_workerMessagingProxy = m_workerMessagingProxy = WTF::wrapUnique(
WTF::wrapUnique(new InProcessWorkerMessagingProxyForTest( new InProcessWorkerMessagingProxyForTest(&m_page->document()));
&m_page->document(), m_threadHeapMode));
} }
void TearDown() override { void TearDown() override {
...@@ -237,18 +231,9 @@ class DedicatedWorkerTest ...@@ -237,18 +231,9 @@ class DedicatedWorkerTest
private: private:
std::unique_ptr<DummyPageHolder> m_page; std::unique_ptr<DummyPageHolder> m_page;
std::unique_ptr<InProcessWorkerMessagingProxyForTest> m_workerMessagingProxy; std::unique_ptr<InProcessWorkerMessagingProxyForTest> m_workerMessagingProxy;
const BlinkGC::ThreadHeapMode m_threadHeapMode;
}; };
INSTANTIATE_TEST_CASE_P(MainThreadHeap, TEST_F(DedicatedWorkerTest, PendingActivity_NoActivity) {
DedicatedWorkerTest,
::testing::Values(BlinkGC::MainThreadHeapMode));
INSTANTIATE_TEST_CASE_P(PerThreadHeap,
DedicatedWorkerTest,
::testing::Values(BlinkGC::PerThreadHeapMode));
TEST_P(DedicatedWorkerTest, PendingActivity_NoActivity) {
const String sourceCode = "// Do nothing"; const String sourceCode = "// Do nothing";
workerMessagingProxy()->startWithSourceCode(sourceCode); workerMessagingProxy()->startWithSourceCode(sourceCode);
...@@ -261,7 +246,7 @@ TEST_P(DedicatedWorkerTest, PendingActivity_NoActivity) { ...@@ -261,7 +246,7 @@ TEST_P(DedicatedWorkerTest, PendingActivity_NoActivity) {
EXPECT_FALSE(workerMessagingProxy()->hasPendingActivity()); EXPECT_FALSE(workerMessagingProxy()->hasPendingActivity());
} }
TEST_P(DedicatedWorkerTest, PendingActivity_SetTimeout) { TEST_F(DedicatedWorkerTest, PendingActivity_SetTimeout) {
// Start an oneshot timer on initial script evaluation. // Start an oneshot timer on initial script evaluation.
const String sourceCode = "setTimeout(function() {}, 0);"; const String sourceCode = "setTimeout(function() {}, 0);";
workerMessagingProxy()->startWithSourceCode(sourceCode); workerMessagingProxy()->startWithSourceCode(sourceCode);
...@@ -276,7 +261,7 @@ TEST_P(DedicatedWorkerTest, PendingActivity_SetTimeout) { ...@@ -276,7 +261,7 @@ TEST_P(DedicatedWorkerTest, PendingActivity_SetTimeout) {
EXPECT_FALSE(workerMessagingProxy()->hasPendingActivity()); EXPECT_FALSE(workerMessagingProxy()->hasPendingActivity());
} }
TEST_P(DedicatedWorkerTest, PendingActivity_SetInterval) { TEST_F(DedicatedWorkerTest, PendingActivity_SetInterval) {
// Start a repeated timer on initial script evaluation, and stop it when a // Start a repeated timer on initial script evaluation, and stop it when a
// message is received. The timer needs a non-zero delay or else worker // message is received. The timer needs a non-zero delay or else worker
// activities would not run. // activities would not run.
...@@ -303,7 +288,7 @@ TEST_P(DedicatedWorkerTest, PendingActivity_SetInterval) { ...@@ -303,7 +288,7 @@ TEST_P(DedicatedWorkerTest, PendingActivity_SetInterval) {
EXPECT_FALSE(workerMessagingProxy()->hasPendingActivity()); EXPECT_FALSE(workerMessagingProxy()->hasPendingActivity());
} }
TEST_P(DedicatedWorkerTest, PendingActivity_SetTimeoutOnMessageEvent) { TEST_F(DedicatedWorkerTest, PendingActivity_SetTimeoutOnMessageEvent) {
// Start an oneshot timer on a message event. // Start an oneshot timer on a message event.
const String sourceCode = const String sourceCode =
"addEventListener('message', function(event) {" "addEventListener('message', function(event) {"
...@@ -333,7 +318,7 @@ TEST_P(DedicatedWorkerTest, PendingActivity_SetTimeoutOnMessageEvent) { ...@@ -333,7 +318,7 @@ TEST_P(DedicatedWorkerTest, PendingActivity_SetTimeoutOnMessageEvent) {
EXPECT_FALSE(workerMessagingProxy()->hasPendingActivity()); EXPECT_FALSE(workerMessagingProxy()->hasPendingActivity());
} }
TEST_P(DedicatedWorkerTest, PendingActivity_SetIntervalOnMessageEvent) { TEST_F(DedicatedWorkerTest, PendingActivity_SetIntervalOnMessageEvent) {
// Start a repeated timer on a message event, and stop it when another // Start a repeated timer on a message event, and stop it when another
// message is received. The timer needs a non-zero delay or else worker // message is received. The timer needs a non-zero delay or else worker
// activities would not run. // activities would not run.
...@@ -387,7 +372,7 @@ TEST_P(DedicatedWorkerTest, PendingActivity_SetIntervalOnMessageEvent) { ...@@ -387,7 +372,7 @@ TEST_P(DedicatedWorkerTest, PendingActivity_SetIntervalOnMessageEvent) {
EXPECT_FALSE(workerMessagingProxy()->hasPendingActivity()); EXPECT_FALSE(workerMessagingProxy()->hasPendingActivity());
} }
TEST_P(DedicatedWorkerTest, UseCounter) { TEST_F(DedicatedWorkerTest, UseCounter) {
const String sourceCode = "// Do nothing"; const String sourceCode = "// Do nothing";
workerMessagingProxy()->startWithSourceCode(sourceCode); workerMessagingProxy()->startWithSourceCode(sourceCode);
......
...@@ -54,8 +54,7 @@ DedicatedWorkerThread::DedicatedWorkerThread( ...@@ -54,8 +54,7 @@ DedicatedWorkerThread::DedicatedWorkerThread(
double timeOrigin) double timeOrigin)
: WorkerThread(std::move(workerLoaderProxy), workerObjectProxy), : WorkerThread(std::move(workerLoaderProxy), workerObjectProxy),
m_workerBackingThread( m_workerBackingThread(
WorkerBackingThread::create("DedicatedWorker Thread", WorkerBackingThread::create("DedicatedWorker Thread")),
BlinkGC::PerThreadHeapMode)),
m_workerObjectProxy(workerObjectProxy), m_workerObjectProxy(workerObjectProxy),
m_timeOrigin(timeOrigin) {} m_timeOrigin(timeOrigin) {}
......
...@@ -51,9 +51,7 @@ SharedWorkerThread::SharedWorkerThread( ...@@ -51,9 +51,7 @@ SharedWorkerThread::SharedWorkerThread(
PassRefPtr<WorkerLoaderProxy> workerLoaderProxy, PassRefPtr<WorkerLoaderProxy> workerLoaderProxy,
WorkerReportingProxy& workerReportingProxy) WorkerReportingProxy& workerReportingProxy)
: WorkerThread(std::move(workerLoaderProxy), workerReportingProxy), : WorkerThread(std::move(workerLoaderProxy), workerReportingProxy),
m_workerBackingThread( m_workerBackingThread(WorkerBackingThread::create("SharedWorker Thread")),
WorkerBackingThread::create("SharedWorker Thread",
BlinkGC::PerThreadHeapMode)),
m_name(name.isolatedCopy()) {} m_name(name.isolatedCopy()) {}
SharedWorkerThread::~SharedWorkerThread() {} SharedWorkerThread::~SharedWorkerThread() {}
......
...@@ -45,9 +45,9 @@ static void removeWorkerIsolate(v8::Isolate* isolate) { ...@@ -45,9 +45,9 @@ static void removeWorkerIsolate(v8::Isolate* isolate) {
} }
WorkerBackingThread::WorkerBackingThread(const char* name, WorkerBackingThread::WorkerBackingThread(const char* name,
bool shouldCallGCOnShutdown, bool shouldCallGCOnShutdown)
BlinkGC::ThreadHeapMode threadHeapMode) : m_backingThread(
: m_backingThread(WebThreadSupportingGC::create(name, threadHeapMode)), WebThreadSupportingGC::create(name, BlinkGC::PerThreadHeapMode)),
m_isOwningThread(true), m_isOwningThread(true),
m_shouldCallGCOnShutdown(shouldCallGCOnShutdown) {} m_shouldCallGCOnShutdown(shouldCallGCOnShutdown) {}
......
...@@ -28,11 +28,8 @@ class WebThreadSupportingGC; ...@@ -28,11 +28,8 @@ class WebThreadSupportingGC;
// WorkerGlobalScopes) can share one WorkerBackingThread. // WorkerGlobalScopes) can share one WorkerBackingThread.
class CORE_EXPORT WorkerBackingThread final { class CORE_EXPORT WorkerBackingThread final {
public: public:
static std::unique_ptr<WorkerBackingThread> create( static std::unique_ptr<WorkerBackingThread> create(const char* name) {
const char* name, return WTF::wrapUnique(new WorkerBackingThread(name, false));
BlinkGC::ThreadHeapMode threadHeapMode) {
return WTF::wrapUnique(
new WorkerBackingThread(name, false, threadHeapMode));
} }
static std::unique_ptr<WorkerBackingThread> create(WebThread* thread) { static std::unique_ptr<WorkerBackingThread> create(WebThread* thread) {
return WTF::wrapUnique(new WorkerBackingThread(thread, false)); return WTF::wrapUnique(new WorkerBackingThread(thread, false));
...@@ -40,10 +37,8 @@ class CORE_EXPORT WorkerBackingThread final { ...@@ -40,10 +37,8 @@ class CORE_EXPORT WorkerBackingThread final {
// These are needed to suppress leak reports. See // These are needed to suppress leak reports. See
// https://crbug.com/590802 and https://crbug.com/v8/1428. // https://crbug.com/590802 and https://crbug.com/v8/1428.
static std::unique_ptr<WorkerBackingThread> createForTest( static std::unique_ptr<WorkerBackingThread> createForTest(const char* name) {
const char* name, return WTF::wrapUnique(new WorkerBackingThread(name, true));
BlinkGC::ThreadHeapMode threadHeapMode) {
return WTF::wrapUnique(new WorkerBackingThread(name, true, threadHeapMode));
} }
static std::unique_ptr<WorkerBackingThread> createForTest(WebThread* thread) { static std::unique_ptr<WorkerBackingThread> createForTest(WebThread* thread) {
return WTF::wrapUnique(new WorkerBackingThread(thread, true)); return WTF::wrapUnique(new WorkerBackingThread(thread, true));
...@@ -71,9 +66,7 @@ class CORE_EXPORT WorkerBackingThread final { ...@@ -71,9 +66,7 @@ class CORE_EXPORT WorkerBackingThread final {
static void setRAILModeOnWorkerThreadIsolates(v8::RAILMode); static void setRAILModeOnWorkerThreadIsolates(v8::RAILMode);
private: private:
WorkerBackingThread(const char* name, WorkerBackingThread(const char* name, bool shouldCallGCOnShutdown);
bool shouldCallGCOnShutdown,
BlinkGC::ThreadHeapMode);
WorkerBackingThread(WebThread*, bool shouldCallGCOnSHutdown); WorkerBackingThread(WebThread*, bool shouldCallGCOnSHutdown);
std::unique_ptr<WebThreadSupportingGC> m_backingThread; std::unique_ptr<WebThreadSupportingGC> m_backingThread;
......
...@@ -36,10 +36,9 @@ void waitForSignalTask(WorkerThread* workerThread, ...@@ -36,10 +36,9 @@ void waitForSignalTask(WorkerThread* workerThread,
} // namespace } // namespace
class WorkerThreadTest class WorkerThreadTest : public ::testing::Test {
: public ::testing::TestWithParam<BlinkGC::ThreadHeapMode> {
public: public:
WorkerThreadTest() : m_threadHeapMode(GetParam()) {} WorkerThreadTest() {}
void SetUp() override { void SetUp() override {
m_loaderProxyProvider = WTF::makeUnique<MockWorkerLoaderProxyProvider>(); m_loaderProxyProvider = WTF::makeUnique<MockWorkerLoaderProxyProvider>();
...@@ -47,7 +46,7 @@ class WorkerThreadTest ...@@ -47,7 +46,7 @@ class WorkerThreadTest
m_securityOrigin = m_securityOrigin =
SecurityOrigin::create(KURL(ParsedURLString, "http://fake.url/")); SecurityOrigin::create(KURL(ParsedURLString, "http://fake.url/"));
m_workerThread = WTF::wrapUnique(new WorkerThreadForTest( m_workerThread = WTF::wrapUnique(new WorkerThreadForTest(
m_loaderProxyProvider.get(), *m_reportingProxy, m_threadHeapMode)); m_loaderProxyProvider.get(), *m_reportingProxy));
m_lifecycleObserver = new MockWorkerThreadLifecycleObserver( m_lifecycleObserver = new MockWorkerThreadLifecycleObserver(
m_workerThread->getWorkerThreadLifecycleContext()); m_workerThread->getWorkerThreadLifecycleContext());
} }
...@@ -119,18 +118,9 @@ class WorkerThreadTest ...@@ -119,18 +118,9 @@ class WorkerThreadTest
std::unique_ptr<MockWorkerReportingProxy> m_reportingProxy; std::unique_ptr<MockWorkerReportingProxy> m_reportingProxy;
std::unique_ptr<WorkerThreadForTest> m_workerThread; std::unique_ptr<WorkerThreadForTest> m_workerThread;
Persistent<MockWorkerThreadLifecycleObserver> m_lifecycleObserver; Persistent<MockWorkerThreadLifecycleObserver> m_lifecycleObserver;
const BlinkGC::ThreadHeapMode m_threadHeapMode;
}; };
INSTANTIATE_TEST_CASE_P(MainThreadHeap, TEST_F(WorkerThreadTest, ShouldScheduleToTerminateExecution) {
WorkerThreadTest,
::testing::Values(BlinkGC::MainThreadHeapMode));
INSTANTIATE_TEST_CASE_P(PerThreadHeap,
WorkerThreadTest,
::testing::Values(BlinkGC::PerThreadHeapMode));
TEST_P(WorkerThreadTest, ShouldScheduleToTerminateExecution) {
using ThreadState = WorkerThread::ThreadState; using ThreadState = WorkerThread::ThreadState;
MutexLocker dummyLock(m_workerThread->m_threadStateMutex); MutexLocker dummyLock(m_workerThread->m_threadStateMutex);
...@@ -151,7 +141,7 @@ TEST_P(WorkerThreadTest, ShouldScheduleToTerminateExecution) { ...@@ -151,7 +141,7 @@ TEST_P(WorkerThreadTest, ShouldScheduleToTerminateExecution) {
m_workerThread->setExitCode(dummyLock, ExitCode::GracefullyTerminated); m_workerThread->setExitCode(dummyLock, ExitCode::GracefullyTerminated);
} }
TEST_P(WorkerThreadTest, AsyncTerminate_OnIdle) { TEST_F(WorkerThreadTest, AsyncTerminate_OnIdle) {
expectReportingCalls(); expectReportingCalls();
start(); start();
...@@ -167,7 +157,7 @@ TEST_P(WorkerThreadTest, AsyncTerminate_OnIdle) { ...@@ -167,7 +157,7 @@ TEST_P(WorkerThreadTest, AsyncTerminate_OnIdle) {
EXPECT_EQ(ExitCode::GracefullyTerminated, getExitCode()); EXPECT_EQ(ExitCode::GracefullyTerminated, getExitCode());
} }
TEST_P(WorkerThreadTest, SyncTerminate_OnIdle) { TEST_F(WorkerThreadTest, SyncTerminate_OnIdle) {
expectReportingCalls(); expectReportingCalls();
start(); start();
...@@ -179,7 +169,7 @@ TEST_P(WorkerThreadTest, SyncTerminate_OnIdle) { ...@@ -179,7 +169,7 @@ TEST_P(WorkerThreadTest, SyncTerminate_OnIdle) {
EXPECT_EQ(ExitCode::SyncForciblyTerminated, getExitCode()); EXPECT_EQ(ExitCode::SyncForciblyTerminated, getExitCode());
} }
TEST_P(WorkerThreadTest, AsyncTerminate_ImmediatelyAfterStart) { TEST_F(WorkerThreadTest, AsyncTerminate_ImmediatelyAfterStart) {
expectReportingCallsForWorkerPossiblyTerminatedBeforeInitialization(); expectReportingCallsForWorkerPossiblyTerminatedBeforeInitialization();
start(); start();
...@@ -190,7 +180,7 @@ TEST_P(WorkerThreadTest, AsyncTerminate_ImmediatelyAfterStart) { ...@@ -190,7 +180,7 @@ TEST_P(WorkerThreadTest, AsyncTerminate_ImmediatelyAfterStart) {
EXPECT_EQ(ExitCode::GracefullyTerminated, getExitCode()); EXPECT_EQ(ExitCode::GracefullyTerminated, getExitCode());
} }
TEST_P(WorkerThreadTest, SyncTerminate_ImmediatelyAfterStart) { TEST_F(WorkerThreadTest, SyncTerminate_ImmediatelyAfterStart) {
expectReportingCallsForWorkerPossiblyTerminatedBeforeInitialization(); expectReportingCallsForWorkerPossiblyTerminatedBeforeInitialization();
start(); start();
...@@ -210,7 +200,7 @@ TEST_P(WorkerThreadTest, SyncTerminate_ImmediatelyAfterStart) { ...@@ -210,7 +200,7 @@ TEST_P(WorkerThreadTest, SyncTerminate_ImmediatelyAfterStart) {
ExitCode::SyncForciblyTerminated == exitCode); ExitCode::SyncForciblyTerminated == exitCode);
} }
TEST_P(WorkerThreadTest, AsyncTerminate_WhileTaskIsRunning) { TEST_F(WorkerThreadTest, AsyncTerminate_WhileTaskIsRunning) {
const long long kForcibleTerminationDelayInMs = 10; const long long kForcibleTerminationDelayInMs = 10;
setForcibleTerminationDelayInMs(kForcibleTerminationDelayInMs); setForcibleTerminationDelayInMs(kForcibleTerminationDelayInMs);
...@@ -234,7 +224,7 @@ TEST_P(WorkerThreadTest, AsyncTerminate_WhileTaskIsRunning) { ...@@ -234,7 +224,7 @@ TEST_P(WorkerThreadTest, AsyncTerminate_WhileTaskIsRunning) {
EXPECT_EQ(ExitCode::AsyncForciblyTerminated, getExitCode()); EXPECT_EQ(ExitCode::AsyncForciblyTerminated, getExitCode());
} }
TEST_P(WorkerThreadTest, SyncTerminate_WhileTaskIsRunning) { TEST_F(WorkerThreadTest, SyncTerminate_WhileTaskIsRunning) {
expectReportingCallsForWorkerForciblyTerminated(); expectReportingCallsForWorkerForciblyTerminated();
startWithSourceCodeNotToFinish(); startWithSourceCodeNotToFinish();
m_reportingProxy->waitUntilScriptEvaluation(); m_reportingProxy->waitUntilScriptEvaluation();
...@@ -244,7 +234,7 @@ TEST_P(WorkerThreadTest, SyncTerminate_WhileTaskIsRunning) { ...@@ -244,7 +234,7 @@ TEST_P(WorkerThreadTest, SyncTerminate_WhileTaskIsRunning) {
EXPECT_EQ(ExitCode::SyncForciblyTerminated, getExitCode()); EXPECT_EQ(ExitCode::SyncForciblyTerminated, getExitCode());
} }
TEST_P(WorkerThreadTest, TEST_F(WorkerThreadTest,
AsyncTerminateAndThenSyncTerminate_WhileTaskIsRunning) { AsyncTerminateAndThenSyncTerminate_WhileTaskIsRunning) {
const long long kForcibleTerminationDelayInMs = 10; const long long kForcibleTerminationDelayInMs = 10;
setForcibleTerminationDelayInMs(kForcibleTerminationDelayInMs); setForcibleTerminationDelayInMs(kForcibleTerminationDelayInMs);
...@@ -264,7 +254,7 @@ TEST_P(WorkerThreadTest, ...@@ -264,7 +254,7 @@ TEST_P(WorkerThreadTest,
EXPECT_EQ(ExitCode::SyncForciblyTerminated, getExitCode()); EXPECT_EQ(ExitCode::SyncForciblyTerminated, getExitCode());
} }
TEST_P(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunningOnInitialization) { TEST_F(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunningOnInitialization) {
EXPECT_CALL(*m_reportingProxy, didCreateWorkerGlobalScope(_)).Times(1); EXPECT_CALL(*m_reportingProxy, didCreateWorkerGlobalScope(_)).Times(1);
EXPECT_CALL(*m_reportingProxy, didInitializeWorkerContext()).Times(1); EXPECT_CALL(*m_reportingProxy, didInitializeWorkerContext()).Times(1);
EXPECT_CALL(*m_reportingProxy, willDestroyWorkerGlobalScope()).Times(1); EXPECT_CALL(*m_reportingProxy, willDestroyWorkerGlobalScope()).Times(1);
...@@ -324,7 +314,7 @@ TEST_P(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunningOnInitialization) { ...@@ -324,7 +314,7 @@ TEST_P(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunningOnInitialization) {
EXPECT_EQ(ExitCode::GracefullyTerminated, getExitCode()); EXPECT_EQ(ExitCode::GracefullyTerminated, getExitCode());
} }
TEST_P(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunning) { TEST_F(WorkerThreadTest, Terminate_WhileDebuggerTaskIsRunning) {
expectReportingCalls(); expectReportingCalls();
start(); start();
m_workerThread->waitForInit(); m_workerThread->waitForInit();
......
...@@ -119,13 +119,11 @@ class MockWorkerThreadLifecycleObserver final ...@@ -119,13 +119,11 @@ class MockWorkerThreadLifecycleObserver final
class WorkerThreadForTest : public WorkerThread { class WorkerThreadForTest : public WorkerThread {
public: public:
WorkerThreadForTest(WorkerLoaderProxyProvider* mockWorkerLoaderProxyProvider, WorkerThreadForTest(WorkerLoaderProxyProvider* mockWorkerLoaderProxyProvider,
WorkerReportingProxy& mockWorkerReportingProxy, WorkerReportingProxy& mockWorkerReportingProxy)
BlinkGC::ThreadHeapMode threadHeapMode)
: WorkerThread(WorkerLoaderProxy::create(mockWorkerLoaderProxyProvider), : WorkerThread(WorkerLoaderProxy::create(mockWorkerLoaderProxyProvider),
mockWorkerReportingProxy), mockWorkerReportingProxy),
m_workerBackingThread( m_workerBackingThread(
WorkerBackingThread::createForTest("Test thread", threadHeapMode)) { WorkerBackingThread::createForTest("Test thread")) {}
}
~WorkerThreadForTest() override {} ~WorkerThreadForTest() override {}
......
...@@ -24,15 +24,13 @@ class WorkletThreadHolder { ...@@ -24,15 +24,13 @@ class WorkletThreadHolder {
return s_threadHolderInstance; return s_threadHolderInstance;
} }
static void ensureInstance(const char* threadName, static void ensureInstance(const char* threadName) {
BlinkGC::ThreadHeapMode threadHeapMode) {
DCHECK(isMainThread()); DCHECK(isMainThread());
MutexLocker locker(holderInstanceMutex()); MutexLocker locker(holderInstanceMutex());
if (s_threadHolderInstance) if (s_threadHolderInstance)
return; return;
s_threadHolderInstance = new WorkletThreadHolder<DerivedWorkletThread>; s_threadHolderInstance = new WorkletThreadHolder<DerivedWorkletThread>;
s_threadHolderInstance->initialize( s_threadHolderInstance->initialize(WorkerBackingThread::create(threadName));
WorkerBackingThread::create(threadName, threadHeapMode));
} }
static void ensureInstance(WebThread* thread) { static void ensureInstance(WebThread* thread) {
...@@ -44,13 +42,12 @@ class WorkletThreadHolder { ...@@ -44,13 +42,12 @@ class WorkletThreadHolder {
s_threadHolderInstance->initialize(WorkerBackingThread::create(thread)); s_threadHolderInstance->initialize(WorkerBackingThread::create(thread));
} }
static void createForTest(const char* threadName, static void createForTest(const char* threadName) {
BlinkGC::ThreadHeapMode threadHeapMode) {
MutexLocker locker(holderInstanceMutex()); MutexLocker locker(holderInstanceMutex());
DCHECK(!s_threadHolderInstance); DCHECK(!s_threadHolderInstance);
s_threadHolderInstance = new WorkletThreadHolder<DerivedWorkletThread>; s_threadHolderInstance = new WorkletThreadHolder<DerivedWorkletThread>;
s_threadHolderInstance->initialize( s_threadHolderInstance->initialize(
WorkerBackingThread::createForTest(threadName, threadHeapMode)); WorkerBackingThread::createForTest(threadName));
} }
static void createForTest(WebThread* thread) { static void createForTest(WebThread* thread) {
......
...@@ -50,8 +50,7 @@ ServiceWorkerThread::ServiceWorkerThread( ...@@ -50,8 +50,7 @@ ServiceWorkerThread::ServiceWorkerThread(
WorkerReportingProxy& workerReportingProxy) WorkerReportingProxy& workerReportingProxy)
: WorkerThread(std::move(workerLoaderProxy), workerReportingProxy), : WorkerThread(std::move(workerLoaderProxy), workerReportingProxy),
m_workerBackingThread( m_workerBackingThread(
WorkerBackingThread::create("ServiceWorker Thread", WorkerBackingThread::create("ServiceWorker Thread")) {}
BlinkGC::PerThreadHeapMode)) {}
ServiceWorkerThread::~ServiceWorkerThread() {} ServiceWorkerThread::~ServiceWorkerThread() {}
......
...@@ -63,8 +63,7 @@ void AudioWorkletThread::collectAllGarbage() { ...@@ -63,8 +63,7 @@ void AudioWorkletThread::collectAllGarbage() {
void AudioWorkletThread::ensureSharedBackingThread() { void AudioWorkletThread::ensureSharedBackingThread() {
DCHECK(isMainThread()); DCHECK(isMainThread());
WorkletThreadHolder<AudioWorkletThread>::ensureInstance( WorkletThreadHolder<AudioWorkletThread>::ensureInstance("AudioWorkletThread");
"AudioWorkletThread", BlinkGC::PerThreadHeapMode);
} }
void AudioWorkletThread::clearSharedBackingThread() { void AudioWorkletThread::clearSharedBackingThread() {
...@@ -73,8 +72,7 @@ void AudioWorkletThread::clearSharedBackingThread() { ...@@ -73,8 +72,7 @@ void AudioWorkletThread::clearSharedBackingThread() {
} }
void AudioWorkletThread::createSharedBackingThreadForTest() { void AudioWorkletThread::createSharedBackingThreadForTest() {
WorkletThreadHolder<AudioWorkletThread>::createForTest( WorkletThreadHolder<AudioWorkletThread>::createForTest("AudioWorkletThread");
"AudioWorkletThread", BlinkGC::PerThreadHeapMode);
} }
WorkerOrWorkletGlobalScope* AudioWorkletThread::createWorkerGlobalScope( WorkerOrWorkletGlobalScope* AudioWorkletThread::createWorkerGlobalScope(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment