Index: chrome/browser/media_galleries/media_file_system_registry.cc |
diff --git a/chrome/browser/media_galleries/media_file_system_registry.cc b/chrome/browser/media_galleries/media_file_system_registry.cc |
index 25004bdcccc58c920f4d2d0643edb4d6a1b2edb9..958d14705f381cfb5333c56ff859069052c2fd2a 100644 |
--- a/chrome/browser/media_galleries/media_file_system_registry.cc |
+++ b/chrome/browser/media_galleries/media_file_system_registry.cc |
@@ -438,6 +438,8 @@ void MediaFileSystemRegistry::GetMediaFileSystemsForExtension( |
Profile* profile = |
Profile::FromBrowserContext(rvh->GetProcess()->GetBrowserContext()); |
MediaGalleriesPreferences* preferences = GetPreferences(profile); |
+ DCHECK(preferences->IsInitialized()); |
vandebo (ex-Chrome)
2013/09/26 22:42:36
nit: remove
tommycli
2013/09/26 23:53:33
Done.
|
+ |
MediaGalleryPrefIdSet galleries = |
preferences->GalleriesForExtension(*extension); |
@@ -457,7 +459,9 @@ void MediaFileSystemRegistry::GetMediaFileSystemsForExtension( |
extension_host = new ExtensionGalleriesHost( |
file_system_context_.get(), |
base::Bind(&MediaFileSystemRegistry::OnExtensionGalleriesHostEmpty, |
- base::Unretained(this), profile, extension->id())); |
+ base::Unretained(this), |
+ profile, |
+ extension->id())); |
extension_hosts_map_[profile][extension->id()] = extension_host; |
} |
extension_host->ReferenceFromRVH(rvh); |
@@ -468,34 +472,11 @@ void MediaFileSystemRegistry::GetMediaFileSystemsForExtension( |
MediaGalleriesPreferences* MediaFileSystemRegistry::GetPreferences( |
Profile* profile) { |
- MediaGalleriesPreferences* preferences = |
- MediaGalleriesPreferencesFactory::GetForProfile(profile); |
- if (ContainsKey(extension_hosts_map_, profile)) |
- return preferences; |
- |
- // Create an empty entry so the initialization code below only gets called |
- // once per profile. |
- extension_hosts_map_[profile] = ExtensionHostMap(); |
- |
- // TODO(gbillock): Move this stanza to MediaGalleriesPreferences init code. |
- StorageMonitor* monitor = StorageMonitor::GetInstance(); |
- DCHECK(monitor->IsInitialized()); |
- std::vector<StorageInfo> existing_devices = |
- monitor->GetAllAvailableStorages(); |
- for (size_t i = 0; i < existing_devices.size(); i++) { |
- if (!(StorageInfo::IsMediaDevice(existing_devices[i].device_id()) && |
- StorageInfo::IsRemovableDevice(existing_devices[i].device_id()))) |
- continue; |
- preferences->AddGallery(existing_devices[i].device_id(), |
- base::FilePath(), |
- false, |
- existing_devices[i].storage_label(), |
- existing_devices[i].vendor_name(), |
- existing_devices[i].model_name(), |
- existing_devices[i].total_size_in_bytes(), |
- base::Time::Now()); |
- } |
- return preferences; |
+ // Create an empty ExtensionHostMap for this profile on first initialization. |
+ if (!ContainsKey(extension_hosts_map_, profile)) |
+ extension_hosts_map_[profile] = ExtensionHostMap(); |
+ |
+ return MediaGalleriesPreferencesFactory::GetForProfile(profile); |
} |
void MediaFileSystemRegistry::OnRemovableStorageDetached( |
@@ -514,6 +495,10 @@ void MediaFileSystemRegistry::OnRemovableStorageDetached( |
profile_it != extension_hosts_map_.end(); |
++profile_it) { |
MediaGalleriesPreferences* preferences = GetPreferences(profile_it->first); |
+ // If |preferences| is not yet initialized, it won't contain any galleries. |
+ if (!preferences->IsInitialized()) |
+ continue; |
+ |
InvalidatedGalleriesInfo invalid_galleries_in_profile; |
invalid_galleries_in_profile.pref_ids = |
preferences->LookUpGalleriesByDeviceId(info.device_id()); |
@@ -619,6 +604,7 @@ class MediaFileSystemRegistry::MediaFileSystemContextImpl |
DISALLOW_COPY_AND_ASSIGN(MediaFileSystemContextImpl); |
}; |
+// Constructor in 'private' section because depends on private class definition. |
MediaFileSystemRegistry::MediaFileSystemRegistry() |
: file_system_context_(new MediaFileSystemContextImpl(this)) { |
StorageMonitor::GetInstance()->AddObserver(this); |
@@ -733,6 +719,7 @@ void MediaFileSystemRegistry::OnExtensionGalleriesHostEmpty( |
// |extension_hosts| entry alone, since it indicates the profile has been |
// previously used. |
MediaGalleriesPreferences* preferences = GetPreferences(profile); |
+ DCHECK(preferences->IsInitialized()); |
vandebo (ex-Chrome)
2013/09/26 22:42:36
nit: remove
tommycli
2013/09/26 23:53:33
Done.
|
preferences->RemoveGalleryChangeObserver(this); |
} |
} |