summaryrefslogtreecommitdiffstats
path: root/webkit/glue
diff options
context:
space:
mode:
authordcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-04 06:19:37 +0000
committerdcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-04 06:19:37 +0000
commitc6562f4b883b37a288205a206bdadf9a37978bf3 (patch)
tree1a576398bcb2cd32e972449068bc1b66324df84f /webkit/glue
parent5d2cded762eacf51f77021b3de61de430f50a9d8 (diff)
downloadchromium_src-c6562f4b883b37a288205a206bdadf9a37978bf3.zip
chromium_src-c6562f4b883b37a288205a206bdadf9a37978bf3.tar.gz
chromium_src-c6562f4b883b37a288205a206bdadf9a37978bf3.tar.bz2
Add glue for supporting custom MIME types in DataTransfer.
BUG=31037 TEST=none in this patch, will be landed in WebKit as layout tests. Review URL: http://codereview.chromium.org/8775025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@112927 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue')
-rw-r--r--webkit/glue/clipboard_client.h5
-rw-r--r--webkit/glue/webclipboard_impl.cc11
-rw-r--r--webkit/glue/webclipboard_impl.h2
-rw-r--r--webkit/glue/webdropdata.cc17
-rw-r--r--webkit/glue/webdropdata.h3
5 files changed, 37 insertions, 1 deletions
diff --git a/webkit/glue/clipboard_client.h b/webkit/glue/clipboard_client.h
index 92e8c88..7fe395d 100644
--- a/webkit/glue/clipboard_client.h
+++ b/webkit/glue/clipboard_client.h
@@ -59,6 +59,11 @@ class ClipboardClient {
// Reads and image from the clipboard, if available.
virtual void ReadImage(ui::Clipboard::Buffer buffer, std::string* data) = 0;
+ // Reads a custom data type from the clipboard, if available.
+ virtual void ReadCustomData(ui::Clipboard::Buffer buffer,
+ const string16& type,
+ string16* data) = 0;
+
// Creates a context to write clipboard data. May return NULL.
virtual WriteContext* CreateWriteContext() = 0;
};
diff --git a/webkit/glue/webclipboard_impl.cc b/webkit/glue/webclipboard_impl.cc
index 1f2019b..4f2dd99 100644
--- a/webkit/glue/webclipboard_impl.cc
+++ b/webkit/glue/webclipboard_impl.cc
@@ -173,6 +173,17 @@ WebData WebClipboardImpl::readImage(Buffer buffer) {
return WebData(png_data);
}
+WebString WebClipboardImpl::readCustomData(Buffer buffer,
+ const WebString& type) {
+ ui::Clipboard::Buffer buffer_type;
+ if (!ConvertBufferType(buffer, &buffer_type))
+ return WebString();
+
+ string16 data;
+ client_->ReadCustomData(buffer_type, type, &data);
+ return data;
+}
+
void WebClipboardImpl::writeHTML(
const WebString& html_text, const WebURL& source_url,
const WebString& plain_text, bool write_smart_paste) {
diff --git a/webkit/glue/webclipboard_impl.h b/webkit/glue/webclipboard_impl.h
index c3ba604..df72609 100644
--- a/webkit/glue/webclipboard_impl.h
+++ b/webkit/glue/webclipboard_impl.h
@@ -40,6 +40,8 @@ class WEBKIT_GLUE_EXPORT WebClipboardImpl :
unsigned* fragment_start,
unsigned* fragment_end);
virtual WebKit::WebData readImage(Buffer buffer);
+ virtual WebKit::WebString readCustomData(
+ Buffer buffer, const WebKit::WebString& type);
virtual void writeHTML(
const WebKit::WebString& html_text,
const WebKit::WebURL& source_url,
diff --git a/webkit/glue/webdropdata.cc b/webkit/glue/webdropdata.cc
index dc68365..be45487 100644
--- a/webkit/glue/webdropdata.cc
+++ b/webkit/glue/webdropdata.cc
@@ -1,9 +1,11 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// 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.
#include "webkit/glue/webdropdata.h"
+#include <utility>
+
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebData.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebDragData.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h"
@@ -33,6 +35,11 @@ WebDropData::WebDropData(const WebDragData& drag_data)
WebData contents = drag_data.fileContent();
if (!contents.isEmpty())
file_contents.assign(contents.data(), contents.size());
+ WebVector<WebDragData::CustomData> custom_data_copy = drag_data.customData();
+ for (size_t i = 0; i < custom_data_copy.size(); ++i) {
+ custom_data.insert(std::make_pair(custom_data_copy[i].type,
+ custom_data_copy[i].data));
+ }
}
WebDropData::WebDropData() {
@@ -53,5 +60,13 @@ WebDragData WebDropData::ToDragData() const {
result.setHTMLBaseURL(html_base_url);
result.setFileContentFilename(file_description_filename);
result.setFileContent(WebData(file_contents.data(), file_contents.size()));
+ WebVector<WebDragData::CustomData> custom_data_vector(custom_data.size());
+ size_t i = 0;
+ for (std::map<string16, string16>::const_iterator it = custom_data.begin();
+ it != custom_data.end();
+ ++it, ++i) {
+ WebDragData::CustomData data = {it->first, it->second};
+ custom_data_vector[i] = data;
+ }
return result;
}
diff --git a/webkit/glue/webdropdata.h b/webkit/glue/webdropdata.h
index 8b79a78..82d08f2 100644
--- a/webkit/glue/webdropdata.h
+++ b/webkit/glue/webdropdata.h
@@ -9,6 +9,7 @@
#ifndef WEBKIT_GLUE_WEBDROPDATA_H_
#define WEBKIT_GLUE_WEBDROPDATA_H_
+#include <map>
#include <string>
#include <vector>
@@ -56,6 +57,8 @@ struct WEBKIT_GLUE_EXPORT WebDropData {
string16 file_description_filename;
std::string file_contents;
+ std::map<string16, string16> custom_data;
+
// Convert to a WebDragData object.
WebKit::WebDragData ToDragData() const;