| Index: third_party/WebKit/Source/modules/compositorworker/CompositorWorkerThreadTest.cpp | 
| diff --git a/third_party/WebKit/Source/modules/compositorworker/CompositorWorkerManagerTest.cpp b/third_party/WebKit/Source/modules/compositorworker/CompositorWorkerThreadTest.cpp | 
| similarity index 81% | 
| rename from third_party/WebKit/Source/modules/compositorworker/CompositorWorkerManagerTest.cpp | 
| rename to third_party/WebKit/Source/modules/compositorworker/CompositorWorkerThreadTest.cpp | 
| index a0655a796002f0ba0b07442c822f979ecedacdd6..a45c18234aa74c259e502a371c96e40dd2f5b2a6 100644 | 
| --- a/third_party/WebKit/Source/modules/compositorworker/CompositorWorkerManagerTest.cpp | 
| +++ b/third_party/WebKit/Source/modules/compositorworker/CompositorWorkerThreadTest.cpp | 
| @@ -3,7 +3,7 @@ | 
| // found in the LICENSE file. | 
|  | 
| #include "config.h" | 
| -#include "modules/compositorworker/CompositorWorkerManager.h" | 
| +#include "modules/compositorworker/CompositorWorkerThread.h" | 
|  | 
| #include "bindings/core/v8/ScriptSourceCode.h" | 
| #include "bindings/core/v8/V8GCController.h" | 
| @@ -12,10 +12,10 @@ | 
| #include "core/workers/WorkerLoaderProxy.h" | 
| #include "core/workers/WorkerObjectProxy.h" | 
| #include "core/workers/WorkerThreadStartupData.h" | 
| -#include "modules/compositorworker/CompositorWorkerThread.h" | 
| #include "platform/NotImplemented.h" | 
| #include "platform/ThreadSafeFunctional.h" | 
| #include "platform/heap/Handle.h" | 
| +#include "platform/testing/TestingPlatformSupport.h" | 
| #include "platform/testing/UnitTestHelpers.h" | 
| #include "public/platform/Platform.h" | 
| #include "public/platform/WebWaitableEvent.h" | 
| @@ -32,7 +32,7 @@ public: | 
| { | 
| } | 
|  | 
| -    ~TestCompositorWorkerThread() override { } | 
| +    ~TestCompositorWorkerThread() override {} | 
|  | 
| void setCallbackAfterV8Termination(PassOwnPtr<Function<void()>> callback) | 
| { | 
| @@ -51,9 +51,11 @@ private: | 
| if (m_v8TerminationCallback) | 
| (*m_v8TerminationCallback)(); | 
| } | 
| + | 
| void willDestroyIsolate() override | 
| { | 
| -        V8GCController::collectAllGarbageForTesting(v8::Isolate::GetCurrent()); | 
| +        v8::Isolate::GetCurrent()->RequestGarbageCollectionForTesting(v8::Isolate::kFullGarbageCollection); | 
| +        Heap::collectAllGarbage(); | 
| CompositorWorkerThread::willDestroyIsolate(); | 
| } | 
|  | 
| @@ -70,16 +72,16 @@ public: | 
| } | 
|  | 
| // (Empty) WorkerReportingProxy implementation: | 
| -    virtual void reportException(const String& errorMessage, int lineNumber, int columnNumber, const String& sourceURL, int exceptionId) { } | 
| -    void reportConsoleMessage(PassRefPtrWillBeRawPtr<ConsoleMessage>) override { } | 
| -    void postMessageToPageInspector(const String&) override { } | 
| -    void postWorkerConsoleAgentEnabled() override { } | 
| +    virtual void reportException(const String& errorMessage, int lineNumber, int columnNumber, const String& sourceURL, int exceptionId) {} | 
| +    void reportConsoleMessage(PassRefPtrWillBeRawPtr<ConsoleMessage>) override {} | 
| +    void postMessageToPageInspector(const String&) override {} | 
| +    void postWorkerConsoleAgentEnabled() override {} | 
|  | 
| -    void didEvaluateWorkerScript(bool success) override { } | 
| -    void workerGlobalScopeStarted(WorkerGlobalScope*) override { } | 
| -    void workerGlobalScopeClosed() override { } | 
| -    void workerThreadTerminated() override { } | 
| -    void willDestroyWorkerGlobalScope() override { } | 
| +    void didEvaluateWorkerScript(bool success) override {} | 
| +    void workerGlobalScopeStarted(WorkerGlobalScope*) override {} | 
| +    void workerGlobalScopeClosed() override {} | 
| +    void workerThreadTerminated() override {} | 
| +    void willDestroyWorkerGlobalScope() override {} | 
|  | 
| ExecutionContext* executionContext() override { return m_executionContext.get(); } | 
|  | 
| @@ -93,9 +95,32 @@ private: | 
| RefPtrWillBePersistent<ExecutionContext> m_executionContext; | 
| }; | 
|  | 
| +class CompositorWorkerTestPlatform : public TestingPlatformSupport { | 
| +public: | 
| +    CompositorWorkerTestPlatform() | 
| +        : m_thread(adoptPtr(m_oldPlatform->createThread("Compositor"))) | 
| +    { | 
| +    } | 
| + | 
| +    WebThread* compositorThread() const override | 
| +    { | 
| +        return m_thread.get(); | 
| +    } | 
| + | 
| +    WebWaitableEvent* createWaitableEvent( | 
| +        WebWaitableEvent::ResetPolicy policy, | 
| +        WebWaitableEvent::InitialState state) override | 
| +    { | 
| +        return m_oldPlatform->createWaitableEvent(policy, state); | 
| +    } | 
| + | 
| +private: | 
| +    OwnPtr<WebThread> m_thread; | 
| +}; | 
| + | 
| } // namespace | 
|  | 
| -class CompositorWorkerManagerTest : public ::testing::Test { | 
| +class CompositorWorkerThreadTest : public ::testing::Test { | 
| public: | 
| void SetUp() override | 
| { | 
| @@ -106,8 +131,8 @@ public: | 
|  | 
| void TearDown() override | 
| { | 
| -        ASSERT(!managerHasThread()); | 
| -        ASSERT(!managerHasIsolate()); | 
| +        ASSERT(!hasThread()); | 
| +        ASSERT(!hasIsolate()); | 
| m_page.clear(); | 
| } | 
|  | 
| @@ -137,7 +162,7 @@ public: | 
| void checkWorkerCanExecuteScript(WorkerThread* worker) | 
| { | 
| OwnPtr<WebWaitableEvent> waitEvent = adoptPtr(Platform::current()->createWaitableEvent()); | 
| -        worker->backingThread().platformThread().taskRunner()->postTask(BLINK_FROM_HERE, threadSafeBind(&CompositorWorkerManagerTest::executeScriptInWorker, AllowCrossThreadAccess(this), | 
| +        worker->backingThread().platformThread().taskRunner()->postTask(BLINK_FROM_HERE, threadSafeBind(&CompositorWorkerThreadTest::executeScriptInWorker, AllowCrossThreadAccess(this), | 
| AllowCrossThreadAccess(worker), AllowCrossThreadAccess(waitEvent.get()))); | 
| waitEvent->wait(); | 
| } | 
| @@ -148,14 +173,14 @@ public: | 
| waitEvent->wait(); | 
| } | 
|  | 
| -    bool managerHasThread() const | 
| +    bool hasThread() const | 
| { | 
| -        return CompositorWorkerManager::instance()->m_thread; | 
| +        return CompositorWorkerThread::hasThreadForTest(); | 
| } | 
|  | 
| -    bool managerHasIsolate() const | 
| +    bool hasIsolate() const | 
| { | 
| -        return CompositorWorkerManager::instance()->m_isolate; | 
| +        return CompositorWorkerThread::hasIsolateForTest(); | 
| } | 
|  | 
| private: | 
| @@ -170,9 +195,10 @@ private: | 
| OwnPtr<DummyPageHolder> m_page; | 
| RefPtr<SecurityOrigin> m_securityOrigin; | 
| OwnPtr<WorkerObjectProxy> m_objectProxy; | 
| +    CompositorWorkerTestPlatform m_testPlatform; | 
| }; | 
|  | 
| -TEST_F(CompositorWorkerManagerTest, Basic) | 
| +TEST_F(CompositorWorkerThreadTest, Basic) | 
| { | 
| OwnPtr<WebWaitableEvent> creationEvent = adoptPtr(Platform::current()->createWaitableEvent()); | 
| RefPtr<CompositorWorkerThread> compositorWorker = createCompositorWorker(creationEvent.get()); | 
| @@ -182,12 +208,12 @@ TEST_F(CompositorWorkerManagerTest, Basic) | 
| } | 
|  | 
| // Tests that the same WebThread is used for new workers if the WebThread is still alive. | 
| -TEST_F(CompositorWorkerManagerTest, CreateSecondAndTerminateFirst) | 
| +TEST_F(CompositorWorkerThreadTest, CreateSecondAndTerminateFirst) | 
| { | 
| // Create the first worker and wait until it is initialized. | 
| OwnPtr<WebWaitableEvent> firstCreationEvent = adoptPtr(Platform::current()->createWaitableEvent()); | 
| RefPtr<CompositorWorkerThread> firstWorker = createCompositorWorker(firstCreationEvent.get()); | 
| -    WebThreadSupportingGC* firstThread = &CompositorWorkerManager::instance()->compositorWorkerThread(); | 
| +    WebThreadSupportingGC* firstThread = CompositorWorkerThread::sharedBackingThread(); | 
| ASSERT(firstThread); | 
| waitForWaitableEventAfterIteratingCurrentLoop(firstCreationEvent.get()); | 
| v8::Isolate* firstIsolate = firstWorker->isolate(); | 
| @@ -200,7 +226,7 @@ TEST_F(CompositorWorkerManagerTest, CreateSecondAndTerminateFirst) | 
|  | 
| // Wait until the second worker is initialized. Verify that the second worker is using the same | 
| // thread and Isolate as the first worker. | 
| -    WebThreadSupportingGC* secondThread = &CompositorWorkerManager::instance()->compositorWorkerThread(); | 
| +    WebThreadSupportingGC* secondThread = CompositorWorkerThread::sharedBackingThread(); | 
| ASSERT(secondThread); | 
| waitForWaitableEventAfterIteratingCurrentLoop(secondCreationEvent.get()); | 
| EXPECT_EQ(firstThread, secondThread); | 
| @@ -222,12 +248,12 @@ static void checkCurrentIsolate(v8::Isolate* isolate, WebWaitableEvent* event) | 
| } | 
|  | 
| // Tests that a new WebThread is created if all existing workers are terminated before a new worker is created. | 
| -TEST_F(CompositorWorkerManagerTest, TerminateFirstAndCreateSecond) | 
| +TEST_F(CompositorWorkerThreadTest, TerminateFirstAndCreateSecond) | 
| { | 
| // Create the first worker, wait until it is initialized, and terminate it. | 
| OwnPtr<WebWaitableEvent> creationEvent = adoptPtr(Platform::current()->createWaitableEvent()); | 
| RefPtr<CompositorWorkerThread> compositorWorker = createCompositorWorker(creationEvent.get()); | 
| -    WebThreadSupportingGC* firstThread = &CompositorWorkerManager::instance()->compositorWorkerThread(); | 
| +    WebThreadSupportingGC* firstThread = CompositorWorkerThread::sharedBackingThread(); | 
| waitForWaitableEventAfterIteratingCurrentLoop(creationEvent.get()); | 
| ASSERT(compositorWorker->isolate()); | 
| compositorWorker->terminateAndWait(); | 
| @@ -236,7 +262,7 @@ TEST_F(CompositorWorkerManagerTest, TerminateFirstAndCreateSecond) | 
| // thread will have been destroyed after destroying the first worker. | 
| creationEvent = adoptPtr(Platform::current()->createWaitableEvent()); | 
| compositorWorker = createCompositorWorker(creationEvent.get()); | 
| -    WebThreadSupportingGC* secondThread = &CompositorWorkerManager::instance()->compositorWorkerThread(); | 
| +    WebThreadSupportingGC* secondThread = CompositorWorkerThread::sharedBackingThread(); | 
| EXPECT_NE(firstThread, secondThread); | 
| waitForWaitableEventAfterIteratingCurrentLoop(creationEvent.get()); | 
|  | 
| @@ -250,7 +276,7 @@ TEST_F(CompositorWorkerManagerTest, TerminateFirstAndCreateSecond) | 
| } | 
|  | 
| // Tests that v8::Isolate and WebThread are correctly set-up if a worker is created while another is terminating. | 
| -TEST_F(CompositorWorkerManagerTest, CreatingSecondDuringTerminationOfFirst) | 
| +TEST_F(CompositorWorkerThreadTest, CreatingSecondDuringTerminationOfFirst) | 
| { | 
| OwnPtr<WebWaitableEvent> firstCreationEvent = adoptPtr(Platform::current()->createWaitableEvent()); | 
| RefPtr<TestCompositorWorkerThread> firstWorker = createCompositorWorker(firstCreationEvent.get()); | 
| @@ -262,7 +288,7 @@ TEST_F(CompositorWorkerManagerTest, CreatingSecondDuringTerminationOfFirst) | 
| // the first worker terminates its isolate. | 
| OwnPtr<WebWaitableEvent> secondCreationEvent = adoptPtr(Platform::current()->createWaitableEvent()); | 
| RefPtr<CompositorWorkerThread> secondWorker; | 
| -    firstWorker->setCallbackAfterV8Termination(bind(&CompositorWorkerManagerTest::createWorkerAdapter, this, &secondWorker, secondCreationEvent.get())); | 
| +    firstWorker->setCallbackAfterV8Termination(bind(&CompositorWorkerThreadTest::createWorkerAdapter, this, &secondWorker, secondCreationEvent.get())); | 
| firstWorker->terminateAndWait(); | 
| ASSERT(secondWorker); | 
|  | 
|  |