• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* ***** BEGIN LICENSE BLOCK *****
3  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4  *
5  * The contents of this file are subject to the Mozilla Public License Version
6  * 1.1 (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  * http://www.mozilla.org/MPL/
9  *
10  * Software distributed under the License is distributed on an "AS IS" basis,
11  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12  * for the specific language governing rights and limitations under the
13  * License.
14  *
15  * The Original Code is mozilla.org code.
16  *
17  * The Initial Developer of the Original Code is
18  * Netscape Communications Corporation.
19  * Portions created by the Initial Developer are Copyright (C) 1998
20  * the Initial Developer. All Rights Reserved.
21  *
22  * Contributor(s):
23  *
24  * Alternatively, the contents of this file may be used under the terms of
25  * either the GNU General Public License Version 2 or later (the "GPL"), or
26  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27  * in which case the provisions of the GPL or the LGPL are applicable instead
28  * of those above. If you wish to allow use of your version of this file only
29  * under the terms of either the GPL or the LGPL, and not to allow others to
30  * use your version of this file under the terms of the MPL, indicate your
31  * decision by deleting the provisions above and replace them with the notice
32  * and other provisions required by the GPL or the LGPL. If you do not delete
33  * the provisions above, a recipient may use your version of this file under
34  * the terms of any one of the MPL, the GPL or the LGPL.
35  *
36  * ***** END LICENSE BLOCK ***** */
37 
38 #ifndef npapi_h_
39 #define npapi_h_
40 
41 #if defined(__OS2__)
42 #pragma pack(1)
43 #endif
44 
45 #include "nptypes.h"
46 
47 #if defined(__OS2__) || defined(OS2)
48 #ifndef XP_OS2
49 #define XP_OS2 1
50 #endif
51 #endif
52 
53 #ifdef INCLUDE_JAVA
54 #include "jri.h"                /* Java Runtime Interface */
55 #else
56 #define jref    void *
57 #define JRIEnv  void
58 #endif
59 
60 #if defined(_WIN32) && !defined(__SYMBIAN32__)
61 #include <windows.h>
62 #ifndef XP_WIN
63 #define XP_WIN 1
64 #endif
65 #endif
66 
67 #if defined(__SYMBIAN32__)
68 #ifndef XP_SYMBIAN
69 #define XP_SYMBIAN 1
70 #endif
71 #endif
72 
73 #if defined(__APPLE_CC__) && !defined(XP_UNIX)
74 #ifndef XP_MACOSX
75 #define XP_MACOSX 1
76 #endif
77 #endif
78 
79 #if defined(XP_MACOSX) && defined(__LP64__)
80 #define NP_NO_QUICKDRAW
81 #define NP_NO_CARBON
82 #endif
83 
84 #if defined(XP_MACOSX)
85 #include <ApplicationServices/ApplicationServices.h>
86 #include <OpenGL/OpenGL.h>
87 #ifndef NP_NO_CARBON
88 #include <Carbon/Carbon.h>
89 #endif
90 #endif
91 
92 #if defined(XP_UNIX)
93 #include <X11/Xlib.h>
94 #include <X11/Xutil.h>
95 #include <stdio.h>
96 #endif
97 
98 #if defined(XP_SYMBIAN)
99 #include <QEvent>
100 #include <QRegion>
101 #endif
102 
103 /*----------------------------------------------------------------------*/
104 /*                        Plugin Version Constants                      */
105 /*----------------------------------------------------------------------*/
106 
107 #define NP_VERSION_MAJOR 0
108 #define NP_VERSION_MINOR 24
109 
110 
111 /* The OS/2 version of Netscape uses RC_DATA to define the
112    mime types, file extensions, etc that are required.
113    Use a vertical bar to separate types, end types with \0.
114    FileVersion and ProductVersion are 32bit ints, all other
115    entries are strings that MUST be terminated with a \0.
116 
117 AN EXAMPLE:
118 
119 RCDATA NP_INFO_ProductVersion { 1,0,0,1,}
120 
121 RCDATA NP_INFO_MIMEType    { "video/x-video|",
122                              "video/x-flick\0" }
123 RCDATA NP_INFO_FileExtents { "avi|",
124                              "flc\0" }
125 RCDATA NP_INFO_FileOpenName{ "MMOS2 video player(*.avi)|",
126                              "MMOS2 Flc/Fli player(*.flc)\0" }
127 
128 RCDATA NP_INFO_FileVersion       { 1,0,0,1 }
129 RCDATA NP_INFO_CompanyName       { "Netscape Communications\0" }
130 RCDATA NP_INFO_FileDescription   { "NPAVI32 Extension DLL\0"
131 RCDATA NP_INFO_InternalName      { "NPAVI32\0" )
132 RCDATA NP_INFO_LegalCopyright    { "Copyright Netscape Communications \251 1996\0"
133 RCDATA NP_INFO_OriginalFilename  { "NVAPI32.DLL" }
134 RCDATA NP_INFO_ProductName       { "NPAVI32 Dynamic Link Library\0" }
135 */
136 /* RC_DATA types for version info - required */
137 #define NP_INFO_ProductVersion      1
138 #define NP_INFO_MIMEType            2
139 #define NP_INFO_FileOpenName        3
140 #define NP_INFO_FileExtents         4
141 /* RC_DATA types for version info - used if found */
142 #define NP_INFO_FileDescription     5
143 #define NP_INFO_ProductName         6
144 /* RC_DATA types for version info - optional */
145 #define NP_INFO_CompanyName         7
146 #define NP_INFO_FileVersion         8
147 #define NP_INFO_InternalName        9
148 #define NP_INFO_LegalCopyright      10
149 #define NP_INFO_OriginalFilename    11
150 
151 #ifndef RC_INVOKED
152 
153 /*----------------------------------------------------------------------*/
154 /*                       Definition of Basic Types                      */
155 /*----------------------------------------------------------------------*/
156 
157 #ifndef FALSE
158 #define FALSE (0)
159 #endif
160 #ifndef TRUE
161 #define TRUE (1)
162 #endif
163 #ifndef NULL
164 #define NULL (0L)
165 #endif
166 
167 typedef unsigned char NPBool;
168 typedef int16_t       NPError;
169 typedef int16_t       NPReason;
170 typedef char*         NPMIMEType;
171 
172 /*----------------------------------------------------------------------*/
173 /*                       Structures and definitions                     */
174 /*----------------------------------------------------------------------*/
175 
176 #if !defined(__LP64__)
177 #if defined(XP_MACOSX)
178 #pragma options align=mac68k
179 #endif
180 #endif /* __LP64__ */
181 
182 /*
183  *  NPP is a plug-in's opaque instance handle
184  */
185 typedef struct _NPP
186 {
187   void* pdata;      /* plug-in private data */
188   void* ndata;      /* netscape private data */
189 } NPP_t;
190 
191 typedef NPP_t*  NPP;
192 
193 typedef struct _NPStream
194 {
195   void*    pdata; /* plug-in private data */
196   void*    ndata; /* netscape private data */
197   const    char* url;
198   uint32_t end;
199   uint32_t lastmodified;
200   void*    notifyData;
201   const    char* headers; /* Response headers from host.
202                            * Exists only for >= NPVERS_HAS_RESPONSE_HEADERS.
203                            * Used for HTTP only; NULL for non-HTTP.
204                            * Available from NPP_NewStream onwards.
205                            * Plugin should copy this data before storing it.
206                            * Includes HTTP status line and all headers,
207                            * preferably verbatim as received from server,
208                            * headers formatted as in HTTP ("Header: Value"),
209                            * and newlines (\n, NOT \r\n) separating lines.
210                            * Terminated by \n\0 (NOT \n\n\0). */
211 } NPStream;
212 
213 typedef struct _NPByteRange
214 {
215   int32_t  offset; /* negative offset means from the end */
216   uint32_t length;
217   struct _NPByteRange* next;
218 } NPByteRange;
219 
220 typedef struct _NPSavedData
221 {
222   int32_t len;
223   void*   buf;
224 } NPSavedData;
225 
226 typedef struct _NPRect
227 {
228   uint16_t top;
229   uint16_t left;
230   uint16_t bottom;
231   uint16_t right;
232 } NPRect;
233 
234 typedef struct _NPSize
235 {
236   int32_t width;
237   int32_t height;
238 } NPSize;
239 
240 typedef enum {
241   NPFocusNext = 0,
242   NPFocusPrevious = 1
243 } NPFocusDirection;
244 
245 /* Return values for NPP_HandleEvent */
246 #define kNPEventNotHandled 0
247 #define kNPEventHandled 1
248 /* Exact meaning must be spec'd in event model. */
249 #define kNPEventStartIME 2
250 
251 #if defined(XP_UNIX)
252 /*
253  * Unix specific structures and definitions
254  */
255 
256 /*
257  * Callback Structures.
258  *
259  * These are used to pass additional platform specific information.
260  */
261 enum {
262   NP_SETWINDOW = 1,
263   NP_PRINT
264 };
265 
266 typedef struct
267 {
268   int32_t type;
269 } NPAnyCallbackStruct;
270 
271 typedef struct
272 {
273   int32_t      type;
274   Display*     display;
275   Visual*      visual;
276   Colormap     colormap;
277   unsigned int depth;
278 } NPSetWindowCallbackStruct;
279 
280 typedef struct
281 {
282   int32_t type;
283   FILE* fp;
284 } NPPrintCallbackStruct;
285 
286 #endif /* XP_UNIX */
287 
288 #if defined(XP_MACOSX)
289 typedef enum {
290 #ifndef NP_NO_QUICKDRAW
291   NPDrawingModelQuickDraw = 0,
292 #endif
293   NPDrawingModelCoreGraphics = 1,
294   NPDrawingModelOpenGL = 2,
295   NPDrawingModelCoreAnimation = 3
296 } NPDrawingModel;
297 
298 typedef enum {
299 #ifndef NP_NO_CARBON
300   NPEventModelCarbon = 0,
301 #endif
302   NPEventModelCocoa = 1
303 } NPEventModel;
304 #endif
305 
306 /*
307  *   The following masks are applied on certain platforms to NPNV and
308  *   NPPV selectors that pass around pointers to COM interfaces. Newer
309  *   compilers on some platforms may generate vtables that are not
310  *   compatible with older compilers. To prevent older plugins from
311  *   not understanding a new browser's ABI, these masks change the
312  *   values of those selectors on those platforms. To remain backwards
313  *   compatible with different versions of the browser, plugins can
314  *   use these masks to dynamically determine and use the correct C++
315  *   ABI that the browser is expecting. This does not apply to Windows
316  *   as Microsoft's COM ABI will likely not change.
317  */
318 
319 #define NP_ABI_GCC3_MASK  0x10000000
320 /*
321  *   gcc 3.x generated vtables on UNIX and OSX are incompatible with
322  *   previous compilers.
323  */
324 #if (defined(XP_UNIX) && defined(__GNUC__) && (__GNUC__ >= 3))
325 #define _NP_ABI_MIXIN_FOR_GCC3 NP_ABI_GCC3_MASK
326 #else
327 #define _NP_ABI_MIXIN_FOR_GCC3 0
328 #endif
329 
330 #if defined(XP_MACOSX)
331 #define NP_ABI_MACHO_MASK 0x01000000
332 #define _NP_ABI_MIXIN_FOR_MACHO NP_ABI_MACHO_MASK
333 #else
334 #define _NP_ABI_MIXIN_FOR_MACHO 0
335 #endif
336 
337 #define NP_ABI_MASK (_NP_ABI_MIXIN_FOR_GCC3 | _NP_ABI_MIXIN_FOR_MACHO)
338 
339 /*
340  * List of variable names for which NPP_GetValue shall be implemented
341  */
342 typedef enum {
343   NPPVpluginNameString = 1,
344   NPPVpluginDescriptionString,
345   NPPVpluginWindowBool,
346   NPPVpluginTransparentBool,
347   NPPVjavaClass,                /* Not implemented in WebKit */
348   NPPVpluginWindowSize,         /* Not implemented in WebKit */
349   NPPVpluginTimerInterval,      /* Not implemented in WebKit */
350   NPPVpluginScriptableInstance = (10 | NP_ABI_MASK), /* Not implemented in WebKit */
351   NPPVpluginScriptableIID = 11, /* Not implemented in WebKit */
352   NPPVjavascriptPushCallerBool = 12,  /* Not implemented in WebKit */
353   NPPVpluginKeepLibraryInMemory = 13, /* Not implemented in WebKit */
354   NPPVpluginNeedsXEmbed         = 14, /* Not implemented in WebKit */
355 
356   /* Get the NPObject for scripting the plugin. Introduced in NPAPI minor version 14.
357    */
358   NPPVpluginScriptableNPObject  = 15,
359 
360   /* Get the plugin value (as \0-terminated UTF-8 string data) for
361    * form submission if the plugin is part of a form. Use
362    * NPN_MemAlloc() to allocate memory for the string data. Introduced
363    * in NPAPI minor version 15.
364    */
365   NPPVformValue = 16,    /* Not implemented in WebKit */
366 
367   NPPVpluginUrlRequestsDisplayedBool = 17, /* Not implemented in WebKit */
368 
369   /* Checks if the plugin is interested in receiving the http body of
370    * all http requests (including failed ones, http status != 200).
371    */
372   NPPVpluginWantsAllNetworkStreams = 18,
373 
374   /* Browsers can retrieve a native ATK accessibility plug ID via this variable. */
375   NPPVpluginNativeAccessibleAtkPlugId = 19,
376 
377   /* Checks to see if the plug-in would like the browser to load the "src" attribute. */
378   NPPVpluginCancelSrcStream = 20
379 
380 #if defined(XP_MACOSX)
381   /* Used for negotiating drawing models */
382   , NPPVpluginDrawingModel = 1000
383   /* Used for negotiating event models */
384   , NPPVpluginEventModel = 1001
385   /* In the NPDrawingModelCoreAnimation drawing model, the browser asks the plug-in for a Core Animation layer. */
386   , NPPVpluginCoreAnimationLayer = 1003
387 #endif
388 
389 #ifdef ANDROID
390     /* Used when the plugin returns 0 from NPN_WriteReady and wishes the browser
391      * to wait a certain amount of millis before calling NPN_WriteReady again.
392      */
393     , NPPDataDeliveryDelayMs = 100
394 
395     // TODO(reed): upstream
396     , NPPFakeValueToForce32Bits = 0x7FFFFFFF
397 #endif
398 
399 #if defined(MOZ_PLATFORM_MAEMO) && (MOZ_PLATFORM_MAEMO >= 5)
400   , NPPVpluginWindowlessLocalBool = 2002
401 #endif
402 } NPPVariable;
403 
404 /*
405  * List of variable names for which NPN_GetValue should be implemented.
406  */
407 typedef enum {
408   NPNVxDisplay = 1,
409   NPNVxtAppContext,
410   NPNVnetscapeWindow,
411   NPNVjavascriptEnabledBool,
412   NPNVasdEnabledBool,
413   NPNVisOfflineBool,
414 
415   NPNVserviceManager = (10 | NP_ABI_MASK),  /* Not implemented in WebKit */
416   NPNVDOMElement     = (11 | NP_ABI_MASK),  /* Not implemented in WebKit */
417   NPNVDOMWindow      = (12 | NP_ABI_MASK),  /* Not implemented in WebKit */
418   NPNVToolkit        = (13 | NP_ABI_MASK),  /* Not implemented in WebKit */
419   NPNVSupportsXEmbedBool = 14,              /* Not implemented in WebKit */
420 
421   /* Get the NPObject wrapper for the browser window. */
422   NPNVWindowNPObject = 15,
423 
424   /* Get the NPObject wrapper for the plugins DOM element. */
425   NPNVPluginElementNPObject = 16,
426 
427   NPNVSupportsWindowless = 17,
428 
429   NPNVprivateModeBool = 18
430 
431 #if defined(XP_MACOSX)
432   /* Used for negotiating drawing models */
433   , NPNVpluginDrawingModel = 1000
434 #ifndef NP_NO_QUICKDRAW
435   , NPNVsupportsQuickDrawBool = 2000
436 #endif
437   , NPNVsupportsCoreGraphicsBool = 2001
438   , NPNVsupportsOpenGLBool = 2002
439   , NPNVsupportsCoreAnimationBool = 2003
440 #ifndef NP_NO_CARBON
441   , NPNVsupportsCarbonBool = 3000 /* TRUE if the browser supports the Carbon event model */
442 #endif
443   , NPNVsupportsCocoaBool = 3001 /* TRUE if the browser supports the Cocoa event model */
444 #endif /* XP_MACOSX */
445 
446 #ifdef ANDROID
447     , NPNFakeValueToForce32Bits = 0x7FFFFFFF
448 #endif
449 
450 #if defined(MOZ_PLATFORM_MAEMO) && (MOZ_PLATFORM_MAEMO >= 5)
451   , NPNVSupportsWindowlessLocal = 2002
452 #endif
453 } NPNVariable;
454 
455 typedef enum {
456   NPNURLVCookie = 501,
457   NPNURLVProxy
458 } NPNURLVariable;
459 
460 /*
461  * The type of Toolkit the widgets use
462  */
463 typedef enum {
464   NPNVGtk12 = 1,
465   NPNVGtk2
466 } NPNToolkitType;
467 
468 /*
469  * The type of a NPWindow - it specifies the type of the data structure
470  * returned in the window field.
471  */
472 typedef enum {
473   NPWindowTypeWindow = 1,
474   NPWindowTypeDrawable
475 } NPWindowType;
476 
477 typedef struct _NPWindow
478 {
479   void* window;  /* Platform specific window handle */
480                  /* OS/2: x - Position of bottom left corner */
481                  /* OS/2: y - relative to visible netscape window */
482   int32_t  x;      /* Position of top left corner relative */
483   int32_t  y;      /* to a netscape page. */
484   uint32_t width;  /* Maximum window size */
485   uint32_t height;
486   NPRect   clipRect; /* Clipping rectangle in port coordinates */
487 #if defined(XP_UNIX) || defined(XP_SYMBIAN)
488   void * ws_info; /* Platform-dependent additonal data */
489 #endif /* XP_UNIX || XP_SYMBIAN */
490   NPWindowType type; /* Is this a window or a drawable? */
491 } NPWindow;
492 
493 typedef struct _NPImageExpose
494 {
495   char*    data;       /* image pointer */
496   int32_t  stride;     /* Stride of data image pointer */
497   int32_t  depth;      /* Depth of image pointer */
498   int32_t  x;          /* Expose x */
499   int32_t  y;          /* Expose y */
500   uint32_t width;      /* Expose width */
501   uint32_t height;     /* Expose height */
502   NPSize   dataSize;   /* Data buffer size */
503   float    translateX; /* translate X matrix value */
504   float    translateY; /* translate Y matrix value */
505   float    scaleX;     /* scale X matrix value */
506   float    scaleY;     /* scale Y matrix value */
507 } NPImageExpose;
508 
509 typedef struct _NPFullPrint
510 {
511   NPBool pluginPrinted;/* Set TRUE if plugin handled fullscreen printing */
512   NPBool printOne;     /* TRUE if plugin should print one copy to default
513                           printer */
514   void* platformPrint; /* Platform-specific printing info */
515 } NPFullPrint;
516 
517 typedef struct _NPEmbedPrint
518 {
519   NPWindow window;
520   void* platformPrint; /* Platform-specific printing info */
521 } NPEmbedPrint;
522 
523 typedef struct _NPPrint
524 {
525   uint16_t mode;               /* NP_FULL or NP_EMBED */
526   union
527   {
528     NPFullPrint fullPrint;   /* if mode is NP_FULL */
529     NPEmbedPrint embedPrint; /* if mode is NP_EMBED */
530   } print;
531 } NPPrint;
532 
533 #if defined(XP_MACOSX)
534 #ifndef NP_NO_CARBON
535 typedef EventRecord NPEvent;
536 #else
537 typedef void*  NPEvent;
538 #endif
539 #elif defined(XP_SYMBIAN)
540 typedef QEvent NPEvent;
541 #elif defined(XP_WIN)
542 typedef struct _NPEvent
543 {
544   uint16_t event;
545   uintptr_t wParam;
546   uintptr_t lParam;
547 } NPEvent;
548 #elif defined(XP_OS2)
549 typedef struct _NPEvent
550 {
551   uint32_t event;
552   uint32_t wParam;
553   uint32_t lParam;
554 } NPEvent;
555 #elif defined(XP_UNIX)
556 typedef XEvent NPEvent;
557 #else
558 typedef void*  NPEvent;
559 #endif
560 
561 #if defined(XP_MACOSX)
562 typedef void* NPRegion;
563 #ifndef NP_NO_QUICKDRAW
564 typedef RgnHandle NPQDRegion;
565 #endif
566 typedef CGPathRef NPCGRegion;
567 #elif defined(XP_WIN)
568 typedef HRGN NPRegion;
569 #elif defined(XP_UNIX)
570 typedef Region NPRegion;
571 #elif defined(XP_SYMBIAN)
572 typedef QRegion* NPRegion;
573 #else
574 typedef void *NPRegion;
575 #endif
576 
577 typedef struct _NPNSString NPNSString;
578 typedef struct _NPNSWindow NPNSWindow;
579 typedef struct _NPNSMenu   NPNSMenu;
580 
581 #if defined(XP_MACOSX)
582 typedef NPNSMenu NPMenu;
583 #else
584 typedef void *NPMenu;
585 #endif
586 
587 typedef enum {
588   NPCoordinateSpacePlugin = 1,
589   NPCoordinateSpaceWindow,
590   NPCoordinateSpaceFlippedWindow,
591   NPCoordinateSpaceScreen,
592   NPCoordinateSpaceFlippedScreen
593 } NPCoordinateSpace;
594 
595 #if defined(XP_MACOSX)
596 
597 #ifndef NP_NO_QUICKDRAW
598 typedef struct NP_Port
599 {
600   CGrafPtr port;
601   int32_t portx; /* position inside the topmost window */
602   int32_t porty;
603 } NP_Port;
604 #endif /* NP_NO_QUICKDRAW */
605 
606 /*
607  * NP_CGContext is the type of the NPWindow's 'window' when the plugin specifies NPDrawingModelCoreGraphics
608  * as its drawing model.
609  */
610 
611 typedef struct NP_CGContext
612 {
613   CGContextRef context;
614 #ifdef NP_NO_CARBON
615   NPNSWindow *window;
616 #else
617   void *window; /* A WindowRef or NULL for the Cocoa event model. */
618 #endif
619 } NP_CGContext;
620 
621 /*
622  * NP_GLContext is the type of the NPWindow's 'window' when the plugin specifies NPDrawingModelOpenGL as its
623  * drawing model.
624  */
625 
626 typedef struct NP_GLContext
627 {
628   CGLContextObj context;
629 #ifdef NP_NO_CARBON
630   NPNSWindow *window;
631 #else
632   void *window; /* Can be either an NSWindow or a WindowRef depending on the event model */
633 #endif
634 } NP_GLContext;
635 
636 typedef enum {
637   NPCocoaEventDrawRect = 1,
638   NPCocoaEventMouseDown,
639   NPCocoaEventMouseUp,
640   NPCocoaEventMouseMoved,
641   NPCocoaEventMouseEntered,
642   NPCocoaEventMouseExited,
643   NPCocoaEventMouseDragged,
644   NPCocoaEventKeyDown,
645   NPCocoaEventKeyUp,
646   NPCocoaEventFlagsChanged,
647   NPCocoaEventFocusChanged,
648   NPCocoaEventWindowFocusChanged,
649   NPCocoaEventScrollWheel,
650   NPCocoaEventTextInput
651 } NPCocoaEventType;
652 
653 typedef struct _NPCocoaEvent {
654   NPCocoaEventType type;
655   uint32_t version;
656   union {
657     struct {
658       uint32_t modifierFlags;
659       double   pluginX;
660       double   pluginY;
661       int32_t  buttonNumber;
662       int32_t  clickCount;
663       double   deltaX;
664       double   deltaY;
665       double   deltaZ;
666     } mouse;
667     struct {
668       uint32_t    modifierFlags;
669       NPNSString *characters;
670       NPNSString *charactersIgnoringModifiers;
671       NPBool      isARepeat;
672       uint16_t    keyCode;
673     } key;
674     struct {
675       CGContextRef context;
676       double x;
677       double y;
678       double width;
679       double height;
680     } draw;
681     struct {
682       NPBool hasFocus;
683     } focus;
684     struct {
685       NPNSString *text;
686     } text;
687   } data;
688 } NPCocoaEvent;
689 
690 #ifndef NP_NO_CARBON
691 /* Non-standard event types that can be passed to HandleEvent */
692 enum NPEventType {
693   NPEventType_GetFocusEvent = (osEvt + 16),
694   NPEventType_LoseFocusEvent,
695   NPEventType_AdjustCursorEvent,
696   NPEventType_MenuCommandEvent,
697   NPEventType_ClippingChangedEvent,
698   NPEventType_ScrollingBeginsEvent = 1000,
699   NPEventType_ScrollingEndsEvent
700 };
701 #endif /* NP_NO_CARBON */
702 
703 #endif /* XP_MACOSX */
704 
705 /*
706  * Values for mode passed to NPP_New:
707  */
708 #define NP_EMBED 1
709 #define NP_FULL  2
710 
711 /*
712  * Values for stream type passed to NPP_NewStream:
713  */
714 #define NP_NORMAL     1
715 #define NP_SEEK       2
716 #define NP_ASFILE     3
717 #define NP_ASFILEONLY 4
718 
719 #define NP_MAXREADY (((unsigned)(~0)<<1)>>1)
720 
721 /*
722  * Flags for NPP_ClearSiteData.
723  */
724 #define NP_CLEAR_ALL   0
725 #define NP_CLEAR_CACHE (1 << 0)
726 
727 #if !defined(__LP64__)
728 #if defined(XP_MACOSX)
729 #pragma options align=reset
730 #endif
731 #endif /* __LP64__ */
732 
733 /*----------------------------------------------------------------------*/
734 /*       Error and Reason Code definitions                              */
735 /*----------------------------------------------------------------------*/
736 
737 /*
738  * Values of type NPError:
739  */
740 #define NPERR_BASE                         0
741 #define NPERR_NO_ERROR                    (NPERR_BASE + 0)
742 #define NPERR_GENERIC_ERROR               (NPERR_BASE + 1)
743 #define NPERR_INVALID_INSTANCE_ERROR      (NPERR_BASE + 2)
744 #define NPERR_INVALID_FUNCTABLE_ERROR     (NPERR_BASE + 3)
745 #define NPERR_MODULE_LOAD_FAILED_ERROR    (NPERR_BASE + 4)
746 #define NPERR_OUT_OF_MEMORY_ERROR         (NPERR_BASE + 5)
747 #define NPERR_INVALID_PLUGIN_ERROR        (NPERR_BASE + 6)
748 #define NPERR_INVALID_PLUGIN_DIR_ERROR    (NPERR_BASE + 7)
749 #define NPERR_INCOMPATIBLE_VERSION_ERROR  (NPERR_BASE + 8)
750 #define NPERR_INVALID_PARAM               (NPERR_BASE + 9)
751 #define NPERR_INVALID_URL                 (NPERR_BASE + 10)
752 #define NPERR_FILE_NOT_FOUND              (NPERR_BASE + 11)
753 #define NPERR_NO_DATA                     (NPERR_BASE + 12)
754 #define NPERR_STREAM_NOT_SEEKABLE         (NPERR_BASE + 13)
755 
756 /*
757  * Values of type NPReason:
758  */
759 #define NPRES_BASE          0
760 #define NPRES_DONE         (NPRES_BASE + 0)
761 #define NPRES_NETWORK_ERR  (NPRES_BASE + 1)
762 #define NPRES_USER_BREAK   (NPRES_BASE + 2)
763 
764 /*
765  * Don't use these obsolete error codes any more.
766  */
767 #define NP_NOERR  NP_NOERR_is_obsolete_use_NPERR_NO_ERROR
768 #define NP_EINVAL NP_EINVAL_is_obsolete_use_NPERR_GENERIC_ERROR
769 #define NP_EABORT NP_EABORT_is_obsolete_use_NPRES_USER_BREAK
770 
771 /*
772  * Version feature information
773  */
774 #define NPVERS_HAS_STREAMOUTPUT             8
775 #define NPVERS_HAS_NOTIFICATION             9
776 #define NPVERS_HAS_LIVECONNECT              9
777 #define NPVERS_WIN16_HAS_LIVECONNECT        9
778 #define NPVERS_68K_HAS_LIVECONNECT          11
779 #define NPVERS_HAS_WINDOWLESS               11
780 #define NPVERS_HAS_XPCONNECT_SCRIPTING      13  /* Not implemented in WebKit */
781 #define NPVERS_HAS_NPRUNTIME_SCRIPTING      14
782 #define NPVERS_HAS_FORM_VALUES              15  /* Not implemented in WebKit; see bug 13061 */
783 #define NPVERS_HAS_POPUPS_ENABLED_STATE     16  /* Not implemented in WebKit */
784 #define NPVERS_HAS_RESPONSE_HEADERS         17
785 #define NPVERS_HAS_NPOBJECT_ENUM            18
786 #define NPVERS_HAS_PLUGIN_THREAD_ASYNC_CALL 19
787 #define NPVERS_HAS_ALL_NETWORK_STREAMS      20
788 #define NPVERS_HAS_URL_AND_AUTH_INFO        21
789 #define NPVERS_HAS_PRIVATE_MODE             22
790 #define NPVERS_MACOSX_HAS_EVENT_MODELS      23
791 #define NPVERS_HAS_CANCEL_SRC_STREAM        24
792 #define NPVERS_HAS_ADVANCED_KEY_HANDLING    25
793 #define NPVERS_HAS_URL_REDIRECT_HANDLING    26
794 #define NPVERS_HAS_CLEAR_SITE_DATA          27
795 
796 /*----------------------------------------------------------------------*/
797 /*                        Function Prototypes                           */
798 /*----------------------------------------------------------------------*/
799 
800 #if defined(__OS2__)
801 #define NP_LOADDS _System
802 #else
803 #define NP_LOADDS
804 #endif
805 
806 #ifdef __cplusplus
807 extern "C" {
808 #endif
809 
810 /* NPP_* functions are provided by the plugin and called by the navigator. */
811 
812 #if defined(XP_UNIX)
813 char* NPP_GetMIMEDescription(void);
814 #endif
815 
816 NPError NP_LOADDS NPP_Initialize(void);
817 void    NP_LOADDS NPP_Shutdown(void);
818 NPError NP_LOADDS NPP_New(NPMIMEType pluginType, NPP instance,
819                           uint16_t mode, int16_t argc, char* argn[],
820                           char* argv[], NPSavedData* saved);
821 NPError NP_LOADDS NPP_Destroy(NPP instance, NPSavedData** save);
822 NPError NP_LOADDS NPP_SetWindow(NPP instance, NPWindow* window);
823 NPError NP_LOADDS NPP_NewStream(NPP instance, NPMIMEType type,
824                                 NPStream* stream, NPBool seekable,
825                                 uint16_t* stype);
826 NPError NP_LOADDS NPP_DestroyStream(NPP instance, NPStream* stream,
827                                     NPReason reason);
828 int32_t NP_LOADDS NPP_WriteReady(NPP instance, NPStream* stream);
829 int32_t NP_LOADDS NPP_Write(NPP instance, NPStream* stream, int32_t offset,
830                             int32_t len, void* buffer);
831 void    NP_LOADDS NPP_StreamAsFile(NPP instance, NPStream* stream,
832                                    const char* fname);
833 void    NP_LOADDS NPP_Print(NPP instance, NPPrint* platformPrint);
834 int16_t NP_LOADDS NPP_HandleEvent(NPP instance, void* event);
835 void    NP_LOADDS NPP_URLNotify(NPP instance, const char* url,
836                                 NPReason reason, void* notifyData);
837 jref    NP_LOADDS NPP_GetJavaClass(void);
838 NPError NP_LOADDS NPP_GetValue(NPP instance, NPPVariable variable, void *value);
839 NPError NP_LOADDS NPP_SetValue(NPP instance, NPNVariable variable, void *value);
840 NPBool  NP_LOADDS NPP_GotFocus(NPP instance, NPFocusDirection direction);
841 void    NP_LOADDS NPP_LostFocus(NPP instance);
842 void    NP_LOADDS NPP_URLRedirectNotify(NPP instance, const char* url, int32_t status, void* notifyData);
843 NPError NP_LOADDS NPP_ClearSiteData(const char* site, uint64_t flags, uint64_t maxAge);
844 char**  NP_LOADDS NPP_GetSitesWithData(void);
845 
846 /* NPN_* functions are provided by the navigator and called by the plugin. */
847 void        NP_LOADDS NPN_Version(int* plugin_major, int* plugin_minor,
848                                   int* netscape_major, int* netscape_minor);
849 NPError     NP_LOADDS NPN_GetURLNotify(NPP instance, const char* url,
850                                        const char* target, void* notifyData);
851 NPError     NP_LOADDS NPN_GetURL(NPP instance, const char* url,
852                                  const char* target);
853 NPError     NP_LOADDS NPN_PostURLNotify(NPP instance, const char* url,
854                                         const char* target, uint32_t len,
855                                         const char* buf, NPBool file,
856                                         void* notifyData);
857 NPError     NP_LOADDS NPN_PostURL(NPP instance, const char* url,
858                                   const char* target, uint32_t len,
859                                   const char* buf, NPBool file);
860 NPError     NP_LOADDS NPN_RequestRead(NPStream* stream, NPByteRange* rangeList);
861 NPError     NP_LOADDS NPN_NewStream(NPP instance, NPMIMEType type,
862                                     const char* target, NPStream** stream);
863 int32_t     NP_LOADDS NPN_Write(NPP instance, NPStream* stream, int32_t len,
864                                 void* buffer);
865 NPError     NP_LOADDS NPN_DestroyStream(NPP instance, NPStream* stream,
866                                         NPReason reason);
867 void        NP_LOADDS NPN_Status(NPP instance, const char* message);
868 const char* NP_LOADDS NPN_UserAgent(NPP instance);
869 void*       NP_LOADDS NPN_MemAlloc(uint32_t size);
870 void        NP_LOADDS NPN_MemFree(void* ptr);
871 uint32_t    NP_LOADDS NPN_MemFlush(uint32_t size);
872 void        NP_LOADDS NPN_ReloadPlugins(NPBool reloadPages);
873 JRIEnv*     NP_LOADDS NPN_GetJavaEnv(void);
874 jref        NP_LOADDS NPN_GetJavaPeer(NPP instance);
875 NPError     NP_LOADDS NPN_GetValue(NPP instance, NPNVariable variable,
876                                    void *value);
877 NPError     NP_LOADDS NPN_SetValue(NPP instance, NPPVariable variable,
878                                    void *value);
879 void        NP_LOADDS NPN_InvalidateRect(NPP instance, NPRect *invalidRect);
880 void        NP_LOADDS NPN_InvalidateRegion(NPP instance,
881                                            NPRegion invalidRegion);
882 void        NP_LOADDS NPN_ForceRedraw(NPP instance);
883 void        NP_LOADDS NPN_PushPopupsEnabledState(NPP instance, NPBool enabled);
884 void        NP_LOADDS NPN_PopPopupsEnabledState(NPP instance);
885 void        NP_LOADDS NPN_PluginThreadAsyncCall(NPP instance,
886                                                 void (*func) (void *),
887                                                 void *userData);
888 NPError     NP_LOADDS NPN_GetValueForURL(NPP instance, NPNURLVariable variable,
889                                          const char *url, char **value,
890                                          uint32_t *len);
891 NPError     NP_LOADDS NPN_SetValueForURL(NPP instance, NPNURLVariable variable,
892                                          const char *url, const char *value,
893                                          uint32_t len);
894 NPError     NP_LOADDS NPN_GetAuthenticationInfo(NPP instance,
895                                                 const char *protocol,
896                                                 const char *host, int32_t port,
897                                                 const char *scheme,
898                                                 const char *realm,
899                                                 char **username, uint32_t *ulen,
900                                                 char **password,
901                                                 uint32_t *plen);
902 uint32_t    NP_LOADDS NPN_ScheduleTimer(NPP instance, uint32_t interval, NPBool repeat, void (*timerFunc)(NPP npp, uint32_t timerID));
903 void        NP_LOADDS NPN_UnscheduleTimer(NPP instance, uint32_t timerID);
904 NPError     NP_LOADDS NPN_PopUpContextMenu(NPP instance, NPMenu* menu);
905 NPBool      NP_LOADDS NPN_ConvertPoint(NPP instance, double sourceX, double sourceY, NPCoordinateSpace sourceSpace, double *destX, double *destY, NPCoordinateSpace destSpace);
906 
907 #ifdef __cplusplus
908 }  /* end extern "C" */
909 #endif
910 
911 #endif /* RC_INVOKED */
912 #if defined(__OS2__)
913 #pragma pack()
914 #endif
915 
916 #endif /* npapi_h_ */
917