diff options
author | Steve Block <steveblock@google.com> | 2010-04-27 16:23:55 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2010-04-27 17:07:03 +0100 |
commit | 692e5dbf12901edacf14812a6fae25462920af42 (patch) | |
tree | d62802373a429e0a9dc093b6046c166b2c514285 /WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp | |
parent | e24bea4efef1c414137d36a9778aa4e142e10c7d (diff) | |
download | external_webkit-692e5dbf12901edacf14812a6fae25462920af42.zip external_webkit-692e5dbf12901edacf14812a6fae25462920af42.tar.gz external_webkit-692e5dbf12901edacf14812a6fae25462920af42.tar.bz2 |
Merge webkit.org at r55033 : Initial merge by git
Change-Id: I98a4af828067cc243ec3dc5e5826154dd88074b5
Diffstat (limited to 'WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp')
-rw-r--r-- | WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp | 52 |
1 files changed, 50 insertions, 2 deletions
diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp b/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp index e69da73..8e278f5 100644 --- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp @@ -176,6 +176,11 @@ enum { ID_TEST_RELOAD_PLUGINS_AND_PAGES, ID_TEST_GET_BROWSER_PROPERTY, ID_TEST_SET_BROWSER_PROPERTY, + ID_REMEMBER, + ID_GET_REMEMBERED_OBJECT, + ID_GET_AND_FORGET_REMEMBERED_OBJECT, + ID_REF_COUNT, + ID_SET_STATUS, NUM_METHOD_IDENTIFIERS }; @@ -205,7 +210,12 @@ static const NPUTF8 *pluginMethodIdentifierNames[NUM_METHOD_IDENTIFIERS] = { "reloadPluginsNoPages", "reloadPluginsAndPages", "testGetBrowserProperty", - "testSetBrowserProperty" + "testSetBrowserProperty", + "remember", + "getRememberedObject", + "getAndForgetRememberedObject", + "refCount", + "setStatus" }; static NPUTF8* createCStringFromNPVariant(const NPVariant* variant) @@ -747,6 +757,22 @@ bool testWindowOpen(NPP npp) return false; } +static bool testSetStatus(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + char* message = 0; + if (argCount && NPVARIANT_IS_STRING(args[0])) { + NPString statusString = NPVARIANT_TO_STRING(args[0]); + message = toCString(statusString); + } + + browser->status(obj->npp, message); + + free(message); + return true; +} + +static NPObject* rememberedObject; + static bool pluginInvoke(NPObject* header, NPIdentifier name, const NPVariant* args, uint32_t argCount, NPVariant* result) { PluginObject* plugin = reinterpret_cast<PluginObject*>(header); @@ -807,7 +833,29 @@ static bool pluginInvoke(NPObject* header, NPIdentifier name, const NPVariant* a } else if (name == pluginMethodIdentifiers[ID_TEST_SET_BROWSER_PROPERTY]) { browser->setproperty(plugin->npp, NPVARIANT_TO_OBJECT(args[0]), stringVariantToIdentifier(args[1]), &args[2]); return true; - } + } else if (name == pluginMethodIdentifiers[ID_REMEMBER]) { + if (rememberedObject) + browser->releaseobject(rememberedObject); + rememberedObject = NPVARIANT_TO_OBJECT(args[0]); + browser->retainobject(rememberedObject); + VOID_TO_NPVARIANT(*result); + return true; + } else if (name == pluginMethodIdentifiers[ID_GET_REMEMBERED_OBJECT]) { + assert(rememberedObject); + browser->retainobject(rememberedObject); + OBJECT_TO_NPVARIANT(rememberedObject, *result); + return true; + } else if (name == pluginMethodIdentifiers[ID_GET_AND_FORGET_REMEMBERED_OBJECT]) { + assert(rememberedObject); + OBJECT_TO_NPVARIANT(rememberedObject, *result); + rememberedObject = 0; + return true; + } else if (name == pluginMethodIdentifiers[ID_REF_COUNT]) { + uint32_t refCount = NPVARIANT_TO_OBJECT(args[0])->referenceCount; + INT32_TO_NPVARIANT(refCount, *result); + return true; + } else if (name == pluginMethodIdentifiers[ID_SET_STATUS]) + return testSetStatus(plugin, args, argCount, result); return false; } |