| 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:
|
|
|