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