Make sure webrtc::VideoSourceInterface is released on the main render thread.
[chromium-blink-merge.git] / content / worker / worker_thread.h
blob927cd9a2a6126298e38b4212c44d66a087c7ff13
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.
5 #ifndef CONTENT_WORKER_WORKER_THREAD_H_
6 #define CONTENT_WORKER_WORKER_THREAD_H_
8 #include <set>
10 #include "content/child/child_thread.h"
12 struct WorkerProcessMsg_CreateWorker_Params;
14 namespace content {
15 class AppCacheDispatcher;
16 class DBMessageFilter;
17 class IndexedDBMessageFilter;
18 class WebSharedWorkerStub;
19 class WorkerWebKitPlatformSupportImpl;
21 class WorkerThread : public ChildThread {
22 public:
23 WorkerThread();
24 virtual ~WorkerThread();
25 virtual void Shutdown() OVERRIDE;
27 // Returns the one worker thread.
28 static WorkerThread* current();
30 // Invoked from stub constructors/destructors. Stubs own themselves.
31 void AddWorkerStub(WebSharedWorkerStub* stub);
32 void RemoveWorkerStub(WebSharedWorkerStub* stub);
34 AppCacheDispatcher* appcache_dispatcher() {
35 return appcache_dispatcher_.get();
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;
43 void OnCreateWorker(const WorkerProcessMsg_CreateWorker_Params& params);
44 void OnShutdown();
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_;
51 typedef std::set<WebSharedWorkerStub*> WorkerStubsList;
52 WorkerStubsList worker_stubs_;
54 DISALLOW_COPY_AND_ASSIGN(WorkerThread);
57 } // namespace content
59 #endif // CONTENT_WORKER_WORKER_THREAD_H_