summaryrefslogtreecommitdiffstats
path: root/chrome/plugin
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/plugin')
-rw-r--r--chrome/plugin/npobject_proxy.cc10
-rw-r--r--chrome/plugin/npobject_stub.cc4
-rw-r--r--chrome/plugin/npobject_stub.h3
3 files changed, 15 insertions, 2 deletions
diff --git a/chrome/plugin/npobject_proxy.cc b/chrome/plugin/npobject_proxy.cc
index 1b464e0..9acde3d 100644
--- a/chrome/plugin/npobject_proxy.cc
+++ b/chrome/plugin/npobject_proxy.cc
@@ -324,12 +324,22 @@ bool NPObjectProxy::NPNEvaluate(NPP npp,
return false;
}
+ bool popups_allowed = false;
+
+ if (npp) {
+ NPAPI::PluginInstance* plugin_instance =
+ reinterpret_cast<NPAPI::PluginInstance*>(npp->ndata);
+ if (plugin_instance)
+ popups_allowed = plugin_instance->popups_allowed();
+ }
+
NPVariant_Param result_param;
std::string script_str = std::string(
script->UTF8Characters, script->UTF8Length);
NPObjectMsg_Evaluate* msg = new NPObjectMsg_Evaluate(proxy->route_id(),
script_str,
+ popups_allowed,
&result_param,
&result);
diff --git a/chrome/plugin/npobject_stub.cc b/chrome/plugin/npobject_stub.cc
index 80f6356..ec276b0 100644
--- a/chrome/plugin/npobject_stub.cc
+++ b/chrome/plugin/npobject_stub.cc
@@ -260,6 +260,7 @@ void NPObjectStub::OnEnumeration(std::vector<NPIdentifier_Param>* value,
}
void NPObjectStub::OnEvaluate(const std::string& script,
+ bool popups_allowed,
IPC::Message* reply_msg) {
if (IsPluginProcess()) {
NOTREACHED() << "Should only be called on NPObjects in the renderer";
@@ -277,7 +278,8 @@ void NPObjectStub::OnEvaluate(const std::string& script,
script_string.UTF8Characters = script.c_str();
script_string.UTF8Length = static_cast<unsigned int>(script.length());
- bool return_value = NPN_Evaluate(0, npobject_, &script_string, &result_var);
+ bool return_value = NPN_EvaluateHelper(0, popups_allowed, npobject_,
+ &script_string, &result_var);
NPVariant_Param result_param;
CreateNPVariantParam(result_var, local_channel, &result_param, true);
diff --git a/chrome/plugin/npobject_stub.h b/chrome/plugin/npobject_stub.h
index e5f1743..a309750 100644
--- a/chrome/plugin/npobject_stub.h
+++ b/chrome/plugin/npobject_stub.h
@@ -63,7 +63,8 @@ class NPObjectStub : public IPC::Channel::Listener,
void OnInvalidate();
void OnEnumeration(std::vector<NPIdentifier_Param>* value,
bool* result);
- void OnEvaluate(const std::string& script, IPC::Message* reply_msg);
+ void OnEvaluate(const std::string& script, bool popups_allowed,
+ IPC::Message* reply_msg);
void OnSetException(const std::string& message);
private: