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

Side by Side Diff: components/scheduler/renderer/web_view_scheduler_impl_unittest.cc

Issue 1697523002: Allow immediate tasks to run even when virtual time can't advance (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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
« no previous file with comments | « components/scheduler/renderer/web_view_scheduler_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "components/scheduler/renderer/web_view_scheduler_impl.h" 5 #include "components/scheduler/renderer/web_view_scheduler_impl.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/test/simple_test_tick_clock.h" 9 #include "base/test/simple_test_tick_clock.h"
10 #include "cc/test/ordered_simple_task_runner.h" 10 #include "cc/test/ordered_simple_task_runner.h"
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 BLINK_FROM_HERE, new RunOrderTask(index_ + 1, out_run_order_)); 308 BLINK_FROM_HERE, new RunOrderTask(index_ + 1, out_run_order_));
309 } 309 }
310 310
311 private: 311 private:
312 int index_; 312 int index_;
313 blink::WebTaskRunner* task_runner_; // NOT OWNED 313 blink::WebTaskRunner* task_runner_; // NOT OWNED
314 std::vector<int>* out_run_order_; // NOT OWNED 314 std::vector<int>* out_run_order_; // NOT OWNED
315 }; 315 };
316 } 316 }
317 317
318 TEST_F(WebViewSchedulerImplTest, VirtualTime_DelayedAndImmediateTaskOrdering) { 318 TEST_F(WebViewSchedulerImplTest, VirtualTime_NotAllowedToAdvance) {
319 std::vector<int> run_order; 319 std::vector<int> run_order;
320 320
321 web_view_scheduler_->setAllowVirtualTimeToAdvance(false); 321 web_view_scheduler_->setAllowVirtualTimeToAdvance(false);
322 web_view_scheduler_->enableVirtualTime(); 322 web_view_scheduler_->enableVirtualTime();
323 323
324 web_frame_scheduler_->timerTaskRunner()->postTask( 324 web_frame_scheduler_->timerTaskRunner()->postTask(
325 BLINK_FROM_HERE, new RunOrderTask(0, &run_order)); 325 BLINK_FROM_HERE, new RunOrderTask(0, &run_order));
326 326
327 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( 327 web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
328 BLINK_FROM_HERE, 328 BLINK_FROM_HERE,
329 new DelayedRunOrderTask(1, web_frame_scheduler_->timerTaskRunner(), 329 new DelayedRunOrderTask(1, web_frame_scheduler_->timerTaskRunner(),
330 &run_order), 330 &run_order),
331 2.0); 331 2.0);
332 332
333 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( 333 web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
334 BLINK_FROM_HERE, 334 BLINK_FROM_HERE,
335 new DelayedRunOrderTask(3, web_frame_scheduler_->timerTaskRunner(), 335 new DelayedRunOrderTask(3, web_frame_scheduler_->timerTaskRunner(),
336 &run_order), 336 &run_order),
337 4.0); 337 4.0);
338 338
339 mock_task_runner_->RunUntilIdle(); 339 mock_task_runner_->RunUntilIdle();
340 EXPECT_TRUE(run_order.empty()); 340
341 // Immediate tasks are allowed to run even if delayed tasks are not.
342 EXPECT_THAT(run_order, ElementsAre(0));
343 }
344
345 TEST_F(WebViewSchedulerImplTest, VirtualTime_AllowedToAdvance) {
346 std::vector<int> run_order;
341 347
342 web_view_scheduler_->setAllowVirtualTimeToAdvance(true); 348 web_view_scheduler_->setAllowVirtualTimeToAdvance(true);
349 web_view_scheduler_->enableVirtualTime();
350
351 web_frame_scheduler_->timerTaskRunner()->postTask(
352 BLINK_FROM_HERE, new RunOrderTask(0, &run_order));
353
354 web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
355 BLINK_FROM_HERE,
356 new DelayedRunOrderTask(1, web_frame_scheduler_->timerTaskRunner(),
357 &run_order),
358 2.0);
359
360 web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
361 BLINK_FROM_HERE,
362 new DelayedRunOrderTask(3, web_frame_scheduler_->timerTaskRunner(),
363 &run_order),
364 4.0);
365
343 mock_task_runner_->RunUntilIdle(); 366 mock_task_runner_->RunUntilIdle();
344 367
345 EXPECT_THAT(run_order, ElementsAre(0, 1, 2, 3, 4)); 368 EXPECT_THAT(run_order, ElementsAre(0, 1, 2, 3, 4));
346 } 369 }
347 370
348 class WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling 371 class WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling
349 : public WebViewSchedulerImplTest { 372 : public WebViewSchedulerImplTest {
350 public: 373 public:
351 WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling() {} 374 WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling() {}
352 ~WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling() override {} 375 ~WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling() override {}
(...skipping 17 matching lines...) Expand all
370 393
371 TEST_F(WebViewSchedulerImplTest, VirtualTimeSettings_NewWebFrameScheduler) { 394 TEST_F(WebViewSchedulerImplTest, VirtualTimeSettings_NewWebFrameScheduler) {
372 std::vector<int> run_order; 395 std::vector<int> run_order;
373 396
374 web_view_scheduler_->setAllowVirtualTimeToAdvance(false); 397 web_view_scheduler_->setAllowVirtualTimeToAdvance(false);
375 web_view_scheduler_->enableVirtualTime(); 398 web_view_scheduler_->enableVirtualTime();
376 399
377 scoped_ptr<WebFrameSchedulerImpl> web_frame_scheduler = 400 scoped_ptr<WebFrameSchedulerImpl> web_frame_scheduler =
378 web_view_scheduler_->createWebFrameSchedulerImpl(); 401 web_view_scheduler_->createWebFrameSchedulerImpl();
379 402
380 web_frame_scheduler->timerTaskRunner()->postTask( 403 web_frame_scheduler->timerTaskRunner()->postDelayedTask(
381 BLINK_FROM_HERE, new RunOrderTask(1, &run_order)); 404 BLINK_FROM_HERE, new RunOrderTask(1, &run_order), 0.1);
382 405
383 mock_task_runner_->RunUntilIdle(); 406 mock_task_runner_->RunUntilIdle();
384 EXPECT_TRUE(run_order.empty()); 407 EXPECT_TRUE(run_order.empty());
385 408
386 web_view_scheduler_->setAllowVirtualTimeToAdvance(true); 409 web_view_scheduler_->setAllowVirtualTimeToAdvance(true);
387 mock_task_runner_->RunUntilIdle(); 410 mock_task_runner_->RunUntilIdle();
388 411
389 EXPECT_THAT(run_order, ElementsAre(1)); 412 EXPECT_THAT(run_order, ElementsAre(1));
390 } 413 }
391 414
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
455 // it will prevent further tasks from running (i.e. the RepeatingTask) by 478 // it will prevent further tasks from running (i.e. the RepeatingTask) by
456 // deleting the WebFrameScheduler. 479 // deleting the WebFrameScheduler.
457 timer_task_runner->postDelayedTask(BLINK_FROM_HERE, delete_frame_task, 480 timer_task_runner->postDelayedTask(BLINK_FROM_HERE, delete_frame_task,
458 9990.0); 481 9990.0);
459 482
460 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(100)); 483 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(100));
461 EXPECT_EQ(10, run_count); 484 EXPECT_EQ(10, run_count);
462 } 485 }
463 486
464 } // namespace scheduler 487 } // namespace scheduler
OLDNEW
« no previous file with comments | « components/scheduler/renderer/web_view_scheduler_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698