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..857335774c27f63af818d7c5d35e8c8a37142e17 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,35 @@ 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 = chrome::kInvalidMediaGalleryPrefId; |
| + if (!base::StringToUint64(params->gallery_id, &pref_id) || |
| + pref_id == chrome::kInvalidMediaGalleryPrefId) { |
| error_ = kInvalidGalleryIDError; |
| return false; |
| } |
| + chrome::MediaFileSystemRegistry* registry = |
| + g_browser_process->media_file_system_registry(); |
| + registry->GetPreferencesAsync( |
| + base::Bind(&MediaGalleriesPrivateAddGalleryWatchFunction::OnPreferences, |
| + this, pref_id)); |
| + return true; |
| +} |
| + |
| +void MediaGalleriesPrivateAddGalleryWatchFunction::OnPreferences( |
| + chrome::MediaGalleryPrefId pref_id, |
| + chrome::MediaGalleriesPreferences::Vendor* vendor) { |
| + chrome::MediaGalleriesPreferences* preferences = |
| + vendor->GetPreferences(profile_); |
| + base::FilePath file_path(preferences->LookUpGalleryPathForExtension( |
| + pref_id, GetExtension(), false)); |
| + |
| + if (file_path.empty()) { |
| + HandleResponse(pref_id, false); |
|
vandebo (ex-Chrome)
2013/05/22 16:27:52
error_ = kInvalidGalleryIDError;
Greg Billock
2013/05/22 18:42:52
Done.
|
| + return; |
| + } |
| + |
| #if defined(OS_WIN) |
| MediaGalleriesPrivateEventRouter* router = |
| MediaGalleriesPrivateAPI::Get(profile_)->GetEventRouter(); |
| @@ -321,19 +319,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 +370,49 @@ 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 = chrome::kInvalidMediaGalleryPrefId; |
| + if (!base::StringToUint64(params->gallery_id, &pref_id) || |
| + pref_id == chrome::kInvalidMediaGalleryPrefId) { |
| error_ = kInvalidGalleryIDError; |
| return false; |
| } |
| + chrome::MediaFileSystemRegistry* registry = |
| + g_browser_process->media_file_system_registry(); |
| + registry->GetPreferencesAsync(base::Bind( |
| + &MediaGalleriesPrivateRemoveGalleryWatchFunction::OnPreferences, |
| + base::Unretained(this), pref_id)); |
| + return true; |
| +} |
| + |
| +void MediaGalleriesPrivateRemoveGalleryWatchFunction::OnPreferences( |
| + chrome::MediaGalleriesPreferences::Vendor* vendor, |
| + chrome::MediaGalleryPrefId pref_id) { |
| + chrome::MediaGalleriesPreferences* preferences = |
| + vendor->GetPreferences(profile_); |
| + base::FilePath file_path(preferences->LookUpGalleryPathForExtension( |
| + pref_id, GetExtension(), false)); |
| + |
| + if (file_path.empty) { |
| + HandleResponse(pref_id, false); |
|
vandebo (ex-Chrome)
2013/05/22 16:27:52
error_ = kInvalidGalleryIDError;
Greg Billock
2013/05/22 18:42:52
Done.
|
| + return; |
| + } |
| + |
| + GalleryWatchStateTracker* state_tracker = |
| + MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker(); |
| + state_tracker->SetPreferences(preferences); |
|
vandebo (ex-Chrome)
2013/05/22 16:27:52
I thought we didn't have SetPreferences() any more
Greg Billock
2013/05/22 18:42:52
We don't. Fixing now.
|
| + |
| 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; |
| } |