OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "base/idle_timer.h" | 5 #include "base/idle_timer.h" |
6 #include "base/message_loop.h" | 6 #include "base/message_loop.h" |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 | 8 |
9 using base::Time; | 9 using base::Time; |
10 using base::TimeDelta; | 10 using base::TimeDelta; |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 base::OneShotTimer<ResetIdleTask> t2; | 116 base::OneShotTimer<ResetIdleTask> t2; |
117 t2.Start(TimeDelta::FromMilliseconds(4 * kSafeTestIntervalMs), &reset_task, | 117 t2.Start(TimeDelta::FromMilliseconds(4 * kSafeTestIntervalMs), &reset_task, |
118 &ResetIdleTask::Run); | 118 &ResetIdleTask::Run); |
119 | 119 |
120 test_task.Start(); | 120 test_task.Start(); |
121 MessageLoop::current()->Run(); | 121 MessageLoop::current()->Run(); |
122 | 122 |
123 EXPECT_EQ(test_task.get_idle_counter(), 2); | 123 EXPECT_EQ(test_task.get_idle_counter(), 2); |
124 } | 124 } |
125 | 125 |
126 // TODO(darin): http://crbug.com/3704 | 126 TEST_F(IdleTimerTest, NoRepeatNotIdle) { |
127 TEST_F(IdleTimerTest, DISABLED_NoRepeatNotIdle) { | |
128 // Create an IdleTimer, which should fire once after 500ms. | 127 // Create an IdleTimer, which should fire once after 500ms. |
129 // Create a Quit timer which will fire after 5s. | 128 // Create a Quit timer which will fire after 5s. |
130 // Create a timer to reset idle every 50ms. | 129 // Create a timer to reset idle every 50ms. |
131 // Verify that we never fired. | 130 // Verify that we never fired. |
132 | 131 |
133 mock_timer_started = Time::Now(); | 132 mock_timer_started = Time::Now(); |
134 TestIdleTask test_task(false); | 133 TestIdleTask test_task(false); |
135 | 134 |
136 TestFinishedTask finish_task; | 135 TestFinishedTask finish_task; |
137 ResetIdleTask reset_task; | 136 ResetIdleTask reset_task; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 | 173 |
175 test_task.Start(); | 174 test_task.Start(); |
176 MessageLoop::current()->Run(); | 175 MessageLoop::current()->Run(); |
177 | 176 |
178 // In a perfect world, the idle_counter should be 2. However, | 177 // In a perfect world, the idle_counter should be 2. However, |
179 // due to timer 'slop', accept 2 or 3. | 178 // due to timer 'slop', accept 2 or 3. |
180 EXPECT_GE(test_task.get_idle_counter(), 2); | 179 EXPECT_GE(test_task.get_idle_counter(), 2); |
181 EXPECT_LE(test_task.get_idle_counter(), 3); | 180 EXPECT_LE(test_task.get_idle_counter(), 3); |
182 } | 181 } |
183 | 182 |
184 // TODO(darin): http://crbug.com/3780 | |
185 TEST_F(IdleTimerTest, RepeatIdleReset) { | 183 TEST_F(IdleTimerTest, RepeatIdleReset) { |
186 // Create an IdleTimer, which should fire repeatedly after 500ms. | 184 // Create an IdleTimer, which should fire repeatedly after 500ms. |
187 // Create a Quit timer which will fire after 5s. | 185 // Create a Quit timer which will fire after 5s. |
188 // Create a reset timer, which fires after 2500ms | 186 // Create a reset timer, which fires after 2500ms |
189 // Verify that we fired 8-10 times. | 187 // Verify that we fired 8-10 times. |
190 mock_timer_started = Time::Now(); | 188 mock_timer_started = Time::Now(); |
191 TestIdleTask test_task(true); | 189 TestIdleTask test_task(true); |
192 | 190 |
193 ResetIdleTask reset_task; | 191 ResetIdleTask reset_task; |
194 TestFinishedTask finish_task; | 192 TestFinishedTask finish_task; |
195 | 193 |
196 base::OneShotTimer<TestFinishedTask> t1; | 194 base::OneShotTimer<TestFinishedTask> t1; |
197 t1.Start(TimeDelta::FromMilliseconds(10 * kSafeTestIntervalMs), &finish_task, | 195 t1.Start(TimeDelta::FromMilliseconds(10 * kSafeTestIntervalMs), &finish_task, |
198 &TestFinishedTask::Run); | 196 &TestFinishedTask::Run); |
199 | 197 |
200 base::OneShotTimer<ResetIdleTask> t2; | 198 base::OneShotTimer<ResetIdleTask> t2; |
201 t2.Start(TimeDelta::FromMilliseconds(5 * kSafeTestIntervalMs), &reset_task, | 199 t2.Start(TimeDelta::FromMilliseconds(5 * kSafeTestIntervalMs), &reset_task, |
202 &ResetIdleTask::Run); | 200 &ResetIdleTask::Run); |
203 | 201 |
204 test_task.Start(); | 202 test_task.Start(); |
205 MessageLoop::current()->Run(); | 203 MessageLoop::current()->Run(); |
206 | 204 |
207 // In a perfect world, the idle_counter should be 9. However, | 205 // In a perfect world, the idle_counter should be 9. However, |
208 // since timers aren't guaranteed to fire perfectly, this can | 206 // since timers aren't guaranteed to fire perfectly, this can |
209 // be less. Accept 8-10. | 207 // be less. Accept 8-10. |
210 EXPECT_GE(test_task.get_idle_counter(), 8); | 208 EXPECT_GE(test_task.get_idle_counter(), 8); |
211 EXPECT_LE(test_task.get_idle_counter(), 10); | 209 EXPECT_LE(test_task.get_idle_counter(), 10); |
212 } | 210 } |
213 | 211 |
214 // TODO(darin): http://crbug.com/3704 | 212 TEST_F(IdleTimerTest, RepeatNotIdle) { |
215 TEST_F(IdleTimerTest, DISABLED_RepeatNotIdle) { | |
216 // Create an IdleTimer, which should fire repeatedly after 500ms. | 213 // Create an IdleTimer, which should fire repeatedly after 500ms. |
217 // Create a Quit timer which will fire after 4s. | 214 // Create a Quit timer which will fire after 4s. |
218 // Create a timer to reset idle every 50ms. | 215 // Create a timer to reset idle every 50ms. |
219 // Verify that we never fired. | 216 // Verify that we never fired. |
220 | 217 |
221 mock_timer_started = Time::Now(); | 218 mock_timer_started = Time::Now(); |
222 TestIdleTask test_task(true); | 219 TestIdleTask test_task(true); |
223 | 220 |
224 TestFinishedTask finish_task; | 221 TestFinishedTask finish_task; |
225 ResetIdleTask reset_task; | 222 ResetIdleTask reset_task; |
226 | 223 |
227 base::OneShotTimer<TestFinishedTask> t; | 224 base::OneShotTimer<TestFinishedTask> t; |
228 t.Start(TimeDelta::FromMilliseconds(8 * kSafeTestIntervalMs), &finish_task, | 225 t.Start(TimeDelta::FromMilliseconds(8 * kSafeTestIntervalMs), &finish_task, |
229 &TestFinishedTask::Run); | 226 &TestFinishedTask::Run); |
230 | 227 |
231 base::RepeatingTimer<ResetIdleTask> reset_timer; | 228 base::RepeatingTimer<ResetIdleTask> reset_timer; |
232 reset_timer.Start(TimeDelta::FromMilliseconds(50), &reset_task, | 229 reset_timer.Start(TimeDelta::FromMilliseconds(50), &reset_task, |
233 &ResetIdleTask::Run); | 230 &ResetIdleTask::Run); |
234 | 231 |
235 test_task.Start(); | 232 test_task.Start(); |
236 MessageLoop::current()->Run(); | 233 MessageLoop::current()->Run(); |
237 | 234 |
238 reset_timer.Stop(); | 235 reset_timer.Stop(); |
239 | 236 |
240 EXPECT_EQ(test_task.get_idle_counter(), 0); | 237 EXPECT_EQ(test_task.get_idle_counter(), 0); |
241 } | 238 } |
242 | 239 |
243 } // namespace | 240 } // namespace |
OLD | NEW |