Index: chrome/browser/media_galleries/media_galleries_preferences.cc |
diff --git a/chrome/browser/media_galleries/media_galleries_preferences.cc b/chrome/browser/media_galleries/media_galleries_preferences.cc |
index 786fb552191c64b4705b0068ae3d6ef4a971d43f..6f76f23fcf30d190f992b890e93047f6acbccd30 100644 |
--- a/chrome/browser/media_galleries/media_galleries_preferences.cc |
+++ b/chrome/browser/media_galleries/media_galleries_preferences.cc |
@@ -62,6 +62,9 @@ const char kMediaGalleriesVendorNameKey[] = "vendorName"; |
const char kMediaGalleriesModelNameKey[] = "modelName"; |
const char kMediaGalleriesSizeKey[] = "totalSize"; |
const char kMediaGalleriesLastAttachTimeKey[] = "lastAttachTime"; |
+const char kMediaGalleriesScanImageCountKey[] = "imageCount"; |
+const char kMediaGalleriesScanMusicCountKey[] = "musicCount"; |
+const char kMediaGalleriesScanVideoCountKey[] = "videoCount"; |
const char kMediaGalleriesPrefsVersionKey[] = "preferencesVersion"; |
const char kMediaGalleriesTypeAutoDetectedValue[] = "autoDetected"; |
@@ -74,6 +77,8 @@ const char kIPhotoGalleryName[] = "iPhoto"; |
const char kITunesGalleryName[] = "iTunes"; |
const char kPicasaGalleryName[] = "Picasa"; |
+const int kCurrentPrefsVersion = 2; |
+ |
int NumberExtensionsUsingMediaGalleries(Profile* profile) { |
int count = 0; |
if (!profile) |
@@ -174,6 +179,9 @@ bool PopulateGalleryPrefInfoFromDictionary( |
double total_size_in_bytes = 0.0; |
double last_attach_time = 0.0; |
bool volume_metadata_valid = false; |
+ int image_count = 0; |
+ int music_count = 0; |
+ int video_count = 0; |
int prefs_version = 0; |
if (!GetPrefId(dict, &pref_id) || |
@@ -194,6 +202,15 @@ bool PopulateGalleryPrefInfoFromDictionary( |
volume_metadata_valid = true; |
} |
+ if (type == MediaGalleryPrefInfo::kScanResult && |
+ dict.GetInteger(kMediaGalleriesScanImageCountKey, &image_count) && |
+ dict.GetInteger(kMediaGalleriesScanMusicCountKey, &music_count) && |
+ dict.GetInteger(kMediaGalleriesScanVideoCountKey, &video_count)) { |
+ out_gallery_info->image_count = image_count; |
+ out_gallery_info->music_count = music_count; |
+ out_gallery_info->video_count = video_count; |
+ } |
+ |
out_gallery_info->pref_id = pref_id; |
out_gallery_info->display_name = display_name; |
out_gallery_info->device_id = device_id; |
@@ -216,8 +233,6 @@ base::DictionaryValue* CreateGalleryPrefInfoDictionary( |
base::DictionaryValue* dict = new base::DictionaryValue(); |
dict->SetString(kMediaGalleriesPrefIdKey, |
base::Uint64ToString(gallery.pref_id)); |
- if (!gallery.volume_metadata_valid) |
- dict->SetString(kMediaGalleriesDisplayNameKey, gallery.display_name); |
dict->SetString(kMediaGalleriesDeviceIdKey, gallery.device_id); |
dict->SetString(kMediaGalleriesPathKey, gallery.path.value()); |
dict->SetString(kMediaGalleriesTypeKey, TypeToStringValue(gallery.type)); |
@@ -229,6 +244,14 @@ base::DictionaryValue* CreateGalleryPrefInfoDictionary( |
dict->SetDouble(kMediaGalleriesSizeKey, gallery.total_size_in_bytes); |
dict->SetDouble(kMediaGalleriesLastAttachTimeKey, |
gallery.last_attach_time.ToInternalValue()); |
+ } else { |
+ dict->SetString(kMediaGalleriesDisplayNameKey, gallery.display_name); |
+ } |
+ |
+ if (gallery.type == MediaGalleryPrefInfo::kScanResult) { |
+ dict->SetInteger(kMediaGalleriesScanImageCountKey, gallery.image_count); |
+ dict->SetInteger(kMediaGalleriesScanMusicCountKey, gallery.music_count); |
+ dict->SetInteger(kMediaGalleriesScanVideoCountKey, gallery.video_count); |
} |
// Version 0 of the prefs format was that the display_name was always |
@@ -308,6 +331,9 @@ MediaGalleryPrefInfo::MediaGalleryPrefInfo() |
type(kInvalidType), |
total_size_in_bytes(0), |
volume_metadata_valid(false), |
+ image_count(0), |
+ music_count(0), |
+ video_count(0), |
prefs_version(0) { |
} |
@@ -490,7 +516,7 @@ void MediaGalleriesPreferences::FinishInitialization() { |
existing_devices[i].vendor_name(), |
existing_devices[i].model_name(), |
existing_devices[i].total_size_in_bytes(), |
- base::Time::Now()); |
+ base::Time::Now(), 0, 0, 0); |
} |
for (std::vector<base::Closure>::iterator iter = |
@@ -521,7 +547,7 @@ void MediaGalleriesPreferences::AddDefaultGalleries() { |
MediaGalleryPrefInfo::kAutoDetected, |
info.storage_label(), info.vendor_name(), |
info.model_name(), info.total_size_in_bytes(), |
- base::Time(), true, 2); |
+ base::Time(), true, 0, 0, 0, kCurrentPrefsVersion); |
} |
} |
} |
@@ -589,7 +615,7 @@ void MediaGalleriesPreferences::OnFinderDeviceID(const std::string& device_id) { |
AddGalleryInternal(device_id, base::ASCIIToUTF16(gallery_name), |
base::FilePath(), MediaGalleryPrefInfo::kAutoDetected, |
base::string16(), base::string16(), base::string16(), 0, |
- base::Time(), false, 2); |
+ base::Time(), false, 0, 0, 0, kCurrentPrefsVersion); |
} |
OnInitializationCallbackReturned(); |
@@ -640,7 +666,7 @@ void MediaGalleriesPreferences::OnRemovableStorageAttached( |
AddGallery(info.device_id(), base::FilePath(), |
MediaGalleryPrefInfo::kAutoDetected, info.storage_label(), |
info.vendor_name(), info.model_name(), info.total_size_in_bytes(), |
- base::Time::Now()); |
+ base::Time::Now(), 0, 0, 0); |
} |
bool MediaGalleriesPreferences::LookUpGalleryByPath( |
@@ -688,7 +714,7 @@ bool MediaGalleriesPreferences::LookUpGalleryByPath( |
gallery_info->total_size_in_bytes = info.total_size_in_bytes(); |
gallery_info->last_attach_time = base::Time::Now(); |
gallery_info->volume_metadata_valid = true; |
- gallery_info->prefs_version = 2; |
+ gallery_info->prefs_version = kCurrentPrefsVersion; |
} |
return false; |
} |
@@ -726,11 +752,16 @@ MediaGalleryPrefId MediaGalleriesPreferences::AddGallery( |
const base::string16& vendor_name, |
const base::string16& model_name, |
uint64 total_size_in_bytes, |
- base::Time last_attach_time) { |
+ base::Time last_attach_time, |
+ int image_count, |
+ int music_count, |
+ int video_count) { |
DCHECK(IsInitialized()); |
return AddGalleryInternal(device_id, base::string16(), relative_path, |
type, volume_label, vendor_name, model_name, |
- total_size_in_bytes, last_attach_time, true, 2); |
+ total_size_in_bytes, last_attach_time, true, |
+ image_count, music_count, video_count, |
+ kCurrentPrefsVersion); |
} |
MediaGalleryPrefId MediaGalleriesPreferences::AddGalleryInternal( |
@@ -738,9 +769,8 @@ MediaGalleryPrefId MediaGalleriesPreferences::AddGalleryInternal( |
const base::FilePath& relative_path, MediaGalleryPrefInfo::Type type, |
const base::string16& volume_label, const base::string16& vendor_name, |
const base::string16& model_name, uint64 total_size_in_bytes, |
- base::Time last_attach_time, |
- bool volume_metadata_valid, |
- int prefs_version) { |
+ base::Time last_attach_time, bool volume_metadata_valid, |
+ int image_count, int music_count, int video_count, int prefs_version) { |
DCHECK(type == MediaGalleryPrefInfo::kUserAdded || |
type == MediaGalleryPrefInfo::kAutoDetected || |
type == MediaGalleryPrefInfo::kScanResult); |
@@ -765,7 +795,7 @@ MediaGalleryPrefId MediaGalleriesPreferences::AddGalleryInternal( |
update_gallery_type = true; |
} |
if (existing.type == MediaGalleryPrefInfo::kRemovedScan) { |
- new_type = type; |
+ new_type = MediaGalleryPrefInfo::kUserAdded; |
update_gallery_type = true; |
} |
} |
@@ -789,8 +819,12 @@ MediaGalleryPrefId MediaGalleriesPreferences::AddGalleryInternal( |
(existing.total_size_in_bytes != total_size_in_bytes) || |
(existing.last_attach_time != last_attach_time)); |
+ bool update_scan_counts = |
+ (new_type == MediaGalleryPrefInfo::kScanResult) && |
+ (image_count > 0 || music_count > 0 || video_count > 0); |
+ |
if (!update_gallery_name && !update_gallery_type && |
- !update_gallery_metadata) |
+ !update_gallery_metadata && !update_scan_counts) |
return *pref_id_it; |
PrefService* prefs = profile_->GetPrefs(); |
@@ -818,6 +852,11 @@ MediaGalleryPrefId MediaGalleriesPreferences::AddGalleryInternal( |
dict->SetDouble(kMediaGalleriesLastAttachTimeKey, |
last_attach_time.ToInternalValue()); |
} |
+ if (update_scan_counts) { |
+ dict->SetInteger(kMediaGalleriesScanImageCountKey, image_count); |
+ dict->SetInteger(kMediaGalleriesScanMusicCountKey, music_count); |
+ dict->SetInteger(kMediaGalleriesScanVideoCountKey, video_count); |
+ } |
dict->SetInteger(kMediaGalleriesPrefsVersionKey, prefs_version); |
break; |
} |
@@ -826,12 +865,9 @@ MediaGalleryPrefId MediaGalleriesPreferences::AddGalleryInternal( |
// Commits the prefs update. |
update.reset(); |
- if (update_gallery_name || update_gallery_metadata || update_gallery_type) { |
- InitFromPrefs(); |
- FOR_EACH_OBSERVER(GalleryChangeObserver, |
- gallery_change_observers_, |
- OnGalleryInfoUpdated(this, *pref_id_it)); |
- } |
+ InitFromPrefs(); |
+ FOR_EACH_OBSERVER(GalleryChangeObserver, gallery_change_observers_, |
+ OnGalleryInfoUpdated(this, *pref_id_it)); |
return *pref_id_it; |
} |
@@ -844,14 +880,15 @@ MediaGalleryPrefId MediaGalleriesPreferences::AddGalleryInternal( |
gallery_info.device_id = device_id; |
gallery_info.path = normalized_relative_path; |
gallery_info.type = type; |
- if (volume_metadata_valid) { |
- gallery_info.volume_label = volume_label; |
- gallery_info.vendor_name = vendor_name; |
- gallery_info.model_name = model_name; |
- gallery_info.total_size_in_bytes = total_size_in_bytes; |
- gallery_info.last_attach_time = last_attach_time; |
- } |
+ gallery_info.volume_label = volume_label; |
+ gallery_info.vendor_name = vendor_name; |
+ gallery_info.model_name = model_name; |
+ gallery_info.total_size_in_bytes = total_size_in_bytes; |
+ gallery_info.last_attach_time = last_attach_time; |
gallery_info.volume_metadata_valid = volume_metadata_valid; |
+ gallery_info.image_count = image_count; |
+ gallery_info.music_count = music_count; |
+ gallery_info.video_count = video_count; |
gallery_info.prefs_version = prefs_version; |
{ |
@@ -885,7 +922,8 @@ MediaGalleryPrefId MediaGalleriesPreferences::AddGalleryByPath( |
gallery_info.total_size_in_bytes, |
gallery_info.last_attach_time, |
gallery_info.volume_metadata_valid, |
- gallery_info.prefs_version); |
+ 0, 0, 0, |
+ kCurrentPrefsVersion); |
} |
void MediaGalleriesPreferences::ForgetGalleryById(MediaGalleryPrefId pref_id) { |
@@ -915,6 +953,9 @@ void MediaGalleriesPreferences::ForgetGalleryById(MediaGalleryPrefId pref_id) { |
} else { |
dict->SetString(kMediaGalleriesTypeKey, |
kMediaGalleriesTypeRemovedScanValue); |
+ dict->SetInteger(kMediaGalleriesScanImageCountKey, 0); |
+ dict->SetInteger(kMediaGalleriesScanMusicCountKey, 0); |
+ dict->SetInteger(kMediaGalleriesScanVideoCountKey, 0); |
} |
} else { |
list->Erase(iter, NULL); |