Index: chrome/browser/extensions/api/media_galleries/media_galleries_api.h |
=================================================================== |
--- chrome/browser/extensions/api/media_galleries/media_galleries_api.h (revision 237402) |
+++ chrome/browser/extensions/api/media_galleries/media_galleries_api.h (working copy) |
@@ -17,10 +17,57 @@ |
namespace MediaGalleries = extensions::api::media_galleries; |
+namespace base { |
+class FilePath; |
+} |
+ |
namespace extensions { |
+// Common class for media gallery functions that create DOMFileSystems. |
+// Abstract due to the lack of a RunImpl() implementation. |
+class MediaGalleriesGetMediaFileSystemsBase |
+ : public ChromeAsyncExtensionFunction { |
+ protected: |
+ virtual ~MediaGalleriesGetMediaFileSystemsBase(); |
+ |
+ // Always show the dialog. Forces MediaFileSystemRegistry to read its |
+ // preferences. |
+ void ReadPrefsAndShowDialog(); |
+ |
+ // Simply shows the configuration dialog to edit gallery preferences. |
+ // Does not force MediaFileSystemRegistry to read its preferences. |
+ void ShowDialog(); |
+ |
+ // Grabs galleries from the media file system registry and passes them to |
+ // |ReturnGalleries|. |
+ void GetAndReturnGalleries(); |
+ |
+ // Returns galleries to the caller. |
+ void ReturnGalleries(const std::vector<MediaFileSystemInfo>& filesystems); |
+ |
+ // Take an array of MediaFileSystemInfo and turn it into a ListValue |
+ // suitable for use with JS. |
+ // The custom JS binding can use this list to create DOMFileSystem objects. |
+ base::ListValue* ConstructFileSystemList( |
+ const std::vector<MediaFileSystemInfo>& filesystems); |
+ |
+ // A helper method that calls |
+ // MediaFileSystemRegistry::GetMediaFileSystemsForExtension(). |
+ void GetMediaFileSystemsForExtension(const MediaFileSystemsCallback& cb); |
+ |
+ // Helper function to get the appropriate WebContents. |
+ content::WebContents* GetWebContents(); |
+ |
+ // Helper function to get the MediaGalleriesPreferences. |
+ MediaGalleriesPreferences* GetMediaGalleriesPreferences(); |
+ |
+ private: |
+ // Callback adaptor that just shows the dialog. |
+ void AlwaysShowDialog(const std::vector<MediaFileSystemInfo>& filesystems); |
+}; |
+ |
class MediaGalleriesGetMediaFileSystemsFunction |
- : public ChromeAsyncExtensionFunction { |
+ : public MediaGalleriesGetMediaFileSystemsBase { |
public: |
DECLARE_EXTENSION_FUNCTION("mediaGalleries.getMediaFileSystems", |
MEDIAGALLERIES_GETMEDIAFILESYSTEMS) |
@@ -34,26 +81,9 @@ |
void OnPreferencesInit( |
MediaGalleries::GetMediaFileSystemsInteractivity interactive); |
- // Always show the dialog. |
- void AlwaysShowDialog(const std::vector<MediaFileSystemInfo>& filesystems); |
- |
// If no galleries are found, show the dialog, otherwise return them. |
void ShowDialogIfNoGalleries( |
const std::vector<MediaFileSystemInfo>& filesystems); |
- |
- // Grabs galleries from the media file system registry and passes them to |
- // |ReturnGalleries|. |
- void GetAndReturnGalleries(); |
- |
- // Returns galleries to the caller. |
- void ReturnGalleries(const std::vector<MediaFileSystemInfo>& filesystems); |
- |
- // Shows the configuration dialog to edit gallery preferences. |
- void ShowDialog(); |
- |
- // A helper method that calls |
- // MediaFileSystemRegistry::GetMediaFileSystemsForExtension(). |
- void GetMediaFileSystemsForExtension(const MediaFileSystemsCallback& cb); |
}; |
class MediaGalleriesGetAllMediaFileSystemMetadataFunction |
@@ -77,6 +107,40 @@ |
const MediaStorageUtil::DeviceIdSet* available_devices); |
}; |
+class MediaGalleriesManageMediaLocationsFunction |
+ : public MediaGalleriesGetMediaFileSystemsBase { |
+ public: |
+ DECLARE_EXTENSION_FUNCTION("mediaGalleries.manageMediaLocations", |
+ MEDIAGALLERIES_MANAGEMEDIALOCATIONS) |
+ |
+ protected: |
+ virtual ~MediaGalleriesManageMediaLocationsFunction(); |
+ virtual bool RunImpl() OVERRIDE; |
+ |
+ private: |
+ // Bottom half for RunImpl, invoked after the preferences is initialized. |
+ // Handle the |request_type| appropriately. |
+ void OnPreferencesInit(MediaGalleries::ManageRequestType request_type); |
+ |
+ // Callback for the directory prompt request, with the input from the user. |
+ // If |selected_directory| is empty, then the user canceled. |
+ // Either handle the user canceled case or check to see if |
+ // |selected_directory| exists. |
+ void OnDirectorySelected(const base::FilePath& selected_directory); |
+ |
+ // Callback for the directory prompt request from OnDirectorySelected(). |
+ // If |selected_directory| exists, add it as a gallery. |
+ void OnDirectoryChecked(const base::FilePath& selected_directory, |
+ bool exists); |
+ |
+ // Callback for the directory prompt request. Find the file system in |
+ // |filesystems| with a pref id of |pref_id| and return that file system to |
+ // the caller. |
+ void FindGalleryWithPrefId( |
+ MediaGalleryPrefId pref_id, |
+ const std::vector<MediaFileSystemInfo>& filesystems); |
+}; |
+ |
} // namespace extensions |
#endif // CHROME_BROWSER_EXTENSIONS_API_MEDIA_GALLERIES_MEDIA_GALLERIES_API_H_ |