diff -r 79859ed3eea9 -r 919f36ff910f webengine/osswebengine/WebKit/s60/plugins/NpnImplementation.cpp --- a/webengine/osswebengine/WebKit/s60/plugins/NpnImplementation.cpp Tue Aug 31 16:17:46 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/NpnImplementation.cpp Wed Sep 01 12:28:30 2010 +0100 @@ -21,7 +21,7 @@ #include "NpnImplementation.h" #include "PluginWin.h" #include "PluginSkin.h" -#include +#include #include #include #include @@ -332,13 +332,13 @@ case NPNVPluginElementNPObject: { PluginWin* pluginWin = (PluginWin*)aInstance->ndata; - WebCore::Element* pluginElement; + WebCore::Element* pluginElement = NULL; if (pluginWin) { pluginElement = pluginWin->pluginSkin()->getElement(); } NPObject* pluginScriptObject = 0; - if (pluginElement->hasTagName(appletTag) || pluginElement->hasTagName(embedTag) || pluginElement->hasTagName(objectTag)) + if (pluginElement && (pluginElement->hasTagName(appletTag) || pluginElement->hasTagName(embedTag) || pluginElement->hasTagName(objectTag))) pluginScriptObject = static_cast(pluginElement)->getNPObject(); if (pluginScriptObject) @@ -369,13 +369,14 @@ case NPNVisOfflineBool: // Tells whether offline mode is enabled; // true=offline mode enabled, false=not enabled - case NPNNetworkAccess: + case NPNNetworkAccess: { PluginWin* pluginWin = (PluginWin*)aInstance->ndata; TInt apId = -1; if (pluginWin) { apId = pluginWin->pluginSkin()->handleNetworkAccess(); } *((TInt*) aRetValue) = apId; + } break; case NPNVGenericParameter: { @@ -477,12 +478,40 @@ } break; } + case NPPVPluginBitmap : + { + PluginWin* pluginWin = (PluginWin*)aInstance->ndata; + if (pluginWin) { + TInt* bitMapHandle = (TInt*)aSetValue; + if (*bitMapHandle) { + TInt handle = *bitMapHandle; + pluginWin->SetBitmapFromPlugin(handle); + } + else + { + pluginWin->SetBitmapFromPlugin(KErrNone); + } + } + } + break; case NPPVPluginDeactivate: { PluginWin* pluginWin = (PluginWin*)aInstance->ndata; if (pluginWin) { - TPoint* cursorPos = static_cast(aSetValue); - pluginWin->pluginDeactivate(*cursorPos); + TPoint* cursorPos; + + //EPMR-7XPHXV aSetValue is set as "(void*) 1" from + //"CBrowserPluginControl::GoNormalScreenL" from the flash plugin + //to avoid the Invalid pointer access, we are checking for + //aSetValue and setting point as (0,0) and also for NULL Value + if((aSetValue == (void*)1) || (!aSetValue)) { + TPoint position(0,0); + cursorPos = static_cast(&position); + } + else { + cursorPos = static_cast(aSetValue); + } + pluginWin->pluginDeactivate(*cursorPos); } } break;