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 12struct WorkerProcessMsg_CreateWorker_Params; 13 14namespace content { 15class AppCacheDispatcher; 16class DBMessageFilter; 17class IndexedDBMessageFilter; 18class WebDatabaseObserverImpl; 19class WebSharedWorkerStub; 20class WorkerWebKitPlatformSupportImpl; 21 22class WorkerThread : public ChildThread { 23 public: 24 WorkerThread(); 25 virtual ~WorkerThread(); 26 virtual void Shutdown() OVERRIDE; 27 28 // Returns the one worker thread. 29 static WorkerThread* current(); 30 31 // Invoked from stub constructors/destructors. Stubs own themselves. 32 void AddWorkerStub(WebSharedWorkerStub* stub); 33 void RemoveWorkerStub(WebSharedWorkerStub* stub); 34 35 AppCacheDispatcher* appcache_dispatcher() { 36 return appcache_dispatcher_.get(); 37 } 38 39 private: 40 virtual bool OnControlMessageReceived(const IPC::Message& msg) OVERRIDE; 41 virtual void OnChannelError() OVERRIDE; 42 43 void OnCreateWorker(const WorkerProcessMsg_CreateWorker_Params& params); 44 45 scoped_ptr<WorkerWebKitPlatformSupportImpl> webkit_platform_support_; 46 scoped_ptr<AppCacheDispatcher> appcache_dispatcher_; 47 scoped_ptr<WebDatabaseObserverImpl> web_database_observer_impl_; 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