- add sources.
[platform/framework/web/crosswalk.git] / src / third_party / npapi / npspy / extern / plugin / npapi.h
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
39 /*
40  *  npapi.h $Revision: 3.46 $
41  *  Netscape client plug-in API spec
42  */
43
44 #ifndef _NPAPI_H_
45 #define _NPAPI_H_
46
47 #ifdef __OS2__
48 #pragma pack(1)
49 #endif
50
51 #include "prtypes.h"
52 /* Copied from xp_core.h */
53 /* removed #ifdef for hpux defined in /usr/include/model.h */
54 #ifndef _INT16
55 #define _INT16
56 #endif
57 #ifndef _INT32
58 #define _INT32
59 #endif
60 #ifndef _UINT16
61 #define _UINT16
62 #endif
63 #ifndef _UINT32
64 #define _UINT32
65 #endif
66
67 /* 
68  * NO_NSPR_10_SUPPORT disables the inclusion 
69  * of obsolete/protypes.h, whose int16, uint16, 
70  * int32, and uint32 typedefs conflict with those 
71  * in this file. 
72  */ 
73 #ifndef NO_NSPR_10_SUPPORT
74 #define NO_NSPR_10_SUPPORT
75 #endif
76 #ifdef OJI
77 #include "jri.h"                /* Java Runtime Interface */
78 #endif
79
80 #if defined (__OS2__ ) || defined (OS2)
81 #       ifndef XP_OS2
82 #               define XP_OS2 1
83 #       endif /* XP_OS2 */
84 #endif /* __OS2__ */
85
86 #ifdef _WINDOWS
87 #       include <windef.h>
88 #       ifndef XP_WIN
89 #               define XP_WIN 1
90 #       endif /* XP_WIN */
91 #endif /* _WINDOWS */
92
93 #ifdef __MWERKS__
94 #       define _declspec __declspec
95 #       ifdef __INTEL__
96 #               undef NULL
97 #               ifndef XP_WIN
98 #                       define XP_WIN 1
99 #               endif /* XP_WIN */
100 #       endif /* __INTEL__ */
101 #endif /* __MWERKS__ */
102
103 #ifdef XP_MACOSX
104 #include <Carbon/Carbon.h>
105 #ifdef __LP64__
106 #define NP_NO_QUICKDRAW
107 #endif
108 #endif
109
110 #if defined(XP_UNIX) 
111 #       include <stdio.h>
112 #       if defined(MOZ_X11)
113 #               include <X11/Xlib.h>
114 #               include <X11/Xutil.h>
115 #       endif
116 #endif
117
118 /*----------------------------------------------------------------------*/
119 /*                        Plugin Version Constants                      */
120 /*----------------------------------------------------------------------*/
121
122 #define NP_VERSION_MAJOR 0
123 #define NP_VERSION_MINOR 19
124
125
126 /* The OS/2 version of Netscape uses RC_DATA to define the
127    mime types, file extensions, etc that are required.
128    Use a vertical bar to separate types, end types with \0.
129    FileVersion and ProductVersion are 32bit ints, all other
130    entries are strings the MUST be terminated wwith a \0.
131
132 AN EXAMPLE:
133
134 RCDATA NP_INFO_ProductVersion { 1,0,0,1,}
135
136 RCDATA NP_INFO_MIMEType    { "video/x-video|",
137                              "video/x-flick\0" }
138 RCDATA NP_INFO_FileExtents { "avi|",
139                              "flc\0" }
140 RCDATA NP_INFO_FileOpenName{ "MMOS2 video player(*.avi)|",
141                              "MMOS2 Flc/Fli player(*.flc)\0" }
142
143 RCDATA NP_INFO_FileVersion       { 1,0,0,1 }
144 RCDATA NP_INFO_CompanyName       { "Netscape Communications\0" }
145 RCDATA NP_INFO_FileDescription   { "NPAVI32 Extension DLL\0"
146 RCDATA NP_INFO_InternalName      { "NPAVI32\0" )
147 RCDATA NP_INFO_LegalCopyright    { "Copyright Netscape Communications \251 1996\0"
148 RCDATA NP_INFO_OriginalFilename  { "NVAPI32.DLL" }
149 RCDATA NP_INFO_ProductName       { "NPAVI32 Dynamic Link Library\0" }
150
151 */
152
153
154 /* RC_DATA types for version info - required */
155 #define NP_INFO_ProductVersion      1
156 #define NP_INFO_MIMEType            2
157 #define NP_INFO_FileOpenName        3
158 #define NP_INFO_FileExtents         4
159
160 /* RC_DATA types for version info - used if found */
161 #define NP_INFO_FileDescription     5
162 #define NP_INFO_ProductName         6
163
164 /* RC_DATA types for version info - optional */
165 #define NP_INFO_CompanyName         7
166 #define NP_INFO_FileVersion         8
167 #define NP_INFO_InternalName        9
168 #define NP_INFO_LegalCopyright      10
169 #define NP_INFO_OriginalFilename    11
170
171 #ifndef RC_INVOKED
172
173
174
175 /*----------------------------------------------------------------------*/
176 /*                       Definition of Basic Types                      */
177 /*----------------------------------------------------------------------*/
178
179 #ifndef _UINT16
180 typedef unsigned short uint16;
181 #endif
182
183 #ifndef _UINT32
184 #    if defined(__alpha) || defined(__amd64__) || defined(__x86_64__)
185 typedef unsigned int uint32;
186 #    else  /* __alpha */
187 typedef unsigned long uint32;
188 #    endif /* __alpha */
189 #endif
190
191 /*
192  * AIX defines these in sys/inttypes.h included from sys/types.h
193  */
194 #ifndef AIX
195 #ifndef _INT16
196 typedef short int16;
197 #endif
198
199 #ifndef _INT32
200 #    if defined(__alpha) || defined(__amd64__) || defined(__x86_64__)
201 typedef int int32;
202 #    else  /* __alpha */
203 typedef long int32;
204 #    endif /* __alpha */
205 #endif
206 #endif
207
208 #ifndef FALSE
209 #define FALSE (0)
210 #endif
211 #ifndef TRUE
212 #define TRUE (1)
213 #endif
214 #ifndef NULL
215 #define NULL (0L)
216 #endif
217
218 #ifdef XP_MACOSX
219 typedef enum {
220 #ifndef NP_NO_QUICKDRAW
221   NPDrawingModelQuickDraw = 0,
222 #endif
223   NPDrawingModelCoreGraphics = 1
224 } NPDrawingModel;
225 #endif
226
227 typedef unsigned char   NPBool;
228 typedef int16                   NPError;
229 typedef int16                   NPReason;
230 typedef char*                   NPMIMEType;
231
232
233
234 /*----------------------------------------------------------------------*/
235 /*                       Structures and definitions                     */
236 /*----------------------------------------------------------------------*/
237
238 /*
239  *  NPP is a plug-in's opaque instance handle
240  */
241 typedef struct _NPP
242 {
243   void* pdata;      /* plug-in private data */
244   void* ndata;      /* netscape private data */
245 } NPP_t;
246
247 typedef NPP_t*  NPP;
248
249
250 typedef struct _NPStream
251 {
252   void*  pdata; /* plug-in private data */
253   void*  ndata; /* netscape private data */
254   const  char* url;
255   uint32 end;
256   uint32 lastmodified;
257   void*  notifyData;
258   const  char* headers; /* Response headers from host.
259                          * Exists only for >= NPVERS_HAS_RESPONSE_HEADERS.
260                          * Used for HTTP only; NULL for non-HTTP.
261                          * Available from NPP_NewStream onwards.
262                          * Plugin should copy this data before storing it.
263                          * Includes HTTP status line and all headers,
264                          * preferably verbatim as received from server,
265                          * headers formatted as in HTTP ("Header: Value"),
266                          * and newlines (\n, NOT \r\n) separating lines.
267                          * Terminated by \n\0 (NOT \n\n\0). */
268 } NPStream;
269
270
271 typedef struct _NPByteRange
272 {
273   int32  offset; /* negative offset means from the end */
274   uint32 length;
275   struct _NPByteRange* next;
276 } NPByteRange;
277
278
279 typedef struct _NPSavedData
280 {
281   int32 len;
282   void* buf;
283 } NPSavedData;
284
285
286 typedef struct _NPRect
287 {
288   uint16 top;
289   uint16 left;
290   uint16 bottom;
291   uint16 right;
292 } NPRect;
293
294 typedef struct _NPSize 
295
296   int32 width; 
297   int32 height; 
298 } NPSize; 
299
300 #ifdef XP_UNIX
301 /*
302  * Unix specific structures and definitions
303  */
304
305 /*
306  * Callback Structures.
307  *
308  * These are used to pass additional platform specific information.
309  */
310 enum {
311   NP_SETWINDOW = 1,
312   NP_PRINT
313 };
314
315 typedef struct
316 {
317   int32 type;
318 } NPAnyCallbackStruct;
319
320 typedef struct
321 {
322   int32        type;
323 #ifdef MOZ_X11
324   Display*     display;
325   Visual*      visual;
326   Colormap     colormap;
327   unsigned int depth;
328 #endif
329 } NPSetWindowCallbackStruct;
330
331 typedef struct
332 {
333   int32 type;
334   FILE* fp;
335 } NPPrintCallbackStruct;
336
337 #endif /* XP_UNIX */
338
339
340 /*
341  *   The following masks are applied on certain platforms to NPNV and 
342  *   NPPV selectors that pass around pointers to COM interfaces. Newer 
343  *   compilers on some platforms may generate vtables that are not 
344  *   compatible with older compilers. To prevent older plugins from 
345  *   not understanding a new browser's ABI, these masks change the 
346  *   values of those selectors on those platforms. To remain backwards
347  *   compatible with differenet versions of the browser, plugins can 
348  *   use these masks to dynamically determine and use the correct C++
349  *   ABI that the browser is expecting. This does not apply to Windows 
350  *   as Microsoft's COM ABI will likely not change.
351  */
352
353 #define NP_ABI_GCC3_MASK  0x10000000
354 /*
355  *   gcc 3.x generated vtables on UNIX and OSX are incompatible with 
356  *   previous compilers.
357  */
358 #if (defined (XP_UNIX) && defined(__GNUC__) && (__GNUC__ >= 3))
359 #define _NP_ABI_MIXIN_FOR_GCC3 NP_ABI_GCC3_MASK
360 #else
361 #define _NP_ABI_MIXIN_FOR_GCC3 0
362 #endif
363
364
365 #define NP_ABI_MACHO_MASK 0x01000000
366 /*
367  *   On OSX, the Mach-O executable format is significantly
368  *   different than CFM. In addition to having a different
369  *   C++ ABI, it also has has different C calling convention.
370  *   You must use glue code when calling between CFM and
371  *   Mach-O C functions. 
372  */
373 #if (defined(TARGET_RT_MAC_MACHO))
374 #define _NP_ABI_MIXIN_FOR_MACHO NP_ABI_MACHO_MASK
375 #else
376 #define _NP_ABI_MIXIN_FOR_MACHO 0
377 #endif
378
379
380 #define NP_ABI_MASK (_NP_ABI_MIXIN_FOR_GCC3 | _NP_ABI_MIXIN_FOR_MACHO)
381
382 /*
383  * List of variable names for which NPP_GetValue shall be implemented
384  */
385 typedef enum {
386   NPPVpluginNameString = 1,
387   NPPVpluginDescriptionString,
388   NPPVpluginWindowBool,
389   NPPVpluginTransparentBool,
390   NPPVjavaClass,                /* Not implemented in Mozilla 1.0 */
391   NPPVpluginWindowSize,
392   NPPVpluginTimerInterval,
393
394   NPPVpluginScriptableInstance = (10 | NP_ABI_MASK),
395   NPPVpluginScriptableIID = 11,
396
397   /* Introduced in Mozilla 0.9.9 */
398   NPPVjavascriptPushCallerBool = 12,
399
400   /* Introduced in Mozilla 1.0 */
401   NPPVpluginKeepLibraryInMemory = 13,
402   NPPVpluginNeedsXEmbed         = 14,
403
404   /* Get the NPObject for scripting the plugin. Introduced in Firefox
405    * 1.0 (NPAPI minor version 14).
406    */
407   NPPVpluginScriptableNPObject  = 15,
408
409   /* Get the plugin value (as \0-terminated UTF-8 string data) for
410    * form submission if the plugin is part of a form. Use
411    * NPN_MemAlloc() to allocate memory for the string data. Introduced
412    * in Mozilla 1.8b2 (NPAPI minor version 15).
413    */
414   NPPVformValue = 16
415 } NPPVariable;
416
417 /*
418  * List of variable names for which NPN_GetValue is implemented by Mozilla
419  */
420 typedef enum {
421   NPNVxDisplay = 1,
422   NPNVxtAppContext,
423   NPNVnetscapeWindow,
424   NPNVjavascriptEnabledBool,
425   NPNVasdEnabledBool,
426   NPNVisOfflineBool,
427
428   /* 10 and over are available on Mozilla builds starting with 0.9.4 */
429   NPNVserviceManager = (10 | NP_ABI_MASK),
430   NPNVDOMElement     = (11 | NP_ABI_MASK),   /* available in Mozilla 1.2 */
431   NPNVDOMWindow      = (12 | NP_ABI_MASK),
432   NPNVToolkit        = (13 | NP_ABI_MASK),
433   NPNVSupportsXEmbedBool = 14,
434
435   /* Get the NPObject wrapper for the browser window. */
436   NPNVWindowNPObject = 15,
437
438   /* Get the NPObject wrapper for the plugins DOM element. */
439   NPNVPluginElementNPObject = 16
440
441 #ifdef XP_MACOSX
442   /* Used for negotiating drawing models */
443   , NPNVpluginDrawingModel = 1000
444 #ifndef NP_NO_QUICKDRAW
445   , NPNVsupportsQuickDrawBool = 2000
446 #endif
447   , NPNVsupportsCoreGraphicsBool = 2001
448 #endif
449 } NPNVariable;
450
451 /*
452  * The type of Tookkit the widgets use
453  */
454 typedef enum {
455   NPNVGtk12 = 1,
456   NPNVGtk2
457 } NPNToolkitType;
458
459 /*
460  * The type of a NPWindow - it specifies the type of the data structure
461  * returned in the window field.
462  */
463 typedef enum {
464   NPWindowTypeWindow = 1,
465   NPWindowTypeDrawable
466 } NPWindowType;
467
468 typedef struct _NPWindow
469 {
470   void* window;  /* Platform specific window handle */
471                  /* OS/2: x - Position of bottom left corner  */
472                  /* OS/2: y - relative to visible netscape window */
473   int32 x;       /* Position of top left corner relative */
474   int32 y;       /* to a netscape page.                                 */
475   uint32 width;  /* Maximum window size */
476   uint32 height;
477   NPRect clipRect; /* Clipping rectangle in port coordinates */
478                    /* Used by MAC only.                   */
479 #if defined(XP_UNIX) && !defined(XP_MACOSX)
480   void * ws_info; /* Platform-dependent additonal data */
481 #endif /* XP_UNIX */
482   NPWindowType type; /* Is this a window or a drawable? */
483 } NPWindow;
484
485
486 typedef struct _NPFullPrint
487 {
488   NPBool pluginPrinted;/* Set TRUE if plugin handled fullscreen printing */
489   NPBool printOne;               /* TRUE if plugin should print one copy to default printer */
490   void* platformPrint; /* Platform-specific printing info */
491 } NPFullPrint;
492
493 typedef struct _NPEmbedPrint
494 {
495   NPWindow window;
496   void* platformPrint; /* Platform-specific printing info */
497 } NPEmbedPrint;
498
499 typedef struct _NPPrint
500 {
501   uint16 mode;               /* NP_FULL or NP_EMBED */
502   union
503   {
504     NPFullPrint fullPrint;   /* if mode is NP_FULL */
505     NPEmbedPrint embedPrint; /* if mode is NP_EMBED */
506   } print;
507 } NPPrint;
508
509 #ifdef XP_MACOSX
510 typedef EventRecord     NPEvent;
511 #elif defined(XP_WIN)
512 typedef struct _NPEvent
513 {
514   uint16 event;
515   uint32 wParam;
516   uint32 lParam;
517 } NPEvent;
518 #elif defined(XP_OS2)
519 typedef struct _NPEvent
520 {
521   uint32 event;
522   uint32 wParam;
523   uint32 lParam;
524 } NPEvent;
525 #elif defined (XP_UNIX) && defined(MOZ_X11)
526 typedef XEvent NPEvent;
527 #else
528 typedef void*                   NPEvent;
529 #endif /* XP_MACOSX */
530
531 #ifdef XP_MACOSX
532 typedef void* NPRegion;
533 #ifndef NP_NO_QUICKDRAW
534 typedef RgnHandle NPQDRegion;
535 #endif
536 typedef CGPathRef NPCGRegion;
537 #elif defined(XP_WIN)
538 typedef HRGN NPRegion;
539 #elif defined(XP_UNIX) && defined(MOZ_X11)
540 typedef Region NPRegion;
541 #else
542 typedef void *NPRegion;
543 #endif /* XP_MACOSX */
544
545 #ifdef XP_MACOSX
546 /*
547  *  Mac-specific structures and definitions.
548  */
549
550 typedef struct NP_Port
551 {
552   CGrafPtr port; /* Grafport */
553   int32 portx;   /* position inside the topmost window */
554   int32 porty;
555 } NP_Port;
556
557 typedef struct NP_CGContext
558 {
559   CGContextRef context;
560   WindowRef window;
561 } NP_CGContext;
562
563 /*
564  *  Non-standard event types that can be passed to HandleEvent
565  */
566
567 enum NPEventType {
568   NPEventType_GetFocusEvent = (osEvt + 16),
569   NPEventType_LoseFocusEvent,
570   NPEventType_AdjustCursorEvent,
571   NPEventType_MenuCommandEvent,
572   NPEventType_ClippingChangedEvent,
573   NPEventType_ScrollingBeginsEvent = 1000,
574   NPEventType_ScrollingEndsEvent
575 };
576
577 #ifdef OBSOLETE
578 #define getFocusEvent     (osEvt + 16)
579 #define loseFocusEvent    (osEvt + 17)
580 #define adjustCursorEvent (osEvt + 18)
581 #endif
582 #endif /* XP_MACOSX */
583
584 /*
585  * Values for mode passed to NPP_New:
586  */
587 #define NP_EMBED 1
588 #define NP_FULL  2
589
590 /*
591  * Values for stream type passed to NPP_NewStream:
592  */
593 #define NP_NORMAL     1
594 #define NP_SEEK       2
595 #define NP_ASFILE     3
596 #define NP_ASFILEONLY 4
597
598 #define NP_MAXREADY     (((unsigned)(~0)<<1)>>1)
599
600
601 /*----------------------------------------------------------------------*/
602 /*                   Error and Reason Code definitions                  */
603 /*----------------------------------------------------------------------*/
604
605 /*
606  * Values of type NPError:
607  */
608 #define NPERR_BASE                         0
609 #define NPERR_NO_ERROR                    (NPERR_BASE + 0)
610 #define NPERR_GENERIC_ERROR               (NPERR_BASE + 1)
611 #define NPERR_INVALID_INSTANCE_ERROR      (NPERR_BASE + 2)
612 #define NPERR_INVALID_FUNCTABLE_ERROR     (NPERR_BASE + 3)
613 #define NPERR_MODULE_LOAD_FAILED_ERROR    (NPERR_BASE + 4)
614 #define NPERR_OUT_OF_MEMORY_ERROR         (NPERR_BASE + 5)
615 #define NPERR_INVALID_PLUGIN_ERROR        (NPERR_BASE + 6)
616 #define NPERR_INVALID_PLUGIN_DIR_ERROR    (NPERR_BASE + 7)
617 #define NPERR_INCOMPATIBLE_VERSION_ERROR  (NPERR_BASE + 8)
618 #define NPERR_INVALID_PARAM               (NPERR_BASE + 9)
619 #define NPERR_INVALID_URL                 (NPERR_BASE + 10)
620 #define NPERR_FILE_NOT_FOUND              (NPERR_BASE + 11)
621 #define NPERR_NO_DATA                     (NPERR_BASE + 12)
622 #define NPERR_STREAM_NOT_SEEKABLE         (NPERR_BASE + 13)
623
624 /*
625  * Values of type NPReason:
626  */
627 #define NPRES_BASE          0
628 #define NPRES_DONE         (NPRES_BASE + 0)
629 #define NPRES_NETWORK_ERR  (NPRES_BASE + 1)
630 #define NPRES_USER_BREAK   (NPRES_BASE + 2)
631
632 /*
633  * Don't use these obsolete error codes any more.
634  */
635 #define NP_NOERR  NP_NOERR_is_obsolete_use_NPERR_NO_ERROR
636 #define NP_EINVAL NP_EINVAL_is_obsolete_use_NPERR_GENERIC_ERROR
637 #define NP_EABORT NP_EABORT_is_obsolete_use_NPRES_USER_BREAK
638
639 /*
640  * Version feature information
641  */
642 #define NPVERS_HAS_STREAMOUTPUT             8
643 #define NPVERS_HAS_NOTIFICATION             9
644 #define NPVERS_HAS_LIVECONNECT              9
645 #define NPVERS_WIN16_HAS_LIVECONNECT        9
646 #define NPVERS_68K_HAS_LIVECONNECT          11
647 #define NPVERS_HAS_WINDOWLESS               11
648 #define NPVERS_HAS_XPCONNECT_SCRIPTING      13
649 #define NPVERS_HAS_NPRUNTIME_SCRIPTING      14
650 #define NPVERS_HAS_FORM_VALUES              15
651 #define NPVERS_HAS_POPUPS_ENABLED_STATE     16
652 #define NPVERS_HAS_RESPONSE_HEADERS         17
653 #define NPVERS_HAS_NPOBJECT_ENUM            18
654 #define NPVERS_HAS_PLUGIN_THREAD_ASYNC_CALL 19
655
656 /*----------------------------------------------------------------------*/
657 /*                        Function Prototypes                           */
658 /*----------------------------------------------------------------------*/
659
660 #if defined(_WINDOWS) && !defined(WIN32)
661 #define NP_LOADDS  _loadds
662 #else
663 #if defined(__OS2__)
664 #define NP_LOADDS _System
665 #else
666 #define NP_LOADDS
667 #endif
668 #endif
669
670 #ifdef __cplusplus
671 extern "C" {
672 #endif
673
674 /*
675  * NPP_* functions are provided by the plugin and called by the navigator.
676  */
677
678 #ifdef XP_UNIX
679 char* NPP_GetMIMEDescription(void);
680 #endif /* XP_UNIX */
681
682 NPError NP_LOADDS NPP_Initialize(void);
683 void    NP_LOADDS NPP_Shutdown(void);
684 NPError NP_LOADDS NPP_New(NPMIMEType pluginType, NPP instance,
685                           uint16 mode, int16 argc, char* argn[],
686                           char* argv[], NPSavedData* saved);
687 NPError NP_LOADDS NPP_Destroy(NPP instance, NPSavedData** save);
688 NPError NP_LOADDS NPP_SetWindow(NPP instance, NPWindow* window);
689 NPError NP_LOADDS NPP_NewStream(NPP instance, NPMIMEType type,
690                                 NPStream* stream, NPBool seekable,
691                                 uint16* stype);
692 NPError NP_LOADDS NPP_DestroyStream(NPP instance, NPStream* stream,
693                                     NPReason reason);
694 int32   NP_LOADDS NPP_WriteReady(NPP instance, NPStream* stream);
695 int32   NP_LOADDS NPP_Write(NPP instance, NPStream* stream, int32 offset,
696                             int32 len, void* buffer);
697 void    NP_LOADDS NPP_StreamAsFile(NPP instance, NPStream* stream,
698                                    const char* fname);
699 void    NP_LOADDS NPP_Print(NPP instance, NPPrint* platformPrint);
700 int16   NP_LOADDS NPP_HandleEvent(NPP instance, void* event);
701 void    NP_LOADDS NPP_URLNotify(NPP instance, const char* url,
702                                 NPReason reason, void* notifyData);
703 #ifdef OJI
704 jref    NP_LOADDS NPP_GetJavaClass(void);
705 #endif
706 NPError NP_LOADDS NPP_GetValue(NPP instance, NPPVariable variable, void *value);
707 NPError NP_LOADDS NPP_SetValue(NPP instance, NPNVariable variable, void *value);
708
709 /*
710  * NPN_* functions are provided by the navigator and called by the plugin.
711  */
712 void    NP_LOADDS NPN_Version(int* plugin_major, int* plugin_minor,
713                               int* netscape_major, int* netscape_minor);
714 NPError NP_LOADDS NPN_GetURLNotify(NPP instance, const char* url,
715                                    const char* target, void* notifyData);
716 NPError NP_LOADDS NPN_GetURL(NPP instance, const char* url,
717                              const char* target);
718 NPError NP_LOADDS NPN_PostURLNotify(NPP instance, const char* url,
719                                     const char* target, uint32 len,
720                                     const char* buf, NPBool file,
721                                     void* notifyData);
722 NPError NP_LOADDS NPN_PostURL(NPP instance, const char* url,
723                               const char* target, uint32 len,
724                               const char* buf, NPBool file);
725 NPError NP_LOADDS NPN_RequestRead(NPStream* stream, NPByteRange* rangeList);
726 NPError NP_LOADDS NPN_NewStream(NPP instance, NPMIMEType type,
727                                 const char* target, NPStream** stream);
728 int32   NP_LOADDS NPN_Write(NPP instance, NPStream* stream, int32 len, void* buffer);
729 NPError NP_LOADDS NPN_DestroyStream(NPP instance, NPStream* stream, NPReason reason);
730 void    NP_LOADDS NPN_Status(NPP instance, const char* message);
731 const char* NP_LOADDS   NPN_UserAgent(NPP instance);
732 void*   NP_LOADDS NPN_MemAlloc(uint32 size);
733 void    NP_LOADDS NPN_MemFree(void* ptr);
734 uint32  NP_LOADDS NPN_MemFlush(uint32 size);
735 void    NP_LOADDS NPN_ReloadPlugins(NPBool reloadPages);
736 #ifdef OJI
737 JRIEnv* NP_LOADDS NPN_GetJavaEnv(void);
738 jref    NP_LOADDS NPN_GetJavaPeer(NPP instance);
739 #endif
740 NPError NP_LOADDS NPN_GetValue(NPP instance, NPNVariable variable, void *value);
741 NPError NP_LOADDS NPN_SetValue(NPP instance, NPPVariable variable, void *value);
742 void    NP_LOADDS NPN_InvalidateRect(NPP instance, NPRect *invalidRect);
743 void    NP_LOADDS NPN_InvalidateRegion(NPP instance, NPRegion invalidRegion);
744 void    NP_LOADDS NPN_ForceRedraw(NPP instance);
745 //jam changed two functions below to return bool
746 bool    NP_LOADDS NPN_PushPopupsEnabledState(NPP instance, NPBool enabled);
747 bool    NP_LOADDS NPN_PopPopupsEnabledState(NPP instance);
748 void    NP_LOADDS NPN_PluginThreadAsyncCall(NPP instance,
749                                             void (*func) (void *),
750                                             void *userData);
751
752 #ifdef __cplusplus
753 }  /* end extern "C" */
754 #endif
755
756 #endif /* RC_INVOKED */
757 #ifdef __OS2__
758 #pragma pack()
759 #endif
760
761 #endif /* _NPAPI_H_ */