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

Unified Diff: services/preferences/public/cpp/pref_store_manager_impl.cc

Issue 2743463002: WIP: Pref service user 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 side-by-side diff with in-line comments
Download patch
Index: services/preferences/public/cpp/pref_store_manager_impl.cc
diff --git a/services/preferences/public/cpp/pref_store_manager_impl.cc b/services/preferences/public/cpp/pref_store_manager_impl.cc
index 5a72b2cc0f536ee56498959c6c32dac25085f142..85a99bcf4115806b8fd57e5575e1e28d43f74c7a 100644
--- a/services/preferences/public/cpp/pref_store_manager_impl.cc
+++ b/services/preferences/public/cpp/pref_store_manager_impl.cc
@@ -5,11 +5,15 @@
#include "services/preferences/public/cpp/pref_store_manager_impl.h"
#include "base/memory/ref_counted.h"
+#include "base/threading/sequenced_worker_pool.h"
#include "components/prefs/pref_value_store.h"
#include "mojo/public/cpp/bindings/interface_request.h"
+#include "services/preferences/user_prefs.h"
+#include "services/preferences/user_prefs_factory.h"
#include "services/service_manager/public/cpp/interface_registry.h"
namespace prefs {
+namespace {
using ConnectCallback = mojom::PrefStoreConnector::ConnectCallback;
using PrefStorePtrs =
@@ -73,8 +77,14 @@ void ConnectionBarrier::OnConnect(
}
}
-PrefStoreManagerImpl::PrefStoreManagerImpl(PrefStoreTypes expected_pref_stores)
- : expected_pref_stores_(std::move(expected_pref_stores)) {}
+} // namespace
+
+PrefStoreManagerImpl::PrefStoreManagerImpl(
+ PrefStoreTypes expected_pref_stores,
+ scoped_refptr<base::SequencedWorkerPool> worker_pool)
+ : expected_pref_stores_(std::move(expected_pref_stores)),
+ init_binding_(this),
+ worker_pool_(std::move(worker_pool)) {}
PrefStoreManagerImpl::~PrefStoreManagerImpl() = default;
@@ -119,6 +129,40 @@ void PrefStoreManagerImpl::Create(
registry_bindings_.AddBinding(this, std::move(request));
}
+void PrefStoreManagerImpl::Create(
+ const service_manager::Identity& remote_identity,
+ prefs::mojom::PersistentPrefStoreConnectorRequest request) {
+ if (!user_prefs_connector_) {
+ user_prefs_connector_requests_.push_back(std::move(request));
+ return;
+ }
+ user_prefs_connector_bindings_.AddBinding(user_prefs_connector_.get(),
+ std::move(request));
+}
+
+void PrefStoreManagerImpl::Create(
+ const service_manager::Identity& remote_identity,
+ prefs::mojom::PersistentPrefStoreInitRequest request) {
+ if (init_binding_.is_bound())
+ return;
+
+ init_binding_.Bind(std::move(request));
+}
+
+void PrefStoreManagerImpl::Init(
+ mojom::UserPrefsConfigurationPtr configuration) {
+ DCHECK(!user_prefs_connector_);
+
+ user_prefs_connector_ =
+ CreateUserPrefs(std::move(configuration), worker_pool_.get());
+ DCHECK(user_prefs_connector_);
+ for (auto& request : user_prefs_connector_requests_) {
+ user_prefs_connector_bindings_.AddBinding(user_prefs_connector_.get(),
+ std::move(request));
+ }
+ user_prefs_connector_requests_.clear();
+}
+
void PrefStoreManagerImpl::OnStart() {}
bool PrefStoreManagerImpl::OnConnect(
@@ -126,6 +170,8 @@ bool PrefStoreManagerImpl::OnConnect(
service_manager::InterfaceRegistry* registry) {
registry->AddInterface<prefs::mojom::PrefStoreConnector>(this);
registry->AddInterface<prefs::mojom::PrefStoreRegistry>(this);
+ registry->AddInterface<prefs::mojom::PersistentPrefStoreConnector>(this);
+ registry->AddInterface<prefs::mojom::PersistentPrefStoreInit>(this);
return true;
}
« no previous file with comments | « services/preferences/public/cpp/pref_store_manager_impl.h ('k') | services/preferences/public/cpp/preferences.typemap » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698