| Index: services/preferences/public/interfaces/preferences.mojom
|
| diff --git a/services/preferences/public/interfaces/preferences.mojom b/services/preferences/public/interfaces/preferences.mojom
|
| index 1978e4b671fc5a85ccbd004317b7e515bffa0d90..2f6cfdd584d896c52673255cacae5a94b79b6db7 100644
|
| --- a/services/preferences/public/interfaces/preferences.mojom
|
| +++ b/services/preferences/public/interfaces/preferences.mojom
|
| @@ -27,3 +27,67 @@ interface PreferencesService {
|
| SetPreferences(mojo.common.mojom.DictionaryValue preferences);
|
| Subscribe(array<string> preferences);
|
| };
|
| +
|
| +const string kPrefStoreServiceName = "preferences2";
|
| +
|
| +// The know pref store types.
|
| +//
|
| +// Should be kept in sync with PrefValueStore::PrefStoreType.
|
| +enum PrefStoreType {
|
| + MANAGED,
|
| + SUPERVISED_USER,
|
| + EXTENSION,
|
| + COMMAND_LINE,
|
| + USER,
|
| + RECOMMENDED,
|
| + DEFAULT,
|
| +};
|
| +
|
| +// Allows observing changes to prefs stored in a |PrefStore|.
|
| +interface PrefStoreObserver {
|
| + // The preference with the given |key| has changed. If |value| is null then
|
| + // the preference was deleted.
|
| + OnPrefChanged(string key, mojo.common.mojom.Value? value);
|
| +
|
| + // The PrefStore has been initialized (asynchronously).
|
| + OnInitializationCompleted(bool succeeded);
|
| +};
|
| +
|
| +// Captures the connections to a PrefStore by supplying the initial state of the
|
| +// store and a handle to receive notifications on.
|
| +struct PrefStoreConnection {
|
| + // Handle to receive updates on.
|
| + PrefStoreObserver& observer;
|
| +
|
| + // Initial values of the PrefStore. These will not be communicated through
|
| + // OnPrefChanged.
|
| + mojo.common.mojom.DictionaryValue initial_prefs;
|
| +
|
| + // Is the PrefStore initialized? If not it should not be used before
|
| + // OnInitializationCompleted has been called.
|
| + bool is_initialized;
|
| +};
|
| +
|
| +// Manages actual read of preference data. Accepts observers who subscribe to
|
| +// preferences, notifying them of changes.
|
| +interface PrefStore {
|
| + // Add an observer of changes. This current values of all prefs will not be
|
| + // communicated through a call to |observer| but instead be returned in
|
| + // |initial_prefs|.
|
| + AddObserver() => (PrefStoreConnection connection);
|
| +};
|
| +
|
| +// Manages a registry of all pref stores. Registered pref stores can be
|
| +// connected to through the |PrefStoreConnector| interface.
|
| +interface PrefStoreRegistry {
|
| + // Register a pref store.
|
| + Register(PrefStoreType type, PrefStore pref_store);
|
| +};
|
| +
|
| +// Allows connections to pref stores registered with |PrefStoreRegistry|.
|
| +interface PrefStoreConnector {
|
| + // Connect to all registered pref stores, retrieving the current values of all
|
| + // prefs in each store and an |observer| interfaces through which updates can
|
| + // be received.
|
| + Connect() => (map<PrefStoreType, PrefStoreConnection> connections);
|
| +};
|
|
|