| Index: components/browsing_data/counters/browsing_data_counter.cc
|
| diff --git a/components/browsing_data/counters/browsing_data_counter.cc b/components/browsing_data/counters/browsing_data_counter.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..53065c3b3627f7ba56aad60ce3a8074eb6bb9dda
|
| --- /dev/null
|
| +++ b/components/browsing_data/counters/browsing_data_counter.cc
|
| @@ -0,0 +1,96 @@
|
| +// Copyright (c) 2016 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 "components/browsing_data/counters/browsing_data_counter.h"
|
| +
|
| +#include <utility>
|
| +
|
| +#include "base/memory/ptr_util.h"
|
| +#include "components/browsing_data/browsing_data_utils.h"
|
| +
|
| +BrowsingDataCounter::BrowsingDataCounter(const std::string& pref_name)
|
| + : pref_name_(pref_name) {}
|
| +
|
| +BrowsingDataCounter::~BrowsingDataCounter() {}
|
| +
|
| +void BrowsingDataCounter::Init(PrefService* pref_service,
|
| + const std::string& delete_time_period_pref,
|
| + const Callback& callback) {
|
| + DCHECK(!initialized_);
|
| + callback_ = callback;
|
| + pref_service_ = pref_service;
|
| + pref_.Init(GetPrefName(), pref_service_,
|
| + base::Bind(&BrowsingDataCounter::Restart, base::Unretained(this)));
|
| + period_.Init(
|
| + delete_time_period_pref, pref_service_,
|
| + base::Bind(&BrowsingDataCounter::Restart, base::Unretained(this)));
|
| +
|
| + initialized_ = true;
|
| + OnInitialized();
|
| +}
|
| +
|
| +void BrowsingDataCounter::OnInitialized() {}
|
| +
|
| +base::Time BrowsingDataCounter::GetPeriodStart() {
|
| + return CalculateBeginDeleteTime(static_cast<TimePeriod>(*period_));
|
| +}
|
| +
|
| +void BrowsingDataCounter::Restart() {
|
| + DCHECK(initialized_);
|
| +
|
| + // If this data type was unchecked for deletion, we do not need to count it.
|
| + if (!pref_service_->GetBoolean(GetPrefName()))
|
| + return;
|
| +
|
| + callback_.Run(base::WrapUnique(new Result(this)));
|
| +
|
| + Count();
|
| +}
|
| +
|
| +void BrowsingDataCounter::ReportResult(ResultInt value) {
|
| + DCHECK(initialized_);
|
| + callback_.Run(base::WrapUnique(new FinishedResult(this, value)));
|
| +}
|
| +
|
| +void BrowsingDataCounter::ReportResult(std::unique_ptr<Result> result) {
|
| + DCHECK(initialized_);
|
| + callback_.Run(std::move(result));
|
| +}
|
| +
|
| +const std::string& BrowsingDataCounter::GetPrefName() const {
|
| + return pref_name_;
|
| +}
|
| +
|
| +PrefService* BrowsingDataCounter::GetPrefs() const {
|
| + return pref_service_;
|
| +}
|
| +
|
| +// BrowsingDataCounter::Result -------------------------------------------------
|
| +
|
| +BrowsingDataCounter::Result::Result(const BrowsingDataCounter* source)
|
| + : source_(source) {}
|
| +
|
| +BrowsingDataCounter::Result::~Result() {}
|
| +
|
| +bool BrowsingDataCounter::Result::Finished() const {
|
| + return false;
|
| +}
|
| +
|
| +// BrowsingDataCounter::FinishedResult -----------------------------------------
|
| +
|
| +BrowsingDataCounter::FinishedResult::FinishedResult(
|
| + const BrowsingDataCounter* source,
|
| + ResultInt value)
|
| + : Result(source), value_(value) {}
|
| +
|
| +BrowsingDataCounter::FinishedResult::~FinishedResult() {}
|
| +
|
| +bool BrowsingDataCounter::FinishedResult::Finished() const {
|
| + return true;
|
| +}
|
| +
|
| +BrowsingDataCounter::ResultInt BrowsingDataCounter::FinishedResult::Value()
|
| + const {
|
| + return value_;
|
| +}
|
|
|