Back to index

lightning-sunbird  0.9+nobinonly
Defines | Functions | Variables
npmac.cpp File Reference
#include <Processes.h>
#include <Gestalt.h>
#include <CodeFragments.h>
#include <Timer.h>
#include <Resources.h>
#include <ToolUtils.h>
#include <A4Stuff.h>
#include "jri.h"
#include "npapi.h"
#include "npupp.h"

Go to the source code of this file.

Defines

#define XP_MAC   1
#define NDEBUG   1
#define PLUGIN_TRACE   0
#define PLUGINDEBUGSTR
#define DEBUG_MEMORY   0

Functions

void NPN_Version (int *plugin_major, int *plugin_minor, int *netscape_major, int *netscape_minor)
NPError NPN_GetURLNotify (NPP instance, const char *url, const char *window, void *notifyData)
NPError NPN_GetURL (NPP instance, const char *url, const char *window)
NPError NPN_PostURLNotify (NPP instance, const char *url, const char *window, uint32 len, const char *buf, NPBool file, void *notifyData)
NPError NPN_PostURL (NPP instance, const char *url, const char *window, uint32 len, const char *buf, NPBool file)
NPError NPN_RequestRead (NPStream *stream, NPByteRange *rangeList)
NPError NPN_NewStream (NPP instance, NPMIMEType type, const char *window, NPStream **stream)
int32 NPN_Write (NPP instance, NPStream *stream, int32 len, void *buffer)
NPError NPN_DestroyStream (NPP instance, NPStream *stream, NPError reason)
void NPN_Status (NPP instance, const char *message)
const char * NPN_UserAgent (NPP instance)
voidNPN_MemAlloc (uint32 size)
void NPN_MemFree (void *ptr)
uint32 NPN_MemFlush (uint32 size)
void NPN_ReloadPlugins (NPBool reloadPages)
JRIEnvNPN_GetJavaEnv (void)
jref NPN_GetJavaPeer (NPP instance)
NPError NPN_GetValue (NPP instance, NPNVariable variable, void *value)
NPError NPN_SetValue (NPP instance, NPPVariable variable, void *value)
void NPN_InvalidateRect (NPP instance, NPRect *rect)
void NPN_InvalidateRegion (NPP instance, NPRegion region)
void NPN_ForceRedraw (NPP instance)
NPError Private_Initialize (void)
void Private_Shutdown (void)
NPError Private_New (NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char *argn[], char *argv[], NPSavedData *saved)
NPError Private_Destroy (NPP instance, NPSavedData **save)
NPError Private_SetWindow (NPP instance, NPWindow *window)
NPError Private_NewStream (NPP instance, NPMIMEType type, NPStream *stream, NPBool seekable, uint16 *stype)
NPError Private_DestroyStream (NPP instance, NPStream *stream, NPError reason)
int32 Private_WriteReady (NPP instance, NPStream *stream)
int32 Private_Write (NPP instance, NPStream *stream, int32 offset, int32 len, void *buffer)
void Private_StreamAsFile (NPP instance, NPStream *stream, const char *fname)
void Private_Print (NPP instance, NPPrint *platformPrint)
int16 Private_HandleEvent (NPP instance, void *event)
void Private_URLNotify (NPP instance, const char *url, NPReason reason, void *notifyData)
jref Private_GetJavaClass (void)
void SetUpQD (void)
NPError main (NPNetscapeFuncs *nsTable, NPPluginFuncs *pluginFuncs, NPP_ShutdownUPP *unloadUpp)

Variables

QDGlobals * gQDPtr
short gResFile
NPNetscapeFuncs gNetscapeFuncs

Define Documentation

Definition at line 267 of file npmac.cpp.

#define NDEBUG   1

Definition at line 51 of file npmac.cpp.

Definition at line 119 of file npmac.cpp.

Definition at line 124 of file npmac.cpp.

#define XP_MAC   1

Definition at line 50 of file npmac.cpp.


Function Documentation

NPError main ( NPNetscapeFuncs nsTable,
NPPluginFuncs pluginFuncs,
NPP_ShutdownUPP unloadUpp 
)

Definition at line 622 of file npmac.cpp.

{
       EnterCodeResource();
       PLUGINDEBUGSTR("\pmain");

       NPError err = NPERR_NO_ERROR;
       
       //
       // Ensure that everything Netscape passed us is valid!
       //
       if ((nsTable == NULL) || (pluginFuncs == NULL) || (unloadUpp == NULL))
              err = NPERR_INVALID_FUNCTABLE_ERROR;
       
       //
       // Check the ³major² version passed in Netscapeıs function table.
       // We wonıt load if the major version is newer than what we expect.
       // Also check that the function tables passed in are big enough for
       // all the functions we need (they could be bigger, if Netscape added
       // new APIs, but thatıs OK with us -- weıll just ignore them).
       //
       if (err == NPERR_NO_ERROR)
       {
              if ((nsTable->version >> 8) > NP_VERSION_MAJOR)         // Major version is in high byte
                     err = NPERR_INCOMPATIBLE_VERSION_ERROR;
//            if (nsTable->size < sizeof(NPNetscapeFuncs))
//                   err = NPERR_INVALID_FUNCTABLE_ERROR;
//            if (pluginFuncs->size < sizeof(NPPluginFuncs))          
//                   err = NPERR_INVALID_FUNCTABLE_ERROR;
       }
              
       
       if (err == NPERR_NO_ERROR)
       {
              //
              // Copy all the fields of Netscapeıs function table into our
              // copy so we can call back into Netscape later.  Note that
              // we need to copy the fields one by one, rather than assigning
              // the whole structure, because the Netscape function table
              // could actually be bigger than what we expect.
              //
              
              int navMinorVers = nsTable->version & 0xFF;

              gNetscapeFuncs.version = nsTable->version;
              gNetscapeFuncs.size = nsTable->size;
              gNetscapeFuncs.posturl = nsTable->posturl;
              gNetscapeFuncs.geturl = nsTable->geturl;
              gNetscapeFuncs.requestread = nsTable->requestread;
              gNetscapeFuncs.newstream = nsTable->newstream;
              gNetscapeFuncs.write = nsTable->write;
              gNetscapeFuncs.destroystream = nsTable->destroystream;
              gNetscapeFuncs.status = nsTable->status;
              gNetscapeFuncs.uagent = nsTable->uagent;
              gNetscapeFuncs.memalloc = nsTable->memalloc;
              gNetscapeFuncs.memfree = nsTable->memfree;
              gNetscapeFuncs.memflush = nsTable->memflush;
              gNetscapeFuncs.reloadplugins = nsTable->reloadplugins;
              if( navMinorVers >= NPVERS_HAS_LIVECONNECT )
              {
                     gNetscapeFuncs.getJavaEnv = nsTable->getJavaEnv;
                     gNetscapeFuncs.getJavaPeer = nsTable->getJavaPeer;
              }
              if( navMinorVers >= NPVERS_HAS_NOTIFICATION )
              {      
                     gNetscapeFuncs.geturlnotify = nsTable->geturlnotify;
                     gNetscapeFuncs.posturlnotify = nsTable->posturlnotify;
              }
              gNetscapeFuncs.getvalue = nsTable->getvalue;
              gNetscapeFuncs.setvalue = nsTable->setvalue;
              gNetscapeFuncs.invalidaterect = nsTable->invalidaterect;
              gNetscapeFuncs.invalidateregion = nsTable->invalidateregion;
              gNetscapeFuncs.forceredraw = nsTable->forceredraw;

              // defer static constructors until the global functions are initialized.
              __InitCode__();
              
              //
              // 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();
                     pluginFuncs->getvalue = NewNPP_GetValueProc(Private_GetValue);
                     pluginFuncs->setvalue = NewNPP_SetValueProc(Private_SetValue);
              }
              *unloadUpp = NewNPP_ShutdownProc(Private_Shutdown);
              SetUpQD();
              err = Private_Initialize();
       }
       
       ExitCodeResource();
       return err;
}

Here is the call graph for this function:

NPError NPN_DestroyStream ( NPP  instance,
NPStream stream,
NPError  reason 
)

Definition at line 241 of file npmac.cpp.

{
       int navMinorVers = gNetscapeFuncs.version & 0xFF;
       NPError err;
       
       if( navMinorVers >= NPVERS_HAS_STREAMOUTPUT )
       {
              err = CallNPN_DestroyStreamProc(gNetscapeFuncs.destroystream, instance, stream, reason);
       }
       else
       {
              err = NPERR_INCOMPATIBLE_VERSION_ERROR;
       }
       return err;
}
void NPN_ForceRedraw ( NPP  instance)

Definition at line 328 of file npmac.cpp.

Definition at line 298 of file npmac.cpp.

jref NPN_GetJavaPeer ( NPP  instance)

Definition at line 303 of file npmac.cpp.

NPError NPN_GetURL ( NPP  instance,
const char *  url,
const char *  window 
)

Definition at line 177 of file npmac.cpp.

{
       return CallNPN_GetURLProc(gNetscapeFuncs.geturl, instance, url, window);
}
NPError NPN_GetURLNotify ( NPP  instance,
const char *  url,
const char *  window,
void notifyData 
)

Definition at line 161 of file npmac.cpp.

{
       int navMinorVers = gNetscapeFuncs.version & 0xFF;
       NPError err;
       
       if( navMinorVers >= NPVERS_HAS_NOTIFICATION )
       {
              err = CallNPN_GetURLNotifyProc(gNetscapeFuncs.geturlnotify, instance, url, window, notifyData);
       }
       else
       {
              err = NPERR_INCOMPATIBLE_VERSION_ERROR;
       }
       return err;
}
NPError NPN_GetValue ( NPP  instance,
NPNVariable  variable,
void value 
)

Definition at line 308 of file npmac.cpp.

{
       return CallNPN_GetValueProc( gNetscapeFuncs.getvalue, instance, variable, value);
}
void NPN_InvalidateRect ( NPP  instance,
NPRect rect 
)

Definition at line 318 of file npmac.cpp.

void NPN_InvalidateRegion ( NPP  instance,
NPRegion  region 
)

Definition at line 323 of file npmac.cpp.

void* NPN_MemAlloc ( uint32  size)

Definition at line 269 of file npmac.cpp.

{
#if DEBUG_MEMORY
       return (void*) NewPtrClear(size);
#else
       return CallNPN_MemAllocProc(gNetscapeFuncs.memalloc, size);
#endif
}

Definition at line 287 of file npmac.cpp.

void NPN_MemFree ( void ptr)

Definition at line 278 of file npmac.cpp.

{
#if DEBUG_MEMORY
       DisposePtr(Ptr(ptr));
#else
       CallNPN_MemFreeProc(gNetscapeFuncs.memfree, ptr);
#endif
}
NPError NPN_NewStream ( NPP  instance,
NPMIMEType  type,
const char *  window,
NPStream **  stream 
)

Definition at line 209 of file npmac.cpp.

{
       int navMinorVers = gNetscapeFuncs.version & 0xFF;
       NPError err;
       
       if( navMinorVers >= NPVERS_HAS_STREAMOUTPUT )
       {
              err = CallNPN_NewStreamProc(gNetscapeFuncs.newstream, instance, type, window, stream);
       }
       else
       {
              err = NPERR_INCOMPATIBLE_VERSION_ERROR;
       }
       return err;
}
NPError NPN_PostURL ( NPP  instance,
const char *  url,
const char *  window,
uint32  len,
const char *  buf,
NPBool  file 
)

Definition at line 199 of file npmac.cpp.

{
       return CallNPN_PostURLProc(gNetscapeFuncs.posturl, instance, url, window, len, buf, file);
}
NPError NPN_PostURLNotify ( NPP  instance,
const char *  url,
const char *  window,
uint32  len,
const char *  buf,
NPBool  file,
void notifyData 
)

Definition at line 182 of file npmac.cpp.

{
       int navMinorVers = gNetscapeFuncs.version & 0xFF;
       NPError err;
       
       if( navMinorVers >= NPVERS_HAS_NOTIFICATION )
       {
              err = CallNPN_PostURLNotifyProc(gNetscapeFuncs.posturlnotify, instance, url, 
                                                                                                  window, len, buf, file, notifyData);
       }
       else
       {
              err = NPERR_INCOMPATIBLE_VERSION_ERROR;
       }
       return err;
}
void NPN_ReloadPlugins ( NPBool  reloadPages)

Definition at line 292 of file npmac.cpp.

NPError NPN_RequestRead ( NPStream stream,
NPByteRange rangeList 
)

Definition at line 204 of file npmac.cpp.

{
       return CallNPN_RequestReadProc(gNetscapeFuncs.requestread, stream, rangeList);
}
NPError NPN_SetValue ( NPP  instance,
NPPVariable  variable,
void value 
)

Definition at line 313 of file npmac.cpp.

{
       return CallNPN_SetValueProc( gNetscapeFuncs.setvalue, instance, variable, value);
}
void NPN_Status ( NPP  instance,
const char *  message 
)

Definition at line 257 of file npmac.cpp.

const char* NPN_UserAgent ( NPP  instance)

Definition at line 262 of file npmac.cpp.

void NPN_Version ( int plugin_major,
int plugin_minor,
int netscape_major,
int netscape_minor 
)

Definition at line 153 of file npmac.cpp.

{
       *plugin_major = NP_VERSION_MAJOR;
       *plugin_minor = NP_VERSION_MINOR;
       *netscape_major = gNetscapeFuncs.version >> 8;          // Major version is in high byte
       *netscape_minor = gNetscapeFuncs.version & 0xFF; // Minor version is in low byte
}
int32 NPN_Write ( NPP  instance,
NPStream stream,
int32  len,
void buffer 
)

Definition at line 225 of file npmac.cpp.

{
       int navMinorVers = gNetscapeFuncs.version & 0xFF;
       NPError err;
       
       if( navMinorVers >= NPVERS_HAS_STREAMOUTPUT )
       {
              err = CallNPN_WriteProc(gNetscapeFuncs.write, instance, stream, len, buffer);
       }
       else
       {
              err = NPERR_INCOMPATIBLE_VERSION_ERROR;
       }
       return err;
}
NPError Private_Destroy ( NPP  instance,
NPSavedData **  save 
)
NPError Private_DestroyStream ( NPP  instance,
NPStream stream,
NPError  reason 
)

Definition at line 35 of file npwin.cpp.

{
    jref clazz = NPP_GetJavaClass();
    if (clazz) {
              JRIEnv* env = NPN_GetJavaEnv();
              return JRI_NewGlobalRef(env, clazz);
    }
    return NULL;
}

Here is the call graph for this function:

int16 Private_HandleEvent ( NPP  instance,
void event 
)
NPError Private_New ( NPMIMEType  pluginType,
NPP  instance,
uint16  mode,
int16  argc,
char *  argn[],
char *  argv[],
NPSavedData saved 
)
NPError Private_NewStream ( NPP  instance,
NPMIMEType  type,
NPStream stream,
NPBool  seekable,
uint16 stype 
)
void Private_Print ( NPP  instance,
NPPrint platformPrint 
)
NPError Private_SetWindow ( NPP  instance,
NPWindow window 
)
void Private_StreamAsFile ( NPP  instance,
NPStream stream,
const char *  fname 
)
void Private_URLNotify ( NPP  instance,
const char *  url,
NPReason  reason,
void notifyData 
)
int32 Private_Write ( NPP  instance,
NPStream stream,
int32  offset,
int32  len,
void buffer 
)
int32 Private_WriteReady ( NPP  instance,
NPStream stream 
)
void SetUpQD ( void  )

Variable Documentation

Definition at line 140 of file npmac.cpp.

QDGlobals* gQDPtr

Definition at line 138 of file npmac.cpp.

short gResFile

Definition at line 139 of file npmac.cpp.