| 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
 | 
| 
 |