summaryrefslogtreecommitdiffstats
path: root/content/browser/renderer_host/render_view_host_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/renderer_host/render_view_host_impl.cc')
-rw-r--r--content/browser/renderer_host/render_view_host_impl.cc13
1 files changed, 12 insertions, 1 deletions
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc
index 6984a0d..7b99267 100644
--- a/content/browser/renderer_host/render_view_host_impl.cc
+++ b/content/browser/renderer_host/render_view_host_impl.cc
@@ -29,6 +29,7 @@
#include "content/browser/renderer_host/render_process_host_impl.h"
#include "content/browser/renderer_host/render_view_host_delegate.h"
#include "content/common/accessibility_messages.h"
+#include "content/common/browser_plugin_messages.h"
#include "content/common/content_constants_internal.h"
#include "content/common/desktop_notification_messages.h"
#include "content/common/drag_messages.h"
@@ -833,7 +834,17 @@ bool RenderViewHostImpl::SuddenTerminationAllowed() const {
// RenderViewHostImpl, IPC message handlers:
bool RenderViewHostImpl::OnMessageReceived(const IPC::Message& msg) {
- if (!BrowserMessageFilter::CheckCanDispatchOnUI(msg, this))
+ // Allow BrowserPluginHostMsg_* sync messages to run on the UI thread.
+ // Platform apps will not support windowed plugins so the deadlock cycle
+ // browser -> plugin -> renderer -> browser referred in
+ // BrowserMessageFilter::CheckCanDispatchOnUI() is not supposed to happen. If
+ // we want to support windowed plugins, sync messages in BrowserPlugin might
+ // need to be changed to async messages.
+ // TODO(fsamuel): Disallow BrowserPluginHostMsg_* sync messages to run on UI
+ // thread and make these messages async: http://crbug.com/149063.
+ if (msg.type() != BrowserPluginHostMsg_HandleInputEvent::ID &&
+ msg.type() != BrowserPluginHostMsg_ResizeGuest::ID &&
+ !BrowserMessageFilter::CheckCanDispatchOnUI(msg, this))
return true;
// Filter out most IPC messages if this renderer is swapped out.