summaryrefslogtreecommitdiffstats
path: root/app/os_exchange_data.h
diff options
context:
space:
mode:
Diffstat (limited to 'app/os_exchange_data.h')
-rw-r--r--app/os_exchange_data.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/app/os_exchange_data.h b/app/os_exchange_data.h
index 7efea43..5677409 100644
--- a/app/os_exchange_data.h
+++ b/app/os_exchange_data.h
@@ -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 @@ class OSExchangeData {
#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 @@ class OSExchangeData {
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 @@ class OSExchangeData {
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: