Fixing bug 250666. Implementing the NPAPI extensions for npruntime plugin scriptability. r+sr=brendan@mozilla.org, a=asa@mozilla.org

git-svn-id: svn://10.0.0.236/trunk@159061 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
jst%mozilla.jstenback.com
2004-07-12 15:53:22 +00:00
parent 17b20a4c15
commit 58ccff4abd
17 changed files with 2974 additions and 268 deletions

View File

@@ -55,11 +55,16 @@ EXPORTS = \
nsPluginsCID.h \
npapi.h \
npupp.h \
npruntime.h \
nptypes.h \
nsINPRuntimePlugin.h \
$(NULL)
SDK_HEADERS = \
npapi.h \
npupp.h \
nptypes.h \
npruntime.h \
$(NULL)
XPIDLSRCS = \

View File

@@ -37,7 +37,7 @@
/*
* npapi.h $Revision: 3.34 $
* npapi.h $Revision: 3.35 $
* Netscape client plug-in API spec
*/
@@ -125,7 +125,7 @@
/*----------------------------------------------------------------------*/
#define NP_VERSION_MAJOR 0
#define NP_VERSION_MINOR 13
#define NP_VERSION_MINOR 14
/* The OS/2 version of Netscape uses RC_DATA to define the
@@ -186,7 +186,7 @@ typedef unsigned short uint16;
#endif
#ifndef _UINT32
# if defined(__alpha)
# if defined(__alpha) || defined(__amd64__) defined(__x86_64__)
typedef unsigned int uint32;
# else /* __alpha */
typedef unsigned long uint32;
@@ -202,7 +202,7 @@ typedef short int16;
#endif
#ifndef _INT32
# if defined(__alpha)
# if defined(__alpha) || defined(__amd64__) defined(__x86_64__)
typedef int int32;
# else /* __alpha */
typedef long int32;
@@ -387,7 +387,10 @@ typedef enum {
/* 12 and over are available on Mozilla builds starting with 0.9.9 */
NPPVjavascriptPushCallerBool = 12,
NPPVpluginKeepLibraryInMemory = 13, /* available in Mozilla 1.0 */
NPPVpluginNeedsXEmbed = 14
NPPVpluginNeedsXEmbed = 14,
/* Get the NPObject for scripting the plugin. */
NPPVpluginScriptableNPObject = 15
} NPPVariable;
/*
@@ -406,7 +409,13 @@ typedef enum {
NPNVDOMElement = (11 | NP_ABI_MASK), /* available in Mozilla 1.2 */
NPNVDOMWindow = (12 | NP_ABI_MASK),
NPNVToolkit = (13 | NP_ABI_MASK),
NPNVSupportsXEmbedBool = 14
NPNVSupportsXEmbedBool = 14,
/* Get the NPObject wrapper for the browser window. */
NPNVWindowNPObject = 15,
/* Get the NPObject wrapper for the plugins DOM element. */
NPNVPluginElementNPObject = 16
} NPNVariable;
/*
@@ -653,6 +662,9 @@ void NP_LOADDS NPP_URLNotify(NPP instance, const char* url,
jref NP_LOADDS NPP_GetJavaClass(void);
#endif
NPError NP_LOADDS NPP_GetValue(NPP instance, NPPVariable variable, void *value);
/*
* Uh, shouldn't NPP_SetValue() take an NPPVariable and not an NPNVariable?
*/
NPError NP_LOADDS NPP_SetValue(NPP instance, NPNVariable variable, void *value);
/*

View File

@@ -0,0 +1,389 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* Copyright © 2004, Apple Computer, Inc. and The Mozilla Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the names of Apple Computer, Inc. ("Apple") or The Mozilla
* Foundation ("Mozilla") nor the names of their contributors may be used
* to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY APPLE, MOZILLA AND THEIR CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE, MOZILLA OR
* THEIR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Revision 1 (March 4, 2004):
* Initial proposal.
*
* Revision 2 (March 10, 2004):
* All calls into script were made asynchronous. Results are
* provided via the NPScriptResultFunctionPtr callback.
*
* Revision 3 (March 10, 2004):
* Corrected comments to not refer to class retain/release FunctionPtrs.
*
* Revision 4 (March 11, 2004):
* Added additional convenience NPN_SetExceptionWithUTF8().
* Changed NPHasPropertyFunctionPtr and NPHasMethodFunctionPtr to take NPClass
* pointers instead of NPObject pointers.
* Added NPIsValidIdentifier().
*
* Revision 5 (March 17, 2004):
* Added context parameter to result callbacks from ScriptObject functions.
*
* Revision 6 (March 29, 2004):
* Renamed functions implemented by user agent to NPN_*. Removed _ from
* type names.
* Renamed "JavaScript" types to "Script".
*
* Revision 7 (April 21, 2004):
* NPIdentifier becomes a void*, was int32_t
* Remove NP_IsValidIdentifier, renamed NP_IdentifierFromUTF8 to NP_GetIdentifier
* Added NPVariant and modified functions to use this new type.
*
* Revision 8 (July 9, 2004):
* Updated to joint Apple-Mozilla license.
*
*/
#ifndef _NP_RUNTIME_H_
#define _NP_RUNTIME_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "nptypes.h"
/*
This API is used to facilitate binding code written in C to script
objects. The API in this header does not assume the presence of a
user agent. That is, it can be used to bind C code to scripting
environments outside of the context of a user agent.
However, the normal use of the this API is in the context of a
scripting environment running in a browser or other user agent.
In particular it is used to support the extended Netscape
script-ability API for plugins (NP-SAP). NP-SAP is an extension
of the Netscape plugin API. As such we have adopted the use of
the "NP" prefix for this API.
The following NP{N|P}Variables were added to the Netscape plugin
API (in npapi.h):
NPNVWindowNPObject
NPNVPluginElementNPObject
NPPVpluginScriptableNPObject
These variables are exposed through NPN_GetValue() and
NPP_GetValue() (respectively) and are used to establish the
initial binding between the user agent and native code. The DOM
objects in the user agent can be examined and manipulated using
the NPN_ functions that operate on NPObjects described in this
header.
To the extent possible the assumptions about the scripting
language used by the scripting environment have been minimized.
*/
#define NP_BEGIN_MACRO do {
#define NP_END_MACRO } while (0)
/*
Objects (non-primitive data) passed between 'C' and script is
always wrapped in an NPObject. The 'interface' of an NPObject is
described by an NPClass.
*/
typedef struct NPObject NPObject;
typedef struct NPClass NPClass;
typedef char NPUTF8;
typedef struct _NPString {
const NPUTF8 *utf8characters;
uint32_t utf8length;
} NPString;
typedef enum {
NPVariantType_Void,
NPVariantType_Null,
NPVariantType_Bool,
NPVariantType_Int32,
NPVariantType_Double,
NPVariantType_String,
NPVariantType_Object
} NPVariantType;
typedef struct _NPVariant {
NPVariantType type;
union {
bool boolValue;
uint32_t intValue;
double doubleValue;
NPString stringValue;
NPObject *objectValue;
} value;
} NPVariant;
/*
NPN_ReleaseVariantValue is called on all 'out' parameters
references. Specifically it is to be called on variants that own
their value, as is the case with all non-const NPVariant*
arguments after a successful call to any methods (except this one)
in this API.
After calling NPN_ReleaseVariantValue, the type of the variant
will be NPVariantType_Void.
*/
void NPN_ReleaseVariantValue(NPVariant *variant);
#define NPVARIANT_IS_VOID(_v) ((_v).type == NPVariantType_Void)
#define NPVARIANT_IS_NULL(_v) ((_v).type == NPVariantType_Null)
#define NPVARIANT_IS_BOOLEAN(_v) ((_v).type == NPVariantType_Bool)
#define NPVARIANT_IS_INT32(_v) ((_v).type == NPVariantType_Int32)
#define NPVARIANT_IS_DOUBLE(_v) ((_v).type == NPVariantType_Double)
#define NPVARIANT_IS_STRING(_v) ((_v).type == NPVariantType_String)
#define NPVARIANT_IS_OBJECT(_v) ((_v).type == NPVariantType_Object)
#define NPVARIANT_TO_BOOLEAN(_v) ((_v).value.boolValue)
#define NPVARIANT_TO_INT32(_v) ((_v).value.intValue)
#define NPVARIANT_TO_DOUBLE(_v) ((_v).value.doubleValue)
#define NPVARIANT_TO_STRING(_v) ((_v).value.stringValue)
#define NPVARIANT_TO_OBJECT(_v) ((_v).value.objectValue)
#define VOID_TO_NPVARIANT(_v) \
NP_BEGIN_MACRO \
(_v).type = NPVariantType_Void; \
(_v).value.objectValue = NULL; \
NP_END_MACRO
#define NULL_TO_NPVARIANT(_v) \
NP_BEGIN_MACRO \
(_v).type = NPVariantType_Null; \
(_v).value.objectValue = NULL; \
NP_END_MACRO
#define BOOLEAN_TO_NPVARIANT(_val, _v) \
NP_BEGIN_MACRO \
(_v).type = NPVariantType_Bool; \
(_v).value.boolValue = !!(_val); \
NP_END_MACRO
#define INT32_TO_NPVARIANT(_val, _v) \
NP_BEGIN_MACRO \
(_v).type = NPVariantType_Int32; \
(_v).value.intValue = _val; \
NP_END_MACRO
#define DOUBLE_TO_NPVARIANT(_val, _v) \
NP_BEGIN_MACRO \
(_v).type = NPVariantType_Double; \
(_v).value.doubleValue = _val; \
NP_END_MACRO
#define STRINGZ_TO_NPVARIANT(_val, _v) \
NP_BEGIN_MACRO \
(_v).type = NPVariantType_String; \
NPString str = { _val, strlen(_val) }; \
(_v).value.stringValue = str; \
NP_END_MACRO
#define STRINGN_TO_NPVARIANT(_val, _len, _v) \
NP_BEGIN_MACRO \
(_v).type = NPVariantType_String; \
NPString str = { _val, _len }; \
(_v).value.stringValue = str; \
NP_END_MACRO
#define OBJECT_TO_NPVARIANT(_val, _v) \
NP_BEGIN_MACRO \
(_v).type = NPVariantType_Object; \
(_v).value.objectValue = _val; \
NP_END_MACRO
/*
Type mappings (JavaScript types have been used for illustration
purposes):
JavaScript to C (NPVariant with type:)
undefined NPVariantType_Void
null NPVariantType_Null
Boolean NPVariantType_Bool
Number NPVariantType_Double or NPVariantType_Int32
String NPVariantType_String
Object NPVariantType_Object
C (NPVariant with type:) to JavaScript
NPVariantType_Void undefined
NPVariantType_Null null
NPVariantType_Bool Boolean
NPVariantType_Int32 Number
NPVariantType_Double Number
NPVariantType_String String
NPVariantType_Object Object
*/
typedef void *NPIdentifier;
/*
NPObjects have methods and properties. Methods and properties are
identified with NPIdentifiers. These identifiers may be reflected
in script. NPIdentifiers can be either strings or integers, IOW,
methods and properties can be identified by either strings or
integers (i.e. foo["bar"] vs foo[1]). NPIdentifiers can be
compared using ==. In case of any errors, the requested
NPIdentifier(s) will be NULL.
*/
NPIdentifier NPN_GetStringIdentifier(const NPUTF8 *name);
void NPN_GetStringIdentifiers(const NPUTF8 **names, int32_t nameCount,
NPIdentifier *identifiers);
NPIdentifier NPN_GetIntIdentifier(int32_t intid);
bool NPN_IdentifierIsString(NPIdentifier *identifier);
/*
The NPUTF8 returned from NPN_UTF8FromIdentifier SHOULD be freed.
*/
NPUTF8 *NPN_UTF8FromIdentifier(NPIdentifier identifier);
/*
Get the integer represented by identifier. If identifier is not an
integer identifier, the behaviour is undefined.
*/
int32_t NPN_IntFromIdentifier(NPIdentifier identifier);
/*
NPObject behavior is implemented using the following set of
callback functions.
The NPVariant *result argument of these functions (where
applicable) should be released using NPN_ReleaseVariantValue().
*/
typedef NPObject *(*NPAllocateFunctionPtr)();
typedef void (*NPDeallocateFunctionPtr)(NPObject *npobj);
typedef void (*NPInvalidateFunctionPtr)(NPObject *npobj);
typedef bool (*NPHasMethodFunctionPtr)(NPObject *npobj, NPIdentifier name);
typedef bool (*NPInvokeFunctionPtr)(NPObject *npobj, NPIdentifier name,
const NPVariant *args, uint32_t argCount,
NPVariant *result);
typedef bool (*NPHasPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name);
typedef bool (*NPGetPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name,
NPVariant *result);
typedef bool (*NPSetPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name,
const NPVariant *value);
typedef bool (*NPRemovePropertyFunctionPtr)(NPObject *npobj, NPIdentifier name);
/*
NPObjects returned by create, retain, invoke, and getProperty pass
a reference count to the caller. That is, the callee adds a
reference count which passes to the caller. It is the caller's
responsibility to release the returned object.
NPInvokeFunctionPtr function may return 0 to indicate a void
result.
NPInvalidateFunctionPtr is called by the scripting environment
when the native code is shutdown. Any attempt to message a
NPObject instance after the invalidate callback has been
called will result in undefined behavior, even if the native code
is still retaining those NPObject instances. (The runtime
will typically return immediately, with 0 or NULL, from an attempt
to dispatch to a NPObject, but this behavior should not be
depended upon.)
*/
struct NPClass
{
uint32_t structVersion;
NPAllocateFunctionPtr allocate;
NPDeallocateFunctionPtr deallocate;
NPInvalidateFunctionPtr invalidate;
NPHasMethodFunctionPtr hasMethod;
NPInvokeFunctionPtr invoke;
NPHasPropertyFunctionPtr hasProperty;
NPGetPropertyFunctionPtr getProperty;
NPSetPropertyFunctionPtr setProperty;
NPRemovePropertyFunctionPtr removeProperty;
};
#define NP_CLASS_STRUCT_VERSION 1
struct NPObject {
NPClass *_class;
uint32_t referenceCount;
/*
* Additional space may be allocated here by types of NPObjects
*/
};
/*
If the class has an allocate function, NPN_CreateObject invokes
that function, otherwise a NPObject is allocated and
returned. This method will initialize the referenceCount member of
the NPObject to 1.
*/
NPObject *NPN_CreateObject(NPClass *aClass);
/*
Increment the NPObject's reference count.
*/
NPObject *NPN_RetainObject(NPObject *npobj);
/*
Decremented the NPObject's reference count. If the reference
count goes to zero, the class's destroy function is invoke if
specified, otherwise the object is freed directly.
*/
void NPN_ReleaseObject(NPObject *npobj);
/*
Functions to access script objects represented by NPObject.
Calls to script objects are synchronous. If a function returns a
value, it will be supplied via the result NPVariant
argument. Successful calls will return true, false will be
returned in case of an error.
Calls made from plugin code to script must be made from the thread
on which the plugin was initialized.
*/
bool NPN_Call(NPObject *npobj, NPIdentifier methodName,
const NPVariant *args, uint32_t argCount, NPVariant *result);
bool NPN_Evaluate(NPP npp, NPObject *npobj, NPString *script,
NPVariant *result);
bool NPN_GetProperty(NPObject *npobj, NPIdentifier propertyName,
NPVariant *result);
bool NPN_SetProperty(NPObject *npobj, NPIdentifier propertyName,
const NPVariant *value);
bool NPN_RemoveProperty(NPObject *npobj, NPIdentifier propertyName);
bool NPN_HasProperty(NPObject *npobj, NPIdentifier propertyName);
bool NPN_HasMethod(NPObject *npobj, NPIdentifier methodName);
/*
NPN_SetException may be called to trigger a script exception upon
return from entry points into NPObjects. Typical usage:
NPN_SetException (npobj, message);
*/
void NPN_SetException(NPObject *npobj, const NPUTF8 *message);
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,51 @@
/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* mozilla.org.
* Portions created by the Initial Developer are Copyright (C) 2004
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Johnny Stenback <jst@mozilla.org> (Original author)
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* Header file for ensuring that C99 types ([u]int32_t and boolean)
* are available.
*/
#if defined(WIN32) || defined(OS2)
typedef int int32_t;
typedef unsigned int uint32_t;
#else
#include <stdint.h>
#include <stdbool.h>
#include <math.h>
#endif

View File

@@ -1,4 +1,4 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
@@ -37,7 +37,7 @@
/*
* npupp.h $Revision: 3.16 $
* npupp.h $Revision: 3.17 $
* function call mecahnics needed by platform specific glue code.
*/
@@ -57,6 +57,8 @@
#include "npapi.h"
#endif
#include "npruntime.h"
#include "jri.h"
/******************************************************************************************
@@ -486,8 +488,6 @@ typedef NPError (* NP_LOADDS NPP_SetValueUPP)(NPP instance, NPNVariable variable
#endif
/*
* Netscape entry points
*/
@@ -1061,6 +1061,441 @@ typedef void (* NP_LOADDS NPN_ForceRedrawUPP)(NPP instance);
#endif
/* NPN_GetStringIdentifier */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_GetStringIdentifierUPP;
enum {
uppNPN_GetStringIdentifierProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(const NPUTF8*)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPIdentifier)))
};
#define NewNPN_GetStringIdentifierProc(FUNC) \
(NPN_GetStringIdentifierUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetStringIdentifierProcInfo, GetCurrentArchitecture())
#define CallNPN_GetStringIdentifierProc(FUNC, ARG1) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetStringIdentifierProcInfo, (ARG1))
#else
typedef NPIdentifier (* NP_LOADDS NPN_GetStringIdentifierUPP)(const NPUTF8* name);
#define NewNPN_GetStringIdentifierProc(FUNC) \
((NPN_GetStringIdentifierUPP) (FUNC))
#define CallNPN_GetStringIdentifierProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
#endif
/* NPN_GetStringIdentifiers */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_GetStringIdentifiersUPP;
enum {
uppNPN_GetStringIdentifiersProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(const NPUTF8**)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(int32_t)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPIdentifier*)))
| RESULT_SIZE(SIZE_CODE(0))
};
#define NewNPN_GetStringIdentifiersProc(FUNC) \
(NPN_GetStringIdentifiersUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetStringIdentifiersProcInfo, GetCurrentArchitecture())
#define CallNPN_GetStringIdentifiersProc(FUNC, ARG1, ARG2, ARG3) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetStringIdentifiersProcInfo, (ARG1), (ARG2), (ARG3))
#else
typedef void (* NP_LOADDS NPN_GetStringIdentifiersUPP)(const NPUTF8** names,
int32_t nameCount,
NPIdentifier* identifiers);
#define NewNPN_GetStringIdentifiersProc(FUNC) \
((NPN_GetStringIdentifiersUPP) (FUNC))
#define CallNPN_GetStringIdentifiersProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
#endif
/* NPN_GetIntIdentifier */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_GetIntIdentifierUPP;
enum {
uppNPN_GetIntIdentifierProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(int32_t)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPIdentifier)))
};
#define NewNPN_GetIntIdentifierProc(FUNC) \
(NPN_GetIntIdentifierUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetIntIdentifierProcInfo, GetCurrentArchitecture())
#define CallNPN_GetIntIdentifierProc(FUNC, ARG1) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetIntIdentifierProcInfo, (ARG1))
#else
typedef NPIdentifier (* NP_LOADDS NPN_GetIntIdentifierUPP)(int32_t intid);
#define NewNPN_GetIntIdentifierProc(FUNC) \
((NPN_GetIntIdentifierUPP) (FUNC))
#define CallNPN_GetIntIdentifierProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
#endif
/* NPN_IdentifierIsString */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_IdentifierIsStringUPP;
enum {
uppNPN_IdentifierIsStringProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPIdentifier identifier)))
| RESULT_SIZE(SIZE_CODE(sizeof(bool)))
};
#define NewNPN_IdentifierIsStringProc(FUNC) \
(NPN_IdentifierIsStringUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_IdentifierIsStringProcInfo, GetCurrentArchitecture())
#define CallNPN_IdentifierIsStringProc(FUNC, ARG1) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_IdentifierIsStringProcInfo, (ARG1))
#else
typedef bool (* NP_LOADDS NPN_IdentifierIsStringUPP)(NPIdentifier identifier);
#define NewNPN_IdentifierIsStringProc(FUNC) \
((NPN_IdentifierIsStringUPP) (FUNC))
#define CallNPN_IdentifierIsStringProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
#endif
/* NPN_UTF8FromIdentifier */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_UTF8FromIdentifierUPP;
enum {
uppNPN_UTF8FromIdentifierProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPIdentifier)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPUTF8*)))
};
#define NewNPN_UTF8FromIdentifierProc(FUNC) \
(NPN_UTF8FromIdentifierUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_UTF8FromIdentifierProcInfo, GetCurrentArchitecture())
#define CallNPN_UTF8FromIdentifierProc(FUNC, ARG1) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_UTF8FromIdentifierProcInfo, (ARG1))
#else
typedef NPUTF8* (* NP_LOADDS NPN_UTF8FromIdentifierUPP)(NPIdentifier identifier);
#define NewNPN_UTF8FromIdentifierProc(FUNC) \
((NPN_UTF8FromIdentifierUPP) (FUNC))
#define CallNPN_UTF8FromIdentifierProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
#endif
/* NPN_IntFromIdentifier */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_IntFromIdentifierUPP;
enum {
uppNPN_IntFromIdentifierProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPIdentifier)))
| RESULT_SIZE(SIZE_CODE(sizeof(int32_t)))
};
#define NewNPN_IntFromIdentifierProc(FUNC) \
(NPN_IntFromIdentifierUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_IntFromIdentifierProcInfo, GetCurrentArchitecture())
#define CallNPN_IntFromIdentifierProc(FUNC, ARG1) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_IntFromIdentifierProcInfo, (ARG1))
#else
typedef int32_t (* NP_LOADDS NPN_IntFromIdentifierUPP)(NPIdentifier identifier);
#define NewNPN_IntFromIdentifierProc(FUNC) \
((NPN_IntFromIdentifierUPP) (FUNC))
#define CallNPN_IntFromIdentifierProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
#endif
/* NPN_CreateObject */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_CreateObjectUPP;
enum {
uppNPN_CreateObjectProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPClass*)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPObject*)))
};
#define NewNPN_CreateObjectProc(FUNC) \
(NPN_CreateObjectUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_CreateObjectProcInfo, GetCurrentArchitecture())
#define CallNPN_CreateObjectProc(FUNC, ARG1) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_CreateObjectProcInfo, (ARG1))
#else
typedef NPObject* (* NP_LOADDS NPN_CreateObjectUPP)(NPClass *aClass);
#define NewNPN_CreateObjectProc(FUNC) \
((NPN_CreateObjectUPP) (FUNC))
#define CallNPN_CreateObjectProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
#endif
/* NPN_RetainObject */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_RetainObjectUPP;
enum {
uppNPN_RetainObjectProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPObject*)))
| RESULT_SIZE(SIZE_CODE(sizeof(NPObject*)))
};
#define NewNPN_RetainObjectProc(FUNC) \
(NPN_RetainObjectUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_RetainObjectProcInfo, GetCurrentArchitecture())
#define CallNPN_RetainObjectProc(FUNC, ARG1) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_RetainObjectProcInfo, (ARG1))
#else
typedef NPObject* (* NP_LOADDS NPN_RetainObjectUPP)(NPObject *obj);
#define NewNPN_RetainObjectProc(FUNC) \
((NPN_RetainObjectUPP) (FUNC))
#define CallNPN_RetainObjectProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
#endif
/* NPN_ReleaseObject */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_ReleaseObjectUPP;
enum {
uppNPN_ReleaseObjectProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPObject*)))
| RESULT_SIZE(SIZE_CODE(0))
};
#define NewNPN_ReleaseObjectProc(FUNC) \
(NPN_ReleaseObjectUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_ReleaseObjectProcInfo, GetCurrentArchitecture())
#define CallNPN_ReleaseObjectProc(FUNC, ARG1) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_ReleaseObjectProcInfo, (ARG1))
#else
typedef void (* NP_LOADDS NPN_ReleaseObjectUPP)(NPObject *obj);
#define NewNPN_ReleaseObjectProc(FUNC) \
((NPN_ReleaseObjectUPP) (FUNC))
#define CallNPN_ReleaseObjectProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
#endif
/* NPN_Call */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_CallUPP;
enum {
uppNPN_CallProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPObject*)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPIdentifier)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const NPVariant*)))
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(uint32_t)))
| STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(NPVariant*)))
| RESULT_SIZE(SIZE_CODE(sizeof(bool)))
};
#define NewNPN_CallProc(FUNC) \
(NPN_CallUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_CallProcInfo, GetCurrentArchitecture())
#define CallNPN_CallProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_CallProcInfo, (ARG1), (ARG2), (ARG3), (ARG4), (ARG5))
#else
typedef bool (* NP_LOADDS NPN_CallUPP)(NPObject* obj, NPIdentifier methodName, const NPVariant *args, uint32_t argCount, NPVariant *result);
#define NewNPN_CallProc(FUNC) \
((NPN_CallUPP) (FUNC))
#define CallNPN_CallProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5))
#endif
/* NPN_Evaluate */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_EvaluateUPP;
enum {
uppNPN_EvaluateProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPObject*)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPString*)))
| STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(NPVariant*)))
| RESULT_SIZE(SIZE_CODE(sizeof(bool)))
};
#define NewNPN_EvaluateProc(FUNC) \
(NPN_EvaluateUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_EvaluateProcInfo, GetCurrentArchitecture())
#define CallNPN_EvaluateProc(FUNC, ARG1, ARG2, ARG3, ARG4) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_EvaluateProcInfo, (ARG1), (ARG2), (ARG3), (ARG4))
#else
typedef bool (* NP_LOADDS NPN_EvaluateUPP)(NPP npp, NPObject *obj, NPString *script, NPVariant *result);
#define NewNPN_EvaluateProc(FUNC) \
((NPN_EvaluateUPP) (FUNC))
#define CallNPN_EvaluateProc(FUNC, ARG1, ARG2, ARG3, ARG4) \
(*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4))
#endif
/* NPN_GetProperty */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_GetPropertyUPP;
enum {
uppNPN_GetPropertyProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPObject*)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPIdentifier)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPVariant*)))
| RESULT_SIZE(SIZE_CODE(sizeof(bool)))
};
#define NewNPN_GetPropertyProc(FUNC) \
(NPN_GetPropertyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetPropertyProcInfo, GetCurrentArchitecture())
#define CallNPN_GetPropertyProc(FUNC, ARG1, ARG2, ARG3) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetPropertyProcInfo, (ARG1), (ARG2), (ARG3))
#else
typedef bool (* NP_LOADDS NPN_GetPropertyUPP)(NPObject *obj, NPIdentifier propertyName, NPVariant *result);
#define NewNPN_GetPropertyProc(FUNC) \
((NPN_GetPropertyUPP) (FUNC))
#define CallNPN_GetPropertyProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
#endif
/* NPN_SetProperty */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_SetPropertyUPP;
enum {
uppNPN_SetPropertyProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPObject*)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPIdentifier)))
| STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const NPVariant*)))
| RESULT_SIZE(SIZE_CODE(sizeof(bool)))
};
#define NewNPN_SetPropertyProc(FUNC) \
(NPN_SetPropertyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_SetPropertyProcInfo, GetCurrentArchitecture())
#define CallNPN_SetPropertyProc(FUNC, ARG1, ARG2, ARG3) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_SetPropertyProcInfo, (ARG1), (ARG2), (ARG3))
#else
typedef bool (* NP_LOADDS NPN_SetPropertyUPP)(NPObject *obj, NPIdentifier propertyName, const NPVariant *value);
#define NewNPN_SetPropertyProc(FUNC) \
((NPN_SetPropertyUPP) (FUNC))
#define CallNPN_SetPropertyProc(FUNC, ARG1, ARG2, ARG3) \
(*(FUNC))((ARG1), (ARG2), (ARG3))
#endif
/* NPN_RemoveProperty */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_RemovePropertyUPP;
enum {
uppNPN_RemovePropertyProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPObject*)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPIdentifier)))
| RESULT_SIZE(SIZE_CODE(sizeof(bool)))
};
#define NewNPN_RemovePropertyProc(FUNC) \
(NPN_RemovePropertyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_RemovePropertyProcInfo, GetCurrentArchitecture())
#define CallNPN_RemovePropertyProc(FUNC, ARG1, ARG2) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_RemovePropertyProcInfo, (ARG1), (ARG2))
#else
typedef bool (* NP_LOADDS NPN_RemovePropertyUPP)(NPObject *obj, NPIdentifier propertyName);
#define NewNPN_RemovePropertyProc(FUNC) \
((NPN_RemovePropertyUPP) (FUNC))
#define CallNPN_RemovePropertyProc(FUNC, ARG1, ARG2) \
(*(FUNC))((ARG1), (ARG2))
#endif
/* NPN_ReleaseVariantValue */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_ReleaseVariantValue;
enum {
uppNPN_ReleaseVariantValueProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPVariant*)))
| RESULT_SIZE(SIZE_CODE(0))
};
#define NewNPN_ReleaseVariantValueProc(FUNC) \
(NPN_ReleaseVariantValueUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_ReleaseVariantValueProcInfo, GetCurrentArchitecture())
#define CallNPN_ReleaseVariantValueProc(FUNC, ARG1) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_ReleaseVariantValueProcInfo, (ARG1))
#else
typedef void (* NP_LOADDS NPN_ReleaseVariantValueUPP)(NPVariant *variant);
#define NewNPN_ReleaseVariantValueProc(FUNC) \
((NPN_ReleaseVariantValueUPP) (FUNC))
#define CallNPN_ReleaseVariantValueProc(FUNC, ARG1) \
(*(FUNC))((ARG1))
#endif
/* NPN_SetException */
#if _NPUPP_USE_UPP_
typedef UniversalProcPtr NPN_SetExceptionUPP;
enum {
uppNPN_SetExceptionProcInfo = kThinkCStackBased
| STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPObject*)))
| STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const NPUTF8*)))
| RESULT_SIZE(SIZE_CODE(0))
};
#define NewNPN_SetExceptionProc(FUNC) \
(NPN_SetExceptionUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_SetExceptionProcInfo, GetCurrentArchitecture())
#define CallNPN_SetExceptionProc(FUNC, ARG1, ARG2) \
(jref)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_SetExceptionProcInfo, (ARG1), (ARG2))
#else
typedef void (* NP_LOADDS NPN_SetExceptionUPP)(NPObject *obj, const NPUTF8 *message);
#define NewNPN_SetExceptionProc(FUNC) \
((NPN_SetExceptionUPP) (FUNC))
#define CallNPN_SetExceptionProc(FUNC, ARG1, ARG2) \
(*(FUNC))((ARG1), (ARG2))
#endif
/******************************************************************************************
* The actual plugin function table definitions
@@ -1115,6 +1550,22 @@ typedef struct _NPNetscapeFuncs {
NPN_InvalidateRectUPP invalidaterect;
NPN_InvalidateRegionUPP invalidateregion;
NPN_ForceRedrawUPP forceredraw;
NPN_GetStringIdentifierUPP getstringidentifier;
NPN_GetStringIdentifiersUPP getstringidentifiers;
NPN_GetIntIdentifierUPP getintidentifier;
NPN_IdentifierIsStringUPP identifierisstring;
NPN_UTF8FromIdentifierUPP utf8fromidentifier;
NPN_IntFromIdentifierUPP intfromidentifier;
NPN_CreateObjectUPP createobject;
NPN_RetainObjectUPP retainobject;
NPN_ReleaseObjectUPP releaseobject;
NPN_CallUPP call;
NPN_EvaluateUPP evaluate;
NPN_GetPropertyUPP getproperty;
NPN_SetPropertyUPP setproperty;
NPN_RemovePropertyUPP removeproperty;
NPN_ReleaseVariantValueUPP releasevariantvalue;
NPN_SetExceptionUPP setexception;
} NPNetscapeFuncs;
#ifdef XP_MAC

View File

@@ -0,0 +1,57 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Mozilla Communicator client code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef nsINPRuntimePlugin_h___
#define nsINPRuntimePlugin_h___
#include "nsISupports.h"
struct JSObject;
struct JSContext;
#define NS_INPRUNTIMEPLUGIN_IID \
{0xbd962bb4, 0x54c3, 0x4d23, \
{ 0xa8, 0xca, 0x54, 0x16, 0x08, 0x02, 0xc2, 0x59 }}
class NS_NO_VTABLE nsINPRuntimePlugin : public nsISupports
{
public:
NS_DEFINE_STATIC_IID_ACCESSOR(NS_INPRUNTIMEPLUGIN_IID)
virtual JSObject *GetJSObject(JSContext *cx) = 0;
};
#endif /* nsINPRuntimePlugin_h___ */

View File

@@ -75,13 +75,14 @@ interface nsIPluginInstancePeer;
interface nsIPluginInstance : nsISupports
{
/**
* Initializes a newly created plugin instance, passing to it the plugin
* instance peer which it should use for all communication back to the browser.
* Initializes a newly created plugin instance, passing to it the
* plugin instance peer which it should use for all communication
* back to the browser.
*
* @param aPeer - the corresponding plugin instance peer
* @result - NS_OK if this operation was successful
* @param aPeer - the corresponding plugin instance peer
* @result - NS_OK if this operation was successful
*/
void initialize(in nsIPluginInstancePeer aPeer);
void initialize(in nsIPluginInstancePeer aPeer);
/**
* Returns a reference back to the plugin instance peer. This method is
@@ -89,38 +90,40 @@ interface nsIPluginInstance : nsISupports
* instance. The implementation of this method should be sure to increment
* the reference count on the peer by calling AddRef.
*
* @param aPeer - the resulting plugin instance peer
* @result - NS_OK if this operation was successful
* @param aPeer - the resulting plugin instance peer
* @result - NS_OK if this operation was successful
*/
readonly attribute nsIPluginInstancePeer peer;
/**
* Called to instruct the plugin instance to start. This will be called after
* the plugin is first created and initialized, and may be called after the
* plugin is stopped (via the Stop method) if the plugin instance is returned
* to in the browser window's history.
*
* @result - NS_OK if this operation was successful
* Called to instruct the plugin instance to start. This will be
* called after the plugin is first created and initialized, and
* may be called after the plugin is stopped (via the Stop method)
* if the plugin instance is returned to in the browser window's
* history.
*
* @result - NS_OK if this operation was successful
*/
void start();
/**
* Called to instruct the plugin instance to stop, thereby suspending its state.
* This method will be called whenever the browser window goes on to display
* another page and the page containing the plugin goes into the window's history
* list.
*
* @result - NS_OK if this operation was successful
* Called to instruct the plugin instance to stop, thereby
* suspending its state. This method will be called whenever the
* browser window goes on to display another page and the page
* containing the plugin goes into the window's history list.
*
* @result - NS_OK if this operation was successful
*/
void stop();
/**
* Called to instruct the plugin instance to destroy itself. This is called when
* it become no longer possible to return to the plugin instance, either because
* the browser window's history list of pages is being trimmed, or because the
* window containing this page in the history is being closed.
*
* @result - NS_OK if this operation was successful
* Called to instruct the plugin instance to destroy itself. This
* is called when it become no longer possible to return to the
* plugin instance, either because the browser window's history
* list of pages is being trimmed, or because the window
* containing this page in the history is being closed.
*
* @result - NS_OK if this operation was successful
*/
void destroy();
@@ -129,10 +132,10 @@ interface nsIPluginInstance : nsISupports
*
* (Corresponds to NPP_SetWindow.)
*
* @param aWindow - the plugin window structure
* @result - NS_OK if this operation was successful
* @param aWindow - the plugin window structure
* @result - NS_OK if this operation was successful
*/
void setWindow(in nsPluginWindowPtr aWindow);
void setWindow(in nsPluginWindowPtr aWindow);
/**
* Called to tell the plugin that the initial src/data stream is
@@ -140,46 +143,46 @@ interface nsIPluginInstance : nsISupports
*
* (Corresponds to NPP_NewStream.)
*
* @param aListener - listener the browser will use to give the plugin the data
* @result - NS_OK if this operation was successful
* @param aListener - listener the browser will use to give the plugin the data
* @result - NS_OK if this operation was successful
*/
void newStream(out nsIPluginStreamListener aListener);
void newStream(out nsIPluginStreamListener aListener);
/**
* Called to instruct the plugin instance to print itself to a printer.
*
* (Corresponds to NPP_Print.)
*
* @param aPlatformPrint - platform-specific printing information
* @result - NS_OK if this operation was successful
*/
void print(in nsPluginPrintPtr aPlatformPrint);
* @param aPlatformPrint - platform-specific printing information
* @result - NS_OK if this operation was successful
*/
void print(in nsPluginPrintPtr aPlatformPrint);
/**
* Returns the value of a variable associated with the plugin instance.
*
* @param aVariable - the plugin instance variable to get
* @param aValue - the address of where to store the resulting value
* @result - NS_OK if this operation was successful
*/
void getValue(in nsPluginInstanceVariable aVariable, in voidPtr aValue);
/**
* Returns the value of a variable associated with the plugin instance.
*
* @param aVariable - the plugin instance variable to get
* @param aValue - the address of where to store the resulting value
* @result - NS_OK if this operation was successful
*/
void getValue(in nsPluginInstanceVariable aVariable, in voidPtr aValue);
/**
* Handles an event. An nsIEventHandler can also get registered with with
* nsIPluginManager2::RegisterWindow and will be called whenever an event
* comes in for that window.
*
* Note that for Unix and Mac the nsPluginEvent structure is different
* from the old NPEvent structure -- it's no longer the native event
* record, but is instead a struct. This was done for future extensibility,
* and so that the Mac could receive the window argument too. For Windows
* and OS2, it's always been a struct, so there's no change for them.
*
* (Corresponds to NPP_HandleEvent.)
*
* @param aEvent - the event to be handled
* @param aHandled - set to PR_TRUE if event was handled
/**
* Handles an event. An nsIEventHandler can also get registered with with
* nsIPluginManager2::RegisterWindow and will be called whenever an event
* comes in for that window.
*
* Note that for Unix and Mac the nsPluginEvent structure is different
* from the old NPEvent structure -- it's no longer the native event
* record, but is instead a struct. This was done for future extensibility,
* and so that the Mac could receive the window argument too. For Windows
* and OS2, it's always been a struct, so there's no change for them.
*
* (Corresponds to NPP_HandleEvent.)
*
* @param aEvent - the event to be handled
* @param aHandled - set to PR_TRUE if event was handled
* @result - NS_OK if this operation was successful
*/
void handleEvent(in nsPluginEventPtr aEvent, out boolean aHandled);
void handleEvent(in nsPluginEventPtr aEvent, out boolean aHandled);
};

View File

@@ -46,7 +46,7 @@ interface nsIScriptablePlugin : nsISupports
{
/**
* The object to be wrapped and exposed to JavaScript. It should
* be an XPCOM object, and it can be the same object as the plugin.
* be an XPCOM object, and it can be the same object as the plugin.
*/
readonly attribute nsQIResult scriptablePeer;