blob: 119151ac380d10df1e347fb9125497ac593ac6ad [file] [log] [blame]
// 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.
#ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_TELEMETRY_API_DIAGNOSTICS_API_H_
#define CHROME_BROWSER_CHROMEOS_EXTENSIONS_TELEMETRY_API_DIAGNOSTICS_API_H_
#include <memory>
#include "build/chromeos_buildflags.h"
#include "chrome/browser/chromeos/extensions/telemetry/api/base_telemetry_extension_api_guard_function.h"
#include "chrome/browser/chromeos/extensions/telemetry/api/remote_diagnostics_service_strategy.h"
#include "chromeos/crosapi/mojom/diagnostics_service.mojom.h"
#include "extensions/browser/extension_function.h"
#include "extensions/browser/extension_function_histogram_value.h"
#include "mojo/public/cpp/bindings/remote.h"
namespace chromeos {
class DiagnosticsApiFunctionBase
: public BaseTelemetryExtensionApiGuardFunction {
public:
DiagnosticsApiFunctionBase();
protected:
~DiagnosticsApiFunctionBase() override;
mojo::Remote<crosapi::mojom::DiagnosticsService>& GetRemoteService();
// Gets the parameters passed to the JavaScript call and tries to convert it
// to the `Params` type. If the `Params` can't be created, this resolves the
// corresponding JavaScript call with an error and returns `nullptr`.
template <class Params>
std::unique_ptr<Params> GetParams();
#if BUILDFLAG(IS_CHROMEOS_LACROS)
bool IsCrosApiAvailable() override;
#endif // BUILDFLAG(IS_CHROMEOS_LACROS)
private:
std::unique_ptr<RemoteDiagnosticsServiceStrategy>
remote_diagnostics_service_strategy_;
};
class OsDiagnosticsGetAvailableRoutinesFunction
: public DiagnosticsApiFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.getAvailableRoutines",
OS_DIAGNOSTICS_GETAVAILABLEROUTINES)
private:
~OsDiagnosticsGetAvailableRoutinesFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
void OnResult(
const std::vector<crosapi::mojom::DiagnosticsRoutineEnum>& routines);
};
class OsDiagnosticsGetRoutineUpdateFunction
: public DiagnosticsApiFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.getRoutineUpdate",
OS_DIAGNOSTICS_GETROUTINEUPDATE)
private:
~OsDiagnosticsGetRoutineUpdateFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
void OnResult(crosapi::mojom::DiagnosticsRoutineUpdatePtr ptr);
};
class DiagnosticsApiRunRoutineFunctionBase : public DiagnosticsApiFunctionBase {
public:
void OnResult(crosapi::mojom::DiagnosticsRunRoutineResponsePtr ptr);
protected:
~DiagnosticsApiRunRoutineFunctionBase() override = default;
// Returns a callback that resolves the corresponding JavaScript call with
// the response passed to the callback.
base::OnceCallback<void(crosapi::mojom::DiagnosticsRunRoutineResponsePtr)>
GetOnResult();
};
class OsDiagnosticsRunAcPowerRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runAcPowerRoutine",
OS_DIAGNOSTICS_RUNACPOWERROUTINE)
private:
~OsDiagnosticsRunAcPowerRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunBatteryCapacityRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runBatteryCapacityRoutine",
OS_DIAGNOSTICS_RUNBATTERYCAPACITYROUTINE)
private:
~OsDiagnosticsRunBatteryCapacityRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunBatteryChargeRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runBatteryChargeRoutine",
OS_DIAGNOSTICS_RUNBATTERYCHARGEROUTINE)
private:
~OsDiagnosticsRunBatteryChargeRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunBatteryDischargeRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runBatteryDischargeRoutine",
OS_DIAGNOSTICS_RUNBATTERYDISCHARGEROUTINE)
private:
~OsDiagnosticsRunBatteryDischargeRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunBatteryHealthRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runBatteryHealthRoutine",
OS_DIAGNOSTICS_RUNBATTERYHEALTHROUTINE)
private:
~OsDiagnosticsRunBatteryHealthRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunCpuCacheRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runCpuCacheRoutine",
OS_DIAGNOSTICS_RUNCPUCACHEROUTINE)
private:
~OsDiagnosticsRunCpuCacheRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunCpuFloatingPointAccuracyRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION(
"os.diagnostics.runCpuFloatingPointAccuracyRoutine",
OS_DIAGNOSTICS_RUNCPUFLOATINGPOINTACCURACYROUTINE)
private:
~OsDiagnosticsRunCpuFloatingPointAccuracyRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunCpuPrimeSearchRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runCpuPrimeSearchRoutine",
OS_DIAGNOSTICS_RUNCPUPRIMESEARCHROUTINE)
private:
~OsDiagnosticsRunCpuPrimeSearchRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunCpuStressRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runCpuStressRoutine",
OS_DIAGNOSTICS_RUNCPUSTRESSROUTINE)
private:
~OsDiagnosticsRunCpuStressRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunDiskReadRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runDiskReadRoutine",
OS_DIAGNOSTICS_RUNDISKREADROUTINE)
private:
~OsDiagnosticsRunDiskReadRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunDnsResolutionRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runDnsResolutionRoutine",
OS_DIAGNOSTICS_RUNDNSRESOLUTIONROUTINE)
private:
~OsDiagnosticsRunDnsResolutionRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunDnsResolverPresentRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runDnsResolverPresentRoutine",
OS_DIAGNOSTICS_RUNDNSRESOLVERPRESENTROUTINE)
private:
~OsDiagnosticsRunDnsResolverPresentRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunFingerprintAliveRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runFingerprintAliveRoutine",
OS_DIAGNOSTICS_RUNFINGERPRINTALIVEROUTINE)
private:
~OsDiagnosticsRunFingerprintAliveRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunEmmcLifetimeRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runEmmcLifetimeRoutine",
OS_DIAGNOSTICS_RUNEMMCLIFETIMEROUTINE)
private:
~OsDiagnosticsRunEmmcLifetimeRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunGatewayCanBePingedRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runGatewayCanBePingedRoutine",
OS_DIAGNOSTICS_RUNGATEWAYCANBEPINGEDROUTINE)
private:
~OsDiagnosticsRunGatewayCanBePingedRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunLanConnectivityRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runLanConnectivityRoutine",
OS_DIAGNOSTICS_RUNLANCONNECTIVITYROUTINE)
private:
~OsDiagnosticsRunLanConnectivityRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunMemoryRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runMemoryRoutine",
OS_DIAGNOSTICS_RUNMEMORYROUTINE)
private:
~OsDiagnosticsRunMemoryRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunNvmeSelfTestRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runNvmeSelfTestRoutine",
OS_DIAGNOSTICS_RUNNVMESELFTESTROUTINE)
private:
~OsDiagnosticsRunNvmeSelfTestRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunNvmeWearLevelRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runNvmeWearLevelRoutine",
OS_DIAGNOSTICS_RUNNVMEWEARLEVELROUTINE)
private:
~OsDiagnosticsRunNvmeWearLevelRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunSensitiveSensorRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runSensitiveSensorRoutine",
OS_DIAGNOSTICS_RUNSENSITIVESENSORROUTINE)
private:
~OsDiagnosticsRunSensitiveSensorRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunSignalStrengthRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runSignalStrengthRoutine",
OS_DIAGNOSTICS_RUNSIGNALSTRENGTHROUTINE)
private:
~OsDiagnosticsRunSignalStrengthRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
class OsDiagnosticsRunSmartctlCheckRoutineFunction
: public DiagnosticsApiRunRoutineFunctionBase {
DECLARE_EXTENSION_FUNCTION("os.diagnostics.runSmartctlCheckRoutine",
OS_DIAGNOSTICS_RUNSMARTCTLCHECKROUTINE)
private:
~OsDiagnosticsRunSmartctlCheckRoutineFunction() override = default;
// BaseTelemetryExtensionApiGuardFunction:
void RunIfAllowed() override;
};
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_TELEMETRY_API_DIAGNOSTICS_API_H_