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

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

Issue 7470008: Improve IndexedDB's quota support (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merged delete methods; simplify GetUsageCallback Created 9 years, 4 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.cc
diff --git a/content/browser/in_process_webkit/indexed_db_quota_client.cc b/content/browser/in_process_webkit/indexed_db_quota_client.cc
index 4c3aaac2312071e613e8a82fe403add1dd012af4..1af8c75632d7fa2a6d3ddf1a236dc615fa556650 100644
--- a/content/browser/in_process_webkit/indexed_db_quota_client.cc
+++ b/content/browser/in_process_webkit/indexed_db_quota_client.cc
@@ -31,6 +31,30 @@ class IndexedDBQuotaClient::HelperTask : public quota::QuotaThreadTask {
scoped_refptr<IndexedDBContext> indexed_db_context_;
};
+class IndexedDBQuotaClient::DeleteOriginTask : public HelperTask {
+ public:
+ DeleteOriginTask(IndexedDBQuotaClient* client,
+ base::MessageLoopProxy* webkit_thread_message_loop,
+ const GURL& origin_url,
+ DeletionCallback* callback)
+ : HelperTask(client, webkit_thread_message_loop),
+ origin_url_(origin_url), callback_(callback) {
+ }
+ private:
+ virtual void RunOnTargetThread() OVERRIDE {
+ indexed_db_context_->DeleteIndexedDBForOrigin(origin_url_);
+ }
+ virtual void Aborted() OVERRIDE {
+ callback_.reset();
+ }
+ virtual void Completed() OVERRIDE {
+ callback_->Run(quota::kQuotaStatusOk);
+ callback_.reset();
+ }
+ GURL origin_url_;
+ scoped_ptr<DeletionCallback> callback_;
+};
+
class IndexedDBQuotaClient::GetOriginUsageTask : public HelperTask {
public:
GetOriginUsageTask(
@@ -43,12 +67,10 @@ class IndexedDBQuotaClient::GetOriginUsageTask : public HelperTask {
private:
virtual void RunOnTargetThread() OVERRIDE {
- string16 origin_id = DatabaseUtil::GetOriginIdentifier(origin_url_);
- FilePath file_path = indexed_db_context_->GetIndexedDBFilePath(origin_id);
- usage_ = 0;
- usage_ = file_util::ComputeDirectorySize(file_path);
+ usage_ = indexed_db_context_->InitializeDiskUsage(origin_url_);
michaeln 2011/08/04 22:11:55 Its a little odd to see this function calling an '
dgrogan 2011/08/04 23:44:56 You're right. Changed.
}
virtual void Completed() OVERRIDE {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
client_->DidGetOriginUsage(origin_url_, usage_);
}
GURL origin_url_;
@@ -202,9 +224,16 @@ void IndexedDBQuotaClient::GetOriginsForHost(
void IndexedDBQuotaClient::DeleteOriginData(const GURL& origin,
quota::StorageType type,
DeletionCallback* callback) {
- // TODO(tzik): implement me
- callback->Run(quota::kQuotaErrorNotSupported);
- delete callback;
+ if (type != quota::kStorageTypeTemporary) {
+ callback->Run(quota::kQuotaErrorNotSupported);
+ return;
+ }
+ scoped_refptr<DeleteOriginTask> task(
+ new DeleteOriginTask(this,
+ webkit_thread_message_loop_,
+ origin,
+ callback));
+ task->Start();
}
void IndexedDBQuotaClient::DidGetOriginUsage(

Powered by Google App Engine
This is Rietveld 408576698