Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1288)

Unified Diff: chrome/browser/browsing_data/browsing_data_cache_storage_helper.cc

Issue 1297093002: Cache Storage API: Hook up to chrome://settings/cookies (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase onto https://codereview.chromium.org/1297023004 Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
+}

Powered by Google App Engine
This is Rietveld 408576698