Index: third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc |
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc b/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc |
index 287fe6e8f34a4cd056edbbbc77dee9e6f7cf1b54..0c94e408a106b061458a03c7ac4819b739b60fed 100644 |
--- a/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc |
+++ b/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc |
@@ -79,23 +79,22 @@ TEST_F(WebViewSchedulerImplTest, TestDestructionOfFrameSchedulersAfter) { |
} |
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 runRepeatingTask(blink::WebTaskRunner* task_runner, int* run_count); |
- void run() override { |
- (*run_count_)++; |
- web_task_runner_->postDelayedTask( |
- BLINK_FROM_HERE, new RepeatingTask(web_task_runner_, run_count_), 1.0); |
- } |
+std::unique_ptr<WTF::Closure> makeRepeatingTask( |
+ blink::WebTaskRunner* task_runner, |
+ int* run_count) { |
+ return WTF::bind(&runRepeatingTask, WTF::unretained(task_runner), |
+ WTF::unretained(run_count)); |
+} |
+ |
+void runRepeatingTask(blink::WebTaskRunner* task_runner, int* run_count) { |
+ ++*run_count; |
+ task_runner->postDelayedTask(BLINK_FROM_HERE, |
+ makeRepeatingTask(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) { |
@@ -104,7 +103,7 @@ TEST_F(WebViewSchedulerImplTest, RepeatingTimer_PageInForeground) { |
int run_count = 0; |
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
BLINK_FROM_HERE, |
- new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), |
+ makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), |
1.0); |
mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); |
@@ -117,7 +116,7 @@ TEST_F(WebViewSchedulerImplTest, RepeatingTimer_PageInBackground) { |
int run_count = 0; |
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
BLINK_FROM_HERE, |
- new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), |
+ makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), |
1.0); |
mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); |
@@ -130,7 +129,7 @@ TEST_F(WebViewSchedulerImplTest, RepeatingLoadingTask_PageInBackground) { |
int run_count = 0; |
web_frame_scheduler_->loadingTaskRunner()->postDelayedTask( |
BLINK_FROM_HERE, |
- new RepeatingTask(web_frame_scheduler_->loadingTaskRunner(), &run_count), |
+ makeRepeatingTask(web_frame_scheduler_->loadingTaskRunner(), &run_count), |
1.0); |
mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); |
@@ -150,11 +149,11 @@ TEST_F(WebViewSchedulerImplTest, RepeatingTimers_OneBackgroundOneForeground) { |
int run_count2 = 0; |
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
BLINK_FROM_HERE, |
- new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count1), |
+ makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count1), |
1.0); |
web_frame_scheduler2->timerTaskRunner()->postDelayedTask( |
BLINK_FROM_HERE, |
- new RepeatingTask(web_frame_scheduler2->timerTaskRunner(), &run_count2), |
+ makeRepeatingTask(web_frame_scheduler2->timerTaskRunner(), &run_count2), |
1.0); |
mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); |
@@ -163,31 +162,26 @@ TEST_F(WebViewSchedulerImplTest, RepeatingTimers_OneBackgroundOneForeground) { |
} |
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 |
-}; |
+void runVirtualTimeRecorderTask(base::SimpleTestTickClock* clock, |
+ blink::WebTaskRunner* web_task_runner, |
+ std::vector<base::TimeTicks>* out_real_times, |
+ std::vector<size_t>* out_virtual_times_ms) { |
+ out_real_times->push_back(clock->NowTicks()); |
+ out_virtual_times_ms->push_back( |
+ web_task_runner->monotonicallyIncreasingVirtualTimeSeconds() * 1000.0); |
+} |
+ |
+std::unique_ptr<WTF::Closure> makeVirtualTimeRecorderTask( |
+ base::SimpleTestTickClock* clock, |
+ blink::WebTaskRunner* web_task_runner, |
+ std::vector<base::TimeTicks>* out_real_times, |
+ std::vector<size_t>* out_virtual_times_ms) { |
+ return WTF::bind(&runVirtualTimeRecorderTask, WTF::unretained(clock), |
+ WTF::unretained(web_task_runner), |
+ WTF::unretained(out_real_times), |
+ WTF::unretained(out_virtual_times_ms)); |
+} |
} |
TEST_F(WebViewSchedulerImplTest, VirtualTime_TimerFastForwarding) { |
@@ -203,21 +197,21 @@ TEST_F(WebViewSchedulerImplTest, VirtualTime_TimerFastForwarding) { |
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
BLINK_FROM_HERE, |
- new VirtualTimeRecorderTask(clock_.get(), |
+ makeVirtualTimeRecorderTask(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(), |
+ makeVirtualTimeRecorderTask(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(), |
+ makeVirtualTimeRecorderTask(clock_.get(), |
web_frame_scheduler_->timerTaskRunner(), |
&real_times, &virtual_times_ms), |
200.0); |
@@ -244,21 +238,21 @@ TEST_F(WebViewSchedulerImplTest, VirtualTime_LoadingTaskFastForwarding) { |
web_frame_scheduler_->loadingTaskRunner()->postDelayedTask( |
BLINK_FROM_HERE, |
- new VirtualTimeRecorderTask(clock_.get(), |
+ makeVirtualTimeRecorderTask(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(), |
+ makeVirtualTimeRecorderTask(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(), |
+ makeVirtualTimeRecorderTask(clock_.get(), |
web_frame_scheduler_->loadingTaskRunner(), |
&real_times, &virtual_times_ms), |
200.0); |
@@ -281,7 +275,7 @@ TEST_F(WebViewSchedulerImplTest, |
int run_count = 0; |
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
BLINK_FROM_HERE, |
- new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), |
+ makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), |
1.0); |
mock_task_runner_->RunTasksWhile(mock_task_runner_->TaskRunCountBelow(2000)); |
@@ -294,42 +288,19 @@ TEST_F(WebViewSchedulerImplTest, |
} |
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_)); |
- } |
+void runOrderTask(int index, std::vector<int>* out_run_order) { |
+ out_run_order->push_back(index); |
+} |
- private: |
- int index_; |
- blink::WebTaskRunner* task_runner_; // NOT OWNED |
- std::vector<int>* out_run_order_; // NOT OWNED |
-}; |
+void delayedRunOrderTask(int index, |
+ blink::WebTaskRunner* task_runner, |
+ std::vector<int>* out_run_order) { |
+ out_run_order->push_back(index); |
+ task_runner->postTask( |
+ BLINK_FROM_HERE, |
+ WTF::bind(&runOrderTask, index + 1, WTF::unretained(out_run_order))); |
+} |
} |
TEST_F(WebViewSchedulerImplTest, VirtualTime_NotAllowedToAdvance) { |
@@ -339,18 +310,21 @@ TEST_F(WebViewSchedulerImplTest, VirtualTime_NotAllowedToAdvance) { |
web_view_scheduler_->enableVirtualTime(); |
web_frame_scheduler_->timerTaskRunner()->postTask( |
- BLINK_FROM_HERE, new RunOrderTask(0, &run_order)); |
+ BLINK_FROM_HERE, |
+ WTF::bind(&runOrderTask, 0, WTF::unretained(&run_order))); |
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
BLINK_FROM_HERE, |
- new DelayedRunOrderTask(1, web_frame_scheduler_->timerTaskRunner(), |
- &run_order), |
+ WTF::bind(&delayedRunOrderTask, 1, |
+ WTF::unretained(web_frame_scheduler_->timerTaskRunner()), |
+ WTF::unretained(&run_order)), |
2.0); |
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
BLINK_FROM_HERE, |
- new DelayedRunOrderTask(3, web_frame_scheduler_->timerTaskRunner(), |
- &run_order), |
+ WTF::bind(&delayedRunOrderTask, 3, |
+ WTF::unretained(web_frame_scheduler_->timerTaskRunner()), |
+ WTF::unretained(&run_order)), |
4.0); |
mock_task_runner_->RunUntilIdle(); |
@@ -366,18 +340,21 @@ TEST_F(WebViewSchedulerImplTest, VirtualTime_AllowedToAdvance) { |
web_view_scheduler_->enableVirtualTime(); |
web_frame_scheduler_->timerTaskRunner()->postTask( |
- BLINK_FROM_HERE, new RunOrderTask(0, &run_order)); |
+ BLINK_FROM_HERE, |
+ WTF::bind(&runOrderTask, 0, WTF::unretained(&run_order))); |
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
BLINK_FROM_HERE, |
- new DelayedRunOrderTask(1, web_frame_scheduler_->timerTaskRunner(), |
- &run_order), |
+ WTF::bind(&delayedRunOrderTask, 1, |
+ WTF::unretained(web_frame_scheduler_->timerTaskRunner()), |
+ WTF::unretained(&run_order)), |
2.0); |
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
BLINK_FROM_HERE, |
- new DelayedRunOrderTask(3, web_frame_scheduler_->timerTaskRunner(), |
- &run_order), |
+ WTF::bind(&delayedRunOrderTask, 3, |
+ WTF::unretained(web_frame_scheduler_->timerTaskRunner()), |
+ WTF::unretained(&run_order)), |
4.0); |
mock_task_runner_->RunUntilIdle(); |
@@ -401,7 +378,7 @@ TEST_F(WebViewSchedulerImplTestWithDisabledBackgroundTimerThrottling, |
int run_count = 0; |
web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
BLINK_FROM_HERE, |
- new RepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), |
+ makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), |
1.0); |
mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); |
@@ -418,7 +395,8 @@ TEST_F(WebViewSchedulerImplTest, VirtualTimeSettings_NewWebFrameScheduler) { |
web_view_scheduler_->createWebFrameSchedulerImpl(nullptr); |
web_frame_scheduler->timerTaskRunner()->postDelayedTask( |
- BLINK_FROM_HERE, new RunOrderTask(1, &run_order), 0.1); |
+ BLINK_FROM_HERE, WTF::bind(&runOrderTask, 1, WTF::unretained(&run_order)), |
+ 1); |
mock_task_runner_->RunUntilIdle(); |
EXPECT_TRUE(run_order.empty()); |
@@ -430,72 +408,47 @@ TEST_F(WebViewSchedulerImplTest, VirtualTimeSettings_NewWebFrameScheduler) { |
} |
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(); } |
+template <typename T> |
+std::unique_ptr<WTF::Closure> makeDeletionTask(T* obj) { |
+ return WTF::bind([](T* obj) { delete obj; }, WTF::unretained(obj)); |
+} |
- 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); |
+ WebFrameSchedulerImpl* web_frame_scheduler = |
+ web_view_scheduler_->createWebFrameSchedulerImpl(nullptr).release(); |
+ web_frame_scheduler->timerTaskRunner()->postDelayedTask( |
+ BLINK_FROM_HERE, makeDeletionTask(web_frame_scheduler), 1); |
} |
mock_task_runner_->RunUntilIdle(); |
} |
TEST_F(WebViewSchedulerImplTest, DeleteWebViewScheduler_InTask) { |
web_frame_scheduler_->timerTaskRunner()->postTask( |
- BLINK_FROM_HERE, |
- new DeleteWebViewSchedulerTask(web_view_scheduler_.release())); |
+ BLINK_FROM_HERE, makeDeletionTask(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()); |
+ WebFrameSchedulerImpl* web_frame_scheduler = |
+ web_view_scheduler_->createWebFrameSchedulerImpl(nullptr).release(); |
blink::WebTaskRunner* timer_task_runner = |
- delete_frame_task->web_frame_scheduler()->timerTaskRunner(); |
+ web_frame_scheduler->timerTaskRunner(); |
int run_count = 0; |
timer_task_runner->postDelayedTask( |
- BLINK_FROM_HERE, new RepeatingTask(timer_task_runner, &run_count), 1.0); |
+ BLINK_FROM_HERE, makeRepeatingTask(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); |
+ timer_task_runner->postDelayedTask( |
+ BLINK_FROM_HERE, makeDeletionTask(web_frame_scheduler), 9990.0); |
mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(100)); |
EXPECT_EQ(10, run_count); |