| Index: chrome/browser/ui/webui/options/media_galleries_handler.cc
|
| diff --git a/chrome/browser/ui/webui/options/media_galleries_handler.cc b/chrome/browser/ui/webui/options/media_galleries_handler.cc
|
| index de76e34b104df31ee4274c9028fc6e1f518231ce..e532e263df500a02d301ab0a2b05aa97beefa7d5 100644
|
| --- a/chrome/browser/ui/webui/options/media_galleries_handler.cc
|
| +++ b/chrome/browser/ui/webui/options/media_galleries_handler.cc
|
| @@ -26,7 +26,8 @@ using chrome::MediaGalleriesPreferences;
|
| using chrome::MediaGalleriesPrefInfoMap;
|
| using chrome::MediaGalleryPrefInfo;
|
|
|
| -MediaGalleriesHandler::MediaGalleriesHandler() {
|
| +MediaGalleriesHandler::MediaGalleriesHandler()
|
| + : weak_ptr_factory_(this) {
|
| }
|
|
|
| MediaGalleriesHandler::~MediaGalleriesHandler() {
|
| @@ -61,6 +62,10 @@ void MediaGalleriesHandler::InitializePage() {
|
| base::Unretained(this)));
|
| }
|
|
|
| + // Note: this call will set up the StorageMonitor through a call to
|
| + // GetPreferencesAsync. That is needed not only to populate the
|
| + // initial page contents, but also to hook the preferences up to
|
| + // device notifications so the change listener receives events.
|
| OnGalleriesChanged();
|
| }
|
|
|
| @@ -77,9 +82,14 @@ void MediaGalleriesHandler::RegisterMessages() {
|
|
|
| void MediaGalleriesHandler::OnGalleriesChanged() {
|
| Profile* profile = Profile::FromWebUI(web_ui());
|
| - chrome::MediaGalleriesPreferences* preferences =
|
| - g_browser_process->media_file_system_registry()->GetPreferences(profile);
|
| + g_browser_process->media_file_system_registry()->GetPreferencesAsync(
|
| + profile,
|
| + base::Bind(&MediaGalleriesHandler::OnGalleriesChangedWithPreferences,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| +}
|
|
|
| +void MediaGalleriesHandler::OnGalleriesChangedWithPreferences(
|
| + chrome::MediaGalleriesPreferences* preferences) {
|
| ListValue list;
|
| const MediaGalleriesPrefInfoMap& galleries = preferences->known_galleries();
|
| for (MediaGalleriesPrefInfoMap::const_iterator iter = galleries.begin();
|
| @@ -123,19 +133,31 @@ void MediaGalleriesHandler::HandleForgetGallery(const base::ListValue* args) {
|
| return;
|
| }
|
|
|
| - chrome::MediaGalleriesPreferences* prefs =
|
| - g_browser_process->media_file_system_registry()->GetPreferences(
|
| - Profile::FromWebUI(web_ui()));
|
| - prefs->ForgetGalleryById(id);
|
| + g_browser_process->media_file_system_registry()->GetPreferencesAsync(
|
| + Profile::FromWebUI(web_ui()),
|
| + base::Bind(&MediaGalleriesHandler::HandleForgetGalleryWithPreferences,
|
| + weak_ptr_factory_.GetWeakPtr(), id));
|
| +}
|
| +
|
| +void MediaGalleriesHandler::HandleForgetGalleryWithPreferences(
|
| + uint64 id,
|
| + chrome::MediaGalleriesPreferences* preferences) {
|
| + preferences->ForgetGalleryById(id);
|
| }
|
|
|
| void MediaGalleriesHandler::FileSelected(const base::FilePath& path,
|
| int index,
|
| void* params) {
|
| - chrome::MediaGalleriesPreferences* prefs =
|
| - g_browser_process->media_file_system_registry()->GetPreferences(
|
| - Profile::FromWebUI(web_ui()));
|
| - prefs->AddGalleryByPath(path);
|
| + g_browser_process->media_file_system_registry()->GetPreferencesAsync(
|
| + Profile::FromWebUI(web_ui()),
|
| + base::Bind(&MediaGalleriesHandler::FileSelectedWithPreferences,
|
| + weak_ptr_factory_.GetWeakPtr(), path));
|
| +}
|
| +
|
| +void MediaGalleriesHandler::FileSelectedWithPreferences(
|
| + base::FilePath path,
|
| + chrome::MediaGalleriesPreferences* preferences) {
|
| + preferences->AddGalleryByPath(path);
|
| }
|
|
|
| } // namespace options
|
|
|