| 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..b2ba2ddac10ac634920219e01685254e9f7a1d1c 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,37 @@ 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(profile_,
|
| + base::Bind(&MediaGalleriesPrivateAddGalleryWatchFunction::OnPreferences,
|
| + this, pref_id));
|
| + return true;
|
| +}
|
| +
|
| +void MediaGalleriesPrivateAddGalleryWatchFunction::OnPreferences(
|
| + chrome::MediaGalleryPrefId pref_id,
|
| + chrome::MediaGalleriesPreferences* preferences) {
|
| + base::FilePath file_path(preferences->LookUpGalleryPathForExtension(
|
| + pref_id, GetExtension(), false));
|
| +
|
| + if (file_path.empty()) {
|
| + HandleResponse(pref_id, false);
|
| + return;
|
| + }
|
| +
|
| + GalleryWatchStateTracker* state_tracker =
|
| + MediaGalleriesPrivateAPI::Get(profile_)->GetGalleryWatchStateTracker();
|
| + state_tracker->SetPreferences(preferences);
|
| +
|
| #if defined(OS_WIN)
|
| MediaGalleriesPrivateEventRouter* router =
|
| MediaGalleriesPrivateAPI::Get(profile_)->GetEventRouter();
|
| @@ -321,19 +321,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 +372,47 @@ 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(profile_, base::Bind(
|
| + &MediaGalleriesPrivateRemoveGalleryWatchFunction::OnPreferences,
|
| + base::Unretained(this), pref_id));
|
| + return true;
|
| +}
|
| +
|
| +void MediaGalleriesPrivateRemoveGalleryWatchFunction::OnPreferences(
|
| + chrome::MediaGalleriesPreferences* preferences,
|
| + chrome::MediaGalleryPrefId pref_id) {
|
| + base::FilePath file_path(preferences->LookUpGalleryPathForExtension(
|
| + pref_id, GetExtension(), false));
|
| +
|
| + if (file_path.empty) {
|
| + HandleResponse(pref_id, false);
|
| + return;
|
| + }
|
| +
|
| + 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;
|
| }
|
|
|