summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/plugin_channel_host.cc
diff options
context:
space:
mode:
authorjaphet@chromium.org <japhet@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-18 22:29:33 +0000
committerjaphet@chromium.org <japhet@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-18 22:29:33 +0000
commit8275d865da70a68992560db2a5d65bf1b9fa8f56 (patch)
tree7326a9c416ba2f0a0e3a50ce6ad58693e7ba7c46 /chrome/renderer/plugin_channel_host.cc
parent91fce0c025e0ff1516d1a8ea762bc4eab326b8de (diff)
downloadchromium_src-8275d865da70a68992560db2a5d65bf1b9fa8f56.zip
chromium_src-8275d865da70a68992560db2a5d65bf1b9fa8f56.tar.gz
chromium_src-8275d865da70a68992560db2a5d65bf1b9fa8f56.tar.bz2
If an NP_* function is called on an out of process plugin, save enough info to send an NPN_SetException back to the correct renderer if necessary. BUG=26764 TEST=none
Review URL: http://codereview.chromium.org/375005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32419 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/plugin_channel_host.cc')
-rw-r--r--chrome/renderer/plugin_channel_host.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/chrome/renderer/plugin_channel_host.cc b/chrome/renderer/plugin_channel_host.cc
index e010c56..aa409ce 100644
--- a/chrome/renderer/plugin_channel_host.cc
+++ b/chrome/renderer/plugin_channel_host.cc
@@ -6,6 +6,8 @@
#include "chrome/common/plugin_messages.h"
+#include "third_party/WebKit/WebKit/chromium/public/WebBindings.h"
+
// A simple MessageFilter that will ignore all messages and respond to sync
// messages with an error when is_listening_ is false.
class IsListeningFilter : public IPC::ChannelProxy::MessageFilter {
@@ -107,6 +109,17 @@ void PluginChannelHost::RemoveRoute(int route_id) {
PluginChannelBase::RemoveRoute(route_id);
}
+void PluginChannelHost::OnControlMessageReceived(const IPC::Message& message) {
+ IPC_BEGIN_MESSAGE_MAP(PluginChannelHost, message)
+ IPC_MESSAGE_HANDLER(PluginHostMsg_SetException, OnSetException)
+ IPC_MESSAGE_UNHANDLED_ERROR()
+ IPC_END_MESSAGE_MAP()
+}
+
+void PluginChannelHost::OnSetException(const std::string& message) {
+ WebKit::WebBindings::setException(NULL, message.c_str());
+}
+
void PluginChannelHost::OnChannelError() {
PluginChannelBase::OnChannelError();