blob: 91719b9d862669186aef71d38c4a065c2bfa77ba [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_PREFS_PREF_CONNECTOR_SERVICE_H_
#define CHROME_BROWSER_CHROMEOS_PREFS_PREF_CONNECTOR_SERVICE_H_
#include <vector>
#include "ash/public/interfaces/pref_connector.mojom.h"
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "components/prefs/pref_value_store.h"
#include "mojo/public/cpp/bindings/binding_set.h"
#include "services/preferences/public/mojom/preferences.mojom.h"
#include "services/service_manager/public/cpp/binder_registry.h"
#include "services/service_manager/public/cpp/service.h"
// A |ash::mojom::PrefConnector| implementation that provides ash with access to
// a |prefs::mojom::PrefStoreConnector| for a requested profile.
//
// TODO(http://crbug.com/705347): Once mash can connect to per-profile services
// via service manager, remove this class and the ash_pref_connector service.
class AshPrefConnector : public ash::mojom::PrefConnector,
public service_manager::Service {
public:
AshPrefConnector();
~AshPrefConnector() override;
private:
// ash::mojom::PrefConnector:
void GetPrefStoreConnectorForSigninScreen(
prefs::mojom::PrefStoreConnectorRequest request) override;
void GetPrefStoreConnectorForUser(
const AccountId& account_id,
prefs::mojom::PrefStoreConnectorRequest request) override;
// service_manager::Service:
void OnStart() override;
void OnBindInterface(const service_manager::BindSourceInfo& source_info,
const std::string& interface_name,
mojo::ScopedMessagePipeHandle interface_pipe) override;
void BindConnectorRequest(ash::mojom::PrefConnectorRequest request);
prefs::mojom::PrefStoreConnector& GetPrefStoreConnector();
service_manager::BinderRegistry registry_;
mojo::BindingSet<ash::mojom::PrefConnector> connector_bindings_;
base::WeakPtrFactory<AshPrefConnector> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(AshPrefConnector);
};
#endif // CHROME_BROWSER_CHROMEOS_PREFS_PREF_CONNECTOR_SERVICE_H_