blob: 2794deef0014d305825bc1fa59d2a79e48af5bd3 [file] [log] [blame]
// Copyright 2006 Google Inc. All Rights Reserved.
#ifndef _NPHOSTAPI_H_
#define _NPHOSTAPI_H_
#include "npapi.h"
#include "npruntime.h"
// BEGIN GOOGLE GEARS MODIFICATIONS
#ifndef STDCALL
#ifdef WIN32
//#define STDCALL WINAPI
#define STDCALL __stdcall
#else
#define STDCALL
#endif // WIN32
#endif // STDCALL
// END GOOGLE GEARS MODIFICATIONS
#ifdef __cplusplus
extern "C" {
#endif
//
// NPAPI NPP Function Pointers
//
typedef NPError (*NPP_NewProcPtr)(NPMIMEType pluginType,
NPP instance,
uint16 mode,
int16 argc,
char* argn[],
char* argv[],
NPSavedData* saved);
typedef NPError (*NPP_DestroyProcPtr)(NPP instance,
NPSavedData** save);
typedef NPError (*NPP_SetWindowProcPtr)(NPP instance,
NPWindow* window);
typedef NPError (*NPP_NewStreamProcPtr)(NPP instance,
NPMIMEType type,
NPStream* stream,
NPBool seekable,
uint16* stype);
typedef NPError (*NPP_DestroyStreamProcPtr)(NPP instance,
NPStream* stream,
NPReason reason);
typedef int32 (*NPP_WriteReadyProcPtr)(NPP instance,
NPStream* stream);
typedef int32 (*NPP_WriteProcPtr)(NPP instance,
NPStream* stream,
int32 offset,
int32 len,
void* buffer);
typedef void (*NPP_StreamAsFileProcPtr)(NPP instance,
NPStream* stream,
const char* fname);
typedef void (*NPP_PrintProcPtr)(NPP instance,
NPPrint* platformPrint);
typedef int16 (*NPP_HandleEventProcPtr)(NPP instance,
void* event);
typedef void (*NPP_URLNotifyProcPtr)(NPP instance,
const char* url,
NPReason reason,
void* notifyData);
typedef void* JRIGlobalRef; //not using this right now
typedef NPError (*NPP_GetValueProcPtr)(NPP instance,
NPPVariable variable,
void *ret_alue);
typedef NPError (*NPP_SetValueProcPtr)(NPP instance,
NPNVariable variable,
void *ret_alue);
//
// NPAPI NPN Function Pointers
//
typedef NPError (*NPN_GetURLProcPtr)(NPP instance,
const char* URL,
const char* window);
typedef NPError (*NPN_PostURLProcPtr)(NPP instance,
const char* URL,
const char* window,
uint32 len,
const char* buf,
NPBool file);
typedef NPError (*NPN_RequestReadProcPtr)(NPStream* stream,
NPByteRange* rangeList);
typedef NPError (*NPN_NewStreamProcPtr)(NPP instance,
NPMIMEType type,
const char* window,
NPStream** stream);
typedef int32 (*NPN_WriteProcPtr)(NPP instance,
NPStream* stream,
int32 len,
void* buffer);
typedef NPError (*NPN_DestroyStreamProcPtr)(NPP instance,
NPStream* stream,
NPReason reason);
typedef void (*NPN_StatusProcPtr)(NPP instance,
const char* message);
typedef const char* (*NPN_UserAgentProcPtr)(NPP instance);
typedef void* (*NPN_MemAllocProcPtr)(uint32 size);
typedef void (*NPN_MemFreeProcPtr)(void* ptr);
typedef uint32 (*NPN_MemFlushProcPtr)(uint32 size);
typedef void (*NPN_ReloadPluginsProcPtr)(NPBool reloadPages);
typedef void* (*NPN_GetJavaEnvProcPtr)(void);
typedef void* (*NPN_GetJavaPeerProcPtr)(NPP instance);
typedef NPError (*NPN_GetURLNotifyProcPtr)(NPP instance,
const char* URL,
const char* window,
void* notifyData);
typedef NPError (*NPN_PostURLNotifyProcPtr)(NPP instance,
const char* URL,
const char* window,
uint32 len,
const char* buf,
NPBool file,
void* notifyData);
typedef NPError (*NPN_GetValueProcPtr)(NPP instance,
NPNVariable variable,
void *ret_value);
typedef NPError (*NPN_SetValueProcPtr)(NPP instance,
NPPVariable variable,
void *value);
typedef void (*NPN_InvalidateRectProcPtr)(NPP instance,
NPRect *rect);
typedef void (*NPN_InvalidateRegionProcPtr)(NPP instance,
NPRegion region);
typedef void (*NPN_ForceRedrawProcPtr)(NPP instance);
typedef void (*NPN_ReleaseVariantValueProcPtr) (NPVariant *variant);
typedef NPIdentifier (*NPN_GetStringIdentifierProcPtr) (const NPUTF8 *name);
typedef void (*NPN_GetStringIdentifiersProcPtr) (const NPUTF8 **names,
int32_t nameCount,
NPIdentifier *identifiers);
typedef NPIdentifier (*NPN_GetIntIdentifierProcPtr) (int32_t intid);
typedef int32_t (*NPN_IntFromIdentifierProcPtr) (NPIdentifier identifier);
typedef bool (*NPN_IdentifierIsStringProcPtr) (NPIdentifier identifier);
typedef NPUTF8 * (*NPN_UTF8FromIdentifierProcPtr) (NPIdentifier identifier);
typedef NPObject* (*NPN_CreateObjectProcPtr) (NPP,
NPClass *aClass);
typedef NPObject* (*NPN_RetainObjectProcPtr) (NPObject *obj);
typedef void (*NPN_ReleaseObjectProcPtr) (NPObject *obj);
typedef bool (*NPN_InvokeProcPtr) (NPP npp,
NPObject *obj,
NPIdentifier methodName,
const NPVariant *args,
unsigned argCount,
NPVariant *result);
typedef bool (*NPN_InvokeDefaultProcPtr) (NPP npp,
NPObject *obj,
const NPVariant *args,
unsigned argCount,
NPVariant *result);
typedef bool (*NPN_EvaluateProcPtr) (NPP npp,
NPObject *obj,
NPString *script,
NPVariant *result);
typedef bool (*NPN_GetPropertyProcPtr) (NPP npp,
NPObject *obj,
NPIdentifier propertyName,
NPVariant *result);
typedef bool (*NPN_SetPropertyProcPtr) (NPP npp,
NPObject *obj,
NPIdentifier propertyName,
const NPVariant *value);
typedef bool (*NPN_HasPropertyProcPtr) (NPP,
NPObject *npobj,
NPIdentifier propertyName);
typedef bool (*NPN_HasMethodProcPtr) (NPP npp,
NPObject *npobj,
NPIdentifier methodName);
typedef bool (*NPN_RemovePropertyProcPtr) (NPP npp,
NPObject *obj,
NPIdentifier propertyName);
typedef void (*NPN_SetExceptionProcPtr) (NPObject *obj,
const NPUTF8 *message);
typedef void (*NPN_PushPopupsEnabledStateProcPtr)(NPP npp,
NPBool enabled);
typedef void (*NPN_PopPopupsEnabledStateProcPtr)(NPP npp);
typedef bool (*NPN_EnumerateProcPtr)(NPP npp,
NPObject *obj,
NPIdentifier **identifier,
uint32_t *count);
typedef void (*NPN_PluginThreadAsyncCallProcPtr)(NPP instance,
void (*func)(void *),
void *userData);
typedef bool (*NPN_ConstructProcPtr)(NPP npp,
NPObject* obj,
const NPVariant *args,
uint32_t argCount,
NPVariant *result);
//
// NPAPI Function table of NPP functions (functions provided by plugin to host)
//
typedef struct _NPPluginFuncs {
unsigned short size;
unsigned short version;
NPP_NewProcPtr newp;
NPP_DestroyProcPtr destroy;
NPP_SetWindowProcPtr setwindow;
NPP_NewStreamProcPtr newstream;
NPP_DestroyStreamProcPtr destroystream;
NPP_StreamAsFileProcPtr asfile;
NPP_WriteReadyProcPtr writeready;
NPP_WriteProcPtr write;
NPP_PrintProcPtr print;
NPP_HandleEventProcPtr event;
NPP_URLNotifyProcPtr urlnotify;
JRIGlobalRef javaClass;
NPP_GetValueProcPtr getvalue;
NPP_SetValueProcPtr setvalue;
} NPPluginFuncs;
//
// NPAPI Function table NPN functions (functions provided by host to plugin)
//
typedef struct _NPNetscapeFuncs {
uint16 size;
uint16 version;
NPN_GetURLProcPtr geturl;
NPN_PostURLProcPtr posturl;
NPN_RequestReadProcPtr requestread;
NPN_NewStreamProcPtr newstream;
NPN_WriteProcPtr write;
NPN_DestroyStreamProcPtr destroystream;
NPN_StatusProcPtr status;
NPN_UserAgentProcPtr uagent;
NPN_MemAllocProcPtr memalloc;
NPN_MemFreeProcPtr memfree;
NPN_MemFlushProcPtr memflush;
NPN_ReloadPluginsProcPtr reloadplugins;
NPN_GetJavaEnvProcPtr getJavaEnv;
NPN_GetJavaPeerProcPtr getJavaPeer;
NPN_GetURLNotifyProcPtr geturlnotify;
NPN_PostURLNotifyProcPtr posturlnotify;
NPN_GetValueProcPtr getvalue;
NPN_SetValueProcPtr setvalue;
NPN_InvalidateRectProcPtr invalidaterect;
NPN_InvalidateRegionProcPtr invalidateregion;
NPN_ForceRedrawProcPtr forceredraw;
NPN_GetStringIdentifierProcPtr getstringidentifier;
NPN_GetStringIdentifiersProcPtr getstringidentifiers;
NPN_GetIntIdentifierProcPtr getintidentifier;
NPN_IdentifierIsStringProcPtr identifierisstring;
NPN_UTF8FromIdentifierProcPtr utf8fromidentifier;
NPN_IntFromIdentifierProcPtr intfromidentifier;
NPN_CreateObjectProcPtr createobject;
NPN_RetainObjectProcPtr retainobject;
NPN_ReleaseObjectProcPtr releaseobject;
NPN_InvokeProcPtr invoke;
NPN_InvokeDefaultProcPtr invokeDefault;
NPN_EvaluateProcPtr evaluate;
NPN_GetPropertyProcPtr getproperty;
NPN_SetPropertyProcPtr setproperty;
NPN_RemovePropertyProcPtr removeproperty;
NPN_HasPropertyProcPtr hasproperty;
NPN_HasMethodProcPtr hasmethod;
NPN_ReleaseVariantValueProcPtr releasevariantvalue;
NPN_SetExceptionProcPtr setexception;
NPN_PushPopupsEnabledStateProcPtr pushpopupsenabledstate;
NPN_PopPopupsEnabledStateProcPtr poppopupsenabledstate;
// comment these out since they aren't provided by Firefox 1.5 and
// we don't currently use them anyway.
// NPN_EnumerateProcPtr enumerate;
// NPN_PluginThreadAsyncCallProcPtr pluginthreadasynccall;
// NPN_ConstructProcPtr construct;
} NPNetscapeFuncs;
//
// NPAPI DLL entry points
//
typedef NPError (STDCALL * NP_InitializeFunc)(NPNetscapeFuncs* pFuncs);
typedef NPError (STDCALL * NP_GetEntryPointsFunc)(NPPluginFuncs* pFuncs);
typedef NPError (STDCALL * NP_ShutdownFunc)(void);
#ifdef __cplusplus
} // extern "C"
#endif
#endif // _NPHOSTAPI_H_