diff options
author | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-26 23:40:48 +0000 |
---|---|---|
committer | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-26 23:40:48 +0000 |
commit | 02468668f05673052602812d9a9b1846f97bfad3 (patch) | |
tree | a0b1596402ece05bb7a23d6053c6543ec6b30438 /base | |
parent | 88424e6e8ed416c21e92bc8efc4b2658f89b7329 (diff) | |
download | chromium_src-02468668f05673052602812d9a9b1846f97bfad3.zip chromium_src-02468668f05673052602812d9a9b1846f97bfad3.tar.gz chromium_src-02468668f05673052602812d9a9b1846f97bfad3.tar.bz2 |
Added task to Observer methods
By adding the task to the observer methods and GetBirthPlace() to Tracked it
makes it possible to register an observer that can print more information about
the tasks as they are being processed.
BUG=NONE
TEST=MessageLoopTest.*
Review URL: http://codereview.chromium.org/4081003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63983 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/message_loop.cc | 4 | ||||
-rw-r--r-- | base/message_loop.h | 4 | ||||
-rw-r--r-- | base/message_loop_unittest.cc | 6 | ||||
-rw-r--r-- | base/tracked.cc | 8 | ||||
-rw-r--r-- | base/tracked.h | 1 |
5 files changed, 17 insertions, 6 deletions
diff --git a/base/message_loop.cc b/base/message_loop.cc index f335ca1..b926c79 100644 --- a/base/message_loop.cc +++ b/base/message_loop.cc @@ -412,9 +412,9 @@ void MessageLoop::RunTask(Task* task) { HistogramEvent(kTaskRunEvent); FOR_EACH_OBSERVER(TaskObserver, task_observers_, - WillProcessTask(task->tracked_birth_time())); + WillProcessTask(task)); task->Run(); - FOR_EACH_OBSERVER(TaskObserver, task_observers_, DidProcessTask()); + FOR_EACH_OBSERVER(TaskObserver, task_observers_, DidProcessTask(task)); delete task; nestable_tasks_allowed_ = true; diff --git a/base/message_loop.h b/base/message_loop.h index f4b1a4d..b182ace 100644 --- a/base/message_loop.h +++ b/base/message_loop.h @@ -75,10 +75,10 @@ class MessageLoop : public base::MessagePump::Delegate { TaskObserver(); // This method is called before processing a task. - virtual void WillProcessTask(base::TimeTicks birth_time) = 0; + virtual void WillProcessTask(const Task* task) = 0; // This method is called after processing a task. - virtual void DidProcessTask() = 0; + virtual void DidProcessTask(const Task* task) = 0; protected: virtual ~TaskObserver(); diff --git a/base/message_loop_unittest.cc b/base/message_loop_unittest.cc index 741eb71..8cce8ea 100644 --- a/base/message_loop_unittest.cc +++ b/base/message_loop_unittest.cc @@ -1488,14 +1488,16 @@ class DummyTaskObserver : public MessageLoop::TaskObserver { virtual ~DummyTaskObserver() {} - virtual void WillProcessTask(base::TimeTicks /* birth_time */) { + virtual void WillProcessTask(const Task* task) { num_tasks_started_++; + EXPECT_TRUE(task != NULL); EXPECT_LE(num_tasks_started_, num_tasks_); EXPECT_EQ(num_tasks_started_, num_tasks_processed_ + 1); } - virtual void DidProcessTask() { + virtual void DidProcessTask(const Task* task) { num_tasks_processed_++; + EXPECT_TRUE(task != NULL); EXPECT_LE(num_tasks_started_, num_tasks_); EXPECT_EQ(num_tasks_started_, num_tasks_processed_); } diff --git a/base/tracked.cc b/base/tracked.cc index 8ae7447..767f072 100644 --- a/base/tracked.cc +++ b/base/tracked.cc @@ -65,6 +65,10 @@ void Location::WriteFunctionName(std::string* output) const { Tracked::Tracked() {} Tracked::~Tracked() {} void Tracked::SetBirthPlace(const Location& from_here) {} +const Location Tracked::GetBirthPlace() const { + static Location kNone("NoFunctionName", "NeedToSetBirthPlace", -1); + return kNone; +} bool Tracked::MissingBirthplace() const { return false; } void Tracked::ResetBirthTime() {} @@ -96,6 +100,10 @@ void Tracked::SetBirthPlace(const Location& from_here) { tracked_births_ = current_thread_data->TallyABirth(from_here); } +const Location Tracked::GetBirthPlace() const { + return tracked_births_->location(); +} + void Tracked::ResetBirthTime() { tracked_birth_time_ = TimeTicks::Now(); } diff --git a/base/tracked.h b/base/tracked.h index 7af05ff..b4f6e36 100644 --- a/base/tracked.h +++ b/base/tracked.h @@ -94,6 +94,7 @@ class Tracked { // Used to record the FROM_HERE location of a caller. void SetBirthPlace(const Location& from_here); + const Location GetBirthPlace() const; // When a task sits around a long time, such as in a timer, or object watcher, // this method should be called when the task becomes active, and its |