Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(943)

Side by Side Diff: services/preferences/persistent_pref_store_factory.cc

Issue 2745563005: Pref service: add support for tracked prefs. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "services/preferences/persistent_pref_store_factory.h" 5 #include "services/preferences/persistent_pref_store_factory.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 #include <vector>
9 10
10 #include "components/prefs/json_pref_store.h" 11 #include "components/prefs/json_pref_store.h"
11 #include "components/prefs/pref_filter.h" 12 #include "components/prefs/pref_filter.h"
13 #include "components/user_prefs/tracked/pref_hash_filter.h"
12 #include "services/preferences/persistent_pref_store_impl.h" 14 #include "services/preferences/persistent_pref_store_impl.h"
15 #include "services/preferences/public/cpp/tracked_persistent_pref_store_factory. h"
16 #include "services/preferences/public/interfaces/tracked_preference_validation_d elegate.mojom.h"
13 17
14 namespace prefs { 18 namespace prefs {
15 namespace { 19 namespace {
16 20
21 void ForwardToResetOnLoadObserver(mojom::ResetOnLoadObserverPtr observer) {
22 if (observer)
23 observer->OnResetOnLoad();
24 }
25
17 std::unique_ptr<PersistentPrefStoreImpl> CreateSimplePersistentPrefStore( 26 std::unique_ptr<PersistentPrefStoreImpl> CreateSimplePersistentPrefStore(
18 mojom::SimplePersistentPrefStoreConfigurationPtr config, 27 mojom::SimplePersistentPrefStoreConfigurationPtr config,
19 base::SequencedWorkerPool* worker_pool) { 28 base::SequencedWorkerPool* worker_pool) {
20 return base::MakeUnique<PersistentPrefStoreImpl>( 29 return base::MakeUnique<PersistentPrefStoreImpl>(
21 new JsonPrefStore(config->pref_filename, 30 new JsonPrefStore(config->pref_filename,
22 JsonPrefStore::GetTaskRunnerForFile( 31 JsonPrefStore::GetTaskRunnerForFile(
23 config->pref_filename.DirName(), worker_pool), 32 config->pref_filename.DirName(), worker_pool),
24 nullptr), 33 nullptr),
25 nullptr); 34 nullptr);
26 } 35 }
27 36
37 std::unique_ptr<PersistentPrefStoreImpl>
38 CreateTrackedPersistentPrefStoreFromConfig(
39 mojom::TrackedPersistentPrefStoreConfigurationPtr config,
40 base::SequencedWorkerPool* worker_pool) {
41 std::vector<PrefHashFilter::TrackedPreferenceMetadata> tracking_configuration;
42 for (const auto& metadata : config->tracking_configuration) {
43 PrefHashFilter::TrackedPreferenceMetadata metadata_view = {
44 metadata->reporting_id, metadata->name.c_str(),
45 metadata->enforcement_level, metadata->strategy,
46 metadata->value_type,
47 };
48 tracking_configuration.push_back(metadata_view);
49 }
50 auto io_task_runner = JsonPrefStore::GetTaskRunnerForFile(
51 config->unprotected_pref_filename.DirName(), worker_pool);
52
53 auto validation_delegate = std::move(config->validation_delegate);
54 auto on_reset_on_load =
55 base::Bind(&ForwardToResetOnLoadObserver,
56 base::Passed(&config->reset_on_load_observer));
57 return base::MakeUnique<PersistentPrefStoreImpl>(
58 CreateTrackedPersistentPrefStore(io_task_runner, std::move(config),
59 validation_delegate.get(),
60 on_reset_on_load),
gab 2017/03/28 16:42:08 Why are the last two params special cased from the
Sam McNally 2017/03/30 09:06:05 Changed them to not be.
61 std::move(validation_delegate));
62 }
63
28 } // namespace 64 } // namespace
29 65
30 std::unique_ptr<PersistentPrefStoreImpl> CreatePersistentPrefStore( 66 std::unique_ptr<PersistentPrefStoreImpl> CreatePersistentPrefStore(
31 mojom::PersistentPrefStoreConfigurationPtr configuration, 67 mojom::PersistentPrefStoreConfigurationPtr configuration,
32 base::SequencedWorkerPool* worker_pool) { 68 base::SequencedWorkerPool* worker_pool) {
33 if (configuration->is_simple_configuration()) { 69 if (configuration->is_simple_configuration()) {
34 return CreateSimplePersistentPrefStore( 70 return CreateSimplePersistentPrefStore(
35 std::move(configuration->get_simple_configuration()), worker_pool); 71 std::move(configuration->get_simple_configuration()), worker_pool);
36 } 72 }
73 if (configuration->is_tracked_configuration()) {
gab 2017/03/28 16:42:08 Purely observational, no action required. To keep
74 return CreateTrackedPersistentPrefStoreFromConfig(
75 std::move(configuration->get_tracked_configuration()), worker_pool);
76 }
37 NOTREACHED(); 77 NOTREACHED();
38 return nullptr; 78 return nullptr;
39 } 79 }
40 80
41 } // namespace prefs 81 } // namespace prefs
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698