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

Side by Side Diff: Source/core/workers/WorkerThreadTest.cpp

Issue 1303153005: Introduce WebTaskRunner Patch 3/5 (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add missing #include Created 5 years, 3 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/workers/WorkerThread.h" 6 #include "core/workers/WorkerThread.h"
7 7
8 #include "core/inspector/ConsoleMessage.h" 8 #include "core/inspector/ConsoleMessage.h"
9 #include "core/workers/WorkerReportingProxy.h" 9 #include "core/workers/WorkerReportingProxy.h"
10 #include "core/workers/WorkerThreadStartupData.h" 10 #include "core/workers/WorkerThreadStartupData.h"
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 private: 138 private:
139 OwnPtr<WebThreadSupportingGC> m_thread; 139 OwnPtr<WebThreadSupportingGC> m_thread;
140 OwnPtr<WebWaitableEvent> m_scriptLoadedEvent; 140 OwnPtr<WebWaitableEvent> m_scriptLoadedEvent;
141 }; 141 };
142 142
143 void notifyScriptLoadedEventToWorkerThreadForTest(WorkerThread* thread) 143 void notifyScriptLoadedEventToWorkerThreadForTest(WorkerThread* thread)
144 { 144 {
145 static_cast<WorkerThreadForTest*>(thread)->scriptLoaded(); 145 static_cast<WorkerThreadForTest*>(thread)->scriptLoaded();
146 } 146 }
147 147
148 class WakeupTask : public WebThread::Task { 148 class WakeupTask : public WebTaskRunner::Task {
149 public: 149 public:
150 WakeupTask() { } 150 WakeupTask() { }
151 151
152 ~WakeupTask() override { } 152 ~WakeupTask() override { }
153 153
154 void run() override { } 154 void run() override { }
155 }; 155 };
156 156
157 class PostDelayedWakeupTask : public WebThread::Task { 157 class PostDelayedWakeupTask : public WebTaskRunner::Task {
158 public: 158 public:
159 PostDelayedWakeupTask(WebScheduler* scheduler, long long delay) : m_schedule r(scheduler), m_delay(delay) { } 159 PostDelayedWakeupTask(WebScheduler* scheduler, long long delay) : m_schedule r(scheduler), m_delay(delay) { }
160 160
161 ~PostDelayedWakeupTask() override { } 161 ~PostDelayedWakeupTask() override { }
162 162
163 void run() override 163 void run() override
164 { 164 {
165 m_scheduler->postTimerTask(FROM_HERE, new WakeupTask(), m_delay); 165 m_scheduler->timerTaskRunner()->postDelayedTask(FROM_HERE, new WakeupTas k(), m_delay);
166 } 166 }
167 167
168 WebScheduler* m_scheduler; // Not owned. 168 WebScheduler* m_scheduler; // Not owned.
169 long long m_delay; 169 long long m_delay;
170 }; 170 };
171 171
172 class SignalTask : public WebThread::Task { 172 class SignalTask : public WebTaskRunner::Task {
173 public: 173 public:
174 SignalTask(WebWaitableEvent* completionEvent) : m_completionEvent(completion Event) { } 174 SignalTask(WebWaitableEvent* completionEvent) : m_completionEvent(completion Event) { }
175 175
176 ~SignalTask() override { } 176 ~SignalTask() override { }
177 177
178 void run() override 178 void run() override
179 { 179 {
180 m_completionEvent->signal(); 180 m_completionEvent->signal();
181 } 181 }
182 182
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 .Times(AtMost(1)); 284 .Times(AtMost(1));
285 EXPECT_CALL(*m_mockWorkerReportingProxy, workerThreadTerminated()) 285 EXPECT_CALL(*m_mockWorkerReportingProxy, workerThreadTerminated())
286 .Times(AtMost(1)); 286 .Times(AtMost(1));
287 EXPECT_CALL(*m_mockWorkerReportingProxy, willDestroyWorkerGlobalScope()) 287 EXPECT_CALL(*m_mockWorkerReportingProxy, willDestroyWorkerGlobalScope())
288 .Times(AtMost(1)); 288 .Times(AtMost(1));
289 startWithSourceCode(source); 289 startWithSourceCode(source);
290 m_workerThread->waitUntilScriptLoaded(); 290 m_workerThread->waitUntilScriptLoaded();
291 m_workerThread->terminateAndWait(); 291 m_workerThread->terminateAndWait();
292 } 292 }
293 293
294 class RepeatingTask : public WebThread::Task { 294 class RepeatingTask : public WebTaskRunner::Task {
295 public: 295 public:
296 RepeatingTask(WebScheduler* scheduler, WebWaitableEvent* completion) 296 RepeatingTask(WebScheduler* scheduler, WebWaitableEvent* completion)
297 : RepeatingTask(scheduler, completion, 0) { } 297 : RepeatingTask(scheduler, completion, 0) { }
298 298
299 ~RepeatingTask() override { } 299 ~RepeatingTask() override { }
300 300
301 void run() override 301 void run() override
302 { 302 {
303 m_taskCount++; 303 m_taskCount++;
304 if (m_taskCount == 10) 304 if (m_taskCount == 10)
305 m_completion->signal(); 305 m_completion->signal();
306 306
307 m_scheduler->postTimerTask( 307 m_scheduler->timerTaskRunner()->postTask(
308 FROM_HERE, new RepeatingTask(m_scheduler, m_completion, m_taskCount) , 0ul); 308 FROM_HERE, new RepeatingTask(m_scheduler, m_completion, m_taskCount) );
309 m_scheduler->postLoadingTask(FROM_HERE, new WakeupTask()); 309 m_scheduler->timerTaskRunner()->postTask(FROM_HERE, new WakeupTask());
310
311 } 310 }
312 311
313 private: 312 private:
314 RepeatingTask(WebScheduler* scheduler, WebWaitableEvent* completion, int tas kCount) 313 RepeatingTask(WebScheduler* scheduler, WebWaitableEvent* completion, int tas kCount)
315 : m_scheduler(scheduler) 314 : m_scheduler(scheduler)
316 , m_completion(completion) 315 , m_completion(completion)
317 , m_taskCount(taskCount) 316 , m_taskCount(taskCount)
318 { } 317 { }
319 318
320 WebScheduler* m_scheduler; // Not owned. 319 WebScheduler* m_scheduler; // Not owned.
321 WebWaitableEvent* m_completion; 320 WebWaitableEvent* m_completion;
322 int m_taskCount; 321 int m_taskCount;
323 }; 322 };
324 323
325 TEST_F(WorkerThreadTest, GcDoesNotOccurWhenNotIdle) 324 TEST_F(WorkerThreadTest, GcDoesNotOccurWhenNotIdle)
326 { 325 {
327 OwnPtr<WebWaitableEvent> completion = adoptPtr(Platform::current()->createWa itableEvent()); 326 OwnPtr<WebWaitableEvent> completion = adoptPtr(Platform::current()->createWa itableEvent());
328 327
329 EXPECT_CALL(*m_workerThread, doIdleGc(_)).Times(0); 328 EXPECT_CALL(*m_workerThread, doIdleGc(_)).Times(0);
330 329
331 expectWorkerLifetimeReportingCalls(); 330 expectWorkerLifetimeReportingCalls();
332 start(); 331 start();
333 waitForInit(); 332 waitForInit();
334 333
335 WebScheduler* scheduler = m_workerThread->backingThread().platformThread().s cheduler(); 334 WebScheduler* scheduler = m_workerThread->backingThread().platformThread().s cheduler();
336 335
337 // Post a repeating task that should prevent any GC from happening. 336 // Post a repeating task that should prevent any GC from happening.
338 scheduler->postLoadingTask(FROM_HERE, new RepeatingTask(scheduler, completio n.get())); 337 scheduler->loadingTaskRunner()->postTask(FROM_HERE, new RepeatingTask(schedu ler, completion.get()));
339 338
340 completion->wait(); 339 completion->wait();
341 340
342 // Make sure doIdleGc has not been called by this stage. 341 // Make sure doIdleGc has not been called by this stage.
343 Mock::VerifyAndClearExpectations(m_workerThread.get()); 342 Mock::VerifyAndClearExpectations(m_workerThread.get());
344 343
345 m_workerThread->terminateAndWait(); 344 m_workerThread->terminateAndWait();
346 } 345 }
347 346
348 } // namespace blink 347 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/workers/WorkerThread.cpp ('k') | Source/modules/compositorworker/CompositorWorkerManager.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698