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

Unified Diff: content/common/quota_dispatcher.cc

Issue 7438001: Cleanup: Make quota dispatcher code independent from WebKit types (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: clang fix Created 9 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/common/quota_dispatcher.h ('k') | content/common/quota_messages.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « content/common/quota_dispatcher.h ('k') | content/common/quota_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698