| Index: services/preferences/pref_store_manager_impl.h
|
| diff --git a/services/preferences/pref_store_manager_impl.h b/services/preferences/pref_store_manager_impl.h
|
| index 2a7822023e137ab06790d10394012658ba06e38e..487a88511992d69ff6e6b591a962c98493f79854 100644
|
| --- a/services/preferences/pref_store_manager_impl.h
|
| +++ b/services/preferences/pref_store_manager_impl.h
|
| @@ -50,16 +50,30 @@ class PrefStoreManagerImpl
|
| ~PrefStoreManagerImpl() override;
|
|
|
| private:
|
| - using PrefStorePtrs =
|
| - std::unordered_map<PrefValueStore::PrefStoreType, mojom::PrefStorePtr>;
|
| + struct PendingConnect {
|
| + PendingConnect(
|
| + mojom::PrefRegistryPtr pref_registry_in,
|
| + std::vector<PrefValueStore::PrefStoreType> already_connected_types_in,
|
| + const ConnectCallback& callback_in);
|
| + PendingConnect(PendingConnect&& other);
|
| + ~PendingConnect();
|
| +
|
| + mojom::PrefRegistryPtr pref_registry;
|
| + // Pref stores the caller already is connected to (and hence we won't
|
| + // connect to these).
|
| + std::vector<PrefValueStore::PrefStoreType> already_connected_types;
|
| + ConnectCallback callback;
|
| + };
|
|
|
| // mojom::PrefStoreRegistry:
|
| void Register(PrefValueStore::PrefStoreType type,
|
| mojom::PrefStorePtr pref_store_ptr) override;
|
|
|
| // mojom::PrefStoreConnector:
|
| - void Connect(mojom::PrefRegistryPtr pref_registry,
|
| - const ConnectCallback& callback) override;
|
| + void Connect(
|
| + mojom::PrefRegistryPtr pref_registry,
|
| + const std::vector<PrefValueStore::PrefStoreType>& already_connected_types,
|
| + const ConnectCallback& callback) override;
|
|
|
| // service_manager::InterfaceFactory<PrefStoreConnector>:
|
| void Create(const service_manager::Identity& remote_identity,
|
| @@ -89,8 +103,10 @@ class PrefStoreManagerImpl
|
|
|
| void ProcessPendingConnects();
|
|
|
| - void ConnectImpl(mojom::PrefRegistryPtr pref_registry,
|
| - const ConnectCallback& callback);
|
| + void ConnectImpl(
|
| + mojom::PrefRegistryPtr pref_registry,
|
| + const std::vector<PrefValueStore::PrefStoreType>& already_connected_types,
|
| + const ConnectCallback& callback);
|
|
|
| void OnPersistentPrefStoreReady();
|
|
|
| @@ -98,12 +114,12 @@ class PrefStoreManagerImpl
|
| std::set<PrefValueStore::PrefStoreType> expected_pref_stores_;
|
|
|
| // Registered pref stores.
|
| - PrefStorePtrs pref_store_ptrs_;
|
| + std::unordered_map<PrefValueStore::PrefStoreType, mojom::PrefStorePtr>
|
| + pref_store_ptrs_;
|
|
|
| // We hold on to the connection request callbacks until all expected
|
| // PrefStores have registered.
|
| - std::vector<std::pair<ConnectCallback, mojom::PrefRegistryPtr>>
|
| - pending_connects_;
|
| + std::vector<PendingConnect> pending_connects_;
|
|
|
| mojo::BindingSet<mojom::PrefStoreConnector> connector_bindings_;
|
| mojo::BindingSet<mojom::PrefStoreRegistry> registry_bindings_;
|
|
|