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