Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1933)

Unified Diff: content/child/quota_dispatcher.h

Issue 20015002: Make Platform::queryStorageUsageAndQuota work from worker threads (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/child/child_thread.cc ('k') | content/child/quota_dispatcher.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
};
« no previous file with comments | « content/child/child_thread.cc ('k') | content/child/quota_dispatcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698