diff options
Diffstat (limited to 'dom/plugins/base/npapi.h')
-rw-r--r-- | dom/plugins/base/npapi.h | 922 |
1 files changed, 922 insertions, 0 deletions
diff --git a/dom/plugins/base/npapi.h b/dom/plugins/base/npapi.h new file mode 100644 index 0000000000..d6b189baef --- /dev/null +++ b/dom/plugins/base/npapi.h @@ -0,0 +1,922 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef npapi_h_ +#define npapi_h_ + +#include "nptypes.h" + +#if defined(_WIN32) && !defined(__SYMBIAN32__) +# include <windef.h> +# ifndef XP_WIN +# define XP_WIN 1 +# endif +#endif + +#if defined(__SYMBIAN32__) +# ifndef XP_SYMBIAN +# define XP_SYMBIAN 1 +# undef XP_WIN +# endif +#endif + +#if defined(__APPLE_CC__) && !defined(XP_UNIX) +# ifndef XP_MACOSX +# define XP_MACOSX 1 +# endif +#endif + +#if defined(XP_MACOSX) && defined(__LP64__) +# define NP_NO_QUICKDRAW +# define NP_NO_CARBON +#endif + +#if defined(XP_MACOSX) +# include <ApplicationServices/ApplicationServices.h> +# include <OpenGL/OpenGL.h> +# ifndef NP_NO_CARBON +# include <Carbon/Carbon.h> +# endif +#endif + +#if defined(XP_UNIX) +# include <stdio.h> +# if defined(MOZ_X11) +# include <X11/Xlib.h> +# include <X11/Xutil.h> +# include "X11UndefineNone.h" +# endif +#endif + +#if defined(XP_SYMBIAN) +# include <QEvent> +# include <QRegion> +#endif + +/*----------------------------------------------------------------------*/ +/* Plugin Version Constants */ +/*----------------------------------------------------------------------*/ + +#define NP_VERSION_MAJOR 0 +#define NP_VERSION_MINOR 29 + +/* clang-format off */ +/* The OS/2 version of Netscape uses RC_DATA to define the + mime types, file extensions, etc that are required. + Use a vertical bar to separate types, end types with \0. + FileVersion and ProductVersion are 32bit ints, all other + entries are strings that MUST be terminated with a \0. + +AN EXAMPLE: + +RCDATA NP_INFO_ProductVersion { 1,0,0,1,} + +RCDATA NP_INFO_MIMEType { "video/x-video|", + "video/x-flick\0" } +RCDATA NP_INFO_FileExtents { "avi|", + "flc\0" } +RCDATA NP_INFO_FileOpenName{ "MMOS2 video player(*.avi)|", + "MMOS2 Flc/Fli player(*.flc)\0" } + +RCDATA NP_INFO_FileVersion { 1,0,0,1 } +RCDATA NP_INFO_CompanyName { "Netscape Communications\0" } +RCDATA NP_INFO_FileDescription { "NPAVI32 Extension DLL\0" +RCDATA NP_INFO_InternalName { "NPAVI32\0" ) +RCDATA NP_INFO_LegalCopyright { "Copyright Netscape Communications \251 1996\0" +RCDATA NP_INFO_OriginalFilename { "NVAPI32.DLL" } +RCDATA NP_INFO_ProductName { "NPAVI32 Dynamic Link Library\0" } +*/ +/* clang-format on */ +/* RC_DATA types for version info - required */ +#define NP_INFO_ProductVersion 1 +#define NP_INFO_MIMEType 2 +#define NP_INFO_FileOpenName 3 +#define NP_INFO_FileExtents 4 +/* RC_DATA types for version info - used if found */ +#define NP_INFO_FileDescription 5 +#define NP_INFO_ProductName 6 +/* RC_DATA types for version info - optional */ +#define NP_INFO_CompanyName 7 +#define NP_INFO_FileVersion 8 +#define NP_INFO_InternalName 9 +#define NP_INFO_LegalCopyright 10 +#define NP_INFO_OriginalFilename 11 + +#ifndef RC_INVOKED + +/*----------------------------------------------------------------------*/ +/* Definition of Basic Types */ +/*----------------------------------------------------------------------*/ + +typedef unsigned char NPBool; +typedef int16_t NPError; +typedef int16_t NPReason; +typedef char* NPMIMEType; + +/*----------------------------------------------------------------------*/ +/* Structures and definitions */ +/*----------------------------------------------------------------------*/ + +# if !defined(__LP64__) +# if defined(XP_MACOSX) +# pragma options align = mac68k +# endif +# endif /* __LP64__ */ + +/* + * NPP is a plug-in's opaque instance handle + */ +typedef struct _NPP { + void* pdata; /* plug-in private data */ + void* ndata; /* netscape private data */ +} NPP_t; + +typedef NPP_t* NPP; + +typedef struct _NPStream { + void* pdata; /* plug-in private data */ + void* ndata; /* netscape private data */ + const char* url; + uint32_t end; + uint32_t lastmodified; + void* notifyData; + const char* headers; /* Response headers from host. + * Exists only for >= NPVERS_HAS_RESPONSE_HEADERS. + * Used for HTTP only; nullptr for non-HTTP. + * Available from NPP_NewStream onwards. + * Plugin should copy this data before storing it. + * Includes HTTP status line and all headers, + * preferably verbatim as received from server, + * headers formatted as in HTTP ("Header: Value"), + * and newlines (\n, NOT \r\n) separating lines. + * Terminated by \n\0 (NOT \n\n\0). */ +} NPStream; + +typedef struct _NPByteRange { + int32_t offset; /* negative offset means from the end */ + uint32_t length; + struct _NPByteRange* next; +} NPByteRange; + +typedef struct _NPSavedData { + int32_t len; + void* buf; +} NPSavedData; + +typedef struct _NPRect { + uint16_t top; + uint16_t left; + uint16_t bottom; + uint16_t right; +} NPRect; + +typedef struct _NPSize { + int32_t width; + int32_t height; +} NPSize; + +typedef enum { NPFocusNext = 0, NPFocusPrevious = 1 } NPFocusDirection; + +/* These formats describe the format in the memory byte-order. This means if + * a 32-bit value of a pixel is viewed on a little-endian system the layout will + * be 0xAARRGGBB. The Alpha channel will be stored in the most significant + * bits. */ +typedef enum { + /* 32-bit per pixel 8-bit per channel - premultiplied alpha */ + NPImageFormatBGRA32 = 0x1, + /* 32-bit per pixel 8-bit per channel - 1 unused channel */ + NPImageFormatBGRX32 = 0x2 +} NPImageFormat; + +typedef struct _NPAsyncSurface { + uint32_t version; + NPSize size; + NPImageFormat format; + union { + struct { + uint32_t stride; + void* data; + } bitmap; +# if defined(XP_WIN) + HANDLE sharedHandle; +# endif + }; +} NPAsyncSurface; + +/* Return values for NPP_HandleEvent */ +# define kNPEventNotHandled 0 +# define kNPEventHandled 1 +/* Exact meaning must be spec'd in event model. */ +# define kNPEventStartIME 2 + +# if defined(XP_UNIX) +/* + * Unix specific structures and definitions + */ + +/* + * Callback Structures. + * + * These are used to pass additional platform specific information. + */ +enum { NP_SETWINDOW = 1, NP_PRINT }; + +typedef struct { + int32_t type; +} NPAnyCallbackStruct; + +typedef struct { + int32_t type; +# if defined(MOZ_X11) + Display* display; + Visual* visual; + Colormap colormap; + unsigned int depth; +# endif +} NPSetWindowCallbackStruct; + +typedef struct { + int32_t type; + FILE* fp; +} NPPrintCallbackStruct; + +# endif /* XP_UNIX */ + +# if defined(XP_WIN) +/* + * Windows specific structures and definitions + */ + +/* + * Information about the default audio device. These values share meaning with + * the parameters to the Windows API IMMNotificationClient object. + * This is the value of the NPNVaudioDeviceChangeDetails variable. + */ +typedef struct _NPAudioDeviceChangeDetails { + int32_t flow; + int32_t role; + const wchar_t* defaultDevice; // this pointer is only valid during the call + // to NPPSetValue. +} NPAudioDeviceChangeDetails; + +# endif /* XP_WIN */ + +/* + * This is the value of the NPNVaudioDeviceStateChanged variable. + */ +typedef struct _NPAudioDeviceStateChanged { + /* Name of device that changed state. This string is only valid during + * the call to NPPSetValue. + */ + const wchar_t* device; + uint32_t newState; +} NPAudioDeviceStateChanged; + +typedef enum { + NPDrawingModelDUMMY +# if defined(XP_MACOSX) +# ifndef NP_NO_QUICKDRAW + , + NPDrawingModelQuickDraw = 0 +# endif + , + NPDrawingModelCoreGraphics = 1, + NPDrawingModelOpenGL = 2, + NPDrawingModelCoreAnimation = 3, + NPDrawingModelInvalidatingCoreAnimation = 4 +# endif +# if defined(XP_WIN) + , + NPDrawingModelSyncWin = 5 +# endif +# if defined(MOZ_X11) + , + NPDrawingModelSyncX = 6 +# endif + , + NPDrawingModelAsyncBitmapSurface = 7 +# if defined(XP_WIN) + , + NPDrawingModelAsyncWindowsDXGISurface = 8 +# endif +} NPDrawingModel; + +# ifdef XP_MACOSX +typedef enum { +# ifndef NP_NO_CARBON + NPEventModelCarbon = 0, +# endif + NPEventModelCocoa = 1 +} NPEventModel; +# endif + +/* + * The following masks are applied on certain platforms to NPNV and + * NPPV selectors that pass around pointers to COM interfaces. Newer + * compilers on some platforms may generate vtables that are not + * compatible with older compilers. To prevent older plugins from + * not understanding a new browser's ABI, these masks change the + * values of those selectors on those platforms. To remain backwards + * compatible with different versions of the browser, plugins can + * use these masks to dynamically determine and use the correct C++ + * ABI that the browser is expecting. This does not apply to Windows + * as Microsoft's COM ABI will likely not change. + */ + +# define NP_ABI_GCC3_MASK 0x10000000 +/* + * gcc 3.x generated vtables on UNIX and OSX are incompatible with + * previous compilers. + */ +# if (defined(XP_UNIX) && defined(__GNUC__) && (__GNUC__ >= 3)) +# define _NP_ABI_MIXIN_FOR_GCC3 NP_ABI_GCC3_MASK +# else +# define _NP_ABI_MIXIN_FOR_GCC3 0 +# endif + +# if defined(XP_MACOSX) +# define NP_ABI_MACHO_MASK 0x01000000 +# define _NP_ABI_MIXIN_FOR_MACHO NP_ABI_MACHO_MASK +# else +# define _NP_ABI_MIXIN_FOR_MACHO 0 +# endif + +# define NP_ABI_MASK (_NP_ABI_MIXIN_FOR_GCC3 | _NP_ABI_MIXIN_FOR_MACHO) + +/* + * List of variable names for which NPP_GetValue shall be implemented + */ +typedef enum { + NPPVpluginNameString = 1, + NPPVpluginDescriptionString, + NPPVpluginWindowBool, + NPPVpluginTransparentBool, + NPPVjavaClass, + NPPVpluginWindowSize, + NPPVpluginTimerInterval, + NPPVpluginScriptableInstance = (10 | NP_ABI_MASK), + NPPVpluginScriptableIID = 11, + NPPVjavascriptPushCallerBool = 12, + NPPVpluginKeepLibraryInMemory = 13, + NPPVpluginNeedsXEmbed = 14, + + /* Get the NPObject for scripting the plugin. Introduced in NPAPI minor + * version 14. + */ + NPPVpluginScriptableNPObject = 15, + + /* Get the plugin value (as \0-terminated UTF-8 string data) for + * form submission if the plugin is part of a form. Use + * NPN_MemAlloc() to allocate memory for the string data. Introduced + * in NPAPI minor version 15. + */ + NPPVformValue = 16, + + NPPVpluginUrlRequestsDisplayedBool = 17, + + /* Checks if the plugin is interested in receiving the http body of + * all http requests (including failed ones, http status != 200). + */ + NPPVpluginWantsAllNetworkStreams = 18, + + /* Browsers can retrieve a native ATK accessibility plug ID via this variable. + */ + NPPVpluginNativeAccessibleAtkPlugId = 19, + + /* Checks to see if the plug-in would like the browser to load the "src" + attribute. */ + NPPVpluginCancelSrcStream = 20, + + NPPVsupportsAdvancedKeyHandling = 21, + + NPPVpluginUsesDOMForCursorBool = 22, + + /* Used for negotiating drawing models */ + NPPVpluginDrawingModel = 1000 +# if defined(XP_MACOSX) + /* Used for negotiating event models */ + , + NPPVpluginEventModel = 1001 + /* In the NPDrawingModelCoreAnimation drawing model, the browser asks the + plug-in for a Core Animation layer. */ + , + NPPVpluginCoreAnimationLayer = 1003 +# endif + /* Notification that the plugin just started or stopped playing audio */ + , + NPPVpluginIsPlayingAudio = 4000 +# if defined(XP_WIN) + /* Notification that the plugin requests notification when the default audio + device has changed */ + , + NPPVpluginRequiresAudioDeviceChanges = 4001 +# endif + +} NPPVariable; + +/* + * List of variable names for which NPN_GetValue should be implemented. + */ +typedef enum { + NPNVxDisplay = 1, + NPNVxtAppContext, + NPNVnetscapeWindow, + NPNVjavascriptEnabledBool, + NPNVasdEnabledBool, + NPNVisOfflineBool, + + NPNVserviceManager = (10 | NP_ABI_MASK), + NPNVDOMElement = (11 | NP_ABI_MASK), + NPNVDOMWindow = (12 | NP_ABI_MASK), + NPNVToolkit = (13 | NP_ABI_MASK), + NPNVSupportsXEmbedBool = 14, + + /* Get the NPObject wrapper for the browser window. */ + NPNVWindowNPObject = 15, + + /* Get the NPObject wrapper for the plugins DOM element. */ + NPNVPluginElementNPObject = 16, + + NPNVSupportsWindowless = 17, + + NPNVprivateModeBool = 18, + + NPNVsupportsAdvancedKeyHandling = 21, + + NPNVdocumentOrigin = 22, + + NPNVCSSZoomFactor = 23, + + NPNVpluginDrawingModel = + 1000 /* Get the current drawing model (NPDrawingModel) */ +# if defined(XP_MACOSX) || defined(XP_WIN) + , + NPNVcontentsScaleFactor = 1001 +# endif +# if defined(XP_MACOSX) +# ifndef NP_NO_QUICKDRAW + , + NPNVsupportsQuickDrawBool = 2000 +# endif + , + NPNVsupportsCoreGraphicsBool = 2001, + NPNVsupportsOpenGLBool = 2002, + NPNVsupportsCoreAnimationBool = 2003, + NPNVsupportsInvalidatingCoreAnimationBool = 2004 +# endif + , + NPNVsupportsAsyncBitmapSurfaceBool = 2007 +# if defined(XP_WIN) + , + NPNVsupportsAsyncWindowsDXGISurfaceBool = 2008, + NPNVpreferredDXGIAdapter = 2009 +# endif +# if defined(XP_MACOSX) +# ifndef NP_NO_CARBON + , + NPNVsupportsCarbonBool = + 3000 /* TRUE if the browser supports the Carbon event model */ +# endif + , + NPNVsupportsCocoaBool = + 3001 /* TRUE if the browser supports the Cocoa event model */ + , + NPNVsupportsUpdatedCocoaTextInputBool = + 3002 /* TRUE if the browser supports the updated + Cocoa text input specification. */ +# endif + , + NPNVmuteAudioBool = + 4000 /* Request that the browser wants to mute or unmute the plugin */ +# if defined(XP_WIN) + , + NPNVaudioDeviceChangeDetails = + 4001 /* Provides information about the new default audio device */ + , + NPNVaudioDeviceStateChanged = + 4002 /* Provides information if any audio device changes state */ +# endif +# if defined(XP_MACOSX) + , + NPNVsupportsCompositingCoreAnimationPluginsBool = + 74656 /* TRUE if the browser supports + CA model compositing */ +# endif + , + NPNVLast +} NPNVariable; + +typedef enum { NPNURLVCookie = 501, NPNURLVProxy } NPNURLVariable; + +/* + * The type of Toolkit the widgets use + */ +typedef enum { NPNVGtk12 = 1, NPNVGtk2 } NPNToolkitType; + +/* + * The type of a NPWindow - it specifies the type of the data structure + * returned in the window field. + */ +typedef enum { NPWindowTypeWindow = 1, NPWindowTypeDrawable } NPWindowType; + +typedef struct _NPWindow { + void* window; /* Platform specific window handle */ + /* OS/2: x - Position of bottom left corner */ + /* OS/2: y - relative to visible netscape window */ + int32_t x; /* Position of top left corner relative */ + int32_t y; /* to a netscape page. */ + uint32_t width; /* Maximum window size */ + uint32_t height; + NPRect clipRect; /* Clipping rectangle in port coordinates */ +# if (defined(XP_UNIX) || defined(XP_SYMBIAN)) && !defined(XP_MACOSX) + void* ws_info; /* Platform-dependent additional data */ +# endif /* XP_UNIX */ + NPWindowType type; /* Is this a window or a drawable? */ +} NPWindow; + +typedef struct _NPImageExpose { + char* data; /* image pointer */ + int32_t stride; /* Stride of data image pointer */ + int32_t depth; /* Depth of image pointer */ + int32_t x; /* Expose x */ + int32_t y; /* Expose y */ + uint32_t width; /* Expose width */ + uint32_t height; /* Expose height */ + NPSize dataSize; /* Data buffer size */ + float translateX; /* translate X matrix value */ + float translateY; /* translate Y matrix value */ + float scaleX; /* scale X matrix value */ + float scaleY; /* scale Y matrix value */ +} NPImageExpose; + +typedef struct _NPFullPrint { + NPBool pluginPrinted; /* Set TRUE if plugin handled fullscreen printing */ + NPBool printOne; /* TRUE if plugin should print one copy to default + printer */ + void* platformPrint; /* Platform-specific printing info */ +} NPFullPrint; + +typedef struct _NPEmbedPrint { + NPWindow window; + void* platformPrint; /* Platform-specific printing info */ +} NPEmbedPrint; + +typedef struct _NPPrint { + uint16_t mode; /* NP_FULL or NP_EMBED */ + union { + NPFullPrint fullPrint; /* if mode is NP_FULL */ + NPEmbedPrint embedPrint; /* if mode is NP_EMBED */ + } print; +} NPPrint; + +# if defined(XP_MACOSX) +# ifndef NP_NO_CARBON +typedef EventRecord NPEvent; +# endif +# elif defined(XP_SYMBIAN) +typedef QEvent NPEvent; +# elif defined(XP_WIN) +typedef struct _NPEvent { + uint16_t event; + uintptr_t wParam; + intptr_t lParam; +} NPEvent; +# elif defined(XP_UNIX) && defined(MOZ_X11) +typedef XEvent NPEvent; +# else +typedef void* NPEvent; +# endif + +# if defined(XP_MACOSX) +typedef void* NPRegion; +# ifndef NP_NO_QUICKDRAW +typedef RgnHandle NPQDRegion; +# endif +typedef CGPathRef NPCGRegion; +# elif defined(XP_WIN) +typedef HRGN NPRegion; +# elif defined(XP_UNIX) && defined(MOZ_X11) +typedef Region NPRegion; +# elif defined(XP_SYMBIAN) +typedef QRegion* NPRegion; +# else +typedef void* NPRegion; +# endif + +typedef struct _NPNSString NPNSString; +typedef struct _NPNSWindow NPNSWindow; +typedef struct _NPNSMenu NPNSMenu; + +# if defined(XP_MACOSX) +typedef NPNSMenu NPMenu; +# else +typedef void* NPMenu; +# endif + +typedef enum { + NPCoordinateSpacePlugin = 1, + NPCoordinateSpaceWindow, + NPCoordinateSpaceFlippedWindow, + NPCoordinateSpaceScreen, + NPCoordinateSpaceFlippedScreen +} NPCoordinateSpace; + +# if defined(XP_MACOSX) + +# ifndef NP_NO_QUICKDRAW +typedef struct NP_Port { + CGrafPtr port; + int32_t portx; /* position inside the topmost window */ + int32_t porty; +} NP_Port; +# endif /* NP_NO_QUICKDRAW */ + +/* + * NP_CGContext is the type of the NPWindow's 'window' when the plugin specifies + * NPDrawingModelCoreGraphics as its drawing model. + */ + +typedef struct NP_CGContext { + CGContextRef context; + void* window; /* A WindowRef under the Carbon event model. */ +} NP_CGContext; + +/* + * NP_GLContext is the type of the NPWindow's 'window' when the plugin specifies + * NPDrawingModelOpenGL as its drawing model. + */ + +typedef struct NP_GLContext { + CGLContextObj context; +# ifdef NP_NO_CARBON + NPNSWindow* window; +# else + void* window; /* Can be either an NSWindow or a WindowRef depending on the + event model */ +# endif +} NP_GLContext; + +typedef enum { + NPCocoaEventDrawRect = 1, + NPCocoaEventMouseDown, + NPCocoaEventMouseUp, + NPCocoaEventMouseMoved, + NPCocoaEventMouseEntered, + NPCocoaEventMouseExited, + NPCocoaEventMouseDragged, + NPCocoaEventKeyDown, + NPCocoaEventKeyUp, + NPCocoaEventFlagsChanged, + NPCocoaEventFocusChanged, + NPCocoaEventWindowFocusChanged, + NPCocoaEventScrollWheel, + NPCocoaEventTextInput +} NPCocoaEventType; + +typedef struct _NPCocoaEvent { + NPCocoaEventType type; + uint32_t version; + union { + struct { + uint32_t modifierFlags; + double pluginX; + double pluginY; + int32_t buttonNumber; + int32_t clickCount; + double deltaX; + double deltaY; + double deltaZ; + } mouse; + struct { + uint32_t modifierFlags; + NPNSString* characters; + NPNSString* charactersIgnoringModifiers; + NPBool isARepeat; + uint16_t keyCode; + } key; + struct { + CGContextRef context; + double x; + double y; + double width; + double height; + } draw; + struct { + NPBool hasFocus; + } focus; + struct { + NPNSString* text; + } text; + } data; +} NPCocoaEvent; + +# ifndef NP_NO_CARBON +/* Non-standard event types that can be passed to HandleEvent */ +enum NPEventType { + NPEventType_GetFocusEvent = (osEvt + 16), + NPEventType_LoseFocusEvent, + NPEventType_AdjustCursorEvent, + NPEventType_MenuCommandEvent, + NPEventType_ClippingChangedEvent, + NPEventType_ScrollingBeginsEvent = 1000, + NPEventType_ScrollingEndsEvent +}; +# endif /* NP_NO_CARBON */ + +# endif /* XP_MACOSX */ + +/* + * Values for mode passed to NPP_New: + */ +# define NP_EMBED 1 +# define NP_FULL 2 + +/* + * Values for stream type passed to NPP_NewStream: + */ +# define NP_NORMAL 1 +# define NP_SEEK 2 +# define NP_ASFILE 3 +# define NP_ASFILEONLY 4 + +# define NP_MAXREADY (((unsigned)(~0) << 1) >> 1) + +/* + * Flags for NPP_ClearSiteData. + */ +# define NP_CLEAR_ALL 0 +# define NP_CLEAR_CACHE (1 << 0) + +# if !defined(__LP64__) +# if defined(XP_MACOSX) +# pragma options align = reset +# endif +# endif /* __LP64__ */ + +/*----------------------------------------------------------------------*/ +/* Error and Reason Code definitions */ +/*----------------------------------------------------------------------*/ + +/* + * Values of type NPError: + */ +# define NPERR_BASE 0 +# define NPERR_NO_ERROR (NPERR_BASE + 0) +# define NPERR_GENERIC_ERROR (NPERR_BASE + 1) +# define NPERR_INVALID_INSTANCE_ERROR (NPERR_BASE + 2) +# define NPERR_INVALID_FUNCTABLE_ERROR (NPERR_BASE + 3) +# define NPERR_MODULE_LOAD_FAILED_ERROR (NPERR_BASE + 4) +# define NPERR_OUT_OF_MEMORY_ERROR (NPERR_BASE + 5) +# define NPERR_INVALID_PLUGIN_ERROR (NPERR_BASE + 6) +# define NPERR_INVALID_PLUGIN_DIR_ERROR (NPERR_BASE + 7) +# define NPERR_INCOMPATIBLE_VERSION_ERROR (NPERR_BASE + 8) +# define NPERR_INVALID_PARAM (NPERR_BASE + 9) +# define NPERR_INVALID_URL (NPERR_BASE + 10) +# define NPERR_FILE_NOT_FOUND (NPERR_BASE + 11) +# define NPERR_NO_DATA (NPERR_BASE + 12) +# define NPERR_STREAM_NOT_SEEKABLE (NPERR_BASE + 13) +# define NPERR_TIME_RANGE_NOT_SUPPORTED (NPERR_BASE + 14) +# define NPERR_MALFORMED_SITE (NPERR_BASE + 15) + +/* + * Values of type NPReason: + */ +# define NPRES_BASE 0 +# define NPRES_DONE (NPRES_BASE + 0) +# define NPRES_NETWORK_ERR (NPRES_BASE + 1) +# define NPRES_USER_BREAK (NPRES_BASE + 2) + +/* + * Don't use these obsolete error codes any more. + */ +# define NP_NOERR NP_NOERR_is_obsolete_use_NPERR_NO_ERROR +# define NP_EINVAL NP_EINVAL_is_obsolete_use_NPERR_GENERIC_ERROR +# define NP_EABORT NP_EABORT_is_obsolete_use_NPRES_USER_BREAK + +/* + * Version feature information + */ +# define NPVERS_HAS_STREAMOUTPUT 8 +# define NPVERS_HAS_NOTIFICATION 9 +# define NPVERS_HAS_LIVECONNECT 9 +# define NPVERS_68K_HAS_LIVECONNECT 11 +# define NPVERS_HAS_WINDOWLESS 11 +# define NPVERS_HAS_XPCONNECT_SCRIPTING 13 +# define NPVERS_HAS_NPRUNTIME_SCRIPTING 14 +# define NPVERS_HAS_FORM_VALUES 15 +# define NPVERS_HAS_POPUPS_ENABLED_STATE 16 +# define NPVERS_HAS_RESPONSE_HEADERS 17 +# define NPVERS_HAS_NPOBJECT_ENUM 18 +# define NPVERS_HAS_PLUGIN_THREAD_ASYNC_CALL 19 +# define NPVERS_HAS_ALL_NETWORK_STREAMS 20 +# define NPVERS_HAS_URL_AND_AUTH_INFO 21 +# define NPVERS_HAS_PRIVATE_MODE 22 +# define NPVERS_MACOSX_HAS_COCOA_EVENTS 23 +# define NPVERS_HAS_ADVANCED_KEY_HANDLING 25 +# define NPVERS_HAS_URL_REDIRECT_HANDLING 26 +# define NPVERS_HAS_CLEAR_SITE_DATA 27 + +/*----------------------------------------------------------------------*/ +/* Function Prototypes */ +/*----------------------------------------------------------------------*/ + +# ifdef __cplusplus +extern "C" { +# endif + +/* NPP_* functions are provided by the plugin and called by the navigator. */ + +# if defined(XP_UNIX) +const char* NPP_GetMIMEDescription(void); +# endif + +NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, + int16_t argc, char* argn[], char* argv[], NPSavedData* saved); +NPError NPP_Destroy(NPP instance, NPSavedData** save); +NPError NPP_SetWindow(NPP instance, NPWindow* window); +NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, + NPBool seekable, uint16_t* stype); +NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPReason reason); +int32_t NPP_WriteReady(NPP instance, NPStream* stream); +int32_t NPP_Write(NPP instance, NPStream* stream, int32_t offset, int32_t len, + void* buffer); +void NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname); +void NPP_Print(NPP instance, NPPrint* platformPrint); +int16_t NPP_HandleEvent(NPP instance, void* event); +void NPP_URLNotify(NPP instance, const char* url, NPReason reason, + void* notifyData); +NPError NPP_GetValue(NPP instance, NPPVariable variable, void* value); +NPError NPP_SetValue(NPP instance, NPNVariable variable, void* value); +NPBool NPP_GotFocus(NPP instance, NPFocusDirection direction); +void NPP_LostFocus(NPP instance); +void NPP_URLRedirectNotify(NPP instance, const char* url, int32_t status, + void* notifyData); +NPError NPP_ClearSiteData(const char* site, uint64_t flags, uint64_t maxAge); +char** NPP_GetSitesWithData(void); +void NPP_DidComposite(NPP instance); + +/* NPN_* functions are provided by the navigator and called by the plugin. */ +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* target, + void* notifyData); +NPError NPN_GetURL(NPP instance, const char* url, const char* target); +NPError NPN_PostURLNotify(NPP instance, const char* url, const char* target, + uint32_t len, const char* buf, NPBool file, + void* notifyData); +NPError NPN_PostURL(NPP instance, const char* url, const char* target, + uint32_t len, const char* buf, NPBool file); +NPError NPN_RequestRead(NPStream* stream, NPByteRange* rangeList); +NPError NPN_NewStream(NPP instance, NPMIMEType type, const char* target, + NPStream** stream); +int32_t NPN_Write(NPP instance, NPStream* stream, int32_t len, void* buffer); +NPError NPN_DestroyStream(NPP instance, NPStream* stream, NPReason reason); +void NPN_Status(NPP instance, const char* message); +const char* NPN_UserAgent(NPP instance); +void* NPN_MemAlloc(uint32_t size); +void NPN_MemFree(void* ptr); +uint32_t NPN_MemFlush(uint32_t size); +void NPN_ReloadPlugins(NPBool reloadPages); +NPError NPN_GetValue(NPP instance, NPNVariable variable, void* value); +NPError NPN_SetValue(NPP instance, NPPVariable variable, void* value); +void NPN_InvalidateRect(NPP instance, NPRect* invalidRect); +void NPN_InvalidateRegion(NPP instance, NPRegion invalidRegion); +void NPN_ForceRedraw(NPP instance); +void NPN_PushPopupsEnabledState(NPP instance, NPBool enabled); +void NPN_PopPopupsEnabledState(NPP instance); +void NPN_PluginThreadAsyncCall(NPP instance, void (*func)(void*), + void* userData); +NPError NPN_GetValueForURL(NPP instance, NPNURLVariable variable, + const char* url, char** value, uint32_t* len); +NPError NPN_SetValueForURL(NPP instance, NPNURLVariable variable, + const char* url, const char* value, uint32_t len); +NPError NPN_GetAuthenticationInfo(NPP instance, const char* protocol, + const char* host, int32_t port, + const char* scheme, const char* realm, + char** username, uint32_t* ulen, + char** password, uint32_t* plen); +uint32_t NPN_ScheduleTimer(NPP instance, uint32_t interval, NPBool repeat, + void (*timerFunc)(NPP npp, uint32_t timerID)); +void NPN_UnscheduleTimer(NPP instance, uint32_t timerID); +NPError NPN_PopUpContextMenu(NPP instance, NPMenu* menu); +NPBool NPN_ConvertPoint(NPP instance, double sourceX, double sourceY, + NPCoordinateSpace sourceSpace, double* destX, + double* destY, NPCoordinateSpace destSpace); +NPBool NPN_HandleEvent(NPP instance, void* event, NPBool handled); +NPBool NPN_UnfocusInstance(NPP instance, NPFocusDirection direction); +void NPN_URLRedirectResponse(NPP instance, void* notifyData, NPBool allow); +NPError NPN_InitAsyncSurface(NPP instance, NPSize* size, NPImageFormat format, + void* initData, NPAsyncSurface* surface); +NPError NPN_FinalizeAsyncSurface(NPP instance, NPAsyncSurface* surface); +void NPN_SetCurrentAsyncSurface(NPP instance, NPAsyncSurface* surface, + NPRect* changed); + +# ifdef __cplusplus +} /* end extern "C" */ +# endif + +#endif /* RC_INVOKED */ + +#endif /* npapi_h_ */ |