diff options
Diffstat (limited to 'chrome/browser/chromeos/disks')
-rw-r--r-- | chrome/browser/chromeos/disks/disk_mount_manager.cc | 32 | ||||
-rw-r--r-- | chrome/browser/chromeos/disks/disk_mount_manager.h | 6 |
2 files changed, 30 insertions, 8 deletions
diff --git a/chrome/browser/chromeos/disks/disk_mount_manager.cc b/chrome/browser/chromeos/disks/disk_mount_manager.cc index 0e2a26b..5e10c58 100644 --- a/chrome/browser/chromeos/disks/disk_mount_manager.cc +++ b/chrome/browser/chromeos/disks/disk_mount_manager.cc @@ -328,7 +328,8 @@ class DiskMountManagerImpl : public DiskMountManager { // Check if there is a formatting scheduled. PathMap::iterator it = formatting_pending_.find(disk->device_path()); if (it != formatting_pending_.end()) { - const std::string& file_path = it->second; + // Copy the string before it gets erased. + const std::string file_path = it->second; formatting_pending_.erase(it); FormatUnmountedDevice(file_path); } @@ -632,19 +633,34 @@ MountType DiskMountManager::MountTypeFromString(const std::string& type_str) { // static void DiskMountManager::Initialize() { - VLOG(1) << "DiskMountManager::Initialize"; - DCHECK(!g_disk_mount_manager); + if (g_disk_mount_manager) { + LOG(WARNING) << "DiskMountManager was already initialized"; + return; + } g_disk_mount_manager = new DiskMountManagerImpl(); - DCHECK(g_disk_mount_manager); + VLOG(1) << "DiskMountManager initialized"; } // static -void DiskMountManager::Shutdown() { - VLOG(1) << "DiskMountManager::Shutdown"; +void DiskMountManager::InitializeForTesting( + DiskMountManager* disk_mount_manager) { if (g_disk_mount_manager) { - delete g_disk_mount_manager; - g_disk_mount_manager = NULL; + LOG(WARNING) << "DiskMountManager was already initialized"; + return; + } + g_disk_mount_manager = disk_mount_manager; + VLOG(1) << "DiskMountManager initialized"; +} + +// static +void DiskMountManager::Shutdown() { + if (!g_disk_mount_manager) { + LOG(WARNING) << "DiskMountManager::Shutdown() called with NULL manager"; + return; } + delete g_disk_mount_manager; + g_disk_mount_manager = NULL; + VLOG(1) << "DiskMountManager Shutdown completed"; } // static diff --git a/chrome/browser/chromeos/disks/disk_mount_manager.h b/chrome/browser/chromeos/disks/disk_mount_manager.h index 4dbb3eb..c5c9da9 100644 --- a/chrome/browser/chromeos/disks/disk_mount_manager.h +++ b/chrome/browser/chromeos/disks/disk_mount_manager.h @@ -236,6 +236,12 @@ class DiskMountManager { // Creates the global DiskMountManager instance. static void Initialize(); + // Similar to Initialize(), but can inject an alternative + // DiskMountManager such as MockDiskMountManager for testing. + // The injected object will be owned by the internal pointer and deleted + // by Shutdown(). + static void InitializeForTesting(DiskMountManager* disk_mount_manager); + // Destroys the global DiskMountManager instance if it exists. static void Shutdown(); |