blob: 7af4c17419a29100a3a6d3297fb1af54b7cf1cca [file] [log] [blame]
// Copyright 2014 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 "content/browser/cache_storage/cache_storage_quota_client.h"
#include "content/browser/cache_storage/cache_storage_manager.h"
#include "content/public/browser/browser_thread.h"
#include "storage/browser/quota/quota_client_type.h"
#include "third_party/blink/public/mojom/quota/quota_types.mojom.h"
#include "url/origin.h"
namespace content {
CacheStorageQuotaClient::CacheStorageQuotaClient(
scoped_refptr<CacheStorageManager> cache_manager,
CacheStorageOwner owner)
: cache_manager_(std::move(cache_manager)), owner_(owner) {}
CacheStorageQuotaClient::~CacheStorageQuotaClient() = default;
void CacheStorageQuotaClient::OnQuotaManagerDestroyed() {}
void CacheStorageQuotaClient::GetOriginUsage(const url::Origin& origin,
blink::mojom::StorageType type,
GetOriginUsageCallback callback) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
DCHECK_EQ(type, blink::mojom::StorageType::kTemporary);
if (!CacheStorageManager::IsValidQuotaOrigin(origin)) {
std::move(callback).Run(0);
return;
}
cache_manager_->GetOriginUsage(origin, owner_, std::move(callback));
}
void CacheStorageQuotaClient::GetOriginsForType(
blink::mojom::StorageType type,
GetOriginsForTypeCallback callback) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
DCHECK_EQ(type, blink::mojom::StorageType::kTemporary);
cache_manager_->GetOrigins(owner_, std::move(callback));
}
void CacheStorageQuotaClient::GetOriginsForHost(
blink::mojom::StorageType type,
const std::string& host,
GetOriginsForHostCallback callback) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
DCHECK_EQ(type, blink::mojom::StorageType::kTemporary);
cache_manager_->GetOriginsForHost(host, owner_, std::move(callback));
}
void CacheStorageQuotaClient::DeleteOriginData(
const url::Origin& origin,
blink::mojom::StorageType type,
DeleteOriginDataCallback callback) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
DCHECK_EQ(type, blink::mojom::StorageType::kTemporary);
if (!CacheStorageManager::IsValidQuotaOrigin(origin)) {
std::move(callback).Run(blink::mojom::QuotaStatusCode::kOk);
return;
}
cache_manager_->DeleteOriginData(origin, owner_, std::move(callback));
}
void CacheStorageQuotaClient::PerformStorageCleanup(
blink::mojom::StorageType type,
PerformStorageCleanupCallback callback) {
std::move(callback).Run();
}
// static
storage::QuotaClientType CacheStorageQuotaClient::GetClientTypeFromOwner(
CacheStorageOwner owner) {
switch (owner) {
case CacheStorageOwner::kCacheAPI:
return storage::QuotaClientType::kServiceWorkerCache;
case CacheStorageOwner::kBackgroundFetch:
return storage::QuotaClientType::kBackgroundFetch;
}
}
} // namespace content