| // 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. |
| |
| #ifndef CRASH_REPORTER_MOUNT_FAILURE_COLLECTOR_H_ |
| #define CRASH_REPORTER_MOUNT_FAILURE_COLLECTOR_H_ |
| |
| #include <string> |
| |
| #include <base/files/file_path.h> |
| |
| #include "crash-reporter/crash_collector.h" |
| |
| // Block device type for collecting mount failure data from. |
| enum class StorageDeviceType { |
| kStateful, |
| kEncryptedStateful, |
| kCryptohome, |
| kInvalidDevice, |
| }; |
| |
| // Collect mount failure information from a given device. At the moment, only |
| // the stateful and encrypted stateful partition are supported. |
| class MountFailureCollector : public CrashCollector { |
| public: |
| explicit MountFailureCollector(StorageDeviceType device_type, |
| bool testonly_send_all); |
| MountFailureCollector(const MountFailureCollector&) = delete; |
| MountFailureCollector& operator=(const MountFailureCollector&) = delete; |
| |
| ~MountFailureCollector() override = default; |
| |
| bool Collect(bool is_mount_failure); |
| |
| static StorageDeviceType ValidateStorageDeviceType(const std::string& device); |
| static std::string StorageDeviceTypeToString(StorageDeviceType device_type); |
| |
| static CollectorInfo GetHandlerInfo(const std::string& mount_device, |
| bool testonly_send_all, |
| bool mount_failure, |
| bool umount_failure); |
| |
| private: |
| StorageDeviceType device_type_; |
| const bool testonly_send_all_; |
| }; |
| |
| #endif // CRASH_REPORTER_MOUNT_FAILURE_COLLECTOR_H_ |