Index: base/message_loop/message_loop_proxy_impl.h |
diff --git a/base/message_loop/message_loop_proxy_impl.h b/base/message_loop/message_loop_proxy_impl.h |
index 6d6f0f69dbd0f4f07f6830d7a1ab00037ce35f7f..b7f62b9770d5059e0e0e22b31b9d301d24410812 100644 |
--- a/base/message_loop/message_loop_proxy_impl.h |
+++ b/base/message_loop/message_loop_proxy_impl.h |
@@ -6,17 +6,24 @@ |
#define BASE_MESSAGE_LOOP_MESSAGE_LOOP_PROXY_IMPL_H_ |
#include "base/base_export.h" |
-#include "base/message_loop/message_loop.h" |
+#include "base/memory/ref_counted.h" |
#include "base/message_loop/message_loop_proxy.h" |
-#include "base/synchronization/lock.h" |
+#include "base/pending_task.h" |
+#include "base/threading/platform_thread.h" |
namespace base { |
+namespace internal { |
+ |
+class IncomingTaskQueue; |
// A stock implementation of MessageLoopProxy that is created and managed by a |
// MessageLoop. For now a MessageLoopProxyImpl can only be created as part of a |
// MessageLoop. |
class BASE_EXPORT MessageLoopProxyImpl : public MessageLoopProxy { |
public: |
+ explicit MessageLoopProxyImpl( |
+ scoped_refptr<IncomingTaskQueue> incoming_queue); |
+ |
// MessageLoopProxy implementation |
virtual bool PostDelayedTask(const tracked_objects::Location& from_here, |
const base::Closure& task, |
@@ -27,36 +34,20 @@ class BASE_EXPORT MessageLoopProxyImpl : public MessageLoopProxy { |
base::TimeDelta delay) OVERRIDE; |
virtual bool RunsTasksOnCurrentThread() const OVERRIDE; |
- protected: |
- virtual ~MessageLoopProxyImpl(); |
- |
- // Override OnDestruct so that we can delete the object on the target message |
- // loop if it still exists. |
- virtual void OnDestruct() const OVERRIDE; |
- |
private: |
- // Allow the MessageLoop to create a MessageLoopProxyImpl. |
- friend class MessageLoop; |
- friend class DeleteHelper<MessageLoopProxyImpl>; |
- |
- MessageLoopProxyImpl(); |
- |
- // Called directly by MessageLoop::~MessageLoop. |
- virtual void WillDestroyCurrentMessageLoop(); |
- |
+ friend class RefCountedThreadSafe<MessageLoopProxyImpl>; |
+ virtual ~MessageLoopProxyImpl(); |
- bool PostTaskHelper(const tracked_objects::Location& from_here, |
- const base::Closure& task, |
- base::TimeDelta delay, |
- bool nestable); |
+ // THe incoming queue receiving all posted tasks. |
+ scoped_refptr<IncomingTaskQueue> incoming_queue_; |
- // The lock that protects access to target_message_loop_. |
- mutable base::Lock message_loop_lock_; |
- MessageLoop* target_message_loop_; |
+ // ID of the thread |this| was created on. |
+ PlatformThreadId valid_thread_id_; |
DISALLOW_COPY_AND_ASSIGN(MessageLoopProxyImpl); |
}; |
+} // namespace internal |
} // namespace base |
#endif // BASE_MESSAGE_LOOP_MESSAGE_LOOP_PROXY_IMPL_H_ |