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

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

Issue 2023033003: scheduler: Throttle timers in out-of-view frames (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add cross origin check, tests Created 4 years, 5 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 "components/scheduler/renderer/web_view_scheduler_impl.h" 5 #include "components/scheduler/renderer/web_view_scheduler_impl.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 19 matching lines...) Expand all
30 30
31 void SetUp() override { 31 void SetUp() override {
32 clock_.reset(new base::SimpleTestTickClock()); 32 clock_.reset(new base::SimpleTestTickClock());
33 clock_->Advance(base::TimeDelta::FromMicroseconds(5000)); 33 clock_->Advance(base::TimeDelta::FromMicroseconds(5000));
34 mock_task_runner_ = 34 mock_task_runner_ =
35 make_scoped_refptr(new cc::OrderedSimpleTaskRunner(clock_.get(), true)); 35 make_scoped_refptr(new cc::OrderedSimpleTaskRunner(clock_.get(), true));
36 delagate_ = SchedulerTqmDelegateForTest::Create( 36 delagate_ = SchedulerTqmDelegateForTest::Create(
37 mock_task_runner_, base::WrapUnique(new TestTimeSource(clock_.get()))); 37 mock_task_runner_, base::WrapUnique(new TestTimeSource(clock_.get())));
38 scheduler_.reset(new RendererSchedulerImpl(delagate_)); 38 scheduler_.reset(new RendererSchedulerImpl(delagate_));
39 web_view_scheduler_.reset(new WebViewSchedulerImpl( 39 web_view_scheduler_.reset(new WebViewSchedulerImpl(
40 nullptr, scheduler_.get(), DisableBackgroundTimerThrottling())); 40 nullptr, scheduler_.get(), DisableBackgroundTimerThrottling(), true));
41 web_frame_scheduler_ = 41 web_frame_scheduler_ =
42 web_view_scheduler_->createWebFrameSchedulerImpl(nullptr); 42 web_view_scheduler_->createWebFrameSchedulerImpl(nullptr);
43 } 43 }
44 44
45 void TearDown() override { 45 void TearDown() override {
46 web_frame_scheduler_.reset(); 46 web_frame_scheduler_.reset();
47 web_view_scheduler_.reset(); 47 web_view_scheduler_.reset();
48 scheduler_->Shutdown(); 48 scheduler_->Shutdown();
49 scheduler_.reset(); 49 scheduler_.reset();
50 } 50 }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 BLINK_FROM_HERE, 128 BLINK_FROM_HERE,
129 new RepeatingTask(web_frame_scheduler_->loadingTaskRunner(), &run_count), 129 new RepeatingTask(web_frame_scheduler_->loadingTaskRunner(), &run_count),
130 1.0); 130 1.0);
131 131
132 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); 132 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1));
133 EXPECT_EQ(1000, run_count); // Loading tasks should not be throttled 133 EXPECT_EQ(1000, run_count); // Loading tasks should not be throttled
134 } 134 }
135 135
136 TEST_F(WebViewSchedulerImplTest, RepeatingTimers_OneBackgroundOneForeground) { 136 TEST_F(WebViewSchedulerImplTest, RepeatingTimers_OneBackgroundOneForeground) {
137 std::unique_ptr<WebViewSchedulerImpl> web_view_scheduler2( 137 std::unique_ptr<WebViewSchedulerImpl> web_view_scheduler2(
138 new WebViewSchedulerImpl(nullptr, scheduler_.get(), false)); 138 new WebViewSchedulerImpl(nullptr, scheduler_.get(), false, true));
139 std::unique_ptr<WebFrameSchedulerImpl> web_frame_scheduler2 = 139 std::unique_ptr<WebFrameSchedulerImpl> web_frame_scheduler2 =
140 web_view_scheduler2->createWebFrameSchedulerImpl(nullptr); 140 web_view_scheduler2->createWebFrameSchedulerImpl(nullptr);
141 141
142 web_view_scheduler_->setPageVisible(true); 142 web_view_scheduler_->setPageVisible(true);
143 web_view_scheduler2->setPageVisible(false); 143 web_view_scheduler2->setPageVisible(false);
144 144
145 int run_count1 = 0; 145 int run_count1 = 0;
146 int run_count2 = 0; 146 int run_count2 = 0;
147 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( 147 web_frame_scheduler_->timerTaskRunner()->postDelayedTask(
148 BLINK_FROM_HERE, 148 BLINK_FROM_HERE,
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 // it will prevent further tasks from running (i.e. the RepeatingTask) by 495 // it will prevent further tasks from running (i.e. the RepeatingTask) by
496 // deleting the WebFrameScheduler. 496 // deleting the WebFrameScheduler.
497 timer_task_runner->postDelayedTask(BLINK_FROM_HERE, delete_frame_task, 497 timer_task_runner->postDelayedTask(BLINK_FROM_HERE, delete_frame_task,
498 9990.0); 498 9990.0);
499 499
500 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(100)); 500 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(100));
501 EXPECT_EQ(10, run_count); 501 EXPECT_EQ(10, run_count);
502 } 502 }
503 503
504 } // namespace scheduler 504 } // namespace scheduler
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698