Index: webkit/browser/appcache/appcache_quota_client.cc |
diff --git a/webkit/browser/appcache/appcache_quota_client.cc b/webkit/browser/appcache/appcache_quota_client.cc |
deleted file mode 100644 |
index 039b5544bd94361827e30a320c400307a5b3d5aa..0000000000000000000000000000000000000000 |
--- a/webkit/browser/appcache/appcache_quota_client.cc |
+++ /dev/null |
@@ -1,253 +0,0 @@ |
-// Copyright (c) 2012 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. |
- |
-#include "webkit/browser/appcache/appcache_quota_client.h" |
- |
-#include <algorithm> |
-#include <map> |
-#include <set> |
- |
-#include "base/bind.h" |
-#include "base/bind_helpers.h" |
-#include "webkit/browser/appcache/appcache_service_impl.h" |
- |
-using quota::QuotaClient; |
- |
-namespace { |
-quota::QuotaStatusCode NetErrorCodeToQuotaStatus(int code) { |
- if (code == net::OK) |
- return quota::kQuotaStatusOk; |
- else if (code == net::ERR_ABORTED) |
- return quota::kQuotaErrorAbort; |
- else |
- return quota::kQuotaStatusUnknown; |
-} |
- |
-void RunFront(appcache::AppCacheQuotaClient::RequestQueue* queue) { |
- base::Closure request = queue->front(); |
- queue->pop_front(); |
- request.Run(); |
-} |
-} // namespace |
- |
-namespace appcache { |
- |
-AppCacheQuotaClient::AppCacheQuotaClient(AppCacheServiceImpl* service) |
- : service_(service), |
- appcache_is_ready_(false), |
- quota_manager_is_destroyed_(false) { |
-} |
- |
-AppCacheQuotaClient::~AppCacheQuotaClient() { |
- DCHECK(pending_batch_requests_.empty()); |
- DCHECK(pending_serial_requests_.empty()); |
- DCHECK(current_delete_request_callback_.is_null()); |
-} |
- |
-QuotaClient::ID AppCacheQuotaClient::id() const { |
- return kAppcache; |
-} |
- |
-void AppCacheQuotaClient::OnQuotaManagerDestroyed() { |
- DeletePendingRequests(); |
- if (!current_delete_request_callback_.is_null()) { |
- current_delete_request_callback_.Reset(); |
- GetServiceDeleteCallback()->Cancel(); |
- } |
- |
- quota_manager_is_destroyed_ = true; |
- if (!service_) |
- delete this; |
-} |
- |
-void AppCacheQuotaClient::GetOriginUsage( |
- const GURL& origin, |
- quota::StorageType type, |
- const GetUsageCallback& callback) { |
- DCHECK(!callback.is_null()); |
- DCHECK(!quota_manager_is_destroyed_); |
- |
- if (!service_) { |
- callback.Run(0); |
- return; |
- } |
- |
- if (!appcache_is_ready_) { |
- pending_batch_requests_.push_back( |
- base::Bind(&AppCacheQuotaClient::GetOriginUsage, |
- base::Unretained(this), origin, type, callback)); |
- return; |
- } |
- |
- if (type != quota::kStorageTypeTemporary) { |
- callback.Run(0); |
- return; |
- } |
- |
- const AppCacheStorage::UsageMap* map = GetUsageMap(); |
- AppCacheStorage::UsageMap::const_iterator found = map->find(origin); |
- if (found == map->end()) { |
- callback.Run(0); |
- return; |
- } |
- callback.Run(found->second); |
-} |
- |
-void AppCacheQuotaClient::GetOriginsForType( |
- quota::StorageType type, |
- const GetOriginsCallback& callback) { |
- GetOriginsHelper(type, std::string(), callback); |
-} |
- |
-void AppCacheQuotaClient::GetOriginsForHost( |
- quota::StorageType type, |
- const std::string& host, |
- const GetOriginsCallback& callback) { |
- DCHECK(!callback.is_null()); |
- if (host.empty()) { |
- callback.Run(std::set<GURL>()); |
- return; |
- } |
- GetOriginsHelper(type, host, callback); |
-} |
- |
-void AppCacheQuotaClient::DeleteOriginData(const GURL& origin, |
- quota::StorageType type, |
- const DeletionCallback& callback) { |
- DCHECK(!quota_manager_is_destroyed_); |
- |
- if (!service_) { |
- callback.Run(quota::kQuotaErrorAbort); |
- return; |
- } |
- |
- if (!appcache_is_ready_ || !current_delete_request_callback_.is_null()) { |
- pending_serial_requests_.push_back( |
- base::Bind(&AppCacheQuotaClient::DeleteOriginData, |
- base::Unretained(this), origin, type, callback)); |
- return; |
- } |
- |
- current_delete_request_callback_ = callback; |
- if (type != quota::kStorageTypeTemporary) { |
- DidDeleteAppCachesForOrigin(net::OK); |
- return; |
- } |
- |
- service_->DeleteAppCachesForOrigin( |
- origin, GetServiceDeleteCallback()->callback()); |
-} |
- |
-bool AppCacheQuotaClient::DoesSupport(quota::StorageType type) const { |
- return type == quota::kStorageTypeTemporary; |
-} |
- |
-void AppCacheQuotaClient::DidDeleteAppCachesForOrigin(int rv) { |
- DCHECK(service_); |
- if (quota_manager_is_destroyed_) |
- return; |
- |
- // Finish the request by calling our callers callback. |
- current_delete_request_callback_.Run(NetErrorCodeToQuotaStatus(rv)); |
- current_delete_request_callback_.Reset(); |
- if (pending_serial_requests_.empty()) |
- return; |
- |
- // Start the next in the queue. |
- RunFront(&pending_serial_requests_); |
-} |
- |
-void AppCacheQuotaClient::GetOriginsHelper( |
- quota::StorageType type, |
- const std::string& opt_host, |
- const GetOriginsCallback& callback) { |
- DCHECK(!callback.is_null()); |
- DCHECK(!quota_manager_is_destroyed_); |
- |
- if (!service_) { |
- callback.Run(std::set<GURL>()); |
- return; |
- } |
- |
- if (!appcache_is_ready_) { |
- pending_batch_requests_.push_back( |
- base::Bind(&AppCacheQuotaClient::GetOriginsHelper, |
- base::Unretained(this), type, opt_host, callback)); |
- return; |
- } |
- |
- if (type != quota::kStorageTypeTemporary) { |
- callback.Run(std::set<GURL>()); |
- return; |
- } |
- |
- const AppCacheStorage::UsageMap* map = GetUsageMap(); |
- std::set<GURL> origins; |
- for (AppCacheStorage::UsageMap::const_iterator iter = map->begin(); |
- iter != map->end(); ++iter) { |
- if (opt_host.empty() || iter->first.host() == opt_host) |
- origins.insert(iter->first); |
- } |
- callback.Run(origins); |
-} |
- |
-void AppCacheQuotaClient::ProcessPendingRequests() { |
- DCHECK(appcache_is_ready_); |
- while (!pending_batch_requests_.empty()) |
- RunFront(&pending_batch_requests_); |
- |
- if (!pending_serial_requests_.empty()) |
- RunFront(&pending_serial_requests_); |
-} |
- |
-void AppCacheQuotaClient::DeletePendingRequests() { |
- pending_batch_requests_.clear(); |
- pending_serial_requests_.clear(); |
-} |
- |
-const AppCacheStorage::UsageMap* AppCacheQuotaClient::GetUsageMap() { |
- DCHECK(service_); |
- return service_->storage()->usage_map(); |
-} |
- |
-net::CancelableCompletionCallback* |
-AppCacheQuotaClient::GetServiceDeleteCallback() { |
- // Lazily created due to CancelableCompletionCallback's threading |
- // restrictions, there is no way to detach from the thread created on. |
- if (!service_delete_callback_) { |
- service_delete_callback_.reset( |
- new net::CancelableCompletionCallback( |
- base::Bind(&AppCacheQuotaClient::DidDeleteAppCachesForOrigin, |
- base::Unretained(this)))); |
- } |
- return service_delete_callback_.get(); |
-} |
- |
-void AppCacheQuotaClient::NotifyAppCacheReady() { |
- // Can reoccur during reinitialization. |
- if (!appcache_is_ready_) { |
- appcache_is_ready_ = true; |
- ProcessPendingRequests(); |
- } |
-} |
- |
-void AppCacheQuotaClient::NotifyAppCacheDestroyed() { |
- service_ = NULL; |
- while (!pending_batch_requests_.empty()) |
- RunFront(&pending_batch_requests_); |
- |
- while (!pending_serial_requests_.empty()) |
- RunFront(&pending_serial_requests_); |
- |
- if (!current_delete_request_callback_.is_null()) { |
- current_delete_request_callback_.Run(quota::kQuotaErrorAbort); |
- current_delete_request_callback_.Reset(); |
- GetServiceDeleteCallback()->Cancel(); |
- } |
- |
- if (quota_manager_is_destroyed_) |
- delete this; |
-} |
- |
-} // namespace appcache |