Chromium Code Reviews| Index: webkit/glue/worker_task_runner.h |
| diff --git a/webkit/glue/worker_task_runner.h b/webkit/glue/worker_task_runner.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..890aa11f1e566e29b536b7766207817180a8d07a |
| --- /dev/null |
| +++ b/webkit/glue/worker_task_runner.h |
| @@ -0,0 +1,58 @@ |
| +// Copyright (c) 2011 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 CONTENT_COMMON_WORKER_TASK_RUNNER_H_ |
|
michaeln
2011/12/10 01:19:32
WEBKIT_GLUE_...
dgrogan
2011/12/10 01:37:40
Done.
|
| +#define CONTENT_COMMON_WORKER_TASK_RUNNER_H_ |
| +#pragma once |
| + |
| +#include <map> |
| + |
| +#include "base/atomic_sequence_num.h" |
| +#include "base/callback_forward.h" |
| +#include "base/synchronization/lock.h" |
| +#include "base/threading/thread_local.h" |
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebWorkerRunLoop.h" |
| + |
| +namespace webkit_glue { |
| + |
| +class WorkerTaskRunner { |
| + public: |
| + WorkerTaskRunner(); |
| + |
| + void PostTask(int id, const base::Closure& task); |
| + int CurrentWorkerId(); |
| + static WorkerTaskRunner* Instance(); |
| + |
| + class Observer { |
| + public: |
| + virtual ~Observer() {} |
| + virtual void OnWorkerRunLoopStopped() = 0; |
| + }; |
| + // Add/Remove an observer that will get notified when the current worker run |
| + // loop is stopping. This observer will not get notified when other threads |
| + // are stopping. It's only valid to call these on a worker thread. |
| + void AddStopObserver(Observer* observer); |
| + void RemoveStopObserver(Observer* observer); |
| + |
| + private: |
| + friend class WebKitPlatformSupportImpl; |
| + friend class WorkerTaskRunnerTest; |
| + |
| + typedef std::map<int, WebKit::WebWorkerRunLoop> IDToLoopMap; |
| + |
| + ~WorkerTaskRunner(); |
| + void OnWorkerRunLoopStarted(const WebKit::WebWorkerRunLoop& loop); |
| + void OnWorkerRunLoopStopped(const WebKit::WebWorkerRunLoop& loop); |
| + |
| + struct ThreadLocalState; |
| + base::ThreadLocalPointer<ThreadLocalState> current_tls_; |
| + |
| + base::AtomicSequenceNumber id_sequence_; |
| + IDToLoopMap loop_map_; |
| + base::Lock loop_map_lock_; |
| +}; |
| + |
| +} // namespace webkit_glue |
| + |
| +#endif // CONTENT_COMMON_SOCKET_STREAM_H_ |