summaryrefslogtreecommitdiffstats
path: root/chrome/browser/download/drag_download_util.cc
diff options
context:
space:
mode:
authorjianli@chromium.org <jianli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-10 00:00:32 +0000
committerjianli@chromium.org <jianli@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-10 00:00:32 +0000
commit8af9d0341d6c00ee537adc089f938b120d1d8d34 (patch)
tree334fcf5a09c2b3e12face9d46ae4f25ee62921eb /chrome/browser/download/drag_download_util.cc
parent8d292399e6dcdfa776a1de94da07841bf1487f5b (diff)
downloadchromium_src-8af9d0341d6c00ee537adc089f938b120d1d8d34.zip
chromium_src-8af9d0341d6c00ee537adc089f938b120d1d8d34.tar.gz
chromium_src-8af9d0341d6c00ee537adc089f938b120d1d8d34.tar.bz2
Refactor DragDownloadFile so that it can be used by both Windows and MacOSX.
BUG=none TEST=none Review URL: http://codereview.chromium.org/572014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38545 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/download/drag_download_util.cc')
-rw-r--r--chrome/browser/download/drag_download_util.cc48
1 files changed, 48 insertions, 0 deletions
diff --git a/chrome/browser/download/drag_download_util.cc b/chrome/browser/download/drag_download_util.cc
new file mode 100644
index 0000000..ed34e70
--- /dev/null
+++ b/chrome/browser/download/drag_download_util.cc
@@ -0,0 +1,48 @@
+// Copyright (c) 2010 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.
+
+#include "chrome/browser/download/drag_download_util.h"
+
+#include "base/string_util.h"
+#include "base/utf_string_conversions.h"
+#include "googleurl/src/gurl.h"
+
+namespace drag_download_util {
+
+bool ParseDownloadMetadata(const string16& metadata,
+ string16* mime_type,
+ FilePath* file_name,
+ GURL* url) {
+ const char16 separator = L':';
+
+ size_t mime_type_end_pos = metadata.find(separator);
+ if (mime_type_end_pos == string16::npos)
+ return false;
+
+ size_t file_name_end_pos = metadata.find(separator, mime_type_end_pos + 1);
+ if (file_name_end_pos == string16::npos)
+ return false;
+
+ GURL parsed_url = GURL(metadata.substr(file_name_end_pos + 1));
+ if (!parsed_url.is_valid())
+ return false;
+
+ if (mime_type)
+ *mime_type = metadata.substr(0, mime_type_end_pos);
+ if (file_name) {
+ string16 file_name_str = metadata.substr(
+ mime_type_end_pos + 1, file_name_end_pos - mime_type_end_pos - 1);
+#if defined(OS_WIN)
+ *file_name = FilePath(file_name_str);
+#else
+ *file_name = FilePath(UTF16ToUTF8(file_name_str));
+#endif
+ }
+ if (url)
+ *url = parsed_url;
+
+ return true;
+}
+
+} // namespace drag_download_util