1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
// 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 "components/browsing_data/core/counters/browsing_data_counter.h"
#include <utility>
#include "base/memory/ptr_util.h"
#include "components/browsing_data/core/browsing_data_utils.h"
#include "components/browsing_data/core/pref_names.h"
#include "components/prefs/pref_service.h"
namespace browsing_data {
BrowsingDataCounter::BrowsingDataCounter() {}
BrowsingDataCounter::~BrowsingDataCounter() {}
void BrowsingDataCounter::Init(PrefService* pref_service,
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(
browsing_data::prefs::kDeleteTimePeriod, 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_);
callback_.Run(base::MakeUnique<Result>(this));
Count();
}
void BrowsingDataCounter::ReportResult(ResultInt value) {
DCHECK(initialized_);
callback_.Run(base::MakeUnique<FinishedResult>(this, value));
}
void BrowsingDataCounter::ReportResult(std::unique_ptr<Result> result) {
DCHECK(initialized_);
callback_.Run(std::move(result));
}
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_;
}
} // namespace browsing_data
|