diff options
author | darin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-28 20:50:12 +0000 |
---|---|---|
committer | darin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-28 20:50:12 +0000 |
commit | aeab57ea8560065d6c513fcd46bb43e1bfbfd7a6 (patch) | |
tree | a63f2d36e86361d5c27122a6d6ef4098b755d7d9 /net/disk_cache/stress_cache.cc | |
parent | e115558691eb08608fad56bb32f40265fdfa4ac5 (diff) | |
download | chromium_src-aeab57ea8560065d6c513fcd46bb43e1bfbfd7a6.zip chromium_src-aeab57ea8560065d6c513fcd46bb43e1bfbfd7a6.tar.gz chromium_src-aeab57ea8560065d6c513fcd46bb43e1bfbfd7a6.tar.bz2 |
Simplify OneShotTimer and RepeatingTimer. Fix up all consumers.
Major changes:
OneShotTimer and RepeatingTimer become template classes that no longer require
a Task or a Timer object. They just use PostDelayedTask. Under the hood that
still uses a Timer object.
The API is much simpler for consumers as they now no longer need to worry about
allocating a Task or managing the lifetime of the object pointer held by the
Task.
I added some new unit tests to timer_unittest.cc to cover the API.
I preserved the old TimerManager / Timer API for now, but I plan to soon kill
it.
R=brettw
BUG=1346553
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1502 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/disk_cache/stress_cache.cc')
-rw-r--r-- | net/disk_cache/stress_cache.cc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/net/disk_cache/stress_cache.cc b/net/disk_cache/stress_cache.cc index 10058f0..864309a 100644 --- a/net/disk_cache/stress_cache.cc +++ b/net/disk_cache/stress_cache.cc @@ -143,6 +143,9 @@ class CrashTask : public Task { ~CrashTask() {} virtual void Run() { + // Keep trying to run. + RunSoon(MessageLoop::current()); + if (g_crashing) return; @@ -151,6 +154,12 @@ class CrashTask : public Task { TerminateProcess(GetCurrentProcess(), kExpectedCrash); } } + + static void RunSoon(MessageLoop* target_loop) { + int task_delay = 10000; // 10 seconds + CrashTask* task = new CrashTask(); + target_loop->PostDelayedTask(FROM_HERE, task, task_delay); + } }; // We leak everything here :) @@ -159,11 +168,7 @@ bool StartCrashThread() { if (!thread->Start()) return false; - // Create a recurrent timer of 10 secs. - int timer_delay = 10000; - CrashTask* task = new CrashTask(); - thread->message_loop()->timer_manager()->StartTimer(timer_delay, task, true); - + CrashTask::RunSoon(thread->message_loop()); return true; } |