| Index: components/scheduler/renderer/web_view_scheduler_impl_unittest.cc
|
| diff --git a/components/scheduler/renderer/web_view_scheduler_impl_unittest.cc b/components/scheduler/renderer/web_view_scheduler_impl_unittest.cc
|
| deleted file mode 100644
|
| index 403df5350f87f9af755b064fc1c103834ebd7144..0000000000000000000000000000000000000000
|
| --- a/components/scheduler/renderer/web_view_scheduler_impl_unittest.cc
|
| +++ /dev/null
|
| @@ -1,592 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "components/scheduler/renderer/web_view_scheduler_impl.h"
|
| -
|
| -#include <memory>
|
| -
|
| -#include "base/callback.h"
|
| -#include "base/memory/ptr_util.h"
|
| -#include "base/test/simple_test_tick_clock.h"
|
| -#include "cc/test/ordered_simple_task_runner.h"
|
| -#include "components/scheduler/base/test_time_source.h"
|
| -#include "components/scheduler/child/scheduler_tqm_delegate_for_test.h"
|
| -#include "components/scheduler/renderer/renderer_scheduler_impl.h"
|
| -#include "components/scheduler/renderer/web_frame_scheduler_impl.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "third_party/WebKit/public/platform/WebTaskRunner.h"
|
| -#include "third_party/WebKit/public/platform/WebTraceLocation.h"
|
| -
|
| -using testing::ElementsAre;
|
| -using VirtualTimePolicy = blink::WebViewScheduler::VirtualTimePolicy;
|
| -
|
| -namespace scheduler {
|
| -
|
| -class WebViewSchedulerImplTest : public testing::Test {
|
| - public:
|
| - WebViewSchedulerImplTest() {}
|
| - ~WebViewSchedulerImplTest() override {}
|
| -
|
| - void SetUp() override {
|
| - clock_.reset(new base::SimpleTestTickClock());
|
| - clock_->Advance(base::TimeDelta::FromMicroseconds(5000));
|
| - mock_task_runner_ =
|
| - make_scoped_refptr(new cc::OrderedSimpleTaskRunner(clock_.get(), true));
|
| - delegate_ = SchedulerTqmDelegateForTest::Create(
|
| - mock_task_runner_, base::WrapUnique(new TestTimeSource(clock_.get())));
|
| - scheduler_.reset(new RendererSchedulerImpl(delegate_));
|
| - web_view_scheduler_.reset(new WebViewSchedulerImpl(
|
| - nullptr, scheduler_.get(), DisableBackgroundTimerThrottling()));
|
| - web_frame_scheduler_ =
|
| - web_view_scheduler_->createWebFrameSchedulerImpl(nullptr);
|
| - }
|
| -
|
| - void TearDown() override {
|
| - web_frame_scheduler_.reset();
|
| - web_view_scheduler_.reset();
|
| - scheduler_->Shutdown();
|
| - scheduler_.reset();
|
| - }
|
| -
|
| - virtual bool DisableBackgroundTimerThrottling() const { return false; }
|
| -
|
| - std::unique_ptr<base::SimpleTestTickClock> clock_;
|
| - scoped_refptr<cc::OrderedSimpleTaskRunner> mock_task_runner_;
|
| - scoped_refptr<SchedulerTqmDelegate> delegate_;
|
| - std::unique_ptr<RendererSchedulerImpl> scheduler_;
|
| - std::unique_ptr<WebViewSchedulerImpl> web_view_scheduler_;
|
| - std::unique_ptr<WebFrameSchedulerImpl> web_frame_scheduler_;
|
| -};
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, TestDestructionOfFrameSchedulersBefore) {
|
| - std::unique_ptr<blink::WebFrameScheduler> frame1(
|
| - web_view_scheduler_->createFrameScheduler(nullptr));
|
| - std::unique_ptr<blink::WebFrameScheduler> frame2(
|
| - web_view_scheduler_->createFrameScheduler(nullptr));
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, TestDestructionOfFrameSchedulersAfter) {
|
| - std::unique_ptr<blink::WebFrameScheduler> frame1(
|
| - web_view_scheduler_->createFrameScheduler(nullptr));
|
| - std::unique_ptr<blink::WebFrameScheduler> frame2(
|
| - web_view_scheduler_->createFrameScheduler(nullptr));
|
| - web_view_scheduler_.reset();
|
| -}
|
| -
|
| -namespace {
|
| -class RepeatingTask : public blink::WebTaskRunner::Task {
|
| - public:
|
| - RepeatingTask(blink::WebTaskRunner* web_task_runner, int* run_count)
|
| - : web_task_runner_(web_task_runner), run_count_(run_count) {}
|
| -
|
| - ~RepeatingTask() override {}
|
| -
|
| - void run() override {
|
| - (*run_count_)++;
|
| - web_task_runner_->postDelayedTask(
|
| - BLINK_FROM_HERE, new RepeatingTask(web_task_runner_, run_count_), 1.0);
|
| - }
|
| -
|
| - private:
|
| - blink::WebTaskRunner* web_task_runner_; // NOT OWNED
|
| - int* run_count_; // NOT OWNED
|
| -};
|
| -} // namespace
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, RepeatingTimer_PageInForeground) {
|
| - web_view_scheduler_->setPageVisible(true);
|
| -
|
| - int run_count = 0;
|
| - web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count),
|
| - 1.0);
|
| -
|
| - mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1));
|
| - EXPECT_EQ(1000, run_count);
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, RepeatingTimer_PageInBackground) {
|
| - web_view_scheduler_->setPageVisible(false);
|
| -
|
| - int run_count = 0;
|
| - web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count),
|
| - 1.0);
|
| -
|
| - mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1));
|
| - EXPECT_EQ(1, run_count);
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, RepeatingLoadingTask_PageInBackground) {
|
| - web_view_scheduler_->setPageVisible(false);
|
| -
|
| - int run_count = 0;
|
| - web_frame_scheduler_->loadingTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new RepeatingTask(web_frame_scheduler_->loadingTaskRunner(), &run_count),
|
| - 1.0);
|
| -
|
| - mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1));
|
| - EXPECT_EQ(1000, run_count); // Loading tasks should not be throttled
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, RepeatingTimers_OneBackgroundOneForeground) {
|
| - std::unique_ptr<WebViewSchedulerImpl> web_view_scheduler2(
|
| - new WebViewSchedulerImpl(nullptr, scheduler_.get(), false));
|
| - std::unique_ptr<WebFrameSchedulerImpl> web_frame_scheduler2 =
|
| - web_view_scheduler2->createWebFrameSchedulerImpl(nullptr);
|
| -
|
| - web_view_scheduler_->setPageVisible(true);
|
| - web_view_scheduler2->setPageVisible(false);
|
| -
|
| - int run_count1 = 0;
|
| - int run_count2 = 0;
|
| - web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count1),
|
| - 1.0);
|
| - web_frame_scheduler2->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new RepeatingTask(web_frame_scheduler2->timerTaskRunner(), &run_count2),
|
| - 1.0);
|
| -
|
| - mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1));
|
| - EXPECT_EQ(1000, run_count1);
|
| - EXPECT_EQ(1, run_count2);
|
| -}
|
| -
|
| -namespace {
|
| -class VirtualTimeRecorderTask : public blink::WebTaskRunner::Task {
|
| - public:
|
| - VirtualTimeRecorderTask(base::SimpleTestTickClock* clock,
|
| - blink::WebTaskRunner* web_task_runner,
|
| - std::vector<base::TimeTicks>* out_real_times,
|
| - std::vector<size_t>* out_virtual_times_ms)
|
| - : clock_(clock),
|
| - web_task_runner_(web_task_runner),
|
| - out_real_times_(out_real_times),
|
| - out_virtual_times_ms_(out_virtual_times_ms) {}
|
| -
|
| - ~VirtualTimeRecorderTask() override {}
|
| -
|
| - void run() override {
|
| - out_real_times_->push_back(clock_->NowTicks());
|
| - out_virtual_times_ms_->push_back(
|
| - web_task_runner_->monotonicallyIncreasingVirtualTimeSeconds() * 1000.0);
|
| - }
|
| -
|
| - private:
|
| - base::SimpleTestTickClock* clock_; // NOT OWNED
|
| - blink::WebTaskRunner* web_task_runner_; // NOT OWNED
|
| - std::vector<base::TimeTicks>* out_real_times_; // NOT OWNED
|
| - std::vector<size_t>* out_virtual_times_ms_; // NOT OWNED
|
| -};
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, VirtualTime_TimerFastForwarding) {
|
| - std::vector<base::TimeTicks> real_times;
|
| - std::vector<size_t> virtual_times_ms;
|
| - base::TimeTicks initial_real_time = scheduler_->tick_clock()->NowTicks();
|
| - size_t initial_virtual_time_ms =
|
| - web_frame_scheduler_->timerTaskRunner()
|
| - ->monotonicallyIncreasingVirtualTimeSeconds() *
|
| - 1000.0;
|
| -
|
| - web_view_scheduler_->enableVirtualTime();
|
| -
|
| - web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new VirtualTimeRecorderTask(clock_.get(),
|
| - web_frame_scheduler_->timerTaskRunner(),
|
| - &real_times, &virtual_times_ms),
|
| - 2.0);
|
| -
|
| - web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new VirtualTimeRecorderTask(clock_.get(),
|
| - web_frame_scheduler_->timerTaskRunner(),
|
| - &real_times, &virtual_times_ms),
|
| - 20.0);
|
| -
|
| - web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new VirtualTimeRecorderTask(clock_.get(),
|
| - web_frame_scheduler_->timerTaskRunner(),
|
| - &real_times, &virtual_times_ms),
|
| - 200.0);
|
| -
|
| - mock_task_runner_->RunUntilIdle();
|
| -
|
| - EXPECT_THAT(real_times, ElementsAre(initial_real_time,
|
| - initial_real_time, initial_real_time));
|
| - EXPECT_THAT(virtual_times_ms,
|
| - ElementsAre(initial_virtual_time_ms + 2,
|
| - initial_virtual_time_ms + 20,
|
| - initial_virtual_time_ms + 200));
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, VirtualTime_LoadingTaskFastForwarding) {
|
| - std::vector<base::TimeTicks> real_times;
|
| - std::vector<size_t> virtual_times_ms;
|
| - base::TimeTicks initial_real_time = scheduler_->tick_clock()->NowTicks();
|
| - size_t initial_virtual_time_ms =
|
| - web_frame_scheduler_->timerTaskRunner()
|
| - ->monotonicallyIncreasingVirtualTimeSeconds() *
|
| - 1000.0;
|
| -
|
| - web_view_scheduler_->enableVirtualTime();
|
| -
|
| - web_frame_scheduler_->loadingTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new VirtualTimeRecorderTask(clock_.get(),
|
| - web_frame_scheduler_->loadingTaskRunner(),
|
| - &real_times, &virtual_times_ms),
|
| - 2.0);
|
| -
|
| - web_frame_scheduler_->loadingTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new VirtualTimeRecorderTask(clock_.get(),
|
| - web_frame_scheduler_->loadingTaskRunner(),
|
| - &real_times, &virtual_times_ms),
|
| - 20.0);
|
| -
|
| - web_frame_scheduler_->loadingTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new VirtualTimeRecorderTask(clock_.get(),
|
| - web_frame_scheduler_->loadingTaskRunner(),
|
| - &real_times, &virtual_times_ms),
|
| - 200.0);
|
| -
|
| - mock_task_runner_->RunUntilIdle();
|
| -
|
| - EXPECT_THAT(real_times, ElementsAre(initial_real_time,
|
| - initial_real_time, initial_real_time));
|
| - EXPECT_THAT(virtual_times_ms,
|
| - ElementsAre(initial_virtual_time_ms + 2,
|
| - initial_virtual_time_ms + 20,
|
| - initial_virtual_time_ms + 200));
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest,
|
| - RepeatingTimer_PageInBackground_MeansNothingForVirtualTime) {
|
| - web_view_scheduler_->enableVirtualTime();
|
| - web_view_scheduler_->setPageVisible(false);
|
| - base::TimeTicks initial_real_time = scheduler_->tick_clock()->NowTicks();
|
| -
|
| - int run_count = 0;
|
| - web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count),
|
| - 1.0);
|
| -
|
| - mock_task_runner_->RunTasksWhile(mock_task_runner_->TaskRunCountBelow(2000));
|
| - // Virtual time means page visibility is ignored.
|
| - EXPECT_EQ(1999, run_count);
|
| -
|
| - // The global tick clock has not moved, yet we ran a large number of "delayed"
|
| - // tasks despite calling setPageVisible(false).
|
| - EXPECT_EQ(initial_real_time, scheduler_->tick_clock()->NowTicks());
|
| -}
|
| -
|
| -namespace {
|
| -class RunOrderTask : public blink::WebTaskRunner::Task {
|
| - public:
|
| - RunOrderTask(int index, std::vector<int>* out_run_order)
|
| - : index_(index),
|
| - out_run_order_(out_run_order) {}
|
| -
|
| - ~RunOrderTask() override {}
|
| -
|
| - void run() override {
|
| - out_run_order_->push_back(index_);
|
| - }
|
| -
|
| - private:
|
| - int index_;
|
| - std::vector<int>* out_run_order_; // NOT OWNED
|
| -};
|
| -
|
| -class DelayedRunOrderTask : public blink::WebTaskRunner::Task {
|
| - public:
|
| - DelayedRunOrderTask(int index, blink::WebTaskRunner* task_runner,
|
| - std::vector<int>* out_run_order)
|
| - : index_(index),
|
| - task_runner_(task_runner),
|
| - out_run_order_(out_run_order) {}
|
| -
|
| - ~DelayedRunOrderTask() override {}
|
| -
|
| - void run() override {
|
| - out_run_order_->push_back(index_);
|
| - task_runner_->postTask(
|
| - BLINK_FROM_HERE, new RunOrderTask(index_ + 1, out_run_order_));
|
| - }
|
| -
|
| - private:
|
| - int index_;
|
| - blink::WebTaskRunner* task_runner_; // NOT OWNED
|
| - std::vector<int>* out_run_order_; // NOT OWNED
|
| -};
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, VirtualTime_NotAllowedToAdvance) {
|
| - std::vector<int> run_order;
|
| -
|
| - web_view_scheduler_->setVirtualTimePolicy(VirtualTimePolicy::PAUSE);
|
| - web_view_scheduler_->enableVirtualTime();
|
| -
|
| - web_frame_scheduler_->timerTaskRunner()->postTask(
|
| - BLINK_FROM_HERE, new RunOrderTask(0, &run_order));
|
| -
|
| - web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new DelayedRunOrderTask(1, web_frame_scheduler_->timerTaskRunner(),
|
| - &run_order),
|
| - 2.0);
|
| -
|
| - web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new DelayedRunOrderTask(3, web_frame_scheduler_->timerTaskRunner(),
|
| - &run_order),
|
| - 4.0);
|
| -
|
| - mock_task_runner_->RunUntilIdle();
|
| -
|
| - // Immediate tasks are allowed to run even if delayed tasks are not.
|
| - EXPECT_THAT(run_order, ElementsAre(0));
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, VirtualTime_AllowedToAdvance) {
|
| - std::vector<int> run_order;
|
| -
|
| - web_view_scheduler_->setVirtualTimePolicy(VirtualTimePolicy::ADVANCE);
|
| - web_view_scheduler_->enableVirtualTime();
|
| -
|
| - web_frame_scheduler_->timerTaskRunner()->postTask(
|
| - BLINK_FROM_HERE, new RunOrderTask(0, &run_order));
|
| -
|
| - web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new DelayedRunOrderTask(1, web_frame_scheduler_->timerTaskRunner(),
|
| - &run_order),
|
| - 2.0);
|
| -
|
| - web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new DelayedRunOrderTask(3, web_frame_scheduler_->timerTaskRunner(),
|
| - &run_order),
|
| - 4.0);
|
| -
|
| - mock_task_runner_->RunUntilIdle();
|
| -
|
| - EXPECT_THAT(run_order, ElementsAre(0, 1, 2, 3, 4));
|
| -}
|
| -
|
| -class WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling
|
| - : public WebViewSchedulerImplTest {
|
| - public:
|
| - WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling() {}
|
| - ~WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling() override {}
|
| -
|
| - bool DisableBackgroundTimerThrottling() const override { return true; }
|
| -};
|
| -
|
| -TEST_F(WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling,
|
| - RepeatingTimer_PageInBackground) {
|
| - web_view_scheduler_->setPageVisible(false);
|
| -
|
| - int run_count = 0;
|
| - web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE,
|
| - new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count),
|
| - 1.0);
|
| -
|
| - mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1));
|
| - EXPECT_EQ(1000, run_count);
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, VirtualTimeSettings_NewWebFrameScheduler) {
|
| - std::vector<int> run_order;
|
| -
|
| - web_view_scheduler_->setVirtualTimePolicy(VirtualTimePolicy::PAUSE);
|
| - web_view_scheduler_->enableVirtualTime();
|
| -
|
| - std::unique_ptr<WebFrameSchedulerImpl> web_frame_scheduler =
|
| - web_view_scheduler_->createWebFrameSchedulerImpl(nullptr);
|
| -
|
| - web_frame_scheduler->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE, new RunOrderTask(1, &run_order), 0.1);
|
| -
|
| - mock_task_runner_->RunUntilIdle();
|
| - EXPECT_TRUE(run_order.empty());
|
| -
|
| - web_view_scheduler_->setVirtualTimePolicy(VirtualTimePolicy::ADVANCE);
|
| - mock_task_runner_->RunUntilIdle();
|
| -
|
| - EXPECT_THAT(run_order, ElementsAre(1));
|
| -}
|
| -
|
| -namespace {
|
| -class DeleteWebFrameSchedulerTask : public blink::WebTaskRunner::Task {
|
| - public:
|
| - explicit DeleteWebFrameSchedulerTask(WebViewSchedulerImpl* web_view_scheduler)
|
| - : web_frame_scheduler_(
|
| - web_view_scheduler->createWebFrameSchedulerImpl(nullptr)) {}
|
| -
|
| - ~DeleteWebFrameSchedulerTask() override {}
|
| -
|
| - void run() override { web_frame_scheduler_.reset(); }
|
| -
|
| - WebFrameSchedulerImpl* web_frame_scheduler() const {
|
| - return web_frame_scheduler_.get();
|
| - }
|
| -
|
| - private:
|
| - std::unique_ptr<WebFrameSchedulerImpl> web_frame_scheduler_;
|
| -};
|
| -
|
| -class DeleteWebViewSchedulerTask : public blink::WebTaskRunner::Task {
|
| - public:
|
| - explicit DeleteWebViewSchedulerTask(WebViewSchedulerImpl* web_view_scheduler)
|
| - : web_view_scheduler_(web_view_scheduler) {}
|
| -
|
| - ~DeleteWebViewSchedulerTask() override {}
|
| -
|
| - void run() override { web_view_scheduler_.reset(); }
|
| -
|
| - private:
|
| - std::unique_ptr<WebViewSchedulerImpl> web_view_scheduler_;
|
| -};
|
| -} // namespace
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, DeleteWebFrameSchedulers_InTask) {
|
| - for (int i = 0; i < 10; i++) {
|
| - DeleteWebFrameSchedulerTask* task =
|
| - new DeleteWebFrameSchedulerTask(web_view_scheduler_.get());
|
| - task->web_frame_scheduler()->timerTaskRunner()->postDelayedTask(
|
| - BLINK_FROM_HERE, task, 1.0);
|
| - }
|
| - mock_task_runner_->RunUntilIdle();
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, DeleteWebViewScheduler_InTask) {
|
| - web_frame_scheduler_->timerTaskRunner()->postTask(
|
| - BLINK_FROM_HERE,
|
| - new DeleteWebViewSchedulerTask(web_view_scheduler_.release()));
|
| - mock_task_runner_->RunUntilIdle();
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, DeleteThrottledQueue_InTask) {
|
| - web_view_scheduler_->setPageVisible(false);
|
| -
|
| - DeleteWebFrameSchedulerTask* delete_frame_task =
|
| - new DeleteWebFrameSchedulerTask(web_view_scheduler_.get());
|
| - blink::WebTaskRunner* timer_task_runner =
|
| - delete_frame_task->web_frame_scheduler()->timerTaskRunner();
|
| -
|
| - int run_count = 0;
|
| - timer_task_runner->postDelayedTask(
|
| - BLINK_FROM_HERE, new RepeatingTask(timer_task_runner, &run_count), 1.0);
|
| -
|
| - // Note this will run at time t = 10s since we start at time t = 5000us, and
|
| - // it will prevent further tasks from running (i.e. the RepeatingTask) by
|
| - // deleting the WebFrameScheduler.
|
| - timer_task_runner->postDelayedTask(BLINK_FROM_HERE, delete_frame_task,
|
| - 9990.0);
|
| -
|
| - mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(100));
|
| - EXPECT_EQ(10, run_count);
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, VirtualTimePolicy_DETERMINISTIC_LOADING) {
|
| - web_view_scheduler_->setVirtualTimePolicy(
|
| - VirtualTimePolicy::DETERMINISTIC_LOADING);
|
| - // Initially virtual time is not allowed to advance until we have seen at
|
| - // least one load.
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStartLoading(1u);
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStartLoading(2u);
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStopLoading(2u);
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStartLoading(3u);
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStopLoading(1u);
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStopLoading(3u);
|
| - EXPECT_TRUE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStartLoading(4u);
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStopLoading(4u);
|
| - EXPECT_TRUE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, RedundantDidStopLoadingCallsAreHarmless) {
|
| - web_view_scheduler_->setVirtualTimePolicy(
|
| - VirtualTimePolicy::DETERMINISTIC_LOADING);
|
| -
|
| - web_view_scheduler_->DidStartLoading(1u);
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStopLoading(1u);
|
| - EXPECT_TRUE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStopLoading(1u);
|
| - EXPECT_TRUE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStopLoading(1u);
|
| - EXPECT_TRUE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStartLoading(2u);
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStopLoading(2u);
|
| - EXPECT_TRUE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -}
|
| -
|
| -TEST_F(WebViewSchedulerImplTest, BackgroundParser_DETERMINISTIC_LOADING) {
|
| - web_view_scheduler_->setVirtualTimePolicy(
|
| - VirtualTimePolicy::DETERMINISTIC_LOADING);
|
| - // Initially virtual time is not allowed to advance until we have seen at
|
| - // least one load.
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->IncrementBackgroundParserCount();
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStartLoading(1u);
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DidStopLoading(1u);
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->IncrementBackgroundParserCount();
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DecrementBackgroundParserCount();
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DecrementBackgroundParserCount();
|
| - EXPECT_TRUE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->IncrementBackgroundParserCount();
|
| - EXPECT_FALSE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -
|
| - web_view_scheduler_->DecrementBackgroundParserCount();
|
| - EXPECT_TRUE(web_view_scheduler_->virtualTimeAllowedToAdvance());
|
| -}
|
| -
|
| -} // namespace scheduler
|
|
|