Home | History | Annotate | Download | only in message_loop
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "base/message_loop/message_loop_proxy_impl.h"
      6 
      7 #include "base/location.h"
      8 #include "base/logging.h"
      9 #include "base/message_loop/incoming_task_queue.h"
     10 #include "base/message_loop/message_loop.h"
     11 
     12 namespace base {
     13 namespace internal {
     14 
     15 MessageLoopProxyImpl::MessageLoopProxyImpl(
     16     scoped_refptr<IncomingTaskQueue> incoming_queue)
     17     : incoming_queue_(incoming_queue),
     18       valid_thread_id_(PlatformThread::CurrentId()) {
     19 }
     20 
     21 bool MessageLoopProxyImpl::PostDelayedTask(
     22     const tracked_objects::Location& from_here,
     23     const base::Closure& task,
     24     base::TimeDelta delay) {
     25   DCHECK(!task.is_null()) << from_here.ToString();
     26   return incoming_queue_->AddToIncomingQueue(from_here, task, delay, true);
     27 }
     28 
     29 bool MessageLoopProxyImpl::PostNonNestableDelayedTask(
     30     const tracked_objects::Location& from_here,
     31     const base::Closure& task,
     32     base::TimeDelta delay) {
     33   DCHECK(!task.is_null()) << from_here.ToString();
     34   return incoming_queue_->AddToIncomingQueue(from_here, task, delay, false);
     35 }
     36 
     37 bool MessageLoopProxyImpl::RunsTasksOnCurrentThread() const {
     38   return valid_thread_id_ == PlatformThread::CurrentId();
     39 }
     40 
     41 MessageLoopProxyImpl::~MessageLoopProxyImpl() {
     42 }
     43 
     44 }  // namespace internal
     45 
     46 scoped_refptr<MessageLoopProxy>
     47 MessageLoopProxy::current() {
     48   MessageLoop* cur_loop = MessageLoop::current();
     49   if (!cur_loop)
     50     return NULL;
     51   return cur_loop->message_loop_proxy();
     52 }
     53 
     54 }  // namespace base
     55