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