| Index: services/preferences/persistent_pref_store_factory.cc
|
| diff --git a/services/preferences/persistent_pref_store_factory.cc b/services/preferences/persistent_pref_store_factory.cc
|
| index c9909fbbe6942d6d2a07d05e7f0d1a192e63c21c..c3381fa912f6520148859060e29bbc7ebac23edf 100644
|
| --- a/services/preferences/persistent_pref_store_factory.cc
|
| +++ b/services/preferences/persistent_pref_store_factory.cc
|
| @@ -6,14 +6,23 @@
|
|
|
| #include <memory>
|
| #include <utility>
|
| +#include <vector>
|
|
|
| #include "components/prefs/json_pref_store.h"
|
| #include "components/prefs/pref_filter.h"
|
| +#include "components/user_prefs/tracked/pref_hash_filter.h"
|
| #include "services/preferences/persistent_pref_store_impl.h"
|
| +#include "services/preferences/public/cpp/tracked_persistent_pref_store_factory.h"
|
| +#include "services/preferences/public/interfaces/tracked_preference_validation_delegate.mojom.h"
|
|
|
| namespace prefs {
|
| namespace {
|
|
|
| +void ForwardToResetOnLoadObserver(mojom::ResetOnLoadObserverPtr observer) {
|
| + if (observer)
|
| + observer->OnResetOnLoad();
|
| +}
|
| +
|
| std::unique_ptr<PersistentPrefStoreImpl> CreateSimplePersistentPrefStore(
|
| mojom::SimplePersistentPrefStoreConfigurationPtr config,
|
| base::SequencedWorkerPool* worker_pool) {
|
| @@ -25,6 +34,33 @@ std::unique_ptr<PersistentPrefStoreImpl> CreateSimplePersistentPrefStore(
|
| nullptr);
|
| }
|
|
|
| +std::unique_ptr<PersistentPrefStoreImpl>
|
| +CreateTrackedPersistentPrefStoreFromConfig(
|
| + mojom::TrackedPersistentPrefStoreConfigurationPtr config,
|
| + base::SequencedWorkerPool* worker_pool) {
|
| + std::vector<PrefHashFilter::TrackedPreferenceMetadata> tracking_configuration;
|
| + for (const auto& metadata : config->tracking_configuration) {
|
| + PrefHashFilter::TrackedPreferenceMetadata metadata_view = {
|
| + metadata->reporting_id, metadata->name.c_str(),
|
| + metadata->enforcement_level, metadata->strategy,
|
| + metadata->value_type,
|
| + };
|
| + tracking_configuration.push_back(metadata_view);
|
| + }
|
| + auto io_task_runner = JsonPrefStore::GetTaskRunnerForFile(
|
| + config->unprotected_pref_filename.DirName(), worker_pool);
|
| +
|
| + return base::MakeUnique<PersistentPrefStoreImpl>(
|
| + CreateTrackedPersistentPrefStore(
|
| + io_task_runner, config->unprotected_pref_filename,
|
| + config->protected_pref_filename, tracking_configuration,
|
| + config->reporting_ids_count, config->seed, config->legacy_device_id,
|
| + config->registry_path, config->validation_delegate.get(),
|
| + base::Bind(&ForwardToResetOnLoadObserver,
|
| + base::Passed(&config->reset_on_load_observer))),
|
| + std::move(config->validation_delegate));
|
| +}
|
| +
|
| } // namespace
|
|
|
| std::unique_ptr<PersistentPrefStoreImpl> CreatePersistentPrefStore(
|
| @@ -34,6 +70,10 @@ std::unique_ptr<PersistentPrefStoreImpl> CreatePersistentPrefStore(
|
| return CreateSimplePersistentPrefStore(
|
| std::move(configuration->get_simple_configuration()), worker_pool);
|
| }
|
| + if (configuration->is_tracked_configuration()) {
|
| + return CreateTrackedPersistentPrefStoreFromConfig(
|
| + std::move(configuration->get_tracked_configuration()), worker_pool);
|
| + }
|
| NOTREACHED();
|
| return nullptr;
|
| }
|
|
|