// 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_ #pragma once #include #include "chrome/common/child_thread.h" class GURL; class AppCacheDispatcher; class DBMessageFilter; class WebDatabaseObserverImpl; class WebWorkerStubBase; class WorkerWebKitClientImpl; struct WorkerProcessMsg_CreateWorker_Params; class WorkerThread : public ChildThread { public: WorkerThread(); ~WorkerThread(); // Returns the one worker thread. static WorkerThread* current(); // Invoked from stub constructors/destructors. Stubs own themselves. void AddWorkerStub(WebWorkerStubBase* stub); void RemoveWorkerStub(WebWorkerStubBase* stub); AppCacheDispatcher* appcache_dispatcher() { return appcache_dispatcher_.get(); } private: virtual void OnControlMessageReceived(const IPC::Message& msg); virtual void OnChannelError(); void OnCreateWorker(const WorkerProcessMsg_CreateWorker_Params& params); scoped_ptr webkit_client_; scoped_ptr appcache_dispatcher_; scoped_ptr web_database_observer_impl_; scoped_refptr db_message_filter_; typedef std::set WorkerStubsList; WorkerStubsList worker_stubs_; DISALLOW_COPY_AND_ASSIGN(WorkerThread); }; #endif // CHROME_WORKER_WORKER_THREAD_H_