diff options
author | dcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-04 06:19:37 +0000 |
---|---|---|
committer | dcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-04 06:19:37 +0000 |
commit | c6562f4b883b37a288205a206bdadf9a37978bf3 (patch) | |
tree | 1a576398bcb2cd32e972449068bc1b66324df84f /content | |
parent | 5d2cded762eacf51f77021b3de61de430f50a9d8 (diff) | |
download | chromium_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 'content')
5 files changed, 23 insertions, 0 deletions
diff --git a/content/browser/renderer_host/clipboard_message_filter.cc b/content/browser/renderer_host/clipboard_message_filter.cc index cd4b6df..1825b34 100644 --- a/content/browser/renderer_host/clipboard_message_filter.cc +++ b/content/browser/renderer_host/clipboard_message_filter.cc @@ -62,6 +62,7 @@ bool ClipboardMessageFilter::OnMessageReceived(const IPC::Message& message, IPC_MESSAGE_HANDLER(ClipboardHostMsg_ReadAsciiText, OnReadAsciiText) IPC_MESSAGE_HANDLER(ClipboardHostMsg_ReadHTML, OnReadHTML) IPC_MESSAGE_HANDLER_DELAY_REPLY(ClipboardHostMsg_ReadImage, OnReadImage) + IPC_MESSAGE_HANDLER(ClipboardHostMsg_ReadCustomData, OnReadCustomData) #if defined(OS_MACOSX) IPC_MESSAGE_HANDLER(ClipboardHostMsg_FindPboardWriteStringAsync, OnFindPboardWriteString) @@ -195,6 +196,11 @@ void ClipboardMessageFilter::OnReadImageReply( Send(reply_msg); } +void ClipboardMessageFilter::OnReadCustomData( + ui::Clipboard::Buffer buffer, const string16& type, string16* result) { + GetClipboard()->ReadCustomData(buffer, type, result); +} + // static ui::Clipboard* ClipboardMessageFilter::GetClipboard() { // We have a static instance of the clipboard service for use by all message diff --git a/content/browser/renderer_host/clipboard_message_filter.h b/content/browser/renderer_host/clipboard_message_filter.h index b4f24bb..72169e0 100644 --- a/content/browser/renderer_host/clipboard_message_filter.h +++ b/content/browser/renderer_host/clipboard_message_filter.h @@ -44,6 +44,9 @@ class ClipboardMessageFilter : public BrowserMessageFilter { uint32* fragment_start, uint32* fragment_end); void OnReadImage(ui::Clipboard::Buffer buffer, IPC::Message* reply_msg); void OnReadImageReply(const SkBitmap& bitmap, IPC::Message* reply_msg); + void OnReadCustomData(ui::Clipboard::Buffer buffer, + const string16& type, + string16* result); #if defined(OS_MACOSX) void OnFindPboardWriteString(const string16& text); #endif diff --git a/content/common/clipboard_messages.h b/content/common/clipboard_messages.h index 93e26fe..00497dc 100644 --- a/content/common/clipboard_messages.h +++ b/content/common/clipboard_messages.h @@ -55,6 +55,10 @@ IPC_SYNC_MESSAGE_CONTROL1_2(ClipboardHostMsg_ReadImage, ui::Clipboard::Buffer /* buffer */, base::SharedMemoryHandle /* PNG-encoded image */, uint32 /* image size */) +IPC_SYNC_MESSAGE_CONTROL2_1(ClipboardHostMsg_ReadCustomData, + ui::Clipboard::Buffer /* buffer */, + string16 /* type */, + string16 /* result */) #if defined(OS_MACOSX) IPC_MESSAGE_CONTROL1(ClipboardHostMsg_FindPboardWriteStringAsync, diff --git a/content/renderer/renderer_clipboard_client.cc b/content/renderer/renderer_clipboard_client.cc index d87d527..87e8b60 100644 --- a/content/renderer/renderer_clipboard_client.cc +++ b/content/renderer/renderer_clipboard_client.cc @@ -169,6 +169,13 @@ void RendererClipboardClient::ReadImage(ui::Clipboard::Buffer buffer, } } +void RendererClipboardClient::ReadCustomData(ui::Clipboard::Buffer buffer, + const string16& type, + string16* data) { + RenderThreadImpl::current()->Send( + new ClipboardHostMsg_ReadCustomData(buffer, type, data)); +} + webkit_glue::ClipboardClient::WriteContext* RendererClipboardClient::CreateWriteContext() { return new RendererClipboardWriteContext; diff --git a/content/renderer/renderer_clipboard_client.h b/content/renderer/renderer_clipboard_client.h index df0ab07..bf1de96 100644 --- a/content/renderer/renderer_clipboard_client.h +++ b/content/renderer/renderer_clipboard_client.h @@ -30,6 +30,9 @@ class RendererClipboardClient : public webkit_glue::ClipboardClient { uint32* fragment_end) OVERRIDE; virtual void ReadImage(ui::Clipboard::Buffer buffer, std::string* data) OVERRIDE; + virtual void ReadCustomData(ui::Clipboard::Buffer buffer, + const string16& type, + string16* data) OVERRIDE; virtual WriteContext* CreateWriteContext() OVERRIDE; }; |