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

Unified Diff: content/browser/in_process_webkit/indexed_db_quota_client.h

Issue 7053030: Initial IndexedDBQuotaClient implementation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: make webkit thread outlive IndexedDBContext Created 9 years, 7 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
Index: content/browser/in_process_webkit/indexed_db_quota_client.h
diff --git a/content/browser/in_process_webkit/indexed_db_quota_client.h b/content/browser/in_process_webkit/indexed_db_quota_client.h
new file mode 100644
index 0000000000000000000000000000000000000000..59b3b23cd92389eba2629c0e1b184d489d69efcd
--- /dev/null
+++ b/content/browser/in_process_webkit/indexed_db_quota_client.h
@@ -0,0 +1,80 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWER_IN_PROCESS_WEBKIT_QUOTA_CLIENT_H_
+#define CONTENT_BROWER_IN_PROCESS_WEBKIT_QUOTA_CLIENT_H_
+
+#include <set>
+#include <string>
+
+#include "base/memory/ref_counted.h"
+#include "base/message_loop_proxy.h"
+#include "webkit/quota/quota_client.h"
+#include "webkit/quota/quota_task.h"
+#include "webkit/quota/quota_types.h"
+
+class IndexedDBContext;
+
+// A QuotaClient implementation to integrate IndexedDB
+// with the quota management system. This interface is used
+// on the IO thread by the quota manager.
+class IndexedDBQuotaClient : public quota::QuotaClient,
+ public quota::QuotaTaskObserver {
+ public:
+ IndexedDBQuotaClient(
+ base::MessageLoopProxy* tracker_thread,
+ IndexedDBContext* indexed_db_context);
+ virtual ~IndexedDBQuotaClient();
+
+ // QuotaClient method overrides
+ virtual ID id() const OVERRIDE;
+ virtual void OnQuotaManagerDestroyed() OVERRIDE;
+ virtual void GetOriginUsage(const GURL& origin_url,
+ quota::StorageType type,
+ GetUsageCallback* callback) OVERRIDE;
+ virtual void GetOriginsForType(quota::StorageType type,
+ GetOriginsCallback* callback) OVERRIDE;
+ virtual void GetOriginsForHost(quota::StorageType type,
+ const std::string& host,
+ GetOriginsCallback* callback) OVERRIDE;
+ virtual void DeleteOriginData(const GURL& origin,
+ quota::StorageType type,
+ DeletionCallback* callback) OVERRIDE;
+ private:
+ class HelperTask;
+ class GetOriginUsageTask;
+ class GetOriginsTaskBase;
+ class GetAllOriginsTask;
+ class GetOriginsForHostTask;
+
+ typedef quota::CallbackQueueMap1
+ <GetUsageCallback*,
+ GURL, // origin
+ int64
+ > UsageForOriginCallbackMap;
+ typedef quota::CallbackQueue1
+ <GetOriginsCallback*,
+ const std::set<GURL>&
+ > OriginsForTypeCallbackQueue;
+ typedef quota::CallbackQueueMap1
+ <GetOriginsCallback*,
+ std::string, // host
+ const std::set<GURL>&
+ > OriginsForHostCallbackMap;
+
+ void DidGetOriginUsage(const GURL& origin_url, int64 usage);
+ void DidGetAllOrigins(const std::set<GURL>& origins);
+ void DidGetOriginsForHost(
+ const std::string& host, const std::set<GURL>& origins);
+
+ scoped_refptr<base::MessageLoopProxy> webkit_thread_message_loop_;
+ scoped_refptr<IndexedDBContext> indexed_db_context_;
+ UsageForOriginCallbackMap usage_for_origin_callbacks_;
+ OriginsForTypeCallbackQueue origins_for_type_callbacks_;
+ OriginsForHostCallbackMap origins_for_host_callbacks_;
+
+ DISALLOW_COPY_AND_ASSIGN(IndexedDBQuotaClient);
+};
+
+#endif // CONTENT_BROWER_IN_PROCESS_WEBKIT_QUOTA_CLIENT_H_
« no previous file with comments | « content/browser/in_process_webkit/indexed_db_context.cc ('k') | content/browser/in_process_webkit/indexed_db_quota_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698