예제 #1
0
파일: np_entry.cpp 프로젝트: diocles/gnash
NPError
fillPluginFunctionTable(NPPluginFuncs* aNPPFuncs)
{
    if(aNPPFuncs == NULL) {
        return NPERR_INVALID_FUNCTABLE_ERROR;
    }

    // Set up the plugin function table that Netscape will use to
    // call us. Netscape needs to know about our version and size
    // and have a UniversalProcPointer for every function we implement.

    aNPPFuncs->version       = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR;
#ifdef XP_MAC
    aNPPFuncs->newp          = NewNPP_NewProc(Private_New);
    aNPPFuncs->destroy       = NewNPP_DestroyProc(Private_Destroy);
    aNPPFuncs->setwindow     = NewNPP_SetWindowProc(Private_SetWindow);
    aNPPFuncs->newstream     = NewNPP_NewStreamProc(Private_NewStream);
    aNPPFuncs->destroystream = NewNPP_DestroyStreamProc(Private_DestroyStream);
    aNPPFuncs->asfile        = NewNPP_StreamAsFileProc(Private_StreamAsFile);
    aNPPFuncs->writeready    = NewNPP_WriteReadyProc(Private_WriteReady);
    aNPPFuncs->write         = NewNPP_WriteProc(Private_Write);
    aNPPFuncs->print         = NewNPP_PrintProc(Private_Print);
    aNPPFuncs->event         = NewNPP_HandleEventProc(Private_HandleEvent);
    aNPPFuncs->urlnotify     = NewNPP_URLNotifyProc(Private_URLNotify);
    aNPPFuncs->getvalue      = NewNPP_GetValueProc(Private_GetValue);
    aNPPFuncs->setvalue      = NewNPP_SetValueProc(Private_SetValue);
#else
    aNPPFuncs->newp          = NPP_New;
    aNPPFuncs->destroy       = NPP_Destroy;
    aNPPFuncs->setwindow     = NPP_SetWindow;
    aNPPFuncs->newstream     = NPP_NewStream;
    aNPPFuncs->destroystream = NPP_DestroyStream;
    aNPPFuncs->asfile        = NPP_StreamAsFile;
    aNPPFuncs->writeready    = NPP_WriteReady;
    aNPPFuncs->write         = NPP_Write;
    aNPPFuncs->print         = NPP_Print;
    aNPPFuncs->event         = NPP_HandleEvent;
    aNPPFuncs->urlnotify     = NPP_URLNotify;
    aNPPFuncs->getvalue      = NPP_GetValue;
    aNPPFuncs->setvalue      = NPP_SetValue;
#endif
#ifdef OJI
    aNPPFuncs->javaClass     = NULL;
#endif

    return NPERR_NO_ERROR;
}
예제 #2
0
int main(NPNetscapeFuncs* nsTable, NPPluginFuncs* pluginFuncs, NPP_ShutdownUPP* unloadUpp)
{
	int err=noErr;
	int navMinorVers = nsTable->version & 0xFF;
	
	gRememberOldgNetscapeFuncsForSafariIssue = *nsTable;
	
	gWhere = LoadLibViaPath("NPSqueak.bundle");
	if (gWhere == nil)
		return -1;
		
	GetMain = (void *) ioFindExternalFunctionIn("npmain",(int) gWhere);
	if (GetMain == NULL) 
		GetMain = (void *) ioFindExternalFunctionIn("main",(int) gWhere);
	err = GetMain(nsTable, pluginFuncs, unloadUpp);
	
	//
	// Set up the plugin function table that Netscape will use to
	// call us.  Netscape needs to know about our version and size
	// and have a UniversalProcPointer for every function we implement.
	//

	pluginFuncs->version = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR;
	pluginFuncs->size = sizeof(NPPluginFuncs);
	pluginFuncs->newp = NewNPP_NewProc(Private_New);
	pluginFuncs->destroy = NewNPP_DestroyProc(Private_Destroy);
	pluginFuncs->setwindow = NewNPP_SetWindowProc(Private_SetWindow);
	pluginFuncs->newstream = NewNPP_NewStreamProc(Private_NewStream);
	pluginFuncs->destroystream = NewNPP_DestroyStreamProc(Private_DestroyStream);
	pluginFuncs->asfile = NewNPP_StreamAsFileProc(Private_StreamAsFile);
	pluginFuncs->writeready = NewNPP_WriteReadyProc(Private_WriteReady);
	pluginFuncs->write = NewNPP_WriteProc(Private_Write);
	pluginFuncs->print = NewNPP_PrintProc(Private_Print);
	pluginFuncs->event = NewNPP_HandleEventProc(Private_HandleEvent);	
	if( navMinorVers >= NPVERS_HAS_NOTIFICATION )
	{	
		pluginFuncs->urlnotify = NewNPP_URLNotifyProc(Private_URLNotify);			
	}
	if( navMinorVers >= NPVERS_HAS_LIVECONNECT )
	{
		pluginFuncs->javaClass	= (JRIGlobalRef) Private_GetJavaClass();
	}
	*unloadUpp = NewNPP_ShutdownProc(Private_Shutdown);

	return err;
}
예제 #3
0
NPError OSCALL
NP_Initialize(NPNetscapeFuncs* pFuncs
#ifdef XP_UNIX
              , NPPluginFuncs* pluginFuncs
#endif
              )
{
  if(pFuncs == NULL)
    return NPERR_INVALID_FUNCTABLE_ERROR;

  if(HIBYTE(pFuncs->version) > NP_VERSION_MAJOR)
    return NPERR_INCOMPATIBLE_VERSION_ERROR;

  if(pFuncs->size < sizeof(NPNetscapeFuncs))
    return NPERR_INVALID_FUNCTABLE_ERROR;

  NPNFuncs.size                    = pFuncs->size;
  NPNFuncs.version                 = pFuncs->version;
  NPNFuncs.geturlnotify            = pFuncs->geturlnotify;
  NPNFuncs.geturl                  = pFuncs->geturl;
  NPNFuncs.posturlnotify           = pFuncs->posturlnotify;
  NPNFuncs.posturl                 = pFuncs->posturl;
  NPNFuncs.requestread             = pFuncs->requestread;
  NPNFuncs.newstream               = pFuncs->newstream;
  NPNFuncs.write                   = pFuncs->write;
  NPNFuncs.destroystream           = pFuncs->destroystream;
  NPNFuncs.status                  = pFuncs->status;
  NPNFuncs.uagent                  = pFuncs->uagent;
  NPNFuncs.memalloc                = pFuncs->memalloc;
  NPNFuncs.memfree                 = pFuncs->memfree;
  NPNFuncs.memflush                = pFuncs->memflush;
  NPNFuncs.reloadplugins           = pFuncs->reloadplugins;
  NPNFuncs.getJavaEnv              = pFuncs->getJavaEnv;
  NPNFuncs.getJavaPeer             = pFuncs->getJavaPeer;
  NPNFuncs.getvalue                = pFuncs->getvalue;
  NPNFuncs.setvalue                = pFuncs->setvalue;
  NPNFuncs.invalidaterect          = pFuncs->invalidaterect;
  NPNFuncs.invalidateregion        = pFuncs->invalidateregion;
  NPNFuncs.forceredraw             = pFuncs->forceredraw;
  NPNFuncs.getstringidentifier     = pFuncs->getstringidentifier;
  NPNFuncs.getstringidentifiers    = pFuncs->getstringidentifiers;
  NPNFuncs.getintidentifier        = pFuncs->getintidentifier;
  NPNFuncs.identifierisstring      = pFuncs->identifierisstring;
  NPNFuncs.utf8fromidentifier      = pFuncs->utf8fromidentifier;
  NPNFuncs.intfromidentifier       = pFuncs->intfromidentifier;
  NPNFuncs.createobject            = pFuncs->createobject;
  NPNFuncs.retainobject            = pFuncs->retainobject;
  NPNFuncs.releaseobject           = pFuncs->releaseobject;
  NPNFuncs.invoke                  = pFuncs->invoke;
  NPNFuncs.invokeDefault           = pFuncs->invokeDefault;
  NPNFuncs.evaluate                = pFuncs->evaluate;
  NPNFuncs.getproperty             = pFuncs->getproperty;
  NPNFuncs.setproperty             = pFuncs->setproperty;
  NPNFuncs.removeproperty          = pFuncs->removeproperty;
  NPNFuncs.hasproperty             = pFuncs->hasproperty;
  NPNFuncs.hasmethod               = pFuncs->hasmethod;
  NPNFuncs.releasevariantvalue     = pFuncs->releasevariantvalue;
  NPNFuncs.setexception            = pFuncs->setexception;

#ifdef XP_UNIX
  /*
   * Set up the plugin function table that Netscape will use to
   * call us.  Netscape needs to know about our version and size
   * and have a UniversalProcPointer for every function we
   * implement.
   */
  pluginFuncs->version    = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR;
  pluginFuncs->size       = sizeof(NPPluginFuncs);
  pluginFuncs->newp       = NewNPP_NewProc(NPP_New);
  pluginFuncs->destroy    = NewNPP_DestroyProc(NPP_Destroy);
  pluginFuncs->setwindow  = NewNPP_SetWindowProc(NPP_SetWindow);
  pluginFuncs->newstream  = NewNPP_NewStreamProc(NPP_NewStream);
  pluginFuncs->destroystream = NewNPP_DestroyStreamProc(NPP_DestroyStream);
  pluginFuncs->asfile     = NewNPP_StreamAsFileProc(NPP_StreamAsFile);
  pluginFuncs->writeready = NewNPP_WriteReadyProc(NPP_WriteReady);
  pluginFuncs->write      = NewNPP_WriteProc(NPP_Write);
  pluginFuncs->print      = NewNPP_PrintProc(NPP_Print);
  pluginFuncs->urlnotify  = NewNPP_URLNotifyProc(NPP_URLNotify);
  pluginFuncs->event      = NULL;
  pluginFuncs->getvalue   = NewNPP_GetValueProc(NPP_GetValue);
#ifdef OJI
  pluginFuncs->javaClass  = NPP_GetJavaClass();
#endif

  NPP_Initialize();
#endif

  return NPERR_NO_ERROR;
}