Chromium Code Reviews| Index: chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc |
| diff --git a/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc b/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc |
| index 64854f673fc46b4e64c02fc6088c66577768312a..3eec738703096b47e1547ca4ead4ed39c14b3da8 100644 |
| --- a/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc |
| +++ b/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_api.cc |
| @@ -60,29 +60,6 @@ void HandleProfileShutdownOnFileThread(void* profile_id) { |
| GalleryWatchManager::OnProfileShutdown(profile_id); |
| } |
| -// Gets the |gallery_file_path| and |gallery_pref_id| of the gallery specified |
| -// by the |gallery_id|. Returns true and set |gallery_file_path| and |
| -// |gallery_pref_id| if the |gallery_id| is valid and returns false otherwise. |
| -bool GetGalleryFilePathAndId(const std::string& gallery_id, |
| - Profile* profile, |
| - const Extension* extension, |
| - base::FilePath* gallery_file_path, |
| - chrome::MediaGalleryPrefId* gallery_pref_id) { |
| - chrome::MediaGalleryPrefId pref_id; |
| - if (!base::StringToUint64(gallery_id, &pref_id)) |
| - return false; |
| - chrome::MediaFileSystemRegistry* registry = |
| - g_browser_process->media_file_system_registry(); |
| - base::FilePath file_path( |
| - registry->GetPreferences(profile)->LookUpGalleryPathForExtension( |
| - pref_id, extension, false)); |
| - if (file_path.empty()) |
| - return false; |
| - *gallery_pref_id = pref_id; |
| - *gallery_file_path = file_path; |
| - return true; |
| -} |
| - |
| bool GetMediaGalleryPermissionFromDictionary( |
| const DictionaryValue* dict, |
| chrome::MediaGalleryPermission* out_permission) { |
| @@ -304,14 +281,32 @@ bool MediaGalleriesPrivateAddGalleryWatchFunction::RunImpl() { |
| scoped_ptr<AddGalleryWatch::Params> params( |
| AddGalleryWatch::Params::Create(*args_)); |
| EXTENSION_FUNCTION_VALIDATE(params.get()); |
| - base::FilePath gallery_file_path; |
| - chrome::MediaGalleryPrefId gallery_pref_id = 0; |
| - if (!GetGalleryFilePathAndId(params->gallery_id, profile_, GetExtension(), |
| - &gallery_file_path, &gallery_pref_id)) { |
| + |
| + chrome::MediaGalleryPrefId pref_id = 0; |
|
Lei Zhang
2013/05/14 04:12:23
Use kInvalidMediaGalleryPrefId instead of 0?
Greg Billock
2013/05/14 21:27:13
Done.
|
| + if (!base::StringToUint64(params->gallery_id, &pref_id) || |
| + pref_id == 0) { |
| error_ = kInvalidGalleryIDError; |
| return false; |
| } |
| + chrome::MediaFileSystemRegistry* registry = |
| + g_browser_process->media_file_system_registry(); |
| + registry->GetPreferencesAsync(profile_, |
| + base::Bind(&MediaGalleriesPrivateAddGalleryWatchFunction::OnPreferences, |
| + base::Unretained(this), pref_id)); |
|
Lei Zhang
2013/05/14 04:12:23
MediaGalleriesPrivateAddGalleryWatchFunction is a
Greg Billock
2013/05/14 21:27:13
Good point. Done.
|
| + return true; |
| +} |
| + |
| +void MediaGalleriesPrivateAddGalleryWatchFunction::OnPreferences( |
| + chrome::MediaGalleryPrefId pref_id, |
| + chrome::MediaGalleriesPreferences* preferences) { |
| + base::FilePath file_path(preferences->LookUpGalleryPathForExtension( |
|
Lei Zhang
2013/05/14 04:12:23
Handle the case of an empty |file_path| like befor
Greg Billock
2013/05/14 21:27:13
Oops! I thought I had maintained that, but it didn
|
| + pref_id, GetExtension(), false)); |
| + |
| + GalleryWatchStateTracker* state_tracker = |
| + MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker(); |
| + state_tracker->SetPreferences(preferences); |
| + |
| #if defined(OS_WIN) |
| MediaGalleriesPrivateEventRouter* router = |
| MediaGalleriesPrivateAPI::Get(profile_)->GetEventRouter(); |
| @@ -321,19 +316,18 @@ bool MediaGalleriesPrivateAddGalleryWatchFunction::RunImpl() { |
| FROM_HERE, |
| base::Bind(&GalleryWatchManager::SetupGalleryWatch, |
| profile_, |
| - gallery_pref_id, |
| - gallery_file_path, |
| + pref_id, |
| + file_path, |
| extension_id(), |
| router->AsWeakPtr()), |
| base::Bind(&MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse, |
| this, |
| - gallery_pref_id)); |
| + pref_id)); |
| #else |
| // Recursive gallery watch operation is not currently supported on |
| // non-windows platforms. Please refer to crbug.com/144491 for more details. |
| - HandleResponse(gallery_pref_id, false); |
| + HandleResponse(pref_id, false); |
| #endif |
| - return true; |
| } |
| void MediaGalleriesPrivateAddGalleryWatchFunction::HandleResponse( |
| @@ -373,24 +367,43 @@ bool MediaGalleriesPrivateRemoveGalleryWatchFunction::RunImpl() { |
| RemoveGalleryWatch::Params::Create(*args_)); |
| EXTENSION_FUNCTION_VALIDATE(params.get()); |
| - base::FilePath gallery_file_path; |
| - chrome::MediaGalleryPrefId gallery_pref_id = 0; |
| - if (!GetGalleryFilePathAndId(params->gallery_id, profile_, GetExtension(), |
| - &gallery_file_path, &gallery_pref_id)) { |
| + chrome::MediaGalleryPrefId pref_id; |
| + if (!base::StringToUint64(params->gallery_id, &pref_id) || |
| + pref_id == 0) { |
| error_ = kInvalidGalleryIDError; |
| return false; |
| } |
| + chrome::MediaFileSystemRegistry* registry = |
| + g_browser_process->media_file_system_registry(); |
| + registry->GetPreferencesAsync(profile_, base::Bind( |
| + &MediaGalleriesPrivateRemoveGalleryWatchFunction::OnPreferences, |
| + base::Unretained(this), pref_id)); |
| + return true; |
| +} |
| + |
| +void MediaGalleriesPrivateRemoveGalleryWatchFunction::OnPreferences( |
| + chrome::MediaGalleriesPreferences* preferences, |
| + chrome::MediaGalleryPrefId pref_id) { |
| + chrome::MediaGalleryPrefId gallery_pref_id = 0; |
| + base::FilePath file_path(preferences->LookUpGalleryPathForExtension( |
|
Lei Zhang
2013/05/14 04:12:23
ditto
Greg Billock
2013/05/14 21:27:13
Done.
|
| + pref_id, GetExtension(), false)); |
| + |
| + GalleryWatchStateTracker* state_tracker = |
| + MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker(); |
| + state_tracker->SetPreferences(preferences); |
| + |
| content::BrowserThread::PostTask( |
| content::BrowserThread::FILE, FROM_HERE, |
| base::Bind(&GalleryWatchManager::RemoveGalleryWatch, |
| profile_, |
| - gallery_file_path, |
| + preferences, |
| + file_path, |
| extension_id())); |
| GalleryWatchStateTracker* state_tracker = |
| MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker(); |
| - state_tracker->OnGalleryWatchRemoved(extension_id(), gallery_pref_id); |
| + state_tracker->OnGalleryWatchRemoved(extension_id(), pref_id); |
| #endif |
| return true; |
| } |