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