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 #ifndef CONTENT_WORKER_WORKER_THREAD_H_ 6 #define CONTENT_WORKER_WORKER_THREAD_H_ 7 8 #include <set> 9 10 #include "content/child/child_thread.h" 11 12 struct WorkerProcessMsg_CreateWorker_Params; 13 14 namespace content { 15 class AppCacheDispatcher; 16 class DBMessageFilter; 17 class IndexedDBMessageFilter; 18 class WebSharedWorkerStub; 19 class WorkerWebKitPlatformSupportImpl; 20 21 class WorkerThread : public ChildThread { 22 public: 23 WorkerThread(); 24 virtual ~WorkerThread(); 25 virtual void Shutdown() OVERRIDE; 26 27 // Returns the one worker thread. 28 static WorkerThread* current(); 29 30 // Invoked from stub constructors/destructors. Stubs own themselves. 31 void AddWorkerStub(WebSharedWorkerStub* stub); 32 void RemoveWorkerStub(WebSharedWorkerStub* stub); 33 appcache_dispatcher()34 AppCacheDispatcher* appcache_dispatcher() { 35 return appcache_dispatcher_.get(); 36 } 37 38 private: 39 virtual bool OnControlMessageReceived(const IPC::Message& msg) OVERRIDE; 40 virtual void OnChannelError() OVERRIDE; 41 virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; 42 43 void OnCreateWorker(const WorkerProcessMsg_CreateWorker_Params& params); 44 void OnShutdown(); 45 46 scoped_ptr<WorkerWebKitPlatformSupportImpl> webkit_platform_support_; 47 scoped_ptr<AppCacheDispatcher> appcache_dispatcher_; 48 scoped_refptr<DBMessageFilter> db_message_filter_; 49 scoped_refptr<IndexedDBMessageFilter> indexed_db_message_filter_; 50 51 typedef std::set<WebSharedWorkerStub*> WorkerStubsList; 52 WorkerStubsList worker_stubs_; 53 54 DISALLOW_COPY_AND_ASSIGN(WorkerThread); 55 }; 56 57 } // namespace content 58 59 #endif // CONTENT_WORKER_WORKER_THREAD_H_ 60