diff options
Diffstat (limited to 'WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.mm')
-rw-r--r-- | WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.mm | 105 |
1 files changed, 50 insertions, 55 deletions
diff --git a/WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.mm b/WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.mm index 0e6c9a3..c5beb07 100644 --- a/WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.mm +++ b/WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.mm @@ -39,6 +39,7 @@ #import <WebCore/Frame.h> #import <WebCore/IdentifierRep.h> #import <WebCore/ScriptController.h> +#import <string> extern "C" { #import "WebKitPluginHost.h" @@ -568,10 +569,8 @@ kern_return_t WKPCEvaluate(mach_port_t clientPort, uint32_t pluginID, uint32_t r return KERN_FAILURE; NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID); - if (!instanceProxy) { - _WKPHBooleanAndDataReply(hostProxy->port(), pluginID, requestID, false, 0, 0); - return KERN_SUCCESS; - } + if (!instanceProxy) + return KERN_FAILURE; PluginDestroyDeferrer deferrer(instanceProxy); @@ -625,18 +624,14 @@ kern_return_t WKPCInvoke(mach_port_t clientPort, uint32_t pluginID, uint32_t req return KERN_FAILURE; NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID); - if (!instanceProxy) { - _WKPHBooleanAndDataReply(hostProxy->port(), pluginID, requestID, false, 0, 0); - return KERN_SUCCESS; - } + if (!instanceProxy) + return KERN_FAILURE; PluginDestroyDeferrer deferrer(instanceProxy); IdentifierRep* identifier = reinterpret_cast<IdentifierRep*>(serverIdentifier); - if (!IdentifierRep::isValid(identifier)) { - _WKPHBooleanAndDataReply(hostProxy->port(), instanceProxy->pluginID(), requestID, false, 0, 0); - return KERN_SUCCESS; - } + if (!IdentifierRep::isValid(identifier)) + return KERN_FAILURE; Identifier methodNameIdentifier = identifierFromIdentifierRep(identifier); @@ -661,10 +656,8 @@ kern_return_t WKPCInvokeDefault(mach_port_t clientPort, uint32_t pluginID, uint3 return KERN_FAILURE; NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID); - if (!instanceProxy) { - _WKPHBooleanAndDataReply(hostProxy->port(), pluginID, requestID, false, 0, 0); - return KERN_SUCCESS; - } + if (!instanceProxy) + return KERN_FAILURE; PluginDestroyDeferrer deferrer(instanceProxy); @@ -707,16 +700,12 @@ kern_return_t WKPCGetProperty(mach_port_t clientPort, uint32_t pluginID, uint32_ return KERN_FAILURE; NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID); - if (!instanceProxy) { - _WKPHBooleanAndDataReply(hostProxy->port(), pluginID, requestID, false, 0, 0); - return KERN_SUCCESS; - } + if (!instanceProxy) + return KERN_FAILURE; IdentifierRep* identifier = reinterpret_cast<IdentifierRep*>(serverIdentifier); - if (!IdentifierRep::isValid(identifier)) { - _WKPHBooleanAndDataReply(hostProxy->port(), pluginID, requestID, false, 0, 0); - return KERN_SUCCESS; - } + if (!IdentifierRep::isValid(identifier)) + return KERN_FAILURE; PluginDestroyDeferrer deferrer(instanceProxy); @@ -737,7 +726,7 @@ kern_return_t WKPCGetProperty(mach_port_t clientPort, uint32_t pluginID, uint32_ return KERN_SUCCESS; } -kern_return_t WKPCSetProperty(mach_port_t clientPort, uint32_t pluginID, uint32_t objectID, uint64_t serverIdentifier, data_t valueData, mach_msg_type_number_t valueLength, boolean_t* returnValue) +kern_return_t WKPCSetProperty(mach_port_t clientPort, uint32_t pluginID, uint32_t requestID, uint32_t objectID, uint64_t serverIdentifier, data_t valueData, mach_msg_type_number_t valueLength) { DataDeallocator deallocator(valueData, valueLength); @@ -753,18 +742,21 @@ kern_return_t WKPCSetProperty(mach_port_t clientPort, uint32_t pluginID, uint32_ IdentifierRep* identifier = reinterpret_cast<IdentifierRep*>(serverIdentifier); if (!IdentifierRep::isValid(identifier)) - *returnValue = false; - + return KERN_FAILURE; + + bool result; if (identifier->isString()) { Identifier propertyNameIdentifier = identifierFromIdentifierRep(identifier); - *returnValue = instanceProxy->setProperty(objectID, propertyNameIdentifier, valueData, valueLength); + result = instanceProxy->setProperty(objectID, propertyNameIdentifier, valueData, valueLength); } else - *returnValue = instanceProxy->setProperty(objectID, identifier->number(), valueData, valueLength); - + result = instanceProxy->setProperty(objectID, identifier->number(), valueData, valueLength); + + _WKPHBooleanReply(hostProxy->port(), instanceProxy->pluginID(), requestID, result); + return KERN_SUCCESS; } -kern_return_t WKPCRemoveProperty(mach_port_t clientPort, uint32_t pluginID, uint32_t objectID, uint64_t serverIdentifier, boolean_t* returnValue) +kern_return_t WKPCRemoveProperty(mach_port_t clientPort, uint32_t pluginID, uint32_t requestID, uint32_t objectID, uint64_t serverIdentifier) { NetscapePluginHostProxy* hostProxy = pluginProxyMap().get(clientPort); if (!hostProxy) @@ -779,13 +771,16 @@ kern_return_t WKPCRemoveProperty(mach_port_t clientPort, uint32_t pluginID, uint IdentifierRep* identifier = reinterpret_cast<IdentifierRep*>(serverIdentifier); if (!IdentifierRep::isValid(identifier)) return KERN_FAILURE; - + + bool result; if (identifier->isString()) { Identifier propertyNameIdentifier = identifierFromIdentifierRep(identifier); - *returnValue = instanceProxy->removeProperty(objectID, propertyNameIdentifier); + result = instanceProxy->removeProperty(objectID, propertyNameIdentifier); } else - *returnValue = instanceProxy->removeProperty(objectID, identifier->number()); - + result = instanceProxy->removeProperty(objectID, identifier->number()); + + _WKPHBooleanReply(hostProxy->port(), instanceProxy->pluginID(), requestID, result); + return KERN_SUCCESS; } @@ -796,18 +791,14 @@ kern_return_t WKPCHasProperty(mach_port_t clientPort, uint32_t pluginID, uint32_ return KERN_FAILURE; NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID); - if (!instanceProxy) { - _WKPHBooleanReply(hostProxy->port(), pluginID, requestID, false); - return KERN_SUCCESS; - } + if (!instanceProxy) + return KERN_FAILURE; PluginDestroyDeferrer deferrer(instanceProxy); IdentifierRep* identifier = reinterpret_cast<IdentifierRep*>(serverIdentifier); - if (!IdentifierRep::isValid(identifier)) { - _WKPHBooleanReply(hostProxy->port(), instanceProxy->pluginID(), requestID, false); - return KERN_SUCCESS; - } + if (!IdentifierRep::isValid(identifier)) + return KERN_FAILURE; boolean_t returnValue; if (identifier->isString()) { @@ -828,18 +819,14 @@ kern_return_t WKPCHasMethod(mach_port_t clientPort, uint32_t pluginID, uint32_t return KERN_FAILURE; NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID); - if (!instanceProxy) { - _WKPHBooleanReply(hostProxy->port(), pluginID, requestID, false); - return KERN_SUCCESS; - } + if (!instanceProxy) + return KERN_FAILURE; PluginDestroyDeferrer deferrer(instanceProxy); IdentifierRep* identifier = reinterpret_cast<IdentifierRep*>(serverIdentifier); - if (!IdentifierRep::isValid(identifier)) { - _WKPHBooleanReply(hostProxy->port(), instanceProxy->pluginID(), requestID, false); - return KERN_SUCCESS; - } + if (!IdentifierRep::isValid(identifier)) + return KERN_FAILURE; Identifier methodNameIdentifier = identifierFromIdentifierRep(identifier); boolean_t returnValue = instanceProxy->hasMethod(objectID, methodNameIdentifier); @@ -880,10 +867,8 @@ kern_return_t WKPCEnumerate(mach_port_t clientPort, uint32_t pluginID, uint32_t return KERN_FAILURE; NetscapePluginInstanceProxy* instanceProxy = hostProxy->pluginInstance(pluginID); - if (!instanceProxy) { - _WKPHBooleanAndDataReply(hostProxy->port(), pluginID, requestID, false, 0, 0); - return KERN_SUCCESS; - } + if (!instanceProxy) + return KERN_FAILURE; data_t resultData = 0; mach_msg_type_number_t resultLength = 0; @@ -1149,4 +1134,14 @@ kern_return_t WKPCRunSyncOpenPanel(mach_port_t clientPort, data_t panelData, mac } #endif // !defined(BUILDING_ON_SNOW_LEOPARD) +kern_return_t WKPCSetException(mach_port_t clientPort, data_t message, mach_msg_type_number_t messageCnt) +{ + DataDeallocator deallocator(message, messageCnt); + + string str(message, messageCnt); + NetscapePluginInstanceProxy::setGlobalException(str.c_str()); + + return KERN_SUCCESS; +} + #endif // USE(PLUGIN_HOST_PROCESS) |