// Copyright (c) 2012 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 CONTENT_WORKER_WORKER_THREAD_H_ #define CONTENT_WORKER_WORKER_THREAD_H_ #include #include "content/child/child_thread.h" struct WorkerProcessMsg_CreateWorker_Params; namespace content { class AppCacheDispatcher; class DBMessageFilter; class IndexedDBMessageFilter; class WebSharedWorkerStub; class WorkerWebKitPlatformSupportImpl; class WorkerThread : public ChildThread { public: WorkerThread(); virtual ~WorkerThread(); virtual void Shutdown() OVERRIDE; // Returns the one worker thread. static WorkerThread* current(); // Invoked from stub constructors/destructors. Stubs own themselves. void AddWorkerStub(WebSharedWorkerStub* stub); void RemoveWorkerStub(WebSharedWorkerStub* stub); AppCacheDispatcher* appcache_dispatcher() { return appcache_dispatcher_.get(); } private: virtual bool OnControlMessageReceived(const IPC::Message& msg) OVERRIDE; virtual void OnChannelError() OVERRIDE; virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; void OnCreateWorker(const WorkerProcessMsg_CreateWorker_Params& params); void OnShutdown(); scoped_ptr webkit_platform_support_; scoped_ptr appcache_dispatcher_; scoped_refptr db_message_filter_; scoped_refptr indexed_db_message_filter_; typedef std::set WorkerStubsList; WorkerStubsList worker_stubs_; DISALLOW_COPY_AND_ASSIGN(WorkerThread); }; } // namespace content #endif // CONTENT_WORKER_WORKER_THREAD_H_