summaryrefslogtreecommitdiffstats
path: root/WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.mm
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.mm')
-rw-r--r--WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.mm105
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)