summaryrefslogtreecommitdiffstats
path: root/dom/plugins/base/npapi.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/plugins/base/npapi.h')
-rw-r--r--dom/plugins/base/npapi.h922
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_ */