summaryrefslogtreecommitdiffstats
path: root/content/browser/download/drag_download_util.h
diff options
context:
space:
mode:
authorerg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-24 18:00:20 +0000
committererg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-24 18:00:20 +0000
commit6db416f0b82588c147de698cb9febf930475e5b8 (patch)
tree5aa3ecd3a2ac48845c8e5ecb3b7b027bd0ef9137 /content/browser/download/drag_download_util.h
parent063676f690cd71759e8a94d620201934ea10b3b9 (diff)
downloadchromium_src-6db416f0b82588c147de698cb9febf930475e5b8.zip
chromium_src-6db416f0b82588c147de698cb9febf930475e5b8.tar.gz
chromium_src-6db416f0b82588c147de698cb9febf930475e5b8.tar.bz2
content: Move drag_download_* to content.
These are leaf nodes in moving tab_contents_view_gtk, and usage is sparse enough that I'm just moving the headers and fixing up the three places that they are included. BUG=93804 TEST=none; code move Review URL: http://codereview.chromium.org/7720014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98073 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/download/drag_download_util.h')
-rw-r--r--content/browser/download/drag_download_util.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/content/browser/download/drag_download_util.h b/content/browser/download/drag_download_util.h
new file mode 100644
index 0000000..7eef73f
--- /dev/null
+++ b/content/browser/download/drag_download_util.h
@@ -0,0 +1,62 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_BROWSER_DOWNLOAD_DRAG_DOWNLOAD_UTIL_H_
+#define CONTENT_BROWSER_DOWNLOAD_DRAG_DOWNLOAD_UTIL_H_
+#pragma once
+
+#include "base/basictypes.h"
+#include "base/memory/ref_counted.h"
+#include "base/string16.h"
+#include "content/browser/download/drag_download_file.h"
+#include "ui/base/dragdrop/download_file_interface.h"
+
+class FilePath;
+class GURL;
+namespace net {
+class FileStream;
+}
+
+namespace drag_download_util {
+
+// Parse the download metadata set in DataTransfer.setData. The metadata
+// consists of a set of the following values separated by ":"
+// * MIME type
+// * File name
+// * URL
+// If the file name contains special characters, they need to be escaped
+// appropriately.
+// For example, we can have
+// text/plain:example.txt:http://example.com/example.txt
+bool ParseDownloadMetadata(const string16& metadata,
+ string16* mime_type,
+ FilePath* file_name,
+ GURL* url);
+
+// Create a new file at the specified path. If the file already exists, try to
+// insert the sequential unifier to produce a new file, like foo-01.txt.
+// Return a FileStream if successful.
+net::FileStream* CreateFileStreamForDrop(FilePath* file_path);
+
+// Implementation of DownloadFileObserver to finalize the download process.
+class PromiseFileFinalizer : public ui::DownloadFileObserver {
+ public:
+ explicit PromiseFileFinalizer(DragDownloadFile* drag_file_downloader);
+ virtual ~PromiseFileFinalizer();
+
+ // DownloadFileObserver methods.
+ virtual void OnDownloadCompleted(const FilePath& file_path);
+ virtual void OnDownloadAborted();
+
+ private:
+ void Cleanup();
+
+ scoped_refptr<DragDownloadFile> drag_file_downloader_;
+
+ DISALLOW_COPY_AND_ASSIGN(PromiseFileFinalizer);
+};
+
+} // namespace drag_download_util
+
+#endif // CONTENT_BROWSER_DOWNLOAD_DRAG_DOWNLOAD_UTIL_H_