• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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