Chromium Code Reviews| Index: base/timer.h |
| diff --git a/base/timer.h b/base/timer.h |
| index 2e21582a9a0ab8404bc981c6db2f120f6f31ed6b..2dcc76441ff58888ddc4690bfdc78eebd86e5f03 100644 |
| --- a/base/timer.h |
| +++ b/base/timer.h |
| @@ -87,9 +87,14 @@ class BASE_EXPORT BaseTimer_Helper { |
| // We have access to the timer_ member so we can orphan this task. |
| class TimerTask : public Task { |
| public: |
| - explicit TimerTask(TimeDelta delay) : timer_(NULL), delay_(delay) { |
| + explicit TimerTask(const tracked_objects::Location& posted_from, |
|
awong
2011/09/01 00:37:04
No need for explicit if you have multiple argument
|
| + TimeDelta delay) |
| + : posted_from_(posted_from), |
| + timer_(NULL), |
| + delay_(delay) { |
| } |
| virtual ~TimerTask() {} |
| + tracked_objects::Location posted_from_; |
|
darin (slow to review)
2011/08/31 23:28:46
Since Task extends from Tracked, and Tracked conta
jbates
2011/09/01 00:26:58
As discussed, I'll assume Tracked will be removed
awong
2011/09/01 00:37:04
Yes...please don't depend on Task inheriting from
|
| BaseTimer_Helper* timer_; |
| TimeDelta delay_; |
| }; |
| @@ -116,9 +121,12 @@ class BaseTimer : public BaseTimer_Helper { |
| // Call this method to start the timer. It is an error to call this method |
| // while the timer is already running. |
| - void Start(TimeDelta delay, Receiver* receiver, ReceiverMethod method) { |
| + void Start(const tracked_objects::Location& posted_from, |
| + TimeDelta delay, |
| + Receiver* receiver, |
| + ReceiverMethod method) { |
| DCHECK(!IsRunning()); |
| - InitiateDelayedTask(new TimerTask(delay, receiver, method)); |
| + InitiateDelayedTask(new TimerTask(posted_from, delay, receiver, method)); |
| } |
| // Call this method to stop the timer. It is a no-op if the timer is not |
| @@ -138,8 +146,11 @@ class BaseTimer : public BaseTimer_Helper { |
| class TimerTask : public BaseTimer_Helper::TimerTask { |
| public: |
| - TimerTask(TimeDelta delay, Receiver* receiver, ReceiverMethod method) |
| - : BaseTimer_Helper::TimerTask(delay), |
| + TimerTask(const tracked_objects::Location& posted_from, |
| + TimeDelta delay, |
| + Receiver* receiver, |
| + ReceiverMethod method) |
| + : BaseTimer_Helper::TimerTask(posted_from, delay), |
| receiver_(receiver), |
| method_(method) { |
| } |
| @@ -162,7 +173,7 @@ class BaseTimer : public BaseTimer_Helper { |
| } |
| TimerTask* Clone() const { |
| - return new TimerTask(delay_, receiver_, method_); |
| + return new TimerTask(posted_from_, delay_, receiver_, method_); |
| } |
| private: |
| @@ -221,8 +232,12 @@ class DelayTimer { |
| public: |
| typedef void (Receiver::*ReceiverMethod)(); |
| - DelayTimer(TimeDelta delay, Receiver* receiver, ReceiverMethod method) |
| - : receiver_(receiver), |
| + DelayTimer(const tracked_objects::Location& posted_from, |
| + TimeDelta delay, |
| + Receiver* receiver, |
| + ReceiverMethod method) |
| + : posted_from_(posted_from), |
| + receiver_(receiver), |
| method_(method), |
| delay_(delay) { |
| } |
| @@ -242,7 +257,7 @@ class DelayTimer { |
| // The timer isn't running, or will expire too late, so restart it. |
| timer_.Stop(); |
| - timer_.Start(delay, this, &DelayTimer<Receiver>::Check); |
| + timer_.Start(posted_from_, delay, this, &DelayTimer<Receiver>::Check); |
| } |
| void Check() { |
| @@ -259,6 +274,7 @@ class DelayTimer { |
| (receiver_->*method_)(); |
| } |
| + tracked_objects::Location posted_from_; |
| Receiver *const receiver_; |
| const ReceiverMethod method_; |
| const TimeDelta delay_; |