| 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 0d1097144fdf45efd36cad0f7cc227288f5e8cb2..8fb299c9d7693bf4a41fbf1664d1646ac85b57d8 100644
|
| --- a/third_party/WebKit/Source/core/workers/WorkerThreadTest.cpp
|
| +++ b/third_party/WebKit/Source/core/workers/WorkerThreadTest.cpp
|
| @@ -4,16 +4,7 @@
|
|
|
| #include "core/workers/WorkerThread.h"
|
|
|
| -#include "bindings/core/v8/ScriptCallStack.h"
|
| -#include "bindings/core/v8/V8GCController.h"
|
| -#include "core/inspector/ConsoleMessage.h"
|
| -#include "core/workers/WorkerReportingProxy.h"
|
| -#include "core/workers/WorkerThreadStartupData.h"
|
| -#include "platform/NotImplemented.h"
|
| -#include "platform/Task.h"
|
| -#include "platform/ThreadSafeFunctional.h"
|
| -#include "platform/WaitableEvent.h"
|
| -#include "public/platform/WebAddressSpace.h"
|
| +#include "core/workers/WorkerThreadTestHelper.h"
|
| #include "public/platform/WebScheduler.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -26,127 +17,6 @@ using testing::Mock;
|
|
|
| namespace blink {
|
|
|
| -namespace {
|
| -
|
| -class MockWorkerLoaderProxyProvider : public WorkerLoaderProxyProvider {
|
| -public:
|
| - MockWorkerLoaderProxyProvider() { }
|
| - ~MockWorkerLoaderProxyProvider() override { }
|
| -
|
| - void postTaskToLoader(PassOwnPtr<ExecutionContextTask>) override
|
| - {
|
| - notImplemented();
|
| - }
|
| -
|
| - bool postTaskToWorkerGlobalScope(PassOwnPtr<ExecutionContextTask>) override
|
| - {
|
| - notImplemented();
|
| - return false;
|
| - }
|
| -};
|
| -
|
| -class MockWorkerReportingProxy : public WorkerReportingProxy {
|
| -public:
|
| - MockWorkerReportingProxy() { }
|
| - ~MockWorkerReportingProxy() override { }
|
| -
|
| - MOCK_METHOD5(reportException, void(const String& errorMessage, int lineNumber, int columnNumber, const String& sourceURL, int exceptionId));
|
| - MOCK_METHOD1(reportConsoleMessage, void(PassRefPtrWillBeRawPtr<ConsoleMessage>));
|
| - MOCK_METHOD1(postMessageToPageInspector, void(const String&));
|
| - MOCK_METHOD0(postWorkerConsoleAgentEnabled, void());
|
| - MOCK_METHOD1(didEvaluateWorkerScript, void(bool success));
|
| - MOCK_METHOD1(workerGlobalScopeStarted, void(WorkerGlobalScope*));
|
| - MOCK_METHOD0(workerGlobalScopeClosed, void());
|
| - MOCK_METHOD0(workerThreadTerminated, void());
|
| - MOCK_METHOD0(willDestroyWorkerGlobalScope, void());
|
| -};
|
| -
|
| -void notifyScriptLoadedEventToWorkerThreadForTest(WorkerThread*);
|
| -
|
| -class FakeWorkerGlobalScope : public WorkerGlobalScope {
|
| -public:
|
| - typedef WorkerGlobalScope Base;
|
| -
|
| - FakeWorkerGlobalScope(const KURL& url, const String& userAgent, WorkerThread* thread, PassOwnPtr<SecurityOrigin::PrivilegeData> starterOriginPrivilegeData, PassOwnPtrWillBeRawPtr<WorkerClients> workerClients)
|
| - : WorkerGlobalScope(url, userAgent, thread, monotonicallyIncreasingTime(), starterOriginPrivilegeData, workerClients, true /* withInspector */)
|
| - , m_thread(thread)
|
| - {
|
| - }
|
| -
|
| - ~FakeWorkerGlobalScope() override
|
| - {
|
| - }
|
| -
|
| - void scriptLoaded(size_t, size_t) override
|
| - {
|
| - notifyScriptLoadedEventToWorkerThreadForTest(m_thread);
|
| - }
|
| -
|
| - // EventTarget
|
| - const AtomicString& interfaceName() const override
|
| - {
|
| - return EventTargetNames::DedicatedWorkerGlobalScope;
|
| - }
|
| -
|
| - void logExceptionToConsole(const String&, int, const String&, int, int, PassRefPtr<ScriptCallStack>) override
|
| - {
|
| - }
|
| -
|
| -private:
|
| - WorkerThread* m_thread;
|
| -};
|
| -
|
| -class WorkerThreadForTest : public WorkerThread {
|
| -public:
|
| - WorkerThreadForTest(
|
| - WorkerLoaderProxyProvider* mockWorkerLoaderProxyProvider,
|
| - WorkerReportingProxy& mockWorkerReportingProxy)
|
| - : WorkerThread(WorkerLoaderProxy::create(mockWorkerLoaderProxyProvider), mockWorkerReportingProxy)
|
| - , m_thread(WebThreadSupportingGC::create("Test thread"))
|
| - , m_scriptLoadedEvent(adoptPtr(new WaitableEvent()))
|
| - {
|
| - }
|
| -
|
| - ~WorkerThreadForTest() override { }
|
| -
|
| - // WorkerThread implementation:
|
| - WebThreadSupportingGC& backingThread() override
|
| - {
|
| - return *m_thread;
|
| - }
|
| - void willDestroyIsolate() override
|
| - {
|
| - V8GCController::collectAllGarbageForTesting(v8::Isolate::GetCurrent());
|
| - WorkerThread::willDestroyIsolate();
|
| - }
|
| -
|
| - PassRefPtrWillBeRawPtr<WorkerGlobalScope> createWorkerGlobalScope(PassOwnPtr<WorkerThreadStartupData> startupData) override
|
| - {
|
| - return adoptRefWillBeNoop(new FakeWorkerGlobalScope(startupData->m_scriptURL, startupData->m_userAgent, this, startupData->m_starterOriginPrivilegeData.release(), startupData->m_workerClients.release()));
|
| - }
|
| -
|
| - void waitUntilScriptLoaded()
|
| - {
|
| - m_scriptLoadedEvent->wait();
|
| - }
|
| -
|
| - void scriptLoaded()
|
| - {
|
| - m_scriptLoadedEvent->signal();
|
| - }
|
| -
|
| -private:
|
| - OwnPtr<WebThreadSupportingGC> m_thread;
|
| - OwnPtr<WaitableEvent> m_scriptLoadedEvent;
|
| -};
|
| -
|
| -void notifyScriptLoadedEventToWorkerThreadForTest(WorkerThread* thread)
|
| -{
|
| - static_cast<WorkerThreadForTest*>(thread)->scriptLoaded();
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| class WorkerThreadTest : public testing::Test {
|
| public:
|
| void SetUp() override
|
| @@ -171,30 +41,12 @@ public:
|
|
|
| void startWithSourceCode(const String& source)
|
| {
|
| - OwnPtr<Vector<CSPHeaderAndType>> headers = adoptPtr(new Vector<CSPHeaderAndType>());
|
| - CSPHeaderAndType headerAndType("contentSecurityPolicy", ContentSecurityPolicyHeaderTypeReport);
|
| - headers->append(headerAndType);
|
| -
|
| - OwnPtrWillBeRawPtr<WorkerClients> clients = nullptr;
|
| -
|
| - m_workerThread->start(WorkerThreadStartupData::create(
|
| - KURL(ParsedURLString, "http://fake.url/"),
|
| - "fake user agent",
|
| - source,
|
| - nullptr,
|
| - DontPauseWorkerGlobalScopeOnStart,
|
| - headers.release(),
|
| - m_securityOrigin.get(),
|
| - clients.release(),
|
| - WebAddressSpaceLocal,
|
| - V8CacheOptionsDefault));
|
| + m_workerThread->startWithSourceCode(m_securityOrigin.get(), source);
|
| }
|
|
|
| void waitForInit()
|
| {
|
| - OwnPtr<WaitableEvent> completionEvent = adoptPtr(new WaitableEvent());
|
| - m_workerThread->backingThread().postTask(BLINK_FROM_HERE, threadSafeBind(&WaitableEvent::signal, AllowCrossThreadAccess(completionEvent.get())));
|
| - completionEvent->wait();
|
| + m_workerThread->waitForInit();
|
| }
|
|
|
| protected:
|
|
|