OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "platform/scheduler/renderer/web_frame_scheduler_impl.h" | 5 #include "platform/scheduler/renderer/web_frame_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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 RuntimeEnabledFeatures::setTimerThrottlingForHiddenFramesEnabled(true); | 96 RuntimeEnabledFeatures::setTimerThrottlingForHiddenFramesEnabled(true); |
97 web_view_scheduler_->setPageVisible(false); | 97 web_view_scheduler_->setPageVisible(false); |
98 | 98 |
99 int run_count = 0; | 99 int run_count = 0; |
100 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( | 100 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
101 BLINK_FROM_HERE, | 101 BLINK_FROM_HERE, |
102 makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), | 102 makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), |
103 1.0); | 103 1.0); |
104 | 104 |
105 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); | 105 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); |
| 106 EXPECT_EQ(1000, run_count); |
| 107 |
| 108 // The task queue isn't throttled at all until it's been in the background for |
| 109 // a 10 second grace period. |
| 110 clock_->Advance(base::TimeDelta::FromSeconds(10)); |
| 111 |
| 112 run_count = 0; |
| 113 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); |
106 EXPECT_EQ(1, run_count); | 114 EXPECT_EQ(1, run_count); |
107 } | 115 } |
108 | 116 |
109 TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_FrameHidden_SameOrigin) { | 117 TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_FrameHidden_SameOrigin) { |
110 RuntimeEnabledFeatures::setTimerThrottlingForHiddenFramesEnabled(true); | 118 RuntimeEnabledFeatures::setTimerThrottlingForHiddenFramesEnabled(true); |
111 web_frame_scheduler_->setFrameVisible(false); | 119 web_frame_scheduler_->setFrameVisible(false); |
112 | 120 |
113 int run_count = 0; | 121 int run_count = 0; |
114 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( | 122 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
115 BLINK_FROM_HERE, | 123 BLINK_FROM_HERE, |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 RuntimeEnabledFeatures::setTimerThrottlingForHiddenFramesEnabled(false); | 162 RuntimeEnabledFeatures::setTimerThrottlingForHiddenFramesEnabled(false); |
155 web_view_scheduler_->setPageVisible(false); | 163 web_view_scheduler_->setPageVisible(false); |
156 | 164 |
157 int run_count = 0; | 165 int run_count = 0; |
158 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( | 166 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
159 BLINK_FROM_HERE, | 167 BLINK_FROM_HERE, |
160 makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), | 168 makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), |
161 1.0); | 169 1.0); |
162 | 170 |
163 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); | 171 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); |
| 172 EXPECT_EQ(1000, run_count); |
| 173 |
| 174 // The task queue isn't throttled at all until it's been in the background for |
| 175 // a 10 second grace period. |
| 176 clock_->Advance(base::TimeDelta::FromSeconds(10)); |
| 177 |
| 178 run_count = 0; |
| 179 mock_task_runner_->RunForPeriod(base::TimeDelta::FromSeconds(1)); |
164 EXPECT_EQ(1, run_count); | 180 EXPECT_EQ(1, run_count); |
165 } | 181 } |
166 | 182 |
167 TEST_F(WebFrameSchedulerImplTest, RepeatingTimer_FrameHidden_CrossOrigin_Throttl
ingDisabled) { | 183 TEST_F(WebFrameSchedulerImplTest, |
| 184 RepeatingTimer_FrameHidden_CrossOrigin_ThrottlingDisabled) { |
168 RuntimeEnabledFeatures::setTimerThrottlingForHiddenFramesEnabled(false); | 185 RuntimeEnabledFeatures::setTimerThrottlingForHiddenFramesEnabled(false); |
169 web_frame_scheduler_->setFrameVisible(false); | 186 web_frame_scheduler_->setFrameVisible(false); |
170 web_frame_scheduler_->setCrossOrigin(true); | 187 web_frame_scheduler_->setCrossOrigin(true); |
171 | 188 |
172 int run_count = 0; | 189 int run_count = 0; |
173 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( | 190 web_frame_scheduler_->timerTaskRunner()->postDelayedTask( |
174 BLINK_FROM_HERE, | 191 BLINK_FROM_HERE, |
175 makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), | 192 makeRepeatingTask(web_frame_scheduler_->timerTaskRunner(), &run_count), |
176 1.0); | 193 1.0); |
177 | 194 |
(...skipping 18 matching lines...) Expand all Loading... |
196 | 213 |
197 web_frame_scheduler_->setSuspended(false); | 214 web_frame_scheduler_->setSuspended(false); |
198 | 215 |
199 EXPECT_EQ(1, counter); | 216 EXPECT_EQ(1, counter); |
200 mock_task_runner_->RunUntilIdle(); | 217 mock_task_runner_->RunUntilIdle(); |
201 EXPECT_EQ(3, counter); | 218 EXPECT_EQ(3, counter); |
202 } | 219 } |
203 | 220 |
204 } // namespace scheduler | 221 } // namespace scheduler |
205 } // namespace blink | 222 } // namespace blink |
OLD | NEW |