| Index: chrome/browser/browsing_data/browsing_data_cache_storage_helper.cc
|
| diff --git a/chrome/browser/browsing_data/browsing_data_cache_storage_helper.cc b/chrome/browser/browsing_data/browsing_data_cache_storage_helper.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b5bde4d809a254fb34e697277ded620397800da2
|
| --- /dev/null
|
| +++ b/chrome/browser/browsing_data/browsing_data_cache_storage_helper.cc
|
| @@ -0,0 +1,152 @@
|
| +// Copyright 2015 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 "chrome/browser/browsing_data/browsing_data_cache_storage_helper.h"
|
| +
|
| +#include <vector>
|
| +
|
| +#include "base/bind.h"
|
| +#include "chrome/browser/browsing_data/browsing_data_helper.h"
|
| +#include "content/public/browser/browser_thread.h"
|
| +#include "content/public/browser/cache_storage_context.h"
|
| +
|
| +using content::BrowserThread;
|
| +using content::CacheStorageContext;
|
| +using content::CacheStorageUsageInfo;
|
| +
|
| +BrowsingDataCacheStorageHelper::BrowsingDataCacheStorageHelper(
|
| + CacheStorageContext* cache_storage_context)
|
| + : cache_storage_context_(cache_storage_context) {
|
| + DCHECK(cache_storage_context_);
|
| +}
|
| +
|
| +BrowsingDataCacheStorageHelper::~BrowsingDataCacheStorageHelper() {}
|
| +
|
| +void BrowsingDataCacheStorageHelper::StartFetching(
|
| + const FetchCallback& callback) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + BrowserThread::PostTask(
|
| + BrowserThread::IO, FROM_HERE,
|
| + base::Bind(
|
| + &BrowsingDataCacheStorageHelper::FetchCacheStorageUsageInfoOnIOThread,
|
| + this, callback));
|
| +}
|
| +
|
| +void BrowsingDataCacheStorageHelper::DeleteCacheStorage(const GURL& origin) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + BrowserThread::PostTask(
|
| + BrowserThread::IO, FROM_HERE,
|
| + base::Bind(&BrowsingDataCacheStorageHelper::DeleteCacheStorageOnIOThread,
|
| + this, origin));
|
| +}
|
| +
|
| +void BrowsingDataCacheStorageHelper::FetchCacheStorageUsageInfoOnIOThread(
|
| + const FetchCallback& callback) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + cache_storage_context_->GetAllOriginsInfo(
|
| + base::Bind(&BrowsingDataCacheStorageHelper::GetAllOriginsInfoCallback,
|
| + this, callback));
|
| +}
|
| +
|
| +void BrowsingDataCacheStorageHelper::GetAllOriginsInfoCallback(
|
| + const FetchCallback& callback,
|
| + const std::vector<CacheStorageUsageInfo>& origins) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| +
|
| + std::list<content::CacheStorageUsageInfo> result;
|
| + for (const CacheStorageUsageInfo& origin : origins) {
|
| + if (!BrowsingDataHelper::HasWebScheme(origin.origin))
|
| + continue; // Non-websafe state is not considered browsing data.
|
| + result.push_back(origin);
|
| + }
|
| +
|
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| + base::Bind(callback, result));
|
| +}
|
| +
|
| +void BrowsingDataCacheStorageHelper::DeleteCacheStorageOnIOThread(
|
| + const GURL& origin) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + cache_storage_context_->DeleteForOrigin(origin);
|
| +}
|
| +
|
| +CannedBrowsingDataCacheStorageHelper::PendingCacheStorageUsageInfo::
|
| + PendingCacheStorageUsageInfo(const GURL& origin,
|
| + int64 total_size_bytes,
|
| + const base::Time& last_modified)
|
| + : origin(origin),
|
| + total_size_bytes(total_size_bytes),
|
| + last_modified(last_modified) {}
|
| +
|
| +CannedBrowsingDataCacheStorageHelper::PendingCacheStorageUsageInfo::
|
| + ~PendingCacheStorageUsageInfo() {}
|
| +
|
| +bool CannedBrowsingDataCacheStorageHelper::PendingCacheStorageUsageInfo::
|
| +operator<(const PendingCacheStorageUsageInfo& other) const {
|
| + return origin < other.origin;
|
| +}
|
| +
|
| +CannedBrowsingDataCacheStorageHelper::CannedBrowsingDataCacheStorageHelper(
|
| + content::CacheStorageContext* context)
|
| + : BrowsingDataCacheStorageHelper(context) {}
|
| +
|
| +CannedBrowsingDataCacheStorageHelper::~CannedBrowsingDataCacheStorageHelper() {}
|
| +
|
| +void CannedBrowsingDataCacheStorageHelper::AddCacheStorage(const GURL& origin) {
|
| + if (!BrowsingDataHelper::HasWebScheme(origin))
|
| + return; // Non-websafe state is not considered browsing data.
|
| +
|
| + pending_cache_storage_info_.insert(
|
| + PendingCacheStorageUsageInfo(origin, 0, base::Time()));
|
| +}
|
| +
|
| +void CannedBrowsingDataCacheStorageHelper::Reset() {
|
| + pending_cache_storage_info_.clear();
|
| +}
|
| +
|
| +bool CannedBrowsingDataCacheStorageHelper::empty() const {
|
| + return pending_cache_storage_info_.empty();
|
| +}
|
| +
|
| +size_t CannedBrowsingDataCacheStorageHelper::GetCacheStorageCount() const {
|
| + return pending_cache_storage_info_.size();
|
| +}
|
| +
|
| +const std::set<
|
| + CannedBrowsingDataCacheStorageHelper::PendingCacheStorageUsageInfo>&
|
| +CannedBrowsingDataCacheStorageHelper::GetCacheStorageUsageInfo() const {
|
| + return pending_cache_storage_info_;
|
| +}
|
| +
|
| +void CannedBrowsingDataCacheStorageHelper::StartFetching(
|
| + const base::Callback<void(const std::list<CacheStorageUsageInfo>&)>&
|
| + callback) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + DCHECK(!callback.is_null());
|
| +
|
| + std::list<CacheStorageUsageInfo> result;
|
| + for (const PendingCacheStorageUsageInfo& pending_info :
|
| + pending_cache_storage_info_) {
|
| + CacheStorageUsageInfo info(pending_info.origin,
|
| + pending_info.total_size_bytes,
|
| + pending_info.last_modified);
|
| + result.push_back(info);
|
| + }
|
| +
|
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| + base::Bind(callback, result));
|
| +}
|
| +
|
| +void CannedBrowsingDataCacheStorageHelper::DeleteCacheStorage(
|
| + const GURL& origin) {
|
| + for (std::set<PendingCacheStorageUsageInfo>::iterator it =
|
| + pending_cache_storage_info_.begin();
|
| + it != pending_cache_storage_info_.end();) {
|
| + if (it->origin == origin)
|
| + pending_cache_storage_info_.erase(it++);
|
| + else
|
| + ++it;
|
| + }
|
| + BrowsingDataCacheStorageHelper::DeleteCacheStorage(origin);
|
| +}
|
|
|