mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 04:45:45 +00:00
NOT PART OF BUILD. More XPConnect scripting improvements
This commit is contained in:
parent
5db62cc0e0
commit
b1b2f0f865
@ -48,8 +48,8 @@ END
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,0,0,1
|
FILEVERSION 1,0,0,2
|
||||||
PRODUCTVERSION 1,0,0,1
|
PRODUCTVERSION 1,0,0,2
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
|
|
||||||
#include "nsIMozAxPlugin.h"
|
#include "nsIMozAxPlugin.h"
|
||||||
#include "nsIClassInfo.h"
|
#include "nsIClassInfo.h"
|
||||||
|
#include "nsIVariant.h"
|
||||||
#include "nsMemory.h"
|
#include "nsMemory.h"
|
||||||
|
|
||||||
#include "LegacyPlugin.h"
|
#include "LegacyPlugin.h"
|
||||||
@ -97,7 +98,11 @@ public:
|
|||||||
NS_DECL_ISUPPORTS
|
NS_DECL_ISUPPORTS
|
||||||
NS_DECL_NSIMOZAXPLUGIN
|
NS_DECL_NSIMOZAXPLUGIN
|
||||||
|
|
||||||
|
private:
|
||||||
HRESULT GetIDispatch(IDispatch **pdisp);
|
HRESULT GetIDispatch(IDispatch **pdisp);
|
||||||
|
HRESULT ConvertVariants(nsIVariant *aIn, VARIANT *aOut);
|
||||||
|
HRESULT ConvertVariants(VARIANT *aIn, nsIVariant **aOut);
|
||||||
|
NS_IMETHOD InternalInvoke(const char *aMethod, unsigned int aNumArgs, nsIVariant *aArgs[]);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Happy happy fun fun - redefine some NPPVariable values that we might
|
// Happy happy fun fun - redefine some NPPVariable values that we might
|
||||||
@ -183,6 +188,198 @@ nsScriptablePeer::GetIDispatch(IDispatch **pdisp)
|
|||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
nsScriptablePeer::ConvertVariants(nsIVariant *aIn, VARIANT *aOut)
|
||||||
|
{
|
||||||
|
if (aIn == NULL || aOut == NULL)
|
||||||
|
{
|
||||||
|
return NS_ERROR_INVALID_ARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
PRUint16 type;
|
||||||
|
nsresult rv = aIn->GetDataType(&type);
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case nsIDataType::VTYPE_INT8:
|
||||||
|
{
|
||||||
|
PRUint8 value = 0;
|
||||||
|
rv = aIn->GetAsInt8(&value);
|
||||||
|
aOut->vt = VT_I1;
|
||||||
|
aOut->cVal = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case nsIDataType::VTYPE_INT16:
|
||||||
|
{
|
||||||
|
PRInt16 value = 0;
|
||||||
|
rv = aIn->GetAsInt16(&value);
|
||||||
|
aOut->vt = VT_I2;
|
||||||
|
aOut->iVal = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case nsIDataType::VTYPE_INT32:
|
||||||
|
{
|
||||||
|
PRInt32 value = 0;
|
||||||
|
rv = aIn->GetAsInt32(&value);
|
||||||
|
aOut->vt = VT_I4;
|
||||||
|
aOut->lVal = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case nsIDataType::VTYPE_CHAR:
|
||||||
|
case nsIDataType::VTYPE_UINT8:
|
||||||
|
{
|
||||||
|
PRUint8 value = 0;
|
||||||
|
rv = aIn->GetAsInt8(&value);
|
||||||
|
aOut->vt = VT_UI1;
|
||||||
|
aOut->bVal = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case nsIDataType::VTYPE_WCHAR:
|
||||||
|
case nsIDataType::VTYPE_UINT16:
|
||||||
|
{
|
||||||
|
PRUint16 value = 0;
|
||||||
|
rv = aIn->GetAsUint16(&value);
|
||||||
|
aOut->vt = VT_I2;
|
||||||
|
aOut->uiVal = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case nsIDataType::VTYPE_UINT32:
|
||||||
|
{
|
||||||
|
PRUint32 value = 0;
|
||||||
|
rv = aIn->GetAsUint32(&value);
|
||||||
|
aOut->vt = VT_I4;
|
||||||
|
aOut->ulVal = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case nsIDataType::VTYPE_FLOAT:
|
||||||
|
{
|
||||||
|
float value = 0;
|
||||||
|
rv = aIn->GetAsFloat(&value);
|
||||||
|
aOut->vt = VT_R4;
|
||||||
|
aOut->fltVal = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case nsIDataType::VTYPE_DOUBLE:
|
||||||
|
{
|
||||||
|
double value = 0;
|
||||||
|
rv = aIn->GetAsDouble(&value);
|
||||||
|
aOut->vt = VT_R4;
|
||||||
|
aOut->dblVal = value;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case nsIDataType::VTYPE_BOOL:
|
||||||
|
{
|
||||||
|
PRBool value = 0;
|
||||||
|
rv = aIn->GetAsBool(&value);
|
||||||
|
aOut->vt = VT_BOOL;
|
||||||
|
aOut->dblVal = value ? VARIANT_TRUE : VARIANT_FALSE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case nsIDataType::VTYPE_EMPTY:
|
||||||
|
VariantClear(aOut);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
case nsIDataType::VTYPE_CSTRING:
|
||||||
|
case nsIDataType::VTYPE_ASTRING:
|
||||||
|
case nsIDataType::VTYPE_DOMSTRING:
|
||||||
|
|
||||||
|
// Unsupported types
|
||||||
|
default:
|
||||||
|
case nsIDataType::VTYPE_INT64:
|
||||||
|
case nsIDataType::VTYPE_UINT64:
|
||||||
|
case nsIDataType::VTYPE_VOID:
|
||||||
|
case nsIDataType::VTYPE_ID:
|
||||||
|
case nsIDataType::VTYPE_CHAR_STR:
|
||||||
|
case nsIDataType::VTYPE_WCHAR_STR:
|
||||||
|
case nsIDataType::VTYPE_INTERFACE:
|
||||||
|
case nsIDataType::VTYPE_INTERFACE_IS:
|
||||||
|
case nsIDataType::VTYPE_ARRAY:
|
||||||
|
case nsIDataType::VTYPE_STRING_SIZE_IS:
|
||||||
|
case nsIDataType::VTYPE_WSTRING_SIZE_IS:
|
||||||
|
case nsIDataType::VTYPE_UTF8STRING:
|
||||||
|
case nsIDataType::VTYPE_EMPTY_ARRAY:
|
||||||
|
return E_INVALIDARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
nsScriptablePeer::ConvertVariants(VARIANT *aIn, nsIVariant **aOut)
|
||||||
|
{
|
||||||
|
if (aIn == NULL || aOut == NULL)
|
||||||
|
{
|
||||||
|
return NS_ERROR_INVALID_ARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsScriptablePeer::InternalInvoke(const char *aMethod, unsigned int aNumArgs, nsIVariant *aArgs[])
|
||||||
|
{
|
||||||
|
HRESULT hr;
|
||||||
|
DISPID dispid;
|
||||||
|
|
||||||
|
IDispatchPtr disp;
|
||||||
|
if (FAILED(GetIDispatch(&disp)))
|
||||||
|
{
|
||||||
|
return NPERR_GENERIC_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
USES_CONVERSION;
|
||||||
|
OLECHAR FAR* szMember = A2OLE(aMethod);
|
||||||
|
hr = disp->GetIDsOfNames(IID_NULL, &szMember, 1, LOCALE_USER_DEFAULT, &dispid);
|
||||||
|
if (FAILED(hr))
|
||||||
|
{
|
||||||
|
return NPERR_GENERIC_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
_variant_t *pArgs = NULL;
|
||||||
|
if (aNumArgs > 0)
|
||||||
|
{
|
||||||
|
pArgs = new _variant_t[aNumArgs];
|
||||||
|
if (pArgs == NULL)
|
||||||
|
{
|
||||||
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
for (unsigned int i = 0; i < aNumArgs; i++)
|
||||||
|
{
|
||||||
|
hr = ConvertVariants(aArgs[i], &pArgs[i]);
|
||||||
|
if (FAILED(hr))
|
||||||
|
{
|
||||||
|
delete []pArgs;
|
||||||
|
return NS_ERROR_INVALID_ARG;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DISPPARAMS dispparams = {NULL, NULL, 0, 0};
|
||||||
|
_variant_t vResult;
|
||||||
|
|
||||||
|
dispparams.cArgs = aNumArgs;
|
||||||
|
dispparams.rgvarg = pArgs;
|
||||||
|
|
||||||
|
hr = disp->Invoke(
|
||||||
|
dispid,
|
||||||
|
IID_NULL,
|
||||||
|
LOCALE_USER_DEFAULT,
|
||||||
|
DISPATCH_METHOD,
|
||||||
|
&dispparams, &vResult, NULL, NULL);
|
||||||
|
|
||||||
|
if (pArgs)
|
||||||
|
{
|
||||||
|
delete []pArgs;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FAILED(hr))
|
||||||
|
{
|
||||||
|
return NPERR_GENERIC_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// nsISupports
|
// nsISupports
|
||||||
|
|
||||||
@ -239,42 +436,52 @@ NS_IMETHODIMP_(nsrefcnt) nsScriptablePeer::Release()
|
|||||||
// the following method will be callable from JavaScript
|
// the following method will be callable from JavaScript
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsScriptablePeer::Invoke(const char *str)
|
nsScriptablePeer::Invoke(const char *aMethod)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
return InternalInvoke(aMethod, 0, NULL);
|
||||||
DISPID dispid;
|
|
||||||
|
|
||||||
IDispatchPtr disp;
|
|
||||||
if (FAILED(GetIDispatch(&disp)))
|
|
||||||
{
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
}
|
|
||||||
USES_CONVERSION;
|
|
||||||
OLECHAR FAR* szMember = A2OLE(str);
|
|
||||||
hr = disp->GetIDsOfNames(IID_NULL, &szMember, 1, LOCALE_USER_DEFAULT, &dispid);
|
|
||||||
if (FAILED(hr))
|
|
||||||
{
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0};
|
NS_IMETHODIMP
|
||||||
hr = disp->Invoke(
|
nsScriptablePeer::Invoke1(const char *aMethod, nsIVariant *a)
|
||||||
dispid,
|
|
||||||
IID_NULL,
|
|
||||||
LOCALE_USER_DEFAULT,
|
|
||||||
DISPATCH_METHOD,
|
|
||||||
&dispparamsNoArgs, NULL, NULL, NULL);
|
|
||||||
if (FAILED(hr))
|
|
||||||
{
|
{
|
||||||
return NPERR_GENERIC_ERROR;
|
nsIVariant *args[1];
|
||||||
|
args[0] = a;
|
||||||
|
return InternalInvoke(aMethod, sizeof(args) / sizeof(args[0]), args);
|
||||||
}
|
}
|
||||||
|
|
||||||
return NS_OK;
|
NS_IMETHODIMP
|
||||||
|
nsScriptablePeer::Invoke2(const char *aMethod, nsIVariant *a, nsIVariant *b)
|
||||||
|
{
|
||||||
|
nsIVariant *args[2];
|
||||||
|
args[0] = a;
|
||||||
|
args[1] = b;
|
||||||
|
return InternalInvoke(aMethod, sizeof(args) / sizeof(args[0]), args);
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsScriptablePeer::Invoke3(const char *aMethod, nsIVariant *a, nsIVariant *b, nsIVariant *c)
|
||||||
|
{
|
||||||
|
nsIVariant *args[3];
|
||||||
|
args[0] = a;
|
||||||
|
args[1] = b;
|
||||||
|
args[2] = c;
|
||||||
|
return InternalInvoke(aMethod, sizeof(args) / sizeof(args[0]), args);
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsScriptablePeer::Invoke4(const char *aMethod, nsIVariant *a, nsIVariant *b, nsIVariant *c, nsIVariant *d)
|
||||||
|
{
|
||||||
|
nsIVariant *args[4];
|
||||||
|
args[0] = a;
|
||||||
|
args[1] = b;
|
||||||
|
args[2] = c;
|
||||||
|
args[3] = d;
|
||||||
|
return InternalInvoke(aMethod, sizeof(args) / sizeof(args[0]), args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsScriptablePeer::GetProperty(const char *propertyName, char **_retval)
|
nsScriptablePeer::GetProperty(const char *propertyName, nsIVariant **_retval)
|
||||||
{
|
{
|
||||||
/* HRESULT hr;
|
/* HRESULT hr;
|
||||||
DISPID dispid;
|
DISPID dispid;
|
||||||
@ -347,58 +554,8 @@ nsScriptablePeer::GetProperty(const char *propertyName, char **_retval)
|
|||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP nsScriptablePeer::GetNProperty(const char *propertyName, PRInt16 *_retval)
|
|
||||||
{
|
|
||||||
/* HRESULT hr;
|
|
||||||
DISPID dispid;
|
|
||||||
VARIANT VarResult;
|
|
||||||
IDispatch FAR* pdisp = (IDispatch FAR*)NULL;
|
|
||||||
const char* property = propertyName;
|
|
||||||
PluginInstanceData *pData = mPlugin;
|
|
||||||
if (pData == NULL) {
|
|
||||||
return NPERR_INVALID_INSTANCE_ERROR;
|
|
||||||
}
|
|
||||||
IUnknown FAR* punk;
|
|
||||||
hr = pData->pControlSite->GetControlUnknown(&punk);
|
|
||||||
if (FAILED(hr)) { return NULL; }
|
|
||||||
punk->AddRef();
|
|
||||||
hr = punk->QueryInterface(IID_IDispatch,(void FAR* FAR*)&pdisp);
|
|
||||||
if (FAILED(hr)) {
|
|
||||||
punk->Release();
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
}
|
|
||||||
USES_CONVERSION;
|
|
||||||
OLECHAR FAR* szMember = A2OLE(property);
|
|
||||||
hr = pdisp->GetIDsOfNames(IID_NULL, &szMember, 1, LOCALE_USER_DEFAULT, &dispid);
|
|
||||||
if (FAILED(hr)) {
|
|
||||||
punk->Release();
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
}
|
|
||||||
DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0};
|
|
||||||
hr = pdisp->Invoke(
|
|
||||||
dispid,
|
|
||||||
IID_NULL,
|
|
||||||
LOCALE_USER_DEFAULT,
|
|
||||||
DISPATCH_PROPERTYGET,
|
|
||||||
&dispparamsNoArgs, &VarResult, NULL, NULL);
|
|
||||||
if (FAILED(hr)) {
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
}
|
|
||||||
punk->Release();
|
|
||||||
if(!_retval) return NS_ERROR_NULL_POINTER;
|
|
||||||
// make sure we are dealing with an int
|
|
||||||
if ((VarResult.vt & VT_TYPEMASK) != VT_I2) {
|
|
||||||
*_retval = NULL;
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
}
|
|
||||||
*_retval = VarResult.iVal; */
|
|
||||||
|
|
||||||
// caller will be responsible for any memory allocated.
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* void setProperty (in string propertyName, in string propertyValue); */
|
/* void setProperty (in string propertyName, in string propertyValue); */
|
||||||
NS_IMETHODIMP nsScriptablePeer::SetProperty(const char *propertyName, const char *propertyValue)
|
NS_IMETHODIMP nsScriptablePeer::SetProperty(const char *propertyName, nsIVariant *propertyValue)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
DISPID dispid;
|
DISPID dispid;
|
||||||
@ -415,16 +572,15 @@ NS_IMETHODIMP nsScriptablePeer::SetProperty(const char *propertyName, const char
|
|||||||
return NPERR_GENERIC_ERROR;
|
return NPERR_GENERIC_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
_variant_t *pvars = new _variant_t[1];
|
_variant_t v;
|
||||||
pvars->vt = VT_BSTR;
|
ConvertVariants(propertyValue, &v);
|
||||||
pvars->bstrVal = ::SysAllocString(A2OLE(propertyValue));
|
|
||||||
|
|
||||||
DISPID dispIdPut = DISPID_PROPERTYPUT;
|
DISPID dispIdPut = DISPID_PROPERTYPUT;
|
||||||
DISPPARAMS functionArgs;
|
DISPPARAMS functionArgs;
|
||||||
_variant_t vResult;
|
_variant_t vResult;
|
||||||
|
|
||||||
functionArgs.rgdispidNamedArgs = &dispIdPut;
|
functionArgs.rgdispidNamedArgs = &dispIdPut;
|
||||||
functionArgs.rgvarg = pvars;
|
functionArgs.rgvarg = &v;
|
||||||
functionArgs.cArgs = 1;
|
functionArgs.cArgs = 1;
|
||||||
functionArgs.cNamedArgs = 1;
|
functionArgs.cNamedArgs = 1;
|
||||||
|
|
||||||
@ -435,52 +591,6 @@ NS_IMETHODIMP nsScriptablePeer::SetProperty(const char *propertyName, const char
|
|||||||
DISPATCH_PROPERTYPUT,
|
DISPATCH_PROPERTYPUT,
|
||||||
&functionArgs, &vResult, NULL, NULL);
|
&functionArgs, &vResult, NULL, NULL);
|
||||||
|
|
||||||
delete []pvars;
|
|
||||||
|
|
||||||
if (FAILED(hr))
|
|
||||||
{
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
}
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* void setNProperty (in string propertyName, in string propertyValue); */
|
|
||||||
NS_IMETHODIMP nsScriptablePeer::SetNProperty(const char *propertyName, PRInt16 propertyValue)
|
|
||||||
{
|
|
||||||
HRESULT hr;
|
|
||||||
DISPID dispid;
|
|
||||||
IDispatchPtr disp;
|
|
||||||
if (FAILED(GetIDispatch(&disp)))
|
|
||||||
{
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
}
|
|
||||||
USES_CONVERSION;
|
|
||||||
OLECHAR FAR* szMember = A2OLE(propertyName);
|
|
||||||
hr = disp->GetIDsOfNames(IID_NULL, &szMember, 1, LOCALE_USER_DEFAULT, &dispid);
|
|
||||||
if (FAILED(hr)) {
|
|
||||||
return NPERR_GENERIC_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
_variant_t *pvars = new _variant_t[1];
|
|
||||||
pvars->vt = VT_I2;
|
|
||||||
pvars->iVal = propertyValue;
|
|
||||||
|
|
||||||
DISPID dispIdPut = DISPID_PROPERTYPUT;
|
|
||||||
DISPPARAMS functionArgs;
|
|
||||||
_variant_t vResult;
|
|
||||||
|
|
||||||
functionArgs.rgdispidNamedArgs = &dispIdPut;
|
|
||||||
functionArgs.rgvarg = pvars;
|
|
||||||
functionArgs.cArgs = 1;
|
|
||||||
functionArgs.cNamedArgs = 1;
|
|
||||||
|
|
||||||
hr = disp->Invoke(
|
|
||||||
dispid,
|
|
||||||
IID_NULL,
|
|
||||||
LOCALE_USER_DEFAULT,
|
|
||||||
DISPATCH_PROPERTYPUT,
|
|
||||||
&functionArgs, &vResult, NULL, NULL);
|
|
||||||
delete []pvars;
|
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
{
|
{
|
||||||
return NPERR_GENERIC_ERROR;
|
return NPERR_GENERIC_ERROR;
|
||||||
|
@ -22,16 +22,18 @@
|
|||||||
|
|
||||||
#include "nsISupports.idl"
|
#include "nsISupports.idl"
|
||||||
|
|
||||||
|
interface nsIVariant;
|
||||||
|
|
||||||
[scriptable, uuid(b30c2717-2bbf-4475-9ddf-9e26f893f32a)]
|
[scriptable, uuid(b30c2717-2bbf-4475-9ddf-9e26f893f32a)]
|
||||||
interface nsIMozAxPlugin : nsISupports
|
interface nsIMozAxPlugin : nsISupports
|
||||||
{
|
{
|
||||||
void invoke(in string str);
|
void invoke(in string str);
|
||||||
|
void invoke1(in string str, in nsIVariant a);
|
||||||
|
void invoke2(in string str, in nsIVariant a, in nsIVariant b);
|
||||||
|
void invoke3(in string str, in nsIVariant a, in nsIVariant b, in nsIVariant c);
|
||||||
|
void invoke4(in string str, in nsIVariant a, in nsIVariant b, in nsIVariant c, in nsIVariant d);
|
||||||
|
|
||||||
/* Set and return string values */
|
/* Set and get values */
|
||||||
string getProperty(in string propertyName);
|
nsIVariant getProperty(in string propertyName);
|
||||||
void setProperty(in string propertyName, in string propertyValue);
|
void setProperty(in string propertyName, in nsIVariant propertyValue);
|
||||||
|
|
||||||
/* Set or return an integer value */
|
|
||||||
short getNProperty(in string propertyName);
|
|
||||||
void setNProperty(in string propertyName, in short propertyValue);
|
|
||||||
};
|
};
|
||||||
|
40
embedding/browser/activex/src/plugin/test_xpconnect.htm
Normal file
40
embedding/browser/activex/src/plugin/test_xpconnect.htm
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
||||||
|
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
|
||||||
|
<title>Mozilla Plugin Test Page</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="mozilla.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<p>This page is designed for Mozilla with the Mozilla
|
||||||
|
ActiveX plugin installed! You also need to have the MS Rich Text control
|
||||||
|
installed to see anything</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<!-- The object tag is used to add controls to the page. The width and height
|
||||||
|
parameters specify the control dimensions. The control is initialised
|
||||||
|
with parameters
|
||||||
|
of the form param_SomeControlProperty="value".
|
||||||
|
-->
|
||||||
|
<form action="#" method="post">
|
||||||
|
</form>
|
||||||
|
<embed
|
||||||
|
name="rtf"
|
||||||
|
TYPE="application/x-oleobject"
|
||||||
|
ALIGN="baseline" BORDER="0"
|
||||||
|
WIDTH="300" HEIGHT="300"
|
||||||
|
CLSID="{3B7C8860-D78F-101B-B9B5-04021C009402}"
|
||||||
|
PARAM_BACKCOLOR="16776960"
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<script>
|
||||||
|
</script>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user