Index: content/common/quota_dispatcher.cc |
diff --git a/content/common/quota_dispatcher.cc b/content/common/quota_dispatcher.cc |
index 905edc7897afdf218ffd763e0d50fe213071ccf8..6b7d8301b07a6ec97bf47abc884e9d4d6d0b9c3e 100644 |
--- a/content/common/quota_dispatcher.cc |
+++ b/content/common/quota_dispatcher.cc |
@@ -4,22 +4,54 @@ |
#include "content/common/quota_dispatcher.h" |
+#include "base/basictypes.h" |
#include "content/common/child_thread.h" |
#include "content/common/quota_messages.h" |
#include "googleurl/src/gurl.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageQuotaCallbacks.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageQuotaType.h" |
+ |
+using quota::QuotaStatusCode; |
+using quota::StorageType; |
using WebKit::WebStorageQuotaCallbacks; |
using WebKit::WebStorageQuotaError; |
using WebKit::WebStorageQuotaType; |
+namespace { |
+ |
+// QuotaDispatcher::Callback implementation for WebStorageQuotaCallbacks. |
+class WebStorageQuotaDispatcherCallback : public QuotaDispatcher::Callback { |
+ public: |
+ WebStorageQuotaDispatcherCallback(WebKit::WebStorageQuotaCallbacks* callback) |
+ : callbacks_(callback) { |
+ DCHECK(callbacks_); |
+ } |
+ virtual ~WebStorageQuotaDispatcherCallback() {} |
+ virtual void DidQueryStorageUsageAndQuota(int64 usage, int64 quota) OVERRIDE { |
+ callbacks_->didQueryStorageUsageAndQuota(usage, quota); |
+ } |
+ virtual void DidGrantStorageQuota(int64 granted_quota) OVERRIDE { |
+ callbacks_->didGrantStorageQuota(granted_quota); |
+ } |
+ virtual void DidFail(quota::QuotaStatusCode error) OVERRIDE { |
+ callbacks_->didFail(static_cast<WebStorageQuotaError>(error)); |
+ } |
+ |
+ private: |
+ // Not owned (self-destructed). |
+ WebKit::WebStorageQuotaCallbacks* callbacks_; |
+}; |
+ |
+} // namespace |
+ |
QuotaDispatcher::QuotaDispatcher() { |
} |
QuotaDispatcher::~QuotaDispatcher() { |
- IDMap<WebStorageQuotaCallbacks>::iterator iter(&pending_quota_callbacks_); |
+ IDMap<Callback, IDMapOwnPointer>::iterator iter(&pending_quota_callbacks_); |
while (!iter.IsAtEnd()) { |
- iter.GetCurrentValue()->didFail(WebKit::WebStorageQuotaErrorAbort); |
+ iter.GetCurrentValue()->DidFail(quota::kQuotaErrorAbort); |
iter.Advance(); |
} |
} |
@@ -39,10 +71,10 @@ bool QuotaDispatcher::OnMessageReceived(const IPC::Message& msg) { |
void QuotaDispatcher::QueryStorageUsageAndQuota( |
const GURL& origin_url, |
- WebStorageQuotaType type, |
- WebStorageQuotaCallbacks* callbacks) { |
- DCHECK(callbacks); |
- int request_id = pending_quota_callbacks_.Add(callbacks); |
+ StorageType type, |
+ Callback* callback) { |
+ DCHECK(callback); |
+ int request_id = pending_quota_callbacks_.Add(callback); |
ChildThread::current()->Send(new QuotaHostMsg_QueryStorageUsageAndQuota( |
request_id, origin_url, type)); |
} |
@@ -50,22 +82,28 @@ void QuotaDispatcher::QueryStorageUsageAndQuota( |
void QuotaDispatcher::RequestStorageQuota( |
int render_view_id, |
const GURL& origin_url, |
- WebStorageQuotaType type, |
- unsigned long long requested_size, |
- WebStorageQuotaCallbacks* callbacks) { |
- DCHECK(callbacks); |
- int request_id = pending_quota_callbacks_.Add(callbacks); |
+ StorageType type, |
+ int64 requested_size, |
+ Callback* callback) { |
+ DCHECK(callback); |
+ int request_id = pending_quota_callbacks_.Add(callback); |
ChildThread::current()->Send(new QuotaHostMsg_RequestStorageQuota( |
render_view_id, request_id, origin_url, type, requested_size)); |
} |
+// static |
+QuotaDispatcher::Callback* |
+QuotaDispatcher::CreateWebStorageQuotaCallbacksWrapper( |
+ WebKit::WebStorageQuotaCallbacks* callbacks) { |
+ return new WebStorageQuotaDispatcherCallback(callbacks); |
+} |
+ |
void QuotaDispatcher::DidGrantStorageQuota( |
int request_id, |
int64 granted_quota) { |
- WebStorageQuotaCallbacks* callbacks = pending_quota_callbacks_.Lookup( |
- request_id); |
- DCHECK(callbacks); |
- callbacks->didGrantStorageQuota(granted_quota); |
+ Callback* callback = pending_quota_callbacks_.Lookup(request_id); |
+ DCHECK(callback); |
+ callback->DidGrantStorageQuota(granted_quota); |
pending_quota_callbacks_.Remove(request_id); |
} |
@@ -73,19 +111,27 @@ void QuotaDispatcher::DidQueryStorageUsageAndQuota( |
int request_id, |
int64 current_usage, |
int64 current_quota) { |
- WebStorageQuotaCallbacks* callbacks = pending_quota_callbacks_.Lookup( |
- request_id); |
- DCHECK(callbacks); |
- callbacks->didQueryStorageUsageAndQuota(current_usage, current_quota); |
+ Callback* callback = pending_quota_callbacks_.Lookup(request_id); |
+ DCHECK(callback); |
+ callback->DidQueryStorageUsageAndQuota(current_usage, current_quota); |
pending_quota_callbacks_.Remove(request_id); |
} |
void QuotaDispatcher::DidFail( |
int request_id, |
- WebStorageQuotaError error) { |
- WebStorageQuotaCallbacks* callbacks = pending_quota_callbacks_.Lookup( |
- request_id); |
- DCHECK(callbacks); |
- callbacks->didFail(error); |
+ QuotaStatusCode error) { |
+ Callback* callback = pending_quota_callbacks_.Lookup(request_id); |
+ DCHECK(callback); |
+ callback->DidFail(error); |
pending_quota_callbacks_.Remove(request_id); |
} |
+ |
+COMPILE_ASSERT(int(WebKit::WebStorageQuotaTypeTemporary) == \ |
+ int(quota::kStorageTypeTemporary), mismatching_enums); |
+COMPILE_ASSERT(int(WebKit::WebStorageQuotaTypePersistent) == \ |
+ int(quota::kStorageTypePersistent), mismatching_enums); |
+ |
+COMPILE_ASSERT(int(WebKit::WebStorageQuotaErrorNotSupported) == \ |
+ int(quota::kQuotaErrorNotSupported), mismatching_enums); |
+COMPILE_ASSERT(int(WebKit::WebStorageQuotaErrorAbort) == \ |
+ int(quota::kQuotaErrorAbort), mismatching_enums); |