blob: 5a5890c84e1a63762c628f60274c7900425b7777 [file] [log] [blame]
// Copyright (c) 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/cache_counter.h"
#include "chrome/browser/profiles/profile.h"
#include "components/browsing_data/content/storage_partition_http_cache_data_remover.h"
#include "components/browsing_data/core/pref_names.h"
#include "net/base/net_errors.h"
CacheCounter::CacheCounter(Profile* profile)
: profile_(profile),
pending_(false),
weak_ptr_factory_(this) {}
CacheCounter::~CacheCounter() {
}
const char* CacheCounter::GetPrefName() const {
return browsing_data::prefs::kDeleteCache;
}
void CacheCounter::Count() {
// TODO(msramek): StoragePartitionHttpCacheDataRemover currently does not
// implement counting for subsets of cache, only for the entire cache. Thus,
// we ignore the time period setting and always request counting for
// the unbounded time interval. It is up to the UI to interpret the results
// for finite time intervals as upper estimates.
browsing_data::StoragePartitionHttpCacheDataRemover::CreateForRange(
content::BrowserContext::GetDefaultStoragePartition(profile_),
base::Time(), base::Time::Max())
->Count(base::Bind(&CacheCounter::OnCacheSizeCalculated,
weak_ptr_factory_.GetWeakPtr()));
pending_ = true;
}
void CacheCounter::OnCacheSizeCalculated(int64_t result_bytes) {
pending_ = false;
// A value less than 0 means a net error code.
if (result_bytes < 0)
return;
ReportResult(result_bytes);
}
bool CacheCounter::Pending() {
return pending_;
}