blob: 2b47d114dbccd95699e04136f1ea8474e29e4b2c [file] [log] [blame]
// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/profiles/profile_statistics.h"
#include <utility>
#include "chrome/browser/profiles/profile_statistics_aggregator.h"
ProfileStatistics::ProfileStatistics(
scoped_refptr<autofill::AutofillWebDataService> autofill_web_data_service,
autofill::PersonalDataManager* personal_data_manager,
const autofill::EntityDataManager* entity_data_manager,
bookmarks::BookmarkModel* bookmark_model,
history::HistoryService* history_service,
scoped_refptr<password_manager::PasswordStoreInterface>
profile_password_store,
PrefService* pref_service,
std::unique_ptr<device::fido::PlatformCredentialStore>
platform_credential_store)
: autofill_web_data_service_(std::move(autofill_web_data_service)),
personal_data_manager_(personal_data_manager),
entity_data_manager_(entity_data_manager),
bookmark_model_(bookmark_model),
history_service_(history_service),
profile_password_store_(profile_password_store),
pref_service_(pref_service),
platform_credential_store_(std::move(platform_credential_store)),
aggregator_(nullptr) {}
ProfileStatistics::~ProfileStatistics() = default;
void ProfileStatistics::GatherStatistics(
profiles::ProfileStatisticsCallback callback) {
if (!aggregator_) {
aggregator_ = std::make_unique<ProfileStatisticsAggregator>(
autofill_web_data_service_, personal_data_manager_,
entity_data_manager_, bookmark_model_, history_service_,
profile_password_store_, pref_service_,
std::move(platform_credential_store_),
base::BindOnce(&ProfileStatistics::DeregisterAggregator,
weak_ptr_factory_.GetWeakPtr()));
}
aggregator_->AddCallbackAndStartAggregator(std::move(callback));
}
void ProfileStatistics::DeregisterAggregator() {
aggregator_ = nullptr;
}