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..7dd301dea2b5c32008541ddd990e2d81d0df0083 100644 |
--- a/services/preferences/public/interfaces/preferences.mojom |
+++ b/services/preferences/public/interfaces/preferences.mojom |
@@ -27,3 +27,46 @@ interface PreferencesService { |
SetPreferences(mojo.common.mojom.DictionaryValue preferences); |
Subscribe(array<string> preferences); |
}; |
+ |
+const string kPrefStoreServiceName = "preferences2"; |
+ |
+[Native] |
+enum PrefStoreType; |
+ |
+// Allows observing changes to prefs stored in a |PrefStore|. |
+interface PrefStoreObserver { |
+ OnPreferencesChanged(mojo.common.mojom.DictionaryValue preferences); |
+ 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 { |
+ PrefStoreObserver& observer; |
+ mojo.common.mojom.DictionaryValue initial_prefs; |
+ 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(PrefStore pref_store, PrefStoreType type); |
+}; |
+ |
+// 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); |
+}; |