зеркало из https://github.com/mozilla/gecko-dev.git
Clean up a bunch of things in nsNPAPIPlugin. b=543339
This commit is contained in:
Родитель
bd5f0b64ba
Коммит
c1b32a0fc9
|
@ -83,9 +83,6 @@ typedef NS_NPAPIPLUGIN_CALLBACK(NPError, NP_GETENTRYPOINTS) (NPPluginFuncs* pCal
|
|||
typedef NS_NPAPIPLUGIN_CALLBACK(NPError, NP_PLUGININIT) (const NPNetscapeFuncs* pCallbacks);
|
||||
typedef NS_NPAPIPLUGIN_CALLBACK(NPError, NP_PLUGINUNIXINIT) (const NPNetscapeFuncs* pCallbacks, NPPluginFuncs* fCallbacks);
|
||||
typedef NS_NPAPIPLUGIN_CALLBACK(NPError, NP_PLUGINSHUTDOWN) (void);
|
||||
#ifdef XP_MACOSX
|
||||
typedef NS_NPAPIPLUGIN_CALLBACK(NPError, NP_MAIN) (NPNetscapeFuncs* nCallbacks, NPPluginFuncs* pCallbacks, NPP_ShutdownProcPtr* unloadProcPtr);
|
||||
#endif
|
||||
|
||||
namespace mozilla {
|
||||
namespace plugins {
|
||||
|
|
|
@ -109,6 +109,7 @@ using mozilla::PluginPRLibrary;
|
|||
using mozilla::plugins::PluginModuleParent;
|
||||
#endif
|
||||
|
||||
static NPNetscapeFuncs sBrowserFuncs;
|
||||
static PRLock *sPluginThreadAsyncCallLock = nsnull;
|
||||
static PRCList sPendingAsyncCalls = PR_INIT_STATIC_CLIST(&sPendingAsyncCalls);
|
||||
|
||||
|
@ -142,10 +143,8 @@ void NS_NotifyPluginCall(PRIntervalTime startTime)
|
|||
runTime);
|
||||
}
|
||||
|
||||
NPNetscapeFuncs nsNPAPIPlugin::CALLBACKS;
|
||||
|
||||
void
|
||||
nsNPAPIPlugin::CheckClassInitialized(void)
|
||||
nsNPAPIPlugin::CheckClassInitialized()
|
||||
{
|
||||
static PRBool initialized = PR_FALSE;
|
||||
|
||||
|
@ -153,62 +152,60 @@ nsNPAPIPlugin::CheckClassInitialized(void)
|
|||
return;
|
||||
|
||||
// XXX It'd be nice to make this const and initialize it statically...
|
||||
CALLBACKS.size = sizeof(CALLBACKS);
|
||||
CALLBACKS.version = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR;
|
||||
CALLBACKS.geturl = ((NPN_GetURLProcPtr)_geturl);
|
||||
CALLBACKS.posturl = ((NPN_PostURLProcPtr)_posturl);
|
||||
CALLBACKS.requestread = ((NPN_RequestReadProcPtr)_requestread);
|
||||
CALLBACKS.newstream = ((NPN_NewStreamProcPtr)_newstream);
|
||||
CALLBACKS.write = ((NPN_WriteProcPtr)_write);
|
||||
CALLBACKS.destroystream = ((NPN_DestroyStreamProcPtr)_destroystream);
|
||||
CALLBACKS.status = ((NPN_StatusProcPtr)_status);
|
||||
CALLBACKS.uagent = ((NPN_UserAgentProcPtr)_useragent);
|
||||
CALLBACKS.memalloc = ((NPN_MemAllocProcPtr)_memalloc);
|
||||
CALLBACKS.memfree = ((NPN_MemFreeProcPtr)_memfree);
|
||||
CALLBACKS.memflush = ((NPN_MemFlushProcPtr)_memflush);
|
||||
CALLBACKS.reloadplugins = ((NPN_ReloadPluginsProcPtr)_reloadplugins);
|
||||
|
||||
// Deprecated API callbacks.
|
||||
CALLBACKS.getJavaEnv = ((NPN_GetJavaEnvProcPtr)_getJavaEnv);
|
||||
CALLBACKS.getJavaPeer = ((NPN_GetJavaPeerProcPtr)_getJavaPeer);
|
||||
CALLBACKS.geturlnotify = ((NPN_GetURLNotifyProcPtr)_geturlnotify);
|
||||
CALLBACKS.posturlnotify = ((NPN_PostURLNotifyProcPtr)_posturlnotify);
|
||||
CALLBACKS.getvalue = ((NPN_GetValueProcPtr)_getvalue);
|
||||
CALLBACKS.setvalue = ((NPN_SetValueProcPtr)_setvalue);
|
||||
CALLBACKS.invalidaterect = ((NPN_InvalidateRectProcPtr)_invalidaterect);
|
||||
CALLBACKS.invalidateregion = ((NPN_InvalidateRegionProcPtr)_invalidateregion);
|
||||
CALLBACKS.forceredraw = ((NPN_ForceRedrawProcPtr)_forceredraw);
|
||||
CALLBACKS.getstringidentifier = ((NPN_GetStringIdentifierProcPtr)_getstringidentifier);
|
||||
CALLBACKS.getstringidentifiers = ((NPN_GetStringIdentifiersProcPtr)_getstringidentifiers);
|
||||
CALLBACKS.getintidentifier = ((NPN_GetIntIdentifierProcPtr)_getintidentifier);
|
||||
CALLBACKS.identifierisstring = ((NPN_IdentifierIsStringProcPtr)_identifierisstring);
|
||||
CALLBACKS.utf8fromidentifier = ((NPN_UTF8FromIdentifierProcPtr)_utf8fromidentifier);
|
||||
CALLBACKS.intfromidentifier = ((NPN_IntFromIdentifierProcPtr)_intfromidentifier);
|
||||
CALLBACKS.createobject = ((NPN_CreateObjectProcPtr)_createobject);
|
||||
CALLBACKS.retainobject = ((NPN_RetainObjectProcPtr)_retainobject);
|
||||
CALLBACKS.releaseobject = ((NPN_ReleaseObjectProcPtr)_releaseobject);
|
||||
CALLBACKS.invoke = ((NPN_InvokeProcPtr)_invoke);
|
||||
CALLBACKS.invokeDefault = ((NPN_InvokeDefaultProcPtr)_invokeDefault);
|
||||
CALLBACKS.evaluate = ((NPN_EvaluateProcPtr)_evaluate);
|
||||
CALLBACKS.getproperty = ((NPN_GetPropertyProcPtr)_getproperty);
|
||||
CALLBACKS.setproperty = ((NPN_SetPropertyProcPtr)_setproperty);
|
||||
CALLBACKS.removeproperty = ((NPN_RemovePropertyProcPtr)_removeproperty);
|
||||
CALLBACKS.hasproperty = ((NPN_HasPropertyProcPtr)_hasproperty);
|
||||
CALLBACKS.hasmethod = ((NPN_HasMethodProcPtr)_hasmethod);
|
||||
CALLBACKS.enumerate = ((NPN_EnumerateProcPtr)_enumerate);
|
||||
CALLBACKS.construct = ((NPN_ConstructProcPtr)_construct);
|
||||
CALLBACKS.releasevariantvalue = ((NPN_ReleaseVariantValueProcPtr)_releasevariantvalue);
|
||||
CALLBACKS.setexception = ((NPN_SetExceptionProcPtr)_setexception);
|
||||
CALLBACKS.pushpopupsenabledstate = ((NPN_PushPopupsEnabledStateProcPtr)_pushpopupsenabledstate);
|
||||
CALLBACKS.poppopupsenabledstate = ((NPN_PopPopupsEnabledStateProcPtr)_poppopupsenabledstate);
|
||||
CALLBACKS.pluginthreadasynccall = ((NPN_PluginThreadAsyncCallProcPtr)_pluginthreadasynccall);
|
||||
CALLBACKS.getvalueforurl = ((NPN_GetValueForURLPtr)_getvalueforurl);
|
||||
CALLBACKS.setvalueforurl = ((NPN_SetValueForURLPtr)_setvalueforurl);
|
||||
CALLBACKS.getauthenticationinfo = ((NPN_GetAuthenticationInfoPtr)_getauthenticationinfo);
|
||||
CALLBACKS.scheduletimer = ((NPN_ScheduleTimerPtr)_scheduletimer);
|
||||
CALLBACKS.unscheduletimer = ((NPN_UnscheduleTimerPtr)_unscheduletimer);
|
||||
CALLBACKS.popupcontextmenu = ((NPN_PopUpContextMenuPtr)_popupcontextmenu);
|
||||
CALLBACKS.convertpoint = ((NPN_ConvertPointPtr)_convertpoint);
|
||||
sBrowserFuncs.size = sizeof(sBrowserFuncs);
|
||||
sBrowserFuncs.version = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR;
|
||||
sBrowserFuncs.geturl = ((NPN_GetURLProcPtr)_geturl);
|
||||
sBrowserFuncs.posturl = ((NPN_PostURLProcPtr)_posturl);
|
||||
sBrowserFuncs.requestread = ((NPN_RequestReadProcPtr)_requestread);
|
||||
sBrowserFuncs.newstream = ((NPN_NewStreamProcPtr)_newstream);
|
||||
sBrowserFuncs.write = ((NPN_WriteProcPtr)_write);
|
||||
sBrowserFuncs.destroystream = ((NPN_DestroyStreamProcPtr)_destroystream);
|
||||
sBrowserFuncs.status = ((NPN_StatusProcPtr)_status);
|
||||
sBrowserFuncs.uagent = ((NPN_UserAgentProcPtr)_useragent);
|
||||
sBrowserFuncs.memalloc = ((NPN_MemAllocProcPtr)_memalloc);
|
||||
sBrowserFuncs.memfree = ((NPN_MemFreeProcPtr)_memfree);
|
||||
sBrowserFuncs.memflush = ((NPN_MemFlushProcPtr)_memflush);
|
||||
sBrowserFuncs.reloadplugins = ((NPN_ReloadPluginsProcPtr)_reloadplugins);
|
||||
sBrowserFuncs.getJavaEnv = ((NPN_GetJavaEnvProcPtr)_getJavaEnv);
|
||||
sBrowserFuncs.getJavaPeer = ((NPN_GetJavaPeerProcPtr)_getJavaPeer);
|
||||
sBrowserFuncs.geturlnotify = ((NPN_GetURLNotifyProcPtr)_geturlnotify);
|
||||
sBrowserFuncs.posturlnotify = ((NPN_PostURLNotifyProcPtr)_posturlnotify);
|
||||
sBrowserFuncs.getvalue = ((NPN_GetValueProcPtr)_getvalue);
|
||||
sBrowserFuncs.setvalue = ((NPN_SetValueProcPtr)_setvalue);
|
||||
sBrowserFuncs.invalidaterect = ((NPN_InvalidateRectProcPtr)_invalidaterect);
|
||||
sBrowserFuncs.invalidateregion = ((NPN_InvalidateRegionProcPtr)_invalidateregion);
|
||||
sBrowserFuncs.forceredraw = ((NPN_ForceRedrawProcPtr)_forceredraw);
|
||||
sBrowserFuncs.getstringidentifier = ((NPN_GetStringIdentifierProcPtr)_getstringidentifier);
|
||||
sBrowserFuncs.getstringidentifiers = ((NPN_GetStringIdentifiersProcPtr)_getstringidentifiers);
|
||||
sBrowserFuncs.getintidentifier = ((NPN_GetIntIdentifierProcPtr)_getintidentifier);
|
||||
sBrowserFuncs.identifierisstring = ((NPN_IdentifierIsStringProcPtr)_identifierisstring);
|
||||
sBrowserFuncs.utf8fromidentifier = ((NPN_UTF8FromIdentifierProcPtr)_utf8fromidentifier);
|
||||
sBrowserFuncs.intfromidentifier = ((NPN_IntFromIdentifierProcPtr)_intfromidentifier);
|
||||
sBrowserFuncs.createobject = ((NPN_CreateObjectProcPtr)_createobject);
|
||||
sBrowserFuncs.retainobject = ((NPN_RetainObjectProcPtr)_retainobject);
|
||||
sBrowserFuncs.releaseobject = ((NPN_ReleaseObjectProcPtr)_releaseobject);
|
||||
sBrowserFuncs.invoke = ((NPN_InvokeProcPtr)_invoke);
|
||||
sBrowserFuncs.invokeDefault = ((NPN_InvokeDefaultProcPtr)_invokeDefault);
|
||||
sBrowserFuncs.evaluate = ((NPN_EvaluateProcPtr)_evaluate);
|
||||
sBrowserFuncs.getproperty = ((NPN_GetPropertyProcPtr)_getproperty);
|
||||
sBrowserFuncs.setproperty = ((NPN_SetPropertyProcPtr)_setproperty);
|
||||
sBrowserFuncs.removeproperty = ((NPN_RemovePropertyProcPtr)_removeproperty);
|
||||
sBrowserFuncs.hasproperty = ((NPN_HasPropertyProcPtr)_hasproperty);
|
||||
sBrowserFuncs.hasmethod = ((NPN_HasMethodProcPtr)_hasmethod);
|
||||
sBrowserFuncs.enumerate = ((NPN_EnumerateProcPtr)_enumerate);
|
||||
sBrowserFuncs.construct = ((NPN_ConstructProcPtr)_construct);
|
||||
sBrowserFuncs.releasevariantvalue = ((NPN_ReleaseVariantValueProcPtr)_releasevariantvalue);
|
||||
sBrowserFuncs.setexception = ((NPN_SetExceptionProcPtr)_setexception);
|
||||
sBrowserFuncs.pushpopupsenabledstate = ((NPN_PushPopupsEnabledStateProcPtr)_pushpopupsenabledstate);
|
||||
sBrowserFuncs.poppopupsenabledstate = ((NPN_PopPopupsEnabledStateProcPtr)_poppopupsenabledstate);
|
||||
sBrowserFuncs.pluginthreadasynccall = ((NPN_PluginThreadAsyncCallProcPtr)_pluginthreadasynccall);
|
||||
sBrowserFuncs.getvalueforurl = ((NPN_GetValueForURLPtr)_getvalueforurl);
|
||||
sBrowserFuncs.setvalueforurl = ((NPN_SetValueForURLPtr)_setvalueforurl);
|
||||
sBrowserFuncs.getauthenticationinfo = ((NPN_GetAuthenticationInfoPtr)_getauthenticationinfo);
|
||||
sBrowserFuncs.scheduletimer = ((NPN_ScheduleTimerPtr)_scheduletimer);
|
||||
sBrowserFuncs.unscheduletimer = ((NPN_UnscheduleTimerPtr)_unscheduletimer);
|
||||
sBrowserFuncs.popupcontextmenu = ((NPN_PopUpContextMenuPtr)_popupcontextmenu);
|
||||
sBrowserFuncs.convertpoint = ((NPN_ConvertPointPtr)_convertpoint);
|
||||
|
||||
if (!sPluginThreadAsyncCallLock)
|
||||
sPluginThreadAsyncCallLock = nsAutoLock::NewLock("sPluginThreadAsyncCallLock");
|
||||
|
@ -223,22 +220,23 @@ NS_IMPL_ISUPPORTS1(nsNPAPIPlugin, nsIPlugin)
|
|||
nsNPAPIPlugin::nsNPAPIPlugin(NPPluginFuncs* callbacks,
|
||||
PluginLibrary* aLibrary)
|
||||
{
|
||||
memset((void*) &fCallbacks, 0, sizeof(fCallbacks));
|
||||
memset((void*) &mPluginFuncs, 0, sizeof(mPluginFuncs));
|
||||
|
||||
fCallbacks.size = sizeof(fCallbacks);
|
||||
fLibrary = nsnull;
|
||||
mPluginFuncs.size = sizeof(mPluginFuncs);
|
||||
mLibrary = nsnull;
|
||||
mIsDefaultPlugin = PR_FALSE;
|
||||
|
||||
#if defined(XP_WIN) || defined(XP_OS2)
|
||||
// On Windows (and Mac) we need to keep a direct reference to the
|
||||
// fCallbacks and NOT just copy the struct. See Bugzilla 85334
|
||||
// On Windows and OS/2 we need to keep a direct reference to
|
||||
// the plugin's function struct, we can't just copy it. See
|
||||
// Mozilla bug 85334.
|
||||
|
||||
NPError gepError;
|
||||
nsresult gepResult = aLibrary->NP_GetEntryPoints(&fCallbacks, &gepError);
|
||||
nsresult gepResult = aLibrary->NP_GetEntryPoints(&mPluginFuncs, &gepError);
|
||||
if (gepResult != NS_OK || gepError != NPERR_NO_ERROR)
|
||||
return;
|
||||
|
||||
NS_ASSERTION(HIBYTE(fCallbacks.version) >= NP_VERSION_MAJOR,
|
||||
NS_ASSERTION(HIBYTE(mPluginFuncs.version) >= NP_VERSION_MAJOR,
|
||||
"callback version is less than NP version");
|
||||
|
||||
#elif defined(XP_MACOSX)
|
||||
|
@ -254,7 +252,7 @@ nsNPAPIPlugin::nsNPAPIPlugin(NPPluginFuncs* callbacks,
|
|||
// we call NP_Initialize before getting function pointers to match
|
||||
// WebKit's behavior. They implemented this first on Mac OS X.
|
||||
NPError initError;
|
||||
nsresult initResult = aLibrary->NP_Initialize(&(nsNPAPIPlugin::CALLBACKS), &initError);
|
||||
nsresult initResult = aLibrary->NP_Initialize(&(sBrowserFuncs), &initError);
|
||||
if (initResult != NS_OK || initError != NPERR_NO_ERROR)
|
||||
return;
|
||||
NPError gepError;
|
||||
|
@ -262,34 +260,34 @@ nsNPAPIPlugin::nsNPAPIPlugin(NPPluginFuncs* callbacks,
|
|||
if (gepResult != NS_OK || gepError != NPERR_NO_ERROR)
|
||||
return;
|
||||
|
||||
fCallbacks.version = np_callbacks.version;
|
||||
fCallbacks.newp = (NPP_NewProcPtr)np_callbacks.newp;
|
||||
fCallbacks.destroy = (NPP_DestroyProcPtr)np_callbacks.destroy;
|
||||
fCallbacks.setwindow = (NPP_SetWindowProcPtr)np_callbacks.setwindow;
|
||||
fCallbacks.newstream = (NPP_NewStreamProcPtr)np_callbacks.newstream;
|
||||
fCallbacks.destroystream = (NPP_DestroyStreamProcPtr)np_callbacks.destroystream;
|
||||
fCallbacks.asfile = (NPP_StreamAsFileProcPtr)np_callbacks.asfile;
|
||||
fCallbacks.writeready = (NPP_WriteReadyProcPtr)np_callbacks.writeready;
|
||||
fCallbacks.write = (NPP_WriteProcPtr)np_callbacks.write;
|
||||
fCallbacks.print = (NPP_PrintProcPtr)np_callbacks.print;
|
||||
fCallbacks.event = (NPP_HandleEventProcPtr)np_callbacks.event;
|
||||
fCallbacks.urlnotify = (NPP_URLNotifyProcPtr)np_callbacks.urlnotify;
|
||||
fCallbacks.getvalue = (NPP_GetValueProcPtr)np_callbacks.getvalue;
|
||||
fCallbacks.setvalue = (NPP_SetValueProcPtr)np_callbacks.setvalue;
|
||||
mPluginFuncs.version = np_callbacks.version;
|
||||
mPluginFuncs.newp = (NPP_NewProcPtr)np_callbacks.newp;
|
||||
mPluginFuncs.destroy = (NPP_DestroyProcPtr)np_callbacks.destroy;
|
||||
mPluginFuncs.setwindow = (NPP_SetWindowProcPtr)np_callbacks.setwindow;
|
||||
mPluginFuncs.newstream = (NPP_NewStreamProcPtr)np_callbacks.newstream;
|
||||
mPluginFuncs.destroystream = (NPP_DestroyStreamProcPtr)np_callbacks.destroystream;
|
||||
mPluginFuncs.asfile = (NPP_StreamAsFileProcPtr)np_callbacks.asfile;
|
||||
mPluginFuncs.writeready = (NPP_WriteReadyProcPtr)np_callbacks.writeready;
|
||||
mPluginFuncs.write = (NPP_WriteProcPtr)np_callbacks.write;
|
||||
mPluginFuncs.print = (NPP_PrintProcPtr)np_callbacks.print;
|
||||
mPluginFuncs.event = (NPP_HandleEventProcPtr)np_callbacks.event;
|
||||
mPluginFuncs.urlnotify = (NPP_URLNotifyProcPtr)np_callbacks.urlnotify;
|
||||
mPluginFuncs.getvalue = (NPP_GetValueProcPtr)np_callbacks.getvalue;
|
||||
mPluginFuncs.setvalue = (NPP_SetValueProcPtr)np_callbacks.setvalue;
|
||||
#else // for everyone else
|
||||
memcpy((void*) &fCallbacks, (void*) callbacks, sizeof(fCallbacks));
|
||||
memcpy((void*) &mPluginFuncs, (void*) callbacks, sizeof(mPluginFuncs));
|
||||
#endif
|
||||
|
||||
fLibrary = aLibrary;
|
||||
fLibrary->SetPlugin(this);
|
||||
mLibrary = aLibrary;
|
||||
mLibrary->SetPlugin(this);
|
||||
}
|
||||
|
||||
nsNPAPIPlugin::~nsNPAPIPlugin()
|
||||
{
|
||||
// reset the callbacks list
|
||||
memset((void*) &fCallbacks, 0, sizeof(fCallbacks));
|
||||
delete fLibrary;
|
||||
fLibrary = NULL;
|
||||
memset((void*) &mPluginFuncs, 0, sizeof(mPluginFuncs));
|
||||
delete mLibrary;
|
||||
mLibrary = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
@ -297,7 +295,7 @@ nsNPAPIPlugin::~nsNPAPIPlugin()
|
|||
void
|
||||
nsNPAPIPlugin::SetPluginRefNum(short aRefNum)
|
||||
{
|
||||
fPluginRefNum = aRefNum;
|
||||
mPluginRefNum = aRefNum;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -420,14 +418,14 @@ nsNPAPIPlugin::CreatePlugin(const char* aFilePath, PRLibrary* aLibrary,
|
|||
plptr->Initialize();
|
||||
|
||||
NPError initError;
|
||||
nsresult initResult = pluginLib->NP_Initialize(&(nsNPAPIPlugin::CALLBACKS),&callbacks, &initError);
|
||||
nsresult initResult = pluginLib->NP_Initialize(&(sBrowserFuncs),&callbacks, &initError);
|
||||
if (initResult != NS_OK || initError != NPERR_NO_ERROR) {
|
||||
NS_RELEASE(*aResult);
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
// now copy function table back to nsNPAPIPlugin instance
|
||||
memcpy((void*) &(plptr->fCallbacks), (void*)&callbacks, sizeof(callbacks));
|
||||
memcpy((void*) &(plptr->mPluginFuncs), (void*)&callbacks, sizeof(callbacks));
|
||||
#endif
|
||||
|
||||
#ifdef XP_WIN
|
||||
|
@ -452,7 +450,7 @@ nsNPAPIPlugin::CreatePlugin(const char* aFilePath, PRLibrary* aLibrary,
|
|||
}
|
||||
|
||||
NPError initError;
|
||||
nsresult initResult = pluginLib->NP_Initialize(&(nsNPAPIPlugin::CALLBACKS), &initError);
|
||||
nsresult initResult = pluginLib->NP_Initialize(&(sBrowserFuncs), &initError);
|
||||
if (initResult != NS_OK || initError != NPERR_NO_ERROR)
|
||||
return NS_ERROR_FAILURE;
|
||||
#endif
|
||||
|
@ -524,7 +522,7 @@ nsNPAPIPlugin::CreatePlugin(const char* aFilePath, PRLibrary* aLibrary,
|
|||
bChangedDir = TRUE;
|
||||
}
|
||||
|
||||
nsresult rv = pfnInitialize(&(nsNPAPIPlugin::CALLBACKS));
|
||||
nsresult rv = pfnInitialize(&(sBrowserFuncs));
|
||||
|
||||
if (bChangedDisk) {
|
||||
rc= DosSetDefaultDisk(origDiskNum);
|
||||
|
@ -544,14 +542,12 @@ nsNPAPIPlugin::CreatePlugin(const char* aFilePath, PRLibrary* aLibrary,
|
|||
#ifndef __LP64__
|
||||
short appRefNum = ::CurResFile();
|
||||
short pluginRefNum;
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsILocalFile> pluginPath;
|
||||
NS_NewNativeLocalFile(nsDependentCString(aFilePath), PR_TRUE,
|
||||
getter_AddRefs(pluginPath));
|
||||
nsPluginFile pluginFile(pluginPath);
|
||||
|
||||
#ifndef __LP64__
|
||||
pluginRefNum = pluginFile.OpenPluginResource();
|
||||
#endif
|
||||
|
||||
|
@ -610,11 +606,11 @@ nsNPAPIPlugin::CreatePlugin(const char* aFilePath, PRLibrary* aLibrary,
|
|||
if (!pfnInitialize)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
if (pfnInitialize(&(nsNPAPIPlugin::CALLBACKS),&callbacks) != NS_OK)
|
||||
if (pfnInitialize(&(sBrowserFuncs),&callbacks) != NS_OK)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
// now copy function table back to nsNPAPIPlugin instance
|
||||
memcpy((void*) &(plptr->fCallbacks), (void*)&callbacks, sizeof(callbacks));
|
||||
memcpy((void*) &(plptr->mPluginFuncs), (void*)&callbacks, sizeof(callbacks));
|
||||
#endif
|
||||
|
||||
return NS_OK;
|
||||
|
@ -628,7 +624,7 @@ nsNPAPIPlugin::CreatePluginInstance(nsIPluginInstance **aResult)
|
|||
|
||||
*aResult = NULL;
|
||||
|
||||
nsRefPtr<nsNPAPIPluginInstance> inst = new nsNPAPIPluginInstance(this, &fCallbacks, fLibrary);
|
||||
nsRefPtr<nsNPAPIPluginInstance> inst = new nsNPAPIPluginInstance(this, &mPluginFuncs, mLibrary);
|
||||
if (!inst)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
|
@ -638,24 +634,24 @@ nsNPAPIPlugin::CreatePluginInstance(nsIPluginInstance **aResult)
|
|||
}
|
||||
|
||||
nsresult
|
||||
nsNPAPIPlugin::Initialize(void)
|
||||
nsNPAPIPlugin::Initialize()
|
||||
{
|
||||
if (!fLibrary)
|
||||
if (!mLibrary)
|
||||
return NS_ERROR_FAILURE;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsNPAPIPlugin::Shutdown(void)
|
||||
nsNPAPIPlugin::Shutdown()
|
||||
{
|
||||
NPP_PLUGIN_LOG(PLUGIN_LOG_BASIC,
|
||||
("NPP Shutdown to be called: this=%p\n", this));
|
||||
|
||||
NPError shutdownError;
|
||||
fLibrary->NP_Shutdown(&shutdownError);
|
||||
mLibrary->NP_Shutdown(&shutdownError);
|
||||
#ifdef XP_MACOSX
|
||||
if (shutdownError == NS_OK && fPluginRefNum > 0)
|
||||
::CloseResFile(fPluginRefNum);
|
||||
if (shutdownError == NS_OK && mPluginRefNum > 0)
|
||||
::CloseResFile(mPluginRefNum);
|
||||
#endif
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -663,7 +659,7 @@ nsNPAPIPlugin::Shutdown(void)
|
|||
nsresult
|
||||
nsNPAPIPlugin::GetMIMEDescription(const char* *resultingDesc)
|
||||
{
|
||||
nsresult gmdResult = fLibrary->NP_GetMIMEDescription(resultingDesc);
|
||||
nsresult gmdResult = mLibrary->NP_GetMIMEDescription(resultingDesc);
|
||||
if (gmdResult != NS_OK) {
|
||||
return gmdResult;
|
||||
}
|
||||
|
@ -678,7 +674,7 @@ nsNPAPIPlugin::GetValue(NPPVariable variable, void *value)
|
|||
("nsNPAPIPlugin::GetValue called: this=%p, variable=%d\n", this, variable));
|
||||
|
||||
NPError gvError;
|
||||
fLibrary->NP_GetValue(nsnull, variable, value, &gvError);
|
||||
mLibrary->NP_GetValue(nsnull, variable, value, &gvError);
|
||||
|
||||
return gvError;
|
||||
}
|
||||
|
@ -756,7 +752,7 @@ public:
|
|||
~nsNPAPIStreamWrapper();
|
||||
|
||||
void GetStream(nsIOutputStream* &result);
|
||||
NPStream* GetNPStream(void) { return &fNPStream; }
|
||||
NPStream* GetNPStream() { return &fNPStream; }
|
||||
};
|
||||
|
||||
class nsPluginThreadRunnable : public nsRunnable,
|
||||
|
@ -879,7 +875,7 @@ nsNPAPIStreamWrapper::nsNPAPIStreamWrapper(nsIOutputStream* stream)
|
|||
fNPStream.ndata = (void*) this;
|
||||
}
|
||||
|
||||
nsNPAPIStreamWrapper::~nsNPAPIStreamWrapper(void)
|
||||
nsNPAPIStreamWrapper::~nsNPAPIStreamWrapper()
|
||||
{
|
||||
fStream->Close();
|
||||
NS_IF_RELEASE(fStream);
|
||||
|
@ -2399,7 +2395,7 @@ _requestread(NPStream *pstream, NPByteRange *rangeList)
|
|||
|
||||
// Deprecated, only stubbed out
|
||||
void* NP_CALLBACK /* OJI type: JRIEnv* */
|
||||
_getJavaEnv(void)
|
||||
_getJavaEnv()
|
||||
{
|
||||
NPN_PLUGIN_LOG(PLUGIN_LOG_NORMAL, ("NPN_GetJavaEnv\n"));
|
||||
return NULL;
|
||||
|
|
|
@ -68,10 +68,7 @@
|
|||
typedef NS_NPAPIPLUGIN_CALLBACK(NPError, NP_GETENTRYPOINTS) (NPPluginFuncs* pCallbacks);
|
||||
typedef NS_NPAPIPLUGIN_CALLBACK(NPError, NP_PLUGININIT) (const NPNetscapeFuncs* pCallbacks);
|
||||
typedef NS_NPAPIPLUGIN_CALLBACK(NPError, NP_PLUGINUNIXINIT) (const NPNetscapeFuncs* pCallbacks, NPPluginFuncs* fCallbacks);
|
||||
typedef NS_NPAPIPLUGIN_CALLBACK(NPError, NP_PLUGINSHUTDOWN) (void);
|
||||
#ifdef XP_MACOSX
|
||||
typedef NS_NPAPIPLUGIN_CALLBACK(NPError, NP_MAIN) (NPNetscapeFuncs* nCallbacks, NPPluginFuncs* pCallbacks, NPP_ShutdownProcPtr* unloadProcPtr);
|
||||
#endif
|
||||
typedef NS_NPAPIPLUGIN_CALLBACK(NPError, NP_PLUGINSHUTDOWN) ();
|
||||
|
||||
class nsNPAPIPlugin : public nsIPlugin
|
||||
{
|
||||
|
@ -104,21 +101,17 @@ public:
|
|||
PRBool IsDefaultPlugin();
|
||||
|
||||
protected:
|
||||
// Ensures that the static CALLBACKS is properly initialized
|
||||
static void CheckClassInitialized(void);
|
||||
// Ensures that the static browser functions are properly initialized
|
||||
static void CheckClassInitialized();
|
||||
|
||||
#ifdef XP_MACOSX
|
||||
short fPluginRefNum;
|
||||
short mPluginRefNum;
|
||||
#endif
|
||||
|
||||
// The plugin-side callbacks that the browser calls. One set of
|
||||
// plugin callbacks for each plugin.
|
||||
NPPluginFuncs fCallbacks;
|
||||
PluginLibrary* fLibrary;
|
||||
PRLibrary* fPRLibrary;
|
||||
|
||||
// Browser-side callbacks that the plugin calls.
|
||||
static NPNetscapeFuncs CALLBACKS;
|
||||
NPPluginFuncs mPluginFuncs;
|
||||
PluginLibrary* mLibrary;
|
||||
|
||||
PRBool mIsDefaultPlugin;
|
||||
};
|
||||
|
@ -305,7 +298,7 @@ _memalloc (uint32_t size);
|
|||
|
||||
// Deprecated entry points for the old Java plugin.
|
||||
void* NP_CALLBACK /* OJI type: JRIEnv* */
|
||||
_getJavaEnv(void);
|
||||
_getJavaEnv();
|
||||
|
||||
void* NP_CALLBACK /* OJI type: jref */
|
||||
_getJavaPeer(NPP npp);
|
||||
|
|
Загрузка…
Ссылка в новой задаче