Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / content / browser / service_worker / service_worker_cache_quota_client.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/service_worker/service_worker_cache_quota_client.h"
6
7 #include "content/browser/service_worker/service_worker_cache_storage_manager.h"
8 #include "content/public/browser/browser_thread.h"
9
10 namespace content {
11
12 ServiceWorkerCacheQuotaClient::ServiceWorkerCacheQuotaClient(
13     base::WeakPtr<ServiceWorkerCacheStorageManager> cache_manager)
14     : cache_manager_(cache_manager) {
15 }
16
17 ServiceWorkerCacheQuotaClient::~ServiceWorkerCacheQuotaClient() {
18 }
19
20 storage::QuotaClient::ID ServiceWorkerCacheQuotaClient::id() const {
21   DCHECK_CURRENTLY_ON(BrowserThread::IO);
22   return kServiceWorkerCache;
23 }
24
25 void ServiceWorkerCacheQuotaClient::OnQuotaManagerDestroyed() {
26   DCHECK_CURRENTLY_ON(BrowserThread::IO);
27   delete this;
28 }
29
30 void ServiceWorkerCacheQuotaClient::GetOriginUsage(
31     const GURL& origin_url,
32     storage::StorageType type,
33     const GetUsageCallback& callback) {
34   DCHECK_CURRENTLY_ON(BrowserThread::IO);
35
36   if (!cache_manager_ || !DoesSupport(type)) {
37     callback.Run(0);
38     return;
39   }
40
41   cache_manager_->GetOriginUsage(origin_url, callback);
42 }
43
44 void ServiceWorkerCacheQuotaClient::GetOriginsForType(
45     storage::StorageType type,
46     const GetOriginsCallback& callback) {
47   DCHECK_CURRENTLY_ON(BrowserThread::IO);
48
49   if (!cache_manager_ || !DoesSupport(type)) {
50     callback.Run(std::set<GURL>());
51     return;
52   }
53
54   cache_manager_->GetOrigins(callback);
55 }
56
57 void ServiceWorkerCacheQuotaClient::GetOriginsForHost(
58     storage::StorageType type,
59     const std::string& host,
60     const GetOriginsCallback& callback) {
61   DCHECK_CURRENTLY_ON(BrowserThread::IO);
62
63   if (!cache_manager_ || !DoesSupport(type)) {
64     callback.Run(std::set<GURL>());
65     return;
66   }
67
68   cache_manager_->GetOriginsForHost(host, callback);
69 }
70
71 void ServiceWorkerCacheQuotaClient::DeleteOriginData(
72     const GURL& origin,
73     storage::StorageType type,
74     const DeletionCallback& callback) {
75   DCHECK_CURRENTLY_ON(BrowserThread::IO);
76
77   if (!cache_manager_) {
78     callback.Run(storage::kQuotaErrorAbort);
79     return;
80   }
81
82   if (!DoesSupport(type)) {
83     callback.Run(storage::kQuotaStatusOk);
84     return;
85   }
86
87   cache_manager_->DeleteOriginData(origin, callback);
88 }
89
90 bool ServiceWorkerCacheQuotaClient::DoesSupport(
91     storage::StorageType type) const {
92   DCHECK_CURRENTLY_ON(BrowserThread::IO);
93
94   return type == storage::kStorageTypeTemporary;
95 }
96
97 }  // namespace content