зеркало из https://github.com/mozilla/gecko-dev.git
a=edburns
r=ashuk bug=47357 M classes_spec/org/mozilla/webclient/wrapper_native/NativeEventThread.java M src_moz/CBrowserContainer.cpp M src_moz/NativeEventThread.cpp M src_moz/ns_util.cpp M src_moz/ns_util.h M src_share/jni_util.cpp M src_share/jni_util.h tar -cvf 47357.2.tar classes_spec/org/mozilla/webclient/wrapper_native/NativeEventThread.java src_moz/CBrowserContainer.cpp src_moz/NativeEventThread.cpp src_moz/ns_util.cpp src_moz/ns_util.h src_share/jni_util.cpp src_share/jni_util.h cvs diff -u classes_spec/org/mozilla/webclient/wrapper_native/NativeEventThread.java src_moz/CBrowserContainer.cpp src_moz/NativeEventThread.cpp src_moz/ns_util.cpp src_moz/ns_util.h src_share/jni_util.cpp src_share/jni_util.h This change modifes what one has to do on the native side to add a listener. * How to create a new listener type on the native side: <P> * 1. add an entry in the gSupportedListenerInterfaces array defined in * ns_util.cpp <P> * 2. add a corresponding entry in the LISTENER_CLASSES enum in * ns_util.h <P> * 3. add a jstring to the string constant list in * CBrowserContainer.cpp, below. * 4. Initialize this jstring constant in CBrowserContainer.cpp * initStringConstants() <P> * 5. add an entry to the switch statement in NativeEventThread.cpp * native{add,remove}Listener <P> You have to clobber_all in webclient after this change.
This commit is contained in:
Родитель
20e4421fed
Коммит
0a19898c15
|
@ -351,20 +351,22 @@ void removeListener(WCEventListenerWrapper newListener)
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void nativeEventOccurred(WebclientEventListener target, long eventType,
|
void nativeEventOccurred(WebclientEventListener target,
|
||||||
|
String targetClassName, long eventType,
|
||||||
Object eventData)
|
Object eventData)
|
||||||
{
|
{
|
||||||
ParameterCheck.nonNull(target);
|
ParameterCheck.nonNull(target);
|
||||||
|
ParameterCheck.nonNull(targetClassName);
|
||||||
|
|
||||||
Assert.assert(-1 != nativeWebShell);
|
Assert.assert(-1 != nativeWebShell);
|
||||||
Assert.assert(null != windowControl);
|
Assert.assert(null != windowControl);
|
||||||
|
|
||||||
WebclientEvent event = null;
|
WebclientEvent event = null;
|
||||||
|
|
||||||
if (target instanceof DocumentLoadListener) {
|
if (DocumentLoadListener.class.getName().equals(targetClassName)) {
|
||||||
event = new DocumentLoadEvent(this, eventType, eventData);
|
event = new DocumentLoadEvent(this, eventType, eventData);
|
||||||
}
|
}
|
||||||
else if (target instanceof MouseListener) {
|
else if (MouseListener.class.getName().equals(targetClassName)) {
|
||||||
Assert.assert(target instanceof WCMouseListenerImpl);
|
Assert.assert(target instanceof WCMouseListenerImpl);
|
||||||
|
|
||||||
// We create a plain vanilla WebclientEvent, which the
|
// We create a plain vanilla WebclientEvent, which the
|
||||||
|
|
|
@ -61,7 +61,7 @@ char *CBrowserContainer::DOMMouseListener_maskNames[] = {
|
||||||
nsnull
|
nsnull
|
||||||
};
|
};
|
||||||
|
|
||||||
static jboolean PROPERTIES_KEYS_INITED = JNI_FALSE;
|
static jboolean STRING_CONSTANTS_INITED = JNI_FALSE;
|
||||||
static jobject SCREEN_X_KEY = nsnull;
|
static jobject SCREEN_X_KEY = nsnull;
|
||||||
static jobject SCREEN_Y_KEY = nsnull;
|
static jobject SCREEN_Y_KEY = nsnull;
|
||||||
static jobject CLIENT_X_KEY = nsnull;
|
static jobject CLIENT_X_KEY = nsnull;
|
||||||
|
@ -77,6 +77,36 @@ static jobject FALSE_VALUE = nsnull;
|
||||||
static jobject ONE_VALUE = nsnull;
|
static jobject ONE_VALUE = nsnull;
|
||||||
static jobject TWO_VALUE = nsnull;
|
static jobject TWO_VALUE = nsnull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
* How to create a new listener type on the native side: <P>
|
||||||
|
|
||||||
|
* 1. add an entry in the gSupportedListenerInterfaces array defined in
|
||||||
|
* ns_util.cpp <P>
|
||||||
|
|
||||||
|
* 2. add a corresponding entry in the LISTENER_CLASSES enum in
|
||||||
|
* ns_util.h <P>
|
||||||
|
|
||||||
|
* 3. add a jstring to the string constant list in
|
||||||
|
* CBrowserContainer.cpp, below.
|
||||||
|
|
||||||
|
* 4. Initialize this jstring constant in CBrowserContainer.cpp
|
||||||
|
* initStringConstants() <P>
|
||||||
|
|
||||||
|
* 5. add an entry to the switch statement in NativeEventThread.cpp
|
||||||
|
* native{add,remove}Listener <P>
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
* We need one of these for each of the classes in
|
||||||
|
* gSupportedListenerInterfaces, defined in ns_util.cpp
|
||||||
|
|
||||||
|
*/
|
||||||
|
static jstring DOCUMENT_LOAD_LISTENER_CLASSNAME;
|
||||||
|
static jstring MOUSE_LISTENER_CLASSNAME;
|
||||||
|
|
||||||
#if defined(XP_UNIX) || defined(XP_MAC) || defined(XP_BEOS)
|
#if defined(XP_UNIX) || defined(XP_MAC) || defined(XP_BEOS)
|
||||||
|
|
||||||
#define WC_ITOA(intVal, buf, radix) sprintf(buf, "%d", intVal)
|
#define WC_ITOA(intVal, buf, radix) sprintf(buf, "%d", intVal)
|
||||||
|
@ -91,7 +121,7 @@ static jobject TWO_VALUE = nsnull;
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
jboolean initPropertiesKeys();
|
jboolean initStringConstants();
|
||||||
|
|
||||||
CBrowserContainer::CBrowserContainer(nsIWebBrowser *pOwner, JNIEnv *env,
|
CBrowserContainer::CBrowserContainer(nsIWebBrowser *pOwner, JNIEnv *env,
|
||||||
WebShellInitContext *yourInitContext) :
|
WebShellInitContext *yourInitContext) :
|
||||||
|
@ -103,6 +133,10 @@ CBrowserContainer::CBrowserContainer(nsIWebBrowser *pOwner, JNIEnv *env,
|
||||||
if (nsnull == gVm) { // declared in ../src_share/jni_util.h
|
if (nsnull == gVm) { // declared in ../src_share/jni_util.h
|
||||||
::util_GetJavaVM(env, &gVm); // save this vm reference away for the callback!
|
::util_GetJavaVM(env, &gVm); // save this vm reference away for the callback!
|
||||||
}
|
}
|
||||||
|
// initialize the string constants (including properties keys)
|
||||||
|
if (!STRING_CONSTANTS_INITED) {
|
||||||
|
initStringConstants();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -702,6 +736,7 @@ CBrowserContainer::OnStartDocumentLoad(nsIDocumentLoader* loader, nsIURI* aURL,
|
||||||
}
|
}
|
||||||
util_SendEventToJava(mInitContext->env,
|
util_SendEventToJava(mInitContext->env,
|
||||||
mInitContext->nativeEventThread, mDocTarget,
|
mInitContext->nativeEventThread, mDocTarget,
|
||||||
|
DOCUMENT_LOAD_LISTENER_CLASSNAME,
|
||||||
DocumentLoader_maskValues[START_DOCUMENT_LOAD_EVENT_MASK],
|
DocumentLoader_maskValues[START_DOCUMENT_LOAD_EVENT_MASK],
|
||||||
urlJStr);
|
urlJStr);
|
||||||
|
|
||||||
|
@ -749,6 +784,7 @@ CBrowserContainer::OnEndDocumentLoad(nsIDocumentLoader* loader, nsIChannel *aCha
|
||||||
|
|
||||||
util_SendEventToJava(mInitContext->env,
|
util_SendEventToJava(mInitContext->env,
|
||||||
mInitContext->nativeEventThread, mDocTarget,
|
mInitContext->nativeEventThread, mDocTarget,
|
||||||
|
DOCUMENT_LOAD_LISTENER_CLASSNAME,
|
||||||
DocumentLoader_maskValues[END_DOCUMENT_LOAD_EVENT_MASK],
|
DocumentLoader_maskValues[END_DOCUMENT_LOAD_EVENT_MASK],
|
||||||
nsnull);
|
nsnull);
|
||||||
|
|
||||||
|
@ -773,6 +809,7 @@ CBrowserContainer::OnStartURLLoad(nsIDocumentLoader* loader, nsIChannel* aChanne
|
||||||
|
|
||||||
util_SendEventToJava(mInitContext->env,
|
util_SendEventToJava(mInitContext->env,
|
||||||
mInitContext->nativeEventThread, mDocTarget,
|
mInitContext->nativeEventThread, mDocTarget,
|
||||||
|
DOCUMENT_LOAD_LISTENER_CLASSNAME,
|
||||||
DocumentLoader_maskValues[START_URL_LOAD_EVENT_MASK],
|
DocumentLoader_maskValues[START_URL_LOAD_EVENT_MASK],
|
||||||
nsnull);
|
nsnull);
|
||||||
|
|
||||||
|
@ -795,6 +832,7 @@ CBrowserContainer::OnProgressURLLoad(nsIDocumentLoader* loader, nsIChannel* aCha
|
||||||
|
|
||||||
util_SendEventToJava(mInitContext->env,
|
util_SendEventToJava(mInitContext->env,
|
||||||
mInitContext->nativeEventThread, mDocTarget,
|
mInitContext->nativeEventThread, mDocTarget,
|
||||||
|
DOCUMENT_LOAD_LISTENER_CLASSNAME,
|
||||||
DocumentLoader_maskValues[PROGRESS_URL_LOAD_EVENT_MASK],
|
DocumentLoader_maskValues[PROGRESS_URL_LOAD_EVENT_MASK],
|
||||||
nsnull);
|
nsnull);
|
||||||
|
|
||||||
|
@ -829,6 +867,7 @@ CBrowserContainer::OnStatusURLLoad(nsIDocumentLoader* loader,
|
||||||
|
|
||||||
util_SendEventToJava(mInitContext->env, mInitContext->nativeEventThread,
|
util_SendEventToJava(mInitContext->env, mInitContext->nativeEventThread,
|
||||||
mDocTarget,
|
mDocTarget,
|
||||||
|
DOCUMENT_LOAD_LISTENER_CLASSNAME,
|
||||||
DocumentLoader_maskValues[STATUS_URL_LOAD_EVENT_MASK],
|
DocumentLoader_maskValues[STATUS_URL_LOAD_EVENT_MASK],
|
||||||
(jobject) statusMessage);
|
(jobject) statusMessage);
|
||||||
|
|
||||||
|
@ -856,6 +895,7 @@ CBrowserContainer::OnEndURLLoad(nsIDocumentLoader* loader, nsIChannel* channel,
|
||||||
|
|
||||||
util_SendEventToJava(mInitContext->env,
|
util_SendEventToJava(mInitContext->env,
|
||||||
mInitContext->nativeEventThread, mDocTarget,
|
mInitContext->nativeEventThread, mDocTarget,
|
||||||
|
DOCUMENT_LOAD_LISTENER_CLASSNAME,
|
||||||
DocumentLoader_maskValues[END_URL_LOAD_EVENT_MASK], nsnull);
|
DocumentLoader_maskValues[END_URL_LOAD_EVENT_MASK], nsnull);
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
@ -881,6 +921,7 @@ CBrowserContainer::MouseDown(nsIDOMEvent* aMouseEvent)
|
||||||
util_SendEventToJava(mInitContext->env,
|
util_SendEventToJava(mInitContext->env,
|
||||||
mInitContext->nativeEventThread,
|
mInitContext->nativeEventThread,
|
||||||
mMouseTarget,
|
mMouseTarget,
|
||||||
|
MOUSE_LISTENER_CLASSNAME,
|
||||||
DOMMouseListener_maskValues[MOUSE_DOWN_EVENT_MASK],
|
DOMMouseListener_maskValues[MOUSE_DOWN_EVENT_MASK],
|
||||||
properties);
|
properties);
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
@ -899,6 +940,7 @@ CBrowserContainer::MouseUp(nsIDOMEvent* aMouseEvent)
|
||||||
util_SendEventToJava(mInitContext->env,
|
util_SendEventToJava(mInitContext->env,
|
||||||
mInitContext->nativeEventThread,
|
mInitContext->nativeEventThread,
|
||||||
mMouseTarget,
|
mMouseTarget,
|
||||||
|
MOUSE_LISTENER_CLASSNAME,
|
||||||
DOMMouseListener_maskValues[MOUSE_UP_EVENT_MASK],
|
DOMMouseListener_maskValues[MOUSE_UP_EVENT_MASK],
|
||||||
properties);
|
properties);
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
@ -922,6 +964,7 @@ CBrowserContainer::MouseClick(nsIDOMEvent* aMouseEvent)
|
||||||
util_SendEventToJava(mInitContext->env,
|
util_SendEventToJava(mInitContext->env,
|
||||||
mInitContext->nativeEventThread,
|
mInitContext->nativeEventThread,
|
||||||
mMouseTarget,
|
mMouseTarget,
|
||||||
|
MOUSE_LISTENER_CLASSNAME,
|
||||||
DOMMouseListener_maskValues[MOUSE_CLICK_EVENT_MASK],
|
DOMMouseListener_maskValues[MOUSE_CLICK_EVENT_MASK],
|
||||||
properties);
|
properties);
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
@ -946,6 +989,7 @@ CBrowserContainer::MouseDblClick(nsIDOMEvent* aMouseEvent)
|
||||||
util_SendEventToJava(mInitContext->env,
|
util_SendEventToJava(mInitContext->env,
|
||||||
mInitContext->nativeEventThread,
|
mInitContext->nativeEventThread,
|
||||||
mMouseTarget,
|
mMouseTarget,
|
||||||
|
MOUSE_LISTENER_CLASSNAME,
|
||||||
DOMMouseListener_maskValues[MOUSE_DOUBLE_CLICK_EVENT_MASK],
|
DOMMouseListener_maskValues[MOUSE_DOUBLE_CLICK_EVENT_MASK],
|
||||||
properties);
|
properties);
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
@ -964,6 +1008,7 @@ CBrowserContainer::MouseOver(nsIDOMEvent* aMouseEvent)
|
||||||
util_SendEventToJava(mInitContext->env,
|
util_SendEventToJava(mInitContext->env,
|
||||||
mInitContext->nativeEventThread,
|
mInitContext->nativeEventThread,
|
||||||
mMouseTarget,
|
mMouseTarget,
|
||||||
|
MOUSE_LISTENER_CLASSNAME,
|
||||||
DOMMouseListener_maskValues[MOUSE_OVER_EVENT_MASK],
|
DOMMouseListener_maskValues[MOUSE_OVER_EVENT_MASK],
|
||||||
properties);
|
properties);
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
@ -982,6 +1027,7 @@ CBrowserContainer::MouseOut(nsIDOMEvent* aMouseEvent)
|
||||||
util_SendEventToJava(mInitContext->env,
|
util_SendEventToJava(mInitContext->env,
|
||||||
mInitContext->nativeEventThread,
|
mInitContext->nativeEventThread,
|
||||||
mMouseTarget,
|
mMouseTarget,
|
||||||
|
MOUSE_LISTENER_CLASSNAME,
|
||||||
DOMMouseListener_maskValues[MOUSE_OUT_EVENT_MASK],
|
DOMMouseListener_maskValues[MOUSE_OUT_EVENT_MASK],
|
||||||
properties);
|
properties);
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
|
@ -1135,7 +1181,8 @@ jobject JNICALL CBrowserContainer::getPropertiesFromEvent(nsIDOMEvent *event)
|
||||||
|
|
||||||
void JNICALL CBrowserContainer::addMouseEventDataToProperties(nsIDOMEvent *aMouseEvent)
|
void JNICALL CBrowserContainer::addMouseEventDataToProperties(nsIDOMEvent *aMouseEvent)
|
||||||
{
|
{
|
||||||
if (!properties) {
|
// if the initialization failed, don't modify the properties
|
||||||
|
if (!properties || !STRING_CONSTANTS_INITED) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
nsresult rv;
|
nsresult rv;
|
||||||
|
@ -1148,13 +1195,7 @@ void JNICALL CBrowserContainer::addMouseEventDataToProperties(nsIDOMEvent *aMous
|
||||||
if (NS_FAILED(rv)) {
|
if (NS_FAILED(rv)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// initialize the standard properties keys
|
|
||||||
if (!PROPERTIES_KEYS_INITED) {
|
|
||||||
// if the initialization failed, don't modify the properties
|
|
||||||
if (!initPropertiesKeys()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
PRInt32 intVal;
|
PRInt32 intVal;
|
||||||
PRUint16 int16Val;
|
PRUint16 int16Val;
|
||||||
PRBool boolVal;
|
PRBool boolVal;
|
||||||
|
@ -1394,7 +1435,7 @@ nsresult JNICALL CBrowserContainer::takeActionOnNode(nsCOMPtr<nsIDOMNode> curren
|
||||||
// Local functions
|
// Local functions
|
||||||
//
|
//
|
||||||
|
|
||||||
jboolean initPropertiesKeys()
|
jboolean initStringConstants()
|
||||||
{
|
{
|
||||||
JNIEnv *env = (JNIEnv *) JNU_GetEnv(gVm, JNI_VERSION_1_2);
|
JNIEnv *env = (JNIEnv *) JNU_GetEnv(gVm, JNI_VERSION_1_2);
|
||||||
|
|
||||||
|
@ -1469,6 +1510,18 @@ jboolean initPropertiesKeys()
|
||||||
::util_NewStringUTF(env, "2")))) {
|
::util_NewStringUTF(env, "2")))) {
|
||||||
return JNI_FALSE;
|
return JNI_FALSE;
|
||||||
}
|
}
|
||||||
|
if (nsnull == (DOCUMENT_LOAD_LISTENER_CLASSNAME = (jstring)
|
||||||
|
::util_NewGlobalRef(env,
|
||||||
|
::util_NewStringUTF(env,
|
||||||
|
gSupportedListenerInterfaces[DOCUMENT_LOAD_LISTENER])))) {
|
||||||
|
return JNI_FALSE;
|
||||||
|
}
|
||||||
|
if (nsnull == (MOUSE_LISTENER_CLASSNAME = (jstring)
|
||||||
|
::util_NewGlobalRef(env,
|
||||||
|
::util_NewStringUTF(env,
|
||||||
|
gSupportedListenerInterfaces[MOUSE_LISTENER])))) {
|
||||||
|
return JNI_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
return PROPERTIES_KEYS_INITED = JNI_TRUE;
|
return STRING_CONSTANTS_INITED = JNI_TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,7 +85,7 @@ static NS_DEFINE_CID(kCmdLineServiceCID, NS_COMMANDLINE_SERVICE_CID);
|
||||||
static const char *NS_DOCSHELL_PROGID = "component://netscape/docshell/html";
|
static const char *NS_DOCSHELL_PROGID = "component://netscape/docshell/html";
|
||||||
//static const char *NS_WEBBROWSER_PROGID = "component://netscape/embedding/browser/nsWebBrowser";
|
//static const char *NS_WEBBROWSER_PROGID = "component://netscape/embedding/browser/nsWebBrowser";
|
||||||
|
|
||||||
extern const char * gBinDir;
|
extern const char * gBinDir; // defined in WrapperFactoryImpl.cpp
|
||||||
|
|
||||||
#ifdef XP_PC
|
#ifdef XP_PC
|
||||||
|
|
||||||
|
@ -160,27 +160,6 @@ char * errorMessages[] = {
|
||||||
"Unable to show the WebShell."
|
"Unable to show the WebShell."
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
* a null terminated array of listener interfaces we support.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
const char *gSupportedListenerInterfaces[] = {
|
|
||||||
"org.mozilla.webclient.DocumentLoadListener",
|
|
||||||
"java.awt.event.MouseListener",
|
|
||||||
nsnull
|
|
||||||
};
|
|
||||||
|
|
||||||
// these index into the gSupportedListenerInterfaces array
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
DOCUMENT_LOAD_LISTENER = 0,
|
|
||||||
MOUSE_LISTENER,
|
|
||||||
LISTENER_NOT_FOUND
|
|
||||||
} LISTENER_CLASSES;
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// JNI methods
|
// JNI methods
|
||||||
//
|
//
|
||||||
|
|
|
@ -30,6 +30,20 @@
|
||||||
|
|
||||||
#include "ns_util.h"
|
#include "ns_util.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
* a null terminated array of listener interfaces we support. This is
|
||||||
|
* used in NativeEventThread.cpp nativeAddListener,
|
||||||
|
* nativeRemoveListener, and in CBrowserContainer.cpp
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
const char *gSupportedListenerInterfaces[] = {
|
||||||
|
"org.mozilla.webclient.DocumentLoadListener",
|
||||||
|
"java.awt.event.MouseListener",
|
||||||
|
nsnull
|
||||||
|
};
|
||||||
|
|
||||||
void util_PostEvent(WebShellInitContext * initContext, PLEvent * event)
|
void util_PostEvent(WebShellInitContext * initContext, PLEvent * event)
|
||||||
{
|
{
|
||||||
PL_ENTER_EVENT_QUEUE_MONITOR(initContext->actionQueue);
|
PL_ENTER_EVENT_QUEUE_MONITOR(initContext->actionQueue);
|
||||||
|
|
|
@ -118,6 +118,17 @@ enum {
|
||||||
kGetDOMWindowError
|
kGetDOMWindowError
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern const char *gSupportedListenerInterfaces[]; // defined in ns_util.cpp
|
||||||
|
|
||||||
|
// these index into the gSupportedListenerInterfaces array
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
DOCUMENT_LOAD_LISTENER = 0,
|
||||||
|
MOUSE_LISTENER,
|
||||||
|
LISTENER_NOT_FOUND
|
||||||
|
} LISTENER_CLASSES;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
||||||
* This method calls PL_PostEvent(),
|
* This method calls PL_PostEvent(),
|
||||||
|
|
|
@ -87,6 +87,7 @@ void util_ThrowExceptionToJava (JNIEnv * env, const char * message)
|
||||||
|
|
||||||
void util_SendEventToJava(JNIEnv *yourEnv, jobject nativeEventThread,
|
void util_SendEventToJava(JNIEnv *yourEnv, jobject nativeEventThread,
|
||||||
jobject webclientEventListener,
|
jobject webclientEventListener,
|
||||||
|
jstring eventListenerClassName,
|
||||||
jlong eventType, jobject eventData)
|
jlong eventType, jobject eventData)
|
||||||
{
|
{
|
||||||
#ifdef BAL_INTERFACE
|
#ifdef BAL_INTERFACE
|
||||||
|
@ -113,9 +114,10 @@ void util_SendEventToJava(JNIEnv *yourEnv, jobject nativeEventThread,
|
||||||
|
|
||||||
jclass clazz = env->GetObjectClass(nativeEventThread);
|
jclass clazz = env->GetObjectClass(nativeEventThread);
|
||||||
jmethodID mid = env->GetMethodID(clazz, "nativeEventOccurred",
|
jmethodID mid = env->GetMethodID(clazz, "nativeEventOccurred",
|
||||||
"(Lorg/mozilla/webclient/WebclientEventListener;JLjava/lang/Object;)V");
|
"(Lorg/mozilla/webclient/WebclientEventListener;Ljava/lang/String;JLjava/lang/Object;)V");
|
||||||
if ( mid != nsnull) {
|
if ( mid != nsnull) {
|
||||||
env->CallVoidMethod(nativeEventThread, mid, webclientEventListener,
|
env->CallVoidMethod(nativeEventThread, mid, webclientEventListener,
|
||||||
|
eventListenerClassName,
|
||||||
eventType, eventData);
|
eventType, eventData);
|
||||||
} else {
|
} else {
|
||||||
util_LogMessage(3, "cannot call the Java Method!\n");
|
util_LogMessage(3, "cannot call the Java Method!\n");
|
||||||
|
|
|
@ -75,6 +75,7 @@ void util_ThrowExceptionToJava (JNIEnv * env, const char * message);
|
||||||
|
|
||||||
void util_SendEventToJava(JNIEnv *env, jobject eventRegistrationImpl,
|
void util_SendEventToJava(JNIEnv *env, jobject eventRegistrationImpl,
|
||||||
jobject webclientEventListener,
|
jobject webclientEventListener,
|
||||||
|
jstring eventListenerClassName,
|
||||||
jlong eventType,
|
jlong eventType,
|
||||||
jobject eventData);
|
jobject eventData);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче