diff options
Diffstat (limited to 'content/child/quota_dispatcher.h')
-rw-r--r-- | content/child/quota_dispatcher.h | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/content/child/quota_dispatcher.h b/content/child/quota_dispatcher.h index a2fbfcc..8a8754f 100644 --- a/content/child/quota_dispatcher.h +++ b/content/child/quota_dispatcher.h @@ -10,7 +10,8 @@ #include "base/basictypes.h" #include "base/id_map.h" -#include "ipc/ipc_listener.h" +#include "base/memory/ref_counted.h" +#include "webkit/child/worker_task_runner.h" #include "webkit/common/quota/quota_types.h" class GURL; @@ -25,10 +26,14 @@ class WebStorageQuotaCallbacks; namespace content { +class ThreadSafeSender; +class QuotaMessageFilter; + // Dispatches and sends quota related messages sent to/from a child // process from/to the main browser process. There is one instance -// per child process. Messages are dispatched on the main child thread. -class QuotaDispatcher : public IPC::Listener { +// per each thread. Thread-specific instance can be obtained by +// ThreadSpecificInstance(). +class QuotaDispatcher : public webkit_glue::WorkerTaskRunner::Observer { public: class Callback { public: @@ -38,11 +43,20 @@ class QuotaDispatcher : public IPC::Listener { virtual void DidFail(quota::QuotaStatusCode status) = 0; }; - QuotaDispatcher(); + QuotaDispatcher(ThreadSafeSender* thread_safe_sender, + QuotaMessageFilter* quota_message_filter); virtual ~QuotaDispatcher(); - // IPC::Listener implementation. - virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; + // |thread_safe_sender| and |quota_message_filter| are used if + // calling this leads to construction. + static QuotaDispatcher* ThreadSpecificInstance( + ThreadSafeSender* thread_safe_sender, + QuotaMessageFilter* quota_message_filter); + + // webkit_glue::WorkerTaskRunner::Observer implementation. + virtual void OnWorkerRunLoopStopped() OVERRIDE; + + void OnMessageReceived(const IPC::Message& msg); void QueryStorageUsageAndQuota(const GURL& gurl, quota::StorageType type, @@ -64,10 +78,14 @@ class QuotaDispatcher : public IPC::Listener { int64 current_quota); void DidGrantStorageQuota(int request_id, int64 granted_quota); - void DidFail(int request_id, quota::QuotaStatusCode error); + void DidFail(int request_id, + quota::QuotaStatusCode error); IDMap<Callback, IDMapOwnPointer> pending_quota_callbacks_; + scoped_refptr<ThreadSafeSender> thread_safe_sender_; + scoped_refptr<QuotaMessageFilter> quota_message_filter_; + DISALLOW_COPY_AND_ASSIGN(QuotaDispatcher); }; |