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

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

Issue 2722483005: Change configuration of user prefs to use mojo. (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/user_prefs_impl.cc
diff --git a/services/preferences/public/cpp/user_prefs_impl.cc b/services/preferences/public/cpp/user_prefs_impl.cc
index 9b8f512e50f61bf653d848984cdeeb2afa542101..bbef878bd1ba4b62f37d50f7c516f280b13d06f7 100644
--- a/services/preferences/public/cpp/user_prefs_impl.cc
+++ b/services/preferences/public/cpp/user_prefs_impl.cc
@@ -134,6 +134,11 @@ GetExternalVerificationPrefHashStorePair(const std::string& seed,
#endif
}
+void ForwardToResetOnLoadObserver(mojom::ResetOnLoadObserverPtr observer) {
+ if (observer)
+ observer->OnResetOnLoad();
+}
+
class PersistentPrefStoreConnectorImpl
: public mojom::PersistentPrefStoreConnector,
public PrefStore::Observer {
@@ -174,20 +179,17 @@ class PersistentPrefStoreConnectorImpl
static void CreateSegregatedUserPrefs(
const base::FilePath& unprotected_pref_filename,
const base::FilePath& protected_pref_filename,
- const std::vector<PrefHashFilter::TrackedPreferenceMetadata>&
- tracking_configuration,
+ std::vector<mojom::TrackedPreferenceMetadataPtr> tracking_configuration,
size_t reporting_ids_count,
const std::string& seed,
const std::string& legacy_device_id,
const base::string16& registry_path,
- mojom::TrackedPreferenceValidationDelegatePtrInfo
- validation_delegate_info,
- const base::Closure& on_reset_on_load,
+ mojom::TrackedPreferenceValidationDelegatePtr validation_delegate,
+ mojom::ResetOnLoadObserverPtr reset_on_load_observer,
const scoped_refptr<base::SequencedTaskRunner>& io_task_runner,
mojom::PersistentPrefStoreConnectorRequest request) {
scoped_refptr<ValidationDelegatePtrHolder> validation_delegate_holder(
- new ValidationDelegatePtrHolder(
- mojo::MakeProxy(std::move(validation_delegate_info))));
+ new ValidationDelegatePtrHolder(std::move(validation_delegate)));
std::vector<PrefHashFilter::TrackedPreferenceMetadata>
unprotected_configuration;
std::vector<PrefHashFilter::TrackedPreferenceMetadata>
@@ -195,12 +197,18 @@ class PersistentPrefStoreConnectorImpl
std::set<std::string> protected_pref_names;
std::set<std::string> unprotected_pref_names;
for (const auto& metadata : tracking_configuration) {
- if (metadata.enforcement_level > PrefHashFilter::NO_ENFORCEMENT) {
- protected_configuration.push_back(metadata);
- protected_pref_names.insert(metadata.name);
+ PrefHashFilter::TrackedPreferenceMetadata metadata_view = {
+ metadata->reporting_id, metadata->name.c_str(),
+ metadata->enforcement_level, metadata->strategy,
+ metadata->value_type,
+ };
+ if (metadata->enforcement_level >
+ mojom::TrackedPreferenceMetadata::EnforcementLevel::NO_ENFORCEMENT) {
+ protected_configuration.push_back(metadata_view);
+ protected_pref_names.insert(metadata->name);
} else {
- unprotected_configuration.push_back(metadata);
- unprotected_pref_names.insert(metadata.name);
+ unprotected_configuration.push_back(metadata_view);
+ unprotected_pref_names.insert(metadata->name);
}
}
@@ -217,7 +225,9 @@ class PersistentPrefStoreConnectorImpl
GetExternalVerificationPrefHashStorePair(
seed, legacy_device_id, registry_path,
unprotected_pref_filename),
- protected_configuration, on_reset_on_load,
+ protected_configuration,
+ base::Bind(&ForwardToResetOnLoadObserver,
+ base::Passed(&reset_on_load_observer)),
validation_delegate_holder->get(),
reporting_ids_count, true));
@@ -274,6 +284,76 @@ class PersistentPrefStoreConnectorImpl
DISALLOW_COPY_AND_ASSIGN(PersistentPrefStoreConnectorImpl);
};
+class UserPrefsPrefService : public mojom::PersistentPrefStoreInit {
+ public:
+ UserPrefsPrefService(
+ scoped_refptr<base::SequencedTaskRunner> io_task_runner,
+ mojom::PersistentPrefStoreConnectorRequest connector_request)
+ : io_task_runner_(std::move(io_task_runner)),
+ connector_request_(std::move(connector_request)) {}
+
+ void Init(mojom::UserPrefsConfigurationPtr configuration) override {
+ if (configuration->is_simple_configuration()) {
+ auto& simple_configuration = configuration->get_simple_configuration();
+ PersistentPrefStoreConnectorImpl::CreateUserPrefs(
+ simple_configuration->pref_filename, io_task_runner_,
+ std::move(connector_request_));
+ return;
+ }
+ if (configuration->is_segregated_configuration()) {
+ auto& segregated_configuration =
+ configuration->get_segregated_configuration();
+ PersistentPrefStoreConnectorImpl::CreateSegregatedUserPrefs(
+ segregated_configuration->unprotected_pref_filename,
+ segregated_configuration->protected_pref_filename,
+ std::move(segregated_configuration->tracking_configuration),
+ segregated_configuration->reporting_ids_count,
+ segregated_configuration->seed,
+ segregated_configuration->legacy_device_id,
+ segregated_configuration->registry_path,
+ std::move(segregated_configuration->validation_delegate),
+ std::move(segregated_configuration->reset_on_load_observer),
+ io_task_runner_, std::move(connector_request_));
+ return;
+ }
+ NOTREACHED();
+ }
+
+ private:
+ scoped_refptr<base::SequencedTaskRunner> io_task_runner_;
+ mojom::PersistentPrefStoreConnectorRequest connector_request_;
+};
+
+std::vector<mojom::TrackedPreferenceMetadataPtr> WrapTrackedPreferenceMetadata(
+ const std::vector<PrefHashFilter::TrackedPreferenceMetadata>& input) {
+ std::vector<mojom::TrackedPreferenceMetadataPtr> output;
+ for (const auto& metadata : input) {
+ output.emplace_back(base::in_place, metadata.reporting_id, metadata.name,
+ metadata.enforcement_level, metadata.strategy,
+ metadata.value_type);
+ }
+ return output;
+}
+
+// Simulates connecting to the pref service.
+// TODO(sammc): Replace with connecting to the real pref service.
+void ConnectToFakePrefService(
+ const scoped_refptr<base::SingleThreadTaskRunner>& connection_task_runner,
+ const scoped_refptr<base::SequencedTaskRunner>& io_task_runner,
+ mojom::PersistentPrefStoreInitRequest init_request,
+ mojom::PersistentPrefStoreConnectorRequest connector_request) {
+ if (!connection_task_runner->RunsTasksOnCurrentThread()) {
+ connection_task_runner->PostTask(
+ FROM_HERE, base::Bind(&ConnectToFakePrefService, connection_task_runner,
+ io_task_runner, base::Passed(&init_request),
+ base::Passed(&connector_request)));
+ return;
+ }
+ mojo::MakeStrongBinding(base::MakeUnique<UserPrefsPrefService>(
+ io_task_runner, std::move(connector_request)),
+ std::move(init_request));
+}
+
} // namespace
void CreateUserPrefs(
@@ -281,10 +361,13 @@ void CreateUserPrefs(
const scoped_refptr<base::SingleThreadTaskRunner>& connection_task_runner,
const scoped_refptr<base::SequencedTaskRunner>& io_task_runner,
mojom::PersistentPrefStoreConnectorRequest request) {
- connection_task_runner->PostTask(
- FROM_HERE,
- base::Bind(&PersistentPrefStoreConnectorImpl::CreateUserPrefs,
- pref_filename, io_task_runner, base::Passed(&request)));
+ mojom::PersistentPrefStoreInitPtr init_ptr;
+ ConnectToFakePrefService(connection_task_runner, io_task_runner,
+ mojo::MakeRequest(&init_ptr), std::move(request));
+ auto config = mojom::UserPrefsConfiguration::New();
+ config->set_simple_configuration(
+ mojom::SimpleUserPrefsConfiguration::New(pref_filename));
+ init_ptr->Init(std::move(config));
}
void CreateSegregatedUserPrefs(
@@ -297,18 +380,21 @@ void CreateSegregatedUserPrefs(
const std::string& legacy_device_id,
const base::string16& registry_path,
mojom::TrackedPreferenceValidationDelegatePtr validation_delegate,
- const base::Closure& on_reset_on_load,
+ mojom::ResetOnLoadObserverPtr reset_on_load_observer,
const scoped_refptr<base::SingleThreadTaskRunner>& connection_task_runner,
const scoped_refptr<base::SequencedTaskRunner>& io_task_runner,
mojom::PersistentPrefStoreConnectorRequest request) {
- connection_task_runner->PostTask(
- FROM_HERE,
- base::Bind(&PersistentPrefStoreConnectorImpl::CreateSegregatedUserPrefs,
- unprotected_pref_filename, protected_pref_filename,
- tracking_configuration, reporting_ids_count, seed,
- legacy_device_id, registry_path,
- base::Passed(validation_delegate.PassInterface()),
- on_reset_on_load, io_task_runner, base::Passed(&request)));
+ mojom::PersistentPrefStoreInitPtr init_ptr;
+ ConnectToFakePrefService(connection_task_runner, io_task_runner,
+ mojo::MakeRequest(&init_ptr), std::move(request));
+ auto config = mojom::UserPrefsConfiguration::New();
+ config->set_segregated_configuration(
+ mojom::SegregatedUserPrefsConfiguration::New(
+ unprotected_pref_filename, protected_pref_filename,
+ WrapTrackedPreferenceMetadata(tracking_configuration),
+ reporting_ids_count, seed, legacy_device_id, registry_path,
+ std::move(validation_delegate), std::move(reset_on_load_observer)));
+ init_ptr->Init(std::move(config));
}
} // namespace prefs
« no previous file with comments | « services/preferences/public/cpp/user_prefs_impl.h ('k') | services/preferences/public/interfaces/preferences.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698