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

Side by Side Diff: third_party/WebKit/Source/core/dom/ScriptRunnerTest.cpp

Issue 2266443002: Optimize posting of WTF::Closure and improve scheduler test mocks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cut back to just the WTF::Closure fix plus the scheduler test mock refactor. Created 4 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 "core/dom/ScriptRunner.h" 5 #include "core/dom/ScriptRunner.h"
6 6
7 #include "core/dom/Document.h" 7 #include "core/dom/Document.h"
8 #include "core/dom/Element.h" 8 #include "core/dom/Element.h"
9 #include "core/dom/ScriptLoader.h" 9 #include "core/dom/ScriptLoader.h"
10 #include "platform/heap/Handle.h" 10 #include "platform/heap/Handle.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 WTF::Vector<int> m_order; 67 WTF::Vector<int> m_order;
68 }; 68 };
69 69
70 TEST_F(ScriptRunnerTest, QueueSingleScript_Async) 70 TEST_F(ScriptRunnerTest, QueueSingleScript_Async)
71 { 71 {
72 MockScriptLoader* scriptLoader = MockScriptLoader::create(m_element.get()); 72 MockScriptLoader* scriptLoader = MockScriptLoader::create(m_element.get());
73 m_scriptRunner->queueScriptForExecution(scriptLoader, ScriptRunner::ASYNC_EX ECUTION); 73 m_scriptRunner->queueScriptForExecution(scriptLoader, ScriptRunner::ASYNC_EX ECUTION);
74 m_scriptRunner->notifyScriptReady(scriptLoader, ScriptRunner::ASYNC_EXECUTIO N); 74 m_scriptRunner->notifyScriptReady(scriptLoader, ScriptRunner::ASYNC_EXECUTIO N);
75 75
76 EXPECT_CALL(*scriptLoader, execute()); 76 EXPECT_CALL(*scriptLoader, execute());
77 m_platform.mockWebScheduler()->runAllTasks(); 77 m_platform.runUntilIdle();
78 } 78 }
79 79
80 TEST_F(ScriptRunnerTest, QueueSingleScript_InOrder) 80 TEST_F(ScriptRunnerTest, QueueSingleScript_InOrder)
81 { 81 {
82 MockScriptLoader* scriptLoader = MockScriptLoader::create(m_element.get()); 82 MockScriptLoader* scriptLoader = MockScriptLoader::create(m_element.get());
83 m_scriptRunner->queueScriptForExecution(scriptLoader, ScriptRunner::IN_ORDER _EXECUTION); 83 m_scriptRunner->queueScriptForExecution(scriptLoader, ScriptRunner::IN_ORDER _EXECUTION);
84 84
85 EXPECT_CALL(*scriptLoader, isReady()).WillOnce(Return(true)); 85 EXPECT_CALL(*scriptLoader, isReady()).WillOnce(Return(true));
86 EXPECT_CALL(*scriptLoader, execute()); 86 EXPECT_CALL(*scriptLoader, execute());
87 87
88 m_scriptRunner->notifyScriptReady(scriptLoader, ScriptRunner::IN_ORDER_EXECU TION); 88 m_scriptRunner->notifyScriptReady(scriptLoader, ScriptRunner::IN_ORDER_EXECU TION);
89 89
90 m_platform.mockWebScheduler()->runAllTasks(); 90 m_platform.runUntilIdle();
91 } 91 }
92 92
93 TEST_F(ScriptRunnerTest, QueueMultipleScripts_InOrder) 93 TEST_F(ScriptRunnerTest, QueueMultipleScripts_InOrder)
94 { 94 {
95 MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get()); 95 MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get());
96 MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get()); 96 MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get());
97 MockScriptLoader* scriptLoader3 = MockScriptLoader::create(m_element.get()); 97 MockScriptLoader* scriptLoader3 = MockScriptLoader::create(m_element.get());
98 98
99 HeapVector<Member<MockScriptLoader>> scriptLoaders; 99 HeapVector<Member<MockScriptLoader>> scriptLoaders;
100 scriptLoaders.append(scriptLoader1); 100 scriptLoaders.append(scriptLoader1);
(...skipping 17 matching lines...) Expand all
118 for (size_t i = 0; i < scriptLoaders.size(); ++i) { 118 for (size_t i = 0; i < scriptLoaders.size(); ++i) {
119 EXPECT_CALL(*scriptLoaders[i], isReady()) 119 EXPECT_CALL(*scriptLoaders[i], isReady())
120 .WillRepeatedly(Invoke([&isReady, i] { 120 .WillRepeatedly(Invoke([&isReady, i] {
121 return isReady[i]; 121 return isReady[i];
122 })); 122 }));
123 } 123 }
124 124
125 for (int i = 2; i >= 0; i--) { 125 for (int i = 2; i >= 0; i--) {
126 isReady[i] = true; 126 isReady[i] = true;
127 m_scriptRunner->notifyScriptReady(scriptLoaders[i], ScriptRunner::IN_ORD ER_EXECUTION); 127 m_scriptRunner->notifyScriptReady(scriptLoaders[i], ScriptRunner::IN_ORD ER_EXECUTION);
128 m_platform.mockWebScheduler()->runAllTasks(); 128 m_platform.runUntilIdle();
129 } 129 }
130 130
131 // But ensure the scripts were run in the expected order. 131 // But ensure the scripts were run in the expected order.
132 EXPECT_THAT(m_order, ElementsAre(1, 2, 3)); 132 EXPECT_THAT(m_order, ElementsAre(1, 2, 3));
133 } 133 }
134 134
135 TEST_F(ScriptRunnerTest, QueueMixedScripts) 135 TEST_F(ScriptRunnerTest, QueueMixedScripts)
136 { 136 {
137 MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get()); 137 MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get());
138 MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get()); 138 MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 EXPECT_CALL(*scriptLoader3, execute()).WillOnce(Invoke([this] { 173 EXPECT_CALL(*scriptLoader3, execute()).WillOnce(Invoke([this] {
174 m_order.append(3); 174 m_order.append(3);
175 })); 175 }));
176 EXPECT_CALL(*scriptLoader4, execute()).WillOnce(Invoke([this] { 176 EXPECT_CALL(*scriptLoader4, execute()).WillOnce(Invoke([this] {
177 m_order.append(4); 177 m_order.append(4);
178 })); 178 }));
179 EXPECT_CALL(*scriptLoader5, execute()).WillOnce(Invoke([this] { 179 EXPECT_CALL(*scriptLoader5, execute()).WillOnce(Invoke([this] {
180 m_order.append(5); 180 m_order.append(5);
181 })); 181 }));
182 182
183 m_platform.mockWebScheduler()->runAllTasks(); 183 m_platform.runUntilIdle();
184 184
185 // Async tasks are expected to run first. 185 // Async tasks are expected to run first.
186 EXPECT_THAT(m_order, ElementsAre(4, 5, 1, 2, 3)); 186 EXPECT_THAT(m_order, ElementsAre(4, 5, 1, 2, 3));
187 } 187 }
188 188
189 TEST_F(ScriptRunnerTest, QueueReentrantScript_Async) 189 TEST_F(ScriptRunnerTest, QueueReentrantScript_Async)
190 { 190 {
191 MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get()); 191 MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get());
192 MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get()); 192 MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get());
193 MockScriptLoader* scriptLoader3 = MockScriptLoader::create(m_element.get()); 193 MockScriptLoader* scriptLoader3 = MockScriptLoader::create(m_element.get());
(...skipping 14 matching lines...) Expand all
208 m_order.append(2); 208 m_order.append(2);
209 m_scriptRunner->notifyScriptReady(scriptLoader, ScriptRunner::ASYNC_EXEC UTION); 209 m_scriptRunner->notifyScriptReady(scriptLoader, ScriptRunner::ASYNC_EXEC UTION);
210 })); 210 }));
211 211
212 EXPECT_CALL(*scriptLoader3, execute()).WillOnce(Invoke([this] { 212 EXPECT_CALL(*scriptLoader3, execute()).WillOnce(Invoke([this] {
213 m_order.append(3); 213 m_order.append(3);
214 })); 214 }));
215 215
216 // Make sure that re-entrant calls to notifyScriptReady don't cause ScriptRu nner::execute to do 216 // Make sure that re-entrant calls to notifyScriptReady don't cause ScriptRu nner::execute to do
217 // more work than expected. 217 // more work than expected.
218 m_platform.mockWebScheduler()->runSingleTask(); 218 m_platform.runSingleTask();
219 EXPECT_THAT(m_order, ElementsAre(1)); 219 EXPECT_THAT(m_order, ElementsAre(1));
220 220
221 m_platform.mockWebScheduler()->runSingleTask(); 221 m_platform.runSingleTask();
222 EXPECT_THAT(m_order, ElementsAre(1, 2)); 222 EXPECT_THAT(m_order, ElementsAre(1, 2));
223 223
224 m_platform.mockWebScheduler()->runSingleTask(); 224 m_platform.runSingleTask();
225 EXPECT_THAT(m_order, ElementsAre(1, 2, 3)); 225 EXPECT_THAT(m_order, ElementsAre(1, 2, 3));
226 } 226 }
227 227
228 TEST_F(ScriptRunnerTest, QueueReentrantScript_InOrder) 228 TEST_F(ScriptRunnerTest, QueueReentrantScript_InOrder)
229 { 229 {
230 MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get()); 230 MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get());
231 MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get()); 231 MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get());
232 MockScriptLoader* scriptLoader3 = MockScriptLoader::create(m_element.get()); 232 MockScriptLoader* scriptLoader3 = MockScriptLoader::create(m_element.get());
233 233
234 EXPECT_CALL(*scriptLoader1, isReady()).WillRepeatedly(Return(true)); 234 EXPECT_CALL(*scriptLoader1, isReady()).WillRepeatedly(Return(true));
(...skipping 18 matching lines...) Expand all
253 m_scriptRunner->queueScriptForExecution(scriptLoader, ScriptRunner:: IN_ORDER_EXECUTION); 253 m_scriptRunner->queueScriptForExecution(scriptLoader, ScriptRunner:: IN_ORDER_EXECUTION);
254 m_scriptRunner->notifyScriptReady(scriptLoader3, ScriptRunner::IN_OR DER_EXECUTION); 254 m_scriptRunner->notifyScriptReady(scriptLoader3, ScriptRunner::IN_OR DER_EXECUTION);
255 })); 255 }));
256 256
257 EXPECT_CALL(*scriptLoader3, execute()).WillOnce(Invoke([this] { 257 EXPECT_CALL(*scriptLoader3, execute()).WillOnce(Invoke([this] {
258 m_order.append(3); 258 m_order.append(3);
259 })); 259 }));
260 260
261 // Make sure that re-entrant calls to queueScriptForExecution don't cause Sc riptRunner::execute to do 261 // Make sure that re-entrant calls to queueScriptForExecution don't cause Sc riptRunner::execute to do
262 // more work than expected. 262 // more work than expected.
263 m_platform.mockWebScheduler()->runSingleTask(); 263 m_platform.runSingleTask();
264 EXPECT_THAT(m_order, ElementsAre(1)); 264 EXPECT_THAT(m_order, ElementsAre(1));
265 265
266 m_platform.mockWebScheduler()->runSingleTask(); 266 m_platform.runSingleTask();
267 EXPECT_THAT(m_order, ElementsAre(1, 2)); 267 EXPECT_THAT(m_order, ElementsAre(1, 2));
268 268
269 m_platform.mockWebScheduler()->runSingleTask(); 269 m_platform.runSingleTask();
270 EXPECT_THAT(m_order, ElementsAre(1, 2, 3)); 270 EXPECT_THAT(m_order, ElementsAre(1, 2, 3));
271 } 271 }
272 272
273 TEST_F(ScriptRunnerTest, QueueReentrantScript_ManyAsyncScripts) 273 TEST_F(ScriptRunnerTest, QueueReentrantScript_ManyAsyncScripts)
274 { 274 {
275 MockScriptLoader* scriptLoaders[20]; 275 MockScriptLoader* scriptLoaders[20];
276 for (int i = 0; i < 20; i++) 276 for (int i = 0; i < 20; i++)
277 scriptLoaders[i] = nullptr; 277 scriptLoaders[i] = nullptr;
278 278
279 for (int i = 0; i < 20; i++) { 279 for (int i = 0; i < 20; i++) {
(...skipping 11 matching lines...) Expand all
291 291
292 m_scriptRunner->notifyScriptReady(scriptLoaders[0], ScriptRunner::ASYNC_EXEC UTION); 292 m_scriptRunner->notifyScriptReady(scriptLoaders[0], ScriptRunner::ASYNC_EXEC UTION);
293 m_scriptRunner->notifyScriptReady(scriptLoaders[1], ScriptRunner::ASYNC_EXEC UTION); 293 m_scriptRunner->notifyScriptReady(scriptLoaders[1], ScriptRunner::ASYNC_EXEC UTION);
294 294
295 EXPECT_CALL(*scriptLoaders[0], execute()).WillOnce(Invoke([&scriptLoaders, t his] { 295 EXPECT_CALL(*scriptLoaders[0], execute()).WillOnce(Invoke([&scriptLoaders, t his] {
296 for (int i = 2; i < 20; i++) 296 for (int i = 2; i < 20; i++)
297 m_scriptRunner->notifyScriptReady(scriptLoaders[i], ScriptRunner::AS YNC_EXECUTION); 297 m_scriptRunner->notifyScriptReady(scriptLoaders[i], ScriptRunner::AS YNC_EXECUTION);
298 m_order.append(0); 298 m_order.append(0);
299 })); 299 }));
300 300
301 m_platform.mockWebScheduler()->runAllTasks(); 301 m_platform.runUntilIdle();
302 302
303 int expected[] = { 303 int expected[] = {
304 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 304 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
305 }; 305 };
306 306
307 EXPECT_THAT(m_order, testing::ElementsAreArray(expected)); 307 EXPECT_THAT(m_order, testing::ElementsAreArray(expected));
308 } 308 }
309 309
310 TEST_F(ScriptRunnerTest, ResumeAndSuspend_InOrder) 310 TEST_F(ScriptRunnerTest, ResumeAndSuspend_InOrder)
311 { 311 {
(...skipping 29 matching lines...) Expand all
341 EXPECT_CALL(*scriptLoader2, isReady()) 341 EXPECT_CALL(*scriptLoader2, isReady())
342 .WillRepeatedly(Return(true)); 342 .WillRepeatedly(Return(true));
343 EXPECT_CALL(*scriptLoader3, isReady()) 343 EXPECT_CALL(*scriptLoader3, isReady())
344 .WillRepeatedly(Return(false)); 344 .WillRepeatedly(Return(false));
345 m_scriptRunner->notifyScriptReady(scriptLoader2, ScriptRunner::IN_ORDER_EXEC UTION); 345 m_scriptRunner->notifyScriptReady(scriptLoader2, ScriptRunner::IN_ORDER_EXEC UTION);
346 346
347 EXPECT_CALL(*scriptLoader3, isReady()) 347 EXPECT_CALL(*scriptLoader3, isReady())
348 .WillRepeatedly(Return(true)); 348 .WillRepeatedly(Return(true));
349 m_scriptRunner->notifyScriptReady(scriptLoader3, ScriptRunner::IN_ORDER_EXEC UTION); 349 m_scriptRunner->notifyScriptReady(scriptLoader3, ScriptRunner::IN_ORDER_EXEC UTION);
350 350
351 m_platform.mockWebScheduler()->runSingleTask(); 351 m_platform.runSingleTask();
352 m_scriptRunner->suspend(); 352 m_scriptRunner->suspend();
353 m_scriptRunner->resume(); 353 m_scriptRunner->resume();
354 m_platform.mockWebScheduler()->runAllTasks(); 354 m_platform.runUntilIdle();
355 355
356 // Make sure elements are correct and in right order. 356 // Make sure elements are correct and in right order.
357 EXPECT_THAT(m_order, ElementsAre(1, 2, 3)); 357 EXPECT_THAT(m_order, ElementsAre(1, 2, 3));
358 } 358 }
359 359
360 TEST_F(ScriptRunnerTest, ResumeAndSuspend_Async) 360 TEST_F(ScriptRunnerTest, ResumeAndSuspend_Async)
361 { 361 {
362 MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get()); 362 MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get());
363 MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get()); 363 MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get());
364 MockScriptLoader* scriptLoader3 = MockScriptLoader::create(m_element.get()); 364 MockScriptLoader* scriptLoader3 = MockScriptLoader::create(m_element.get());
(...skipping 12 matching lines...) Expand all
377 })); 377 }));
378 EXPECT_CALL(*scriptLoader2, execute()) 378 EXPECT_CALL(*scriptLoader2, execute())
379 .WillOnce(Invoke([this] { 379 .WillOnce(Invoke([this] {
380 m_order.append(2); 380 m_order.append(2);
381 })); 381 }));
382 EXPECT_CALL(*scriptLoader3, execute()) 382 EXPECT_CALL(*scriptLoader3, execute())
383 .WillOnce(Invoke([this] { 383 .WillOnce(Invoke([this] {
384 m_order.append(3); 384 m_order.append(3);
385 })); 385 }));
386 386
387 m_platform.mockWebScheduler()->runSingleTask(); 387 m_platform.runSingleTask();
388 m_scriptRunner->suspend(); 388 m_scriptRunner->suspend();
389 m_scriptRunner->resume(); 389 m_scriptRunner->resume();
390 m_platform.mockWebScheduler()->runAllTasks(); 390 m_platform.runUntilIdle();
391 391
392 // Make sure elements are correct. 392 // Make sure elements are correct.
393 EXPECT_THAT(m_order, WhenSorted(ElementsAre(1, 2, 3))); 393 EXPECT_THAT(m_order, WhenSorted(ElementsAre(1, 2, 3)));
394 } 394 }
395 395
396 TEST_F(ScriptRunnerTest, LateNotifications) 396 TEST_F(ScriptRunnerTest, LateNotifications)
397 { 397 {
398 MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get()); 398 MockScriptLoader* scriptLoader1 = MockScriptLoader::create(m_element.get());
399 MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get()); 399 MockScriptLoader* scriptLoader2 = MockScriptLoader::create(m_element.get());
400 400
401 EXPECT_CALL(*scriptLoader1, isReady()).WillRepeatedly(Return(true)); 401 EXPECT_CALL(*scriptLoader1, isReady()).WillRepeatedly(Return(true));
402 EXPECT_CALL(*scriptLoader2, isReady()).WillRepeatedly(Return(true)); 402 EXPECT_CALL(*scriptLoader2, isReady()).WillRepeatedly(Return(true));
403 403
404 m_scriptRunner->queueScriptForExecution(scriptLoader1, ScriptRunner::IN_ORDE R_EXECUTION); 404 m_scriptRunner->queueScriptForExecution(scriptLoader1, ScriptRunner::IN_ORDE R_EXECUTION);
405 m_scriptRunner->queueScriptForExecution(scriptLoader2, ScriptRunner::IN_ORDE R_EXECUTION); 405 m_scriptRunner->queueScriptForExecution(scriptLoader2, ScriptRunner::IN_ORDE R_EXECUTION);
406 406
407 EXPECT_CALL(*scriptLoader1, execute()).WillOnce(Invoke([this] { 407 EXPECT_CALL(*scriptLoader1, execute()).WillOnce(Invoke([this] {
408 m_order.append(1); 408 m_order.append(1);
409 })); 409 }));
410 EXPECT_CALL(*scriptLoader2, execute()).WillOnce(Invoke([this] { 410 EXPECT_CALL(*scriptLoader2, execute()).WillOnce(Invoke([this] {
411 m_order.append(2); 411 m_order.append(2);
412 })); 412 }));
413 413
414 m_scriptRunner->notifyScriptReady(scriptLoader1, ScriptRunner::IN_ORDER_EXEC UTION); 414 m_scriptRunner->notifyScriptReady(scriptLoader1, ScriptRunner::IN_ORDER_EXEC UTION);
415 m_platform.mockWebScheduler()->runAllTasks(); 415 m_platform.runUntilIdle();
416 416
417 // At this moment all tasks can be already executed. Make sure that we do no t crash here. 417 // At this moment all tasks can be already executed. Make sure that we do no t crash here.
418 m_scriptRunner->notifyScriptReady(scriptLoader2, ScriptRunner::IN_ORDER_EXEC UTION); 418 m_scriptRunner->notifyScriptReady(scriptLoader2, ScriptRunner::IN_ORDER_EXEC UTION);
419 m_platform.mockWebScheduler()->runAllTasks(); 419 m_platform.runUntilIdle();
420 420
421 EXPECT_THAT(m_order, ElementsAre(1, 2)); 421 EXPECT_THAT(m_order, ElementsAre(1, 2));
422 } 422 }
423 423
424 TEST_F(ScriptRunnerTest, TasksWithDeadScriptRunner) 424 TEST_F(ScriptRunnerTest, TasksWithDeadScriptRunner)
425 { 425 {
426 Persistent<MockScriptLoader> scriptLoader1 = MockScriptLoader::create(m_elem ent.get()); 426 Persistent<MockScriptLoader> scriptLoader1 = MockScriptLoader::create(m_elem ent.get());
427 Persistent<MockScriptLoader> scriptLoader2 = MockScriptLoader::create(m_elem ent.get()); 427 Persistent<MockScriptLoader> scriptLoader2 = MockScriptLoader::create(m_elem ent.get());
428 428
429 EXPECT_CALL(*scriptLoader1, isReady()).WillRepeatedly(Return(true)); 429 EXPECT_CALL(*scriptLoader1, isReady()).WillRepeatedly(Return(true));
430 EXPECT_CALL(*scriptLoader2, isReady()).WillRepeatedly(Return(true)); 430 EXPECT_CALL(*scriptLoader2, isReady()).WillRepeatedly(Return(true));
431 431
432 m_scriptRunner->queueScriptForExecution(scriptLoader1, ScriptRunner::ASYNC_E XECUTION); 432 m_scriptRunner->queueScriptForExecution(scriptLoader1, ScriptRunner::ASYNC_E XECUTION);
433 m_scriptRunner->queueScriptForExecution(scriptLoader2, ScriptRunner::ASYNC_E XECUTION); 433 m_scriptRunner->queueScriptForExecution(scriptLoader2, ScriptRunner::ASYNC_E XECUTION);
434 434
435 m_scriptRunner->notifyScriptReady(scriptLoader1, ScriptRunner::ASYNC_EXECUTI ON); 435 m_scriptRunner->notifyScriptReady(scriptLoader1, ScriptRunner::ASYNC_EXECUTI ON);
436 m_scriptRunner->notifyScriptReady(scriptLoader2, ScriptRunner::ASYNC_EXECUTI ON); 436 m_scriptRunner->notifyScriptReady(scriptLoader2, ScriptRunner::ASYNC_EXECUTI ON);
437 437
438 m_scriptRunner.release(); 438 m_scriptRunner.release();
439 439
440 ThreadHeap::collectAllGarbage(); 440 ThreadHeap::collectAllGarbage();
441 441
442 // m_scriptRunner is gone. We need to make sure that ScriptRunner::Task do n ot access dead object. 442 // m_scriptRunner is gone. We need to make sure that ScriptRunner::Task do n ot access dead object.
443 EXPECT_CALL(*scriptLoader1, execute()).Times(0); 443 EXPECT_CALL(*scriptLoader1, execute()).Times(0);
444 EXPECT_CALL(*scriptLoader2, execute()).Times(0); 444 EXPECT_CALL(*scriptLoader2, execute()).Times(0);
445 445
446 m_platform.mockWebScheduler()->runAllTasks(); 446 m_platform.runUntilIdle();
447 } 447 }
448 448
449 } // namespace blink 449 } // namespace blink
OLDNEW
« no previous file with comments | « content/child/web_url_loader_impl.cc ('k') | third_party/WebKit/Source/core/fetch/ImageResourceTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698