| // Copyright 2015 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROMEOS_ASH_COMPONENTS_DISKS_SUSPEND_UNMOUNT_MANAGER_H_ |
| #define CHROMEOS_ASH_COMPONENTS_DISKS_SUSPEND_UNMOUNT_MANAGER_H_ |
| |
| #include <set> |
| #include <string> |
| |
| #include "base/component_export.h" |
| #include "base/memory/raw_ptr.h" |
| #include "base/time/time.h" |
| #include "base/unguessable_token.h" |
| #include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" |
| #include "chromeos/dbus/power/power_manager_client.h" |
| |
| namespace ash { |
| namespace disks { |
| |
| class DiskMountManager; |
| |
| // Class to unmount disks at suspend. |
| class COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_DISKS) SuspendUnmountManager |
| : public chromeos::PowerManagerClient::Observer { |
| public: |
| // The ownership of these raw pointers still remains with the caller. |
| explicit SuspendUnmountManager(DiskMountManager* disk_mount_manager); |
| |
| SuspendUnmountManager(const SuspendUnmountManager&) = delete; |
| SuspendUnmountManager& operator=(const SuspendUnmountManager&) = delete; |
| |
| ~SuspendUnmountManager() override; |
| |
| private: |
| void OnUnmountComplete(const std::string& mount_path, MountError error_code); |
| |
| // PowerManagerClient::Observer |
| void SuspendImminent(power_manager::SuspendImminent::Reason reason) override; |
| void SuspendDone(base::TimeDelta sleep_duration) override; |
| |
| // Callback passed to DiskMountManager holds weak pointers of this. |
| const raw_ptr<DiskMountManager> disk_mount_manager_; |
| |
| // The paths that the manager currently tries to unmount for suspend. |
| std::set<std::string> unmounting_paths_; |
| |
| base::UnguessableToken block_suspend_token_; |
| base::TimeTicks block_suspend_time_; |
| |
| base::WeakPtrFactory<SuspendUnmountManager> weak_ptr_factory_{this}; |
| }; |
| |
| } // namespace disks |
| } // namespace ash |
| |
| #endif // CHROMEOS_ASH_COMPONENTS_DISKS_SUSPEND_UNMOUNT_MANAGER_H_ |