| Index: content/child/quota_dispatcher.h
|
| diff --git a/content/child/quota_dispatcher.h b/content/child/quota_dispatcher.h
|
| index a2fbfcc380d0069e98a7aad3f6ff87a8567b1809..8a8754f37a845554fa7c3631a5329741933e69a9 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);
|
| };
|
|
|
|
|