blob: dab104ec8ac9dbe6ae01c5aa54266e21b752690c [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "diagnostics/cros_healthd/network_diagnostics/network_diagnostics_adapter_impl.h"
#include <utility>
#include "diagnostics/cros_healthd/network_diagnostics/network_diagnostics_utils.h"
namespace diagnostics {
namespace {
namespace network_diagnostics_ipc = ::chromeos::network_diagnostics::mojom;
} // namespace
NetworkDiagnosticsAdapterImpl::NetworkDiagnosticsAdapterImpl() = default;
NetworkDiagnosticsAdapterImpl::~NetworkDiagnosticsAdapterImpl() = default;
void NetworkDiagnosticsAdapterImpl::SetNetworkDiagnosticsRoutines(
mojo::PendingRemote<network_diagnostics_ipc::NetworkDiagnosticsRoutines>
network_diagnostics_routines) {
network_diagnostics_routines_.Bind(std::move(network_diagnostics_routines));
}
bool NetworkDiagnosticsAdapterImpl::ServiceRemoteBound() {
return network_diagnostics_routines_.is_bound();
}
void NetworkDiagnosticsAdapterImpl::RunLanConnectivityRoutine(
network_diagnostics_ipc::NetworkDiagnosticsRoutines::
RunLanConnectivityCallback callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(
network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::NewLanConnectivityProblems(
{}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunLanConnectivity(std::move(callback));
}
void NetworkDiagnosticsAdapterImpl::RunSignalStrengthRoutine(
network_diagnostics_ipc::NetworkDiagnosticsRoutines::
RunSignalStrengthCallback callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(
network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::NewSignalStrengthProblems(
{}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunSignalStrength(std::move(callback));
}
void NetworkDiagnosticsAdapterImpl::RunGatewayCanBePingedRoutine(
network_diagnostics_ipc::NetworkDiagnosticsRoutines::
RunGatewayCanBePingedCallback callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(
network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::NewGatewayCanBePingedProblems(
{}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunGatewayCanBePinged(std::move(callback));
}
void NetworkDiagnosticsAdapterImpl::RunHasSecureWiFiConnectionRoutine(
network_diagnostics_ipc::NetworkDiagnosticsRoutines::
RunHasSecureWiFiConnectionCallback callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::
NewHasSecureWifiConnectionProblems({}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunHasSecureWiFiConnection(
std::move(callback));
}
void NetworkDiagnosticsAdapterImpl::RunDnsResolverPresentRoutine(
network_diagnostics_ipc::NetworkDiagnosticsRoutines::
RunDnsResolverPresentCallback callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(
network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::NewDnsResolverPresentProblems(
{}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunDnsResolverPresent(std::move(callback));
}
void NetworkDiagnosticsAdapterImpl::RunDnsLatencyRoutine(
network_diagnostics_ipc::NetworkDiagnosticsRoutines::RunDnsLatencyCallback
callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(
network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::NewDnsLatencyProblems({}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunDnsLatency(std::move(callback));
}
void NetworkDiagnosticsAdapterImpl::RunDnsResolutionRoutine(
network_diagnostics_ipc::NetworkDiagnosticsRoutines::
RunDnsResolutionCallback callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(
network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::NewDnsResolutionProblems({}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunDnsResolution(std::move(callback));
}
void NetworkDiagnosticsAdapterImpl::RunCaptivePortalRoutine(
network_diagnostics_ipc::NetworkDiagnosticsRoutines::
RunCaptivePortalCallback callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(
network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::NewCaptivePortalProblems({}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunCaptivePortal(std::move(callback));
}
void NetworkDiagnosticsAdapterImpl::RunHttpFirewallRoutine(
network_diagnostics_ipc::NetworkDiagnosticsRoutines::RunHttpFirewallCallback
callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(
network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::NewHttpFirewallProblems({}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunHttpFirewall(std::move(callback));
}
void NetworkDiagnosticsAdapterImpl::RunHttpsFirewallRoutine(
network_diagnostics_ipc::NetworkDiagnosticsRoutines::
RunHttpsFirewallCallback callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(
network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::NewHttpsFirewallProblems({}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunHttpsFirewall(std::move(callback));
}
void NetworkDiagnosticsAdapterImpl::RunHttpsLatencyRoutine(
network_diagnostics_ipc::NetworkDiagnosticsRoutines::RunHttpsLatencyCallback
callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(
network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::NewHttpsLatencyProblems({}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunHttpsLatency(std::move(callback));
}
void NetworkDiagnosticsAdapterImpl::RunVideoConferencingRoutine(
const base::Optional<std::string>& stun_server_hostname,
network_diagnostics_ipc::NetworkDiagnosticsRoutines::
RunVideoConferencingCallback callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(
network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::NewVideoConferencingProblems(
{}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunVideoConferencing(stun_server_hostname,
std::move(callback));
}
void NetworkDiagnosticsAdapterImpl::RunArcHttpRoutine(
network_diagnostics_ipc::NetworkDiagnosticsRoutines::RunArcHttpCallback
callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(
network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::NewArcHttpProblems({}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunArcHttp(std::move(callback));
}
void NetworkDiagnosticsAdapterImpl::RunArcPingRoutine(
network_diagnostics_ipc::NetworkDiagnosticsRoutines::RunArcPingCallback
callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(
network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::NewArcPingProblems({}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunArcPing(std::move(callback));
}
void NetworkDiagnosticsAdapterImpl::RunArcDnsResolutionRoutine(
network_diagnostics_ipc::NetworkDiagnosticsRoutines::
RunArcDnsResolutionCallback callback) {
if (!network_diagnostics_routines_.is_bound()) {
auto result = CreateResult(
network_diagnostics_ipc::RoutineVerdict::kNotRun,
network_diagnostics_ipc::RoutineProblems::NewArcDnsResolutionProblems(
{}));
std::move(callback).Run(std::move(result));
return;
}
network_diagnostics_routines_->RunArcDnsResolution(std::move(callback));
}
} // namespace diagnostics