// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromeos/components/sensors/sensor_util.h"
#include "build/chromeos_buildflags.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "chromeos/components/sensors/ash/sensor_hal_dispatcher.h"
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
#if BUILDFLAG(IS_CHROMEOS_LACROS)
#include "chromeos/lacros/lacros_service.h"
#endif // BUILDFLAG(IS_CHROMEOS_LACROS)
namespace chromeos {
namespace sensors {
bool BindSensorHalClient(mojo::PendingRemote<mojom::SensorHalClient> remote) {
#if BUILDFLAG(IS_CHROMEOS_ASH)
auto* dispatcher = SensorHalDispatcher::GetInstance();
if (!dispatcher) {
// In some unit tests, it's not initialized.
return false;
}
dispatcher->RegisterClient(std::move(remote));
return true;
#elif BUILDFLAG(IS_CHROMEOS_LACROS)
auto* lacros_service = chromeos::LacrosService::Get();
if (!lacros_service) {
// In unit tests.
return false;
}
if (!lacros_service
->IsSupported<chromeos::sensors::mojom::SensorHalClient>()) {
return false;
}
lacros_service->BindSensorHalClient(std::move(remote));
return true;
#else
#error "This file should only be used in either Ash-Chrome or Lacros-Chrome"
#endif
}
} // namespace sensors
} // namespace chromeos