// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_H_ #define COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_H_ #include <map> #include <memory> #include <string> #include <vector> #include "base/files/file_path.h" #include "base/functional/callback.h" #include "base/observer_list_threadsafe.h" #include "base/sequence_checker.h" #include "base/synchronization/lock.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "components/storage_monitor/storage_info.h" #if BUILDFLAG(IS_CHROMEOS_ASH) #include "services/device/public/mojom/mtp_manager.mojom-forward.h" #endif class MediaFileSystemRegistryTest; class MediaGalleriesPlatformAppBrowserTest; class SystemStorageApiTest; class SystemStorageEjectApiTest; namespace storage_monitor { class RemovableStorageObserver; class TransientDeviceIds; // Base class for platform-specific instances watching for removable storage // attachments/detachments. // Lifecycle contracts: This class is created in the browser process // before the profile is initialized, so listeners can be // created during profile construction. The platform-specific initialization, // which can lead to calling registered listeners with notifications of // attached volumes, are done lazily at first use through the async // |EnsureInitialized()| method. That must be done before any of the registered // listeners will receive updates or calls to other API methods return // meaningful results. // A post-initialization |GetAttachedStorage()| call coupled with a // registered listener will receive a complete set, albeit potentially with // duplicates. This is because there's no tracking between when listeners were // registered and the state of initialization, and the fact that platforms // behave differently in how these notifications are provided. class StorageMonitor { … }; } // namespace storage_monitor #endif // COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_H_