Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Unified Diff: chrome/browser/media_gallery/media_galleries_preferences.cc

Issue 12114019: Media Galleries: Add MediaGalleriesPreferences::GalleryChangeObserver class. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/media_gallery/media_galleries_preferences.cc
===================================================================
--- chrome/browser/media_gallery/media_galleries_preferences.cc (revision 179736)
+++ chrome/browser/media_gallery/media_galleries_preferences.cc (working copy)
@@ -136,10 +136,12 @@
return base_path.Append(path);
}
+MediaGalleriesPreferences::GalleryChangeObserver::~GalleryChangeObserver() {}
+
MediaGalleriesPreferences::MediaGalleriesPreferences(Profile* profile)
: profile_(profile) {
AddDefaultGalleriesIfFreshProfile();
- InitFromPrefs();
+ InitFromPrefs(false /*no notification*/);
}
MediaGalleriesPreferences::~MediaGalleriesPreferences() {}
@@ -171,15 +173,18 @@
}
}
-void MediaGalleriesPreferences::InitFromPrefs() {
+void MediaGalleriesPreferences::InitFromPrefs(bool notify_observers) {
known_galleries_.clear();
device_map_.clear();
PrefService* prefs = profile_->GetPrefs();
const ListValue* list = prefs->GetList(
prefs::kMediaGalleriesRememberedGalleries);
- if (!list)
+ if (!list) {
vandebo (ex-Chrome) 2013/01/31 01:27:56 To remove the code duplication, what do you think
Lei Zhang 2013/01/31 01:34:35 Done.
+ if (notify_observers)
+ NotifyChangeObservers();
return;
+ }
for (ListValue::const_iterator it = list->begin(); it != list->end(); ++it) {
const DictionaryValue* dict = NULL;
@@ -193,8 +198,26 @@
known_galleries_[gallery_info.pref_id] = gallery_info;
device_map_[gallery_info.device_id].insert(gallery_info.pref_id);
}
+ if (notify_observers)
+ NotifyChangeObservers();
}
+void MediaGalleriesPreferences::NotifyChangeObservers() {
+ FOR_EACH_OBSERVER(GalleryChangeObserver,
+ gallery_change_observers_,
+ OnGalleryChanged(this));
+}
+
+void MediaGalleriesPreferences::AddGalleryChangeObserver(
+ GalleryChangeObserver* observer) {
+ gallery_change_observers_.AddObserver(observer);
+}
+
+void MediaGalleriesPreferences::RemoveGalleryChangeObserver(
+ GalleryChangeObserver* observer) {
+ gallery_change_observers_.RemoveObserver(observer);
+}
+
bool MediaGalleriesPreferences::LookUpGalleryByPath(
const FilePath& path,
MediaGalleryPrefInfo* gallery_info) const {
@@ -281,7 +304,7 @@
}
if (update_gallery_name)
dict->SetString(kMediaGalleriesDisplayNameKey, display_name);
- InitFromPrefs();
+ InitFromPrefs(true /* notify observers */);
break;
}
}
@@ -304,7 +327,7 @@
ListPrefUpdate update(prefs, prefs::kMediaGalleriesRememberedGalleries);
ListValue* list = update.Get();
list->Append(CreateGalleryPrefInfoDictionary(gallery_info));
- InitFromPrefs();
+ InitFromPrefs(true /* notify observers */);
return gallery_info.pref_id;
}
@@ -342,7 +365,7 @@
} else {
list->Erase(iter, NULL);
}
- InitFromPrefs();
+ InitFromPrefs(true /* notify observers */);
return;
}
}

Powered by Google App Engine
This is Rietveld 408576698