Index: chrome/worker/worker_thread.h |
=================================================================== |
--- chrome/worker/worker_thread.h (revision 0) |
+++ chrome/worker/worker_thread.h (revision 0) |
@@ -0,0 +1,55 @@ |
+// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_WORKER_WORKER_THREAD_H_ |
+#define CHROME_WORKER_WORKER_THREAD_H_ |
+ |
+#include "base/thread.h" |
+#include "chrome/common/ipc_sync_channel.h" |
+#include "chrome/common/message_router.h" |
+#include "chrome/common/resource_dispatcher.h" |
+ |
+class WebWorkerContextStub; |
+class WorkerProcess; |
+ |
+class WorkerThread : public IPC::Channel::Listener, |
+ public IPC::Message::Sender, |
+ public base::Thread { |
+ public: |
+ WorkerThread(WorkerProcess *process, const std::wstring& channel_name); |
+ ~WorkerThread(); |
+ |
+ // IPC::Channel::Listener implementation: |
+ virtual void OnMessageReceived(const IPC::Message& msg); |
+ virtual void OnChannelError(); |
+ |
+ // IPC::Message::Sender implementation: |
+ virtual bool Send(IPC::Message* msg); |
+ |
+ void OnWorkerDestruction(WebWorkerContextStub* worker); |
+ |
+ private: |
+ // Thread implementation: |
+ void Init(); |
+ void CleanUp(); |
+ |
+ void OnCreateWorker(const GURL& url, int route_id); |
+ |
+ // The process that has created this thread |
+ WorkerProcess *worker_process_; |
+ |
+ // The message loop used to run tasks on the thread that started this thread. |
+ MessageLoop* owner_loop_; |
+ |
+ std::wstring channel_name_; |
+ scoped_ptr<IPC::SyncChannel> channel_; |
+ |
+ // Used to implement message routing functionality to |
+ // WebWorkerContextProxyStub objects. |
+ MessageRouter router_; |
+ |
+ DISALLOW_EVIL_CONSTRUCTORS(WorkerThread); |
+}; |
+ |
+#endif // CHROME_WORKER_WORKER_THREAD_H_ |