--- 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 <CUserAgent.h>
+#include <cuseragent.h>
#include <Element.h>
#include <HTMLPlugInElement.h>
#include <HTMLNames.h>
@@ -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<WebCore::HTMLPlugInElement*>(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<TPoint*>(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<TPoint*>(&position);
+ }
+ else {
+ cursorPos = static_cast<TPoint*>(aSetValue);
+ }
+ pluginWin->pluginDeactivate(*cursorPos);
}
}
break;