blob: 04e600b4b38e90815b9f73857101ae6b85b188ce [file] [log] [blame]
// Copyright 2024 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_ASH_ARC_VMM_VMM_METRICS_PROVIDER_H_
#define CHROME_BROWSER_ASH_ARC_VMM_VMM_METRICS_PROVIDER_H_
#include "chrome/browser/ash/arc/vmm/arc_vmm_manager.h"
#include "components/metrics/metrics_provider.h"
namespace arc {
class VmmMetricsProvider : public ash::ConciergeClient::VmObserver,
public metrics::MetricsProvider {
public:
VmmMetricsProvider();
VmmMetricsProvider(const VmmMetricsProvider&) = delete;
VmmMetricsProvider& operator=(const VmmMetricsProvider&) = delete;
~VmmMetricsProvider() override;
// ash::ConciergeClient::VmObserver overrides:
void OnVmStarted(const vm_tools::concierge::VmStartedSignal& signal) override;
void OnVmStopped(const vm_tools::concierge::VmStoppedSignal& signal) override;
void OnVmSwapping(
const vm_tools::concierge::VmSwappingSignal& signal) override;
// metrics::MetricsProvider overrides:
void ProvidePreviousSessionData(
metrics::ChromeUserMetricsExtension* uma_proto) override;
void ProvideCurrentSessionData(
metrics::ChromeUserMetricsExtension* uma_proto) override;
private:
// The ARCVM swap status reported by concierge.
bool is_arcvm_running_ = false;
bool is_arcvm_swapped_out_ = false;
base::ScopedObservation<ash::ConciergeClient,
ash::ConciergeClient::VmObserver>
concierge_observation_{this};
};
} // namespace arc
#endif // CHROME_BROWSER_ASH_ARC_VMM_VMM_METRICS_PROVIDER_H_