Index: base/message_loop/message_loop_proxy_impl.cc |
diff --git a/base/message_loop/message_loop_proxy_impl.cc b/base/message_loop/message_loop_proxy_impl.cc |
index b7abca377e668270d2f1db89f54c3731de577602..1a54ddad00bb0c1f9c554c43c913ac24a32cf561 100644 |
--- a/base/message_loop/message_loop_proxy_impl.cc |
+++ b/base/message_loop/message_loop_proxy_impl.cc |
@@ -12,10 +12,16 @@ |
namespace base { |
namespace internal { |
-MessageLoopProxyImpl::MessageLoopProxyImpl( |
- scoped_refptr<IncomingTaskQueue> incoming_queue) |
- : incoming_queue_(incoming_queue), |
- valid_thread_id_(PlatformThread::CurrentId()) { |
+// static |
+MessageLoopProxyImpl* MessageLoopProxyImpl::Create( |
+ scoped_refptr<IncomingTaskQueue> incoming_queue) { |
+ return new MessageLoopProxyImpl(incoming_queue, false /* lazy_init */); |
+} |
+ |
+// static |
+MessageLoopProxyImpl* MessageLoopProxyImpl::CreateForLazyInit( |
+ scoped_refptr<IncomingTaskQueue> incoming_queue) { |
+ return new MessageLoopProxyImpl(incoming_queue, true /* lazy_init */); |
} |
bool MessageLoopProxyImpl::PostDelayedTask( |
@@ -38,6 +44,19 @@ bool MessageLoopProxyImpl::RunsTasksOnCurrentThread() const { |
return valid_thread_id_ == PlatformThread::CurrentId(); |
} |
+void MessageLoopProxyImpl::LazyInit() { |
+ DCHECK_EQ(kInvalidThreadId, valid_thread_id_); |
+ valid_thread_id_ = PlatformThread::CurrentId(); |
+} |
+ |
+MessageLoopProxyImpl::MessageLoopProxyImpl( |
+ scoped_refptr<IncomingTaskQueue> incoming_queue, |
+ bool lazy_init) |
+ : incoming_queue_(incoming_queue), |
+ valid_thread_id_(lazy_init ? kInvalidThreadId |
+ : PlatformThread::CurrentId()) { |
+} |
+ |
MessageLoopProxyImpl::~MessageLoopProxyImpl() { |
} |