Пример #1
0
NPError WINAPI NP_Initialize(NPNetscapeFuncs* pFuncs)
{
  // create the logger
  if(!logger)
  {
    logger = NewLogger();
    if(logger)
    {
      logger->platformInit();
      logger->init();
    }
  }

  if(logger)
    logger->logNS_NP_Initialize();

  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;

  // create entry point manager for real plugins
  epManager = new NPPEntryPointManager();
  if(!epManager)
    return NPERR_GENERIC_ERROR;

  return NPERR_NO_ERROR;
}
Пример #2
0
NPError WINAPI NP_GetEntryPoints(NPPluginFuncs* pFuncs)
{
  // create the logger
  if(!logger)
  {
    logger = NewLogger();
    if(logger)
    {
      logger->platformInit();
      logger->init();
    }
  }

  if(logger)
    logger->logNS_NP_GetEntryPoints();

  if(pFuncs == NULL)
    return NPERR_INVALID_FUNCTABLE_ERROR;

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

  pFuncs->version       = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR;
  pFuncs->newp          = NPP_New;
  pFuncs->destroy       = NPP_Destroy;
  pFuncs->setwindow     = NPP_SetWindow;
  pFuncs->newstream     = NPP_NewStream;
  pFuncs->destroystream = NPP_DestroyStream;
  pFuncs->asfile        = NPP_StreamAsFile;
  pFuncs->writeready    = NPP_WriteReady;
  pFuncs->write         = NPP_Write;
  pFuncs->print         = NPP_Print;
  pFuncs->event         = NPP_HandleEvent;
  pFuncs->urlnotify     = NPP_URLNotify;
  pFuncs->getvalue      = NPP_GetValue;
  pFuncs->setvalue      = NPP_SetValue;
  pFuncs->javaClass     = NULL;

  return NPERR_NO_ERROR;
}
Пример #3
0
NPError WINAPI NP_Initialize(NPNetscapeFuncs* pFuncs)
{
   // DebugBreak();

  // create the logger
  if(!logger)
  {
    logger = NewLogger();
    if(logger)
    {
      logger->platformInit();
      logger->init();
    }
  }

  if(logger)
    logger->logNS_NP_Initialize();

  if(pFuncs == NULL) {
    logger->logMessage("NP_Initialize: NULL functable!\r\n");
    return NPERR_INVALID_FUNCTABLE_ERROR;
  }

  if(HIBYTE(pFuncs->version) > NP_VERSION_MAJOR) {
    logger->logMessage("NP_Initialize: incompatible version!\r\n");
    return NPERR_INCOMPATIBLE_VERSION_ERROR;
  }

  /*
   *
   * Removing this check so that we can work with older versions 
   * of servers (which may provide fewer functions)
   *
  if(pFuncs->size < sizeof NPNetscapeFuncs) {
    logger->logReturn(NPERR_INVALID_FUNCTABLE_ERROR);
    char msg[512];
    sprintf(msg, "functable is %d, expected %d", pFuncs->size, sizeof(NPNetscapeFuncs));
    logger->logMessage(msg);
    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.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;
  NPNFuncs.pushpopupsenabledstate      = pFuncs->pushpopupsenabledstate;
  NPNFuncs.poppopupsenabledstate      = pFuncs->poppopupsenabledstate;
  NPNFuncs.enumerate      = pFuncs->enumerate;

  // create entry point manager for real plugins
  epManager = new NPPEntryPointManager();
  if(!epManager) {
    logger->logMessage("NP_Initialize: could not create EntryPointManager\r\n");
    return NPERR_GENERIC_ERROR;
  }

  logger->logMessage("NP_Initialize: success\r\n");
  return NPERR_NO_ERROR;
}