Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(528)

Side by Side Diff: third_party/WebKit/Source/core/workers/WorkerThreadTestHelper.h

Issue 1257343003: [LoaderTest] Add unit tests for Document/WorkerThreadableLoader (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase, Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "bindings/core/v8/ScriptCallStack.h"
6 #include "bindings/core/v8/V8GCController.h"
7 #include "core/inspector/ConsoleMessage.h"
8 #include "core/workers/WorkerReportingProxy.h"
9 #include "core/workers/WorkerThread.h"
10 #include "core/workers/WorkerThreadStartupData.h"
11 #include "platform/NotImplemented.h"
12 #include "platform/WaitableEvent.h"
13 #include "testing/gmock/include/gmock/gmock.h"
tyoshino (SeeGerritForStatus) 2016/03/02 07:57:59 add PassOwnPtr.h add Heap.h add WorkerLoaderProxy.
hiroshige 2016/03/08 23:40:59 Added.
tyoshino (SeeGerritForStatus) 2016/03/09 06:26:12 Right, sorry!
14
15 namespace blink {
16
17 class MockWorkerLoaderProxyProvider : public WorkerLoaderProxyProvider {
18 public:
19 MockWorkerLoaderProxyProvider() { }
20 ~MockWorkerLoaderProxyProvider() override { }
21
22 void postTaskToLoader(PassOwnPtr<ExecutionContextTask>) override
23 {
24 notImplemented();
25 }
26
27 bool postTaskToWorkerGlobalScope(PassOwnPtr<ExecutionContextTask>) override
28 {
29 notImplemented();
30 return false;
31 }
32 };
33
34 class MockWorkerReportingProxy : public WorkerReportingProxy {
35 public:
36 MockWorkerReportingProxy() { }
37 ~MockWorkerReportingProxy() override { }
38
39 MOCK_METHOD5(reportException, void(const String& errorMessage, int lineNumbe r, int columnNumber, const String& sourceURL, int exceptionId));
40 MOCK_METHOD1(reportConsoleMessage, void(PassRefPtrWillBeRawPtr<ConsoleMessag e>));
41 MOCK_METHOD1(postMessageToPageInspector, void(const String&));
42 MOCK_METHOD0(postWorkerConsoleAgentEnabled, void());
43 MOCK_METHOD1(didEvaluateWorkerScript, void(bool success));
44 MOCK_METHOD1(workerGlobalScopeStarted, void(WorkerGlobalScope*));
45 MOCK_METHOD0(workerGlobalScopeClosed, void());
46 MOCK_METHOD0(workerThreadTerminated, void());
47 MOCK_METHOD0(willDestroyWorkerGlobalScope, void());
48 };
49
50 void notifyScriptLoadedEventToWorkerThreadForTest(WorkerThread*);
51
52 class FakeWorkerGlobalScope : public WorkerGlobalScope {
53 public:
54 typedef WorkerGlobalScope Base;
55
56 FakeWorkerGlobalScope(const KURL& url, const String& userAgent, WorkerThread * thread, PassOwnPtr<SecurityOrigin::PrivilegeData> starterOriginPrivilegeData, PassOwnPtrWillBeRawPtr<WorkerClients> workerClients)
57 : WorkerGlobalScope(url, userAgent, thread, monotonicallyIncreasingTime( ), starterOriginPrivilegeData, workerClients)
58 , m_thread(thread)
59 {
60 }
61
62 ~FakeWorkerGlobalScope() override
63 {
64 }
65
66 void scriptLoaded(size_t, size_t) override
67 {
68 notifyScriptLoadedEventToWorkerThreadForTest(m_thread);
69 }
70
71 // EventTarget
72 const AtomicString& interfaceName() const override
73 {
74 return EventTargetNames::DedicatedWorkerGlobalScope;
75 }
76
77 void logExceptionToConsole(const String&, int, const String&, int, int, Pass RefPtr<ScriptCallStack>) override
78 {
79 }
80
81 private:
82 WorkerThread* m_thread;
83 };
84
85 class WorkerThreadForTest : public WorkerThread {
86 public:
87 WorkerThreadForTest(
88 WorkerLoaderProxyProvider* mockWorkerLoaderProxyProvider,
89 WorkerReportingProxy& mockWorkerReportingProxy)
90 : WorkerThread(WorkerLoaderProxy::create(mockWorkerLoaderProxyProvider), mockWorkerReportingProxy)
91 , m_thread(WebThreadSupportingGC::create("Test thread"))
92 , m_scriptLoadedEvent(adoptPtr(new WaitableEvent()))
93 {
94 ASSERT(m_thread);
95 }
96
97 ~WorkerThreadForTest() override { }
98
99 // WorkerThread implementation:
100 WebThreadSupportingGC& backingThread() override
101 {
102 ASSERT(m_thread);
103 return *m_thread;
104 }
105 void willDestroyIsolate() override
106 {
107 V8GCController::collectAllGarbageForTesting(v8::Isolate::GetCurrent());
108 WorkerThread::willDestroyIsolate();
109 }
110
111 PassRefPtrWillBeRawPtr<WorkerGlobalScope> createWorkerGlobalScope(PassOwnPtr <WorkerThreadStartupData> startupData) override
112 {
113 return adoptRefWillBeNoop(new FakeWorkerGlobalScope(startupData->m_scrip tURL, startupData->m_userAgent, this, startupData->m_starterOriginPrivilegeData. release(), startupData->m_workerClients.release()));
114 }
115
116 void waitUntilScriptLoaded()
117 {
118 m_scriptLoadedEvent->wait();
119 }
120
121 void scriptLoaded()
122 {
123 m_scriptLoadedEvent->signal();
124 }
125
126 private:
127 OwnPtr<WebThreadSupportingGC> m_thread;
128 OwnPtr<WaitableEvent> m_scriptLoadedEvent;
129 };
130
131 inline void notifyScriptLoadedEventToWorkerThreadForTest(WorkerThread* thread)
132 {
133 static_cast<WorkerThreadForTest*>(thread)->scriptLoaded();
134 }
135
136 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698