Index: chrome/browser/sync/notifier/chrome_system_resources.cc |
diff --git a/chrome/browser/sync/notifier/chrome_system_resources.cc b/chrome/browser/sync/notifier/chrome_system_resources.cc |
index 46090e1e7288a58e6130f1de94ad2d0dda37597d..c7173ecd89663c75b77cef4600f5649a1d015c8c 100644 |
--- a/chrome/browser/sync/notifier/chrome_system_resources.cc |
+++ b/chrome/browser/sync/notifier/chrome_system_resources.cc |
@@ -17,29 +17,35 @@ |
namespace sync_notifier { |
ChromeSystemResources::ChromeSystemResources(StateWriter* state_writer) |
- : state_writer_(state_writer) { |
- CHECK(non_thread_safe_.CalledOnValidThread()); |
+ : state_writer_(state_writer), |
+ created_on_loop_(MessageLoop::current()) { |
+ DCHECK(non_thread_safe_.CalledOnValidThread()); |
+ CHECK(created_on_loop_); |
DCHECK(state_writer_); |
} |
ChromeSystemResources::~ChromeSystemResources() { |
- CHECK(non_thread_safe_.CalledOnValidThread()); |
+ DCHECK(non_thread_safe_.CalledOnValidThread()); |
+ CHECK_EQ(created_on_loop_, MessageLoop::current()); |
StopScheduler(); |
} |
invalidation::Time ChromeSystemResources::current_time() { |
- CHECK(non_thread_safe_.CalledOnValidThread()); |
+ DCHECK(non_thread_safe_.CalledOnValidThread()); |
+ CHECK_EQ(created_on_loop_, MessageLoop::current()); |
return base::Time::Now(); |
} |
void ChromeSystemResources::StartScheduler() { |
- CHECK(non_thread_safe_.CalledOnValidThread()); |
+ DCHECK(non_thread_safe_.CalledOnValidThread()); |
+ CHECK_EQ(created_on_loop_, MessageLoop::current()); |
scoped_runnable_method_factory_.reset( |
new ScopedRunnableMethodFactory<ChromeSystemResources>(this)); |
} |
void ChromeSystemResources::StopScheduler() { |
- CHECK(non_thread_safe_.CalledOnValidThread()); |
+ DCHECK(non_thread_safe_.CalledOnValidThread()); |
+ CHECK_EQ(created_on_loop_, MessageLoop::current()); |
scoped_runnable_method_factory_.reset(); |
STLDeleteElements(&posted_tasks_); |
} |
@@ -47,7 +53,8 @@ void ChromeSystemResources::StopScheduler() { |
void ChromeSystemResources::ScheduleWithDelay( |
invalidation::TimeDelta delay, |
invalidation::Closure* task) { |
- CHECK(non_thread_safe_.CalledOnValidThread()); |
+ DCHECK(non_thread_safe_.CalledOnValidThread()); |
+ CHECK_EQ(created_on_loop_, MessageLoop::current()); |
Task* task_to_post = MakeTaskToPost(task); |
if (!task_to_post) { |
return; |
@@ -58,7 +65,8 @@ void ChromeSystemResources::ScheduleWithDelay( |
void ChromeSystemResources::ScheduleImmediately( |
invalidation::Closure* task) { |
- CHECK(non_thread_safe_.CalledOnValidThread()); |
+ DCHECK(non_thread_safe_.CalledOnValidThread()); |
+ CHECK_EQ(created_on_loop_, MessageLoop::current()); |
Task* task_to_post = MakeTaskToPost(task); |
if (!task_to_post) { |
return; |
@@ -70,14 +78,16 @@ void ChromeSystemResources::ScheduleImmediately( |
// notifications thread). |
void ChromeSystemResources::ScheduleOnListenerThread( |
invalidation::Closure* task) { |
- CHECK(non_thread_safe_.CalledOnValidThread()); |
+ DCHECK(non_thread_safe_.CalledOnValidThread()); |
+ CHECK_EQ(created_on_loop_, MessageLoop::current()); |
ScheduleImmediately(task); |
} |
// 'Internal thread' means 'not the listener thread'. Since the |
// listener thread is the notifications thread, always return false. |
bool ChromeSystemResources::IsRunningOnInternalThread() { |
- CHECK(non_thread_safe_.CalledOnValidThread()); |
+ DCHECK(non_thread_safe_.CalledOnValidThread()); |
+ CHECK_EQ(created_on_loop_, MessageLoop::current()); |
return false; |
} |
@@ -134,8 +144,9 @@ void ChromeSystemResources::WriteState( |
Task* ChromeSystemResources::MakeTaskToPost( |
invalidation::Closure* task) { |
- CHECK(non_thread_safe_.CalledOnValidThread()); |
+ DCHECK(non_thread_safe_.CalledOnValidThread()); |
DCHECK(invalidation::IsCallbackRepeatable(task)); |
+ CHECK_EQ(created_on_loop_, MessageLoop::current()); |
if (!scoped_runnable_method_factory_.get()) { |
delete task; |
return NULL; |
@@ -148,7 +159,8 @@ Task* ChromeSystemResources::MakeTaskToPost( |
} |
void ChromeSystemResources::RunPostedTask(invalidation::Closure* task) { |
- CHECK(non_thread_safe_.CalledOnValidThread()); |
+ DCHECK(non_thread_safe_.CalledOnValidThread()); |
+ CHECK_EQ(created_on_loop_, MessageLoop::current()); |
RunAndDeleteClosure(task); |
posted_tasks_.erase(task); |
} |