Move WebDropData to content::DropData and split off conversion function.
The WebKit::WebDragData constructor is now provided by DropDataBuilder,
which lives in content/renderer/.
[email protected]
[email protected]
BUG=237267
Review URL: https://chromiumcodereview.appspot.com/18281002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@209408 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/renderer/drop_data_builder.cc b/content/renderer/drop_data_builder.cc
new file mode 100644
index 0000000..56bc81a9
--- /dev/null
+++ b/content/renderer/drop_data_builder.cc
@@ -0,0 +1,67 @@
+// Copyright 2013 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 "content/renderer/drop_data_builder.h"
+
+#include "base/strings/string_util.h"
+#include "content/public/common/drop_data.h"
+#include "third_party/WebKit/public/platform/WebDragData.h"
+#include "third_party/WebKit/public/platform/WebString.h"
+#include "third_party/WebKit/public/platform/WebVector.h"
+#include "ui/base/clipboard/clipboard.h"
+
+using WebKit::WebDragData;
+using WebKit::WebVector;
+
+namespace content {
+
+//static
+DropData DropDataBuilder::Build(const WebDragData& drag_data) {
+ DropData result;
+ result.referrer_policy = WebKit::WebReferrerPolicyDefault;
+
+ const WebVector<WebDragData::Item>& item_list = drag_data.items();
+ for (size_t i = 0; i < item_list.size(); ++i) {
+ const WebDragData::Item& item = item_list[i];
+ switch (item.storageType) {
+ case WebDragData::Item::StorageTypeString: {
+ if (EqualsASCII(item.stringType, ui::Clipboard::kMimeTypeText)) {
+ result.text = base::NullableString16(item.stringData, false);
+ break;
+ }
+ if (EqualsASCII(item.stringType, ui::Clipboard::kMimeTypeURIList)) {
+ result.url = GURL(item.stringData);
+ result.url_title = item.title;
+ break;
+ }
+ if (EqualsASCII(item.stringType, ui::Clipboard::kMimeTypeDownloadURL)) {
+ result.download_metadata = item.stringData;
+ break;
+ }
+ if (EqualsASCII(item.stringType, ui::Clipboard::kMimeTypeHTML)) {
+ result.html = base::NullableString16(item.stringData, false);
+ result.html_base_url = item.baseURL;
+ break;
+ }
+ result.custom_data.insert(
+ std::make_pair(item.stringType, item.stringData));
+ break;
+ }
+ case WebDragData::Item::StorageTypeBinaryData:
+ result.file_contents.assign(item.binaryData.data(),
+ item.binaryData.size());
+ result.file_description_filename = item.title;
+ break;
+ case WebDragData::Item::StorageTypeFilename:
+ // TODO(varunjain): This only works on chromeos. Support win/mac/gtk.
+ result.filenames.push_back(
+ DropData::FileInfo(item.filenameData, item.displayNameData));
+ break;
+ }
+ }
+
+ return result;
+}
+
+} // namespace content