// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_SUPERVISED_USER_CORE_BROWSER_SUPERVISED_USER_SETTINGS_SERVICE_H_ #define COMPONENTS_SUPERVISED_USER_CORE_BROWSER_SUPERVISED_USER_SETTINGS_SERVICE_H_ #include <memory> #include <string> #include <string_view> #include <vector> #include "base/callback_list.h" #include "base/functional/callback.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/values.h" #include "components/keyed_service/core/keyed_service.h" #include "components/prefs/pref_store.h" #include "components/supervised_user/core/common/supervised_users.h" #include "components/sync/model/syncable_service.h" #include "url/gurl.h" class PersistentPrefStore; namespace base { class FilePath; class SequencedTaskRunner; } // namespace base namespace supervised_user { // This class syncs supervised user settings from a server, which are mapped to // preferences. The downloaded settings are persisted in a PrefStore (which is // not directly hooked up to the PrefService; it's just used internally). // Settings are key-value pairs, where the key uniquely identifies the setting. // The value is a string containing a JSON serialization of an arbitrary value, // which is the value of the setting. // // There are two kinds of settings handled by this class: Atomic and split // settings. // Atomic settings consist of a single key (which will be mapped to a pref key) // and a single (arbitrary) value. // Split settings encode a dictionary value and are stored as multiple Sync // items, one for each dictionary entry. The key for each of these Sync items // is the key of the split setting, followed by a separator (':') and the key // for the dictionary entry. The value of the Sync item is the value of the // dictionary entry. // // As an example, a split setting with key "Moose" and value // { // "foo": "bar", // "baz": "blurp" // } // would be encoded as two sync items, one with key "Moose:foo" and value "bar", // and one with key "Moose:baz" and value "blurp". class SupervisedUserSettingsService : public KeyedService, public syncer::SyncableService, public PrefStore::Observer { … }; } // namespace supervised_user #endif // COMPONENTS_SUPERVISED_USER_CORE_BROWSER_SUPERVISED_USER_SETTINGS_SERVICE_H_