From e458d70a0d18538346f41b503114c9ebe6b2ce12 Mon Sep 17 00:00:00 2001 From: Leon Clarke Date: Thu, 15 Jul 2010 12:03:35 +0100 Subject: Merge WebKit at r63173 : Initial merge by git. Change-Id: Ife5af0c7c6261fbbc8ae6bc08c390efa9ef10b44 --- .../unix/TestNetscapePlugin/TestNetscapePlugin.cpp | 41 +++++++++++++++++----- 1 file changed, 33 insertions(+), 8 deletions(-) (limited to 'WebKitTools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp') diff --git a/WebKitTools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp b/WebKitTools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp index e960a06..ca868be 100644 --- a/WebKitTools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp +++ b/WebKitTools/DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp @@ -175,7 +175,7 @@ webkit_test_plugin_new_stream(NPP instance, { PluginObject* obj = static_cast(instance->pdata); obj->stream = stream; - *stype = NP_ASFILEONLY; + *stype = NP_NORMAL; if (obj->returnErrorFromNewStream) return NPERR_GENERIC_ERROR; @@ -190,12 +190,32 @@ webkit_test_plugin_new_stream(NPP instance, } static NPError -webkit_test_plugin_destroy_stream(NPP instance, NPStream* /*stream*/, NPError /*reason*/) +webkit_test_plugin_destroy_stream(NPP instance, NPStream* /*stream*/, NPError reason) { PluginObject* obj = (PluginObject*)instance->pdata; - if (obj->onStreamDestroy) - executeScript(obj, obj->onStreamDestroy); + if (obj->onStreamDestroy) { + NPObject* windowObject = 0; + NPError error = browser->getvalue(instance, NPNVWindowNPObject, &windowObject); + + if (error == NPERR_NO_ERROR) { + NPVariant onStreamDestroyVariant; + if (browser->getproperty(instance, windowObject, browser->getstringidentifier(obj->onStreamDestroy), &onStreamDestroyVariant)) { + if (NPVARIANT_IS_OBJECT(onStreamDestroyVariant)) { + NPObject* onStreamDestroyFunction = NPVARIANT_TO_OBJECT(onStreamDestroyVariant); + + NPVariant reasonVariant; + INT32_TO_NPVARIANT(reason, reasonVariant); + + NPVariant result; + browser->invokeDefault(instance, onStreamDestroyFunction, &reasonVariant, 1, &result); + browser->releasevariantvalue(&result); + } + browser->releasevariantvalue(&onStreamDestroyVariant); + } + browser->releaseobject(windowObject); + } + } if (obj->testDocumentOpenInDestroyStream) { testDocumentOpen(instance); @@ -213,17 +233,22 @@ webkit_test_plugin_stream_as_file(NPP /*instance*/, NPStream* /*stream*/, const static int32_t webkit_test_plugin_write_ready(NPP /*instance*/, NPStream* /*stream*/) { - return 0; + return 4096; } static int32_t -webkit_test_plugin_write(NPP /*instance*/, +webkit_test_plugin_write(NPP instance, NPStream* /*stream*/, int32_t /*offset*/, - int32_t /*len*/, + int32_t len, void* /*buffer*/) { - return 0; + PluginObject* obj = (PluginObject*)instance->pdata; + + if (obj->returnNegativeOneFromWrite) + return -1; + + return len; } static void -- cgit v1.1