Chromium Code Reviews| Index: chrome/browser/extensions/api/media_galleries/media_galleries_api.cc |
| =================================================================== |
| --- chrome/browser/extensions/api/media_galleries/media_galleries_api.cc (revision 179687) |
| +++ chrome/browser/extensions/api/media_galleries/media_galleries_api.cc (working copy) |
| @@ -38,6 +38,7 @@ |
| using chrome::MediaFileSystemInfo; |
| using chrome::MediaFileSystemRegistry; |
| +using chrome::MediaFileSystemsCallback; |
| using content::ChildProcessSecurityPolicy; |
| using content::WebContents; |
| @@ -87,17 +88,23 @@ |
| } |
| switch (interactive) { |
| - case MediaGalleries::GET_MEDIA_FILE_SYSTEMS_INTERACTIVITY_YES: |
| - ShowDialog(); |
| + case MediaGalleries::GET_MEDIA_FILE_SYSTEMS_INTERACTIVITY_YES: { |
| + // To keep the media galleries permissions dialogs in sync with pref |
|
vandebo (ex-Chrome)
2013/01/30 23:23:12
nit nit: the cause and effect seem backward in thi
Lei Zhang
2013/01/30 23:29:42
Sounds good.
|
| + // changes, the MediaFileSystemRegistry has to update the preferences |
| + // for all the extensions it knows about. If this is the first time an |
| + // extension called chrome.getMediaFileSystems, the |
| + // MediaFileSystemRegistry would not know about the extension yet. To let |
| + // MediaFileSystemRegistry know about the extension, call |
| + // GetMediaFileSystemsForExtension() here even though the results |
| + // returned in the callback are unused. |
| + GetMediaFileSystemsForExtension(base::Bind( |
| + &MediaGalleriesGetMediaFileSystemsFunction::AlwaysShowDialog, this)); |
| return true; |
| + } |
| case MediaGalleries::GET_MEDIA_FILE_SYSTEMS_INTERACTIVITY_IF_NEEDED: { |
| - MediaFileSystemRegistry* registry = |
| - g_browser_process->media_file_system_registry(); |
| - registry->GetMediaFileSystemsForExtension( |
| - render_view_host(), GetExtension(), base::Bind( |
| - &MediaGalleriesGetMediaFileSystemsFunction:: |
| - ShowDialogIfNoGalleries, |
| - this)); |
| + GetMediaFileSystemsForExtension(base::Bind( |
| + &MediaGalleriesGetMediaFileSystemsFunction::ShowDialogIfNoGalleries, |
| + this)); |
| return true; |
| } |
| case MediaGalleries::GET_MEDIA_FILE_SYSTEMS_INTERACTIVITY_NO: |
| @@ -110,6 +117,11 @@ |
| return false; |
| } |
| +void MediaGalleriesGetMediaFileSystemsFunction::AlwaysShowDialog( |
| + const std::vector<MediaFileSystemInfo>& /*filesystems*/) { |
| + ShowDialog(); |
| +} |
| + |
| void MediaGalleriesGetMediaFileSystemsFunction::ShowDialogIfNoGalleries( |
| const std::vector<MediaFileSystemInfo>& filesystems) { |
| if (filesystems.empty()) |
| @@ -119,11 +131,8 @@ |
| } |
| void MediaGalleriesGetMediaFileSystemsFunction::GetAndReturnGalleries() { |
| - MediaFileSystemRegistry* registry = |
| - g_browser_process->media_file_system_registry(); |
| - registry->GetMediaFileSystemsForExtension( |
| - render_view_host(), GetExtension(), base::Bind( |
| - &MediaGalleriesGetMediaFileSystemsFunction::ReturnGalleries, this)); |
| + GetMediaFileSystemsForExtension(base::Bind( |
| + &MediaGalleriesGetMediaFileSystemsFunction::ReturnGalleries, this)); |
| } |
| void MediaGalleriesGetMediaFileSystemsFunction::ReturnGalleries( |
| @@ -221,6 +230,14 @@ |
| new chrome::MediaGalleriesDialogController(contents, *GetExtension(), cb); |
| } |
| +void MediaGalleriesGetMediaFileSystemsFunction::GetMediaFileSystemsForExtension( |
| + const chrome::MediaFileSystemsCallback& cb) { |
| + MediaFileSystemRegistry* registry = |
| + g_browser_process->media_file_system_registry(); |
| + registry->GetMediaFileSystemsForExtension( |
| + render_view_host(), GetExtension(), cb); |
| +} |
| + |
| // MediaGalleriesAssembleMediaFileFunction ------------------------------------- |
| MediaGalleriesAssembleMediaFileFunction:: |