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

Side by Side Diff: components/sync_preferences/pref_service_syncable_factory.cc

Issue 2740493002: Pref service: create service at browser startup (Closed)
Patch Set: Rename the capability provided by the service 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "components/sync_preferences/pref_service_syncable_factory.h" 5 #include "components/sync_preferences/pref_service_syncable_factory.h"
6 6
7 #include "base/trace_event/trace_event.h" 7 #include "base/trace_event/trace_event.h"
8 #include "build/build_config.h" 8 #include "build/build_config.h"
9 #include "components/pref_registry/pref_registry_syncable.h" 9 #include "components/pref_registry/pref_registry_syncable.h"
10 #include "components/prefs/default_pref_store.h" 10 #include "components/prefs/default_pref_store.h"
11 #include "components/prefs/pref_notifier_impl.h" 11 #include "components/prefs/pref_notifier_impl.h"
12 #include "components/prefs/pref_value_store.h" 12 #include "components/prefs/pref_value_store.h"
13 #include "components/sync_preferences/pref_service_syncable.h" 13 #include "components/sync_preferences/pref_service_syncable.h"
14 #include "services/preferences/public/cpp/pref_store_adapter.h"
15 #include "services/preferences/public/interfaces/preferences.mojom.h"
16 #include "services/service_manager/public/cpp/connector.h"
14 17
15 #if !defined(OS_IOS) 18 #if !defined(OS_IOS)
16 #include "components/policy/core/browser/browser_policy_connector.h" 19 #include "components/policy/core/browser/browser_policy_connector.h"
17 #include "components/policy/core/browser/configuration_policy_pref_store.h" 20 #include "components/policy/core/browser/configuration_policy_pref_store.h"
18 #include "components/policy/core/common/policy_service.h" // nogncheck 21 #include "components/policy/core/common/policy_service.h" // nogncheck
19 #include "components/policy/core/common/policy_types.h" // nogncheck 22 #include "components/policy/core/common/policy_types.h" // nogncheck
20 #endif 23 #endif
21 24
22 namespace sync_preferences { 25 namespace sync_preferences {
23 26
(...skipping 21 matching lines...) Expand all
45 #else 48 #else
46 NOTREACHED(); 49 NOTREACHED();
47 #endif 50 #endif
48 } 51 }
49 52
50 void PrefServiceSyncableFactory::SetPrefModelAssociatorClient( 53 void PrefServiceSyncableFactory::SetPrefModelAssociatorClient(
51 PrefModelAssociatorClient* pref_model_associator_client) { 54 PrefModelAssociatorClient* pref_model_associator_client) {
52 pref_model_associator_client_ = pref_model_associator_client; 55 pref_model_associator_client_ = pref_model_associator_client;
53 } 56 }
54 57
58 namespace {
59
60 // Expose the |backing_pref_store| through the prefs service.
61 scoped_refptr<::PrefStore> CreateRegisteredPrefStore(
62 service_manager::Connector* connector,
63 scoped_refptr<::PrefStore> backing_pref_store,
64 PrefValueStore::PrefStoreType type) {
65 // In testing we might not always register.
Sam McNally 2017/03/07 05:32:04 Mention the disabled-by-flag case too.
tibell 2017/03/07 06:25:39 Done.
66 if (!connector)
67 return backing_pref_store;
68
69 prefs::mojom::PrefStoreRegistryPtr registry_ptr;
70 connector->BindInterface(prefs::mojom::kPrefStoreServiceName, &registry_ptr);
71 return make_scoped_refptr(new prefs::PrefStoreAdapter(
72 backing_pref_store,
73 prefs::PrefStoreImpl::Create(std::move(registry_ptr), backing_pref_store,
74 type)));
75 }
76
77 } // namespace
78
55 std::unique_ptr<PrefServiceSyncable> PrefServiceSyncableFactory::CreateSyncable( 79 std::unique_ptr<PrefServiceSyncable> PrefServiceSyncableFactory::CreateSyncable(
56 user_prefs::PrefRegistrySyncable* pref_registry) { 80 user_prefs::PrefRegistrySyncable* pref_registry,
81 service_manager::Connector* connector) {
57 TRACE_EVENT0("browser", "PrefServiceSyncableFactory::CreateSyncable"); 82 TRACE_EVENT0("browser", "PrefServiceSyncableFactory::CreateSyncable");
58 PrefNotifierImpl* pref_notifier = new PrefNotifierImpl(); 83 PrefNotifierImpl* pref_notifier = new PrefNotifierImpl();
84
85 // Expose all read-only stores through the prefs service.
86 auto managed = CreateRegisteredPrefStore(connector, managed_prefs_.get(),
Sam McNally 2017/03/07 05:32:04 Remove the .get()s.
tibell 2017/03/07 06:25:39 Done.
87 PrefValueStore::MANAGED_STORE);
88 auto supervised =
89 CreateRegisteredPrefStore(connector, supervised_user_prefs_.get(),
90 PrefValueStore::SUPERVISED_USER_STORE);
91 auto extension = CreateRegisteredPrefStore(connector, extension_prefs_.get(),
92 PrefValueStore::EXTENSION_STORE);
93 auto command_line = CreateRegisteredPrefStore(
94 connector, command_line_prefs_.get(), PrefValueStore::COMMAND_LINE_STORE);
95 auto recommended = CreateRegisteredPrefStore(
96 connector, recommended_prefs_.get(), PrefValueStore::RECOMMENDED_STORE);
97
98 // TODO(sammc): Register Mojo user pref store once implemented.
59 std::unique_ptr<PrefServiceSyncable> pref_service(new PrefServiceSyncable( 99 std::unique_ptr<PrefServiceSyncable> pref_service(new PrefServiceSyncable(
60 pref_notifier, 100 pref_notifier,
61 new PrefValueStore(managed_prefs_.get(), supervised_user_prefs_.get(), 101 new PrefValueStore(managed.get(), supervised.get(), extension.get(),
62 extension_prefs_.get(), command_line_prefs_.get(), 102 command_line.get(), user_prefs_.get(),
63 user_prefs_.get(), recommended_prefs_.get(), 103 recommended.get(), pref_registry->defaults().get(),
64 pref_registry->defaults().get(), pref_notifier), 104 pref_notifier),
65 user_prefs_.get(), pref_registry, pref_model_associator_client_, 105 user_prefs_.get(), pref_registry, pref_model_associator_client_,
66 read_error_callback_, async_)); 106 read_error_callback_, async_));
67 return pref_service; 107 return pref_service;
68 } 108 }
69 109
70 } // namespace sync_preferences 110 } // namespace sync_preferences
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698