Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1930)

Unified Diff: app/os_exchange_data.h

Issue 351029: Support dragging a virtual file out of the browser. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « app/clipboard/clipboard_util_win.cc ('k') | app/os_exchange_data.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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:
« no previous file with comments | « app/clipboard/clipboard_util_win.cc ('k') | app/os_exchange_data.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698