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

Side by Side Diff: base/timer_unittest.cc

Issue 7825026: Revert "Currently, base/timer.cc calls PostTask with FROM_HERE as the Location, (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « base/timer.cc ('k') | chrome/browser/autocomplete/autocomplete.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/message_loop.h" 6 #include "base/message_loop.h"
7 #include "base/task.h" 7 #include "base/task.h"
8 #include "base/timer.h" 8 #include "base/timer.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
11 using base::TimeDelta; 11 using base::TimeDelta;
12 12
13 namespace { 13 namespace {
14 14
15 class OneShotTimerTester { 15 class OneShotTimerTester {
16 public: 16 public:
17 OneShotTimerTester(bool* did_run, unsigned milliseconds = 10) 17 OneShotTimerTester(bool* did_run, unsigned milliseconds = 10)
18 : did_run_(did_run), 18 : did_run_(did_run),
19 delay_ms_(milliseconds) { 19 delay_ms_(milliseconds) {
20 } 20 }
21 void Start() { 21 void Start() {
22 timer_.Start(FROM_HERE, TimeDelta::FromMilliseconds(delay_ms_), this, 22 timer_.Start(TimeDelta::FromMilliseconds(delay_ms_), this,
23 &OneShotTimerTester::Run); 23 &OneShotTimerTester::Run);
24 } 24 }
25 private: 25 private:
26 void Run() { 26 void Run() {
27 *did_run_ = true; 27 *did_run_ = true;
28 MessageLoop::current()->Quit(); 28 MessageLoop::current()->Quit();
29 } 29 }
30 bool* did_run_; 30 bool* did_run_;
31 base::OneShotTimer<OneShotTimerTester> timer_; 31 base::OneShotTimer<OneShotTimerTester> timer_;
32 const unsigned delay_ms_; 32 const unsigned delay_ms_;
33 }; 33 };
34 34
35 class OneShotSelfDeletingTimerTester { 35 class OneShotSelfDeletingTimerTester {
36 public: 36 public:
37 explicit OneShotSelfDeletingTimerTester(bool* did_run) : 37 explicit OneShotSelfDeletingTimerTester(bool* did_run) :
38 did_run_(did_run), 38 did_run_(did_run),
39 timer_(new base::OneShotTimer<OneShotSelfDeletingTimerTester>()) { 39 timer_(new base::OneShotTimer<OneShotSelfDeletingTimerTester>()) {
40 } 40 }
41 void Start() { 41 void Start() {
42 timer_->Start(FROM_HERE, TimeDelta::FromMilliseconds(10), this, 42 timer_->Start(TimeDelta::FromMilliseconds(10), this,
43 &OneShotSelfDeletingTimerTester::Run); 43 &OneShotSelfDeletingTimerTester::Run);
44 } 44 }
45 private: 45 private:
46 void Run() { 46 void Run() {
47 *did_run_ = true; 47 *did_run_ = true;
48 timer_.reset(); 48 timer_.reset();
49 MessageLoop::current()->Quit(); 49 MessageLoop::current()->Quit();
50 } 50 }
51 bool* did_run_; 51 bool* did_run_;
52 scoped_ptr<base::OneShotTimer<OneShotSelfDeletingTimerTester> > timer_; 52 scoped_ptr<base::OneShotTimer<OneShotSelfDeletingTimerTester> > timer_;
53 }; 53 };
54 54
55 class RepeatingTimerTester { 55 class RepeatingTimerTester {
56 public: 56 public:
57 explicit RepeatingTimerTester(bool* did_run) 57 explicit RepeatingTimerTester(bool* did_run)
58 : did_run_(did_run), counter_(10) { 58 : did_run_(did_run), counter_(10) {
59 } 59 }
60 60
61 void Start() { 61 void Start() {
62 timer_.Start(FROM_HERE, TimeDelta::FromMilliseconds(10), this, 62 timer_.Start(TimeDelta::FromMilliseconds(10), this,
63 &RepeatingTimerTester::Run); 63 &RepeatingTimerTester::Run);
64 } 64 }
65 private: 65 private:
66 void Run() { 66 void Run() {
67 if (--counter_ == 0) { 67 if (--counter_ == 0) {
68 *did_run_ = true; 68 *did_run_ = true;
69 MessageLoop::current()->Quit(); 69 MessageLoop::current()->Quit();
70 } 70 }
71 } 71 }
72 bool* did_run_; 72 bool* did_run_;
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 169
170 private: 170 private:
171 bool signaled_; 171 bool signaled_;
172 }; 172 };
173 173
174 void RunTest_DelayTimer_NoCall(MessageLoop::Type message_loop_type) { 174 void RunTest_DelayTimer_NoCall(MessageLoop::Type message_loop_type) {
175 MessageLoop loop(message_loop_type); 175 MessageLoop loop(message_loop_type);
176 176
177 // If Delay is never called, the timer shouldn't go off. 177 // If Delay is never called, the timer shouldn't go off.
178 DelayTimerTarget target; 178 DelayTimerTarget target;
179 base::DelayTimer<DelayTimerTarget> timer(FROM_HERE, 179 base::DelayTimer<DelayTimerTarget> timer(
180 TimeDelta::FromMilliseconds(1), &target, &DelayTimerTarget::Signal); 180 TimeDelta::FromMilliseconds(1), &target, &DelayTimerTarget::Signal);
181 181
182 bool did_run = false; 182 bool did_run = false;
183 OneShotTimerTester tester(&did_run); 183 OneShotTimerTester tester(&did_run);
184 tester.Start(); 184 tester.Start();
185 MessageLoop::current()->Run(); 185 MessageLoop::current()->Run();
186 186
187 ASSERT_FALSE(target.signaled()); 187 ASSERT_FALSE(target.signaled());
188 } 188 }
189 189
190 void RunTest_DelayTimer_OneCall(MessageLoop::Type message_loop_type) { 190 void RunTest_DelayTimer_OneCall(MessageLoop::Type message_loop_type) {
191 MessageLoop loop(message_loop_type); 191 MessageLoop loop(message_loop_type);
192 192
193 DelayTimerTarget target; 193 DelayTimerTarget target;
194 base::DelayTimer<DelayTimerTarget> timer(FROM_HERE, 194 base::DelayTimer<DelayTimerTarget> timer(
195 TimeDelta::FromMilliseconds(1), &target, &DelayTimerTarget::Signal); 195 TimeDelta::FromMilliseconds(1), &target, &DelayTimerTarget::Signal);
196 timer.Reset(); 196 timer.Reset();
197 197
198 bool did_run = false; 198 bool did_run = false;
199 OneShotTimerTester tester(&did_run, 100 /* milliseconds */); 199 OneShotTimerTester tester(&did_run, 100 /* milliseconds */);
200 tester.Start(); 200 tester.Start();
201 MessageLoop::current()->Run(); 201 MessageLoop::current()->Run();
202 202
203 ASSERT_TRUE(target.signaled()); 203 ASSERT_TRUE(target.signaled());
204 } 204 }
(...skipping 13 matching lines...) Expand all
218 private: 218 private:
219 base::DelayTimer<DelayTimerTarget> *const timer_; 219 base::DelayTimer<DelayTimerTarget> *const timer_;
220 DelayTimerTarget *const target_; 220 DelayTimerTarget *const target_;
221 }; 221 };
222 222
223 void RunTest_DelayTimer_Reset(MessageLoop::Type message_loop_type) { 223 void RunTest_DelayTimer_Reset(MessageLoop::Type message_loop_type) {
224 MessageLoop loop(message_loop_type); 224 MessageLoop loop(message_loop_type);
225 225
226 // If Delay is never called, the timer shouldn't go off. 226 // If Delay is never called, the timer shouldn't go off.
227 DelayTimerTarget target; 227 DelayTimerTarget target;
228 base::DelayTimer<DelayTimerTarget> timer(FROM_HERE, 228 base::DelayTimer<DelayTimerTarget> timer(
229 TimeDelta::FromMilliseconds(50), &target, &DelayTimerTarget::Signal); 229 TimeDelta::FromMilliseconds(50), &target, &DelayTimerTarget::Signal);
230 timer.Reset(); 230 timer.Reset();
231 231
232 ResetHelper reset_helper(&timer, &target); 232 ResetHelper reset_helper(&timer, &target);
233 233
234 base::OneShotTimer<ResetHelper> timers[20]; 234 base::OneShotTimer<ResetHelper> timers[20];
235 for (size_t i = 0; i < arraysize(timers); ++i) { 235 for (size_t i = 0; i < arraysize(timers); ++i) {
236 timers[i].Start(FROM_HERE, TimeDelta::FromMilliseconds(i * 10), 236 timers[i].Start(TimeDelta::FromMilliseconds(i * 10), &reset_helper,
237 &reset_helper, &ResetHelper::Reset); 237 &ResetHelper::Reset);
238 } 238 }
239 239
240 bool did_run = false; 240 bool did_run = false;
241 OneShotTimerTester tester(&did_run, 300); 241 OneShotTimerTester tester(&did_run, 300);
242 tester.Start(); 242 tester.Start();
243 MessageLoop::current()->Run(); 243 MessageLoop::current()->Run();
244 244
245 ASSERT_TRUE(target.signaled()); 245 ASSERT_TRUE(target.signaled());
246 } 246 }
247 247
248 class DelayTimerFatalTarget { 248 class DelayTimerFatalTarget {
249 public: 249 public:
250 void Signal() { 250 void Signal() {
251 ASSERT_TRUE(false); 251 ASSERT_TRUE(false);
252 } 252 }
253 }; 253 };
254 254
255 255
256 void RunTest_DelayTimer_Deleted(MessageLoop::Type message_loop_type) { 256 void RunTest_DelayTimer_Deleted(MessageLoop::Type message_loop_type) {
257 MessageLoop loop(message_loop_type); 257 MessageLoop loop(message_loop_type);
258 258
259 DelayTimerFatalTarget target; 259 DelayTimerFatalTarget target;
260 260
261 { 261 {
262 base::DelayTimer<DelayTimerFatalTarget> timer( 262 base::DelayTimer<DelayTimerFatalTarget> timer(
263 FROM_HERE, TimeDelta::FromMilliseconds(50), &target, 263 TimeDelta::FromMilliseconds(50), &target,
264 &DelayTimerFatalTarget::Signal); 264 &DelayTimerFatalTarget::Signal);
265 timer.Reset(); 265 timer.Reset();
266 } 266 }
267 267
268 // When the timer is deleted, the DelayTimerFatalTarget should never be 268 // When the timer is deleted, the DelayTimerFatalTarget should never be
269 // called. 269 // called.
270 base::PlatformThread::Sleep(100); 270 base::PlatformThread::Sleep(100);
271 } 271 }
272 272
273 } // namespace 273 } // namespace
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 OneShotTimerTester d(&did_run); 346 OneShotTimerTester d(&did_run);
347 { 347 {
348 MessageLoop loop(MessageLoop::TYPE_DEFAULT); 348 MessageLoop loop(MessageLoop::TYPE_DEFAULT);
349 a.Start(); 349 a.Start();
350 b.Start(); 350 b.Start();
351 } // MessageLoop destructs by falling out of scope. 351 } // MessageLoop destructs by falling out of scope.
352 } // OneShotTimers destruct. SHOULD NOT CRASH, of course. 352 } // OneShotTimers destruct. SHOULD NOT CRASH, of course.
353 353
354 EXPECT_FALSE(did_run); 354 EXPECT_FALSE(did_run);
355 } 355 }
OLDNEW
« no previous file with comments | « base/timer.cc ('k') | chrome/browser/autocomplete/autocomplete.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698