Index: app/os_exchange_data.h |
=================================================================== |
--- app/os_exchange_data.h (revision 35459) |
+++ app/os_exchange_data.h (working copy) |
@@ -18,6 +18,8 @@ |
#endif |
#include "base/basictypes.h" |
+#include "base/file_path.h" |
+#include "base/ref_counted.h" |
#include "base/scoped_ptr.h" |
class GURL; |
@@ -59,6 +61,48 @@ |
#endif |
}; |
+ struct DownloadFileInfo; |
+ |
+ // Defines the interface to observe the status of file download. |
+ class DownloadFileObserver : public base::RefCounted<DownloadFileObserver> { |
+ public: |
+ // The caller is responsible to free the DownloadFileInfo objects passed |
+ // in the vector parameter. |
+ virtual void OnDataReady( |
+ int format, |
+ const std::vector<DownloadFileInfo*>& downloads) = 0; |
+ |
+ protected: |
+ friend class base::RefCounted<DownloadFileObserver>; |
+ virtual ~DownloadFileObserver() {} |
+ }; |
+ |
+ // Defines the interface to control how a file is downloaded. |
+ class DownloadFileProvider : |
+ public base::RefCountedThreadSafe<DownloadFileProvider> { |
+ public: |
+ virtual bool Start(DownloadFileObserver* observer, int format) = 0; |
+ virtual void Stop() = 0; |
+ |
+ protected: |
+ friend class base::RefCountedThreadSafe<DownloadFileProvider>; |
+ virtual ~DownloadFileProvider() {} |
+ }; |
+ |
+ // Encapsulates the info about a file to be downloaded. |
+ struct DownloadFileInfo { |
+ FilePath filename; |
+ uint64 size; |
+ scoped_refptr<DownloadFileProvider> downloader; |
+ |
+ DownloadFileInfo(const FilePath& filename, |
+ uint64 size, |
+ DownloadFileProvider* downloader) |
+ : filename(filename), |
+ size(size), |
+ downloader(downloader) {} |
+ }; |
+ |
// Provider defines the platform specific part of OSExchangeData that |
// interacts with the native system. |
class Provider { |
@@ -91,6 +135,7 @@ |
virtual bool GetHtml(std::wstring* html, GURL* base_url) const = 0; |
virtual bool HasFileContents() const = 0; |
virtual bool HasHtml() const = 0; |
+ virtual void SetDownloadFileInfo(DownloadFileInfo* download) = 0; |
#endif |
}; |
@@ -164,6 +209,9 @@ |
bool GetFileContents(std::wstring* filename, |
std::string* file_contents) const; |
bool GetHtml(std::wstring* html, GURL* base_url) const; |
+ |
+ // Adds a download file with full path (CF_HDROP). |
+ void SetDownloadFileInfo(DownloadFileInfo* download); |
#endif |
private: |