зеркало из https://github.com/mozilla/gecko-dev.git
NOT PART OF BUILD. More work on LiveConnect. It actually works now(!) but is a bit crashy for some undetermined reason.
This commit is contained in:
Родитель
6d97942a45
Коммит
574ffb901e
|
@ -43,9 +43,9 @@
|
|||
#include "nsISupports.h"
|
||||
|
||||
#ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
|
||||
#define IMPLEMENT_MozAxPlugin
|
||||
#include "_gen/java_lang_String.h"
|
||||
#include "_gen/netscape_plugin_Plugin.h"
|
||||
#include "_gen/MozAxPlugin.h"
|
||||
//#include "_gen/netscape_plugin_Plugin.h"
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_ACTIVEX_PLUGIN_XPCONNECT
|
||||
|
@ -97,8 +97,9 @@ void NPP_Shutdown(void)
|
|||
#ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
|
||||
JRIEnv* env = NPN_GetJavaEnv();
|
||||
if (env) {
|
||||
// unuse_MozAxPlugin(env);
|
||||
unregister_MozAxPlugin(env);
|
||||
unuse_MozAxPlugin(env);
|
||||
unuse_netscape_plugin_Plugin(env);
|
||||
// unuse_java_lang_String(env);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -116,8 +117,10 @@ jref NPP_GetJavaClass(void)
|
|||
#ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
|
||||
JRIEnv* env = NPN_GetJavaEnv();
|
||||
if (env) {
|
||||
return (jref) register_MozAxPlugin(env);
|
||||
// return (jref) use_MozAxPlugin(env);
|
||||
// use_java_lang_String(env);
|
||||
use_netscape_plugin_Plugin(env);
|
||||
jref myClass = (jref) use_MozAxPlugin(env);
|
||||
return myClass;
|
||||
}
|
||||
#endif
|
||||
return NULL;
|
||||
|
@ -1103,7 +1106,7 @@ _GetIDispatchFromJRI(JRIEnv *env, struct MozAxPlugin* self, IDispatch **pdisp)
|
|||
}
|
||||
|
||||
IDispatchPtr disp = unk;
|
||||
if (!disp.GetInterfacePtr() == NULL)
|
||||
if (disp.GetInterfacePtr() == NULL)
|
||||
{
|
||||
return E_FAIL;
|
||||
}
|
||||
|
@ -1168,25 +1171,31 @@ _InvokeFromJRI(JRIEnv *env, struct MozAxPlugin* self, struct java_lang_String *f
|
|||
* These are the native methods which we are implementing.
|
||||
******************************************************************************/
|
||||
|
||||
//*** native Invoke (Ljava/lang/String;)Ljava/lang/Object; ***
|
||||
JRI_PUBLIC_API(struct java_lang_Object *)
|
||||
native_MozAxPlugin_invoke(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a)
|
||||
extern "C" JRI_PUBLIC_API(void)
|
||||
native_MozAxPlugin_x(JRIEnv* env, struct MozAxPlugin* self, jint a)
|
||||
{
|
||||
::MessageBox(NULL, "x() called", "Result", MB_OK);
|
||||
}
|
||||
|
||||
/*** private native xinvoke (Ljava/lang/String;)Ljava/lang/Object; ***/
|
||||
extern "C" JRI_PUBLIC_API(struct java_lang_Object *)
|
||||
native_MozAxPlugin_xinvoke(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a)
|
||||
{
|
||||
return _InvokeFromJRI(env, self, a, 0, NULL);
|
||||
}
|
||||
|
||||
//*** native Invoke (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; ***
|
||||
JRI_PUBLIC_API(struct java_lang_Object *)
|
||||
native_MozAxPlugin_invoke_1(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a, struct java_lang_Object *b)
|
||||
/*** private native xinvoke1 (Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; ***/
|
||||
extern "C" JRI_PUBLIC_API(struct java_lang_Object *)
|
||||
native_MozAxPlugin_xinvoke1(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a, struct java_lang_Object *b)
|
||||
{
|
||||
java_lang_Object *args[1];
|
||||
args[0] = b;
|
||||
return _InvokeFromJRI(env, self, a, sizeof(args) / sizeof(args[0]), args);
|
||||
}
|
||||
|
||||
//*** native Invoke (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ***
|
||||
JRI_PUBLIC_API(struct java_lang_Object *)
|
||||
native_MozAxPlugin_invoke_2(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a, struct java_lang_Object *b, struct java_lang_Object *c)
|
||||
/*** private native xinvoke2 (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ***/
|
||||
extern "C" JRI_PUBLIC_API(struct java_lang_Object *)
|
||||
native_MozAxPlugin_xinvoke2(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a, struct java_lang_Object *b, struct java_lang_Object *c)
|
||||
{
|
||||
java_lang_Object *args[2];
|
||||
args[0] = b;
|
||||
|
@ -1194,9 +1203,9 @@ native_MozAxPlugin_invoke_2(JRIEnv* env, struct MozAxPlugin* self, struct java_l
|
|||
return _InvokeFromJRI(env, self, a, sizeof(args) / sizeof(args[0]), args);
|
||||
}
|
||||
|
||||
//*** native Invoke (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ***
|
||||
JRI_PUBLIC_API(struct java_lang_Object *)
|
||||
native_MozAxPlugin_invoke_3(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a, struct java_lang_Object *b, struct java_lang_Object *c, struct java_lang_Object *d)
|
||||
/*** private native xinvoke3 (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ***/
|
||||
extern "C" JRI_PUBLIC_API(struct java_lang_Object *)
|
||||
native_MozAxPlugin_xinvoke3(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a, struct java_lang_Object *b, struct java_lang_Object *c, struct java_lang_Object *d)
|
||||
{
|
||||
java_lang_Object *args[3];
|
||||
args[0] = b;
|
||||
|
@ -1205,9 +1214,9 @@ native_MozAxPlugin_invoke_3(JRIEnv* env, struct MozAxPlugin* self, struct java_l
|
|||
return _InvokeFromJRI(env, self, a, sizeof(args) / sizeof(args[0]), args);
|
||||
}
|
||||
|
||||
//*** native Invoke (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ***
|
||||
JRI_PUBLIC_API(struct java_lang_Object *)
|
||||
native_MozAxPlugin_invoke_4(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a, struct java_lang_Object *b, struct java_lang_Object *c, struct java_lang_Object *d, struct java_lang_Object *e)
|
||||
/*** private native xinvoke4 (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ***/
|
||||
extern "C" JRI_PUBLIC_API(struct java_lang_Object *)
|
||||
native_MozAxPlugin_xinvoke4(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a, struct java_lang_Object *b, struct java_lang_Object *c, struct java_lang_Object *d, struct java_lang_Object *e)
|
||||
{
|
||||
java_lang_Object *args[4];
|
||||
args[0] = b;
|
||||
|
@ -1217,10 +1226,17 @@ native_MozAxPlugin_invoke_4(JRIEnv* env, struct MozAxPlugin* self, struct java_l
|
|||
return _InvokeFromJRI(env, self, a, sizeof(args) / sizeof(args[0]), args);
|
||||
}
|
||||
|
||||
/*** private native xinvokeX (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object; ***/
|
||||
extern "C" JRI_PUBLIC_API(struct java_lang_Object *)
|
||||
native_MozAxPlugin_xinvokeX(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a, jobjectArray b)
|
||||
{
|
||||
// TODO
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//*** native GetProperty (Ljava/lang/String;)Ljava/lang/Object; ***
|
||||
JRI_PUBLIC_API(struct java_lang_Object *)
|
||||
native_MozAxPlugin_getProperty(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a)
|
||||
/*** private native xgetProperty (Ljava/lang/String;)Ljava/lang/Object; ***/
|
||||
extern "C" JRI_PUBLIC_API(struct java_lang_Object *)
|
||||
native_MozAxPlugin_xgetProperty(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a)
|
||||
{
|
||||
HRESULT hr;
|
||||
DISPID dispid;
|
||||
|
@ -1270,17 +1286,17 @@ native_MozAxPlugin_getProperty(JRIEnv* env, struct MozAxPlugin* self, struct jav
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/*** native setProperty (Ljava/lang/String;Ljava/lang/Object;)V ***/
|
||||
JRI_PUBLIC_API(void)
|
||||
native_MozAxPlugin_setProperty(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a, struct java_lang_Object *b)
|
||||
/*** private native xsetProperty2 (Ljava/lang/String;Ljava/lang/Object;)V ***/
|
||||
extern "C" JRI_PUBLIC_API(void)
|
||||
native_MozAxPlugin_xsetProperty2(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a, struct java_lang_Object *b)
|
||||
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
//*** public native SetProperty (Ljava/lang/String;Ljava/lang/String;)V ***
|
||||
JRI_PUBLIC_API(void)
|
||||
native_MozAxPlugin_setProperty_1(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a, struct java_lang_String *b)
|
||||
/*** private native xsetProperty1 (Ljava/lang/String;Ljava/lang/String;)V ***/
|
||||
extern "C" JRI_PUBLIC_API(void)
|
||||
native_MozAxPlugin_xsetProperty1(JRIEnv* env, struct MozAxPlugin* self, struct java_lang_String *a, struct java_lang_String *b)
|
||||
{
|
||||
HRESULT hr;
|
||||
DISPID dispid;
|
||||
|
@ -1328,11 +1344,4 @@ native_MozAxPlugin_setProperty_1(JRIEnv* env, struct MozAxPlugin* self, struct j
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
#define NO_JDK
|
||||
#include "_stubs/MozAxPlugin.c"
|
||||
|
||||
#define UNUSED_use_netscape_plugin_Plugin
|
||||
#include "_stubs/netscape_plugin_Plugin.c"
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,14 +1,65 @@
|
|||
import netscape.plugin.Plugin;
|
||||
|
||||
class MozAxPlugin extends Plugin
|
||||
public class MozAxPlugin extends Plugin
|
||||
{
|
||||
native Object getProperty(String dispid);
|
||||
native void setProperty(String dispid, String property);
|
||||
native void setProperty(String dispid, Object property);
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Public methods that are exposed through LiveConnect
|
||||
|
||||
native Object invoke(String dispid);
|
||||
native Object invoke(String dispid, Object param1);
|
||||
native Object invoke(String dispid, Object param1, Object param2);
|
||||
native Object invoke(String dispid, Object param1, Object param2, Object param3);
|
||||
native Object invoke(String dispid, Object param1, Object param2, Object param3, Object param4);
|
||||
};
|
||||
public Object getProperty(String dispid)
|
||||
{
|
||||
return xgetProperty(dispid);
|
||||
}
|
||||
public void setProperty(String dispid, String property)
|
||||
{
|
||||
xsetProperty1(dispid, property);
|
||||
}
|
||||
public void setProperty(String dispid, Object property)
|
||||
{
|
||||
xsetProperty2(dispid, property);
|
||||
}
|
||||
|
||||
public Object invoke(String dispid)
|
||||
{
|
||||
return xinvoke(dispid);
|
||||
}
|
||||
|
||||
public Object invoke(String dispid, Object p1)
|
||||
{
|
||||
return xinvoke1(dispid, p1);
|
||||
}
|
||||
public Object invoke(String dispid, Object p1, Object p2)
|
||||
{
|
||||
return xinvoke2(dispid, p1, p2);
|
||||
}
|
||||
public Object invoke(String dispid, Object p1, Object p2, Object p3)
|
||||
{
|
||||
return xinvoke3(dispid, p1, p2, p3);
|
||||
}
|
||||
public Object invoke(String dispid, Object p1, Object p2, Object p3, Object p4)
|
||||
{
|
||||
return xinvoke4(dispid, p1, p2, p3, p4);
|
||||
}
|
||||
public Object invoke(String dispid, Object params[])
|
||||
{
|
||||
return xinvokeX(dispid, params);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Native implementations of the above methods.
|
||||
//
|
||||
// Note: These methods are not overloaded like the public versions above
|
||||
// because javah generates bad code which doesn't compile if you try.
|
||||
|
||||
// TODO remove - this is just a sanity test
|
||||
public native void x(int timeout);
|
||||
|
||||
private native Object xgetProperty(String dispid);
|
||||
private native void xsetProperty1(String dispid, String property);
|
||||
private native void xsetProperty2(String dispid, Object property);
|
||||
private native Object xinvoke(String dispid);
|
||||
private native Object xinvoke1(String dispid, Object p1);
|
||||
private native Object xinvoke2(String dispid, Object p1, Object p2);
|
||||
private native Object xinvoke3(String dispid, Object p1, Object p2, Object p3);
|
||||
private native Object xinvoke4(String dispid, Object p1, Object p2, Object p3, Object p4);
|
||||
private native Object xinvokeX(String dispid, Object params[]);
|
||||
};
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
/* NOTE: This is a C file to avoid some nasty typecasting issues that C++ has
|
||||
with the JDK generated code.
|
||||
*/
|
||||
|
||||
// #define NO_JDK
|
||||
#define IMPLEMENT_MozAxPlugin
|
||||
#include "_stubs/MozAxPlugin.c"
|
||||
#include "_stubs/netscape_plugin_Plugin.c"
|
||||
#include "_stubs/java_lang_String.c"
|
||||
// #include "_stubs/java_lang_Object.c"
|
|
@ -52,11 +52,17 @@ MOZ_ACTIVEX_PLUGIN_SUPPORT = 1
|
|||
# Specify where the PluginSDK, Java compiler, header file
|
||||
# generator and classes live.
|
||||
#
|
||||
# Note 1: you must use the javah from Netscape PluginSDK.
|
||||
# Note 2: you must use JDK1.3 or earlier which has the old JNI support (& oldjavac)
|
||||
# You need the Netscape PluginSDK:
|
||||
#
|
||||
# http://home.netscape.com/comprod/development_partners/plugin_api/index.html
|
||||
#
|
||||
# You also need a JDK with an oldstyle java compiler. Anything from 1.3 downwards
|
||||
# should do. See here for various JDK releases:
|
||||
#
|
||||
# http://java.sun.com/products/archive/index.html
|
||||
|
||||
!ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
|
||||
MOZ_PLUGINSDK = C:\m\PluginSDK
|
||||
MOZ_PLUGINSDK = C:\m\PluginSDK3
|
||||
JAVADIR = C:\j2sdk1.3.1
|
||||
JAVAH = $(MOZ_PLUGINSDK)\bin\win32\javah
|
||||
JAVAC = $(JAVADIR)\bin\oldjavac
|
||||
|
@ -78,33 +84,6 @@ MOZCTLSRC=../control
|
|||
|
||||
###############################################################################
|
||||
|
||||
# Specify the path to the Communicator plugin SDK or get an error message!
|
||||
|
||||
|
||||
!ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
|
||||
!ifndef MOZ_PLUGINSDK
|
||||
!message The build cannot proceed because LiveConnect requires a path to
|
||||
!message the PluginSDK.
|
||||
!message
|
||||
!message Please specify the path to the SDK either by setting the MOZ_PLUGINSDK
|
||||
!message environment variable or as a parameter to nmake. e.g.
|
||||
!message
|
||||
!message set MOZ_PLUGINSDK=c:\pluginsdk
|
||||
!message nmake /f makefile.win
|
||||
!message
|
||||
!message Or:
|
||||
!message
|
||||
!message nmake /f makefile.win MOZ_PLUGINSDK=c:\pluginsdk
|
||||
!message
|
||||
!message The Plugin SDK can be found at:
|
||||
!message
|
||||
!message ftp://ftp.netscape.com/pub/sdk/plugin/windows/winsdk40.zip
|
||||
!message
|
||||
!error
|
||||
!endif
|
||||
!endif
|
||||
|
||||
|
||||
!ifdef MOZ_ACTIVEX_PLUGIN_XPCONNECT
|
||||
XPIDLSRCS = \
|
||||
.\nsIMozAxPlugin.idl \
|
||||
|
@ -121,6 +100,9 @@ OBJS = \
|
|||
.\$(OBJDIR)\LegacyPlugin.obj \
|
||||
.\$(OBJDIR)\MozActiveX.obj \
|
||||
.\$(OBJDIR)\npwin.obj \
|
||||
!ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
|
||||
.\$(OBJDIR)\javastubs.obj \
|
||||
!endif
|
||||
$(NULL)
|
||||
|
||||
# most of these have to be here for nsSetupRegistry.cpp...
|
||||
|
@ -190,22 +172,27 @@ $(DEFFILE) : mkctldef.bat
|
|||
!ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
|
||||
.\MozAxPlugin.class: .\MozAxPlugin.java
|
||||
$(JAVAC) -classpath $(CLASSPATH) MozAxPlugin.java
|
||||
$(JAVAH) -classpath $(CLASSPATH) -jri -d _gen MozAxPlugin
|
||||
$(JAVAH) -classpath $(CLASSPATH) -jri -stubs -d _stubs MozAxPlugin
|
||||
|
||||
.\_gen\java_lang_Object.h : $(JAVACLASSES)
|
||||
$(JAVAH) -classpath $(CLASSPATH) -jri -d _gen java.lang.Object
|
||||
|
||||
.\_stubs\java_lang_Object.c : $(JAVACLASSES)
|
||||
$(JAVAH) -classpath $(CLASSPATH) -jri -stubs -d _stubs java.lang.Object
|
||||
|
||||
.\_gen\java_lang_String.h : $(JAVACLASSES)
|
||||
$(JAVAH) -classpath $(CLASSPATH) -jri -d _gen java.lang.String
|
||||
|
||||
.\_stubs\java_lang_String.c : $(JAVACLASSES)
|
||||
$(JAVAH) -classpath $(CLASSPATH) -jri -stubs -d _stubs java.lang.String
|
||||
|
||||
.\_gen\netscape_plugin_Plugin.h : $(JAVACLASSES)
|
||||
$(JAVAH) -classpath $(CLASSPATH) -jri -d _gen netscape.plugin.Plugin
|
||||
|
||||
.\_stubs\netscape_plugin_Plugin.c : $(JAVACLASSES)
|
||||
$(JAVAH) -classpath $(CLASSPATH) -jri -stubs -d _stubs netscape.plugin.Plugin
|
||||
|
||||
.\_gen\MozAxPlugin.h : .\MozAxPlugin.class
|
||||
$(JAVAH) -classpath $(CLASSPATH) -jri -d _gen MozAxPlugin
|
||||
|
||||
.\_stubs\MozAxPlugin.c : .\MozAxPlugin.class
|
||||
$(JAVAH) -classpath $(CLASSPATH) -jri -stubs -d _stubs MozAxPlugin
|
||||
|
||||
!endif
|
||||
|
||||
ActiveScriptSite.cpp: $(MOZCTLSRC)/ActiveScriptSite.cpp
|
||||
|
@ -215,16 +202,29 @@ MozActiveX.res: MozActiveX.rc resource.h
|
|||
|
||||
MozActiveX.cpp: StdAfx.h
|
||||
|
||||
!ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
|
||||
|
||||
.\$(OBJDIR)\javastubs.obj : javastubs.c
|
||||
|
||||
javastubs.c : \
|
||||
.\MozAxPlugin.class \
|
||||
.\_gen\netscape_plugin_Plugin.h \
|
||||
.\_gen\java_lang_Object.h \
|
||||
.\_stubs\netscape_plugin_Plugin.c \
|
||||
.\_stubs\java_lang_Object.c \
|
||||
.\_stubs\java_lang_String.c \
|
||||
$(NULL)
|
||||
!endif
|
||||
|
||||
LegacyPlugin.cpp: StdAfx.h \
|
||||
!ifdef MOZ_ACTIVEX_PLUGIN_XPCONNECT
|
||||
.\_xpidlgen\nsIMozAxPlugin.h \
|
||||
!endif
|
||||
!ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
|
||||
.\_gen\MozAxPlugin.h \
|
||||
.\MozAxPlugin.class \
|
||||
.\_gen\netscape_plugin_Plugin.h \
|
||||
.\_gen\java_lang_Object.h \
|
||||
.\_stubs\MozAxPlugin.c \
|
||||
.\_stubs\netscape_plugin_Plugin.c \
|
||||
.\_gen\java_lang_String.h \
|
||||
!endif
|
||||
$(NULL)
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче