diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index a63cd324e0fc7c..a48d68bf3cede6 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn @@ -1107,8 +1107,6 @@ source_set("chromeos") { "crostini/crostini_shelf_utils.cc", "crostini/crostini_shelf_utils.h", "crostini/crostini_simple_types.h", - "crostini/crostini_stability_monitor.cc", - "crostini/crostini_stability_monitor.h", "crostini/crostini_terminal.cc", "crostini/crostini_terminal.h", "crostini/crostini_unsupported_action_notifier.cc", @@ -1454,6 +1452,8 @@ source_set("chromeos") { "guest_os/guest_os_share_path.h", "guest_os/guest_os_share_path_factory.cc", "guest_os/guest_os_share_path_factory.h", + "guest_os/guest_os_stability_monitor.cc", + "guest_os/guest_os_stability_monitor.h", "hats/hats_dialog.cc", "hats/hats_dialog.h", "hats/hats_finch_helper.cc", @@ -2868,6 +2868,8 @@ source_set("chromeos") { "usb/cros_usb_detector.h", "virtual_machines/virtual_machines_util.cc", "virtual_machines/virtual_machines_util.h", + "vm_shutdown_observer.h", + "vm_starting_observer.h", "web_applications/camera_system_web_app_info.cc", "web_applications/camera_system_web_app_info.h", "web_applications/chrome_camera_app_ui_delegate.cc", @@ -3462,7 +3464,6 @@ source_set("unit_tests") { "crostini/crostini_port_forwarder_unittest.cc", "crostini/crostini_reporting_util_unittest.cc", "crostini/crostini_shelf_utils_unittest.cc", - "crostini/crostini_stability_monitor_unittest.cc", "crostini/crostini_unsupported_action_notifier_unittest.cc", "crostini/crostini_upgrade_available_notification_unittest.cc", "crostini/crostini_util_unittest.cc", @@ -3572,6 +3573,7 @@ source_set("unit_tests") { "guest_os/guest_os_external_protocol_handler_unittest.cc", "guest_os/guest_os_registry_service_unittest.cc", "guest_os/guest_os_share_path_unittest.cc", + "guest_os/guest_os_stability_monitor_unittest.cc", "hats/hats_finch_helper_unittest.cc", "hats/hats_notification_controller_unittest.cc", "input_method/assistive_suggester_unittest.cc", diff --git a/chrome/browser/chromeos/crostini/crostini_manager.cc b/chrome/browser/chromeos/crostini/crostini_manager.cc index e4e6023fe202d2..8002ab069378dd 100644 --- a/chrome/browser/chromeos/crostini/crostini_manager.cc +++ b/chrome/browser/chromeos/crostini/crostini_manager.cc @@ -31,13 +31,13 @@ #include "chrome/browser/chromeos/crostini/crostini_pref_names.h" #include "chrome/browser/chromeos/crostini/crostini_remover.h" #include "chrome/browser/chromeos/crostini/crostini_reporting_util.h" -#include "chrome/browser/chromeos/crostini/crostini_stability_monitor.h" #include "chrome/browser/chromeos/crostini/crostini_types.mojom.h" #include "chrome/browser/chromeos/crostini/crostini_upgrade_available_notification.h" #include "chrome/browser/chromeos/crostini/throttle/crostini_throttle.h" #include "chrome/browser/chromeos/file_manager/path_util.h" #include "chrome/browser/chromeos/file_manager/volume_manager.h" #include "chrome/browser/chromeos/guest_os/guest_os_share_path.h" +#include "chrome/browser/chromeos/guest_os/guest_os_stability_monitor.h" #include "chrome/browser/chromeos/policy/powerwash_requirements_checker.h" #include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/chromeos/scheduler_configuration_manager.h" @@ -152,7 +152,7 @@ CrostiniManager::RestartOptions& CrostiniManager::RestartOptions::operator=( RestartOptions&&) = default; class CrostiniManager::CrostiniRestarter - : public crostini::VmShutdownObserver, + : public chromeos::VmShutdownObserver, public chromeos::disks::DiskMountManager::Observer, public chromeos::SchedulerConfigurationManagerBase::Observer { public: @@ -208,7 +208,7 @@ class CrostiniManager::CrostiniRestarter } } - // crostini::VmShutdownObserver + // chromeos::VmShutdownObserver void OnVmShutdown(const std::string& vm_name) override { if (ReturnEarlyIfAborted()) { return; @@ -922,8 +922,8 @@ CrostiniManager::CrostiniManager(Profile* profile) chromeos::PowerManagerClient::Get()->AddObserver(this); } CrostiniThrottle::GetForBrowserContext(profile_); - crostini_stability_monitor_ = - std::make_unique(this); + guest_os_stability_monitor_ = + std::make_unique(this); } CrostiniManager::~CrostiniManager() { @@ -949,9 +949,9 @@ void CrostiniManager::RemoveDBusObservers() { if (chromeos::PowerManagerClient::Get()) { chromeos::PowerManagerClient::Get()->RemoveObserver(this); } - // CrostiniStabilityMonitor needs to be destructed here so it can unregister + // GuestOsStabilityMonitor needs to be destructed here so it can unregister // itself from the DBus clients that may no longer exist later. - crostini_stability_monitor_.reset(); + guest_os_stability_monitor_.reset(); } // static @@ -2150,10 +2150,12 @@ void CrostiniManager::RemoveUpgradeContainerProgressObserver( upgrade_container_progress_observers_.RemoveObserver(observer); } -void CrostiniManager::AddVmShutdownObserver(VmShutdownObserver* observer) { +void CrostiniManager::AddVmShutdownObserver( + chromeos::VmShutdownObserver* observer) { vm_shutdown_observers_.AddObserver(observer); } -void CrostiniManager::RemoveVmShutdownObserver(VmShutdownObserver* observer) { +void CrostiniManager::RemoveVmShutdownObserver( + chromeos::VmShutdownObserver* observer) { vm_shutdown_observers_.RemoveObserver(observer); } diff --git a/chrome/browser/chromeos/crostini/crostini_manager.h b/chrome/browser/chromeos/crostini/crostini_manager.h index ccbeacdc63b47a..95c214c343180d 100644 --- a/chrome/browser/chromeos/crostini/crostini_manager.h +++ b/chrome/browser/chromeos/crostini/crostini_manager.h @@ -20,6 +20,7 @@ #include "chrome/browser/chromeos/crostini/crostini_types.mojom-forward.h" #include "chrome/browser/chromeos/crostini/crostini_util.h" #include "chrome/browser/chromeos/crostini/termina_installer.h" +#include "chrome/browser/chromeos/vm_shutdown_observer.h" #include "chrome/browser/chromeos/vm_starting_observer.h" #include "chrome/browser/component_updater/cros_component_installer_chromeos.h" #include "chrome/browser/ui/browser.h" @@ -38,9 +39,12 @@ class Profile; +namespace guest_os { +class GuestOsStabilityMonitor; +} + namespace crostini { -class CrostiniStabilityMonitor; class CrostiniUpgradeAvailableNotification; class LinuxPackageOperationProgressObserver { @@ -126,12 +130,6 @@ class CrostiniContainerPropertiesObserver : public base::CheckedObserver { bool can_upgrade) = 0; }; -class VmShutdownObserver : public base::CheckedObserver { - public: - // Called when the given VM has shutdown. - virtual void OnVmShutdown(const std::string& vm_name) = 0; -}; - class ContainerStartedObserver : public base::CheckedObserver { public: // Called when the container has started. @@ -503,8 +501,8 @@ class CrostiniManager : public KeyedService, UpgradeContainerProgressObserver* observer); // Add/remove vm shutdown observers. - void AddVmShutdownObserver(VmShutdownObserver* observer); - void RemoveVmShutdownObserver(VmShutdownObserver* observer); + void AddVmShutdownObserver(chromeos::VmShutdownObserver* observer); + void RemoveVmShutdownObserver(chromeos::VmShutdownObserver* observer); // Add/remove vm starting observers. void AddVmStartingObserver(chromeos::VmStartingObserver* observer); @@ -887,7 +885,7 @@ class CrostiniManager : public KeyedService, base::ObserverList::Unchecked upgrade_container_progress_observers_; - base::ObserverList vm_shutdown_observers_; + base::ObserverList vm_shutdown_observers_; base::ObserverList vm_starting_observers_; // Only one restarter flow is actually running for a given container, other @@ -924,7 +922,8 @@ class CrostiniManager : public KeyedService, base::Time time_of_last_disk_type_metric_; - std::unique_ptr crostini_stability_monitor_; + std::unique_ptr + guest_os_stability_monitor_; std::unique_ptr upgrade_available_notification_; diff --git a/chrome/browser/chromeos/crostini/crostini_package_service.h b/chrome/browser/chromeos/crostini/crostini_package_service.h index 3de0e348d57da8..3fe8690dca8941 100644 --- a/chrome/browser/chromeos/crostini/crostini_package_service.h +++ b/chrome/browser/chromeos/crostini/crostini_package_service.h @@ -29,7 +29,7 @@ namespace crostini { class CrostiniPackageService : public KeyedService, public LinuxPackageOperationProgressObserver, public PendingAppListUpdatesObserver, - public VmShutdownObserver { + public chromeos::VmShutdownObserver { public: using StateChangeCallback = base::RepeatingCallback; @@ -68,7 +68,7 @@ class CrostiniPackageService : public KeyedService, void OnPendingAppListUpdates(const ContainerId& container_id, int count) override; - // VmShutdownObserver + // chromeos::VmShutdownObserver void OnVmShutdown(const std::string& vm_name) override; // (Eventually) install a Linux package. If successfully started, a system diff --git a/chrome/browser/chromeos/crostini/crostini_stability_monitor.cc b/chrome/browser/chromeos/guest_os/guest_os_stability_monitor.cc similarity index 67% rename from chrome/browser/chromeos/crostini/crostini_stability_monitor.cc rename to chrome/browser/chromeos/guest_os/guest_os_stability_monitor.cc index 8702c9a1285211..61fb283bd222ed 100644 --- a/chrome/browser/chromeos/crostini/crostini_stability_monitor.cc +++ b/chrome/browser/chromeos/guest_os/guest_os_stability_monitor.cc @@ -2,17 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/crostini/crostini_stability_monitor.h" +#include "chrome/browser/chromeos/guest_os/guest_os_stability_monitor.h" #include "base/metrics/histogram_functions.h" #include "chromeos/dbus/dbus_thread_manager.h" -namespace crostini { +namespace guest_os { const char kCrostiniStabilityHistogram[] = "Crostini.Stability"; -CrostiniStabilityMonitor::CrostiniStabilityMonitor( - CrostiniManager* crostini_manager) +GuestOsStabilityMonitor::GuestOsStabilityMonitor( + crostini::CrostiniManager* crostini_manager) : concierge_observer_(this), cicerone_observer_(this), seneschal_observer_(this), @@ -23,96 +23,96 @@ CrostiniStabilityMonitor::CrostiniStabilityMonitor( chromeos::DBusThreadManager::Get()->GetConciergeClient(); DCHECK(concierge_client); concierge_client->WaitForServiceToBeAvailable( - base::BindOnce(&CrostiniStabilityMonitor::ConciergeStarted, + base::BindOnce(&GuestOsStabilityMonitor::ConciergeStarted, weak_ptr_factory_.GetWeakPtr())); auto* cicerone_client = chromeos::DBusThreadManager::Get()->GetCiceroneClient(); DCHECK(cicerone_client); cicerone_client->WaitForServiceToBeAvailable( - base::BindOnce(&CrostiniStabilityMonitor::CiceroneStarted, + base::BindOnce(&GuestOsStabilityMonitor::CiceroneStarted, weak_ptr_factory_.GetWeakPtr())); auto* seneschal_client = chromeos::DBusThreadManager::Get()->GetSeneschalClient(); DCHECK(seneschal_client); seneschal_client->WaitForServiceToBeAvailable( - base::BindOnce(&CrostiniStabilityMonitor::SeneschalStarted, + base::BindOnce(&GuestOsStabilityMonitor::SeneschalStarted, weak_ptr_factory_.GetWeakPtr())); auto* chunneld_client = chromeos::DBusThreadManager::Get()->GetChunneldClient(); DCHECK(chunneld_client); chunneld_client->WaitForServiceToBeAvailable( - base::BindOnce(&CrostiniStabilityMonitor::ChunneldStarted, + base::BindOnce(&GuestOsStabilityMonitor::ChunneldStarted, weak_ptr_factory_.GetWeakPtr())); - vm_stopped_observer_.Add(crostini_manager); + vm_stopped_observer_.Observe(crostini_manager); } -CrostiniStabilityMonitor::~CrostiniStabilityMonitor() {} +GuestOsStabilityMonitor::~GuestOsStabilityMonitor() {} -void CrostiniStabilityMonitor::ConciergeStarted(bool is_available) { +void GuestOsStabilityMonitor::ConciergeStarted(bool is_available) { DCHECK(is_available); auto* concierge_client = chromeos::DBusThreadManager::Get()->GetConciergeClient(); DCHECK(concierge_client); - concierge_observer_.Add(concierge_client); + concierge_observer_.Observe(concierge_client); } -void CrostiniStabilityMonitor::CiceroneStarted(bool is_available) { +void GuestOsStabilityMonitor::CiceroneStarted(bool is_available) { DCHECK(is_available); auto* cicerone_client = chromeos::DBusThreadManager::Get()->GetCiceroneClient(); DCHECK(cicerone_client); - cicerone_observer_.Add(cicerone_client); + cicerone_observer_.Observe(cicerone_client); } -void CrostiniStabilityMonitor::SeneschalStarted(bool is_available) { +void GuestOsStabilityMonitor::SeneschalStarted(bool is_available) { DCHECK(is_available); auto* seneschal_client = chromeos::DBusThreadManager::Get()->GetSeneschalClient(); DCHECK(seneschal_client); - seneschal_observer_.Add(seneschal_client); + seneschal_observer_.Observe(seneschal_client); } -void CrostiniStabilityMonitor::ChunneldStarted(bool is_available) { +void GuestOsStabilityMonitor::ChunneldStarted(bool is_available) { DCHECK(is_available); auto* chunneld_client = chromeos::DBusThreadManager::Get()->GetChunneldClient(); DCHECK(chunneld_client); - chunneld_observer_.Add(chunneld_client); + chunneld_observer_.Observe(chunneld_client); } -void CrostiniStabilityMonitor::ConciergeServiceStopped() { +void GuestOsStabilityMonitor::ConciergeServiceStopped() { base::UmaHistogramEnumeration(kCrostiniStabilityHistogram, FailureClasses::ConciergeStopped); } -void CrostiniStabilityMonitor::ConciergeServiceStarted() {} +void GuestOsStabilityMonitor::ConciergeServiceStarted() {} -void CrostiniStabilityMonitor::CiceroneServiceStopped() { +void GuestOsStabilityMonitor::CiceroneServiceStopped() { base::UmaHistogramEnumeration(kCrostiniStabilityHistogram, FailureClasses::CiceroneStopped); } -void CrostiniStabilityMonitor::CiceroneServiceStarted() {} +void GuestOsStabilityMonitor::CiceroneServiceStarted() {} -void CrostiniStabilityMonitor::SeneschalServiceStopped() { +void GuestOsStabilityMonitor::SeneschalServiceStopped() { base::UmaHistogramEnumeration(kCrostiniStabilityHistogram, FailureClasses::SeneschalStopped); } -void CrostiniStabilityMonitor::SeneschalServiceStarted() {} +void GuestOsStabilityMonitor::SeneschalServiceStarted() {} -void CrostiniStabilityMonitor::ChunneldServiceStopped() { +void GuestOsStabilityMonitor::ChunneldServiceStopped() { base::UmaHistogramEnumeration(kCrostiniStabilityHistogram, FailureClasses::ChunneldStopped); } -void CrostiniStabilityMonitor::ChunneldServiceStarted() {} +void GuestOsStabilityMonitor::ChunneldServiceStarted() {} -void CrostiniStabilityMonitor::OnVmShutdown(const std::string& vm_name) { +void GuestOsStabilityMonitor::OnVmShutdown(const std::string& vm_name) { // CrostiniManager calls this observer method before removing the VM from its // tracking list, so this list will tell us what state the VM was believed to // be in before the stop signal was received. @@ -128,4 +128,4 @@ void CrostiniStabilityMonitor::OnVmShutdown(const std::string& vm_name) { } } -} // namespace crostini +} // namespace guest_os diff --git a/chrome/browser/chromeos/crostini/crostini_stability_monitor.h b/chrome/browser/chromeos/guest_os/guest_os_stability_monitor.h similarity index 54% rename from chrome/browser/chromeos/crostini/crostini_stability_monitor.h rename to chrome/browser/chromeos/guest_os/guest_os_stability_monitor.h index 090a243bd83955..ea9dba16cd5db3 100644 --- a/chrome/browser/chromeos/crostini/crostini_stability_monitor.h +++ b/chrome/browser/chromeos/guest_os/guest_os_stability_monitor.h @@ -2,24 +2,25 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_CHROMEOS_CROSTINI_CROSTINI_STABILITY_MONITOR_H_ -#define CHROME_BROWSER_CHROMEOS_CROSTINI_CROSTINI_STABILITY_MONITOR_H_ +#ifndef CHROME_BROWSER_CHROMEOS_GUEST_OS_GUEST_OS_STABILITY_MONITOR_H_ +#define CHROME_BROWSER_CHROMEOS_GUEST_OS_GUEST_OS_STABILITY_MONITOR_H_ #include "base/memory/weak_ptr.h" -#include "base/scoped_observer.h" +#include "base/scoped_observation.h" #include "chrome/browser/chromeos/crostini/crostini_manager.h" +#include "chrome/browser/chromeos/vm_shutdown_observer.h" #include "chromeos/dbus/chunneld_client.h" #include "chromeos/dbus/cicerone_client.h" #include "chromeos/dbus/concierge_client.h" #include "chromeos/dbus/seneschal_client.h" -namespace crostini { +namespace guest_os { extern const char kCrostiniStabilityHistogram[]; // These values are logged to UMA. Entries should not be renumbered and numeric // values should never be reused. Please keep in sync with -// CrostiniFailureClasses in src/tools/metrics/histograms/enums.xml and the copy +// GuestOsFailureClasses in src/tools/metrics/histograms/enums.xml and the copy // in src/platform2/vm_tools/cicerone/crash_listener_impl.cc enum class FailureClasses { ConciergeStopped = 0, @@ -42,17 +43,17 @@ enum class FailureClasses { kMaxValue = CrosNotificationdStopped, }; -class CrostiniStabilityMonitor : chromeos::ConciergeClient::Observer, - chromeos::CiceroneClient::Observer, - chromeos::SeneschalClient::Observer, - chromeos::ChunneldClient::Observer, - VmShutdownObserver { +class GuestOsStabilityMonitor : chromeos::ConciergeClient::Observer, + chromeos::CiceroneClient::Observer, + chromeos::SeneschalClient::Observer, + chromeos::ChunneldClient::Observer, + chromeos::VmShutdownObserver { public: - explicit CrostiniStabilityMonitor(CrostiniManager* crostini_manager); - ~CrostiniStabilityMonitor() override; + explicit GuestOsStabilityMonitor(crostini::CrostiniManager* crostini_manager); + ~GuestOsStabilityMonitor() override; - CrostiniStabilityMonitor(const CrostiniStabilityMonitor&) = delete; - CrostiniStabilityMonitor& operator=(const CrostiniStabilityMonitor&) = delete; + GuestOsStabilityMonitor(const GuestOsStabilityMonitor&) = delete; + GuestOsStabilityMonitor& operator=(const GuestOsStabilityMonitor&) = delete; void ConciergeStarted(bool is_available); void CiceroneStarted(bool is_available); @@ -75,31 +76,35 @@ class CrostiniStabilityMonitor : chromeos::ConciergeClient::Observer, void ChunneldServiceStopped() override; void ChunneldServiceStarted() override; - // VmShutdownObserver:: + // chromeos::VmShutdownObserver:: void OnVmShutdown(const std::string& vm_name) override; private: - ScopedObserver + base::ScopedObservation concierge_observer_; - ScopedObserver + base::ScopedObservation cicerone_observer_; - ScopedObserver + base::ScopedObservation seneschal_observer_; - ScopedObserver + base::ScopedObservation chunneld_observer_; - ScopedObserver + base::ScopedObservation vm_stopped_observer_; - base::WeakPtr crostini_manager_; + base::WeakPtr crostini_manager_; // Note: This should remain the last member so it'll be destroyed and // invalidate its weak pointers before any other members are destroyed. - base::WeakPtrFactory weak_ptr_factory_{this}; + base::WeakPtrFactory weak_ptr_factory_{this}; }; -} // namespace crostini +} // namespace guest_os -#endif // CHROME_BROWSER_CHROMEOS_CROSTINI_CROSTINI_STABILITY_MONITOR_H_ +#endif // CHROME_BROWSER_CHROMEOS_GUEST_OS_GUEST_OS_STABILITY_MONITOR_H_ diff --git a/chrome/browser/chromeos/crostini/crostini_stability_monitor_unittest.cc b/chrome/browser/chromeos/guest_os/guest_os_stability_monitor_unittest.cc similarity index 81% rename from chrome/browser/chromeos/crostini/crostini_stability_monitor_unittest.cc rename to chrome/browser/chromeos/guest_os/guest_os_stability_monitor_unittest.cc index 0b101c843cb13d..c51f3b7ad9383a 100644 --- a/chrome/browser/chromeos/crostini/crostini_stability_monitor_unittest.cc +++ b/chrome/browser/chromeos/guest_os/guest_os_stability_monitor_unittest.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/chromeos/crostini/crostini_stability_monitor.h" +#include "chrome/browser/chromeos/guest_os/guest_os_stability_monitor.h" #include @@ -22,17 +22,18 @@ #include "content/public/test/browser_task_environment.h" #include "testing/gtest/include/gtest/gtest.h" -namespace crostini { +namespace guest_os { -class CrostiniStabilityMonitorTest : public testing::Test { +class GuestOsStabilityMonitorTest : public testing::Test { public: - CrostiniStabilityMonitorTest() : task_env_() { + GuestOsStabilityMonitorTest() : task_env_() { chromeos::DBusThreadManager::Initialize(); - // CrostiniManager will create a CrostiniStabilityMonitor for us. + // CrostiniManager will create a GuestOsStabilityMonitor for us. profile_ = std::make_unique(); - crostini_manager_ = std::make_unique(profile_.get()); - CrostiniTestHelper::EnableCrostini(profile_.get()); + crostini_manager_ = + std::make_unique(profile_.get()); + crostini::CrostiniTestHelper::EnableCrostini(profile_.get()); // When CrostiniStabilityMonitor is initialized, it waits for the DBus // services to become available before monitoring them. In tests this @@ -43,8 +44,8 @@ class CrostiniStabilityMonitorTest : public testing::Test { histogram_tester_.ExpectTotalCount(kCrostiniStabilityHistogram, 0); } - ~CrostiniStabilityMonitorTest() override { - CrostiniTestHelper::DisableCrostini(profile_.get()); + ~GuestOsStabilityMonitorTest() override { + crostini::CrostiniTestHelper::DisableCrostini(profile_.get()); crostini_manager_->OnDBusShuttingDownForTesting(); chromeos::DBusThreadManager::Shutdown(); } @@ -66,7 +67,7 @@ class CrostiniStabilityMonitorTest : public testing::Test { vm_tools::concierge::VmStoppedSignal signal; signal.set_name("termina"); - signal.set_owner_id(CryptohomeIdForProfile(profile_.get())); + signal.set_owner_id(crostini::CryptohomeIdForProfile(profile_.get())); concierge_client->NotifyVmStopped(signal); } @@ -74,11 +75,11 @@ class CrostiniStabilityMonitorTest : public testing::Test { // CrostiniManager requires a full browser task environment to run. content::BrowserTaskEnvironment task_env_; std::unique_ptr profile_; - std::unique_ptr crostini_manager_; + std::unique_ptr crostini_manager_; base::HistogramTester histogram_tester_; }; -TEST_F(CrostiniStabilityMonitorTest, ConciergeFailure) { +TEST_F(GuestOsStabilityMonitorTest, ConciergeFailure) { auto* concierge_client = static_cast( chromeos::DBusThreadManager::Get()->GetConciergeClient()); @@ -91,7 +92,7 @@ TEST_F(CrostiniStabilityMonitorTest, ConciergeFailure) { FailureClasses::ConciergeStopped, 1); } -TEST_F(CrostiniStabilityMonitorTest, CiceroneFailure) { +TEST_F(GuestOsStabilityMonitorTest, CiceroneFailure) { auto* cicerone_client = static_cast( chromeos::DBusThreadManager::Get()->GetCiceroneClient()); @@ -104,7 +105,7 @@ TEST_F(CrostiniStabilityMonitorTest, CiceroneFailure) { FailureClasses::CiceroneStopped, 1); } -TEST_F(CrostiniStabilityMonitorTest, SeneschalFailure) { +TEST_F(GuestOsStabilityMonitorTest, SeneschalFailure) { auto* seneschal_client = static_cast( chromeos::DBusThreadManager::Get()->GetSeneschalClient()); @@ -117,7 +118,7 @@ TEST_F(CrostiniStabilityMonitorTest, SeneschalFailure) { FailureClasses::SeneschalStopped, 1); } -TEST_F(CrostiniStabilityMonitorTest, ChunneldFailure) { +TEST_F(GuestOsStabilityMonitorTest, ChunneldFailure) { auto* chunneld_client = static_cast( chromeos::DBusThreadManager::Get()->GetChunneldClient()); @@ -130,22 +131,22 @@ TEST_F(CrostiniStabilityMonitorTest, ChunneldFailure) { FailureClasses::ChunneldStopped, 1); } -TEST_F(CrostiniStabilityMonitorTest, UnknownVmStopped) { +TEST_F(GuestOsStabilityMonitorTest, UnknownVmStopped) { SendVmStoppedSignal(); histogram_tester_.ExpectUniqueSample(kCrostiniStabilityHistogram, FailureClasses::VmStopped, 0); } -TEST_F(CrostiniStabilityMonitorTest, VmStoppedDuringStartup) { +TEST_F(GuestOsStabilityMonitorTest, VmStoppedDuringStartup) { crostini_manager_->AddRunningVmForTesting("termina"); - crostini_manager_->UpdateVmState("termina", VmState::STARTING); + crostini_manager_->UpdateVmState("termina", crostini::VmState::STARTING); SendVmStoppedSignal(); histogram_tester_.ExpectUniqueSample(kCrostiniStabilityHistogram, FailureClasses::VmStopped, 0); } -TEST_F(CrostiniStabilityMonitorTest, ExpectedVmStopped) { +TEST_F(GuestOsStabilityMonitorTest, ExpectedVmStopped) { crostini_manager_->AddStoppingVmForTesting("termina"); SendVmStoppedSignal(); @@ -153,7 +154,7 @@ TEST_F(CrostiniStabilityMonitorTest, ExpectedVmStopped) { FailureClasses::VmStopped, 0); } -TEST_F(CrostiniStabilityMonitorTest, UnexpectedVmStopped) { +TEST_F(GuestOsStabilityMonitorTest, UnexpectedVmStopped) { crostini_manager_->AddRunningVmForTesting("termina"); SendVmStoppedSignal(); @@ -161,4 +162,4 @@ TEST_F(CrostiniStabilityMonitorTest, UnexpectedVmStopped) { FailureClasses::VmStopped, 1); } -} // namespace crostini +} // namespace guest_os diff --git a/chrome/browser/chromeos/vm_shutdown_observer.h b/chrome/browser/chromeos/vm_shutdown_observer.h new file mode 100644 index 00000000000000..222d2c949311da --- /dev/null +++ b/chrome/browser/chromeos/vm_shutdown_observer.h @@ -0,0 +1,18 @@ +// Copyright 2020 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_VM_SHUTDOWN_OBSERVER_H_ +#define CHROME_BROWSER_CHROMEOS_VM_SHUTDOWN_OBSERVER_H_ + +#include "base/observer_list_types.h" + +namespace chromeos { +class VmShutdownObserver : public base::CheckedObserver { + public: + // Called when the given VM has shutdown. + virtual void OnVmShutdown(const std::string& vm_name) = 0; +}; +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_VM_SHUTDOWN_OBSERVER_H_