Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2223)

Unified Diff: chrome/browser/renderer_host/resource_message_filter_gtk.cc

Issue 100238: Linux: terminate clipboard handling on the UI thread. (Closed)
Patch Set: ... Created 11 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/renderer_host/resource_message_filter.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/renderer_host/resource_message_filter_gtk.cc
diff --git a/chrome/browser/renderer_host/resource_message_filter_gtk.cc b/chrome/browser/renderer_host/resource_message_filter_gtk.cc
index 86c6f14eb3257be663f443bda59dc054ef35c3f6..dc00486cbb1661d2d6fa2b30043a43fcfcb650f5 100644
--- a/chrome/browser/renderer_host/resource_message_filter_gtk.cc
+++ b/chrome/browser/renderer_host/resource_message_filter_gtk.cc
@@ -4,8 +4,10 @@
#include "chrome/browser/renderer_host/resource_message_filter.h"
+#include "base/clipboard.h"
#include "base/gfx/gtk_native_view_id_manager.h"
#include "chrome/browser/chrome_thread.h"
+#include "chrome/common/clipboard_service.h"
#include "chrome/common/render_messages.h"
#include "chrome/common/x11_util.h"
@@ -19,7 +21,7 @@ using WebKit::WebScreenInfoFactory;
// http://crbug.com/9060 for more details.
// Called on the IO thread.
-void ResourceMessageFilter::SendBackgroundX11Reply(IPC::Message* reply_msg) {
+void ResourceMessageFilter::SendDelayedReply(IPC::Message* reply_msg) {
Send(reply_msg);
}
@@ -33,7 +35,7 @@ void ResourceMessageFilter::DoOnGetScreenInfo(gfx::NativeViewId view,
ChromeThread::GetMessageLoop(ChromeThread::IO)->PostTask(
FROM_HERE, NewRunnableMethod(
- this, &ResourceMessageFilter::SendBackgroundX11Reply, reply_msg));
+ this, &ResourceMessageFilter::SendDelayedReply, reply_msg));
}
// Called on the BACKGROUND_X11 thread.
@@ -57,7 +59,7 @@ void ResourceMessageFilter::DoOnGetWindowRect(gfx::NativeViewId view,
ChromeThread::GetMessageLoop(ChromeThread::IO)->PostTask(
FROM_HERE, NewRunnableMethod(
- this, &ResourceMessageFilter::SendBackgroundX11Reply, reply_msg));
+ this, &ResourceMessageFilter::SendDelayedReply, reply_msg));
}
// Return the top-level parent of the given window. Called on the
@@ -96,7 +98,58 @@ void ResourceMessageFilter::DoOnGetRootWindowRect(gfx::NativeViewId view,
ChromeThread::GetMessageLoop(ChromeThread::IO)->PostTask(
FROM_HERE, NewRunnableMethod(
- this, &ResourceMessageFilter::SendBackgroundX11Reply, reply_msg));
+ this, &ResourceMessageFilter::SendDelayedReply, reply_msg));
+}
+
+// Called on the UI thread.
+void ResourceMessageFilter::DoOnClipboardIsFormatAvailable(
+ Clipboard::FormatType format, IPC::Message* reply_msg) {
+ const bool result = GetClipboardService()->IsFormatAvailable(format);
+
+ ViewHostMsg_ClipboardIsFormatAvailable::WriteReplyParams(reply_msg, result);
+
+ ChromeThread::GetMessageLoop(ChromeThread::IO)->PostTask(
+ FROM_HERE, NewRunnableMethod(
+ this, &ResourceMessageFilter::SendDelayedReply, reply_msg));
+}
+
+// Called on the UI thread.
+void ResourceMessageFilter::DoOnClipboardReadText(IPC::Message* reply_msg) {
+ string16 result;
+ GetClipboardService()->ReadText(&result);
+
+ ViewHostMsg_ClipboardReadText::WriteReplyParams(reply_msg, result);
+
+ ChromeThread::GetMessageLoop(ChromeThread::IO)->PostTask(
+ FROM_HERE, NewRunnableMethod(
+ this, &ResourceMessageFilter::SendDelayedReply, reply_msg));
+}
+
+// Called on the UI thread.
+void ResourceMessageFilter::DoOnClipboardReadAsciiText(
+ IPC::Message* reply_msg) {
+ std::string result;
+ GetClipboardService()->ReadAsciiText(&result);
+
+ ViewHostMsg_ClipboardReadAsciiText::WriteReplyParams(reply_msg, result);
+
+ ChromeThread::GetMessageLoop(ChromeThread::IO)->PostTask(
+ FROM_HERE, NewRunnableMethod(
+ this, &ResourceMessageFilter::SendDelayedReply, reply_msg));
+}
+
+// Called on the UI thread.
+void ResourceMessageFilter::DoOnClipboardReadHTML(IPC::Message* reply_msg) {
+ std::string src_url_str;
+ string16 markup;
+ GetClipboardService()->ReadHTML(&markup, &src_url_str);
+ const GURL src_url = GURL(src_url_str);
+
+ ViewHostMsg_ClipboardReadHTML::WriteReplyParams(reply_msg, markup, src_url);
+
+ ChromeThread::GetMessageLoop(ChromeThread::IO)->PostTask(
+ FROM_HERE, NewRunnableMethod(
+ this, &ResourceMessageFilter::SendDelayedReply, reply_msg));
}
// Called on the IO thread.
@@ -122,3 +175,29 @@ void ResourceMessageFilter::OnGetRootWindowRect(gfx::NativeViewId view,
FROM_HERE, NewRunnableMethod(
this, &ResourceMessageFilter::DoOnGetRootWindowRect, view, reply_msg));
}
+
+// Called on the IO thread.
+void ResourceMessageFilter::OnClipboardIsFormatAvailable(
+ Clipboard::FormatType format, IPC::Message* reply_msg) {
+ ui_loop()->PostTask(FROM_HERE, NewRunnableMethod(
+ this, &ResourceMessageFilter::DoOnClipboardIsFormatAvailable, format,
+ reply_msg));
+}
+
+// Called on the IO thread.
+void ResourceMessageFilter::OnClipboardReadText(IPC::Message* reply_msg) {
+ ui_loop()->PostTask(FROM_HERE, NewRunnableMethod(
+ this, &ResourceMessageFilter::DoOnClipboardReadText, reply_msg));
+}
+
+// Called on the IO thread.
+void ResourceMessageFilter::OnClipboardReadAsciiText(IPC::Message* reply_msg) {
+ ui_loop()->PostTask(FROM_HERE, NewRunnableMethod(
+ this, &ResourceMessageFilter::DoOnClipboardReadAsciiText, reply_msg));
+}
+
+// Called on the IO thread.
+void ResourceMessageFilter::OnClipboardReadHTML(IPC::Message* reply_msg) {
+ ui_loop()->PostTask(FROM_HERE, NewRunnableMethod(
+ this, &ResourceMessageFilter::DoOnClipboardReadHTML, reply_msg));
+}
« no previous file with comments | « chrome/browser/renderer_host/resource_message_filter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698