diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebKit2/Shared/Plugins/NPObjectMessageReceiver.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebKit2/Shared/Plugins/NPObjectMessageReceiver.cpp')
-rw-r--r-- | Source/WebKit2/Shared/Plugins/NPObjectMessageReceiver.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/Source/WebKit2/Shared/Plugins/NPObjectMessageReceiver.cpp b/Source/WebKit2/Shared/Plugins/NPObjectMessageReceiver.cpp index e5567cfff..328ef7b20 100644 --- a/Source/WebKit2/Shared/Plugins/NPObjectMessageReceiver.cpp +++ b/Source/WebKit2/Shared/Plugins/NPObjectMessageReceiver.cpp @@ -32,6 +32,8 @@ #include "NPRemoteObjectMap.h" #include "NPRuntimeUtilities.h" #include "NPVariantData.h" +#include "Plugin.h" +#include "PluginController.h" namespace WebKit { @@ -80,6 +82,8 @@ void NPObjectMessageReceiver::invoke(const NPIdentifierData& methodNameData, con NPVariant result; VOID_TO_NPVARIANT(result); + PluginController::PluginDestructionProtector protector(m_plugin->controller()); + returnValue = m_npObject->_class->invoke(m_npObject, methodNameData.createNPIdentifier(), arguments.data(), arguments.size(), &result); if (returnValue) { // Convert the NPVariant to an NPVariantData. @@ -108,6 +112,8 @@ void NPObjectMessageReceiver::invokeDefault(const Vector<NPVariantData>& argumen NPVariant result; VOID_TO_NPVARIANT(result); + PluginController::PluginDestructionProtector protector(m_plugin->controller()); + returnValue = m_npObject->_class->invokeDefault(m_npObject, arguments.data(), arguments.size(), &result); if (returnValue) { // Convert the NPVariant to an NPVariantData. @@ -142,14 +148,15 @@ void NPObjectMessageReceiver::getProperty(const NPIdentifierData& propertyNameDa NPVariant result; VOID_TO_NPVARIANT(result); + PluginController::PluginDestructionProtector protector(m_plugin->controller()); + returnValue = m_npObject->_class->getProperty(m_npObject, propertyNameData.createNPIdentifier(), &result); if (!returnValue) return; - // Convert the NPVariant to an NPVariantData. + resultData = m_npRemoteObjectMap->npVariantToNPVariantData(result, m_plugin); - // And release the result. releaseNPVariantValue(&result); } @@ -162,10 +169,10 @@ void NPObjectMessageReceiver::setProperty(const NPIdentifierData& propertyNameDa NPVariant propertyValue = m_npRemoteObjectMap->npVariantDataToNPVariant(propertyValueData, m_plugin); - // Set the property. + PluginController::PluginDestructionProtector protector(m_plugin->controller()); + returnValue = m_npObject->_class->setProperty(m_npObject, propertyNameData.createNPIdentifier(), &propertyValue); - // And release the value. releaseNPVariantValue(&propertyValue); } @@ -213,17 +220,15 @@ void NPObjectMessageReceiver::construct(const Vector<NPVariantData>& argumentsDa NPVariant result; VOID_TO_NPVARIANT(result); + PluginController::PluginDestructionProtector protector(m_plugin->controller()); + returnValue = m_npObject->_class->construct(m_npObject, arguments.data(), arguments.size(), &result); - if (returnValue) { - // Convert the NPVariant to an NPVariantData. + if (returnValue) resultData = m_npRemoteObjectMap->npVariantToNPVariantData(result, m_plugin); - } - // Release all arguments. for (size_t i = 0; i < argumentsData.size(); ++i) releaseNPVariantValue(&arguments[i]); - // And release the result. releaseNPVariantValue(&result); } |