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

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

Issue 2771723002: Pref service: Merge PrefStoreConnector interfaces. (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/persistent_pref_store_client.cc
diff --git a/services/preferences/public/cpp/persistent_pref_store_client.cc b/services/preferences/public/cpp/persistent_pref_store_client.cc
index 032e081625427f2e1bf3687f18e6252a2da37960..347db57772df7197b5016f4fefdd75540d8097bc 100644
--- a/services/preferences/public/cpp/persistent_pref_store_client.cc
+++ b/services/preferences/public/cpp/persistent_pref_store_client.cc
@@ -11,8 +11,17 @@
namespace prefs {
PersistentPrefStoreClient::PersistentPrefStoreClient(
- mojom::PersistentPrefStoreConnectorPtr connector)
- : connector_(std::move(connector)) {}
+ mojom::PrefStoreConnectorPtr connector)
+ : connector_(std::move(connector)) {
+ DCHECK(connector_);
+}
+
+PersistentPrefStoreClient::PersistentPrefStoreClient(
+ mojom::PersistentPrefStoreConnectionPtr connection) {
+ OnConnect(std::move(connection),
+ std::unordered_map<PrefValueStore::PrefStoreType,
+ prefs::mojom::PrefStoreConnectionPtr>());
+}
void PersistentPrefStoreClient::SetValue(const std::string& key,
std::unique_ptr<base::Value> value,
@@ -65,25 +74,22 @@ PersistentPrefStore::PrefReadError PersistentPrefStoreClient::GetReadError()
}
PersistentPrefStore::PrefReadError PersistentPrefStoreClient::ReadPrefs() {
- PrefReadError read_error = PrefReadError::PREF_READ_ERROR_NONE;
- bool read_only = false;
- std::unique_ptr<base::DictionaryValue> local_prefs;
- mojom::PersistentPrefStorePtr pref_store;
- mojom::PrefStoreObserverRequest observer_request;
- if (!connector_->Connect(&read_error, &read_only, &local_prefs, &pref_store,
- &observer_request)) {
+ mojom::PersistentPrefStoreConnectionPtr connection;
+ std::unordered_map<PrefValueStore::PrefStoreType,
+ prefs::mojom::PrefStoreConnectionPtr>
+ other_pref_stores;
+ if (!connector_->Connect(&connection, &other_pref_stores)) {
NOTREACHED();
}
- OnCreateComplete(read_error, read_only, std::move(local_prefs),
- std::move(pref_store), std::move(observer_request));
+ OnConnect(std::move(connection), std::move(other_pref_stores));
return read_error_;
}
void PersistentPrefStoreClient::ReadPrefsAsync(
ReadErrorDelegate* error_delegate) {
error_delegate_.reset(error_delegate);
- connector_->Connect(base::Bind(&PersistentPrefStoreClient::OnCreateComplete,
+ connector_->Connect(base::Bind(&PersistentPrefStoreClient::OnConnect,
base::Unretained(this)));
}
@@ -109,21 +115,25 @@ PersistentPrefStoreClient::~PersistentPrefStoreClient() {
pref_store_->CommitPendingWrite();
}
-void PersistentPrefStoreClient::OnCreateComplete(
- PrefReadError read_error,
- bool read_only,
- std::unique_ptr<base::DictionaryValue> cached_prefs,
- mojom::PersistentPrefStorePtr pref_store,
- mojom::PrefStoreObserverRequest observer_request) {
+void PersistentPrefStoreClient::OnConnect(
+ mojom::PersistentPrefStoreConnectionPtr connection,
+ std::unordered_map<PrefValueStore::PrefStoreType,
+ prefs::mojom::PrefStoreConnectionPtr>
+ other_pref_stores) {
connector_.reset();
- read_error_ = read_error;
- read_only_ = read_only;
- pref_store_ = std::move(pref_store);
+ read_error_ = connection->read_error;
+ read_only_ = connection->read_only;
+ pref_store_ = std::move(connection->pref_store);
if (error_delegate_ && read_error_ != PREF_READ_ERROR_NONE)
error_delegate_->OnError(read_error_);
error_delegate_.reset();
- Init(std::move(cached_prefs), true, std::move(observer_request));
+ if (connection->pref_store_connection) {
+ Init(std::move(connection->pref_store_connection->initial_prefs), true,
+ std::move(connection->pref_store_connection->observer));
+ } else {
+ Init(nullptr, false, nullptr);
+ }
}
} // namespace prefs
« no previous file with comments | « services/preferences/public/cpp/persistent_pref_store_client.h ('k') | services/preferences/public/cpp/pref_service_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698