Remove OJI from the tree. b=485984 r/sr=jst

This commit is contained in:
Josh Aas 2009-04-09 22:38:21 -04:00
Родитель 2568e2b270
Коммит e1f29205b9
1103 изменённых файлов: 28 добавлений и 123058 удалений

Просмотреть файл

@ -149,9 +149,6 @@ bin/components/necko_strconv.xpt
bin/components/necko_viewsource.xpt
bin/components/necko_wifi.xpt
bin/components/necko.xpt
#ifdef OJI
bin/components/oji.xpt
#endif
bin/components/loginmgr.xpt
bin/components/places.xpt
bin/components/plugin.xpt

Просмотреть файл

@ -156,9 +156,6 @@ bin\components\necko_res.xpt
bin\components\necko_socket.xpt
bin\components\necko_viewsource.xpt
bin\components\necko_wifi.xpt
#ifdef OJI
bin\components\oji.xpt
#endif
bin\components\loginmgr.xpt
bin\components\places.xpt
bin\components\plugin.xpt

Просмотреть файл

@ -2674,17 +2674,6 @@ case "$target" in
esac
AC_SUBST(NO_LD_ARCHIVE_FLAGS)
dnl
dnl Indicate that platform requires special thread safe
dnl locking when starting up the OJI JVM
dnl (see mozilla/modules/oji/src/nsJVMManager.cpp)
dnl ========================================================
case "$target" in
*-hpux*)
AC_DEFINE(MOZ_OJI_REQUIRE_THREAD_SAFE_ON_STARTUP)
;;
esac
dnl ========================================================
dnl = Flags to strip unused symbols from .so components
dnl ========================================================
@ -4488,7 +4477,6 @@ MOZ_OGG=1
MOZ_SYDNEYAUDIO=
MOZ_WAVE=1
MOZ_MEDIA=
MOZ_OJI=1
MOZ_PERMISSIONS=1
MOZ_PLACES=
MOZ_PLAINTEXT_EDITOR_ONLY=
@ -4603,7 +4591,6 @@ basic)
MOZ_NO_INSPECTOR_APIS=1
MOZ_NO_XPCOM_OBSOLETE=1
MOZ_NO_FAST_LOAD=1
MOZ_OJI=
MOZ_PLAINTEXT_EDITOR_ONLY=1
# MOZ_PLUGINS=
MOZ_PREF_EXTENSIONS=
@ -4646,7 +4633,6 @@ minimal)
MOZ_NO_INSPECTOR_APIS=1
MOZ_NO_XPCOM_OBSOLETE=1
MOZ_NO_FAST_LOAD=1
MOZ_OJI=
MOZ_PLAINTEXT_EDITOR_ONLY=1
MOZ_PLUGINS=
MOZ_PREF_EXTENSIONS=
@ -5306,17 +5292,6 @@ MOZ_ARG_DISABLE_BOOL(dbm,
NSS_DISABLE_DBM=1,
NSS_DISABLE_DBM=)
dnl ========================================================
dnl = Open JVM Interface (OJI) support
dnl ========================================================
MOZ_ARG_DISABLE_BOOL(oji,
[ --disable-oji Disable Open JVM Integration support],
MOZ_OJI=,
MOZ_OJI=1)
if test -n "$MOZ_OJI"; then
AC_DEFINE(OJI)
fi
dnl bi-directional support always on
IBMBIDI=1
AC_DEFINE(IBMBIDI)
@ -8019,7 +7994,6 @@ AC_SUBST(MOZ_EXTENSIONS)
AC_SUBST(MOZ_IMG_DECODERS)
AC_SUBST(MOZ_IMG_ENCODERS)
AC_SUBST(MOZ_JSDEBUGGER)
AC_SUBST(MOZ_OJI)
AC_SUBST(MOZ_NO_XPCOM_OBSOLETE)
AC_SUBST(MOZ_PLUGINS)
AC_SUBST(ENABLE_EAZEL_PROFILER)

Просмотреть файл

@ -147,19 +147,11 @@
#include "nsIPluginHost.h"
#include "nsPIPluginHost.h"
#ifdef OJI
// HTMLAppletElement helper includes
#include "nsIJVMManager.h"
#include "nsILiveConnectManager.h"
#include "nsIJVMPluginInstance.h"
#endif
// Oh, did I mention that I hate Microsoft for doing this to me?
#ifdef XP_WIN
#undef GetClassName
#endif
// HTMLOptionsCollection includes
#include "nsIDOMHTMLOptionElement.h"
#include "nsIDOMNSHTMLOptionElement.h"
@ -1455,14 +1447,6 @@ jsval nsDOMClassInfo::sOncut_id = JSVAL_VOID;
jsval nsDOMClassInfo::sOnpaste_id = JSVAL_VOID;
jsval nsDOMClassInfo::sJava_id = JSVAL_VOID;
jsval nsDOMClassInfo::sPackages_id = JSVAL_VOID;
#ifdef OJI
jsval nsDOMClassInfo::sNetscape_id = JSVAL_VOID;
jsval nsDOMClassInfo::sSun_id = JSVAL_VOID;
jsval nsDOMClassInfo::sJavaObject_id = JSVAL_VOID;
jsval nsDOMClassInfo::sJavaClass_id = JSVAL_VOID;
jsval nsDOMClassInfo::sJavaArray_id = JSVAL_VOID;
jsval nsDOMClassInfo::sJavaMember_id = JSVAL_VOID;
#endif
static const JSClass *sObjectClass = nsnull;
const JSClass *nsDOMClassInfo::sXPCNativeWrapperClass = nsnull;
@ -1654,14 +1638,6 @@ nsDOMClassInfo::DefineStaticJSVals(JSContext *cx)
SET_JSVAL_TO_STRING(sOnpaste_id, cx, "onpaste");
SET_JSVAL_TO_STRING(sJava_id, cx, "java");
SET_JSVAL_TO_STRING(sPackages_id, cx, "Packages");
#ifdef OJI
SET_JSVAL_TO_STRING(sNetscape_id, cx, "netscape");
SET_JSVAL_TO_STRING(sSun_id, cx, "sun");
SET_JSVAL_TO_STRING(sJavaObject_id, cx, "JavaObject");
SET_JSVAL_TO_STRING(sJavaClass_id, cx, "JavaClass");
SET_JSVAL_TO_STRING(sJavaArray_id, cx, "JavaArray");
SET_JSVAL_TO_STRING(sJavaMember_id, cx, "JavaMember");
#endif
return NS_OK;
}
@ -4420,14 +4396,6 @@ nsDOMClassInfo::ShutDown()
sOnpaste_id = JSVAL_VOID;
sJava_id = JSVAL_VOID;
sPackages_id = JSVAL_VOID;
#ifdef OJI
sNetscape_id = JSVAL_VOID;
sSun_id = JSVAL_VOID;
sJavaObject_id = JSVAL_VOID;
sJavaClass_id = JSVAL_VOID;
sJavaArray_id = JSVAL_VOID;
sJavaMember_id = JSVAL_VOID;
#endif
NS_IF_RELEASE(sXPConnect);
NS_IF_RELEASE(sSecMan);
@ -6517,12 +6485,7 @@ nsWindowSH::NewResolve(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
return NS_OK;
}
if (id == sJava_id || id == sPackages_id
#ifdef OJI
|| id == sNetscape_id || id == sSun_id || id == sJavaObject_id ||
id == sJavaClass_id || id == sJavaArray_id || id == sJavaMember_id
#endif
) {
if (id == sJava_id || id == sPackages_id) {
static PRBool isResolvingJavaProperties;
if (!isResolvingJavaProperties) {
@ -9651,41 +9614,7 @@ nsHTMLPluginObjElementSH::GetJavaPluginJSObject(JSContext *cx, JSObject *obj,
JSObject **plugin_obj,
JSObject **plugin_proto)
{
#ifdef OJI
*plugin_obj = nsnull;
*plugin_proto = nsnull;
nsCOMPtr<nsIJVMManager> jvm(do_GetService(nsIJVMManager::GetCID()));
if (!jvm) {
#endif
return NS_OK;
#ifdef OJI
}
nsCOMPtr<nsIJVMPluginInstance> javaPluginInstance =
do_QueryInterface(plugin_inst);
if (!javaPluginInstance) {
return NS_OK;
}
jobject appletObject = nsnull;
nsresult rv = javaPluginInstance->GetJavaObject(&appletObject);
if (NS_FAILED(rv) || !appletObject) {
return rv;
}
nsCOMPtr<nsILiveConnectManager> manager =
do_GetService(nsIJVMManager::GetCID());
if (!manager) {
return NS_OK;
}
return manager->WrapJavaObject(cx, appletObject, plugin_obj);
#endif /* OJI */
}
@ -9835,18 +9764,9 @@ nsHTMLPluginObjElementSH::NewResolve(nsIXPConnectWrappedNative *wrapper,
nsCOMPtr<nsIPluginInstanceInternal> plugin_internal =
do_QueryInterface(pi);
#ifdef OJI
nsCOMPtr<nsIJVMPluginInstance> java_plugin_instance =
do_QueryInterface(pi);
#endif
// Bail if we don't have a plugin instance or this is an NPRuntime or Java
// plugin since the following code is only useful for XPCOM plugins.
if (!pi || (plugin_internal && plugin_internal->GetJSObject(cx))
#ifdef OJI
|| java_plugin_instance
#endif
) {
if (!pi || (plugin_internal && plugin_internal->GetJSObject(cx))) {
return nsHTMLElementSH::NewResolve(wrapper, cx, obj, id, flags, objp,
_retval);
}

Просмотреть файл

@ -329,14 +329,6 @@ protected:
static jsval sOnpaste_id;
static jsval sJava_id;
static jsval sPackages_id;
#ifdef OJI
static jsval sNetscape_id;
static jsval sSun_id;
static jsval sJavaObject_id;
static jsval sJavaClass_id;
static jsval sJavaArray_id;
static jsval sJavaMember_id;
#endif
static const JSClass *sXPCNativeWrapperClass;
};

Просмотреть файл

@ -74,10 +74,6 @@
#include "nsIPluginHost.h"
#include "nsPIPluginHost.h"
#include "nsGeolocation.h"
#ifdef OJI
#include "nsIJVMManager.h"
#include "nsILiveConnectManager.h"
#endif
#include "nsContentCID.h"
#include "nsLayoutStatics.h"
#include "nsCycleCollector.h"
@ -346,9 +342,6 @@ static PRBool gDOMWindowDumpEnabled = PR_FALSE;
PR_END_MACRO
// CIDs
#ifdef OJI
static NS_DEFINE_CID(kJVMServiceCID, NS_JVMMANAGER_CID);
#endif
static NS_DEFINE_CID(kXULControllersCID, NS_XULCONTROLLERS_CID);
static const char sJSStackContractID[] = "@mozilla.org/js/xpc/ContextStack;1";
@ -5810,37 +5803,6 @@ nsGlobalWindow::InitJavaProperties()
// No NPRuntime enabled Java plugin found, null out the owner we
// would have used in that case as it's no longer needed.
mDummyJavaPluginOwner = nsnull;
#ifdef OJI
JSContext *cx = (JSContext *)scx->GetNativeContext();
nsCOMPtr<nsILiveConnectManager> manager =
do_GetService(nsIJVMManager::GetCID());
if (!manager) {
return;
}
PRBool started = PR_FALSE;
manager->StartupLiveConnect(::JS_GetRuntime(cx), started);
nsCOMPtr<nsIJVMManager> jvmManager(do_QueryInterface(manager));
if (!jvmManager) {
return;
}
PRBool javaEnabled = PR_FALSE;
if (NS_FAILED(jvmManager->GetJavaEnabled(&javaEnabled)) || !javaEnabled) {
return;
}
{
JSAutoRequest ar(cx);
manager->InitLiveConnectClasses(cx, mJSObject);
}
#endif
}
void*
@ -9291,17 +9253,6 @@ nsNavigator::JavaEnabled(PRBool *aReturn)
{
*aReturn = nsContentUtils::GetBoolPref("security.enable_java");
#ifdef OJI
// Ask the nsIJVMManager if Java is enabled
nsCOMPtr<nsIJVMManager> jvmService = do_GetService(kJVMServiceCID);
if (jvmService) {
jvmService->GetJavaEnabled(aReturn);
}
else {
*aReturn = PR_FALSE;
}
#endif
return NS_OK;
}

Просмотреть файл

@ -37,7 +37,6 @@
* ***** END LICENSE BLOCK ***** */
#include "stdafx.h"
#include "jni.h"
#include "npapi.h"
#include "nsISupports.h"
@ -46,10 +45,6 @@
#include "XPConnect.h"
#endif
#ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
#include "LiveConnect.h"
#endif
#include "LegacyPlugin.h"
#ifdef XPC_IDISPATCH_SUPPORT
@ -244,26 +239,10 @@ NPError NPP_Initialize(void)
void NPP_Shutdown(void)
{
ATLTRACE(_T("NPP_Shutdown()\n"));
#ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
liveconnect_Shutdown();
#endif
_Module.Unlock();
}
// NPP_GetJavaClass
//
// Return the Java class representing this plugin
//
jref NPP_GetJavaClass(void)
{
ATLTRACE(_T("NPP_GetJavaClass()\n"));
#ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
return liveconnect_GetJavaClass();
#endif
return NULL;
}
#define MIME_OLEOBJECT1 "application/x-oleobject"
#define MIME_OLEOBJECT2 "application/oleobject"

Просмотреть файл

@ -1,545 +0,0 @@
/* -*- 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
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Adam Lock <adamlock@netscape.com>
*
* 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 ***** */
#include "stdafx.h"
#include "jni.h"
#include "npapi.h"
#include "_java/java_lang_Throwable.h"
#include "_java/java_lang_Error.h"
#include "_java/java_lang_String.h"
#include "_java/java_lang_Boolean.h"
#include "_java/java_lang_Number.h"
#include "_java/java_lang_Integer.h"
#include "_java/java_lang_Long.h"
// TODO:
// These things require certain native statics to be implemented
// so they're commented out for the time being.
//#include "_java/java_lang_Double.h"
//#include "_java/java_lang_Float.h"
#include "_java/java_lang_Character.h"
#include "_java/netscape_plugin_Plugin.h"
#include "_java/MozAxPlugin.h"
#include "LegacyPlugin.h"
#include "LiveConnect.h"
void liveconnect_Shutdown()
{
JRIEnv* env = NPN_GetJavaEnv();
if (env) {
unuse_MozAxPlugin(env);
unuse_netscape_plugin_Plugin(env);
unuse_java_lang_Error(env);
// unuse_java_lang_String(env);
unuse_java_lang_Number(env);
unuse_java_lang_Boolean(env);
unuse_java_lang_Integer(env);
unuse_java_lang_Long(env);
// unuse_java_lang_Float(env);
// unuse_java_lang_Double(env);
unuse_java_lang_Character(env);
}
}
jref liveconnect_GetJavaClass()
{
JRIEnv* env = NPN_GetJavaEnv();
if (env) {
// Note: The order of these is important (for some unknown reason)
// and was determined through trial and error. Do not rearrange
// without testing the new order!
use_netscape_plugin_Plugin(env);
jref myClass = (jref) use_MozAxPlugin(env);
use_java_lang_Error(env);
// use_java_lang_String(env);
use_java_lang_Number(env);
use_java_lang_Boolean(env);
use_java_lang_Integer(env);
use_java_lang_Long(env);
// use_java_lang_Float(env);
// use_java_lang_Double(env);
use_java_lang_Character(env);
return myClass;
}
return NULL;
}
// The following will be callable from Javascript through LiveConnect
HRESULT
_GetIDispatchFromJRI(JRIEnv *env, struct MozAxPlugin* self, IDispatch **pdisp)
{
if (pdisp == NULL || env == NULL || self == NULL)
{
return E_INVALIDARG;
}
*pdisp = NULL;
// Note: You get a nasty crash calling self->getPeer(env), this obscure cast fixes
// it. More details in the link:
//
// http://groups.google.com/groups?selm=385D9543.4087F1C6%40ermapper.com.au&output=gplain
NPP npp = (NPP) netscape_plugin_Plugin_getPeer(env,
reinterpret_cast<netscape_plugin_Plugin*> (self));
PluginInstanceData *pData = (PluginInstanceData *) npp->pdata;
if (pData == NULL)
{
return E_FAIL;
}
IUnknownPtr unk;
HRESULT hr = pData->pControlSite->GetControlUnknown(&unk);
if (unk.GetInterfacePtr() == NULL)
{
return E_FAIL;
}
IDispatchPtr disp = unk;
if (disp.GetInterfacePtr() == NULL)
{
return E_FAIL;
}
*pdisp = disp.GetInterfacePtr();
(*pdisp)->AddRef();
return S_OK;
}
HRESULT
_VariantToJRIObject(JRIEnv *env, VARIANT *v, java_lang_Object **o)
{
if (v == NULL || env == NULL || o == NULL)
{
return E_INVALIDARG;
}
*o = NULL;
// TODO - VT_BYREF will cause problems
if (v->vt == VT_EMPTY)
{
return S_OK;
}
else if (v->vt == VT_BOOL)
{
jbool value = (v->boolVal == VARIANT_TRUE) ? JRITrue : JRIFalse;
java_lang_Boolean *j = java_lang_Boolean_new(env,
class_java_lang_Boolean(env), value);
*o = reinterpret_cast<java_lang_Object *>(j);
return S_OK;
}
else if (v->vt == VT_I4)
{
jlong value = v->lVal;
java_lang_Long *j = java_lang_Long_new(env,
class_java_lang_Long(env), value);
*o = reinterpret_cast<java_lang_Object *>(j);
return S_OK;
}
else if (v->vt == VT_I2)
{
jlong value = v->iVal;
java_lang_Long *j = java_lang_Long_new(env,
class_java_lang_Long(env), value);
*o = reinterpret_cast<java_lang_Object *>(j);
return S_OK;
}
/* else if (v->vt == VT_R4)
{
jfloat value = v->fltVal;
java_lang_Float *j = java_lang_Float_new(env,
class_java_lang_Float(env), value);
*o = reinterpret_cast<java_lang_Object *>(j);
return S_OK;
}
else if (v->vt == VT_R8)
{
jdouble value = v->dblVal;
java_lang_Double *j = java_lang_Double_new(env,
class_java_lang_Double(env), value);
*o = reinterpret_cast<java_lang_Object *>(j);
return S_OK;
} */
else if (v->vt == VT_BSTR)
{
USES_CONVERSION;
char * value = OLE2A(v->bstrVal);
java_lang_String *j = JRI_NewStringUTF(env, value, strlen(value));
*o = reinterpret_cast<java_lang_Object *>(j);
return S_OK;
}
/* TODO else if VT_UI1 etc. */
return E_FAIL;
}
HRESULT
_JRIObjectToVariant(JRIEnv *env, java_lang_Object *o, VARIANT *v)
{
VariantInit(v);
if (JRI_IsInstanceOf(env, (jref) o, class_java_lang_String(env)))
{
USES_CONVERSION;
const char *value = JRI_GetStringUTFChars(env, reinterpret_cast<java_lang_String *>(o));
v->vt = VT_BSTR;
v->bstrVal = SysAllocString(A2COLE(value));
}
else if (JRI_IsInstanceOf(env, (jref) o, class_java_lang_Boolean(env)))
{
jbool value = java_lang_Boolean_booleanValue(env, reinterpret_cast<java_lang_Boolean *>(o));
v->vt = VT_BOOL;
v->boolVal = value == JRITrue ? VARIANT_TRUE : VARIANT_FALSE;
}
else if (JRI_IsInstanceOf(env, o, class_java_lang_Integer(env)))
{
jint value = java_lang_Integer_intValue(env, reinterpret_cast<java_lang_Integer *>(o));
v->vt = VT_I4;
v->lVal = value;
}
else if (JRI_IsInstanceOf(env, o, class_java_lang_Long(env)))
{
jlong value = java_lang_Long_longValue(env, reinterpret_cast<java_lang_Long *>(o));
v->vt = VT_I4;
v->lVal = value;
}
/* else if (JRI_IsInstanceOf(env, o, class_java_lang_Double(env)))
{
jdouble value = java_lang_Double_doubleValue(env, reinterpret_cast<java_lang_Double *>(o));
v->vt = VT_R8;
v->dblVal = value;
}
else if (JRI_IsInstanceOf(env, o, class_java_lang_Float(env)))
{
jfloat value = java_lang_Float_floatValue(env, reinterpret_cast<java_lang_Float *>(o));
v->vt = VT_R4;
v->fltVal = value;
} */
else if (JRI_IsInstanceOf(env, o, class_java_lang_Character(env)))
{
jchar value = java_lang_Character_charValue(env, reinterpret_cast<java_lang_Character *>(o));
v->vt = VT_UI1;
v->bVal = value;
}
else if (JRI_IsInstanceOf(env, o, class_java_lang_Number(env)))
{
jlong value = java_lang_Number_longValue(env, reinterpret_cast<java_lang_Number *>(o));
v->vt = VT_I4;
v->lVal = value;
}
else
{
// TODO dump diagnostic error here
return E_FAIL;
}
return S_OK;
}
struct java_lang_Object *
_InvokeFromJRI(JRIEnv *env, struct MozAxPlugin* self, struct java_lang_String *func, int nargs, java_lang_Object *args[])
{
HRESULT hr;
DISPID dispid = 0;
// call the requested function
const char* funcName = JRI_GetStringUTFChars(env, func);
IDispatchPtr disp;
if (FAILED(_GetIDispatchFromJRI(env, self, &disp)))
{
return NULL;
}
_variant_t *vargs = new _variant_t[nargs];
for (int i = 0; i < nargs; i++)
{
if (FAILED(_JRIObjectToVariant(env, args[i], &vargs[i])))
{
delete []vargs;
char error[64];
sprintf(error, "Argument %d could not be converted into a variant", i);
JRI_ThrowNew(env, class_java_lang_Error(env), error);
return NULL;
}
}
USES_CONVERSION;
OLECHAR FAR* szMember = A2OLE(funcName);
hr = disp->GetIDsOfNames(IID_NULL, &szMember, 1, LOCALE_USER_DEFAULT, &dispid);
if (FAILED(hr))
{
char error[128];
memset(error, 0, sizeof(error));
_snprintf(error, sizeof(error) - 1, "invoke failed, member \"%s\" not found, hr=0x%08x", funcName, hr);
JRI_ThrowNew(env, class_java_lang_Error(env), error);
return NULL;
}
DISPPARAMS dispparams = {NULL, NULL, 0, 0};
dispparams.rgvarg = vargs;
dispparams.cArgs = nargs;
_variant_t vResult;
hr = disp->Invoke(
dispid,
IID_NULL,
LOCALE_USER_DEFAULT,
DISPATCH_METHOD,
&dispparams, &vResult, NULL, NULL);
if (FAILED(hr))
{
char error[64];
sprintf(error, "invoke failed, result from object = 0x%08x", hr);
JRI_ThrowNew(env, class_java_lang_Error(env), error);
return NULL;
}
java_lang_Object *oResult = NULL;
_VariantToJRIObject(env, &vResult, &oResult);
return reinterpret_cast<java_lang_Object *>(oResult);
}
/*******************************************************************************
* Native Methods:
* These are the native methods which we are implementing.
******************************************************************************/
/*** 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);
}
/*** 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);
}
/*** 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;
args[1] = c;
return _InvokeFromJRI(env, self, a, sizeof(args) / sizeof(args[0]), args);
}
/*** 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;
args[1] = c;
args[2] = d;
return _InvokeFromJRI(env, self, a, sizeof(args) / sizeof(args[0]), args);
}
/*** 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;
args[1] = c;
args[2] = d;
args[3] = e;
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)
{
// Turn the Java array of objects into a C++ array
jsize length = JRI_GetObjectArrayLength(env, b);
java_lang_Object **args = NULL;
if (length)
{
args = (java_lang_Object **) malloc(length * sizeof(java_lang_Object *));
for (long i = 0; i < length; i++)
{
args[i] = reinterpret_cast<java_lang_Object *>(JRI_GetObjectArrayElement(env, b, i));
}
}
java_lang_Object *o = _InvokeFromJRI(env, self, a, length, args);
free(args);
return o;
}
/*** 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;
_variant_t vResult;
IDispatchPtr disp;
if (FAILED(_GetIDispatchFromJRI(env, self, &disp)))
{
return NULL;
}
// return the requested property to the Java peer
USES_CONVERSION;
OLECHAR FAR* szMember = A2OLE(JRI_GetStringUTFChars(env, a));
hr = disp->GetIDsOfNames(IID_NULL, &szMember, 1, LOCALE_USER_DEFAULT, &dispid);
if (FAILED(hr))
{
char error[128];
memset(error, 0, sizeof(error));
_snprintf(error, sizeof(error) - 1, "getProperty failed, member \"%s\" not found, hr=0x%08x", szMember, hr);
JRI_ThrowNew(env, class_java_lang_Error(env), error);
return NULL;
}
DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0};
hr = disp->Invoke(
dispid,
IID_NULL,
LOCALE_USER_DEFAULT,
DISPATCH_PROPERTYGET,
&dispparamsNoArgs, &vResult, NULL, NULL);
if (FAILED(hr))
{
char error[64];
sprintf(error, "getProperty failed, result from object = 0x%08x", hr);
JRI_ThrowNew(env, class_java_lang_Error(env), error);
return NULL;
}
java_lang_Object *oResult = NULL;
_VariantToJRIObject(env, &vResult, &oResult);
return oResult;
}
/*** 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)
{
HRESULT hr;
DISPID dispid;
VARIANT VarResult;
IDispatchPtr disp;
if (FAILED(_GetIDispatchFromJRI(env, self, &disp)))
{
return;
}
USES_CONVERSION;
OLECHAR FAR* szMember = A2OLE(JRI_GetStringUTFChars(env, a));
hr = disp->GetIDsOfNames(IID_NULL, &szMember, 1, LOCALE_USER_DEFAULT, &dispid);
if (FAILED(hr))
{
char error[128];
memset(error, 0, sizeof(error));
_snprintf(error, sizeof(error) - 1, "setProperty failed, member \"%s\" not found, hr=0x%08x", szMember, hr);
JRI_ThrowNew(env, class_java_lang_Error(env), error);
return;
}
_variant_t *pvars = new _variant_t[1];
if (FAILED(_JRIObjectToVariant(env, b, &pvars[0])))
{
delete []pvars;
char error[64];
sprintf(error, "Property value could not be converted into a variant");
JRI_ThrowNew(env, class_java_lang_Error(env), error);
return;
}
DISPID dispIdPut = DISPID_PROPERTYPUT;
DISPPARAMS functionArgs;
functionArgs.rgdispidNamedArgs = &dispIdPut;
functionArgs.rgvarg = pvars;
functionArgs.cArgs = 1;
functionArgs.cNamedArgs = 1;
hr = disp->Invoke(
dispid,
IID_NULL,
LOCALE_USER_DEFAULT,
DISPATCH_PROPERTYPUT,
&functionArgs, &VarResult, NULL, NULL);
delete []pvars;
if (FAILED(hr))
{
char error[64];
sprintf(error, "setProperty failed, result from object = 0x%08x", hr);
JRI_ThrowNew(env, class_java_lang_Error(env), error);
return;
}
}
/*** 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)
{
native_MozAxPlugin_xsetProperty2(env, self, a, reinterpret_cast<java_lang_Object *>(b));
}
///////////////////////////////////////////////////////////////////////////////
/*** private native printStackTrace0 (Ljava/io/PrintStream;)V ***/
extern "C" JRI_PUBLIC_API(void)
native_java_lang_Throwable_printStackTrace0(JRIEnv* env, struct java_lang_Throwable* self, struct java_io_PrintStream *a)
{
}
/*** public native fillInStackTrace ()Ljava/lang/Throwable; ***/
extern "C" JRI_PUBLIC_API(struct java_lang_Throwable *)
native_java_lang_Throwable_fillInStackTrace(JRIEnv* env, struct java_lang_Throwable* self)
{
return self;
}

Просмотреть файл

@ -1,45 +0,0 @@
/* -*- 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
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Adam Lock <adamlock@netscape.com>
* Paul Oswald <paul.oswald@isinet.com>
*
* 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 ***** */
#ifndef LIVECONNECT_H
#define LIVECONNECT_H
extern void liveconnect_Shutdown();
extern jref liveconnect_GetJavaClass();
#endif

Просмотреть файл

@ -53,7 +53,6 @@ GRE_MODULE = 1
REQUIRES = \
xpcom \
java \
plugin \
string \
dom \
@ -86,35 +85,6 @@ NO_INSTALL = 1
# Path to the Mozilla ActiveX common dir (some files are copied from there)
AXCOMMONSRC=$(srcdir)/../common
############
# LiveConnect settings
# MOZ_ACTIVEX_PLUGIN_LIVECONNECT = 1
# Settings that specify where the PluginSDK, Java compiler (javac or oldjavac),
# Java header file generator (javah) and classes live.
#
# You need the Netscape PluginSDK:
#
# http://home.netscape.com/comprod/development_partners/plugin_api/index.html
#
# You also need a JDK with the old java compiler. Anything from 1.3
# downwards should do. See here for various JDK releases:
#
# http://java.sun.com/products/archive/index.html
#
# You should use the javah found in the plugin SDK because this generates
# the JRI stubs.
ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
PLUGINSDK = c:/m/PluginSDK
SDK_JAVADIR = c:/jdk1.02
SDK_JAVAH = $(PLUGINSDK)/bin/win32/javah
SDK_JAVAC = $(SDK_JAVADIR)/bin/javac
SDK_CLASSES = $(PLUGINSDK)/classes/java_30.zip
SDK_CLASSPATH = "$(subst /,\,$(SDK_CLASSES));."
endif
############
# XPConnect settings
@ -158,7 +128,7 @@ _AXCOMMON_CPPSRCS = \
ItemContainer.cpp \
PropertyBag.cpp \
$(NULL)
CPPSRCS += LiveConnect.cpp $(_AXCOMMON_CPPSRCS)
CPPSRCS += $(_AXCOMMON_CPPSRCS)
CSRCS += javastubs.c
endif
@ -206,16 +176,6 @@ LIBS = \
$(NSPR_LIBS) \
$(NULL)
# LiveConnect links to XPCOM glue
ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
EXTRA_DSO_LDOPTS += \
$(DIST)/lib/$(LIB_PREFIX)string_s.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)
LIBS += \
$(DIST)/lib/$(LIB_PREFIX)string_s.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX)
endif
# XPConnect links to XPCOM and the shared activex lib
ifdef XPC_IDISPATCH_SUPPORT
EXTRA_DSO_LDOPTS += \
@ -225,8 +185,6 @@ EXTRA_DSO_LDOPTS += \
$(NULL)
endif
SRCS_IN_OBJDIR = 1
ENABLE_CXX_EXCEPTIONS = 1
@ -304,118 +262,3 @@ $(DEFFILE):
@echo "NP_GetEntryPoints @1" >> $@
@echo "NP_Initialize @2" >> $@
@echo "NP_Shutdown @3" >> $@
ifdef MOZ_ACTIVEX_PLUGIN_LIVECONNECT
./MozAxPlugin.class: ./MozAxPlugin.java
$(SDK_JAVAC) -classpath $(SDK_CLASSPATH) MozAxPlugin.java
./_java/MozAxPlugin.h \
./_java/MozAxPlugin.c: ./MozAxPlugin.class
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java MozAxPlugin
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java MozAxPlugin
./_java/java_lang_Object.h \
./_java/java_lang_Object.c : $(SDK_CLASSES)
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java java.lang.Object
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java java.lang.Object
./_java/java_lang_Error.h \
./_java/java_lang_Error.c : $(SDK_CLASSES)
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java java.lang.Error
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java java.lang.Error
./_java/java_lang_Throwable.h \
./_java/java_lang_Throwable.c : $(SDK_CLASSES)
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java java.lang.Throwable
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java java.lang.Throwable
./_java/java_lang_String.h \
./_java/java_lang_String.c : $(SDK_CLASSES)
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java java.lang.String
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java java.lang.String
./_java/java_lang_Boolean.h \
./_java/java_lang_Boolean.c : $(SDK_CLASSES)
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java java.lang.Boolean
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java java.lang.Boolean
./_java/java_lang_Number.h \
./_java/java_lang_Number.c : $(SDK_CLASSES)
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java java.lang.Number
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java java.lang.Number
./_java/java_lang_Integer.h \
./_java/java_lang_Integer.c : $(SDK_CLASSES)
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java java.lang.Integer
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java java.lang.Integer
./_java/java_lang_Short.h \
./_java/java_lang_Short.c : $(SDK_CLASSES)
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java java.lang.Short
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java java.lang.Short
./_java/java_lang_Long.h \
./_java/java_lang_Long.c : $(SDK_CLASSES)
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java java.lang.Long
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java java.lang.Long
./_java/java_lang_Double.h \
./_java/java_lang_Double.c : $(SDK_CLASSES)
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java java.lang.Double
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java java.lang.Double
./_java/java_lang_Float.h \
./_java/java_lang_Float.c : $(SDK_CLASSES)
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java java.lang.Float
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java java.lang.Float
./_java/java_lang_Byte.h \
./_java/java_lang_Byte.c : $(SDK_CLASSES)
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java java.lang.Byte
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java java.lang.Byte
./_java/java_lang_Character.h \
./_java/java_lang_Character.c : $(SDK_CLASSES)
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java java.lang.Character
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java java.lang.Character
./_java/netscape_plugin_Plugin.h \
./_java/netscape_plugin_Plugin.c : $(SDK_CLASSES)
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -d _java netscape.plugin.Plugin
$(SDK_JAVAH) -classpath $(SDK_CLASSPATH) -jri -stubs -d _java netscape.plugin.Plugin
javastubs.c : \
./MozAxPlugin.class \
./_java/MozAxPlugin.c \
./_java/netscape_plugin_Plugin.c \
./_java/java_lang_Object.c \
./_java/java_lang_Throwable.c \
./_java/java_lang_Error.c \
./_java/java_lang_String.c \
./_java/java_lang_Boolean.c \
./_java/java_lang_Number.c \
./_java/java_lang_Integer.c \
./_java/java_lang_Long.c \
./_java/java_lang_Double.c \
./_java/java_lang_Float.c \
./_java/java_lang_Character.c \
$(NULL)
LiveConnect.cpp: StdAfx.h \
./MozAxPlugin.class \
./_java/MozAxPlugin.h \
./_java/netscape_plugin_Plugin.h \
./_java/java_lang_Object.h \
./_java/java_lang_Throwable.h \
./_java/java_lang_Error.h \
./_java/java_lang_String.h \
./_java/java_lang_Boolean.h \
./_java/java_lang_Number.h \
./_java/java_lang_Integer.h \
./_java/java_lang_Long.h \
./_java/java_lang_Double.h \
./_java/java_lang_Float.h \
./_java/java_lang_Character.h \
$(NULL)
endif

Просмотреть файл

@ -1,17 +0,0 @@
/* NOTE: This is a C file to avoid some nasty typecasting issues that C++ has
with the JDK generated code.
*/
#define IMPLEMENT_MozAxPlugin
#include "_java/MozAxPlugin.c"
#include "_java/netscape_plugin_Plugin.c"
#include "_java/java_lang_Throwable.c"
#include "_java/java_lang_Error.c"
#include "_java/java_lang_String.c"
#include "_java/java_lang_Boolean.c"
#include "_java/java_lang_Number.c"
#include "_java/java_lang_Integer.c"
#include "_java/java_lang_Long.c"
//#include "_java/java_lang_Double.c"
//#include "_java/java_lang_Float.c"
#include "_java/java_lang_Character.c"

Просмотреть файл

@ -76,9 +76,6 @@
#include "nsIPluginInstancePeer2.h"
#include "plstr.h"
#include "nsILinkHandler.h"
#ifdef OJI
#include "nsIJVMPluginTagInfo.h"
#endif
#include "nsIEventListener.h"
#include "nsIScrollableView.h"
#include "nsIScrollPositionListener.h"
@ -236,9 +233,6 @@ public:
class nsPluginInstanceOwner : public nsIPluginInstanceOwner,
public nsIPluginTagInfo2,
#ifdef OJI
public nsIJVMPluginTagInfo,
#endif
public nsIEventListener,
public nsITimerCallback,
public nsIDOMMouseListener,
@ -319,21 +313,6 @@ public:
NS_IMETHOD GetDOMElement(nsIDOMElement* *result);
#ifdef OJI
//nsIJVMPluginTagInfo interface
NS_IMETHOD GetCode(const char* *result);
NS_IMETHOD GetCodeBase(const char* *result);
NS_IMETHOD GetArchive(const char* *result);
NS_IMETHOD GetName(const char* *result);
NS_IMETHOD GetMayScript(PRBool *result);
#endif /* OJI */
// nsIDOMMouseListener interfaces
NS_IMETHOD MouseDown(nsIDOMEvent* aMouseEvent);
NS_IMETHOD MouseUp(nsIDOMEvent* aMouseEvent);
@ -2311,9 +2290,6 @@ NS_INTERFACE_MAP_BEGIN(nsPluginInstanceOwner)
NS_INTERFACE_MAP_ENTRY(nsIPluginInstanceOwner)
NS_INTERFACE_MAP_ENTRY(nsIPluginTagInfo)
NS_INTERFACE_MAP_ENTRY(nsIPluginTagInfo2)
#ifdef OJI
NS_INTERFACE_MAP_ENTRY(nsIJVMPluginTagInfo)
#endif
NS_INTERFACE_MAP_ENTRY(nsIEventListener)
NS_INTERFACE_MAP_ENTRY(nsITimerCallback)
NS_INTERFACE_MAP_ENTRY(nsIDOMMouseListener)
@ -2939,69 +2915,6 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetUniqueID(PRUint32 *result)
return NS_OK;
}
#ifdef OJI
NS_IMETHODIMP nsPluginInstanceOwner::GetCode(const char* *result)
{
nsresult rv;
nsPluginTagType tagType;
NS_ENSURE_SUCCESS(rv = GetTagType(&tagType), rv);
rv = NS_ERROR_FAILURE;
if (nsPluginTagType_Object != tagType)
rv = GetAttribute("CODE", result);
if (NS_FAILED(rv))
rv = GetParameter("CODE", result);
return rv;
}
NS_IMETHODIMP nsPluginInstanceOwner::GetCodeBase(const char* *result)
{
nsresult rv;
if (NS_FAILED(rv = GetAttribute("CODEBASE", result)))
rv = GetParameter("CODEBASE", result);
return rv;
}
NS_IMETHODIMP nsPluginInstanceOwner::GetArchive(const char* *result)
{
nsresult rv;
if (NS_FAILED(rv = GetAttribute("ARCHIVE", result)))
rv = GetParameter("ARCHIVE", result);
return rv;
}
NS_IMETHODIMP nsPluginInstanceOwner::GetName(const char* *result)
{
nsresult rv;
nsPluginTagType tagType;
NS_ENSURE_SUCCESS(rv = GetTagType(&tagType), rv);
rv = NS_ERROR_FAILURE;
if (nsPluginTagType_Object != tagType)
rv = GetAttribute("NAME", result);
if (NS_FAILED(rv))
rv = GetParameter("NAME", result);
return rv;
}
NS_IMETHODIMP nsPluginInstanceOwner::GetMayScript(PRBool *result)
{
NS_ENSURE_ARG_POINTER(result);
nsPluginTagType tagType;
NS_ENSURE_SUCCESS(GetTagType(&tagType), NS_ERROR_FAILURE);
const char* unused;
if (nsPluginTagType_Object == tagType)
*result = NS_SUCCEEDED(GetParameter("MAYSCRIPT", &unused));
else
*result = NS_SUCCEEDED(GetAttribute("MAYSCRIPT", &unused));
return NS_OK;
}
#endif /* OJI */
// Cache the attributes and/or parameters of our tag into a single set
// of arrays to be compatible with 4.x. The attributes go first,
// followed by a PARAM/null and then any PARAM tags. Also, hold the

Просмотреть файл

@ -1,54 +0,0 @@
#
# ***** 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
# 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 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 *****
DEPTH = ../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = oji
DIRS = public
ifdef MOZ_OJI
DIRS += src
endif
include $(topsrcdir)/config/rules.mk

Просмотреть файл

@ -1,71 +0,0 @@
#
# ***** 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
# 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 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 *****
DEPTH = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = oji
GRE_MODULE = 1
XPIDLSRCS = \
nsIJVMManager.idl \
nsIJVMPluginInstance.idl \
nsIJVMConfigManager.idl \
$(NULL)
EXPORTS = \
nsjvm.h \
nsIJRIPlugin.h \
nsIJVMConsole.h \
nsIJVMPlugin.h \
nsIJVMPluginTagInfo.h \
nsIJVMPrefsWindow.h \
nsIJVMWindow.h \
nsISymantecDebugManager.h \
nsISymantecDebugger.h \
nsISecureEnv.h \
ProxyJNI.h \
nsIJVMThreadManager.h \
nsILiveConnectManager.h \
$(NULL)
include $(topsrcdir)/config/rules.mk

Просмотреть файл

@ -1,79 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
/*
ProxyJNI.h
*/
#ifndef PROXY_JNI_H
#define PROXY_JNI_H
#ifndef JNI_H
#include <jni.h>
#endif
class nsIJVMPlugin;
class nsISecureEnv;
class nsISecurityContext;
/**
* Creates a proxy JNIEnv using the given JVM plugin, and optional native JNIEnv*.
*/
JNIEnv* CreateProxyJNI(nsIJVMPlugin* jvmPlugin, nsISecureEnv* secureEnv = NULL);
/**
* Deletes the proxy JNIEnv. Releases the connection
* to the underlying JVM.
*/
void DeleteProxyJNI(JNIEnv* proxyEnv);
/**
* Returns the secure env associated with the given proxy env.
*/
nsISecureEnv* GetSecureEnv(JNIEnv* proxyEnv);
/**
* Sets SecurityCotext for proxy env
*/
PR_EXTERN(void) SetSecurityContext(JNIEnv* proxyEnv, nsISecurityContext *context);
/**
* Gets current SecurityContext for proxy env
*/
PR_EXTERN(nsresult) GetSecurityContext(JNIEnv* proxyEnv, nsISecurityContext **context);
#endif /* PROXY_JNI_H */

Просмотреть файл

@ -1,85 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
////////////////////////////////////////////////////////////////////////////////
// NETSCAPE JAVA VM PLUGIN EXTENSIONS
//
// This interface allows a Java virtual machine to be plugged into
// Communicator to implement the APPLET tag and host applets.
//
// Note that this is the C++ interface that the plugin sees. The browser
// uses a specific implementation of this, nsJVMPlugin, found in jvmmgr.h.
////////////////////////////////////////////////////////////////////////////////
#ifndef nsIJRIPlugin_h___
#define nsIJRIPlugin_h___
#include "nsISupports.h"
#include "jri.h"
////////////////////////////////////////////////////////////////////////////////
// JRI Plugin Class Interface
// This interface is provided for backward compatibility for the Netscape JVM.
class nsIJRIPlugin : public nsISupports {
public:
// QueryInterface on nsIJVMPlugin to get this.
// Find or create a JRIEnv for the current thread.
// Returns NULL if an error occurs.
NS_IMETHOD_(nsrefcnt)
GetJRIEnv(JRIEnv* *result) = 0;
// This method must be called when the caller is done using the JRIEnv.
// This decrements a refcount associated with it may free it.
NS_IMETHOD_(nsrefcnt)
ReleaseJRIEnv(JRIEnv* env) = 0;
};
#define NS_IJRIPLUGIN_IID \
{ /* bfe2d7d0-0164-11d2-815b-006008119d7a */ \
0xbfe2d7d0, \
0x0164, \
0x11d2, \
{0x81, 0x5b, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \
}
////////////////////////////////////////////////////////////////////////////////
#endif /* nsIJRIPlugin_h___ */

Просмотреть файл

@ -1,80 +0,0 @@
/* -*- 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
*
* 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 Sun Microsystems.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Pete Zha <pete.zha@sun.com> (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 ***** */
#include "nsIArray.idl"
#include "nsIFile.idl"
%{C++
#define NS_JVMCONFIGMANAGER_CID \
{ /* 4a68cee9-6f07-4950-b441-a1ce6a082e2f */ \
0x4a68cee9, \
0x6f07, \
0x4950, \
{0xb4, 0x41, 0xa1, 0xce, 0x6a, 0x08, 0x2e, 0x2f} \
}
%}
/**
* This interface contains information for the Java installation.
*/
[scriptable, uuid(3e333e20-b190-42d8-b993-d5fa435e46c4)]
interface nsIJVMConfig : nsISupports {
readonly attribute AString version;
readonly attribute AString type;
readonly attribute AString OS;
readonly attribute AString arch;
readonly attribute nsIFile path;
readonly attribute nsIFile mozillaPluginPath;
readonly attribute AString description;
};
/**
* This interface is a manager that can get information about Java
* installations.
*/
[scriptable, uuid(ca29fff1-a677-493c-9d80-3dc60432212b)]
interface nsIJVMConfigManager : nsISupports {
/**
* This function returns a list of existing Java installations.
*/
nsIArray getJVMConfigList();
/**
* This function tells the browser to use a specific Java installation.
*/
void setCurrentJVMConfig(in nsIJVMConfig jvmConfig);
};

Просмотреть файл

@ -1,90 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
////////////////////////////////////////////////////////////////////////////////
// NETSCAPE JAVA VM PLUGIN EXTENSIONS
//
// This interface allows a Java virtual machine to be plugged into
// Communicator to implement the APPLET tag and host applets.
//
// Note that this is the C++ interface that the plugin sees. The browser
// uses a specific implementation of this, nsJVMPlugin, found in jvmmgr.h.
////////////////////////////////////////////////////////////////////////////////
#ifndef nsIJVMConsole_h___
#define nsIJVMConsole_h___
#include "nsIJVMWindow.h"
#define NS_IJVMCONSOLE_IID \
{ /* fefaf860-6220-11d2-8164-006008119d7a */ \
0xfefaf860, \
0x6220, \
0x11d2, \
{0x81, 0x64, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \
}
////////////////////////////////////////////////////////////////////////////////
// JVM Console Interface
// This interface defines the API the browser needs to show and hide the JVM's
// Java console, and to send text to it.
class nsIJVMConsole : public nsIJVMWindow {
public:
NS_IMETHOD
Show(void) = 0;
NS_IMETHOD
Hide(void) = 0;
NS_IMETHOD
IsVisible(PRBool *result) = 0;
// Prints a message to the Java console. The encodingName specifies the
// encoding of the message, and if NULL, specifies the default platform
// encoding.
NS_IMETHOD
Print(const char* msg, const char* encodingName = NULL) = 0;
NS_DECLARE_STATIC_IID_ACCESSOR(NS_IJVMCONSOLE_IID)
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsIJVMConsole, NS_IJVMCONSOLE_IID)
////////////////////////////////////////////////////////////////////////////////
#endif /* nsIJVMConsole_h___ */

Просмотреть файл

@ -1,122 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
#include "nsISupports.idl"
%{C++
#ifndef JNI_H
#include "jni.h"
#endif
/*
Java VM Plugin Manager
This interface defines additional entry points that are available
to JVM plugins for browsers that support JVM plugins.
*/
/*
#define NS_IJVMMANAGER_IID \
{ / * a1e5ed50-aa4a-11d1-85b2-00805f0e4dfe * / \
0xa1e5ed50, \
0xaa4a, \
0x11d1, \
{0x85, 0xb2, 0x00, 0x80, 0x5f, 0x0e, 0x4d, 0xfe} \
}
*/
#define NS_JVMMANAGER_CID \
{ /* 38e7ef10-58df-11d2-8164-006008119d7a */ \
0x38e7ef10, \
0x58df, \
0x11d2, \
{0x81, 0x64, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \
}
%}
interface nsIJVMPlugin;
interface nsISecureEnv;
interface nsIPrincipal;
native JNIEnv(JNIEnv *);
[scriptable, uuid(a1e5ed50-aa4a-11d1-85b2-00805f0e4dfe)]
interface nsIJVMManager : nsISupports {
%{C++
NS_DEFINE_STATIC_CID_ACCESSOR(NS_JVMMANAGER_CID)
%}
/**
* Creates a proxy JNI with an optional secure environment (which can be NULL).
* There is a one-to-one correspondence between proxy JNIs and threads, so
* calling this method multiple times from the same thread will return
* the same proxy JNI.
*/
[noscript] void createProxyJNI(in nsISecureEnv secureEnv, out JNIEnv outProxyEnv);
/**
* Returns the proxy JNI associated with the current thread, or NULL if no
* such association exists.
*/
[noscript] void getProxyJNI(out JNIEnv outProxyEnv);
/**
* Called from Java Console menu item.
*/
void showJavaConsole();
/**
* isAllPermissionGranted [Deprecated Sep-10-2000]
*/
boolean isAllPermissionGranted(in string lastFingerprint,in string lastCommonName,
in string rootFingerprint,in string rootCommonName);
/**
* isAppletTrusted
*/
nsIPrincipal isAppletTrusted(in string aRSABuf, in PRUint32 aRSABufLen,
in string aPlaintext, in PRUint32 aPlaintextLen,
out boolean isTrusted);
/**
* The JavaEnabled variable to see if Java is Enabled or not
*/
readonly attribute boolean JavaEnabled;
};

Просмотреть файл

@ -1,130 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
////////////////////////////////////////////////////////////////////////////////
// NETSCAPE JAVA VM PLUGIN EXTENSIONS
//
// This interface allows a Java virtual machine to be plugged into
// Communicator to implement the APPLET tag and host applets.
//
// Note that this is the C++ interface that the plugin sees. The browser
// uses a specific implementation of this, nsJVMPlugin, found in jvmmgr.h.
////////////////////////////////////////////////////////////////////////////////
#ifndef nsIJVMPlugin_h___
#define nsIJVMPlugin_h___
#include "nsISupports.h"
#include "nsIPrincipal.h"
#include "jni.h"
class nsISecureEnv;
/**
* This MIME type is what should be used to signify a Java VM plugin.
*/
#define NS_JVM_MIME_TYPE "application/x-java-vm" // XXX "application/java" ?
#define NS_IJVMPLUGIN_IID \
{ /* da6f3bc0-a1bc-11d1-85b1-00805f0e4dfe */ \
0xda6f3bc0, \
0xa1bc, \
0x11d1, \
{0x85, 0xb1, 0x00, 0x80, 0x5f, 0x0e, 0x4d, 0xfe} \
}
////////////////////////////////////////////////////////////////////////////////
// Java VM Plugin Interface
// This interface defines additional entry points that a plugin developer needs
// to implement in order to implement a Java virtual machine plugin.
class nsIJVMPlugin : public nsISupports {
public:
// Causes the JVM to append a new directory to its classpath.
// If the JVM doesn't support this operation, an error is returned.
NS_IMETHOD
AddToClassPath(const char* dirPath) = 0;
// Causes the JVM to remove a directory from its classpath.
// If the JVM doesn't support this operation, an error is returned.
NS_IMETHOD
RemoveFromClassPath(const char* dirPath) = 0;
// Returns the current classpath in use by the JVM.
NS_IMETHOD
GetClassPath(const char* *result) = 0;
NS_IMETHOD
#if PR_BYTES_PER_LONG == 8
GetJavaWrapper(JNIEnv* jenv, jlong obj, jobject *jobj) = 0;
#else
GetJavaWrapper(JNIEnv* jenv, jint obj, jobject *jobj) = 0;
#endif
/**
* This creates a new secure communication channel with Java. The second parameter,
* nativeEnv, if non-NULL, will be the actual thread for Java communication.
* Otherwise, a new thread should be created.
* @param proxyEnv the env to be used by all clients on the browser side
* @return outSecureEnv the secure environment used by the proxyEnv
*/
NS_IMETHOD
CreateSecureEnv(JNIEnv* proxyEnv, nsISecureEnv* *outSecureEnv) = 0;
/**
* Gives time to the JVM from the main event loop of the browser. This is
* necessary when there aren't any plugin instances around, but Java threads exist.
*/
NS_IMETHOD
SpendTime(PRUint32 timeMillis) = 0;
NS_IMETHOD
#if PR_BYTES_PER_LONG == 8 || PR_BYTES_PER_WORD == 8
UnwrapJavaWrapper(JNIEnv* jenv, jobject jobj, jlong* obj) = 0;
#else
UnwrapJavaWrapper(JNIEnv* jenv, jobject jobj, jint* obj) = 0;
#endif
NS_DECLARE_STATIC_IID_ACCESSOR(NS_IJVMPLUGIN_IID)
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsIJVMPlugin, NS_IJVMPLUGIN_IID)
////////////////////////////////////////////////////////////////////////////////
#endif /* nsIJVMPlugin_h___ */

Просмотреть файл

@ -1,64 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
////////////////////////////////////////////////////////////////////////////////
// NETSCAPE JAVA VM PLUGIN EXTENSIONS
//
// This interface allows a Java virtual machine to be plugged into
// Communicator to implement the APPLET tag and host applets.
//
// Note that this is the C++ interface that the plugin sees. The browser
// uses a specific implementation of this, nsJVMPlugin, found in jvmmgr.h.
////////////////////////////////////////////////////////////////////////////////
#include "nsISupports.idl"
%{C++
#include "jni.h"
%}
native jobject(jobject);
native nChar(const char **);
[scriptable, uuid(a0c057d0-01c1-11d2-815b-006008119d7a)]
interface nsIJVMPluginInstance : nsISupports {
// This method is called when LiveConnect wants to find the Java object
// associated with this plugin instance, e.g. the Applet or JavaBean object.
[noscript] void GetJavaObject(out jobject result);
[noscript] void GetText(in nChar result);
};

Просмотреть файл

@ -1,91 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
////////////////////////////////////////////////////////////////////////////////
// NETSCAPE JAVA VM PLUGIN EXTENSIONS
//
// This interface allows a Java virtual machine to be plugged into
// Communicator to implement the APPLET tag and host applets.
//
// Note that this is the C++ interface that the plugin sees. The browser
// uses a specific implementation of this, nsJVMPlugin, found in jvmmgr.h.
////////////////////////////////////////////////////////////////////////////////
#ifndef nsIJVMPluginTagInfo_h___
#define nsIJVMPluginTagInfo_h___
#include "nsISupports.h"
////////////////////////////////////////////////////////////////////////////////
// Java VM Plugin Instance Peer Interface
// This interface provides additional hooks into the plugin manager that allow
// a plugin to implement the plugin manager's Java virtual machine.
#define NS_IJVMPLUGINTAGINFO_IID \
{ /* 27b42df0-a1bd-11d1-85b1-00805f0e4dfe */ \
0x27b42df0, \
0xa1bd, \
0x11d1, \
{0x85, 0xb1, 0x00, 0x80, 0x5f, 0x0e, 0x4d, 0xfe} \
}
class nsIJVMPluginTagInfo : public nsISupports {
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_IJVMPLUGINTAGINFO_IID)
NS_IMETHOD
GetCode(const char* *result) = 0;
NS_IMETHOD
GetCodeBase(const char* *result) = 0;
NS_IMETHOD
GetArchive(const char* *result) = 0;
NS_IMETHOD
GetName(const char* *result) = 0;
NS_IMETHOD
GetMayScript(PRBool *result) = 0;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsIJVMPluginTagInfo, NS_IJVMPLUGINTAGINFO_IID)
////////////////////////////////////////////////////////////////////////////////
#endif /* nsIJVMPluginTagInfo_h___ */

Просмотреть файл

@ -1,91 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
////////////////////////////////////////////////////////////////////////////////
// NETSCAPE JAVA VM PLUGIN EXTENSIONS
//
// This interface allows a Java virtual machine to be plugged into
// Communicator to implement the APPLET tag and host applets.
//
// Note that this is the C++ interface that the plugin sees. The browser
// uses a specific implementation of this, nsJVMPlugin, found in jvmmgr.h.
////////////////////////////////////////////////////////////////////////////////
#ifndef nsIJVMPrefsWindow_h___
#define nsIJVMPrefsWindow_h___
#include "nsIJVMWindow.h"
////////////////////////////////////////////////////////////////////////////////
// JVM Preferences Window Interface
// This interface defines the API the browser needs to show and hide the JVM's
// preference Window. The JVM's preference Window is used by the plugin to display
// Java VM-specific preferences.
class nsIJVMPrefsWindow : public nsIJVMWindow {
public:
NS_IMETHOD
Show(void) = 0;
NS_IMETHOD
Hide(void) = 0;
NS_IMETHOD
IsVisible(PRBool *result) = 0;
};
#define NS_IJVMPREFSWINDOW_IID \
{ /* 20330d70-4ec9-11d2-8164-006008119d7a */ \
0x20330d70, \
0x4ec9, \
0x11d2, \
{0x81, 0x64, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \
}
#define NS_JVMPREFSWINDOW_CID \
{ /* e9c1ef10-6304-11d2-8164-006008119d7a */ \
0xe9c1ef10, \
0x6304, \
0x11d2, \
{0x81, 0x64, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \
}
////////////////////////////////////////////////////////////////////////////////
#endif /* nsIJVMPrefsWindow_h___ */

Просмотреть файл

@ -1,136 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* vim:set ts=4 sw=4 sts=4 ci et: */
/* ***** 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
* 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 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 nsIJVMThreadManager_h___
#define nsIJVMThreadManager_h___
#include "nsISupports.h"
#include "nsIRunnable.h"
#include "nspr.h"
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// Thread Manager
// This interface provides thread primitives.
#define NS_IJVMTHREADMANAGER_IID \
{ /* 97bb54c0-6846-11d2-801f-00805f71101c */ \
0x97bb54c0, \
0x6846, \
0x11d2, \
{0x80, 0x1f, 0x00, 0x80, 0x5f, 0x71, 0x10, 0x1c} \
}
class nsIRunnable;
class nsIJVMThreadManager : public nsISupports {
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_IJVMTHREADMANAGER_IID)
/**
* Returns a unique identifier for the "current" system thread.
*/
NS_IMETHOD
GetCurrentThread(PRThread* *threadID) = 0;
/**
* Pauses the current thread for the specified number of milliseconds.
* If milli is zero, then merely yields the CPU if another thread of
* greater or equal priority.
*/
NS_IMETHOD
Sleep(PRUint32 milli = 0) = 0;
/**
* Creates a unique monitor for the specified address, and makes the
* current system thread the owner of the monitor.
*/
NS_IMETHOD
EnterMonitor(void* address) = 0;
/**
* Exits the monitor associated with the address.
*/
NS_IMETHOD
ExitMonitor(void* address) = 0;
/**
* Waits on the monitor associated with the address (must be entered already).
* If milli is 0, wait indefinitely.
*/
NS_IMETHOD
Wait(void* address, PRUint32 milli = 0) = 0;
/**
* Notifies a single thread waiting on the monitor associated with the address (must be entered already).
*/
NS_IMETHOD
Notify(void* address) = 0;
/**
* Notifies all threads waiting on the monitor associated with the address (must be entered already).
*/
NS_IMETHOD
NotifyAll(void* address) = 0;
/**
* Creates a new thread, calling the specified runnable's Run method (a la Java).
*/
NS_IMETHOD
CreateThread(PRThread **thread, nsIRunnable* runnable) = 0;
/**
* Posts an event to specified thread, calling the runnable from that thread.
* @param threadID thread to call runnable from
* @param runnable object to invoke from thread
* @param async if true, won't block current thread waiting for result
*/
NS_IMETHOD
PostEvent(PRThread* thread, nsIRunnable* runnable, PRBool async) = 0;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsIJVMThreadManager, NS_IJVMTHREADMANAGER_IID)
#ifndef NS_OJI_IMPL
// For backwards compatibility:
typedef nsIJVMThreadManager nsIThreadManager;
#define NS_ITHREADMANAGER_IID NS_IJVMTHREADMANAGER_IID
#endif
#endif /* nsIJVMThreadManager_h___ */

Просмотреть файл

@ -1,86 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
////////////////////////////////////////////////////////////////////////////////
// NETSCAPE JAVA VM PLUGIN EXTENSIONS
//
// This interface allows a Java virtual machine to be plugged into
// Communicator to implement the APPLET tag and host applets.
//
// Note that this is the C++ interface that the plugin sees. The browser
// uses a specific implementation of this, nsJVMPlugin, found in jvmmgr.h.
////////////////////////////////////////////////////////////////////////////////
#ifndef nsIJVMWindow_h___
#define nsIJVMWindow_h___
#include "nsISupports.h"
////////////////////////////////////////////////////////////////////////////////
// JVM Preferences Panel Interface
// This interface defines the API the browser needs to show and hide the JVM's
// preference panel. The JVM's preference panel is used by the plugin to display
// Java VM-specific preferences.
class nsIJVMWindow : public nsISupports {
public:
// QueryInterface on nsIJVMPlugin to get this.
NS_IMETHOD
Show(void) = 0;
NS_IMETHOD
Hide(void) = 0;
NS_IMETHOD
IsVisible(PRBool *result) = 0;
};
#define NS_IJVMWINDOW_IID \
{ /* d981b540-6220-11d2-8164-006008119d7a */ \
0xd981b540, \
0x6220, \
0x11d2, \
{0x81, 0x64, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \
}
////////////////////////////////////////////////////////////////////////////////
#endif /* nsIJVMWindow_h___ */

Просмотреть файл

@ -1,105 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
/**
* nsILiveConnectManager provides the necessary interfaces for initializing LiveConnect
* and provides services to the DOM.
*/
#ifndef nsILiveConnectManager_h___
#define nsILiveConnectManager_h___
#ifndef nsISupports_h___
#include "nsISupports.h"
#endif
#ifndef JNI_H
#include "jni.h"
#endif
// {d20c8081-cbcb-11d2-a5a0-e884aed9c9fc}
#define NS_ILIVECONNECTMANAGER_IID \
{ 0xd20c8081, 0xcbcb, 0x11d2, { 0xa5, 0xa0, 0xe8, 0x84, 0xae, 0xd9, 0xc9, 0xfc } }
// {d20c8083-cbcb-11d2-a5a0-e884aed9c9fc}
#define NS_LIVECONNECTMANAGER_CID \
{ 0xd20c8083, 0xcbcb, 0x11d2, { 0xa5, 0xa0, 0xe8, 0x84, 0xae, 0xd9, 0xc9, 0xfc } }
struct JSRuntime;
struct JSContext;
struct JSObject;
class nsILiveConnectManager : public nsISupports {
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_ILIVECONNECTMANAGER_IID)
/**
* Attempts to start LiveConnect using the specified JSRuntime.
*/
NS_IMETHOD
StartupLiveConnect(JSRuntime* runtime, PRBool& outStarted) = 0;
/**
* Attempts to stop LiveConnect using the specified JSRuntime.
*/
NS_IMETHOD
ShutdownLiveConnect(JSRuntime* runtime, PRBool& outShutdown) = 0;
/**
* Indicates whether LiveConnect can be used.
*/
NS_IMETHOD
IsLiveConnectEnabled(PRBool& outEnabled) = 0;
/**
* Initializes a JSContext with the proper LiveConnect support classes.
*/
NS_IMETHOD
InitLiveConnectClasses(JSContext* context, JSObject* globalObject) = 0;
/**
* Creates a JavaScript wrapper for a Java object.
*/
NS_IMETHOD
WrapJavaObject(JSContext* context, jobject javaObject, JSObject* *outJSObject) = 0;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsILiveConnectManager,
NS_ILIVECONNECTMANAGER_IID)
////////////////////////////////////////////////////////////////////////////////
#endif /* nsILiveConnectManager_h___ */

Просмотреть файл

@ -1,365 +0,0 @@
/* -*- 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
*
* 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
* 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 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 nsISecureEnv_h___
#define nsISecureEnv_h___
#include "nsISupports.h"
#include "nsIFactory.h"
#include "nsISecurityContext.h"
#include "jni.h"
enum jni_type
{
jobject_type = 0,
jboolean_type,
jbyte_type,
jchar_type,
jshort_type,
jint_type,
jlong_type,
jfloat_type,
jdouble_type,
jvoid_type
};
#define NS_ISECUREENV_IID \
{ /* ca9148d0-598a-11d2-a1d4-00805f8f694d */ \
0xca9148d0, \
0x598a, \
0x11d2, \
{0xa1, 0xd4, 0x00, 0x80, 0x5f, 0x8f, 0x69, 0x4d } \
}
class nsISecureEnv : public nsISupports {
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISECUREENV_IID)
/**
* Create new Java object in LiveConnect.
*
* @param clazz -- Java Class object.
* @param methodID -- Method id
* @param args -- arguments for invoking the constructor.
* @param result -- return new Java object.
* @param ctx -- security context
*/
NS_IMETHOD NewObject(/*[in]*/ jclass clazz,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jobject* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
/**
* Invoke method on Java object in LiveConnect.
*
* @param type -- Return type
* @param obj -- Java object.
* @param methodID -- method id
* @param args -- arguments for invoking the constructor.
* @param result -- return result of invocation.
* @param ctx -- security context
*/
NS_IMETHOD CallMethod(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
/**
* Invoke non-virtual method on Java object in LiveConnect.
*
* @param type -- Return type
* @param obj -- Java object.
* @param clazz -- Class object
* @param methodID -- method id
* @param args -- arguments for invoking the constructor.
* @param ctx -- security context
* @param result -- return result of invocation.
*/
NS_IMETHOD CallNonvirtualMethod(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jclass clazz,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
/**
* Get a field on Java object in LiveConnect.
*
* @param type -- Return type
* @param obj -- Java object.
* @param fieldID -- field id
* @param result -- return field value
* @param ctx -- security context
*/
NS_IMETHOD GetField(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jfieldID fieldID,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
/**
* Set a field on Java object in LiveConnect.
*
* @param type -- Return type
* @param obj -- Java object.
* @param fieldID -- field id
* @param val -- field value to set
* @param ctx -- security context
*/
NS_IMETHOD SetField(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jfieldID fieldID,
/*[in]*/ jvalue val,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
/**
* Invoke static method on Java object in LiveConnect.
*
* @param type -- Return type
* @param clazz -- Class object.
* @param methodID -- method id
* @param args -- arguments for invoking the constructor.
* @param result -- return result of invocation.
* @param ctx -- security context
*/
NS_IMETHOD CallStaticMethod(/*[in]*/ jni_type type,
/*[in]*/ jclass clazz,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
/**
* Get a static field on Java object in LiveConnect.
*
* @param type -- Return type
* @param clazz -- Class object.
* @param fieldID -- field id
* @param result -- return field value
* @param ctx -- security context
*/
NS_IMETHOD GetStaticField(/*[in]*/ jni_type type,
/*[in]*/ jclass clazz,
/*[in]*/ jfieldID fieldID,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
/**
* Set a static field on Java object in LiveConnect.
*
* @param type -- Return type
* @param clazz -- Class object.
* @param fieldID -- field id
* @param val -- field value to set
* @param ctx -- security context
*/
NS_IMETHOD SetStaticField(/*[in]*/ jni_type type,
/*[in]*/ jclass clazz,
/*[in]*/ jfieldID fieldID,
/*[in]*/ jvalue val,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
NS_IMETHOD GetVersion(/*[out]*/ jint* version) = 0;
NS_IMETHOD DefineClass(/*[in]*/ const char* name,
/*[in]*/ jobject loader,
/*[in]*/ const jbyte *buf,
/*[in]*/ jsize len,
/*[out]*/ jclass* clazz) = 0;
NS_IMETHOD FindClass(/*[in]*/ const char* name,
/*[out]*/ jclass* clazz) = 0;
NS_IMETHOD GetSuperclass(/*[in]*/ jclass sub,
/*[out]*/ jclass* super) = 0;
NS_IMETHOD IsAssignableFrom(/*[in]*/ jclass sub,
/*[in]*/ jclass super,
/*[out]*/ jboolean* result) = 0;
NS_IMETHOD Throw(/*[in]*/ jthrowable obj,
/*[out]*/ jint* result) = 0;
NS_IMETHOD ThrowNew(/*[in]*/ jclass clazz,
/*[in]*/ const char *msg,
/*[out]*/ jint* result) = 0;
NS_IMETHOD ExceptionOccurred(/*[out]*/ jthrowable* result) = 0;
NS_IMETHOD ExceptionDescribe(void) = 0;
NS_IMETHOD ExceptionClear(void) = 0;
NS_IMETHOD FatalError(/*[in]*/ const char* msg) = 0;
NS_IMETHOD NewGlobalRef(/*[in]*/ jobject lobj,
/*[out]*/ jobject* result) = 0;
NS_IMETHOD DeleteGlobalRef(/*[in]*/ jobject gref) = 0;
NS_IMETHOD DeleteLocalRef(/*[in]*/ jobject obj) = 0;
NS_IMETHOD IsSameObject(/*[in]*/ jobject obj1,
/*[in]*/ jobject obj2,
/*[out]*/ jboolean* result) = 0;
NS_IMETHOD AllocObject(/*[in]*/ jclass clazz,
/*[out]*/ jobject* result) = 0;
NS_IMETHOD GetObjectClass(/*[in]*/ jobject obj,
/*[out]*/ jclass* result) = 0;
NS_IMETHOD IsInstanceOf(/*[in]*/ jobject obj,
/*[in]*/ jclass clazz,
/*[out]*/ jboolean* result) = 0;
NS_IMETHOD GetMethodID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jmethodID* id) = 0;
NS_IMETHOD GetFieldID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jfieldID* id) = 0;
NS_IMETHOD GetStaticMethodID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jmethodID* id) = 0;
NS_IMETHOD GetStaticFieldID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jfieldID* id) = 0;
NS_IMETHOD NewString(/*[in]*/ const jchar* unicode,
/*[in]*/ jsize len,
/*[out]*/ jstring* result) = 0;
NS_IMETHOD GetStringLength(/*[in]*/ jstring str,
/*[out]*/ jsize* result) = 0;
NS_IMETHOD GetStringChars(/*[in]*/ jstring str,
/*[in]*/ jboolean *isCopy,
/*[out]*/ const jchar** result) = 0;
NS_IMETHOD ReleaseStringChars(/*[in]*/ jstring str,
/*[in]*/ const jchar *chars) = 0;
NS_IMETHOD NewStringUTF(/*[in]*/ const char *utf,
/*[out]*/ jstring* result) = 0;
NS_IMETHOD GetStringUTFLength(/*[in]*/ jstring str,
/*[out]*/ jsize* result) = 0;
NS_IMETHOD GetStringUTFChars(/*[in]*/ jstring str,
/*[in]*/ jboolean *isCopy,
/*[out]*/ const char** result) = 0;
NS_IMETHOD ReleaseStringUTFChars(/*[in]*/ jstring str,
/*[in]*/ const char *chars) = 0;
NS_IMETHOD GetArrayLength(/*[in]*/ jarray array,
/*[out]*/ jsize* result) = 0;
NS_IMETHOD NewObjectArray(/*[in]*/ jsize len,
/*[in]*/ jclass clazz,
/*[in]*/ jobject init,
/*[out]*/ jobjectArray* result) = 0;
NS_IMETHOD GetObjectArrayElement(/*[in]*/ jobjectArray array,
/*[in]*/ jsize index,
/*[out]*/ jobject* result) = 0;
NS_IMETHOD SetObjectArrayElement(/*[in]*/ jobjectArray array,
/*[in]*/ jsize index,
/*[in]*/ jobject val) = 0;
NS_IMETHOD NewArray(/*[in]*/ jni_type element_type,
/*[in]*/ jsize len,
/*[out]*/ jarray* result) = 0;
NS_IMETHOD GetArrayElements(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ jboolean *isCopy,
/*[out]*/ void* result) = 0;
NS_IMETHOD ReleaseArrayElements(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ void *elems,
/*[in]*/ jint mode) = 0;
NS_IMETHOD GetArrayRegion(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ jsize start,
/*[in]*/ jsize len,
/*[out]*/ void* buf) = 0;
NS_IMETHOD SetArrayRegion(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ jsize start,
/*[in]*/ jsize len,
/*[in]*/ void* buf) = 0;
NS_IMETHOD RegisterNatives(/*[in]*/ jclass clazz,
/*[in]*/ const JNINativeMethod *methods,
/*[in]*/ jint nMethods,
/*[out]*/ jint* result) = 0;
NS_IMETHOD UnregisterNatives(/*[in]*/ jclass clazz,
/*[out]*/ jint* result) = 0;
NS_IMETHOD MonitorEnter(/*[in]*/ jobject obj,
/*[out]*/ jint* result) = 0;
NS_IMETHOD MonitorExit(/*[in]*/ jobject obj,
/*[out]*/ jint* result) = 0;
NS_IMETHOD GetJavaVM(/*[in]*/ JavaVM **vm,
/*[out]*/ jint* result) = 0;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsISecureEnv, NS_ISECUREENV_IID)
#endif // nsISecureEnv_h___

Просмотреть файл

@ -1,204 +0,0 @@
/* -*- 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
*
* 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
* 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 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 nsISecureJNI_h___
#define nsISecureJNI_h___
#include "nsISupports.h"
#include "nsIFactory.h"
#include "nsISecurityContext.h"
#include "jni.h"
class nsISecureJNI : public nsISupports {
public:
/**
* Create new Java object in LiveConnect.
*
* @param env -- JNIEnv pointer.
* @param clazz -- Java Class object.
* @param name -- constructor name.
* @param sig -- constructor signature.
* @param args -- arguments for invoking the constructor.
* @param ctx -- security context
* @param result -- return new Java object.
*/
NS_IMETHOD NewObject(/*[in]*/ JNIEnv *env,
/*[in]*/ jclass clazz,
/*[in]*/ const char *name,
/*[in]*/ const char *sig,
/*[in]*/ jvalue *args,
/*[in]*/ nsISecurityContext* ctx,
/*[out]*/ jvalue* result) = 0;
/**
* Invoke method on Java object in LiveConnect.
*
* @param env -- JNIEnv pointer.
* @param obj -- Java object.
* @param name -- method name.
* @param sig -- method signature.
* @param args -- arguments for invoking the constructor.
* @param ctx -- security context
* @param result -- return result of invocation.
*/
NS_IMETHOD CallMethod(/*[in]*/ JNIEnv *env,
/*[in]*/ jobject obj,
/*[in]*/ const char *name,
/*[in]*/ const char *sig,
/*[in]*/ jvalue *args,
/*[in]*/ nsISecurityContext* ctx,
/*[out]*/ jvalue* result) = 0;
/**
* Invoke non-virtual method on Java object in LiveConnect.
*
* @param env -- JNIEnv pointer.
* @param obj -- Java object.
* @param name -- method name.
* @param sig -- method signature.
* @param args -- arguments for invoking the constructor.
* @param ctx -- security context
* @param result -- return result of invocation.
*/
NS_IMETHOD CallNonvirtualMethod(/*[in]*/ JNIEnv *env,
/*[in]*/ jobject obj,
/*[in]*/ jclass clazz,
/*[in]*/ const char *name,
/*[in]*/ const char *sig,
/*[in]*/ jvalue *args,
/*[in]*/ nsISecurityContext* ctx,
/*[out]*/ jvalue* result) = 0;
/**
* Get a field on Java object in LiveConnect.
*
* @param env -- JNIEnv pointer.
* @param obj -- Java object.
* @param name -- field name.
* @param sig -- field signature
* @param ctx -- security context
* @param result -- return field value
*/
NS_IMETHOD GetField(/*[in]*/ JNIEnv *env,
/*[in]*/ jobject obj,
/*[in]*/ const char *name,
/*[in]*/ const char *sig,
/*[in]*/ nsISecurityContext* ctx,
/*[out]*/ jvalue* result) = 0;
/**
* Set a field on Java object in LiveConnect.
*
* @param env -- JNIEnv pointer.
* @param obj -- Java object.
* @param name -- field name.
* @param sig -- field signature
* @param result -- field value to set
* @param ctx -- security context
*/
NS_IMETHOD SetField(/*[in]*/ JNIEnv *env,
/*[in]*/ jobject obj,
/*[in]*/ const char *name,
/*[in]*/ const char *sig,
/*[in]*/ jvalue val,
/*[in]*/ nsISecurityContext* ctx) = 0;
/**
* Invoke static method on Java object in LiveConnect.
*
* @param env -- JNIEnv pointer.
* @param obj -- Java object.
* @param name -- method name.
* @param sig -- method signature.
* @param args -- arguments for invoking the constructor.
* @param ctx -- security context
* @param result -- return result of invocation.
*/
NS_IMETHOD CallStaticMethod(/*[in]*/ JNIEnv *env,
/*[in]*/ jclass clazz,
/*[in]*/ const char *name,
/*[in]*/ const char *sig,
/*[in]*/ jvalue *args,
/*[in]*/ nsISecurityContext* ctx,
/*[out]*/ jvalue* result) = 0;
/**
* Get a static field on Java object in LiveConnect.
*
* @param env -- JNIEnv pointer.
* @param obj -- Java object.
* @param name -- field name.
* @param sig -- field signature
* @param ctx -- security context
* @param result -- return field value
*/
NS_IMETHOD GetStaticField(/*[in]*/ JNIEnv *env,
/*[in]*/ jclass clazz,
/*[in]*/ const char *name,
/*[in]*/ const char *sig,
/*[in]*/ nsISecurityContext* ctx,
/*[out]*/ jvalue* result) = 0;
/**
* Set a static field on Java object in LiveConnect.
*
* @param env -- JNIEnv pointer.
* @param obj -- Java object.
* @param name -- field name.
* @param sig -- field signature
* @param result -- field value to set
* @param ctx -- security context
*/
NS_IMETHOD SetStaticField(/*[in]*/ JNIEnv *env,
/*[in]*/ jclass clazz,
/*[in]*/ const char *name,
/*[in]*/ const char *sig,
/*[in]*/ jvalue val,
/*[in]*/ nsISecurityContext* ctx) = 0;
};
#define NS_ISECUREJNI_IID \
{ /* {7C968050-4C4B-11d2-A1CB-00805F8F694D} */ \
0x7c968050, \
0x4c4b, \
0x11d2, \
{ 0xa1, 0xcb, 0x0, 0x80, 0x5f, 0x8f, 0x69, 0x4d } \
};
#endif // nsISecureJNI_h___

Просмотреть файл

@ -1,362 +0,0 @@
/* -*- 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
*
* 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
* 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 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 nsISecureJNI2_h___
#define nsISecureJNI2_h___
#include "nsISupports.h"
#include "nsIFactory.h"
#include "nsISecurityContext.h"
#include "jni.h"
enum jni_type
{
jobject_type = 0,
jboolean_type,
jbyte_type,
jchar_type,
jshort_type,
jint_type,
jlong_type,
jfloat_type,
jdouble_type,
jvoid_type
};
class nsISecureJNI2 : public nsISupports {
public:
/**
* Create new Java object in LiveConnect.
*
* @param clazz -- Java Class object.
* @param methodID -- Method id
* @param args -- arguments for invoking the constructor.
* @param result -- return new Java object.
* @param ctx -- security context
*/
NS_IMETHOD NewObject(/*[in]*/ jclass clazz,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jobject* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
/**
* Invoke method on Java object in LiveConnect.
*
* @param type -- Return type
* @param obj -- Java object.
* @param methodID -- method id
* @param args -- arguments for invoking the constructor.
* @param result -- return result of invocation.
* @param ctx -- security context
*/
NS_IMETHOD CallMethod(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
/**
* Invoke non-virtual method on Java object in LiveConnect.
*
* @param type -- Return type
* @param obj -- Java object.
* @param clazz -- Class object
* @param methodID -- method id
* @param args -- arguments for invoking the constructor.
* @param ctx -- security context
* @param result -- return result of invocation.
*/
NS_IMETHOD CallNonvirtualMethod(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jclass clazz,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
/**
* Get a field on Java object in LiveConnect.
*
* @param type -- Return type
* @param obj -- Java object.
* @param fieldID -- field id
* @param result -- return field value
* @param ctx -- security context
*/
NS_IMETHOD GetField(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jfieldID fieldID,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
/**
* Set a field on Java object in LiveConnect.
*
* @param type -- Return type
* @param obj -- Java object.
* @param fieldID -- field id
* @param val -- field value to set
* @param ctx -- security context
*/
NS_IMETHOD SetField(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jfieldID fieldID,
/*[in]*/ jvalue val,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
/**
* Invoke static method on Java object in LiveConnect.
*
* @param type -- Return type
* @param clazz -- Class object.
* @param methodID -- method id
* @param args -- arguments for invoking the constructor.
* @param result -- return result of invocation.
* @param ctx -- security context
*/
NS_IMETHOD CallStaticMethod(/*[in]*/ jni_type type,
/*[in]*/ jclass clazz,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
/**
* Get a static field on Java object in LiveConnect.
*
* @param type -- Return type
* @param clazz -- Class object.
* @param fieldID -- field id
* @param result -- return field value
* @param ctx -- security context
*/
NS_IMETHOD GetStaticField(/*[in]*/ jni_type type,
/*[in]*/ jclass clazz,
/*[in]*/ jfieldID fieldID,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
/**
* Set a static field on Java object in LiveConnect.
*
* @param type -- Return type
* @param clazz -- Class object.
* @param fieldID -- field id
* @param val -- field value to set
* @param ctx -- security context
*/
NS_IMETHOD SetStaticField(/*[in]*/ jni_type type,
/*[in]*/ jclass clazz,
/*[in]*/ jfieldID fieldID,
/*[in]*/ jvalue val,
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
NS_IMETHOD GetVersion(/*[out]*/ jint* version) = 0;
NS_IMETHOD DefineClass(/*[in]*/ const char* name,
/*[in]*/ jobject loader,
/*[in]*/ const jbyte *buf,
/*[in]*/ jsize len,
/*[out]*/ jclass* clazz) = 0;
NS_IMETHOD FindClass(/*[in]*/ const char* name,
/*[out]*/ jclass* clazz) = 0;
NS_IMETHOD GetSuperclass(/*[in]*/ jclass sub,
/*[out]*/ jclass* super) = 0;
NS_IMETHOD IsAssignableFrom(/*[in]*/ jclass sub,
/*[in]*/ jclass super,
/*[out]*/ jboolean* result) = 0;
NS_IMETHOD Throw(/*[in]*/ jthrowable obj,
/*[out]*/ jint* result) = 0;
NS_IMETHOD ThrowNew(/*[in]*/ jclass clazz,
/*[in]*/ const char *msg,
/*[out]*/ jint* result) = 0;
NS_IMETHOD ExceptionOccurred(/*[out]*/ jthrowable* result) = 0;
NS_IMETHOD ExceptionDescribe(void) = 0;
NS_IMETHOD ExceptionClear(void) = 0;
NS_IMETHOD FatalError(/*[in]*/ const char* msg) = 0;
NS_IMETHOD NewGlobalRef(/*[in]*/ jobject lobj,
/*[out]*/ jobject* result) = 0;
NS_IMETHOD DeleteGlobalRef(/*[in]*/ jobject gref) = 0;
NS_IMETHOD DeleteLocalRef(/*[in]*/ jobject obj) = 0;
NS_IMETHOD IsSameObject(/*[in]*/ jobject obj1,
/*[in]*/ jobject obj2,
/*[out]*/ jboolean* result) = 0;
NS_IMETHOD AllocObject(/*[in]*/ jclass clazz,
/*[out]*/ jobject* result) = 0;
NS_IMETHOD GetObjectClass(/*[in]*/ jobject obj,
/*[out]*/ jclass* result) = 0;
NS_IMETHOD IsInstanceOf(/*[in]*/ jobject obj,
/*[in]*/ jclass clazz,
/*[out]*/ jboolean* result) = 0;
NS_IMETHOD GetMethodID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jmethodID* id) = 0;
NS_IMETHOD GetFieldID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jfieldID* id) = 0;
NS_IMETHOD GetStaticMethodID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jmethodID* id) = 0;
NS_IMETHOD GetStaticFieldID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jfieldID* id) = 0;
NS_IMETHOD NewString(/*[in]*/ const jchar* unicode,
/*[in]*/ jsize len,
/*[out]*/ jstring* result) = 0;
NS_IMETHOD GetStringLength(/*[in]*/ jstring str,
/*[out]*/ jsize* result) = 0;
NS_IMETHOD GetStringChars(/*[in]*/ jstring str,
/*[in]*/ jboolean *isCopy,
/*[out]*/ const jchar** result) = 0;
NS_IMETHOD ReleaseStringChars(/*[in]*/ jstring str,
/*[in]*/ const jchar *chars) = 0;
NS_IMETHOD NewStringUTF(/*[in]*/ const char *utf,
/*[out]*/ jstring* result) = 0;
NS_IMETHOD GetStringUTFLength(/*[in]*/ jstring str,
/*[out]*/ jsize* result) = 0;
NS_IMETHOD GetStringUTFChars(/*[in]*/ jstring str,
/*[in]*/ jboolean *isCopy,
/*[out]*/ const char** result) = 0;
NS_IMETHOD ReleaseStringUTFChars(/*[in]*/ jstring str,
/*[in]*/ const char *chars) = 0;
NS_IMETHOD GetArrayLength(/*[in]*/ jarray array,
/*[out]*/ jsize* result) = 0;
NS_IMETHOD NewObjectArray(/*[in]*/ jsize len,
/*[in]*/ jclass clazz,
/*[in]*/ jobject init,
/*[out]*/ jobjectArray* result) = 0;
NS_IMETHOD GetObjectArrayElement(/*[in]*/ jobjectArray array,
/*[in]*/ jsize index,
/*[out]*/ jobject* result) = 0;
NS_IMETHOD SetObjectArrayElement(/*[in]*/ jobjectArray array,
/*[in]*/ jsize index,
/*[in]*/ jobject val) = 0;
NS_IMETHOD NewArray(/*[in]*/ jni_type element_type,
/*[in]*/ jsize len,
/*[out]*/ jarray* result) = 0;
NS_IMETHOD GetArrayElements(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ jboolean *isCopy,
/*[out]*/ void* result) = 0;
NS_IMETHOD ReleaseArrayElements(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ void *elems,
/*[in]*/ jint mode) = 0;
NS_IMETHOD GetArrayRegion(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ jsize start,
/*[in]*/ jsize len,
/*[out]*/ void* buf) = 0;
NS_IMETHOD SetArrayRegion(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ jsize start,
/*[in]*/ jsize len,
/*[in]*/ void* buf) = 0;
NS_IMETHOD RegisterNatives(/*[in]*/ jclass clazz,
/*[in]*/ const JNINativeMethod *methods,
/*[in]*/ jint nMethods,
/*[out]*/ jint* result) = 0;
NS_IMETHOD UnregisterNatives(/*[in]*/ jclass clazz,
/*[out]*/ jint* result) = 0;
NS_IMETHOD MonitorEnter(/*[in]*/ jobject obj,
/*[out]*/ jint* result) = 0;
NS_IMETHOD MonitorExit(/*[in]*/ jobject obj,
/*[out]*/ jint* result) = 0;
NS_IMETHOD GetJavaVM(/*[in]*/ JavaVM **vm,
/*[out]*/ jint* result) = 0;
};
#define NS_ISECUREJNI2_IID \
{ /* ca9148d0-598a-11d2-a1d4-00805f8f694d */ \
0xca9148d0, \
0x598a, \
0x11d2, \
{0xa1, 0xd4, 0x00, 0x80, 0x5f, 0x8f, 0x69, 0x4d } \
}
#endif // nsISecureJNI2_h___

Просмотреть файл

@ -1,79 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
////////////////////////////////////////////////////////////////////////////////
// NETSCAPE JAVA VM PLUGIN EXTENSIONS FOR SYMANTEC DEBUGGER
//
// This interface allows the browser to initialize a JVM that supports a
// debugger. It's called the "Symantec Debugger Interface" because it currently
// provides access to the Symantec Cafe or Visual Cafe debugger in the Netscape
// JVM. It is not meant to be the be-all-to-end-all of debugger interfaces.
////////////////////////////////////////////////////////////////////////////////
#ifndef nsISymantecDebugManager_h___
#define nsISymantecDebugManager_h___
#include "nsISupports.h"
////////////////////////////////////////////////////////////////////////////////
// Symantec Debug Manager Interface
//
// Implemented by the browser that supports the Symantec debugger.
#define NS_ISYMANTECDEBUGMANAGER_IID \
{ /* 131362e0-d985-11d1-8155-006008119d7a */ \
0x131362e0, \
0xd985, \
0x11d1, \
{0x81, 0x55, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \
}
class nsISymantecDebugManager : public nsISupports {
public:
NS_DECLARE_STATIC_IID_ACCESSOR(NS_ISYMANTECDEBUGMANAGER_IID)
NS_IMETHOD
SetDebugAgentPassword(PRInt32 pwd) = 0;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsISymantecDebugManager,
NS_ISYMANTECDEBUGMANAGER_IID)
////////////////////////////////////////////////////////////////////////////////
#endif /* nsISymantecDebugManager_h___ */

Просмотреть файл

@ -1,81 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
////////////////////////////////////////////////////////////////////////////////
// NETSCAPE JAVA VM PLUGIN EXTENSIONS FOR SYMANTEC DEBUGGER
//
// This interface allows the browser to initialize a JVM that supports a
// debugger. It's called the "Symantec Debugger Interface" because it currently
// provides access to the Symantec Cafe or Visual Cafe debugger in the Netscape
// JVM. It is not meant to be the be-all-to-end-all of debugger interfaces.
////////////////////////////////////////////////////////////////////////////////
#ifndef nsISymantecDebugger_h___
#define nsISymantecDebugger_h___
#include "nsISupports.h"
////////////////////////////////////////////////////////////////////////////////
// Symantec Debugger Interface
//
// Implemented by the JVM plugin that supports the Symantec debugger.
enum nsSymantecDebugPort {
nsSymantecDebugPort_None = 0,
nsSymantecDebugPort_SharedMemory = -1
// anything else is a port number
};
class nsISymantecDebugger : public nsISupports {
public:
NS_IMETHOD
StartDebugger(nsSymantecDebugPort port) = 0;
};
#define NS_ISYMANTECDEBUGGER_IID \
{ /* 954399f0-d980-11d1-8155-006008119d7a */ \
0x954399f0, \
0xd980, \
0x11d1, \
{0x81, 0x55, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \
}
////////////////////////////////////////////////////////////////////////////////
#endif /* nsISymantecDebugger_h___ */

Просмотреть файл

@ -1,65 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
////////////////////////////////////////////////////////////////////////////////
// NETSCAPE JAVA VM PLUGIN EXTENSIONS
//
// This interface allows a Java virtual machine to be plugged into
// Communicator to implement the APPLET tag and host applets.
//
// Note that this is the C++ interface that the plugin sees. The browser
// uses a specific implementation of this, nsJVMPlugin, found in jvmmgr.h.
////////////////////////////////////////////////////////////////////////////////
#ifndef nsjvm_h___
#define nsjvm_h___
#include "nsplugin.h"
#include "nsIJRIPlugin.h"
#include "nsIJVMConsole.h"
#include "nsIJVMManager.h"
#include "nsIJVMPlugin.h"
#include "nsIJVMPluginInstance.h"
#include "nsIJVMPluginTagInfo.h"
#include "nsISymantecDebugManager.h"
#include "nsISymantecDebugger.h"
#include "nsILiveconnect.h"
#include "nsIJVMThreadManager.h"
////////////////////////////////////////////////////////////////////////////////
#endif /* nsjvm_h___ */

Просмотреть файл

@ -1,117 +0,0 @@
#
# ***** 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
# 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 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 *****
DEPTH = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = oji
IS_COMPONENT = 1
MODULE_NAME = nsCJVMManagerModule
GRE_MODULE = 1
LIBXUL_LIBRARY = 1
REQUIRES = xpcom \
string \
liveconnect \
java \
js \
plugin \
caps \
pref \
necko \
dom \
widget \
xpconnect \
windowwatcher \
gfx \
thebes \
content \
layout \
docshell \
webbrwsr \
intl \
locale \
$(NULL)
LIBRARY_NAME = oji
EXPORT_LIBRARY = 1
ifeq ($(OS_ARCH),WINNT)
EXTRA_DSO_LIBS = jsj$(MOZ_BITS)$(VERSION_NUMBER)
else
EXTRA_DSO_LIBS = jsj
endif
CPPSRCS = \
jvmmgr.cpp \
scd.cpp \
nsJVMManager.cpp \
nsJVMPluginTagInfo.cpp \
ProxyJNI.cpp \
nsCNullSecurityContext.cpp \
ProxyClassLoader.cpp \
nsCSecurityContext.cpp \
nsCJVMManagerFactory.cpp \
nsJVMConfigManager.cpp \
lcglue.cpp \
$(NULL)
ifeq ($(TARGET_MD_ARCH), unix)
CPPSRCS += \
nsJVMConfigManagerUnix.cpp \
$(NULL)
endif
DEFINES += -DNS_OJI_IMPL=1
EXPORTS = \
jvmmgr.h \
nsJVMManager.h \
nsJVMPluginTagInfo.h \
$(NULL)
EXTRA_DSO_LDOPTS = \
$(LIBS_DIR) \
$(EXTRA_DSO_LIBS) \
$(MOZ_COMPONENT_LIBS) \
$(MOZ_JS_LIBS) \
$(NULL)
include $(topsrcdir)/config/rules.mk

Просмотреть файл

@ -1,223 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* vim: set ts=4 sw=4 et tw=78: */
/* ***** 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
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Patrick Beard <beard@netscape.com> (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 ***** */
#include "ProxyClassLoader.h"
#include "jsapi.h"
#include "jsjava.h"
#include "prprf.h"
#include "nsIServiceManager.h"
#include "nsIScriptSecurityManager.h"
#include "nsIJSContextStack.h"
#include "nsIPrincipal.h"
#include "nsNetUtil.h"
#include "ProxyJNI.h"
#include "nsCNullSecurityContext.h"
/**
* Obtain the netscape.oji.ProxyClassLoader instance associated with the
* document of the currently running script. For now, store a LiveConnect
* wrapper for this instance in window.navigator.javaclasses. There
* hopefully aren't any security concerns with exposing this to scripts,
* as the constructor is private, and the class loader itself can
* only load classes from the document's URL and below.
*/
static nsresult getScriptClassLoader(JNIEnv* env, jobject* classloader)
{
// get the current JSContext from the context stack service.
nsresult rv;
nsCOMPtr<nsIJSContextStack> contexts =
do_GetService("@mozilla.org/js/xpc/ContextStack;1", &rv);
if (NS_FAILED(rv)) return rv;
JSContext* cx;
rv = contexts->Peek(&cx);
if (NS_FAILED(rv)) return rv;
if (!cx) return NS_ERROR_NOT_AVAILABLE;
// lookup "window.navigator.javaclasses", if it exists, this is the class
// loader bound to this page.
JSObject* window = JS_GetGlobalObject(cx);
if (!window) return NS_ERROR_FAILURE;
jsval navigator = JSVAL_NULL;
if (!JS_LookupProperty(cx, window, "navigator", &navigator))
return NS_ERROR_FAILURE;
jsval javaclasses = JSVAL_NULL;
if (!JSVAL_IS_PRIMITIVE(navigator)) {
uintN attrs;
JSBool found;
// Make sure that we pull out the correct javaclasses object that we
// set. Since content can't spoof READONLY or PERMANANT properties,
// their presence on this property indicates that this truely is the
// correct object.
JSObject *obj = JSVAL_TO_OBJECT(navigator);
if (!JS_GetPropertyAttributes(cx, obj, "javaclasses", &attrs, &found))
return NS_ERROR_FAILURE;
if ((~attrs & (JSPROP_READONLY | JSPROP_PERMANENT)) == 0 &&
!JS_GetProperty(cx, obj, "javaclasses", &javaclasses)) {
return NS_ERROR_FAILURE;
}
// Unwrap this, the way LiveConnect does it. Note that this function
// checks if javaclasses is primitive or not.
if (JSJ_ConvertJSValueToJavaObject(cx, javaclasses, classloader))
return NS_OK;
}
// use default netscape.oji.ProxyClassLoaderFactory (which is no longer
// supported in recent JRE) as the classloader
jclass netscape_oji_ProxyClassLoaderFac =
env->FindClass("netscape/oji/ProxyClassLoaderFactory");
if (!netscape_oji_ProxyClassLoaderFac) {
env->ExceptionClear();
return NS_ERROR_FAILURE;
}
jmethodID staticMethodID =
env->GetStaticMethodID(netscape_oji_ProxyClassLoaderFac,
"createClassLoader",
"(Ljava/lang/String;)Ljava/lang/ClassLoader;");
if (!staticMethodID) {
env->ExceptionClear();
return NS_ERROR_FAILURE;
}
// Obtain the URL of the document of the currently running script. This will
// be used as the default location to download classes from.
nsCOMPtr<nsIScriptSecurityManager> secMan =
do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv);
if (NS_FAILED(rv)) return rv;
nsCOMPtr<nsIPrincipal> principal, sysprincipal;
rv = secMan->GetPrincipalFromContext(cx, getter_AddRefs(principal));
if (NS_FAILED(rv)) return rv;
rv = secMan->GetSystemPrincipal(getter_AddRefs(sysprincipal));
if (NS_FAILED(rv)) return rv;
PRBool equals;
rv = principal->Equals(sysprincipal, &equals);
// Can't get URI from system principal
if (NS_FAILED(rv)) return rv;
if (equals) return NS_ERROR_FAILURE;
nsCOMPtr<nsIURI> codebase;
rv = principal->GetURI(getter_AddRefs(codebase));
if (NS_FAILED(rv)) return rv;
// create a netscape.oji.ProxyClassLoader instance.
nsCAutoString spec;
rv = codebase->GetSpec(spec);
if (NS_FAILED(rv)) return rv;
jstring jspec = env->NewStringUTF(spec.get());
if (!jspec) {
env->ExceptionClear();
return NS_ERROR_FAILURE;
}
// In order to have permission to create classloader, we need to grant
// enough permission
nsISecurityContext* origContext = nsnull;
if (NS_FAILED(GetSecurityContext(env, &origContext))) {
return NS_ERROR_FAILURE;
}
nsCOMPtr<nsISecurityContext> nullContext(new nsCNullSecurityContext());
if (!nullContext) {
return NS_ERROR_OUT_OF_MEMORY;
}
SetSecurityContext(env, nullContext);
*classloader = env->CallStaticObjectMethod(netscape_oji_ProxyClassLoaderFac,
staticMethodID, jspec);
SetSecurityContext(env, origContext);
if (!*classloader) {
env->ExceptionClear();
return NS_ERROR_FAILURE;
}
env->DeleteLocalRef(jspec);
env->DeleteLocalRef(netscape_oji_ProxyClassLoaderFac);
// now, cache the class loader in "window.navigator.javaclasses"
if (!JSVAL_IS_PRIMITIVE(navigator) &&
JSJ_ConvertJavaObjectToJSValue(cx, *classloader, &javaclasses) &&
!JS_DefineProperty(cx, JSVAL_TO_OBJECT(navigator), "javaclasses",
javaclasses, NULL, NULL, JSPROP_ENUMERATE |
JSPROP_READONLY | JSPROP_PERMANENT)) {
return NS_ERROR_FAILURE;
}
return NS_OK;
}
jclass ProxyFindClass(JNIEnv* env, const char* name)
{
do {
// TODO: prevent recursive call to ProxyFindClass, if netscape.oji.ProxyClassLoader
// isn't found by getScriptClassLoader().
jobject classloader;
jthrowable jException = env->ExceptionOccurred();
if (jException != NULL) {
// Clean up exception
env->ExceptionClear();
// Release local ref
env->DeleteLocalRef(jException);
}
nsresult rv = getScriptClassLoader(env, &classloader);
if (NS_FAILED(rv)) break;
jclass netscape_oji_ProxyClassLoader = env->GetObjectClass(classloader);
jmethodID loadClassID = env->GetMethodID(netscape_oji_ProxyClassLoader, "loadClass",
"(Ljava/lang/String;)Ljava/lang/Class;");
env->DeleteLocalRef(netscape_oji_ProxyClassLoader);
if (!loadClassID) {
env->ExceptionClear();
break;
}
jstring jname = env->NewStringUTF(name);
jvalue jargs[1]; jargs[0].l = jname;
jclass c = (jclass) env->CallObjectMethodA(classloader, loadClassID, jargs);
env->DeleteLocalRef(jname);
return c;
} while (0);
return 0;
}

Просмотреть файл

@ -1,48 +0,0 @@
/* -*- 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
*
* 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
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Patrick Beard <beard@netscape.com> (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 ***** */
#ifndef ProxyClassLoader_h__
#define ProxyClassLoader_h__
#ifndef JNI_H
#include "jni.h"
#endif
jclass ProxyFindClass(JNIEnv* env, const char* name);
#endif /* ProxyClassLoader_h__ */

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,61 +0,0 @@
/* -*- 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
*
* 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 part of the mozilla.org LDAP XPCOM SDK.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Xiaobin Lu <Xiaobin.Lu@eng.Sun.com>
*
* 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 ***** */
package netscape.oji;
import java.net.URLClassLoader;
import java.net.URL;
import java.net.MalformedURLException;
public abstract class ProxyClassLoaderFactory {
public static ClassLoader createClassLoader(final String documentURL)
throws MalformedURLException {
URL[] documentURLArray = new URL[1];
int lastIndx = documentURL.lastIndexOf("/");
String urlPath = documentURL.substring(0, lastIndx+1);
try {
documentURLArray[0] = new URL(urlPath);
}
catch (MalformedURLException e) {
System.out.println("MalformedURLException was caught");
return null;
}
return new URLClassLoader(documentURLArray);
}
}

Просмотреть файл

@ -1,7 +0,0 @@
#
# This is a list of files to be copied to the mozilla:dist directory
#
nsjvm.h
nsscd.h
jvmmgr.h

Просмотреть файл

@ -1,382 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
#include "prlog.h"
#include "nsJVMManager.h"
#include "nsIServiceManager.h"
#include "nsIJVMPrefsWindow.h"
#include "ProxyJNI.h"
#include "lcglue.h"
#include "nsCSecurityContext.h"
#include "nsIJSContextStack.h"
#define NS_JVMMANAGER_CONTRACTID "@mozilla.org/oji/jvm-mgr;1"
static NS_DEFINE_IID(kIJVMConsoleIID, NS_IJVMCONSOLE_IID);
static NS_DEFINE_IID(kIJVMPrefsWindowIID, NS_IJVMPREFSWINDOW_IID);
static NS_DEFINE_IID(kISymantecDebuggerIID, NS_ISYMANTECDEBUGGER_IID);
PR_BEGIN_EXTERN_C
#ifdef PRE_SERVICE_MANAGER
extern nsPluginManager* thePluginManager;
#endif
PR_IMPLEMENT(void)
JVM_ReleaseJVMMgr(nsJVMManager* mgr)
{
mgr->Release();
}
static nsIJVMPlugin*
GetRunningJVM(void)
{
nsIJVMPlugin* jvm = NULL;
nsresult rv;
nsCOMPtr<nsIJVMManager> managerService = do_GetService(NS_JVMMANAGER_CONTRACTID, &rv);
if (NS_FAILED(rv)) return jvm;
nsJVMManager* jvmMgr = (nsJVMManager *)managerService.get();
if (jvmMgr) {
nsJVMStatus status = jvmMgr->GetJVMStatus();
if (status == nsJVMStatus_Enabled)
status = jvmMgr->StartupJVM();
if (status == nsJVMStatus_Running) {
jvm = jvmMgr->GetJVMPlugin();
}
}
return jvm;
}
PR_IMPLEMENT(nsJVMStatus)
JVM_StartupJVM(void)
{
GetRunningJVM();
return JVM_GetJVMStatus();
}
PR_IMPLEMENT(nsJVMStatus)
JVM_ShutdownJVM(void)
{
nsJVMStatus status = nsJVMStatus_Failed;
nsresult rv;
nsCOMPtr<nsIJVMManager> managerService = do_GetService(NS_JVMMANAGER_CONTRACTID, &rv);
if (NS_FAILED(rv)) return status;
nsJVMManager* mgr = (nsJVMManager *)managerService.get();
if (mgr) {
status = mgr->ShutdownJVM();
}
return status;
}
PR_IMPLEMENT(nsJVMStatus)
JVM_GetJVMStatus(void)
{
nsresult rv;
nsJVMStatus status = nsJVMStatus_Disabled;
nsCOMPtr<nsIJVMManager> managerService = do_GetService(NS_JVMMANAGER_CONTRACTID, &rv);
if (NS_FAILED(rv)) return status;
nsJVMManager* mgr = (nsJVMManager *)managerService.get();
if (mgr) {
status = mgr->GetJVMStatus();
}
return status;
}
PR_IMPLEMENT(PRBool)
JVM_AddToClassPath(const char* dirPath)
{
nsresult err = NS_ERROR_FAILURE;
nsCOMPtr<nsIJVMManager> managerService = do_GetService(NS_JVMMANAGER_CONTRACTID, &err);
if (NS_FAILED(err)) return PR_FALSE;
nsJVMManager* mgr = (nsJVMManager *)managerService.get();
if (mgr) {
err = mgr->AddToClassPath(dirPath);
}
return err == NS_OK;
}
////////////////////////////////////////////////////////////////////////////////
// This will get the JVMConsole if one is available. You have to Release it
// when you're done with it.
static nsIJVMConsole*
GetConsole(void)
{
// PENDING(edburns): workaround for bug 76677, make sure the JVM is
// started.
JNIEnv* env = JVM_GetJNIEnv();
if (!env)
return nsnull;
nsIJVMConsole* console = nsnull;
nsIJVMPlugin* jvm = GetRunningJVM();
if (jvm)
jvm->QueryInterface(kIJVMConsoleIID, (void**)&console);
return console;
}
PR_IMPLEMENT(void)
JVM_ShowConsole(void)
{
nsIJVMConsole* console = GetConsole();
if (console) {
console->Show();
console->Release();
}
}
PR_IMPLEMENT(void)
JVM_HideConsole(void)
{
nsJVMStatus status = JVM_GetJVMStatus();
if (status == nsJVMStatus_Running) {
nsIJVMConsole* console = GetConsole();
if (console) {
console->Hide();
console->Release();
}
}
}
PR_IMPLEMENT(PRBool)
JVM_IsConsoleVisible(void)
{
PRBool result = PR_FALSE;
nsJVMStatus status = JVM_GetJVMStatus();
if (status == nsJVMStatus_Running) {
nsIJVMConsole* console = GetConsole();
if (console) {
nsresult err = console->IsVisible(&result);
PR_ASSERT(err != NS_OK ? result == PR_FALSE : PR_TRUE);
console->Release();
}
}
return result;
}
PR_IMPLEMENT(void)
JVM_PrintToConsole(const char* msg)
{
nsJVMStatus status = JVM_GetJVMStatus();
if (status != nsJVMStatus_Running)
return;
nsIJVMConsole* console = GetConsole();
if (console) {
console->Print(msg);
console->Release();
}
}
////////////////////////////////////////////////////////////////////////////////
// This will get the JVMPrefsWindow if one is available. You have to Release it
// when you're done with it.
static nsIJVMPrefsWindow*
GetPrefsWindow(void)
{
nsIJVMPrefsWindow* prefsWin = NULL;
nsIJVMPlugin* jvm = GetRunningJVM();
if (jvm) {
jvm->QueryInterface(kIJVMPrefsWindowIID, (void**)&prefsWin);
// jvm->Release(); // GetRunningJVM no longer calls AddRef
}
return prefsWin;
}
PR_IMPLEMENT(void)
JVM_ShowPrefsWindow(void)
{
nsIJVMPrefsWindow* prefsWin = GetPrefsWindow();
if (prefsWin) {
prefsWin->Show();
prefsWin->Release();
}
}
PR_IMPLEMENT(void)
JVM_HidePrefsWindow(void)
{
nsJVMStatus status = JVM_GetJVMStatus();
if (status == nsJVMStatus_Running) {
nsIJVMPrefsWindow* prefsWin = GetPrefsWindow();
if (prefsWin) {
prefsWin->Hide();
prefsWin->Release();
}
}
}
PR_IMPLEMENT(PRBool)
JVM_IsPrefsWindowVisible(void)
{
PRBool result = PR_FALSE;
nsJVMStatus status = JVM_GetJVMStatus();
if (status == nsJVMStatus_Running) {
nsIJVMPrefsWindow* prefsWin = GetPrefsWindow();
if (prefsWin) {
nsresult err = prefsWin->IsVisible(&result);
PR_ASSERT(err != NS_OK ? result == PR_FALSE : PR_TRUE);
prefsWin->Release();
}
}
return result;
}
////////////////////////////////////////////////////////////////////////////////
PR_IMPLEMENT(void)
JVM_StartDebugger(void)
{
nsIJVMPlugin* jvm = GetRunningJVM();
if (jvm) {
nsISymantecDebugger* debugger;
if (jvm->QueryInterface(kISymantecDebuggerIID, (void**)&debugger) == NS_OK) {
// XXX should we make sure the vm is started first?
debugger->StartDebugger(nsSymantecDebugPort_SharedMemory);
debugger->Release();
}
// jvm->Release(); // GetRunningJVM no longer calls AddRef
}
}
PR_IMPLEMENT(JNIEnv*)
JVM_GetJNIEnv(void)
{
/* get proxy env for current thread. */
JVMContext* context = GetJVMContext();
JNIEnv* env = context->proxyEnv;
if (env != NULL)
return env;
// Create a Proxy JNI to associate with this NSPR thread.
nsIJVMPlugin* jvmPlugin = GetRunningJVM();
if (jvmPlugin != NULL)
env = CreateProxyJNI(jvmPlugin);
/* Associate the JNIEnv with the current thread. */
context->proxyEnv = env;
return env;
}
PR_IMPLEMENT(void)
JVM_ReleaseJNIEnv(JNIEnv* env)
{
/**
* this is now done when the NSPR thread is shutdown. JNIEnvs are always tied to the
* lifetime of threads.
*/
}
PR_IMPLEMENT(nsresult)
JVM_SpendTime(PRUint32 timeMillis)
{
#ifdef XP_MAC
nsresult result = NS_ERROR_NOT_INITIALIZED;
nsIJVMPlugin* jvm = GetRunningJVM();
if (jvm != NULL)
result = jvm->SpendTime(timeMillis);
return result;
#else
return NS_ERROR_NOT_IMPLEMENTED;
#endif
}
PR_IMPLEMENT(PRBool)
JVM_MaybeStartupLiveConnect()
{
PRBool result = PR_FALSE;
nsresult rv;
nsCOMPtr<nsIJVMManager> managerService = do_GetService(NS_JVMMANAGER_CONTRACTID, &rv);
if (NS_FAILED(rv)) return result;
nsJVMManager* mgr = (nsJVMManager *)managerService.get();
if (mgr) {
result = mgr->MaybeStartupLiveConnect();
}
return result;
}
PR_IMPLEMENT(PRBool)
JVM_MaybeShutdownLiveConnect(void)
{
PRBool result = PR_FALSE;
nsresult rv;
nsCOMPtr<nsIJVMManager> managerService = do_GetService(NS_JVMMANAGER_CONTRACTID, &rv);
if (NS_FAILED(rv)) return result;
nsJVMManager* mgr = (nsJVMManager *)managerService.get();
if (mgr) {
result = mgr->MaybeShutdownLiveConnect();
}
return result;
}
PR_IMPLEMENT(PRBool)
JVM_IsLiveConnectEnabled(void)
{
PRBool result = PR_FALSE;
nsresult rv;
nsCOMPtr<nsIJVMManager> managerService = do_GetService(NS_JVMMANAGER_CONTRACTID, &rv);
if (NS_FAILED(rv)) return result;
nsJVMManager* mgr = (nsJVMManager *)managerService.get();
if (mgr) {
result = mgr->IsLiveConnectEnabled();
}
return result;
}
PR_IMPLEMENT(nsISecurityContext*)
JVM_GetJSSecurityContext()
{
JSContext *cx = nsnull;
nsCOMPtr<nsIJSContextStack> stack = do_GetService("@mozilla.org/js/xpc/ContextStack;1");
if (stack) stack->Peek(&cx);
nsCSecurityContext *securityContext = new nsCSecurityContext(cx);
if (securityContext == nsnull) {
return nsnull;
}
NS_ADDREF(securityContext);
return securityContext;
}
PR_END_EXTERN_C
////////////////////////////////////////////////////////////////////////////////

Просмотреть файл

@ -1,144 +0,0 @@
/* -*- 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
*
* 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
* 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 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 jvmmgr_h___
#define jvmmgr_h___
#include "prtypes.h"
#include "jni.h"
#include "jsdbgapi.h"
#include "nsError.h"
#include "nsISecurityContext.h"
struct nsJVMManager;
typedef enum nsJVMStatus {
nsJVMStatus_Enabled, /* but not Running */
nsJVMStatus_Disabled, /* explicitly disabled */
nsJVMStatus_Running, /* enabled and started */
nsJVMStatus_Failed /* enabled but failed to start */
} nsJVMStatus;
/*******************************************************************************
* Interface for C Clients
******************************************************************************/
PR_BEGIN_EXTERN_C
PR_EXTERN(void)
JVM_ReleaseJVMMgr(struct nsJVMManager* mgr);
PR_EXTERN(nsJVMStatus)
JVM_StartupJVM(void);
PR_EXTERN(nsJVMStatus)
JVM_ShutdownJVM(void);
PR_EXTERN(nsJVMStatus)
JVM_GetJVMStatus(void);
PR_EXTERN(PRBool)
JVM_AddToClassPath(const char* dirPath);
PR_EXTERN(void)
JVM_ShowConsole(void);
PR_EXTERN(void)
JVM_HideConsole(void);
PR_EXTERN(PRBool)
JVM_IsConsoleVisible(void);
PR_EXTERN(void)
JVM_PrintToConsole(const char* msg);
PR_EXTERN(void)
JVM_ShowPrefsWindow(void);
PR_EXTERN(void)
JVM_HidePrefsWindow(void);
PR_EXTERN(PRBool)
JVM_IsPrefsWindowVisible(void);
PR_EXTERN(void)
JVM_StartDebugger(void);
PR_EXTERN(JNIEnv*)
JVM_GetJNIEnv(void);
PR_IMPLEMENT(void)
JVM_ReleaseJNIEnv(JNIEnv *pJNIEnv);
PR_EXTERN(nsresult)
JVM_SpendTime(PRUint32 timeMillis);
PR_EXTERN(PRBool)
JVM_MaybeStartupLiveConnect(void);
PR_EXTERN(PRBool)
JVM_MaybeShutdownLiveConnect(void);
PR_EXTERN(PRBool)
JVM_IsLiveConnectEnabled(void);
PR_EXTERN(nsJVMStatus)
JVM_ShutdownJVM(void);
PR_EXTERN(PRBool)
JVM_NSISecurityContextImplies(JSStackFrame *pCurrentFrame, const char* target, const char* action);
PR_EXTERN(JSPrincipals*)
JVM_GetJavaPrincipalsFromStack(JSStackFrame *pCurrentFrame);
PR_EXTERN(void *)
JVM_GetJavaPrincipalsFromStackAsNSVector(JSStackFrame *pCurrentFrame);
PR_EXTERN(JSStackFrame**)
JVM_GetStartJSFrameFromParallelStack(void);
PR_EXTERN(JSStackFrame*)
JVM_GetEndJSFrameFromParallelStack(JSStackFrame *pCurrentFrame);
PR_EXTERN(nsISecurityContext*)
JVM_GetJSSecurityContext();
PR_END_EXTERN_C
#endif /* jvmmgr_h___ */

Просмотреть файл

@ -1,427 +0,0 @@
/* -*- 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
*
* 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
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Pierre Phaneuf <pp@ludusdesign.com>
*
* 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 ***** */
#include "prthread.h"
#include "nsJVMManager.h"
#include "nsIPluginInstancePeer2.h"
#include "ProxyJNI.h"
#include "lcglue.h"
#include "nscore.h"
#include "nsIScriptContext.h"
#include "nsISecurityContext.h"
#include "nsCSecurityContext.h"
#include "nsCRT.h"
#include "nsIServiceManager.h"
#include "nsIScriptSecurityManager.h"
#include "nsNetUtil.h"
#include "nsDOMJSUtils.h"
static NS_DEFINE_CID(kJVMManagerCID, NS_JVMMANAGER_CID);
extern "C" int XP_PROGRESS_STARTING_JAVA;
extern "C" int XP_PROGRESS_STARTING_JAVA_DONE;
extern "C" int XP_JAVA_NO_CLASSES;
extern "C" int XP_JAVA_GENERAL_FAILURE;
extern "C" int XP_JAVA_STARTUP_FAILED;
extern "C" int XP_JAVA_DEBUGGER_FAILED;
/**
* Template based Thread Local Storage.
*/
template <class T>
class ThreadLocalStorage {
public:
ThreadLocalStorage(PRThreadPrivateDTOR dtor) : mIndex(0), mValid(PR_FALSE)
{
mValid = (PR_NewThreadPrivateIndex(&mIndex, dtor) == PR_SUCCESS);
}
void set(T value)
{
if (mValid) PR_SetThreadPrivate(mIndex, value);
}
T get()
{
return (T) (mValid ? PR_GetThreadPrivate(mIndex) : 0);
}
private:
PRUintn mIndex;
PRBool mValid;
};
static void detach_JVMContext(void* storage)
{
JVMContext* context = reinterpret_cast<JVMContext*>(storage);
JNIEnv* proxyEnv = context->proxyEnv;
if (proxyEnv != NULL) {
DeleteProxyJNI(proxyEnv);
context->proxyEnv = NULL;
}
delete context;
}
JVMContext* GetJVMContext()
{
/* Use NSPR thread private data to manage the per-thread JNIEnv* association. */
static ThreadLocalStorage<JVMContext*> localContext((PRThreadPrivateDTOR)&detach_JVMContext);
JVMContext* context = localContext.get();
if (context == NULL) {
context = new JVMContext;
context->proxyEnv = NULL;
context->jsj_env = NULL;
localContext.set(context);
}
return context;
}
////////////////////////////////////////////////////////////////////////////////
// LiveConnect callbacks
////////////////////////////////////////////////////////////////////////////////
JS_BEGIN_EXTERN_C
#include "jscntxt.h"
static JSContext*
map_jsj_thread_to_js_context_impl(JSJavaThreadState *jsj_env, void* java_applet_obj, JNIEnv *env, char **errp)
{
// Guess what? This design is totally invalid under Gecko, because there isn't a 1 to 1 mapping
// between NSPR threads and JSContexts. We have to ask the plugin instance peer what JSContext
// it lives in to make any sense of all this.
JSContext* context = NULL;
if (java_applet_obj != NULL) {
nsIPluginInstance* pluginInstance = reinterpret_cast<nsIPluginInstance*>(java_applet_obj);
nsIPluginInstancePeer* pluginPeer = NULL;
if (pluginInstance->GetPeer(&pluginPeer) == NS_OK) {
nsIPluginInstancePeer2* pluginPeer2 = NULL;
if (pluginPeer->QueryInterface(NS_GET_IID(nsIPluginInstancePeer2), (void**) &pluginPeer2) == NS_OK) {
pluginPeer2->GetJSContext(&context);
NS_RELEASE(pluginPeer2);
}
NS_RELEASE(pluginPeer);
}
}
return context;
}
/*
** This callback is called to map a JSContext to a JSJavaThreadState which
** is a wrapper around JNIEnv. Hence this callback essentially maps a JSContext
** to a java thread. JSJ_AttachCurrentThreadToJava just calls AttachCurrentThread
** on the java vm.
*/
static JSJavaThreadState*
map_js_context_to_jsj_thread_impl(JSContext *cx, char **errp)
{
*errp = NULL;
// FIXME: how do we ever break the association between the jsj_env and the
// JVMContext? This needs to be figured out. Otherwise, we'll end up with the
// same dangling JSContext problem we are trying to weed out.
JVMContext* context = GetJVMContext();
JSJavaThreadState* jsj_env = context->jsj_env;
if (jsj_env != NULL)
return jsj_env;
JSJavaVM* js_jvm = NULL;
nsresult rv;
nsCOMPtr<nsIJVMManager> managerService = do_GetService(kJVMManagerCID, &rv);
if (NS_FAILED(rv)) return NULL;
nsJVMManager* pJVMMgr = (nsJVMManager*) managerService.get();
if (pJVMMgr != NULL) {
js_jvm = pJVMMgr->GetJSJavaVM();
if (js_jvm == NULL) {
*errp = strdup("Failed to attach to a Java VM.");
return NULL;
}
}
jsj_env = JSJ_AttachCurrentThreadToJava(js_jvm, NULL, NULL);
context->jsj_env = jsj_env;
return jsj_env;
}
/*
** This callback is called in JSObject.getWindow implementation to get
** a java wrapper JSObject class for a applet only once.
** Note that once a mapping between applet -> javascript JSObject -> Java wrapper JSObject
** is made, all subsequent method calls via JSObject use the internal field
** to get to the javascript JSObject.
*/
static JSObject*
map_java_object_to_js_object_impl(JNIEnv *env, void *pluginInstancePtr, char* *errp)
{
JSObject *window = NULL;
PRBool mayscript = PR_FALSE;
PRBool jvmMochaPrefsEnabled = PR_TRUE;
nsresult err = NS_OK;
*errp = NULL;
if (pluginInstancePtr == NULL) {
env->ThrowNew(env->FindClass("java/lang/NullPointerException"), "plugin instance is NULL");
return NULL;
}
//TODO: Check if Mocha is enabled. To get to any mocha api, we should use service
// manager and get to the appropriate service.
// jvmMochaPrefsEnabled = LM_GetMochaEnabled();
if (!jvmMochaPrefsEnabled) {
*errp = strdup("JSObject.getWindow() failed: java preference is disabled");
return NULL;
}
/*
* Check for the mayscript tag.
*/
nsIPluginInstance* pluginInstance = reinterpret_cast<nsIPluginInstance*>(pluginInstancePtr);
nsIPluginInstancePeer* pluginPeer;
if (pluginInstance->GetPeer(&pluginPeer) == NS_OK) {
nsIJVMPluginTagInfo* tagInfo;
if (pluginPeer->QueryInterface(NS_GET_IID(nsIJVMPluginTagInfo), (void**) &tagInfo) == NS_OK) {
err = tagInfo->GetMayScript(&mayscript);
// PR_ASSERT(err != NS_OK ? mayscript == PR_FALSE : PR_TRUE);
NS_RELEASE(tagInfo);
}
if ( !mayscript ) {
*errp = strdup("JSObject.getWindow() requires mayscript attribute on this Applet");
} else {
nsIPluginInstancePeer2* pluginPeer2 = nsnull;
if (pluginPeer->QueryInterface(NS_GET_IID(nsIPluginInstancePeer2),
(void**) &pluginPeer2) == NS_OK) {
err = pluginPeer2->GetJSWindow(&window);
NS_RELEASE(pluginPeer2);
}
}
NS_RELEASE(pluginPeer);
}
//TODO: Get to the window object using DOM.
// window = getDOMWindow().getScriptOwner().getJSObject().
return window;
}
static JSPrincipals*
get_JSPrincipals_from_java_caller_impl(JNIEnv *pJNIEnv, JSContext *pJSContext, void **ppNSIPrincipalArrayIN, int numPrincipals, void *pNSISecurityContext)
{
nsresult rv;
nsCOMPtr<nsIScriptSecurityManager> secMan =
do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv);
if (NS_FAILED(rv))
return NULL;
nsCOMPtr<nsIPrincipal> principal;
rv = secMan->GetPrincipalFromContext(pJSContext,
getter_AddRefs(principal));
if (NS_FAILED(rv))
return NULL;
JSPrincipals* jsprincipals = NULL;
principal->GetJSPrincipals(pJSContext, &jsprincipals);
return jsprincipals;
}
static jobject
get_java_wrapper_impl(JNIEnv *pJNIEnv, lcjsobject a_jsobject)
{
nsresult err = NS_OK;
jobject pJSObjectWrapper = NULL;
nsCOMPtr<nsIJVMManager> managerService = do_GetService(kJVMManagerCID, &err);
if (NS_FAILED(err)) return NULL;
nsJVMManager* pJVMMgr = (nsJVMManager *)managerService.get();
if (pJVMMgr != NULL) {
nsIJVMPlugin* pJVMPI = pJVMMgr->GetJVMPlugin();
if (pJVMPI != NULL) {
err = pJVMPI->GetJavaWrapper(pJNIEnv, a_jsobject, &pJSObjectWrapper);
}
}
if ( err != NS_OK )
{
return NULL;
}
return pJSObjectWrapper;
}
static lcjsobject
unwrap_java_wrapper_impl(JNIEnv *pJNIEnv, jobject java_wrapper)
{
lcjsobject obj = 0;
nsresult err = NS_OK;
nsCOMPtr<nsIJVMManager> managerService = do_GetService(kJVMManagerCID, &err);
if (NS_FAILED(err)) return 0;
nsJVMManager* pJVMMgr = (nsJVMManager *)managerService.get();
if (pJVMMgr != NULL) {
nsIJVMPlugin* pJVMPI = pJVMMgr->GetJVMPlugin();
if (pJVMPI != NULL) {
err = pJVMPI->UnwrapJavaWrapper(pJNIEnv, java_wrapper, &obj);
}
}
if ( err != NS_OK )
{
return 0;
}
return obj;
}
static JSBool
enter_js_from_java_impl(JNIEnv *jEnv, char **errp,
void **pNSIPrincipaArray, int numPrincipals,
void *pNSISecurityContext,
void *java_applet_obj)
{
return PR_TRUE;
}
static void
exit_js_impl(JNIEnv *jEnv, JSContext *cx)
{
// The main idea is to execute terminate function if have any;
if (cx)
{
nsIScriptContext *scriptContext = GetScriptContextFromJSContext(cx);
if (scriptContext)
{
scriptContext->ScriptEvaluated(PR_TRUE);
}
}
return;
}
static PRBool
create_java_vm_impl(SystemJavaVM* *jvm, JNIEnv* *initialEnv, void* initargs)
{
// const char* classpath = (const char*)initargs;
nsCOMPtr<nsIJVMManager> serv = do_GetService(kJVMManagerCID);
if (!serv)
return PR_FALSE;
*initialEnv = JVM_GetJNIEnv();
if (!*initialEnv)
return PR_FALSE;
// serv will be released when this function returns, but that's OK because
// the XPCOM service manager will keep it alive.
*jvm = reinterpret_cast<SystemJavaVM*>(serv.get());
return PR_TRUE;
}
static PRBool
destroy_java_vm_impl(SystemJavaVM* jvm, JNIEnv* initialEnv)
{
JVM_ReleaseJNIEnv(initialEnv);
// need to release jvm
return PR_TRUE;
}
static JNIEnv*
attach_current_thread_impl(SystemJavaVM* jvm)
{
return JVM_GetJNIEnv();
}
static PRBool
detach_current_thread_impl(SystemJavaVM* jvm, JNIEnv* env)
{
JVM_ReleaseJNIEnv(env);
return PR_TRUE;
}
static SystemJavaVM*
get_java_vm_impl(JNIEnv* env)
{
// only one SystemJavaVM for the whole browser, so it doesn't depend on env
nsresult rv;
nsCOMPtr<nsIJVMManager> managerService = do_GetService(kJVMManagerCID, &rv);
if (NS_FAILED(rv)) return NULL;
SystemJavaVM* jvm = reinterpret_cast<SystemJavaVM*>(managerService.get());
return jvm;
}
JS_END_EXTERN_C
static JSJCallbacks jsj_callbacks = {
map_jsj_thread_to_js_context_impl,
map_js_context_to_jsj_thread_impl,
map_java_object_to_js_object_impl,
get_JSPrincipals_from_java_caller_impl,
enter_js_from_java_impl,
exit_js_impl,
NULL, // error_print
get_java_wrapper_impl,
unwrap_java_wrapper_impl,
create_java_vm_impl,
destroy_java_vm_impl,
attach_current_thread_impl,
detach_current_thread_impl,
get_java_vm_impl
};
void
JVM_InitLCGlue(void)
{
JSJ_Init(&jsj_callbacks);
}
////////////////////////////////////////////////////////////////////////////////
/*
TODO:Tom Pixley.
APIs required from Tom Pixley.
o LM_LockJS(errp); Grab the mocha lock before doing any liveconect stuff.
This is because layers above JS engine including liveconnect
DLL itself are not thread safe.
o LM_UnlockJS()
o LM_GetMochaEnabled() Check to see if Mocha is enabled.
o LM_GetCrippledContext(). Get to a pre-created crippled context. All spontaneous
Java calls map into one crippled context.
o ET_InitMoja(0) != LM_MOJA_OK: This tells if moja initialization went ok.
o LM_GetJSPrincipalsFromJavaCaller : Wrap a nsIPrincipal array object to get back a JSPrincipals data struct.
o LM_CanAccessTargetStr This code is used to figure out if access is allowed. It is used during security
stack walking. The tricky thing is that we need to set the start frame into
TLS before calling this code.
Look into nsCSecurityContext::Implies
*/

Просмотреть файл

@ -1,61 +0,0 @@
/* -*- 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
*
* 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
* 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 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 lcglue_h___
#define lcglue_h___
#include "prtypes.h"
#include "jni.h"
#include "jsdbgapi.h"
#include "nsError.h"
#include "nsIJVMThreadManager.h"
#include "nsISecurityContext.h"
/**
* JVMContext is maintained as thread local storage. The current thread's
* context is accessed by calling GetJVMContext().
*/
struct JVMContext {
JNIEnv *proxyEnv; /* thread local proxy JNI */
JSJavaThreadState *jsj_env; /* thread local JavaScript execution env. */
};
JVMContext* GetJVMContext();
void JVM_InitLCGlue(void); // in lcglue.cpp
#endif /* lcglue_h___ */

Просмотреть файл

@ -1,75 +0,0 @@
/* -*- 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
*
* 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
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Pierre Phaneuf <pp@ludusdesign.com>
*
* 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 ***** */
#include "nsIModule.h"
#include "nsIGenericFactory.h"
#include "nsJVMManager.h"
#include "nsJVMConfigManager.h"
#ifdef XP_UNIX
#include "nsJVMConfigManagerUnix.h"
#endif
/*
* Note: In revision 1.17 of this file (and earlier) there was a
* commented out implementation of nsCJVMManagerFactory, a hand-crafted
* implementation of nsIFactory.
*/
#ifdef XP_UNIX
NS_GENERIC_FACTORY_CONSTRUCTOR(nsJVMConfigManagerUnix)
#endif
NS_GENERIC_AGGREGATED_CONSTRUCTOR(nsJVMManager)
// The list of components we register
static const nsModuleComponentInfo components[] =
{
{ "JVM Manager Service",
NS_JVMMANAGER_CID,
"@mozilla.org/oji/jvm-mgr;1",
nsJVMManagerConstructor
},
#ifdef XP_UNIX
{ "JVM Config Manager",
NS_JVMCONFIGMANAGER_CID,
"@mozilla.org/oji/jvm-config-mgr;1",
nsJVMConfigManagerUnixConstructor
},
#endif
};
NS_IMPL_NSGETMODULE(nsCJVMManagerModule, components)

Просмотреть файл

@ -1,70 +0,0 @@
/* -*- 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
*
* 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 part of the mozilla.org LDAP XPCOM SDK.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Xiaobin Lu <Xiaobin.Lu@eng.Sun.com>
*
* 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 ***** */
#include "nsCNullSecurityContext.h"
#include "nsString.h"
NS_IMPL_ISUPPORTS1(nsCNullSecurityContext, nsISecurityContext)
NS_IMETHODIMP nsCNullSecurityContext::Implies(const char* target, const char* action, PRBool* bActionAllowed)
{
/* Avoid security check, returns true always */
*bActionAllowed = PR_TRUE;
return NS_OK;
}
NS_IMETHODIMP nsCNullSecurityContext::GetOrigin(char* buf, int len)
{
if (buf == NULL)
return NS_ERROR_NULL_POINTER;
const char origin[] = "file:///";
PRInt32 originLen = (PRInt32) (sizeof(origin) - 1);
if (len <= originLen) {
return NS_ERROR_NULL_POINTER;
}
// Copy origin
memcpy(buf, origin, originLen);
return NS_OK;
}
NS_IMETHODIMP nsCNullSecurityContext::GetCertificateID(char* buf, int len)
{
return NS_ERROR_NOT_IMPLEMENTED;
}

Просмотреть файл

@ -1,100 +0,0 @@
/* -*- 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
*
* 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 part of the mozilla.org LDAP XPCOM SDK.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Xiaobin Lu <Xiaobin.Lu@eng.Sun.com>
*
* 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 ***** */
#ifndef nsCNullSecurityContext_h___
#define nsCNullSecurityContext_h___
#include "nsISecurityContext.h"
class nsCNullSecurityContext : public nsISecurityContext
{
public:
////////////////////////////////////////////////////////////////////////////
// from nsISupports
NS_DECL_ISUPPORTS
////////////////////////////////////////////////////////////////////////
// from nsISecurityContext:
/**
* Get the security context to be used in LiveConnect.
* This is used for JavaScript <--> Java.
*
* @param target -- Possible target.
* @param action -- Possible action on the target.
* @return -- NS_OK if the target and action is permitted
* -- NS_FALSE otherwise.
*/
NS_IMETHOD Implies(const char* target, const char* action,
PRBool* bActionAllowed);
/**
* Get the origin associated with the context.
*
* @param buf -- Result buffer (managed by the caller.)
* @param len -- Buffer length.
* @return -- NS_OK if the codebase string was obtained.
* -- NS_FALSE otherwise.
*/
NS_IMETHOD GetOrigin(char* buf, int len);
/**
* Get the certificate associated with the context.
*
* @param buf -- Result buffer (managed by the caller.)
* @param len -- Buffer length.
* @return -- NS_OK if the codebase string was obtained.
* -- NS_FALSE otherwise.
*/
NS_IMETHOD GetCertificateID(char* buf, int len);
//////////////////////////////////////////////////////////////////////
// from nsISecureJNI:
nsCNullSecurityContext() { }
};
#endif // CSecurityContext_h___

Просмотреть файл

@ -1,257 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
/*
*
* It contains the implementation providing nsISecurityCOntext XP-COM interface.
* This file snapshots a JS frame before entering into java.
*
*/
#include <stdlib.h>
#include <string.h>
#include "prtypes.h"
#include "jscntxt.h"
#include "jsdbgapi.h"
#include "nsCSecurityContext.h"
#include "nsIScriptContext.h"
#include "jvmmgr.h"
#include "jsjava.h"
// For GetOrigin()
#include "nsIScriptSecurityManager.h"
#include "nsIServiceManager.h"
#include "nsCRT.h"
#include "nsTraceRefcnt.h"
static NS_DEFINE_IID(kISecurityContextIID, NS_ISECURITYCONTEXT_IID);
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
////////////////////////////////////////////////////////////////////////////
// nsISupports
NS_IMPL_ISUPPORTS1(nsCSecurityContext, nsISecurityContext)
////////////////////////////////////////////////////////////////////////////
// nsISecurityContext
NS_METHOD
nsCSecurityContext::Implies(const char* target, const char* action, PRBool *bAllowedAccess)
{
if(!bAllowedAccess) {
return NS_ERROR_FAILURE;
}
if(!nsCRT::strcmp(target,"UniversalBrowserRead")) {
// XXX we lie to the applet and say we have UniversalBrowserRead
// even if we don't so that we can bypass the Java plugin's broken
// origin checks. Note that this only affects the plugin's perception
// of our script's capabilities, and has no bearing on the script's
// real capabilities. This code should be changed to assign
// |m_HasUniversalBrowserReadCapability| into the out parameter
// once Java's origin checking code is fixed.
// See bug 146458 for details.
if (JSJ_IsJSCallApplet()) {
*bAllowedAccess = PR_TRUE;
}
else {
*bAllowedAccess = m_HasUniversalBrowserReadCapability;
}
} else if(!nsCRT::strcmp(target,"UniversalJavaPermission")) {
*bAllowedAccess = m_HasUniversalJavaCapability;
} else {
*bAllowedAccess = PR_FALSE;
}
return NS_OK;
}
NS_METHOD
nsCSecurityContext::GetOrigin(char* buf, int buflen)
{
if (!m_pPrincipal) {
// Get the Script Security Manager.
nsresult rv = NS_OK;
nsCOMPtr<nsIScriptSecurityManager> secMan =
do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv);
if (NS_FAILED(rv) || !secMan) {
return NS_ERROR_FAILURE;
}
secMan->GetSubjectPrincipal(getter_AddRefs(m_pPrincipal));
if (!m_pPrincipal) {
return NS_ERROR_FAILURE;
}
}
nsXPIDLCString origin;
m_pPrincipal->GetOrigin(getter_Copies(origin));
PRInt32 originlen = origin.Length();
if (origin.IsEmpty() || originlen > buflen - 1) {
return NS_ERROR_FAILURE;
}
// Copy the string into to user supplied buffer. Is there a better
// way to do this?
memcpy(buf, origin, originlen);
buf[originlen] = nsnull; // Gotta terminate it.
return NS_OK;
}
NS_METHOD
nsCSecurityContext::GetCertificateID(char* buf, int buflen)
{
nsCOMPtr<nsIPrincipal> principal;
// Get the Script Security Manager.
nsresult rv = NS_OK;
nsCOMPtr<nsIScriptSecurityManager> secMan =
do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv);
if (NS_FAILED(rv) || !secMan) return NS_ERROR_FAILURE;
secMan->GetSubjectPrincipal(getter_AddRefs(principal));
if (!principal) {
return NS_ERROR_FAILURE;
}
nsCAutoString certificate;
principal->GetFingerprint(certificate);
PRInt32 certlen = certificate.Length();
if (buflen <= certlen) {
return NS_ERROR_FAILURE;
}
memcpy(buf, certificate.get(), certlen);
buf[certlen] = nsnull;
return NS_OK;
}
////////////////////////////////////////////////////////////////////////////
// from nsCSecurityContext:
extern PRUintn tlsIndex3_g;
nsCSecurityContext::nsCSecurityContext(JSContext* cx)
: m_pJStoJavaFrame(NULL), m_pJSCX(cx),
m_pPrincipal(NULL),
m_HasUniversalJavaCapability(PR_FALSE),
m_HasUniversalBrowserReadCapability(PR_FALSE)
{
MOZ_COUNT_CTOR(nsCSecurityContext);
// Get the Script Security Manager.
nsresult rv = NS_OK;
nsCOMPtr<nsIScriptSecurityManager> secMan =
do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv);
if (NS_FAILED(rv) || !secMan) return;
nsCOMPtr<nsIPrincipal> principal;
if (NS_FAILED(secMan->GetSubjectPrincipal(getter_AddRefs(principal))))
// return;
; // Don't return here because the security manager returns
// NS_ERROR_FAILURE when there is no subject principal. In
// that case we are not done.
nsCOMPtr<nsIPrincipal> sysprincipal;
if (NS_FAILED(secMan->GetSystemPrincipal(getter_AddRefs(sysprincipal))))
return;
// Do early evaluation of "UniversalJavaPermission" capability.
PRBool equals;
if (!principal ||
NS_SUCCEEDED(principal->Equals(sysprincipal, &equals)) && equals) {
// We have native code or the system principal: just allow general access
m_HasUniversalBrowserReadCapability = PR_TRUE;
m_HasUniversalJavaCapability = PR_TRUE;
}
else {
// Otherwise, check with the js security manager.
secMan->IsCapabilityEnabled("UniversalBrowserRead",&m_HasUniversalBrowserReadCapability);
secMan->IsCapabilityEnabled("UniversalJavaPermission",&m_HasUniversalJavaCapability);
}
}
nsCSecurityContext::nsCSecurityContext(nsIPrincipal *principal)
: m_pJStoJavaFrame(NULL), m_pJSCX(NULL),
m_pPrincipal(principal),
m_HasUniversalJavaCapability(PR_FALSE),
m_HasUniversalBrowserReadCapability(PR_FALSE)
{
MOZ_COUNT_CTOR(nsCSecurityContext);
// Get the Script Security Manager.
nsresult rv = NS_OK;
nsCOMPtr<nsIScriptSecurityManager> secMan =
do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv);
if (NS_FAILED(rv) || !secMan) return;
nsCOMPtr<nsIPrincipal> sysprincipal;
if (NS_FAILED(secMan->GetSystemPrincipal(getter_AddRefs(sysprincipal))))
return;
// Do early evaluation of "UniversalJavaPermission" capability.
if (!m_pPrincipal || m_pPrincipal == sysprincipal) {
// We have native code or the system principal: just allow general access
m_HasUniversalBrowserReadCapability = PR_TRUE;
m_HasUniversalJavaCapability = PR_TRUE;
}
else {
// Otherwise, check with the js security manager.
secMan->IsCapabilityEnabled("UniversalBrowserRead",&m_HasUniversalBrowserReadCapability);
secMan->IsCapabilityEnabled("UniversalJavaPermission",&m_HasUniversalJavaCapability);
}
}
nsCSecurityContext::~nsCSecurityContext()
{
MOZ_COUNT_DTOR(nsCSecurityContext);
}

Просмотреть файл

@ -1,117 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
/*
*
* It contains the class definition to implement nsISecurityContext XP-COM interface.
*
*/
#ifndef nsCSecurityContext_h___
#define nsCSecurityContext_h___
#include "jscntxt.h"
#include "jsdbgapi.h"
#include "nsISecurityContext.h"
#include "nsIPrincipal.h"
#include "nsCOMPtr.h"
struct JSContext;
/**
* nsCSecurityContext implements nsISecurityContext interface for navigator.
* This is used by a JVM to implement netscape.javascript.JSObject functionality.
*/
class nsCSecurityContext :public nsISecurityContext {
public:
////////////////////////////////////////////////////////////////////////////
// from nsISupports
NS_DECL_ISUPPORTS
////////////////////////////////////////////////////////////////////////////
// from nsISecurityContext:
/**
* Get the security context to be used in LiveConnect.
* This is used for JavaScript <--> Java.
*
* @param target -- Possible target.
* @param action -- Possible action on the target.
* @return -- NS_OK if the target and action is permitted on the security context.
* -- NS_FALSE otherwise.
*/
NS_IMETHOD Implies(const char* target, const char* action, PRBool *bAllowedAccess);
/**
* Get the code base of the subject (caller).
*
* @param buf -- Result buffer.
* @param len -- Buffer length.
* @return -- NS_OK if the codebase string was obtained.
* -- NS_FALSE otherwise.
*/
NS_IMETHOD GetOrigin(char* buf, int len);
/**
* Get the certificate thumbprint of the subject (caller).
*
* @param buf -- Result buffer.
* @param len -- Buffer length.
* @return -- NS_OK if the codebase string was obtained.
* -- NS_FALSE otherwise.
*/
NS_IMETHOD GetCertificateID(char* buf, int len);
////////////////////////////////////////////////////////////////////////////
// from nsCSecurityContext:
nsCSecurityContext(JSContext* cx);
nsCSecurityContext(nsIPrincipal* principal);
virtual ~nsCSecurityContext(void);
protected:
JSStackFrame *m_pJStoJavaFrame;
JSContext *m_pJSCX;
private:
nsCOMPtr<nsIPrincipal> m_pPrincipal;
PRBool m_HasUniversalJavaCapability;
PRBool m_HasUniversalBrowserReadCapability;
};
#endif // nsCSecurityContext_h___

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,119 +0,0 @@
/* -*- 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
*
* 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 Sun Microsystems.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Pete Zha <pete.zha@sun.com> (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 ***** */
#include "nsJVMConfigManager.h"
NS_IMPL_ISUPPORTS1(nsJVMConfig, nsIJVMConfig)
nsJVMConfig::nsJVMConfig(const nsAString& aVersion, const nsAString& aType,
const nsAString& aOS, const nsAString& aArch,
nsIFile* aPath, nsIFile* aMozillaPluginPath,
const nsAString& aDescription) :
mVersion(aVersion),
mType(aType),
mOS(aOS),
mArch(aArch),
mPath(aPath),
mMozillaPluginPath(aMozillaPluginPath),
mDescription(aDescription)
{
}
nsJVMConfig::~nsJVMConfig()
{
}
/* readonly attribute AString version; */
NS_IMETHODIMP
nsJVMConfig::GetVersion(nsAString & aVersion)
{
aVersion = mVersion;
return NS_OK;
}
/* readonly attribute AString type; */
NS_IMETHODIMP
nsJVMConfig::GetType(nsAString & aType)
{
aType = mType;
return NS_OK;
}
/* readonly attribute AString os; */
NS_IMETHODIMP
nsJVMConfig::GetOS(nsAString & aOS)
{
aOS = mOS;
return NS_OK;
}
/* readonly attribute AString arch; */
NS_IMETHODIMP
nsJVMConfig::GetArch(nsAString & aArch)
{
aArch = mArch;
return NS_OK;
}
NS_IMETHODIMP
nsJVMConfig::GetPath(nsIFile** aPath)
{
NS_ENSURE_ARG_POINTER(aPath);
*aPath = mPath;
NS_IF_ADDREF(*aPath);
return NS_OK;
}
NS_IMETHODIMP
nsJVMConfig::GetMozillaPluginPath(nsIFile** aMozillaPluginPath)
{
NS_ENSURE_ARG_POINTER(aMozillaPluginPath);
*aMozillaPluginPath = mMozillaPluginPath;
NS_IF_ADDREF(*aMozillaPluginPath);
return NS_OK;
}
/* readonly attribute AString description; */
NS_IMETHODIMP
nsJVMConfig::GetDescription(nsAString & aDescription)
{
aDescription = mDescription;
return NS_OK;
}

Просмотреть файл

@ -1,68 +0,0 @@
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 Sun Microsystems.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Pete Zha <pete.zha@sun.com> (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 ***** */
#ifndef nsJVMConfigManager_h___
#define nsJVMConfigManager_h___
#include "nsIJVMConfigManager.h"
#include "nsString.h"
#include "nsIFile.h"
class nsJVMConfig : public nsIJVMConfig
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIJVMCONFIG
nsJVMConfig(const nsAString& aVersion, const nsAString& aType,
const nsAString& aOS, const nsAString& aArch,
nsIFile* aPath, nsIFile* aMozillaPluginPath,
const nsAString& aDescription);
virtual ~nsJVMConfig();
/* additional members */
protected:
nsString mVersion;
nsString mType;
nsString mOS;
nsString mArch;
nsCOMPtr<nsIFile> mPath;
nsCOMPtr<nsIFile> mMozillaPluginPath;
nsString mDescription;
};
#endif // nsJVMConfigManager_h___

Просмотреть файл

@ -1,664 +0,0 @@
/* -*- 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
*
* 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 Sun Microsystems.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Pete Zha <pete.zha@sun.com> (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 ***** */
#include <stdlib.h>
#include "nsJVMConfigManagerUnix.h"
#include "nsAppDirectoryServiceDefs.h"
#include "nsDirectoryServiceDefs.h"
#include "nsIPrefService.h"
#include "nsIPrefBranch.h"
#include "nsReadableUtils.h"
#include "nsIMutableArray.h"
#include "prprf.h"
#include "nsNetCID.h"
#include "nsIHttpProtocolHandler.h"
#include "nsIVariant.h"
#include "nsISimpleEnumerator.h"
#include <stdio.h> /* OSF/1 requires this before grp.h, so put it first */
#include <unistd.h>
#define NS_COMPILER_GNUC3 defined(__GXX_ABI_VERSION) && \
(__GXX_ABI_VERSION >= 102) /* G++ V3 ABI */
// Implementation of nsJVMConfigManagerUnix
NS_IMPL_ISUPPORTS1(nsJVMConfigManagerUnix, nsIJVMConfigManager)
nsJVMConfigManagerUnix::nsJVMConfigManagerUnix()
{
InitJVMConfigList();
}
static PRBool
FreeJVMConfig(nsHashKey *aKey, void *aData, void* aClosure)
{
nsJVMConfig* config = static_cast<nsJVMConfig *>(aData);
NS_IF_RELEASE(config);
return PR_TRUE;
}
static PRBool
AppendJVMConfig(nsHashKey *aKey, void *aData, void* aClosure)
{
nsJVMConfig* config = static_cast<nsJVMConfig *>(aData);
nsIMutableArray *array = static_cast<nsIMutableArray *>(aClosure);
NS_ENSURE_TRUE(config && array, PR_FALSE);
array->AppendElement(config, PR_FALSE);
return PR_TRUE;
}
nsJVMConfigManagerUnix::~nsJVMConfigManagerUnix()
{
ClearJVMConfigList();
}
void
nsJVMConfigManagerUnix::ClearJVMConfigList()
{
if (mJVMConfigList.Count() > 0) {
mJVMConfigList.Reset(FreeJVMConfig);
}
}
NS_IMETHODIMP
nsJVMConfigManagerUnix::GetJVMConfigList(nsIArray **_retval)
{
NS_ENSURE_ARG_POINTER(_retval);
ClearJVMConfigList();
InitJVMConfigList();
nsCOMPtr<nsIMutableArray> array =
do_CreateInstance(NS_ARRAY_CONTRACTID);
NS_ENSURE_STATE(array);
if (mJVMConfigList.Count() > 0) {
mJVMConfigList.Enumerate(AppendJVMConfig,
static_cast<void *>(array));
*_retval = static_cast<nsIArray *>(array);
NS_IF_ADDREF(*_retval);
} else
*_retval = nsnull;
return NS_OK;
}
NS_IMETHODIMP
nsJVMConfigManagerUnix::InitJVMConfigList()
{
nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID));
NS_ENSURE_TRUE(prefs, NS_ERROR_FAILURE);
nsCOMPtr<nsILocalFile> globalFile;
prefs->GetComplexValue("java.global_java_version_file",
NS_GET_IID(nsILocalFile),
getter_AddRefs(globalFile));
nsCOMPtr<nsILocalFile> privateFile;
prefs->GetComplexValue("java.private_java_version_file",
NS_GET_IID(nsILocalFile),
getter_AddRefs(privateFile));
nsCOMPtr<nsILineInputStream> globalStream;
nsresult rv = GetLineInputStream(globalFile, getter_AddRefs(globalStream));
NS_ENSURE_TRUE(NS_SUCCEEDED(rv) || rv == NS_ERROR_FILE_NOT_FOUND, rv);
nsCOMPtr<nsILineInputStream> privateStream;
rv = GetLineInputStream(privateFile, getter_AddRefs(privateStream));
NS_ENSURE_TRUE(NS_SUCCEEDED(rv) || rv == NS_ERROR_FILE_NOT_FOUND, rv);
rv = InitJVMConfigList(globalStream, privateStream);
NS_ENSURE_SUCCESS(rv, rv);
// Search for a Java installation in the default install location.
return SearchDefault();
}
NS_IMETHODIMP
nsJVMConfigManagerUnix::SetCurrentJVMConfig(nsIJVMConfig* aJVMConfig)
{
NS_ENSURE_ARG_POINTER(aJVMConfig);
nsCOMPtr<nsIFile> srcFile;
nsresult rv = aJVMConfig->GetMozillaPluginPath(getter_AddRefs(srcFile));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIFile> pluginDir;
rv = NS_GetSpecialDirectory(NS_APP_PLUGINS_DIR, getter_AddRefs(pluginDir));
NS_ENSURE_SUCCESS(rv, rv);
PRBool hasPermission = PR_FALSE;
pluginDir->IsWritable(&hasPermission);
if (!hasPermission) {
return NS_ERROR_FAILURE;
}
nsAutoString fileName;
srcFile->GetLeafName(fileName);
nsCOMPtr<nsILocalFile> destFile(do_QueryInterface(pluginDir));
if (TestExists(destFile, fileName))
destFile->Remove(PR_FALSE);
nsCAutoString srcFileName;
rv = srcFile->GetNativePath(srcFileName);
NS_ENSURE_SUCCESS(rv, rv);
nsCAutoString destFileName;
destFile->GetNativePath(destFileName);
NS_ENSURE_SUCCESS(rv, rv);
PRInt16 result = 0;
result = symlink(srcFileName.get(), destFileName.get());
return result >= 0 ? NS_OK : NS_ERROR_FAILURE;
}
nsresult
nsJVMConfigManagerUnix::InitJVMConfigList(nsILineInputStream* aGlobal,
nsILineInputStream* aPrivate)
{
nsresult rv = NS_OK;
if (aGlobal) {
rv = ParseStream(aGlobal);
NS_ENSURE_SUCCESS(rv, rv);
}
if (aPrivate) {
rv = ParseStream(aPrivate);
NS_ENSURE_SUCCESS(rv, rv);
}
return NS_OK;
}
nsresult
nsJVMConfigManagerUnix::GetLineInputStream(nsIFile* aFile,
nsILineInputStream** _retval)
{
NS_ENSURE_ARG_POINTER(_retval);
nsresult rv = NS_OK;
nsCOMPtr<nsILocalFile> file(do_QueryInterface(aFile, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIFileInputStream>
fileStream(do_CreateInstance(NS_LOCALFILEINPUTSTREAM_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
rv = fileStream->Init(file, -1, -1, PR_FALSE);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsILineInputStream> lineStream(do_QueryInterface(fileStream, &rv));
NS_ENSURE_SUCCESS(rv, rv);
*_retval = lineStream;
NS_IF_ADDREF(*_retval);
return NS_OK;
}
nsresult
nsJVMConfigManagerUnix::ParseStream(nsILineInputStream* aStream)
{
NS_ENSURE_ARG_POINTER(aStream);
PRBool notEOF = PR_TRUE;
nsAutoString lineBuffer;
do {
nsAutoString line;
nsCAutoString cLine;
nsresult rv = aStream->ReadLine(cLine, &notEOF);
NS_ENSURE_SUCCESS(rv, rv);
CopyASCIItoUTF16(cLine, line);
PRInt32 slashOffset, equalsOffset;
slashOffset = line.FindChar('\\');
equalsOffset = line.FindChar('=');
// Since one java installation contains several key/value pair
// and they are separeted by '\'. We need to join them together
// to a single line and then parse it.
if (slashOffset != kNotFound && equalsOffset != kNotFound) {
// This means the line not finished, we need to append it to buffer
lineBuffer.Append(Substring(line, 0, slashOffset));
} else if (slashOffset == kNotFound && equalsOffset != kNotFound) {
// This should the last one of a line. Append it to line
// and then we can Parse it and get necessary information
lineBuffer.Append(line);
ParseLine(lineBuffer);
} else {
// Start of a new line
lineBuffer.Truncate();
}
} while (notEOF);
return NS_OK;
}
nsresult
nsJVMConfigManagerUnix::ParseLine(nsAString& aLine)
{
#if (NS_COMPILER_GNUC3)
nsAutoString compiler;
GetValueFromLine(aLine, "compiler", compiler);
NS_ENSURE_TRUE(compiler.Find("gcc32") != kNotFound, NS_OK);
#endif
nsAutoString version;
GetValueFromLine(aLine, "version", version);
nsAutoString type;
GetValueFromLine(aLine, "type", type);
nsAutoString os;
GetValueFromLine(aLine, "os", os);
nsAutoString arch;
GetValueFromLine(aLine, "arch", arch);
nsAutoString pathStr;
GetValueFromLine(aLine, "path", pathStr);
nsAutoString mozillaPluginPath;
GetMozillaPluginPath(aLine, mozillaPluginPath);
NS_ENSURE_TRUE(!mozillaPluginPath.IsEmpty(), NS_OK);
nsAutoString description;
GetValueFromLine(aLine, "description", description);
description.Trim("\"");
// Test whether the plugin file is existing.
nsresult rv = NS_OK;
nsCOMPtr<nsILocalFile>
testPath(do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsAutoString testPathStr(pathStr);
if (type.EqualsLiteral("jdk"))
testPathStr.AppendLiteral("/jre");
testPathStr.Append(mozillaPluginPath);
testPath->InitWithPath(testPathStr);
// If the file doesn't exists, we just return NS_OK
PRBool exists;
testPath->Exists(&exists);
NS_ENSURE_TRUE(exists, NS_OK);
nsCOMPtr<nsIFile> mozPluginPath(do_QueryInterface(testPath, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsILocalFile>
path(do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv));
path->InitWithPath(pathStr);
// We use java home as the key because one home
// will contain only one java installation.
// This could make sure we don't duplicate the config info in the list
nsStringKey key(pathStr);
nsJVMConfig* config = static_cast<nsJVMConfig *>
(mJVMConfigList.Get(&key));
// Only create it and add the config to list if it doesn't exist.
if (!config) {
config = new nsJVMConfig(version, type, os, arch, path,
mozPluginPath, description);
NS_ENSURE_TRUE(config, NS_ERROR_OUT_OF_MEMORY);
mJVMConfigList.Put(&key, static_cast<void *>(config));
NS_ADDREF(config);
}
return NS_OK;
}
nsresult
nsJVMConfigManagerUnix::GetMozillaPluginPath(nsAString& aLine,
nsAString& _retval)
{
nsCAutoString agentVersion;
nsresult rv = GetAgentVersion(agentVersion);
NS_ENSURE_SUCCESS(rv, rv);
// Get mozilla plugin path from key
// mozilla<version>.plugin.path
// <version> should like this: "1.2", "1.3"
nsCAutoString key("mozilla");
key.Append(agentVersion);
key.Append(".plugin.path");
GetValueFromLine(aLine, key.get(), _retval);
if (!_retval.IsEmpty()) return NS_OK;
nsAutoString versionStr;
rv = GetNSVersion(versionStr);
NS_ENSURE_SUCCESS(rv, rv);
key.AssignWithConversion(versionStr);
key.Append(".plugin.path");
GetValueFromLine(aLine, key.get(), _retval);
// Fall back to use ns610.plugin.path if _retval is still empty.
if (_retval.IsEmpty())
GetValueFromLine(aLine, "ns610.plugin.path", _retval);
return NS_OK;
}
nsresult
nsJVMConfigManagerUnix::GetAgentVersion(nsCAutoString& _retval)
{
nsresult rv = NS_OK;
nsCOMPtr<nsIHttpProtocolHandler> http = do_GetService(NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "http", &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCAutoString userAgent;
rv = http->GetUserAgent(userAgent);
NS_ENSURE_SUCCESS(rv, rv);
PRInt32 rvOffset = userAgent.Find("rv:");
if (rvOffset != kNotFound)
_retval.Assign(Substring(userAgent, rvOffset + 3, 3));
return NS_OK;
}
nsresult
nsJVMConfigManagerUnix::GetAgentVersion(float* _retval)
{
NS_ENSURE_ARG_POINTER(_retval);
nsresult rv = NS_OK;
nsCAutoString agentVersion;
GetAgentVersion(agentVersion);
nsCOMPtr <nsIWritableVariant> p =
do_CreateInstance(NS_VARIANT_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
rv = p->SetAsACString(agentVersion);
NS_ENSURE_SUCCESS(rv, rv);
return p->GetAsFloat(_retval);
}
PRBool
nsJVMConfigManagerUnix::GetValueFromLine(nsAString& aLine, const char* aKey,
nsAString& _retval)
{
_retval.Truncate();
nsAutoString line(aLine);
// Find the offset of the given key in the line
PRInt32 keyOffset = line.Find(aKey);
// make sure the key exists in the line.
NS_ENSURE_TRUE(keyOffset != kNotFound, PR_FALSE);
// Find '=' right after the key
PRInt32 equalsOffset = aLine.FindChar('=', keyOffset);
NS_ENSURE_TRUE(equalsOffset != kNotFound, PR_FALSE);
// Find '|' which is the terminal of a pair of key/value
PRInt32 lineOffset = aLine.FindChar('|', equalsOffset);
lineOffset = lineOffset != kNotFound ? lineOffset : aLine.Length();
// OK, we separate the value from the line between '=' and '|'
nsAutoString value(Substring(aLine,
equalsOffset + 1,
lineOffset - equalsOffset -1));
// Removing the leading/trailing spaces
value.Trim(" ");
_retval = value;
return PR_TRUE;
}
nsresult
nsJVMConfigManagerUnix::GetNSVersion(nsAString& _retval)
{
float version;
nsresult rv = GetAgentVersion(&version);
NS_ENSURE_SUCCESS(rv, rv);
// Check mozilla's version
// ns7 is for mozilla1.3 or later
// ns610 is for earlier version of mozilla.
if (version >= 1.3) {
_retval.AssignLiteral("ns7");
} else {
_retval.AssignLiteral("ns610");
}
return NS_OK;
}
nsresult
nsJVMConfigManagerUnix::SearchDefault()
{
#ifdef SPARC
const char* defaultLocationName = "java.default_java_location_solaris";
#else
const char* defaultLocationName = "java.default_java_location_others";
#endif
nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID));
NS_ENSURE_TRUE(prefs, NS_ERROR_FAILURE);
nsXPIDLCString defaultLocationXPIDLValue;
prefs->GetCharPref(defaultLocationName,
getter_Copies(defaultLocationXPIDLValue));
NS_ConvertUTF8toUTF16 defaultLocation(defaultLocationXPIDLValue);
#ifdef SPARC
// On Solaris, the default location is the java home
return AddDirectory(defaultLocation);
#else
// On Linux and other platform,
// the default location can contain multiple java installations
return SearchDirectory(defaultLocation);
#endif
}
nsresult
nsJVMConfigManagerUnix::SearchDirectory(nsAString& aDirName)
{
nsresult rv = NS_OK;
nsCOMPtr<nsILocalFile>
localDir(do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
rv = localDir->InitWithPath(aDirName);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIFile> dir(do_QueryInterface(localDir, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsISimpleEnumerator> entries;
rv = dir->GetDirectoryEntries(getter_AddRefs(entries));
NS_ENSURE_SUCCESS(rv, rv);
PRBool hasMoreElements;
entries->HasMoreElements(&hasMoreElements);
while (hasMoreElements) {
nsCOMPtr<nsISupports> next;
rv = entries->GetNext(getter_AddRefs(next));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIFile> entry(do_QueryInterface(next, &rv));
NS_ENSURE_SUCCESS(rv, rv);
AddDirectory(entry);
entries->HasMoreElements(&hasMoreElements);
}
return NS_OK;
}
nsresult
nsJVMConfigManagerUnix::AddDirectory(nsIFile* aHomeDir)
{
NS_ENSURE_ARG_POINTER(aHomeDir);
nsAutoString homeDirName;
aHomeDir->GetPath(homeDirName);
return AddDirectory(homeDirName);
}
nsresult
nsJVMConfigManagerUnix::AddDirectory(nsAString& aHomeDirName)
{
nsresult rv = NS_OK;
nsAutoString type;
nsAutoString mozillaPluginPath;
nsCOMPtr<nsILocalFile>
testPath(do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
testPath->InitWithPath(aHomeDirName);
testPath->Append(NS_LITERAL_STRING("jre"));
PRBool exists;
testPath->Exists(&exists);
if (exists) {
type.AssignLiteral("jdk");
} else {
type.AssignLiteral("jre");
testPath->InitWithPath(aHomeDirName);
}
testPath->Append(NS_LITERAL_STRING("plugin"));
// Get Arch. "sparc" or "i386"
nsAutoString arch;
NS_ENSURE_TRUE(TestArch(testPath, arch), NS_OK);
// Get NS Version. "ns610" or "ns7"
nsAutoString nsVersion;
NS_ENSURE_TRUE(TestNSVersion(testPath, nsVersion), NS_OK);
nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID));
NS_ENSURE_TRUE(prefs, NS_ERROR_FAILURE);
nsCAutoString javaLibName("java.java_plugin_library_name");
nsXPIDLCString javaLibNameXPIDLValue;
prefs->GetCharPref(javaLibName.get(),
getter_Copies(javaLibNameXPIDLValue));
char* temp = PR_GetLibraryName(nsnull, javaLibNameXPIDLValue.get());
nsCAutoString pluginFileName(temp);
testPath->AppendNative(pluginFileName);
PR_FreeLibraryName(temp);
// If the plugin file doesn't exist, we just return NS_OK
testPath->Exists(&exists);
NS_ENSURE_TRUE(exists, NS_OK);
nsCOMPtr<nsIFile> mozPluginPath(do_QueryInterface(testPath, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsILocalFile>
path(do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
path->InitWithPath(aHomeDirName);
nsAutoString version;
path->GetLeafName(version);
nsStringKey key(aHomeDirName);
nsJVMConfig* config = static_cast<nsJVMConfig *>
(mJVMConfigList.Get(&key));
if (!config) {
config = new nsJVMConfig(version, type, EmptyString(), arch, path,
mozPluginPath, EmptyString());
NS_ENSURE_TRUE(config, NS_ERROR_OUT_OF_MEMORY);
mJVMConfigList.Put(&key, static_cast<void *>(config));
NS_ADDREF(config);
}
return NS_OK;
}
PRBool
nsJVMConfigManagerUnix::TestArch(nsILocalFile* aPluginPath, nsAString& aArch)
{
#ifdef SPARC
aArch.AssignLiteral("sparc");
#else
aArch.AssignLiteral("i386");
#endif
return TestExists(aPluginPath, aArch);
}
PRBool
nsJVMConfigManagerUnix::TestNSVersion(nsILocalFile* aArchPath,
nsAString& aNSVersion)
{
nsAutoString versionStr;
nsresult rv = GetNSVersion(versionStr);
NS_ENSURE_SUCCESS(rv, PR_FALSE);
aNSVersion.Assign(versionStr);
#if (NS_COMPILER_GNUC3)
aNSVersion.AppendLiteral("-gcc32");
#endif
return TestExists(aArchPath, aNSVersion);
}
PRBool
nsJVMConfigManagerUnix::TestExists(nsILocalFile* aBaseDir, nsAString& aSubName)
{
NS_ENSURE_ARG_POINTER(aBaseDir);
aBaseDir->Append(aSubName);
PRBool exists;
aBaseDir->Exists(&exists);
return exists;
}

Просмотреть файл

@ -1,147 +0,0 @@
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 Sun Microsystems.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Pete Zha <pete.zha@sun.com> (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 ***** */
#ifndef nsJVMConfigManagerUnix_h___
#define nsJVMConfigManagerUnix_h___
#include "nsJVMConfigManager.h"
#include "nsString.h"
#include "nsILineInputStream.h"
#include "nsHashtable.h"
#include "nsIFile.h"
#include "nsILocalFile.h"
#include "nsIFileStreams.h"
class nsJVMConfigManagerUnix : public nsIJVMConfigManager
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIJVMCONFIGMANAGER
nsJVMConfigManagerUnix();
virtual ~nsJVMConfigManagerUnix();
protected:
nsresult InitJVMConfigList();
void ClearJVMConfigList();
nsresult InitJVMConfigList(nsILineInputStream* aGlobal,
nsILineInputStream* aPrivate);
/**
* Parse a stream for information about Java installation(s).
*/
nsresult ParseStream(nsILineInputStream* aStream);
/**
* Parse a line for information about a Java installation, and ensure its
* JVMConfig is in our JVMConfigList."
* A line looks like this:
* "version=1.4.2 | type=jre | os=linux | arch=i386 | ......"
*/
nsresult ParseLine(nsAString& aLine);
/**
* Search for Java installations in the default location.
*/
nsresult SearchDefault();
/**
* Search a specific directory to see if there are Java installations.
*/
nsresult SearchDirectory(nsAString& aDirName);
/**
* Add a directory to the Java configuration list if
* it contains a java installation.
*/
nsresult AddDirectory(nsIFile* aHomeDir);
nsresult AddDirectory(nsAString& aHomeDirName);
/**
* Get a value by specific key from the line. A line should look like this:
* key=value | key2=value2 | key3=value3
* Please see the proposal in bug 185000 for more detail about the format.
*/
static PRBool GetValueFromLine(nsAString& aLine, const char* aKey,
nsAString& _retval);
static nsresult GetLineInputStream(nsIFile* aFile,
nsILineInputStream** _retval);
/**
* Get value of mozilla<version>.plugin.path from a line
*/
static nsresult GetMozillaPluginPath(nsAString& aLine, nsAString& _retval);
/**
* Get agent version by string
*/
static nsresult GetAgentVersion(nsCAutoString& _retval);
/**
* Get agent version by float
*/
static nsresult GetAgentVersion(float* _retval);
static nsresult GetNSVersion(nsAString& _retval);
/**
* Check for existing arch directory.
*/
static PRBool TestArch(nsILocalFile* aPluginPath, nsAString& aArch);
/**
* Check for existing NS version directory.
*/
static PRBool TestNSVersion(nsILocalFile* aArchPath, nsAString& aNSVersion);
/**
* Test if a specific node in the base directory exists.
*/
static PRBool TestExists(nsILocalFile* aBaseDir, nsAString& aSubName);
/**
* The table to store the config list.
*/
nsHashtable mJVMConfigList;
};
#endif // nsJVMConfigManagerUnix_h___

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,259 +0,0 @@
/* -*- 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
*
* 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
* 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 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 nsJVMManager_h___
#define nsJVMManager_h___
#include "jvmmgr.h"
#include "prtypes.h"
#include "nscore.h"
#include "jni.h"
#include "jsdbgapi.h"
#include "nsError.h"
#include "nsjvm.h"
#include "nsAgg.h"
#include "jsjava.h"
#include "nsVoidArray.h"
#include "nsILiveConnectManager.h"
#include "nsIObserver.h"
class nsSymantecDebugManager;
class nsIWebBrowserChrome;
/*******************************************************************************
* NsJVMManager is the interface to the JVM manager that the browser sees. All
* files that want to include java services should include this header file.
* nsIJVMManager is the more limited interface what the JVM plugin sees.
******************************************************************************/
struct nsJVMManager : public nsIJVMManager, public nsIJVMThreadManager,
public nsILiveConnectManager, public nsIObserver {
public:
NS_DECL_AGGREGATED
NS_DECL_NSIJVMMANAGER
NS_DECL_NSIOBSERVER
/* from nsIJVMThreadManager: */
/**
* Returns a unique identifier for the "current" system thread.
*/
NS_IMETHOD
GetCurrentThread(PRThread* *threadID);
/**
* Pauses the current thread for the specified number of milliseconds.
* If milli is zero, then merely yields the CPU if another thread of
* greater or equal priority.
*/
NS_IMETHOD
Sleep(PRUint32 milli = 0);
/**
* Creates a unique monitor for the specified address, and makes the
* current system thread the owner of the monitor.
*/
NS_IMETHOD
EnterMonitor(void* address);
/**
* Exits the monitor associated with the address.
*/
NS_IMETHOD
ExitMonitor(void* address);
/**
* Waits on the monitor associated with the address (must be entered already).
* If milli is 0, wait indefinitely.
*/
NS_IMETHOD
Wait(void* address, PRUint32 milli = 0);
/**
* Notifies a single thread waiting on the monitor associated with the address (must be entered already).
*/
NS_IMETHOD
Notify(void* address);
/**
* Notifies all threads waiting on the monitor associated with the address (must be entered already).
*/
NS_IMETHOD
NotifyAll(void* address);
/**
* Creates a new thread, calling the specified runnable's Run method (a la Java).
*/
NS_IMETHOD
CreateThread(PRThread **thread, nsIRunnable* runnable);
/**
* Posts an event to specified thread, calling the runnable from that thread.
* @param threadID thread to call runnable from
* @param runnable object to invoke from thread
* @param async if true, won't block current thread waiting for result
*/
NS_IMETHOD
PostEvent(PRThread *thread, nsIRunnable* runnable, PRBool async);
/* from nsILiveConnectManager: */
/**
* Attempts to start LiveConnect using the specified JSRuntime.
*/
NS_IMETHOD
StartupLiveConnect(JSRuntime* runtime, PRBool& outStarted)
{
outStarted = MaybeStartupLiveConnect();
return NS_OK;
}
/**
* Attempts to stop LiveConnect using the specified JSRuntime.
*/
NS_IMETHOD
ShutdownLiveConnect(JSRuntime* runtime, PRBool& outShutdown)
{
outShutdown = MaybeShutdownLiveConnect();
return NS_OK;
}
/**
* Indicates whether LiveConnect can be used.
*/
NS_IMETHOD
IsLiveConnectEnabled(PRBool& outEnabled)
{
outEnabled = IsLiveConnectEnabled();
return NS_OK;
}
/**
* Initializes a JSContext with the proper LiveConnect support classes.
*/
NS_IMETHOD
InitLiveConnectClasses(JSContext* context, JSObject* globalObject);
/**
* Creates a JavaScript wrapper for a Java object.
*/
NS_IMETHOD
WrapJavaObject(JSContext* context, jobject javaObject, JSObject* *outJSObject);
/* JVMMgr specific methods: */
/* ====> From here on are things only called by the browser, not the plugin... */
NS_IMETHOD
GetClasspathAdditions(const char* *result);
nsIJVMPlugin* GetJVMPlugin(void) { return fJVM; }
/* Unlike the nsIJVMPlugin::StartupJVM, this version handles putting
* up any error dialog: */
nsJVMStatus StartupJVM(void);
nsJVMStatus ShutdownJVM(PRBool fullShutdown = PR_FALSE);
nsJVMStatus GetJVMStatus(void);
void SetJVMEnabled(PRBool enabled);
#if 0
void ReportJVMError(nsresult err);
const char* GetJavaErrorString(JNIEnv* env);
#endif
nsresult AddToClassPath(const char* dirPath);
PRBool MaybeStartupLiveConnect(void);
PRBool MaybeShutdownLiveConnect(void);
PRBool IsLiveConnectEnabled(void);
JSJavaVM* GetJSJavaVM(void) { return fJSJavaVM; }
nsJVMManager(nsISupports* outer);
virtual ~nsJVMManager(void);
protected:
/**
* @return conjure up THE nsIWebBrowserChrome instance from thin
* air!
*/
nsresult GetChrome(nsIWebBrowserChrome **theChrome);
const char* GetJavaErrorString(JRIEnv* env);
nsIJVMPlugin* fJVM;
nsJVMStatus fStatus;
nsISupports* fDebugManager;
JSJavaVM * fJSJavaVM;
nsVoidArray* fClassPathAdditions;
char* fClassPathAdditionsString;
PRBool fStartupMessagePosted;
};
/*******************************************************************************
* Symantec Debugger Stuff
******************************************************************************/
class nsSymantecDebugManager : public nsISymantecDebugManager {
public:
NS_DECL_AGGREGATED
NS_IMETHOD
SetDebugAgentPassword(PRInt32 pwd);
static NS_METHOD
Create(nsISupports* outer, const nsIID& aIID, void* *aInstancePtr,
nsJVMManager* nsJVMManager);
protected:
nsSymantecDebugManager(nsISupports* outer, nsJVMManager* nsJVMManager);
virtual ~nsSymantecDebugManager(void);
nsJVMManager* fJVMMgr;
};
////////////////////////////////////////////////////////////////////////////////
#endif // nsJVMManager_h___

Просмотреть файл

@ -1,226 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
#include "nsJVMPluginTagInfo.h"
#include "nsIPluginTagInfo2.h"
#include "plstr.h"
#include "nsCRT.h" // mixing metaphors with plstr.h!
#ifdef XP_UNIX
#undef Bool
#endif
static NS_DEFINE_IID(kIPluginTagInfo2IID, NS_IPLUGINTAGINFO2_IID);
////////////////////////////////////////////////////////////////////////////////
// nsJVMPluginTagInfo
////////////////////////////////////////////////////////////////////////////////
nsJVMPluginTagInfo::nsJVMPluginTagInfo(nsISupports* outer, nsIPluginTagInfo2* info)
: fPluginTagInfo(info), fSimulatedCodebase(NULL), fSimulatedCode(NULL)
{
NS_INIT_AGGREGATED(outer);
}
nsJVMPluginTagInfo::~nsJVMPluginTagInfo(void)
{
if (fSimulatedCodebase)
PL_strfree(fSimulatedCodebase);
if (fSimulatedCode)
PL_strfree(fSimulatedCode);
}
NS_IMPL_AGGREGATED(nsJVMPluginTagInfo)
NS_INTERFACE_MAP_BEGIN_AGGREGATED(nsJVMPluginTagInfo)
NS_INTERFACE_MAP_ENTRY(nsIJVMPluginTagInfo)
NS_INTERFACE_MAP_END
static void
oji_StandardizeCodeAttribute(char* buf)
{
// strip off the ".class" suffix
char* cp;
if ((cp = PL_strrstr(buf, ".class")) != NULL)
*cp = '\0';
// Convert '/' to '.'
cp = buf;
while ((*cp) != '\0') {
if ((*cp) == '/')
(*cp) = '.';
++cp;
}
}
NS_METHOD
nsJVMPluginTagInfo::GetCode(const char* *result)
{
if (fSimulatedCode) {
*result = fSimulatedCode;
return NS_OK;
}
const char* code;
nsresult err = fPluginTagInfo->GetAttribute("code", &code);
if (err == NS_OK && code) {
fSimulatedCode = PL_strdup(code);
oji_StandardizeCodeAttribute(fSimulatedCode);
*result = fSimulatedCode;
return NS_OK;
}
const char* classid;
err = fPluginTagInfo->GetAttribute("classid", &classid);
if (err == NS_OK && classid && PL_strncasecmp(classid, "java:", 5) == 0) {
fSimulatedCode = PL_strdup(classid + 5); // skip "java:"
oji_StandardizeCodeAttribute(fSimulatedCode);
*result = fSimulatedCode;
return NS_OK;
}
// XXX what about "javaprogram:" and "javabean:"?
return NS_ERROR_FAILURE;
}
NS_METHOD
nsJVMPluginTagInfo::GetCodeBase(const char* *result)
{
// If we've already cached and computed the value, use it...
if (fSimulatedCodebase) {
*result = fSimulatedCodebase;
return NS_OK;
}
// See if it's supplied as an attribute...
const char* codebase;
nsresult err = fPluginTagInfo->GetAttribute("codebase", &codebase);
if (err == NS_OK && codebase != NULL) {
*result = codebase;
return NS_OK;
}
// Okay, we'll need to simulate it from the layout tag's base URL.
const char* docBase;
err = fPluginTagInfo->GetDocumentBase(&docBase);
if (err != NS_OK) return err;
codebase = (const char*) docBase;
if ((fSimulatedCodebase = PL_strdup(codebase)) != NULL) {
char* lastSlash = PL_strrchr(fSimulatedCodebase, '/');
// chop of the filename from the original document base URL to
// generate the codebase.
if (lastSlash != NULL)
*(lastSlash + 1) = '\0';
}
*result = fSimulatedCodebase;
return NS_OK;
}
NS_METHOD
nsJVMPluginTagInfo::GetArchive(const char* *result)
{
return fPluginTagInfo->GetAttribute("archive", result);
}
NS_METHOD
nsJVMPluginTagInfo::GetName(const char* *result)
{
const char* attrName;
nsPluginTagType type;
nsresult err = fPluginTagInfo->GetTagType(&type);
if (err != NS_OK) return err;
switch (type) {
case nsPluginTagType_Applet:
attrName = "name";
break;
default:
attrName = "id";
break;
}
return fPluginTagInfo->GetAttribute(attrName, result);
}
NS_METHOD
nsJVMPluginTagInfo::GetMayScript(PRBool *result)
{
const char* attr;
*result = PR_FALSE;
nsresult err = fPluginTagInfo->GetAttribute("mayscript", &attr);
if (err) return err;
if (PL_strcasecmp(attr, "true") == 0)
{
*result = PR_TRUE;
}
return NS_OK;
}
NS_METHOD
nsJVMPluginTagInfo::Create(nsISupports* outer, const nsIID& aIID, void* *aInstancePtr,
nsIPluginTagInfo2* info)
{
if(!aInstancePtr)
return NS_ERROR_INVALID_POINTER;
if (outer && !aIID.Equals(NS_GET_IID(nsISupports)))
return NS_ERROR_INVALID_ARG;
nsJVMPluginTagInfo* jvmTagInfo = new nsJVMPluginTagInfo(outer, info);
if (jvmTagInfo == NULL)
return NS_ERROR_OUT_OF_MEMORY;
nsresult result = jvmTagInfo->AggregatedQueryInterface(aIID, aInstancePtr);
if (NS_FAILED(result)) goto error;
result = jvmTagInfo->QueryInterface(kIPluginTagInfo2IID,
(void**)&jvmTagInfo->fPluginTagInfo);
if (NS_FAILED(result)) goto error;
return result;
error:
delete jvmTagInfo;
return result;
}
////////////////////////////////////////////////////////////////////////////////

Просмотреть файл

@ -1,94 +0,0 @@
/* -*- 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
*
* 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
* 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 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 nsJVMPluginTagInfo_h___
#define nsJVMPluginTagInfo_h___
#include "nsIJVMPluginTagInfo.h"
#include "nsAgg.h"
/*******************************************************************************
* nsJVMPluginTagInfo: The browser makes one of these when it sees an APPLET or
* appropriate OBJECT tag.
******************************************************************************/
class nsIPluginTagInfo2;
class nsJVMPluginTagInfo : public nsIJVMPluginTagInfo {
public:
NS_DECL_AGGREGATED
/* from nsIJVMPluginTagInfo: */
/* ====> These are usually only called by the plugin, not the browser... */
NS_IMETHOD
GetCode(const char* *result);
NS_IMETHOD
GetCodeBase(const char* *result);
NS_IMETHOD
GetArchive(const char* *result);
NS_IMETHOD
GetName(const char* *result);
NS_IMETHOD
GetMayScript(PRBool *result);
/* Methods specific to nsJVMPluginInstancePeer: */
/* ====> From here on are things only called by the browser, not the plugin... */
static NS_METHOD
Create(nsISupports* outer, const nsIID& aIID, void* *aInstancePtr,
nsIPluginTagInfo2* info);
protected:
nsJVMPluginTagInfo(nsISupports* outer, nsIPluginTagInfo2* info);
virtual ~nsJVMPluginTagInfo(void);
/* Instance Variables: */
nsIPluginTagInfo2* fPluginTagInfo;
char* fSimulatedCodebase;
char* fSimulatedCode;
};
#endif // nsJVMPluginTagInfo_h___

Просмотреть файл

@ -1,101 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
////////////////////////////////////////////////////////////////////////////////
// NETSCAPE JAVA VM PLUGIN EXTENSIONS FOR SYMANTEC DEBUGGER
//
// This interface allows the browser to initialize a JVM that supports a
// debugger. It's called the "Symantec Debugger Interface" because it currently
// provides access to the Symantec Cafe or Visual Cafe debugger in the Netscape
// JVM. It is not meant to be the be-all-to-end-all of debugger interfaces.
////////////////////////////////////////////////////////////////////////////////
#ifndef nsscd_h___
#define nsscd_h___
#include "nsjvm.h"
////////////////////////////////////////////////////////////////////////////////
// Symantec Debug Manager Interface
//
// Implemented by the browser that supports the Symantec debugger.
class NPISymantecDebugManager : public nsISupports {
public:
NS_IMETHOD_(PRBool)
SetDebugAgentPassword(PRInt32 pwd) = 0;
};
#define NP_ISYMANTECDEBUGMANAGER_IID \
{ /* 131362e0-d985-11d1-8155-006008119d7a */ \
0x131362e0, \
0xd985, \
0x11d1, \
{0x81, 0x55, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \
}
////////////////////////////////////////////////////////////////////////////////
// Symantec Debugger Interface
//
// Implemented by the JVM plugin that supports the Symantec debugger.
enum NPSymantecDebugPort {
NPSymantecDebugPort_None = 0,
NPSymantecDebugPort_SharedMemory = -1
// anything else is a port number
};
class NPISymantecDebugger : public nsISupports {
public:
NS_IMETHOD_(JVMError)
StartDebugger(NPSymantecDebugPort port) = 0;
};
#define NP_ISYMANTECDEBUGGER_IID \
{ /* 954399f0-d980-11d1-8155-006008119d7a */ \
0x954399f0, \
0xd980, \
0x11d1, \
{0x81, 0x55, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \
}
////////////////////////////////////////////////////////////////////////////////
#endif /* nsscd_h___ */

Просмотреть файл

@ -1,114 +0,0 @@
/* -*- 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
*
* 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
* 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 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 ***** */
////////////////////////////////////////////////////////////////////////////////
// Plugin Manager Methods to support the JVM Plugin API
////////////////////////////////////////////////////////////////////////////////
#include "nsJVMManager.h"
NS_IMPL_AGGREGATED(nsSymantecDebugManager)
nsSymantecDebugManager::nsSymantecDebugManager(nsISupports* outer, nsJVMManager* jvmMgr)
: fJVMMgr(jvmMgr)
{
NS_INIT_AGGREGATED(outer);
}
nsSymantecDebugManager::~nsSymantecDebugManager()
{
}
NS_INTERFACE_MAP_BEGIN_AGGREGATED(nsSymantecDebugManager)
NS_INTERFACE_MAP_ENTRY(nsISymantecDebugManager)
NS_INTERFACE_MAP_END
NS_METHOD
nsSymantecDebugManager::Create(nsISupports* outer, const nsIID& aIID, void* *aInstancePtr,
nsJVMManager* jvmMgr)
{
if (!aInstancePtr)
return NS_ERROR_INVALID_POINTER;
NS_ENSURE_PROPER_AGGREGATION(outer, aIID);
nsSymantecDebugManager* dbgr = new nsSymantecDebugManager(outer, jvmMgr);
if (dbgr == NULL)
return NS_ERROR_OUT_OF_MEMORY;
nsISupports* inner = dbgr->InnerObject();
nsresult rv = inner->QueryInterface(aIID, aInstancePtr);
if (NS_FAILED(rv)) {
delete dbgr;
}
return rv;
}
#if defined(XP_WIN) && defined(_WIN32)
extern "C" HWND FindNavigatorHiddenWindow(void);
#endif
NS_METHOD
nsSymantecDebugManager::SetDebugAgentPassword(PRInt32 pwd)
{
#if defined(XP_WIN) && defined(_WIN32)
HWND win = NULL;
/*
** TODO:amusil Get to a hidden window for symantec debugger to get its password from.
HWND win = FindNavigatorHiddenWindow();
*/
HANDLE sem;
long err;
/* set up by aHiddenFrameClass in CNetscapeApp::InitInstance */
err = SetWindowLong(win, 0, pwd);
if (err == 0) {
// PR_LOG(NSJAVA, PR_LOG_ALWAYS,
// ("SetWindowLong returned %ld (err=%d)\n", err, GetLastError()));
/* continue so that we try to wake up the DebugManager */
}
sem = OpenSemaphoreW(SEMAPHORE_MODIFY_STATE, FALSE, L"Netscape-Symantec Debugger");
if (sem) {
ReleaseSemaphore(sem, 1, NULL);
CloseHandle(sem);
}
return NS_OK;
#else
return NS_ERROR_FAILURE;
#endif
}
////////////////////////////////////////////////////////////////////////////////

Просмотреть файл

@ -1,326 +0,0 @@
Frequently Asked Questions ( for Build and Execution)
Build Problems
--------------
NOTE: These API tests are build using Gnu COmpiler gcc.
Always ensure that you compile Tests in same mode as Mozilla is compiled.
(Debug/Non-debug).
Solaris/Linux:
==============
1) On invoking gmake I get a message
WARNING: MOZILLA_HOME variable is incorrect !
MOZILLA_HOME dir. should point to absolute Path of mozilla dir. under
which all sources are located (e.g. /opt/mozilla).
2) On invoking gmake I get an error
/usr/ucb/cc: language optional software package not installed
make: Fatal error: Command failed for target `link'
This is because it could not find a valid GNU compiler 'gcc' in your PATH.
Update your PATH variable to point a valid location for 'gcc'
Also set the environment variable CC to gcc
(if in C-shell then, setenv CC gcc).
3) On invoking gmake I get an error, even though I have 'gcc' in my PATH.
Error message displayed is
/usr/ucb/cc: language optional software package not installed
make: Fatal error: Command failed for target `link'
Set environment variable CC to gcc
(if in C-shell then, setenv CC gcc).
4) On invoking gmake I get an error,
sh: javac: not found
This is because you do not have 'javac' in your PATH
Add ${JDKHOME}/bin into your PATH environment variable
5) On invoking gmake I get an error,
undefined versioned symbol not found. NSGetModule@@Exported
This is the famous problem of Mozilla being compiled in DEBUG mode
and OJI API tests in non-debug mode.
Ensure that both are the same (See mozilla.org build req. for setting
Debug/Non-debug mode).
Win32:
======
5) On invoking nmake I get an error
OJITestLoader.h: fatal error: Cannot open include file 'nsISupports.h'
no such file or directory
This is because MOZILLA_HOME is not set
MOZILLA_HOME dir. should point to absolute Path of mozilla dir. under
which all sources are located (e.g. /opt/mozilla).
6) On invoking nmake I get an error
LINK: fatal error LNK1181: cannot open input file nspr4.lib
This is because MOZILLA_HOME is not set
MOZILLA_HOME dir. should point to absolute Path of mozilla dir. under
which all sources are located (e.g. /opt/mozilla).
7) On invoking nmake I get an error
.... Cannot open include file prtypes.h
This usually happens if you have built MOZILLA in non-debug mode and are
trying to build the tests in debug mode.
Check you environment. You will have MOZ_DEBUG set
Unsetting it will resolve the problem
( set MOZ_DEBUG= )
8) On invoking nmake I get an error (even after I have set MOZILLA_HOME)
LINK: fatal error LNK1181: cannot open input file nspr4.lib
This usually happens if you have built MOZILLA in non-debug mode and are
trying to build the tests in debug mode.
Check you environment. You will have MOZ_DEBUG set
Unsetting it will resolve the problem
( set MOZ_DEBUG= )
9) On invoking nmake I get an error
NMAKE: fatal error ..: javac : return code...
This is because you do not have 'javac' in your PATH
Add ${JDKHOME}/bin into your PATH environment variable
===========================================================================
Execution Problems
------------------
NOTE: These API tests are build using Gnu Compiler gcc.
10) On execution autorun.pl I get errors
syntax error in file autorun.pl at line 36, next 2 tokens "use POSIX"
syntax error in file autorun.pl at line 72, next 2 tokens "cwd("
syntax error in file autorun.pl at line 94, next 2 tokens "\usage("
Execution of autorun.pl aborted due to compilation errors.
This is becuase you are using an older version of Perl
Use Perl version >= 5 and add the same to PATH environment variable
11) On execution of autorun.pl I get message
MOZILLA_FIVE_HOME is not set. Please set it and rerun this script....
The environment variable MOZILLA_FIVE_HOME is not set
It should point to absolute dir. where mozilla-bin is located
Set MOZILLA_FIVE_HOME <mozilla dir>/dist/bin
12) How can I invoke a specific test
In the script directory, there is a file OJITestsList.lst. This file
contains list of all tests. To execute any particular one use '-t'
option.
perl autorun.pl -t JNIEnv_AllocObject_2
This command will execute on this particular test.
13) On executing autorun.pl, browser always invokes "Profile Window". Is there
any way to suppress this box.
In autorun.pl, search of ADDITIONAL_PARAMETERS. It is set to "-P default"
Change it to reflect your Profile name (-P myProfile)
14) On executing autorun.pl, browser does not load the test.html.
This is because it is not able tofind test.html.
There are 2 ways of setting. One is to set environment variable TEST_URL
to point to dir. which contains test.html
(In C-Shell setenv TEST_URL <mozilla dir>/modules/oji/tests/script )
or open autorun.pl and change DEFAULT_TEST_URL to indicate your path
15) On executing autorun.pl, browser in invoked, but before test.html is loaded
it exits.
This is due to the DELAY_FACTOR set in the script.
On slower machine, you may want to increase the value of this variable.
Open autorun.pl, search for DELAY_FACTOR. change the value to a
higher number (currently it is set to 50)
16) On executin autorun.pl, it immedialtely exits. On checking the log file
it says fatal: libgkggfx.so: open failed: No such file or directory
This is because <MOZILLA_FIVE_HOME> is not set in LD_LIBRARY_PATH, and
so is not able to find the above mentioned library.
Setting it, will resolve the problem.
(setenv LD_LIBRARY_PATH <MOZILLA_FIVE_HOME>:${LD_LIBRARY_PATH})
17) On executing autorun.pl, browser in invoked, an test.html is loaded, but
it does not prompt me for a "Internet Security" Dialog box.
There can be many factors for this
* Cross-check the 'test.html'. It should have the following line
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
* Check <home dir>/.mozilla/default/prefs.js (on Solaris/Linux) or
c:/Program Files/Mozilla/Users50/Default/prefs.js (on Win32)
file. If it has the following entries
user_pref("capability.principal.codebase.p0.granted", "UniversalXPConnect");
user_pref("capability.principal.codebase.p0.id", "file://");
then, you have already given access permissions. Remove these entries
and try execution again.
* Check the above prefs.js if it has entry
user_pref("capability.principal.codebase.p0.denied", "UniversalXPConnect");
then you have Denied permissions to execute it. Remove that entry and
re-try execution.
18) On executin autorun.pl, it loads test.html and exits after sometime.
However the result is FAILED. On checking the log file it indicates
ld.so.1: /opt/mozilla/dist/bin/mozilla-bin: fatal: liboji.so: open
failed: No such file or directory
This is because <MOZILLA_FIVE_HOME>/components dir. is not set in
LD_LIBRARY_PATH, and so is not able to find the above mentioned library.
Setting it, will resolve the problem.
(setenv LD_LIBRARY_PATH <MOZILLA_FIVE_HOME>/components:${LD_LIBRARY_PATH})
19) Where can I find list of All Test Cases?
In 'script' dir. there is a file 'OJITestsList.lst'. This file lists
out all Test Cases.
20) Is there a list of Test Cases that have to PASS for a particular platform
In 'script' directory there is a file OJIValidTestsList.lst. This is
list of Test cases which have to PASS for a particular platform.
21) What should I do to invoke 'should PASS' Tests for a particular platform
In 'script' dir. rename 'OJITestsList.lst' to 'OJITestsList.lst.orig'.
Copy OJIValidTestsList.lst to OJITestsList.lst
And then invoke autorun.pl
22) Is Macintosh platform supported.
Currently tests are not supported for Macintosh platform.
23) What platforms are supported.
Win32 (NT/98/95/2000) and Solaris 2.7/2.8 (intel/sparc)
24) On Win32 platforms, after execution all the Tests, my "Start Menu bar"
is filled with tons of small "Duke' icons. How can I get rid of it?
This is one of the bugs in Java Plugin. After exiting browser, the Duke
icon is still displayed in the rightmost corner of Start Bar. If we move
mouse over the icon, it disappears.
To avoid this whole bunch of icons, after you invoke autorun.pl, just
place the mouse at the righmost corner on the Duke icon.
25) Where are the result files stored.
In 'script/log' directory you will find a bunch of log files.
BWTest.txt file lists out PASS/FAIL results.
BWTest.html is the above file in HTML format.
BWTestRun.log is the history of tests you ran.
26) What other options are supported by autorun.pl
Invoke perl autorun.pl -help
It will list out all options
27) After running tests, I went ahead and remove the libraries from components
directory (libojapi*.so)
Now when I invoke Mozilla, it complains of not finding those libraries.
How can I remove this dependency.
In you MOZILLA_FIVE_HOME dir. there is a file 'component.reg'.
Delete this file and invoke mozilla again.
28) All my JNI Tests seem to be failing even after I have granted permissions
to XPConnect call (thru' Internet Security Box).
All JNI tests has dependency on Java class files in 'build/classes' dir.
If the JVM cannot find theses classes, all tests will fail.
Go to <JDKHOME>/jre/bin directory. Invoke the 'ControlPanel' executable.
(On Win32 platforms click on Start->Settings->Control Panel->Duke icon)
In the Java RunTime Parameters Text Field, add the following entry
-Xbootclasspath/a:<mozilla dir>/modules/oji/tests/build/classes
where <mozilla dir> is absolute path to mozilla dir.
( e.g: -Xbootclasspath/a:c:\mozilla\modules\oji\tests\build\classes )
Press 'Apply'
Go to to your <home dir>/.java
There should be a 'properties130_01' file with the entry
javaplugin.jre.params=-Xbootclasspath/a\:c\:\\mozilla\\modules\oji\\tests\\build\\classes
Now retry, executing the Tests .
29) On Win98, when I run thru' the tests, and if Mozilla crashes, it invokes
a VC++ debug window, which stays on top. Sometimes I see a lot of
such windows. How can I ge rid of them? (I do not see the same on NT)
This is a bug we have encuntered.
In src/Killer dir. there is a file killer.cpp.win98.
DO the following.
copy killer.cpp to killer.cpp.win32
copy killer.cpp.win98 to killer.cpp
then execute command
cl killer.cpp /link user32.lib
This will generate a new killer.exe .
copy killer.exe to 'script' dir.
Now re-run the Tests. This problem should be resolved.
30) After I run a particular test, and if tests is flagged of as FAILED
how do I know what went wrong.
In 'script/log' dir. for Each Test case there is a equivalent log created
named <testcase>_<pid>.log
To find out which is the most recent log, check by time stamp
(ls -lt <testcase>_*.log )
Open the recent one, and it will tell you what went wrong
32) If I encounter any other problems while running these tests, whom can I
contact?
Send feedback to oji@eng.sun.com. Someone will get in touch with you.
===========================================================================

Просмотреть файл

@ -1,168 +0,0 @@
This README file indicates steps required for Building and Execution of OJI API tests
How the Tests Work
------------------
These OJI API Tests basically 4 areas via:
Java Native Interface (JNI)
JVM Manager Tests (JM)
Thread Manager Tests (TM)
LiveConnect Manager Tests (LCM)
On Building the Test Base ( from build directory) 5 shared libraries are
created which are copied over to the bin/components dir.
( libojiapijmtests.so,libojiapilcmtests.so, libojiapitmtests.so,
libojiapijnitests.so, libojiapitl.so )
On Invoking the browser, it registers all these libraries and then invokes
the page test.html (in script dir.)
It first prompts a dialog box for Permissions to invoke a XPConnect call.
The user has to grant permissions to execute the tests.
(NOTE: If user denys, then the tests cannot be invoked)
Once permissions are granted, it will follow these steps
* Create a TestLoader instance.
* Read List of Tests from file OJITestsList.lst (in script dir.)
* For each test entry in that file, determine type of Test (JNI/JM/LCM/TM)
* Load appropriate library if not already loaded
* Find method address from the loaded library
* Invoke method to be tested with appropriate test parameters
* Record results in log file
Below are instructions on how to build and execute.
Also check FAQ for answers to known problems encountered.
-------------------------------------------------------------------------------
Instructions (Build/Execution)
==============================
Win32
-----
============-=============
I. Build OJI API test:
==========================
Pre-Requisite: You must have built mozilla browser and
have Perl (version >= 5) installed.
1. set MOZILLA_HOME (top of Mozilla's tree) and JAVAHOME variables
2. set MOZILLA_FIVE_HOME to <MOZILLA_HOME>/dist/win32_O.obj/bin directory
where mozilla.exe is located
3. goto build directory and say
nmake -f Makefile.win
Libraries created are located in 'build/bin' dir. and
MOZILLA_FIVE_HOME/components directory.
=============================
II.Execute OJI API tests:
=============================
Pre-Requisite: Have Perl (version >= 5) installed and
Java1.3.0_01 SDK installed.
1. Update <homedir>/Program Files/Users50/<profile dir>/prefs.js to add line
user_pref("signed.applets.codebase_principal_support",true);
where <profile dir> is your profile name
2. Update Path variable to include
$MOZILLA_HOME/dist/win32_O.obj/bin and
$MOZILLA_HOME/dist/win32_O.obj/bin/components
3. Set TEST_URL to point to url location of test.html.
(file://<mozilla dir>/modules/oji/tests/script)
4. Delete component.reg file in Mozilla's bin directory.
5. Click on Start-Settings-Control Panel->Duke icon.
This will invoke the Java Plugin Control Panel
6. In Runtime Parameter Text Field add the following line
-Xbootclasspath/a:<class dir>
where <class dir> is <MOZILLA_HOME>\modules\oji\tests\build\classes
7. Create .java.policy file in you home directory and add this line
grant {
permission java.security.AllPermission;
}
8. Change DELAY_FACTOR in script/autorun.pl to some higher value, if mozilla
takes more time to load. It should be a value greater than 0.
9 Change script/autorun.pl and change ADDITIONAL_PARAMETERS to reflect your
profile
10. Goto script dir. and run perl script
perl autorun.pl
11. It will invoke the browser and load 'test.html'.
12. It should prompt a "Internet Security" Dialog box prompting for Permissions
Check "Remember the decision" checkbox.
Click on 'Yes' (NOTE: clicking on 'No' will not invoke any of the Tests).
All done
See results of execution in the script/log directory.
Output HTML file is script/log/BWTest.html
--------------------------------------------------------------------------
Solaris/Linux
--------------
==========================
I. Build OJI API test:
==========================
Pre-Requisite: You must have built mozilla browser and have
have Perl (version >= 5) installed.
1. set MOZILLA_HOME (top of Mozilla's tree) and JAVAHOME variables
2. set MOZILLA_FIVE_HOME to <MOZILLA_HOME>/dist/bin
where mozilla-bin is located
3. set CC to point to gcc
setenv CC gcc
4. goto build directory and say
gmake
Libraries created are located in 'build/bin' dir. and
MOZILLA_FIVE_HOME/components directory.
=============================
II. Execute OJI API tests:
=============================
Pre-Requisite: Have Perl installed and Java2 SDK installed.
1. Update <home dir>/.mozilla/<profile dir>/prefs.js to add line
user_pref("signed.applets.codebase_principal_support",true);
where <profile dir> is your profile name
2. Update LD_LIBRARY_PATH variable to include
$MOZILLA_HOME/dist/bin and
$MOZILLA_HOME/dist/bin/components
3. Set TEST_URL to point to url location of test.html.
(file://<mozilla dir>/modules/oji/tests/script)
4. Delete component.reg file in Mozilla's bin directory.
5. Invoke <Java2 SDK dir.>/jre/bin/ControlPanel
6. In RunTime Parameter Text Field add the following line
-Xbootclasspath/a:<class dir>
where <class dir> is <MOZILLA_HOME>/modules/oji/tests/build/classes
7. Create .java.policy file in you home directory and add the lines
grant {
permission java.security.AllPermission;
}
8. Change DELAY_FACTOR in script/autorun.pl to some higher value, if mozilla
takes more time to load. It should be a value greater than 0.
9 Change script/autorun.pl and change ADDITIONAL_PARAMETERS to reflect your
profile (by default it uses default).
10. Goto script dir. and run perl script
perl autorun.pl
11. It will invoke the browser and load 'test.html'.
12. It should prompt a "Internet Security" Dialog box prompting for Permissions
Check "Remember the decision" checkbox.
Click on 'Yes' (NOTE: clicking on 'No' will not invoke any of the Tests).
All done
See results of execution in the script/log directory.
Output HTML file is script/log/BWTest.html
--------------------------------------------------------------------------
Mac
---
Currently does not work with Mac.

Просмотреть файл

@ -1,73 +0,0 @@
#
# ***** 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
# Sun Microsystems, Inc.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# 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 *****
DIRS= \
TestLoader \
JM \
TM \
LCM \
JNI
TOP_DIR = ..
all: createdir check_env $(DIRS)
$(DIRS)::
@echo "############## Building $@ ####################"
@cd $(TOP_DIR)/src/$@; \
if test ! -f depend.mak; then >depend.mak; fi; \
$(MAKE) make_depends; \
$(MAKE) all;
check_env:
@if test ! -d $(MOZILLA_HOME)/dist/include; then echo "WARNING: MOZILLA_HOME variable is incorrect !"; exit 1; fi
createdir:
@mkdir -p bin
@mkdir -p classes
clean:
@for d in $(DIRS); do \
rm -rf $(TOP_DIR)/src/$$d/obj; \
find $(TOP_DIR)/src/$$d -name depend.mak -type f -exec rm -f {} \;; \
find $(TOP_DIR)/src/$$d -name cmd.mak -type f -exec rm -f {} \;; \
done
@rm -rf bin/* classes/*

Просмотреть файл

@ -1,70 +0,0 @@
#
# ***** 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
# Sun Microsystems, Inc.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# 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 *****
DIRS= \
TestLoader \
JM \
TM \
LCM \
JNI
TOP_DIR = ..
all:
!if !exist(bin)
@mkdir bin
!endif
!if !exist(classes)
@mkdir classes
!endif
@set MAKE_TARGET=make_depends
@nmake -nologo -f Makefile.win $(DIRS)
@set MAKE_TARGET=all
@nmake -nologo -f Makefile.win $(DIRS)
$(DIRS)::
@echo "########### Making $(MAKE_TARGET) in $@ ##############";
@cd $(TOP_DIR)/src/$@
@nmake -nologo -f Makefile.win $(MAKE_TARGET)
@cd ../../build
clean:
@set MAKE_TARGET=clean
@nmake -nologo -f Makefile.win $(DIRS)
@del /f/s/q bin\* classes\*

Просмотреть файл

@ -1 +0,0 @@
JVMManager_CreateProxyJNI_1

Просмотреть файл

@ -1,168 +0,0 @@
This README file indicates steps required for Building and Execution of OJI API tests
How the Tests Work
------------------
These OJI API Tests basically 4 areas via:
Java Native Interface (JNI)
JVM Manager Tests (JM)
Thread Manager Tests (TM)
LiveConnect Manager Tests (LCM)
On Building the Test Base ( from build directory) 5 shared libraries are
created which are copied over to the bin/components dir.
( libojiapijmtests.so,libojiapilcmtests.so, libojiapitmtests.so,
libojiapijnitests.so, libojiapitl.so )
On Invoking the browser, it registers all these libraries and then invokes
the page test.html (in script dir.)
It first prompts a dialog box for Permissions to invoke a XPConnect call.
The user has to grant permissions to execute the tests.
(NOTE: If user denys, then the tests cannot be invoked)
Once permissions are granted, it will follow these steps
* Create a TestLoader instance.
* Read List of Tests from file OJITestsList.lst (in script dir.)
* For each test entry in that file, determine type of Test (JNI/JM/LCM/TM)
* Load appropriate library if not already loaded
* Find method address from the loaded library
* Invoke method to be tested with appropriate test parameters
* Record results in log file
Below are instructions on how to build and execute.
Also check FAQ for answers to known problems encountered.
-------------------------------------------------------------------------------
Instructions (Build/Execution)
==============================
Win32
-----
============-=============
I. Build OJI API test:
==========================
Pre-Requisite: You must have built mozilla browser and
have Perl (version >= 5) installed.
1. set MOZILLA_HOME (top of Mozilla's tree) and JAVAHOME variables
2. set MOZILLA_FIVE_HOME to <MOZILLA_HOME>/dist/win32_O.obj/bin directory
where mozilla.exe is located
3. goto build directory and say
nmake -f Makefile.win
Libraries created are located in 'build/bin' dir. and
MOZILLA_FIVE_HOME/components directory.
=============================
II.Execute OJI API tests:
=============================
Pre-Requisite: Have Perl (version >= 5) installed and
Java1.3.0_01 SDK installed.
1. Update <homedir>/Program Files/Users50/<profile dir>/prefs.js to add line
user_pref("signed.applets.codebase_principal_support",true);
where <profile dir> is your profile name
2. Update Path variable to include
$MOZILLA_HOME/dist/win32_O.obj/bin and
$MOZILLA_HOME/dist/win32_O.obj/bin/components
3. Set TEST_URL to point to url location of test.html.
(file://<mozilla dir>/modules/oji/tests/script)
4. Delete component.reg file in Mozilla's bin directory.
5. Click on Start-Settings-Control Panel->Duke icon.
This will invoke the Java Plugin Control Panel
6. In Runtime Parameter Text Field add the following line
-Xbootclasspath/a:<class dir>
where <class dir> is <MOZILLA_HOME>\modules\oji\tests\build\classes
7. Create .java.policy file in you home directory and add this line
grant {
permission java.security.AllPermission;
}
8. Change DELAY_FACTOR in script/autorun.pl to some higher value, if mozilla
takes more time to load. It should be a value greater than 0.
9 Change script/autorun.pl and change ADDITIONAL_PARAMETERS to reflect your
profile
10. Goto script dir. and run perl script
perl autorun.pl
11. It will invoke the browser and load 'test.html'.
12. It should prompt a "Internet Security" Dialog box prompting for Permissions
Check "Remember the decision" checkbox.
Click on 'Yes' (NOTE: clicking on 'No' will not invoke any of the Tests).
All done
See results of execution in the script/log directory.
Output HTML file is script/log/BWTest.html
--------------------------------------------------------------------------
Solaris/Linux
--------------
==========================
I. Build OJI API test:
==========================
Pre-Requisite: You must have built mozilla browser and have
have Perl (version >= 5) installed.
1. set MOZILLA_HOME (top of Mozilla's tree) and JAVAHOME variables
2. set MOZILLA_FIVE_HOME to <MOZILLA_HOME>/dist/bin
where mozilla-bin is located
3. set CC to point to gcc
setenv CC gcc
4. goto build directory and say
gmake
Libraries created are located in 'build/bin' dir. and
MOZILLA_FIVE_HOME/components directory.
=============================
II. Execute OJI API tests:
=============================
Pre-Requisite: Have Perl installed and Java2 SDK installed.
1. Update <home dir>/.mozilla/<profile dir>/prefs.js to add line
user_pref("signed.applets.codebase_principal_support",true);
where <profile dir> is your profile name
2. Update LD_LIBRARY_PATH variable to include
$MOZILLA_HOME/dist/bin and
$MOZILLA_HOME/dist/bin/components
3. Set TEST_URL to point to url location of test.html.
(file://<mozilla dir>/modules/oji/tests/script)
4. Delete component.reg file in Mozilla's bin directory.
5. Invoke <Java2 SDK dir.>/jre/bin/ControlPanel
6. In RunTime Parameter Text Field add the following line
-Xbootclasspath/a:<class dir>
where <class dir> is <MOZILLA_HOME>/modules/oji/tests/build/classes
7. Create .java.policy file in you home directory and add the lines
grant {
permission java.security.AllPermission;
}
8. Change DELAY_FACTOR in script/autorun.pl to some higher value, if mozilla
takes more time to load. It should be a value greater than 0.
9 Change script/autorun.pl and change ADDITIONAL_PARAMETERS to reflect your
profile (by default it uses default).
10. Goto script dir. and run perl script
perl autorun.pl
11. It will invoke the browser and load 'test.html'.
12. It should prompt a "Internet Security" Dialog box prompting for Permissions
Check "Remember the decision" checkbox.
Click on 'Yes' (NOTE: clicking on 'No' will not invoke any of the Tests).
All done
See results of execution in the script/log directory.
Output HTML file is script/log/BWTest.html
--------------------------------------------------------------------------
Mac
---
Currently does not work with Mac.

Просмотреть файл

@ -1,60 +0,0 @@
#
# ***** 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
# Sun Microsystems, Inc.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# 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 *****
!if defined(MOZ_DEBUG)
WIN32DIR=WIN32_D.OBJ
!else
WIN32DIR=WIN32_O.OBJ
!endif
INCLUDES = $(INCLUDES) \
-I. \
-I$(TOP_DIR)/src/include \
-I$(JAVAHOME)/include \
-I$(JAVAHOME)/include/win32 \
-I$(MOZILLA_HOME)/include \
-I$(MOZILLA_HOME)/dist/include \
-I$(MOZILLA_HOME)/dist/$(WIN32DIR)/include \
-I$(MOZILLA_HOME)/dist/$(WIN32DIR)/include/obsolete
!if defined(MOZ_DEBUG)
DEFINES=-DXP_WIN -DDEBUG
!else
DEFINES=-DXP_WIN
!endif
CC_OBJ=@cl $(DEFINES) /Zi /nologo $(INCLUDES) /c /Fo$(OBJ_DIR)\ /Fd$(OBJ_DIR)/default.pdb

Просмотреть файл

@ -1,51 +0,0 @@
#
# ***** 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
# Sun Microsystems, Inc.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# 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 *****
INCLUDES += -I. \
-I$(TOP_DIR)/src/include \
-I$(JDK_HOME)/include \
-I$(JDK_HOME)/include/$(OS) \
-I$(MOZILLA_HOME)/include \
-I$(MOZILLA_HOME)/dist/include
DEFINES=-DXP_UNIX
ifeq ($(MOZ_DEBUG),1)
DEFINES+=-DDEBUG
endif
CC_OBJ=$(CC) $(C_FLAGS) $(DEFINES) $(INCLUDES)

Просмотреть файл

@ -1,51 +0,0 @@
#
# ***** 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
# Sun Microsystems, Inc.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# 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 *****
($#ARGV > 0) || die "Usage: make_depends.pl <OBJ_dir> <CC_command_macro_name> <CPP_files_list>\n";
open(OUT, ">depend.mak") || die "Can't create depend.mak file: $!\n";
print OUT "# This file is generated automatically. Don't edit it !\n\n";
$ext = "o";
if ($^O =~ /Win32/) { $ext = "obj"; }
for ($i=2; $i<$#ARGV+1; $i++) {
if ($ARGV[$i] =~ /(.*?).cpp/) {
$name = $1;
#print "Creating rule for file $name.cpp\n";
print OUT "$ARGV[0]/$name.$ext: $name.cpp\n\t\$\($ARGV[1]\) \$\? \>\> cmd.mak\n\n";
}
}
close(OUT);

Просмотреть файл

@ -1,81 +0,0 @@
#
# ***** 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
# Sun Microsystems, Inc.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# 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 *****
($#ARGV > 2) || die "Usage: make_mak.pl <LIST_FILE> <CC_makro_name> <TOP_DIR> <OBJ_DIR> <original_INCLUDES>\n";
#Read CPP's to be recompiled
if (open (MAK, $ARGV[0])) {
$empty = 0;
undef $/;
@file_list=split(/\n/, <MAK>);
close MAK;
} else {
$empty=1;
}
#Write new makefile
open (MAK, ">".$ARGV[0]) || die "Can't open file $ARGV[0]: $!\n";
print MAK "# This file is generated automatically. Don't edit it !\n\n";
print MAK "TOP_DIR=$ARGV[2]\n";
print MAK "OBJ_DIR=$ARGV[3]\n";
print MAK "INCLUDES=$ARGV[4]\n";
print MAK "OS=$^O\n";
if ($^O !~ /Win32/) {
print MAK "CC=".(($ENV{"CC"})?$ENV{"CC"}:"gcc")."\n";
print MAK "C_FLAGS=".(($ENV{"USE_SUN_WS"} eq "1")?"-c -g -KPIC":"-c -fPIC -fno-rtti")."\n";
}
$ext = "mk";
if ($^O =~ /Win32/) { $ext = "mak"; }
print MAK "include $ARGV[2]/build/compile.$ext\n";
print MAK "CPP=";
if (!$empty) { print MAK " \\\n"; } else { print MAK "\n"; }
for ($i=0; $file = $file_list[$i]; $i++) {
chomp $file;
if ($i < $#file_list) {
print MAK "\t$file \\\n";
} else {
print MAK "\t$file \n";
}
}
print MAK "all:";
if (!$empty) { print MAK "\n\t\$\($ARGV[1]\) \$\(CPP\)\n"; }
close MAK;

Просмотреть файл

@ -1,60 +0,0 @@
#!/usr/bin/perl
#
# ***** 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
# Sun Microsystems, Inc.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# 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 *****
#($#ARGV >= 0) || die "Usage: perl mfgen.pl <dir>\n";
$list = `ls *.cpp`;
@filelist = split (/\n/, $list);
print "TOP_DIR = ../../..\nOBJ_DIR = ../obj\nCPP =";
foreach $file (@filelist) {
if ($file =~ /^.*?\.cpp$/) {
print " \\\n";
print "\t$file";
}
}
print "\n\nOBJS =";
foreach $file (@filelist) {
if ($file =~ /^(.*?)\.cpp$/) {
print " \\\n";
print "\t\$\(OBJ_DIR\)\/$1.o";
}
}
print "\n\nINCLUDES = -I..\/include \ninclude ..\/..\/..\/build\/rules.mk \nall: compile\n";

Просмотреть файл

@ -1,89 +0,0 @@
#
# ***** 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
# Sun Microsystems, Inc.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# 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 *****
LIBS = nspr4.lib xpcom.lib oji.lib plc4.lib
!if defined(MOZ_DEBUG)
LD_FLAGS = /LIBPATH:$(MOZILLA_HOME)/dist/WIN32_D.OBJ/lib \
/LIBPATH:$(OBJ_DIR)
!else
LD_FLAGS = /LIBPATH:$(MOZILLA_HOME)/dist/WIN32_O.OBJ/lib \
/LIBPATH:$(OBJ_DIR)
!endif
ADD_CPP=@echo
MAKE_MAK=perl $(TOP_DIR)/build/make_mak.pl
!if exist(depend.mak)
include depend.mak
!endif
objdir:
!if defined(OBJ_DIR)
!if !exist($(OBJ_DIR))
@mkdir $(OBJ_DIR)
!endif
!endif
del_cmd:
!if exist(cmd.mak)
@del cmd.mak
!endif
compile: objdir del_cmd $(OBJS)
@$(MAKE_MAK) cmd.mak CC_OBJ $(TOP_DIR) $(OBJ_DIR) $(INCLUDES)
@nmake -nologo -f cmd.mak all
link:
@link /NOLOGO /DEBUG $(LD_FLAGS) $(LIBS) $(OBJS) /DLL /OUT:$(OBJ_DIR)\$(DLL).dll
@cp obj/$(DLL).dll $(TOP_DIR)/build/bin
!if defined(MOZ_DEBUG)
@cp obj/$(DLL).dll $(TOP_DIR)/../../../dist/win32_d.obj/bin/components
!else
@cp obj/$(DLL).dll $(TOP_DIR)/../../../dist/win32_o.obj/bin/components
!endif
make_depends: Makefile.win
!if !exist(depend.mak)
#it's convenient to add one more parameter - COMMON_DEPENDS
#which contain all common includes for particular interface tests
@perl $(TOP_DIR)/build/make_depends.pl $(OBJ_DIR) ADD_CPP $(CPP)
!endif
clean:
@-del /f/s/q $(OBJ_DIR)\* cmd.mak depend.mak

Просмотреть файл

@ -1,90 +0,0 @@
#
# ***** 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
# Sun Microsystems, Inc.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# 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 *****
LIBS = -lnspr4 -lxpcom -loji -lplc4
LD_PATH = -L$(MOZILLA_HOME)/dist/lib -L$(MOZILLA_HOME)/dist/bin/components -L$(OBJ_DIR)
LD_FLAGS_GCC=-shared
LD_FLAGS_WS=-G
ADD_CPP=@echo
MAKE_MAK=perl $(TOP_DIR)/build/make_mak.pl
MAKE_DEPENDS=perl $(TOP_DIR)/build/make_depends.pl
include depend.mak
make_depends: Makefile
@if test ! -s depend.mak; then \
$(MAKE_DEPENDS) $(OBJ_DIR) ADD_CPP $(CPP); \
fi
objdir:
@if test 'x$(OBJ_DIR)' != 'x'; then \
if test ! -d $(OBJ_DIR); then \
mkdir $(OBJ_DIR); \
fi; \
fi
del_cmd:
@if test -f cmd.mak; then \
rm cmd.mak; \
fi
ifndef MOZ_DEBUG
include $(MOZILLA_HOME)/config/autoconf.mk
endif
compile: objdir del_cmd $(OBJS)
@-mv *.o $(OBJ_DIR) 2> /dev/null
@$(MAKE_MAK) cmd.mak CC_OBJ $(TOP_DIR) $(OBJ_DIR) $(INCLUDES)
@export MOZ_DEBUG; MOZ_DEBUG=$(MOZ_DEBUG); $(MAKE) -f cmd.mak all
@-mv *.o $(OBJ_DIR) 2> /dev/null
link:
@if test 'x$(USE_SUN_WS)' = 'x1'; then \
$(CC) $(LD_FLAGS_WS) $(OBJS) $(LD_PATH) $(LIBS) -o $(OBJ_DIR)/lib$(DLL).so; \
else \
$(CC) $(LD_FLAGS_GCC) $(OBJS) $(LD_PATH) $(LIBS) -o $(OBJ_DIR)/lib$(DLL).so; \
fi;
@cp obj/lib$(DLL).so $(TOP_DIR)/build/bin/.
@cp obj/lib$(DLL).so $(TOP_DIR)/../../../dist/bin/components/.

Просмотреть файл

@ -1,18 +0,0 @@
<html>
<head>
<script>
function startOJITests() {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// var OJITestLoader = Components.classes["component://netscape/oji/test/api/loader"].createInstance();
var OJITestLoader = Components.classes['@mozilla.org/oji/test/api/loader;1'].createInstance();
}
</script>
</head>
<body>
<h2 align="center">OJI API tests starting page. </h2>
Results of tests execution could be found on the console and
in the appropriate output files.
<script>
startOJITests();
</script>
</body>

Просмотреть файл

@ -1,908 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.51 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
<title>OJI Test Analysis
</title>
</head>
<body>
<h1>
OJI API Test Analysis</h1>
<h2>
Table of Content</h2>
<ul>
<li>
<a href="#How2">How many tests cases can be created?</a></li>
<ul>
<li><a href="#nsIJVMManager">Interface : nsIJVMManager</a></li>
<li><a href="#nsIJVMPluginInstance">Interface : nsIJVMPluginInstance</a></li>
<li><a href="#nsIJVMPlugin">Interface : nsIJVMPlugin</a></li>
<li><a href="#nsIJVMPluginTagInfo">Interface : nsIJVMPluginTagInfo</a></li>
<li><a href="#nsIJVMPrefsWindow">Interface : nsIJVMPrefsWindow</a></li>
<li><a href="#nsIJVMWindow">Interface : nsIJVMWindow</a></li>
<li><a href="#nsILiveConnectManager">Interface : nsILiveConnectManager</a></li>
<li><a href="#nsIJVMConsole">Interface : nsIJVMConsole</a></li>
<li><a href="#nsISecureEnv">Interface : nsISecureEnv</a></li>
<li><a href="#nsIThreadManager">Interface : nsIThreadManager</a></li>
</ul>
</ul>
<a NAME="How2"></a>How many&nbsp; tests cases can be created?
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A total of 323 test cases
can be written for testing OJI APIs .
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Below is a list of OJI API
methods that are being implemented in
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; browser code for OJI and/or in
Kestrel code(for windows) . Each method under
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; an interface include details like
the number of possible test cases
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and the possible test values.
At the end of interface there is a
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; total for the number of
test cases for this Interface.
<br>&nbsp;
<br>&nbsp;&nbsp;&nbsp;&nbsp; Note:
<br>&nbsp;&nbsp;&nbsp;&nbsp; ====
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <b>Interfaces nsIJRIPlugin.h ,
nsISecureJNI.h&nbsp; and nsISecureJNI2.h&nbsp; are found</b>
<br><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; under the mozilla/modules/oji/public
directory of mozilla.</b>
<br><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; However these interfaces were not
included in the Kestrel include directory.</b>
<br><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Also noticed that the methods
declared within nsISecureJNI.h&nbsp; and nsISecureJNI2.h</b>
<br><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; under mozilla/modules/oji/public
directory</b>
<br><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; were all included in the nsISecureEnv.h
interface that is found in kestrel include directory</b>
<ul>
<li>
<a name="nsIJVMManager"></a><b>Interface : nsIJVMManager</b></li>
<br>Method:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NS_IMETHOD CreateProxyJNI(nsISecureEnv
*secureEnv, JNIEnv * *outProxyEnv);
<p>Implemented in :mozilla and Kestrel code for windows
<br>Number of test cases that can be written: 4
<br>Test cases will be written with NULL value and a NON NULL value for
both the parameters
<p>&nbsp;Method:
<br>&nbsp; NS_IMETHOD GetProxyJNI(JNIEnv * *outProxyEnv);
<p>&nbsp; Implemented in :Kestrel code for windows
<br>&nbsp; Number of test cases that can be written: 2
<br>&nbsp;Test cases will be written with NULL value and a NON NULL value
<p>Method:
<br>NS_IMETHOD IsJavaEnabled(PRBool *outEnabled);
<p>&nbsp;Implemented in :Kestrel code for windows
<br>&nbsp;Number of test cases that can be written: 2
<br>&nbsp;Test cases will be written with NULL value and a NON NULL value
<p>Method:
<br>NS_IMETHOD ShowJavaConsole(void);
<p>Implemented in :Kestrel code for windows
<br>Number of test cases that can be written: 1
<p>Total number of test cases for this Interface : 9
<br>&nbsp;
<li>
<a name="nsIJVMPluginInstance"></a><b>Interface : nsIJVMPluginInstance</b></li>
<br>Method:
<br>&nbsp;NS_IMETHOD GetJavaObject(jobject *result) = 0;
<p>&nbsp;Implemented in : Kestrel code for windows
<br>&nbsp;Number of test cases that can be written: 3
<br>&nbsp;Test cases will be written with Empty String&nbsp; , NULL string
and a NON NULL
<br>&nbsp;&nbsp;&nbsp;&nbsp; String value for&nbsp; the parameter
<p>&nbsp;Method:
<br>&nbsp;&nbsp; NS_IMETHOD&nbsp; GetText(const char* *result) = 0;
<p>&nbsp;Implemented in :mozilla and Kestrel code for windows
<br>&nbsp; Number of test cases that can be written: 3
<br>&nbsp;Test cases will be written with Empty String&nbsp; , NULL string
and a NON NULL
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String value for&nbsp; the parameter
<p>Total number of test cases for this Interface : 6
<br>&nbsp;
<li>
<a name="nsIJVMPlugin"></a><b>Interface : nsIJVMPlugin</b></li>
<br>Method:
<br>&nbsp;NS_IMETHOD AddToClassPath(const char* dirPath) = 0;
<p>&nbsp;Implemented in :mozilla and Kestrel code for windows
<br>&nbsp;Number of test cases that can be written: 3
<br>&nbsp;Test cases will be written with Empty String&nbsp; , NULL string
and a NON NULL String value for&nbsp; the parameter
<p>&nbsp;Method:
<br>&nbsp;&nbsp; NS_IMETHOD&nbsp; GetClassPath(const char* *result) = 0;
<p>&nbsp;Implemented in :mozilla and Kestrel code for windows
<br>&nbsp; Number of test cases that can be written: 3
<br>&nbsp;Test cases will be written with Empty String&nbsp; , NULL string
and a NON NULL String value for&nbsp; the parameter
<p>Method:
<br>NS_IMETHOD&nbsp; RemoveFromClassPath(const char* dirPath) = 0 ;
<p>Implemented in :mozilla and Kestrel code for windows
<br>Number of test cases that can be written: 3
<br>Test cases will be written with Empty String&nbsp; , NULL string and
a NON NULL String value for&nbsp; the parameter
<p>Method:
<br>&nbsp; NS_IMETHOD&nbsp; GetJavaWrapper(JNIEnv* jenv, jint obj, jobject
*jobj) = 0;
<p>&nbsp;Implemented in :mozilla and Kestrel code for windows
<br>Number of test cases that can be written: 6
<br>Test cases will be written with&nbsp; NULL and a NON NULL&nbsp; value
for&nbsp; the parameters jenv , jobj and min_value
<br>and max_value for obj.
<p>Method:
<br>&nbsp; NS_IMETHOD&nbsp; CreateSecureEnv(JNIEnv* proxyEnv, nsISecureEnv*
*outSecureEnv) = 0;
<p>&nbsp;Implemented in :mozilla and Kestrel code for windows
<br>Number of test cases that can be written: 4
<br>Test cases will be written with&nbsp; NULL and a NON NULL&nbsp; value
for&nbsp; the parameters
<p>Method:
<br>&nbsp; NS_IMETHOD&nbsp; SpendTime(PRUint32 timeMillis) = 0;
<p>&nbsp;Implemented in :mozilla and Kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with&nbsp; min_value and max_value or the
unsigned int.
<p>Total number of test cases for this Interface : 21
<br>&nbsp;
<li>
<a name="nsIJVMPluginTagInfo"></a><b>Interface : nsIJVMPluginTagInfo</b></li>
<br>Method:
<br>&nbsp;NS_IMETHOD GetCode(const char* *result) = 0;
<p>&nbsp;Implemented in :&nbsp; mozilla
<br>&nbsp;Number of test cases that can be written: 3
<br>&nbsp;Test cases will be written with Empty String&nbsp; , NULL string
and a NON NULL String value for&nbsp; the parameter
<p>&nbsp;Method:
<br>&nbsp;&nbsp; NS_IMETHOD&nbsp; GetCodeBase(const char* *result) = 0;
<p>&nbsp;Implemented in : mozilla
<br>&nbsp; Number of test cases that can be written: 3
<br>&nbsp;Test cases will be written with Empty String&nbsp; , NULL string
and a NON NULL String value for&nbsp; the parameter
<p>Method:
<br>&nbsp;NS_IMETHOD GetArchive(const char* *result) = 0;
<p>&nbsp;Implemented in :&nbsp; mozilla
<br>&nbsp;Number of test cases that can be written: 3
<br>&nbsp;Test cases will be written with Empty String&nbsp; , NULL string
and a NON NULL String value for&nbsp; the parameter
<p>&nbsp;Method:
<br>&nbsp;&nbsp; NS_IMETHOD&nbsp; GetName(const char* *result) = 0;
<p>&nbsp;Implemented in : mozilla
<br>&nbsp; Number of test cases that can be written: 3
<br>&nbsp;Test cases will be written with Empty String&nbsp; , NULL string
and a NON NULL String value for&nbsp; the parameter
<p>Method:
<br>&nbsp;&nbsp; NS_IMETHOD&nbsp; GetMayScript(PRBool *result) = 0;
<p>&nbsp;Implemented in : mozilla
<br>&nbsp; Number of test cases that can be written: 2
<br>&nbsp;Test cases will be written with true or false values.
<p>Total number of test cases for this Interface : 14
<br>&nbsp;
<li>
<a name="nsIJVMPrefsWindow"></a><b>Interface : nsIJVMPrefsWindow</b></li>
<br>Method:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NS_IMETHOD Show(void);
<p>Implemented in :mozilla and Kestrel code for windows
<br>Number of test cases that can be written: 1
<p>Method:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NS_IMETHOD&nbsp; Hide(void);
<p>Implemented in :mozilla and Kestrel code for windows
<br>Number of test cases that can be written: 1
<p>Method:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NS_IMETHOD&nbsp; IsVisisble(void);
<p>Implemented in :mozilla and Kestrel code for windows
<br>Number of test cases that can be written: 1
<p>Total number of test cases for this Interface : 3
<br>&nbsp;
<li>
<a name="nsIJVMWindow"></a><b>Interface : nsIJVMWindow</b></li>
<br>Method:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NS_IMETHOD Show(void);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NS_IMETHOD&nbsp; Hide(void);
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IsVisisble(void);
<p>&nbsp;All the methods in this interface are not implemented in the mozilla
<br>&nbsp;code as well as the Kestrel code. So not sure if we need to test
these
<br>methods.
<br>&nbsp;
<br>&nbsp;
<li>
<a name="nsILiveConnectManager"></a><b>Interface : nsILiveConnectManager</b></li>
<br>Method:
<br>&nbsp;NS_IMETHOD StartupLiveConnect(JSRuntime* runtime, PRBool&amp;
outStarted) = 0;
<br>&nbsp;NS_IMETHOD ShutdownLiveConnect(JSRuntime* runtime, PRBool&amp;
outStarted) = 0;
<p>These 2 methods are not implemented in mozilla code for OJI as well
as Kestrel code
<br>for windows.
<p>Method:
<br>NS_IMETHOD IsLiveConnectEnabled(PRBool&amp; outEnabled) = 0;;
<br>&nbsp;Implemented in :&nbsp; mozilla code for OJI
<p>Method:
<br>NS_IMETHOD InitLiveConnectClasses(JSContext* context, JSObject* globalObject)
= 0;
<br>&nbsp;Implemented in :&nbsp; mozilla code for OJI
<p>Method:
<br>NS_IMETHOD WrapJavaObject(JSContext* context, jobject javaObject, JSObject*
*outJSObject) = 0;
<br>&nbsp;Implemented in :&nbsp; mozilla code for OJI.
<p>&nbsp;I guess these methods get called from the mozilla main thread.
Hence
<br>I do not know a way to force some values for the parameters in the
above
<br>&nbsp;Number of test cases that can be written: NONE
<p>Total number of test cases for this Interface : NONE
<br>&nbsp;
<li>
<a name="nsIJVMConsole"></a><b>Interface : nsIJVMConsole</b></li>
<br>Method:
<br>NS_IMETHOD Show(void);
<p>Implemented in :mozilla and Kestrel code for windows
<br>Number of test cases that can be written: 1
<p>Method:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NS_IMETHOD&nbsp; Hide(void);
<p>Implemented in :mozilla and Kestrel code for windows
<br>Number of test cases that can be written: 1
<p>Method:
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NS_IMETHOD&nbsp; IsVisisble(void);
<p>Implemented in :mozilla and Kestrel code for windows
<br>Number of test cases that can be written: 1
<p>Total number of test cases for this Interface : 3
<br>&nbsp;
<br>&nbsp;
<li>
<a name="nsISecureEnv"></a><b>Interface : nsISecureEnv</b></li>
<br>Method:
<br>&nbsp;NS_IMETHOD NewObject(/*[in]*/&nbsp; jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jmethodID methodID,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jvalue *args,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jobject* result,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; nsISecurityContext* ctx = NULL) = 0;
<br>Implemented in:&nbsp; mozilla and kestrel code for windows.
<br>Number of test cases that can be written: 8
<br>Test cases will be written with Null and NON NULL values for&nbsp;
clazz, methodID,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
args, result.
<p>Method:
<br>NS_IMETHOD CallMethod(/*[in]*/&nbsp; jni_type type,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jobject obj,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jmethodID methodID,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jvalue *args,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jvalue* result,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; nsISecurityContext* ctx = NULL) = 0;
<br>Implemented in:a mozilla and kestrel code for windows
<br>Number of test cases that can be written: 10
<br>Test cases will be written with Null and NON NULL values for type ,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
obj, methodID , args , result
<br>&nbsp;
<p>Method:
<br>NS_IMETHOD NS_IMETHOD CallNonvirtualMethod(/*[in]*/&nbsp; jni_type
type,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jobject obj,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jmethodID methodID,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jvalue *args,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jvalue* result,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; nsISecurityContext* ctx = NULL) =0;
<p>Implemented in: mozilla and kestrel
<br>Number of test cases that can be written: 12
<br>Test cases will be written with Null and NON NULL values for type ,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
obj, methodID , args , result
<p>Method:
<br>NS_IMETHOD GetField(/*[in]*/&nbsp; jni_type type,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jobject obj,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jfieldID fieldID,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jvalue* result,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; nsISecurityContext* ctx = NULL) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 8
<br>Test cases will be written with NULL and NON NULL values for type,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj, fieldID
, result
<p>Method:
<br>NS_IMETHOD SetField(/*[in]*/ jni_type type,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/ jobject obj,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/ jfieldID fieldID,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/ jvalue val,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
<br>Implemented in: mozilla and kestrel
<br>Number of test cases that can be written: 8
<br>Test cases will be written with NULL and NON NULL values for type,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obj, filedID , val.
<p>Method:
<br>NS_IMETHOD CallStaticMethod(/*[in]*/&nbsp; jni_type type,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jmethodID methodID,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jvalue *args,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jvalue* result,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; nsISecurityContext* ctx = NULL) = 0;
<br>Implemented in: mozilla and kestrel
<br>Number of test cases that can be written:&nbsp; 10
<br>Test cases will be written with NULL and NON NULL values for type,
<br>clazz , methodID, args , result.
<p>Method:
<br>NS_IMETHOD GetStaticField(/*[in]*/&nbsp; jni_type type,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jfieldID fieldID,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jvalue* result,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; nsISecurityContext* ctx = NULL) = 0;
<br>Implemented in: mozilla and kestrel
<br>Number of test cases that can be written: 8
<br>Test cases will be written with&nbsp; NULL and NON NULL values for
type,
<br>&nbsp;&nbsp;&nbsp; clazz, fieldID, result.
<p>Method:
<br>NS_IMETHOD SetStaticField(/*[in]*/ jni_type type,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/ jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/ jfieldID fieldID,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/ jvalue val,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/ nsISecurityContext* ctx = NULL) = 0;
<br>Implemented in: mozilla and kestrel
<br>Number of test cases that can be written: 8
<br>Test cases will be written with NULL and NON NULL values for type,
<br>&nbsp;&nbsp;&nbsp; clazz, fieldID, result
<p>Method:
<br>NS_IMETHOD GetVersion(/*[out]*/ jint* version) = 0;
<br>Implemented in: mozilla and kestrel
<br>Number of test cases that can be written: 2
<br>Test cases will be written with max_value and min_value for
<br>&nbsp;the machine dependent int.
<p>Method:
<br>NS_IMETHOD DefineClass(/*[in]*/&nbsp; const char* name,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jobject loader,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; const jbyte *buf,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jsize len,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jclass* clazz) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 10
<br>Test cases will be written with&nbsp; Empty String string , NULL and
NON NULL string for name,
<br>NULL and NON NULL values for loader , Empty String string , NULL and
NON NULL string for buf,
<br>&nbsp;min_value and max_value for len
<p>Method:
<br>NS_IMETHOD FindClass(/*[in]*/&nbsp; const char* name,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jclass* clazz) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written:&nbsp; 3
<br>Test cases will be written with Empty String string ,
<br>NULL and NON NULL string for name.
<br>&nbsp;
<p>Method:
<br>NS_IMETHOD GetSuperclass(/*[in]*/&nbsp; jclass sub,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jclass* super) = 0;
<br>Implemented in:mozilla and kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with&nbsp; NULL and NON NULL values for
sub ,
<br>&nbsp;
<p>Method:
<br>NS_IMETHOD IsAssignableFrom(/*[in]*/&nbsp; jclass sub,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jclass super,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jboolean* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 4
<br>Test cases will be written withNULL and NON NULL values for sub,
<br>&nbsp;NULL and NON NULL vlaues for&nbsp; super .
<br>&nbsp;
<p>Method:
<br>NS_IMETHOD Throw(/*[in]*/&nbsp; jthrowable obj,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jint* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL and NON NULL values for obj
<p>Method:
<br>NS_IMETHOD ThrowNew(/*[in]*/&nbsp; jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; const char *msg,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jint* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 5
<br>Test cases will be written with&nbsp; NULL and NON NULL values for
clazz,
<br>empty string , Null string , Non null string values
<p>Method:
<br>NS_IMETHOD ExceptionOccurred(/*[out]*/ jthrowable* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 1
<br>&nbsp;
<p>Method:
<br>NS_IMETHOD ExceptionDescribe(void) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 1
<br>&nbsp;
<p>Method:
<br>NS_IMETHOD ExceptionClear(void) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 1
<br>&nbsp;
<p>Method:
<br>NS_IMETHOD FatalError(/*[in]*/ const char* msg) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written:&nbsp; 3
<br>Test cases will be written with Empty&nbsp; string , NULL string and
NON NULL string
<br>values for&nbsp; msg
<p>Method:
<br>NS_IMETHOD NewGlobalRef(/*[in]*/&nbsp; jobject lobj,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jobject* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL and NON NULL values for lobj
<p>Method:
<br>NS_IMETHOD DeleteGlobalRef(/*[in]*/ jobject gref) = 0;
<br>Implemented in:mozilla and kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with with NULL and NON NULL values for gref
<p>Method:
<br>NS_IMETHOD DeleteLocalRef(/*[in]*/ jobject obj) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL and NON NULL values for obj
<p>Method:
<br>NS_IMETHOD IsSameObject(/*[in]*/&nbsp; jobject obj1,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jobject obj2,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jboolean* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 4
<br>Test cases will be written with NULL and NON NULL values for
<br>obj1&nbsp; and obj2
<br>&nbsp;
<p>Method:
<br>NS_IMETHOD AllocObject(/*[in]*/&nbsp; jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jobject* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL and NON NULL values for
<br>clazz.
<p>Method:
<br>NS_IMETHOD GetObjectClass(/*[in]*/&nbsp; jobject obj,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jclass* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL nad NON NULL values&nbsp; for
obj
<p>Method:
<br>NS_IMETHOD IsInstanceOf(/*[in]*/&nbsp; jobject obj,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jboolean* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 4
<br>Test cases will be written with NULL and NON NULL values for
<br>obj, NULL and NON NULL values for clazz.
<p>Method:
<br>NS_IMETHOD GetMethodID(/*[in]*/&nbsp; jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; const char* name,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; const char* sig,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jmethodID* id) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 8
<br>Test cases will be written with NULL and NON NULL values for class,
<br>empty string , NULL String and NON NULL string values for name and
sig
<p>Method:
<br>NS_IMETHOD GetFieldID(/*[in]*/&nbsp; jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; const char* name,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; const char* sig,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jfieldID* id) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 8
<br>Test cases will be written with NULL and NON NULL values for clazz,
<br>empty string , NULL String and NON NULL string values for name and
sig
<p>Method:
<br>NS_IMETHOD GetStaticMethodID(/*[in]*/&nbsp; jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; const char* name,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; const char* sig,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jmethodID* id) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 8
<br>Test cases will be written with NULL and NON NULL values for clazz,
<br>empty string , NULL String and NON NULL string values for name and
sig
<p>Method:
<br>NS_IMETHOD GetStaticFieldID(/*[in]*/&nbsp; jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; const char* name,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; const char* sig,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jfieldID* id) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 8
<br>Test cases will be written with NULL and NON NULL values for clazz,
<br>empty string , NULL String and NON NULL string values for name and
sig
<p>Method:
<br>NS_IMETHOD NewString(/*[in]*/&nbsp; const jchar* unicode,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jsize len,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jstring* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 4
<br>Test cases will be written with NULL and NON NULL values for
<br>unicode&nbsp; and min and max_value for len
<p>Method:
<br>NS_IMETHOD GetStringLength(/*[in]*/&nbsp; jstring str,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jsize* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL and NON NULL values for str
<p>Method:
<br>NS_IMETHOD GetStringChars(/*[in]*/&nbsp; jstring str,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jboolean *isCopy,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ const jchar** result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 4
<br>Test cases will be written with&nbsp; NULL and NON NULL values for
str
<br>and NULL and NON NULL values for chars
<br>&nbsp;
<br>&nbsp;
<p>Method:
<br>NS_IMETHOD ReleaseStringChars(/*[in]*/&nbsp; jstring str,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; const jchar *chars) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 4
<br>Test cases will be written with NULL and NON NULL values for str
<br>and NULL and NON NULL values for chars
<p>Method:
<br>NS_IMETHOD NewStringUTF(/*[in]*/&nbsp; const char *utf,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jstring* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL and NOT NULL values for utf
<p>Method:
<br>NS_IMETHOD GetStringUTFLength(/*[in]*/&nbsp; jstring str,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jsize* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL and NOT NULL values for str
<p>Method:
<br>NS_IMETHOD GetStringUTFChars(/*[in]*/&nbsp; jstring str,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jboolean *isCopy,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ const char** result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 4
<br>Test cases will be written with NULL and NOT NULL values for str,
<br>NULL and NOT NULL values for isCopy, empty string , NULL string .
<br>&nbsp;
<p>Method:
<br>NS_IMETHOD ReleaseStringUTFChars(/*[in]*/&nbsp; jstring str,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; const char *chars) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 4
<br>Test cases will be written with NULL and NON NULLvalues for str and
chars
<p>Method:
<br>NS_IMETHOD GetArrayLength(/*[in]*/&nbsp; jarray array,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jsize* result) = 0;
<br>Implemented in:&nbsp; only kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL and NOT NULL values for array.
<p>Method:
<br>NS_IMETHOD NewObjectArray(/*[in]*/&nbsp; jsize len,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jobject init,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jobjectArray* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 6
<br>Test cases will be written with max and min_values for len,
<br>NULL and NOT NULL values for clazz, NULL and NOT NULL values for init.
<p>Method:
<br>NS_IMETHOD GetObjectArrayElement(/*[in]*/&nbsp; jobjectArray array,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jsize index,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jobject* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 4
<br>Test cases will be written with NULL and NOT NULL values for array,
<br>max and min_value for index
<p>Method:
<br>NS_IMETHOD SetObjectArrayElement(/*[in]*/&nbsp; jobjectArray array,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jsize index,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jobject val) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 6
<br>Test cases will be written with NULL and NOT NULL values for&nbsp;
array,
<br>min and max_values for index and NULL and NOT NULL values for val
<p>Method:
<br>NS_IMETHOD NewArray(/*[in]*/ jni_type element_type,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jsize len,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jarray* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 4
<br>Test cases will be written with NULL and NOT NULL values for element_type
<br>min and max_values for len
<p>Method:
<br>NS_IMETHOD GetArrayElements(/*[in]*/&nbsp; jni_type type,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jarray array,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jboolean *isCopy,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ void* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written:6
<br>Test cases will be written with NULL and NOT NULL values for type,
<br>NULL and NOT NULL values for array, NULL and NOT NULL values for isCopy
<p>Method:
<br>NS_IMETHOD ReleaseArrayElements(/*[in]*/ jni_type type,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/ jarray array,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/ void *elems,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/ jint mode) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 8
<br>Test cases will be written with NULL and NOT NULL values for type
<br>NULL and NOT NULL values for array , NULL and NOT NULL values for elems,
<br>max and min values for mode
<br>&nbsp;
<p>Method:
<br>NS_IMETHOD GetArrayRegion(/*[in]*/&nbsp; jni_type type,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jarray array,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jsize start,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jsize len,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ void* buf) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 6
<br>Test cases will be written with NULL and NOT NULL values for type,
<br>max and min values for start and len
<br>&nbsp;
<br>&nbsp;
<p>Method:
<br>NS_IMETHOD SetArrayRegion(/*[in]*/&nbsp; jni_type type,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jarray array,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jsize start,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jsize len,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; void* buf) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 8
<br>Test cases will be written with NULL and NOT NULL valus for type,
<br>NULL and NOT NULL values for array, min and max values for start ,
len.
<p>Method:
<br>NS_IMETHOD RegisterNatives(/*[in]*/&nbsp; jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; const JNINativeMethod *methods,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[in]*/&nbsp; jint nMethods,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jint* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 6
<br>Test cases will be written with NULL and NOT NULL values for clazz,
JNINativeMethod,
<br>min and max value for&nbsp; nMethods
<p>Method:
<br>NS_IMETHOD UnregisterNatives(/*[in]*/&nbsp; jclass clazz,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jint* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL and NOT NULL values for clazz
<p>Method:
<br>NS_IMETHOD MonitorEnter(/*[in]*/&nbsp; jobject obj,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jint* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written:2
<br>Test cases will be written with NULL and NOT NULL values for obj
<p>Method:
<br>NS_IMETHOD MonitorExit(/*[in]*/&nbsp; jobject obj,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jint* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL and NOT NULL values for obj
<p>Method:
<br>NS_IMETHOD GetJavaVM(/*[in]*/&nbsp; JavaVM **vm,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*[out]*/ jint* result) = 0;
<br>Implemented in: mozilla and kestrel code for windows
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL and NOT NULL values for vm
<p>Total number of (possible) test cases for this Interface : 246 (phew..)
<br>(May be even more ...)
<br>&nbsp;
<li>
<a name="nsIThreadManager"></a><b>Interface : nsIThreadManager</b></li>
<br>Method:
<br>NS_IMETHOD GetCurrentThread(PRUint32* threadID) = 0;
<br>Implemented in: kestrel
<br>Number of test cases that can be written: 2
<br>Test cases will be written with max and min values fro threadID
<p>Method:
<br>NS_IMETHOD Sleep(PRUint32 milli = 0) = 0;
<br>Implemented in: mozilla
<br>Number of test cases that can be written: 2
<br>Test cases will be written with max and min values for milli
<p>Method:
<br>NS_IMETHOD EnterMonitor(void* address) = 0;
<br>Implemented in: mozilla
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL and NOT NULL values for address
<br>tested)
<p>Method:
<br>NS_IMETHOD Wait(void* address, PRUint32 milli = 0) = 0;
<br>Implemented in: mozilla
<br>Number of test cases that can be written: 4
<br>Test cases will be writtenwith NULL and NOT NULL values for address
<br>and min and max value for milli
<p>Method:
<br>NS_IMETHOD Notify(void* address) = 0;
<br>Implemented in:mozilla
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL and NOT NULL values for address
<br>(Not sure how this can be tested)
<p>Method:
<br>NS_IMETHOD NotifyAll(void* address) = 0;
<br>Implemented in:mozilla
<br>Number of test cases that can be written: 2
<br>Test cases will be written with NULL and NOT NULL values for address
<br>&nbsp;
<p>Method:
<br>NS_IMETHOD CreateThread(PRUint32* threadID, nsIRunnable* runnable)
= 0;
<br>Implemented in:mozilla
<br>Number of test cases that can be written: 4
<br>Test cases will be written with min and max value for threadID and
NULL and NOT NULL
<br>values for runnable.
<p>Method:
<br>NS_IMETHOD PostEvent(PRUint32 threadID, nsIRunnable* runnable, PRBool
async) = 0;
<br>Implemented in:mozilla and kestrel code for windows
<br>Number of test cases that can be written: 6
<br>Test cases will be written with min and max value for threadID and
NULL and NOT NULL
<br>values for runnable, true or false value for async
<p>Total number of test cases for this Interface : 24
<br>&nbsp;
<h3>
<a NAME="How3"></a><font size=+0>2.5 Revision History.</font></h3>
</ul>
<table BORDER=2 CELLSPACING=2 CELLPADDING=2 COLS=4 WIDTH="100%" BGCOLOR="#99FFCC" NOSAVE >
<tr BGCOLOR="#FF6666" NOSAVE>
<td WIDTH="15%">
<center><b>Date</b></center>
</td>
<td WIDTH="15%">
<center><b>Version</b></center>
</td>
<td WIDTH="20%" NOSAVE>
<center><b>Author</b></center>
</td>
<td>
<center><b>Description</b></center>
</td>
</tr>
<tr BGCOLOR="#99FFCC">
<td>&nbsp; 11/04/99</td>
<td>&nbsp;1.0</td>
<td>&nbsp;Geetha Vaidyanaathan&nbsp;</td>
<td>&nbsp;first draft</td>
</tr>
</table>
<ul>
<ul>&nbsp;</ul>
</ul>
</body>
</html>

Просмотреть файл

@ -1,254 +0,0 @@
<html>
<head>
<title>OJI Test Analysis. Interfaces implemented by OJI module. </title>
</head>
<body>
<pre>
<h1>
OJI API Test Analysis. Interfaces implemented by OJI module (excluding JNIEnv). </h1>
<h2>
Table of Content</h2>
<ul>
<li><a href="#nsIJVMManager">Interface : nsIJVMManager (class nsJVMManager)</a></li>
<li><a href="#nsILiveConnectManager">Interface : nsILiveConnectManager (class nsJVMManager)</a></li>
<li><a href="#nsIThreadManager">Interface : nsIThreadManager (class nsJVMManager)</a></li>
<li><a href="#nsIJVMPluginTagInfo">Interface : nsIJVMPluginTagInfo (class nsJVMPluginTagInfo)</a></li>
</ul>
<a name="nsIJVMManager"></a><b>Interface : nsIJVMManager</b>
Method:
NS_IMETHOD CreateProxyJNI(nsISecureEnv *secureEnv, JNIEnv * *outProxyEnv);
Number of test cases that can be written: 4
Test cases will be written with NULL value and a NON NULL value for both the parameters
Method:
NS_IMETHOD GetProxyJNI(JNIEnv * *outProxyEnv);
Number of test cases that can be written: 3
Test cases will be written with
- NULL value
- NON NULL value in cases when
- the CreateProxyJNI had already been called
- hadn't already been called
Method:
NS_IMETHOD IsJavaEnabled(PRBool *outEnabled);
Number of test cases that can be written: 3
Test cases will be written with
- NULL value
- NON NULL value in cases when
- the Java is enabled
- there is not Java
Method:
NS_IMETHOD ShowJavaConsole(void);
Number of test cases that can be written: 2
Test cases will be written in cases
- the Java is enabled
- there is not Java
Total number of test cases for this Interface : 12
<a name="nsILiveConnectManager"></a><b>Interface : nsILiveConnectManager</b>
Note:
Due to the complexity of some objects used as parameteres the
varying on this objects causes very big number of test cases, so
below are enumerated only first-level test cases on stability with NULL values.
Method:
NS_IMETHOD StartupLiveConnect(JSRuntime* runtime, PRBool& outStarted);
Test cases will be written with:
runtime: NULL value
outStarted: NULL and a NON NULL value
Number of test cases that can be written: 2
Method:
NS_IMETHOD ShutdownLiveConnect(JSRuntime* runtime, PRBool& outShutdown);
Test cases will be written with:
runtime: NULL value
outShutdown: NULL and a NON NULL value
Number of test cases that can be written: 2
Method:
NS_IMETHOD IsLiveConnectEnabled(PRBool& outEnabled);
Test cases will be written with NULL and a NON NULL value
Number of test cases that can be written: 2
Method:
NS_IMETHOD InitLiveConnectClasses(JSContext* context, JSObject* globalObject);
Test cases will be written with NULL values
Number of test cases that can be written: 1
Method:
NS_IMETHOD WrapJavaObject(JSContext* context, jobject javaObject, JSObject* *outJSObject);
Test cases will be written with:
context: NULL value
javaObject: NULL value
outJSObject: NULL and a NON NULL value
Number of test cases that can be written: 2
Total number of test cases for this Interface : 9
<a name="nsIThreadManager"></a><b>Interface : nsIThreadManager</b>
Method:
NS_IMETHOD GetCurrentThread(nsPluginThread* *threadID);
Number of test cases that can be written: 2
Test cases will be written with NULL and NON NULL values
Method:
NS_IMETHOD Sleep(PRUint32 milli = 0);
Number of test cases that can be written: 2
Test cases will be written with max and min values for milli
Method:
NS_IMETHOD EnterMonitor(void* address);
Number of test cases that can be written: 4
Test cases will be written with
- NULL value
- NOT NULL values in cases when this monitor
- is free
- is already entered by this thread
- is entered by another thread
Method:
NS_IMETHOD ExitMonitor(void* address);
Number of test cases that can be written: 4
Test cases will be written with
- NULL value
- NOT NULL values in cases when this monitor
- is free
- is already entered by this thread
- is entered by another thread
Method:
NS_IMETHOD Wait(void* address, PRUint32 milli = 0);
Number of test cases that can be written: 4
Test cases will be written with
- NULL value for address and some value for milli
- NOT NULL values for address (when entered)
- and min
- and max value for milli
- NOT NULL values for address (when non-entered) and some value for milli
Method:
NS_IMETHOD Notify(void* address);
Number of test cases that can be written: 4
Test cases will be written with
- NULL value
- NOT NULL values in cases when this monitor
- isn't entered by this thread
- is already entered by this thread and there are waiting threads
- is already entered by this thread and there are not waiting threads
Method:
NS_IMETHOD NotifyAll(void* address);
Number of test cases that can be written: 4
Test cases will be written with
- NULL value
- NOT NULL values in cases when this monitor
- isn't entered by this thread
- is already entered by this thread and there are waiting threads
- is already entered by this thread and there are not waiting threads
Method:
NS_IMETHOD CreateThread(PRUint32* threadID, nsIRunnable* runnable);
Number of test cases that can be written: 4
Test cases will be written with NULL and NOT NULL values for threadID and NULL and NOT NULL
values for runnable.
Method:
NS_IMETHOD PostEvent(PRUint32 threadID, nsIRunnable* runnable, PRBool async);
Number of test cases that can be written: 6
Test cases will be written with:
threadID: for existent and not-existent thread
runnable: NULL and NOT NULL
async: true and false
Total number of test cases for this Interface : 30
<a name="nsIJVMPluginTagInfo"></a><b>Interface : nsIJVMPluginTagInfo</b>
Method:
NS_IMETHOD GetCode(const char* *result);
Number of test cases that can be written: 3
Test cases will be written with
- NULL value
- NON NULL value in cases when return value
- should be empty
- and non-empty
Method:
NS_IMETHOD GetCodeBase(const char* *result);
Number of test cases that can be written: 3
Test cases will be written with
- NULL value
- NON NULL value in cases when return value
- should be empty
- and non-empty
Method:
NS_IMETHOD GetArchive(const char* *result);
Number of test cases that can be written: 3
Test cases will be written with
- NULL value
- NON NULL value in cases when return value
- should be empty
- and non-empty
Method:
NS_IMETHOD GetName(const char* *result);
Number of test cases that can be written: 3
Test cases will be written with
- NULL value
- NON NULL value in cases when return value
- should be empty
- and non-empty
Method:
NS_IMETHOD GetMayScript(PRBool *result);
Number of test cases that can be written: 3
Test cases will be written with
- NULL value
- NON NULL value in cases when return value
- should be true
- and false
Total number of test cases for this Interface : 15
<pre>
</body>
</html>

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,106 +0,0 @@
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="GENERATOR" content="Mozilla/4.7 [en] (WinNT; I) [Netscape]">
</head>
<body>
<h2>
OJI API test specification</h2>
&nbsp;
<h3>
Goals:</h3>
The goals of the tests are to check the stability and correctnesses of
the implementation of the&nbsp; OJI API and to detect its&nbsp; errors.
<h3>
Objects to be tested:</h3>
The OJI exported interfaces are implemented by OJI mozilla module&nbsp;
or by JavaPlugin itself. Due to time/resources constrains we need to prioritize&nbsp;
the interfaces to be tested. The Java Plugin is like to be "third party
product"&nbsp; and are supposed to be tested by team that had produced
it. So the first priority&nbsp; should be assign to interfaces implemented
by OJI mozilla module.
<pre>OJI mozilla module interfaces:</pre>
<table BORDER COLS=2 WIDTH="100%" >
<tr>
<td><a href="OjiAPITestcases_oji.html#nsIJVMManager">nsIJVMManager</a></td>
<td ROWSPAN="3">all 3 are implemented by class nsJVMManager</td>
</tr>
<tr>
<td><a href="OjiAPITestcases_oji.html#nsIThreadManager">nsIThreadManager</a></td>
</tr>
<tr>
<td><a href="OjiAPITestcases_oji.html#nsILiveConnectManager">nsILiveConnectManager</a></td>
</tr>
<tr>
<td><a href="OjiAPITestcases_oji.html#nsIJVMPluginTagInfo">nsIJVMPluginTagInfo</a></td>
<td>implemented by class nsJVMPluginTagInfo</td>
</tr>
<tr>
<td><a href="OjiAPITestcases_oji_JNIEnv.html">JNIEnv</a></td>
<td>implemented by class ProxyJNIEnv and returned by nsIJVMManager::CreateProxyJNI.
It is used by LiveConnect and by other Blackwood modules</td>
</tr>
</table>
<pre>Java Plugin interfaces:</pre>
<table BORDER COLS=1 WIDTH="50%" >
<tr>
<td>nsIJVMPlugin</td>
</tr>
<tr>
<td>nsIJVMConsole</td>
</tr>
<tr>
<td>nsIJVMPrefsWindow</td>
</tr>
<tr>
<td>nsIJVMWindow</td>
</tr>
<tr>
<td>nsISecureEnv</td>
</tr>
<tr>
<td>nsISecureJNI</td>
</tr>
<tr>
<td>nsISecureJNI2</td>
</tr>
<tr>
<td>nsIJVMPluginInstance</td>
</tr>
</table>
<h3>
<br>
Common&nbsp; tests details:</h3>
The tests organization should allow to run the tests:<br>
- individually<br>
- by interface related group<br>
- all<br>
- arbitrary selected set
<p>Due to the fact that the number of the specified tests is about 1000
and they can be ran during one night it is not supposed to select the acceptance
set of the tests.
<br>&nbsp;
<br>&nbsp;
<br>&nbsp;
</body>
</html>

Просмотреть файл

@ -1,786 +0,0 @@
<html><head><title>
OJI API Tests Descriptions
</title></head><body bgcolor="white">
<center><h1>
OJI API Tests Descriptions
</h1>
<hr noshade>
<table bgcolor="lightgreen" border=1 cellpadding=5>
<tr bgcolor="lightblue">
<td>Test Name</td>
<td>Testing Method</td>
<td>Parameters</td>
<td>Description</td></tr>
<!--Total files: 5-->
<tr><td><a name="LCM_InitLiveConnectClasses_1">LCM_InitLiveConnectClasses_1</a></td><td> Initializes a JSContext with the proper LiveConnect support classes. <hr>NS_IMETHOD InitLiveConnectClasses(JSContext* context, JSObject* globalObject) </td><td>(nsnull, nsnull)</td><td>Method should fail because parameters are invalid (NULLs).</td></tr>
<tr><td><a name="LCM_IsLiveConnectEnabled_1">LCM_IsLiveConnectEnabled_1</a></td><td> Indicates whether LiveConnect can be used. <hr>NS_IMETHOD IsLiveConnectEnabled(PRBool& outEnabled) </td><td>(*out)</td><td>Method should fail because no memory is allocated for the result value.</td></tr>
<tr><td><a name="LCM_IsLiveConnectEnabled_2">LCM_IsLiveConnectEnabled_2</a></td><td> Indicates whether LiveConnect can be used. <hr>NS_IMETHOD IsLiveConnectEnabled(PRBool& outEnabled) </td><td>(out)</td><td>Method should work OK.</td></tr>
<tr><td><a name="LCM_ShutdownLiveConnect_1">LCM_ShutdownLiveConnect_1</a></td><td> Attempts to stop LiveConnect using the specified JSRuntime. <hr>NS_IMETHOD ShutdownLiveConnect(JSRuntime* runtime, PRBool& outShutdown) </td><td>(nsnull, *out)</td><td>Method should fail because no memory is allocated for the result value (PRBool *out = nsnull;)</td></tr>
<tr><td><a name="LCM_ShutdownLiveConnect_2"> LCM_ShutdownLiveConnect_2</a></td><td> Attempts to stop LiveConnect using the specified JSRuntime. <hr>NS_IMETHOD ShutdownLiveConnect(JSRuntime* runtime, PRBool& outShutdown) </td><td>(nsnull, out)</td><td>Method should fail because first parameter is incorrect (NULL).</td></tr>
<tr><td><a name="LCM_StartupLiveConnect_1">LCM_StartupLiveConnect_1</a></td><td> Attempts to start LiveConnect using the specified JSRuntime. <hr>NS_IMETHOD StartupLiveConnect(JSRuntime* runtime, PRBool& outStarted) </td><td>(nsnull, *out)</td><td>Method should fail because no memory is allocated for the result value.</td></tr>
<tr><td><a name="LCM_StartupLiveConnect_2">LCM_StartupLiveConnect_2</a></td><td> Attempts to start LiveConnect using the specified JSRuntime. <hr>NS_IMETHOD StartupLiveConnect(JSRuntime* runtime, PRBool& outStarted) </td><td>(nsnull, out)</td><td>Method should fail because first parameter is invalid.</td></tr>
<tr><td><a name="LCM_WrapJavaObject_1">LCM_WrapJavaObject_1</a></td><td> Creates a JavaScript wrapper for a Java object. <hr>NS_IMETHOD WrapJavaObject(JSContext* context, jobject javaObject, JSObject* *outJSObject) </td><td>(nsnull, nsnull, nsnull)</td><td>Method should fail because all parametrs are invalid.</td></tr>
<tr><td><a name="LCM_WrapJavaObject_2">LCM_WrapJavaObject_2</a></td><td> Creates a JavaScript wrapper for a Java object. <hr>NS_IMETHOD WrapJavaObject(JSContext* context, jobject javaObject, JSObject* *outJSObject) </td><td>(nsnull, nsnull, &out)</td><td>Method should fail because first two parametrs are invalid.</td></tr>
<!--Total files: 4-->
<tr><td><a name="JVMManager_CreateProxyJNI_1">JVMManager_CreateProxyJNI_1</a></td><td> Creates a proxy JNI with an optional secure environment (which can be NULL). There is a one-to-one correspondence between proxy JNIs and threads, so calling this method multiple times from the same thread will return the same proxy JNI. <br> [noscript] void CreateProxyJNI (in nsISecureEnv secureEnv, out JNIEnv outProxyEnv); <hr>NS_IMETHOD CreateProxyJNI(nsISecureEnv *secureEnv, JNIEnv * *outProxyEnv)</td><td>(nsnull, &jniEnv)</td><td>First paramenter CAN be NULL.</td></tr>
<tr><td><a name="JVMManager_CreateProxyJNI_2">JVMManager_CreateProxyJNI_2</a></td><td> Creates a proxy JNI with an optional secure environment (which can be NULL). There is a one-to-one correspondence between proxy JNIs and threads, so calling this method multiple times from the same thread will return the same proxy JNI. <br> [noscript] void CreateProxyJNI (in nsISecureEnv secureEnv, out JNIEnv outProxyEnv); <hr>NS_IMETHOD CreateProxyJNI(nsISecureEnv *secureEnv, JNIEnv * *outProxyEnv)</td><td>(nsnull, nsnull)</td><td>Method should fail because no space is allocated for the result pointer.</td></tr>
<tr><td><a name="JVMManager_CreateProxyJNI_3">JVMManager_CreateProxyJNI_3</a></td><td> Creates a proxy JNI with an optional secure environment (which can be NULL). There is a one-to-one correspondence between proxy JNIs and threads, so calling this method multiple times from the same thread will return the same proxy JNI. <br> [noscript] void CreateProxyJNI (in nsISecureEnv secureEnv, out JNIEnv outProxyEnv); <hr>NS_IMETHOD CreateProxyJNI(nsISecureEnv *secureEnv, JNIEnv * *outProxyEnv)</td><td>(secureEnv, nsnull)</td><td>Method should fail because no space is allocated for the result pointer.</td></tr>
<tr><td><a name="JVMManager_CreateProxyJNI_4">JVMManager_CreateProxyJNI_4</a></td><td> Creates a proxy JNI with an optional secure environment (which can be NULL). There is a one-to-one correspondence between proxy JNIs and threads, so calling this method multiple times from the same thread will return the same proxy JNI. <br> [noscript] void CreateProxyJNI (in nsISecureEnv secureEnv, out JNIEnv outProxyEnv); <hr>NS_IMETHOD CreateProxyJNI(nsISecureEnv *secureEnv, JNIEnv * *outProxyEnv)</td><td>(secureEnv, &jniEnv)</td><td>Method should work OK.</td></tr>
<tr><td><a name="JVMManager_GetProxyJNI_1">JVMManager_GetProxyJNI_1</a></td><td> Returns the proxy JNI associated with the current thread, or NULL if no such association exists. <br> [noscript] void GetProxyJNI (out JNIEnv outProxyEnv); <hr>NS_IMETHOD GetProxyJNI(JNIEnv * *outProxyEnv)</td><td>(nsnull)</td><td>Method should fail because no space is allocated for the result pointer.</td></tr>
<tr><td><a name="JVMManager_GetProxyJNI_2">JVMManager_GetProxyJNI_2</a></td><td> Returns the proxy JNI associated with the current thread, or NULL if no such association exists. <br> [noscript] void GetProxyJNI (out JNIEnv outProxyEnv); <hr>NS_IMETHOD GetProxyJNI(JNIEnv * *outProxyEnv)</td><td>(&jniEnv)</td><td>Method should work OK though we didn't call CreateProxyJNI before.</td></tr>
<tr><td><a name="JVMManager_GetProxyJNI_3">JVMManager_GetProxyJNI_3</a></td><td> Returns the proxy JNI associated with the current thread, or NULL if no such association exists. <br> [noscript] void GetProxyJNI (out JNIEnv outProxyEnv); <hr>NS_IMETHOD GetProxyJNI(JNIEnv * *outProxyEnv)</td><td>(&jniEnv)</td><td>Before calling GetProxyJNI CreateProxyJNI method is called.</td></tr>
<tr><td><a name="JVMManager_IsJavaEnabled_1">JVMManager_IsJavaEnabled_1</a></td><td> Returns whether or not Java is enabled. <br> void IsJavaEnabled (out boolean outEnabled); <hr>NS_IMETHOD IsJavaEnabled(PRBool *outEnabled)</td><td>(nsnull)</td><td>Method should fail because no space is allocated for the result pointer.</td></tr>
<tr><td><a name="JVMManager_IsJavaEnabled_2">JVMManager_IsJavaEnabled_2</a></td><td> Returns whether or not Java is enabled. <br> void IsJavaEnabled (out boolean outEnabled); <hr>NS_IMETHOD IsJavaEnabled(PRBool *outEnabled)</td><td>(&b)</td><td>Should PASS if security.enable_java property is set to true or ommited.</td></tr>
<tr><td><a name="JVMManager_IsJavaEnabled_3">JVMManager_IsJavaEnabled_3</a></td><td> Returns whether or not Java is enabled. <br> void IsJavaEnabled (out boolean outEnabled); <hr>NS_IMETHOD IsJavaEnabled(PRBool *outEnabled)</td><td>(&b)</td><td>Should PASS if security.enable_java property is set to false.</td></tr>
<tr><td><a name="JVMManager_ShowJavaConsole_1">JVMManager_ShowJavaConsole_1</a></td><td> Called from Java Console menu item. <br> void ShowJavaConsole (); <hr>NS_IMETHOD ShowJavaConsole(void)</td><td>()</td><td>CreateProxyJNI is called before ShowJavaConsole.</td></tr>
<tr><td><a name="JVMManager_ShowJavaConsole_2">JVMManager_ShowJavaConsole_2</a></td><td> Called from Java Console menu item. <br> void ShowJavaConsole (); <hr>NS_IMETHOD ShowJavaConsole(void)</td><td>()</td><td>Method should work OK, though CreateProxyJNI wasn't called before.</td></tr>
<!--Total files: 9-->
<tr><td><a name="ThreadManager_CreateThread_1">ThreadManager_CreateThread_1</a></td><td> Creates a new thread, calling the specified runnable's Run method (a la Java). <hr>NS_IMETHOD CreateThread(PRUint32* threadID, nsIRunnable* runnable) </td><td>(NULL, NULL)</td><td>Method should fail because no nsIRunnable object is specified.</td></tr>
<tr><td><a name="ThreadManager_CreateThread_2">ThreadManager_CreateThread_2</a></td><td> Creates a new thread, calling the specified runnable's Run method (a la Java). <hr>NS_IMETHOD CreateThread(PRUint32* threadID, nsIRunnable* runnable) </td><td>(&id, NULL)</td><td>Method should fail because no nsIRunnable object is specified.</td></tr>
<tr><td><a name="ThreadManager_CreateThread_3">ThreadManager_CreateThread_3</a></td><td> Creates a new thread, calling the specified runnable's Run method (a la Java). <hr>NS_IMETHOD CreateThread(PRUint32* threadID, nsIRunnable* runnable) </td><td>(NULL, (nsIRunnable*)dt)</td><td>Method should fail because no space is allocated for thread id.</td></tr>
<tr><td><a name="ThreadManager_CreateThread_4">ThreadManager_CreateThread_4</a></td><td> Creates a new thread, calling the specified runnable's Run method (a la Java). <hr>NS_IMETHOD CreateThread(PRUint32* threadID, nsIRunnable* runnable) </td><td>(&id, (nsIRunnable*)dt)</td><td>Method should work OK.</td></tr>
<tr><td><a name="ThreadManager_EnterMonitor_1">ThreadManager_EnterMonitor_1</a></td><td> Creates a unique monitor for the specified address, and makes the current system thread the owner of the monitor. <hr>NS_IMETHOD EnterMonitor(void* address) </td><td>(NULL)</td><td>Method shoulf fail because invalid (NULL) adress is specified.</td></tr>
<tr><td><a name="ThreadManager_EnterMonitor_2">ThreadManager_EnterMonitor_2</a></td><td> Creates a unique monitor for the specified address, and makes the current system thread the owner of the monitor. <hr>NS_IMETHOD EnterMonitor(void* address) </td><td>(threadMgr)</td><td>Current thread can enter monitor even if no other thread we created.</td></tr>
<tr><td><a name="ThreadManager_EnterMonitor_3">ThreadManager_EnterMonitor_3</a></td><td> Creates a unique monitor for the specified address, and makes the current system thread the owner of the monitor. <hr>NS_IMETHOD EnterMonitor(void* address) </td><td>(threadMgr)</td><td>One thread can enter monitor twice.</td></tr>
<tr><td><a name="ThreadManager_EnterMonitor_4">ThreadManager_EnterMonitor_4</a></td><td> Creates a unique monitor for the specified address, and makes the current system thread the owner of the monitor. <hr>NS_IMETHOD EnterMonitor(void* address) </td><td>(tm)</td><td>Another thread can't enter monitor locked by current thread.</td></tr>
<tr><td><a name="ThreadManager_ExitMonitor_1">ThreadManager_ExitMonitor_1</a></td><td> Exits the monitor associated with the address. <hr>NS_IMETHOD ExitMonitor(void* address) </td><td>(NULL)</td><td>Method should fail because adress is invalid (NULL).</td></tr>
<tr><td><a name="ThreadManager_ExitMonitor_2">ThreadManager_ExitMonitor_2</a></td><td> Exits the monitor associated with the address. <hr>NS_IMETHOD ExitMonitor(void* address) </td><td>(threadMgr)</td><td>Thread can exit monitor even if it doesn't own it.</td></tr>
<tr><td><a name="ThreadManager_ExitMonitor_3">ThreadManager_ExitMonitor_3</a></td><td> Exits the monitor associated with the address. <hr>NS_IMETHOD ExitMonitor(void* address) </td><td>(threadMgr)</td><td>Method should work OK.</td></tr>
<tr><td><a name="ThreadManager_ExitMonitor_4">ThreadManager_ExitMonitor_4</a></td><td> Exits the monitor associated with the address. <hr>NS_IMETHOD ExitMonitor(void* address) </td><td>(threadMgr)</td><td>Another thread CAN enter monitor if the current thread unlock it.</td></tr>
<tr><td><a name="ThreadManager_GetCurrentThread_2">ThreadManager_GetCurrentThread_2</a></td><td> Returns a unique identifier for the "current" system thread. <hr>NS_IMETHOD GetCurrentThread(nsPluginThread* *threadID) </td><td>(NULL)</td><td>Method should fail because no memory is allocated for the result pointer.</td></tr>
<tr><td><a name="ThreadManager_GetCurrentThread_1">ThreadManager_GetCurrentThread_1</a></td><td> Returns a unique identifier for the "current" system thread. <hr>NS_IMETHOD GetCurrentThread(nsPluginThread* *threadID) </td><td>(nsPluginThread**)&id)</td><td>Method should work OK.</td></tr>
<tr><td><a name="ThreadManager_Notify_1">ThreadManager_Notify_1</a></td><td> Notifies a single thread waiting on the monitor associated with the address (must be entered already). <hr>NS_IMETHOD Notify(void* address) </td><td>(NULL)</td><td>Method should fail because adress is invalid (NULL)</td></tr>
<tr><td><a name="ThreadManager_Notify_2">ThreadManager_Notify_2</a></td><td> Notifies a single thread waiting on the monitor associated with the address (must be entered already). <hr>NS_IMETHOD Notify(void* address) </td><td>(threadMgr)</td><td>Method should fail because it can call Notify only being monitor's owner.</td></tr>
<tr><td><a name="ThreadManager_Notify_3">ThreadManager_Notify_3</a></td><td> Notifies a single thread waiting on the monitor associated with the address (must be entered already). <hr>NS_IMETHOD Notify(void* address) </td><td>(threadMgr)</td><td>Method should work OK.</td></tr>
<tr><td><a name="ThreadManager_Notify_4">ThreadManager_Notify_4</a></td><td> Notifies a single thread waiting on the monitor associated with the address (must be entered already). <hr>NS_IMETHOD Notify(void* address) </td><td>(threadMgr)</td><td>Method should work even if there are no other threads waiting on monitor.</td></tr>
<tr><td><a name="ThreadManager_NotifyAll_1">ThreadManager_NotifyAll_1</a></td><td> Notifies all threads waiting on the monitor associated with the address (must be entered already). <hr>NS_IMETHOD NotifyAll(void* address) </td><td>(NULL)</td><td>Method should fail because adress is invalid (NULL)</td></tr>
<tr><td><a name="ThreadManager_NotifyAll_2">ThreadManager_NotifyAll_2</a></td><td> Notifies all threads waiting on the monitor associated with the address (must be entered already). <hr>NS_IMETHOD NotifyAll(void* address) </td><td>(threadMgr)</td><td>Method should fail because it can call Notify only being monitor's owner.</td></tr>
<tr><td><a name="ThreadManager_NotifyAll_3">ThreadManager_NotifyAll_3</a></td><td> Notifies all threads waiting on the monitor associated with the address (must be entered already). <hr>NS_IMETHOD NotifyAll(void* address) </td><td>(threadMgr)</td><td>Method should work OK.</td></tr>
<tr><td><a name="ThreadManager_NotifyAll_4">ThreadManager_NotifyAll_4</a></td><td> Notifies all threads waiting on the monitor associated with the address (must be entered already). <hr>NS_IMETHOD NotifyAll(void* address) </td><td>(threadMgr)</td><td>Method should work even if there are no other threads waiting on monitor.</td></tr>
<tr><td><a name="ThreadManager_PostEvent_1">ThreadManager_PostEvent_1</a></td><td> Posts an event to specified thread, calling the runnable from that thread. <br>@param threadID thread to call runnable from <br>@param runnable object to invoke from thread <br>@param async if true, won't block current thread waiting for result <hr>NS_IMETHOD PostEvent(PRUint32 threadID, nsIRunnable* runnable, PRBool async) </td><td>(*id, NULL, (PRBool)0)</td><td>Method should fail because thread's id is specified incorrectly (PRUint32 *id = NULL;)</td></tr>
<tr><td><a name="ThreadManager_PostEvent_2">ThreadManager_PostEvent_2</a></td><td> Posts an event to specified thread, calling the runnable from that thread. <br>@param threadID thread to call runnable from <br>@param runnable object to invoke from thread <br>@param async if true, won't block current thread waiting for result <hr>NS_IMETHOD PostEvent(PRUint32 threadID, nsIRunnable* runnable, PRBool async) </td><td>(id, NULL, (PRBool)0)</td><td>Method should fail because no object to be invoked from thread is specified.</td></tr>
<tr><td><a name="ThreadManager_PostEvent_3">ThreadManager_PostEvent_3</a></td><td> Posts an event to specified thread, calling the runnable from that thread. <br>@param threadID thread to call runnable from <br>@param runnable object to invoke from thread <br>@param async if true, won't block current thread waiting for result <hr>NS_IMETHOD PostEvent(PRUint32 threadID, nsIRunnable* runnable, PRBool async) </td><td>(id, NULL, (PRBool)1)</td><td>Method should fail because no object to be invoked from thread is specified.</td></tr>
<tr><td><a name="ThreadManager_PostEvent_5">ThreadManager_PostEvent_5</a></td><td> Posts an event to specified thread, calling the runnable from that thread. <br>@param threadID thread to call runnable from <br>@param runnable object to invoke from thread <br>@param async if true, won't block current thread waiting for result <hr>NS_IMETHOD PostEvent(PRUint32 threadID, nsIRunnable* runnable, PRBool async) </td><td>(PRUint32)pt, re, (PRBool)0)</td><td>Method should fail because thtread doesn't exist (PRThread *pt;)</td></tr>
<tr><td><a name="ThreadManager_PostEvent_6">ThreadManager_PostEvent_6</a></td><td> Posts an event to specified thread, calling the runnable from that thread. <br>@param threadID thread to call runnable from <br>@param runnable object to invoke from thread <br>@param async if true, won't block current thread waiting for result <hr>NS_IMETHOD PostEvent(PRUint32 threadID, nsIRunnable* runnable, PRBool async) </td><td>(id, rEvent, (PRBool)1)</td><td>Method should work OK.</td></tr>
<tr><td><a name="ThreadManager_PostEvent_7">ThreadManager_PostEvent_7</a></td><td> Posts an event to specified thread, calling the runnable from that thread. <br>@param threadID thread to call runnable from <br>@param runnable object to invoke from thread <br>@param async if true, won't block current thread waiting for result <hr>NS_IMETHOD PostEvent(PRUint32 threadID, nsIRunnable* runnable, PRBool async) </td><td>(id, rEvent, (PRBool)0)</td><td>Method should work OK.</td></tr>
<tr><td><a name="ThreadManager_Sleep_1">ThreadManager_Sleep_1</a></td><td> Pauses the current thread for the specified number of milliseconds. If milli is zero, then merely yields the CPU if another thread of greater or equal priority. <hr>NS_IMETHOD Sleep(PRUint32 milli = 0) </td><td>(0)</td><td>Method should work OK.</td></tr>
<tr><td><a name="ThreadManager_Sleep_2">ThreadManager_Sleep_2</a></td><td> Pauses the current thread for the specified number of milliseconds. If milli is zero, then merely yields the CPU if another thread of greater or equal priority. <hr>NS_IMETHOD Sleep(PRUint32 milli = 0) </td><td>(UINT_MAX)</td><td>Method should work OK.</td></tr>
<tr><td><a name="ThreadManager_Wait_1">ThreadManager_Wait_1</a></td><td> Waits on the monitor associated with the address (must be entered already). If milli is 0, wait indefinitely. <hr>NS_IMETHOD Wait(void* address, PRUint32 milli = 0) </td><td>(NULL, (PRUint32)100)</td><td>Method should fail because invalid adress (NULL) is specified.</td></tr>
<tr><td><a name="ThreadManager_Wait_2">ThreadManager_Wait_2</a></td><td> Waits on the monitor associated with the address (must be entered already). If milli is 0, wait indefinitely. <hr>NS_IMETHOD Wait(void* address, PRUint32 milli = 0) </td><td>(threadMgr, (PRUint32)UINT_MAX)</td><td>Method should work OK.</td></tr>
<tr><td><a name="ThreadManager_Wait_3">ThreadManager_Wait_3</a></td><td> Waits on the monitor associated with the address (must be entered already). If milli is 0, wait indefinitely. <hr>NS_IMETHOD Wait(void* address, PRUint32 milli = 0) </td><td>(threadMgr, (PRUint32)0)</td><td>Method should work OK.</td></tr>
<tr><td><a name="ThreadManager_Wait_4">ThreadManager_Wait_4</a></td><td> Waits on the monitor associated with the address (must be entered already). If milli is 0, wait indefinitely. <hr>NS_IMETHOD Wait(void* address, PRUint32 milli = 0) </td><td>(threadMgr, (PRUint32)100)</td><td>Method should fail because current thread doesn't own monitor.</td></tr>
<tr><td><a name="ThreadManager_Wait_5">ThreadManager_Wait_5</a></td><td> Waits on the monitor associated with the address (must be entered already). If milli is 0, wait indefinitely. <hr>NS_IMETHOD Wait(void* address, PRUint32 milli = 0) </td><td>(tm)</td><td>Method should work OK.</td></tr>
<!--Total files: 122-->
<tr><td><a name="JNIEnv_GetBooleanField_1">JNIEnv_GetBooleanField_1</a></td><td> jboolean GetBooleanField(jobject obj, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetBooleanField with obj = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetBooleanField_2">JNIEnv_GetBooleanField_2</a></td><td> jboolean GetBooleanField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)-100)</td><td>GetBooleanField with fieldID = (jfieldID)-100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetBooleanField_3">JNIEnv_GetBooleanField_3</a></td><td> jboolean GetBooleanField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)100)</td><td>GetBooleanField with fieldID = (jfieldID)100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetBooleanField_4">JNIEnv_GetBooleanField_4</a></td><td> jboolean GetBooleanField(jobject obj, jfieldID fieldID) </td><td>(obj, NULL)</td><td>GetBooleanField with fieldID = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetBooleanField_5">JNIEnv_GetBooleanField_5</a></td><td> jboolean GetBooleanField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetBooleanField with val == JNI_TRUE return correct value</td></tr>
<tr><td><a name="JNIEnv_GetBooleanField_6">JNIEnv_GetBooleanField_6</a></td><td> jboolean GetBooleanField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetBooleanField with val == JNI_FALSE return correct value</td></tr>
<tr><td><a name="JNIEnv_GetByteField_1">JNIEnv_GetByteField_1</a></td><td> jbyte GetByteField(jobject obj, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetByteField with obj = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetByteField_2">JNIEnv_GetByteField_2</a></td><td> jbyte GetByteField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)-100)</td><td>GetByteField with fieldID = (jfieldID)-100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetByteField_3">JNIEnv_GetByteField_3</a></td><td> jbyte GetByteField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)100)</td><td>GetByteField with fieldID = (jfieldID)=100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetByteField_4">JNIEnv_GetByteField_4</a></td><td> jbyte GetByteField(jobject obj, jfieldID fieldID) </td><td>(obj, NULL)</td><td>GetByteField with fieldID = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetByteField_5">JNIEnv_GetByteField_5</a></td><td> jbyte GetByteField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetByteField with val == MIN_JBYTE return correct value</td></tr>
<tr><td><a name="JNIEnv_GetByteField_6">JNIEnv_GetByteField_6</a></td><td> jbyte GetByteField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetByteField with val == MAX_JBYTE return correct value</td></tr>
<tr><td><a name="JNIEnv_GetCharField_1">JNIEnv_GetCharField_1</a></td><td> jchar GetCharField(jobject obj, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetCharField with obj = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetCharField_2">JNIEnv_GetCharField_2</a></td><td> jchar GetCharField(jobject obj, jfieldID fieldID) </td><td>(obj, NULL)</td><td>GetCharField with fieldID = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetCharField_3">JNIEnv_GetCharField_3</a></td><td> jchar GetCharField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)-100)</td><td>GetCharField with fieldID = (jfieldID)-100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetCharField_4">JNIEnv_GetCharField_4</a></td><td> jchar GetCharField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)100)</td><td>GetCharField with fieldID = (jfieldID) return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetCharField_5">JNIEnv_GetCharField_5</a></td><td> jchar GetCharField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetCharField(all correct) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetDoubleField_1">JNIEnv_GetDoubleField_1</a></td><td> jdouble GetDoubleField(jobject obj, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetDoubleField with obj = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetDoubleField_2">JNIEnv_GetDoubleField_2</a></td><td> jdouble GetDoubleField(jobject obj, jfieldID fieldID) </td><td>(obj, NULL)</td><td>GetDoubleField with fieldID = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetDoubleField_3">JNIEnv_GetDoubleField_3</a></td><td> jdouble GetDoubleField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)-100)</td><td>GetDoubleField with fieldID = (jfiledID)-100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetDoubleField_4">JNIEnv_GetDoubleField_4</a></td><td> jdouble GetDoubleField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)100)</td><td>GetDoubleField with fieldID = (jfieldID)100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetDoubleField_5">JNIEnv_GetDoubleField_5</a></td><td> jdouble GetDoubleField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetDoubleField with val == MIN_JDOUBLE return correct value</td></tr>
<tr><td><a name="JNIEnv_GetDoubleField_6">JNIEnv_GetDoubleField_6</a></td><td> jdouble GetDoubleField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetDoubleField with val == MAX_JDOUBLE return correct value</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_1">JNIEnv_GetFieldID_1</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>(NULL, "name_int", "I")</td><td>GetFieldID(class=NULL) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_10">JNIEnv_GetFieldID_10</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_double", "D")</td><td>GetFieldID(all right for double) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_11">JNIEnv_GetFieldID_11</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_float", "F")</td><td>GetFieldID(all right for float) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_12">JNIEnv_GetFieldID_12</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_char", "C")</td><td>GetFieldID(all right for char) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_13">JNIEnv_GetFieldID_13</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_bool", "Z")</td><td>GetFieldID(all right for boolean) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_14">JNIEnv_GetFieldID_14</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_string", "Ljava/lang/String;")</td><td>GetFieldID(all right for object (java/lang/String)) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_15">JNIEnv_GetFieldID_15</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_int_arr", "[I")</td><td>GetFieldID(all right for array) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_16">JNIEnv_GetFieldID_16</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_int_super", "I")</td><td>GetFieldID(all right for super int) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_17">JNIEnv_GetFieldID_17</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_string_super", "Ljava/lang/String;")</td><td>GetFieldID(all right for super object (java/lang/String)) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_18">JNIEnv_GetFieldID_18</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "int_field", "I")</td><td>GetFieldID(all right for private int) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_19">JNIEnv_GetFieldID_19</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_int_not_exist", "I")</td><td>GetFieldID(with incorrect name of field) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_2">JNIEnv_GetFieldID_2</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( NULL, "I")</td><td>GetFieldID(name_of_param= NULL) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_20">JNIEnv_GetFieldID_20</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "final_int", "I")</td><td>GetFieldID(all right for final int) passed - exception thrown</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_3">JNIEnv_GetFieldID_3</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "", "I")</td><td>GetFieldID(name_of_param = empty) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_4">JNIEnv_GetFieldID_4</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_int", "")</td><td>GetFieldID(sig = empty) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_5">JNIEnv_GetFieldID_5</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_int", NULL)</td><td>GetFieldID(sig = NULL) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_6">JNIEnv_GetFieldID_6</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_byte", "B")</td><td>GetFieldID(all right for byte) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_7">JNIEnv_GetFieldID_7</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_int", "I")</td><td>GetFieldID(all right for int) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_8">JNIEnv_GetFieldID_8</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_short", "S")</td><td>GetFieldID(all right for short) passed</td></tr>
<tr><td><a name="JNIEnv_GetFieldID_9">JNIEnv_GetFieldID_9</a></td><td> jfieldID GetFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "name_long", "J")</td><td>GetFieldID(all right for long) passed</td></tr>
<tr><td><a name="JNIEnv_GetFloatField_1">JNIEnv_GetFloatField_1</a></td><td> jfloat GetFloatField(jobject obj, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetFloatField with obj = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetFloatField_2">JNIEnv_GetFloatField_2</a></td><td> jfloat GetFloatField(jobject obj, jfieldID fieldID) </td><td>(obj, NULL)</td><td>GetFloatField with fieldID = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetFloatField_3">JNIEnv_GetFloatField_3</a></td><td> jfloat GetFloatField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)-100)</td><td>GetFloatField with fieldID = (jfieldID)-100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetFloatField_4">JNIEnv_GetFloatField_4</a></td><td> jfloat GetFloatField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)100)</td><td>GetFloatField with fieldID = (jfieldID)100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetFloatField_5">JNIEnv_GetFloatField_5</a></td><td> jfloat GetFloatField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetFloatField with val == MIN_JFLOAT return correct value</td></tr>
<tr><td><a name="JNIEnv_GetFloatField_6">JNIEnv_GetFloatField_6</a></td><td> jfloat GetFloatField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetFloatField with val == MAX_JFLOAT return correct value</td></tr>
<tr><td><a name="JNIEnv_GetIntField_1">JNIEnv_GetIntField_1</a></td><td> jint GetIntField(jobject obj, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetIntField with obj = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetIntField_2">JNIEnv_GetIntField_2</a></td><td> jint GetIntField(jobject obj, jfieldID fieldID) </td><td>(obj, NULL)</td><td>GetIntField with fieldID = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetIntField_3">JNIEnv_GetIntField_3</a></td><td> jint GetIntField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)-100)</td><td>GetIntField with fieldID = (jfieldID)-100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetIntField_4">JNIEnv_GetIntField_4</a></td><td> jint GetIntField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)100)</td><td>GetIntField with fieldID = (jfieldID)100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetIntField_5">JNIEnv_GetIntField_5</a></td><td> jint GetIntField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetIntField with val == MIN_JINT return correct value</td></tr>
<tr><td><a name="JNIEnv_GetIntField_6">JNIEnv_GetIntField_6</a></td><td> jint GetIntField(jobject obj, jfieldID fieldID) </td><td>()</td><td>GetField for array passed!\n</td></tr>
<tr><td><a name="JNIEnv_GetIntField_7">JNIEnv_GetIntField_7</a></td><td> jint GetIntField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetIntField with val == MAX_JINT return correct value</td></tr>
<tr><td><a name="JNIEnv_GetLongField_1">JNIEnv_GetLongField_1</a></td><td> jlong GetLongField(jobject obj, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetLongField with obj = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetLongField_2">JNIEnv_GetLongField_2</a></td><td> jlong GetLongField(jobject obj, jfieldID fieldID) </td><td>(obj, NULL)</td><td>GetLongField with fieldID = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetLongField_3">JNIEnv_GetLongField_3</a></td><td> jlong GetLongField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)-100)</td><td>GetLongField with fieldID = (jfieldID)-100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetLongField_4">JNIEnv_GetLongField_4</a></td><td> jlong GetLongField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)100)</td><td>GetLongField with fieldID = (jfieldID)100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetLongField_5">JNIEnv_GetLongField_5</a></td><td> jlong GetLongField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetLongField with val == MIN_JLONG return correct value</td></tr>
<tr><td><a name="JNIEnv_GetLongField_6">JNIEnv_GetLongField_6</a></td><td> jlong GetLongField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetLongField with val == MAX_JLONG return correct value</td></tr>
<tr><td><a name="JNIEnv_GetObjectField_1">JNIEnv_GetObjectField_1</a></td><td> jobject GetObjectField(jobject obj, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetObjectField with obj = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetObjectField_2">JNIEnv_GetObjectField_2</a></td><td> jobject GetObjectField(jobject obj, jfieldID fieldID) </td><td>(obj, NULL)</td><td>GetObjectField with fieldID = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetObjectField_3">JNIEnv_GetObjectField_3</a></td><td> jobject GetObjectField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)-100)</td><td>GetObjectField with fieldID = (jfieldID)-100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetObjectField_4">JNIEnv_GetObjectField_4</a></td><td> jobject GetObjectField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)100)</td><td>GetObjectField with fieldID = (jfieldID)100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetObjectField_5">JNIEnv_GetObjectField_5</a></td><td> jobject GetObjectField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetObjectField(all correct) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetShortField_1">JNIEnv_GetShortField_1</a></td><td> jshort GetShortField(jobject obj, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetShortField with obj = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetShortField_2">JNIEnv_GetShortField_2</a></td><td> jshort GetShortField(jobject obj, jfieldID fieldID) </td><td>(obj, NULL)</td><td>GetShortField with fieldID = NULL return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetShortField_3">JNIEnv_GetShortField_3</a></td><td> jshort GetShortField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)-100)</td><td>GetShortField with fieldID = (jfieldID)-100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetShortField_4">JNIEnv_GetShortField_4</a></td><td> jshort GetShortField(jobject obj, jfieldID fieldID) </td><td>(obj, (jfieldID)100)</td><td>GetShortField with fieldID = (jfieldID)100 return correct value - do not crash</td></tr>
<tr><td><a name="JNIEnv_GetShortField_5">JNIEnv_GetShortField_5</a></td><td> jshort GetShortField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetShortField with val == MIN_JSHORT return correct value</td></tr>
<tr><td><a name="JNIEnv_GetShortField_6">JNIEnv_GetShortField_6</a></td><td> jshort GetShortField(jobject obj, jfieldID fieldID) </td><td>(obj, fieldID)</td><td>GetShortField with val == MAX_JSHORT return correct value</td></tr>
<tr><td><a name="JNIEnv_SetBooleanField_1">JNIEnv_SetBooleanField_1</a></td><td> void SetBooleanField(jobject obj, jfieldID fieldID, jboolean val) </td><td>(NULL, fieldID, TRUE)</td><td>SetBooleanField(obj = NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetBooleanField_2">JNIEnv_SetBooleanField_2</a></td><td> void SetBooleanField(jobject obj, jfieldID fieldID, jboolean val) </td><td>(obj, (jfieldID)-100, TRUE)</td><td>SetBooleanField(fieldID = (jfieldID)-100) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetBooleanField_3">JNIEnv_SetBooleanField_3</a></td><td> void SetBooleanField(jobject obj, jfieldID fieldID, jboolean val) </td><td>(obj, (jfieldID)100, TRUE)</td><td>SetBooleanField(fieldID = (jfieldID)100) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetBooleanField_4">JNIEnv_SetBooleanField_4</a></td><td> void SetBooleanField(jobject obj, jfieldID fieldID, jboolean val) </td><td>(obj, NULL, TRUE)</td><td>SetBooleanField(fieldID = NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetBooleanField_5">JNIEnv_SetBooleanField_5</a></td><td> void SetBooleanField(jobject obj, jfieldID fieldID, jboolean val) </td><td>(obj, fieldID, JNI_FALSE)</td><td>SetBooleanField(all correct, value = JNI_FALSE) set value to field - correct</td></tr>
<tr><td><a name="JNIEnv_SetBooleanField_6">JNIEnv_SetBooleanField_6</a></td><td> void SetBooleanField(jobject obj, jfieldID fieldID, jboolean val) </td><td>(obj, fieldID, TRUE)</td><td>SetBooleanField(all correct, value = JNI_TRUE) set value to field - correct</td></tr>
<tr><td><a name="JNIEnv_SetBooleanField_7">JNIEnv_SetBooleanField_7</a></td><td> void SetBooleanField(jobject obj, jfieldID fieldID, jboolean val) </td><td>(obj, fieldID, FALSE)</td><td>SetBooleanField(all correct, value = JNI_FALSE) set value to field - correct</td></tr>
<tr><td><a name="JNIEnv_SetByteField_1">JNIEnv_SetByteField_1</a></td><td> void SetByteField(jobject obj, jfieldID fieldID, jbyte val) </td><td>(NULL, fieldID,1)</td><td>SetByteField(obj = NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetByteField_2">JNIEnv_SetByteField_2</a></td><td> void SetByteField(jobject obj, jfieldID fieldID, jbyte val) </td><td>(obj, (jfieldID)-100, 1)</td><td>SetByteField(fieldID = (jfieldID)-100) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetByteField_3">JNIEnv_SetByteField_3</a></td><td> void SetByteField(jobject obj, jfieldID fieldID, jbyte val) </td><td>(obj, (jfieldID)100, 1)</td><td>SetByteField(fieldID = (jfieldID)100) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetByteField_4">JNIEnv_SetByteField_4</a></td><td> void SetByteField(jobject obj, jfieldID fieldID, jbyte val) </td><td>(obj, NULL, 1)</td><td>SetByteField(fieldID = NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetByteField_5">JNIEnv_SetByteField_5</a></td><td> void SetByteField(jobject obj, jfieldID fieldID, jbyte val) </td><td>(obj, fieldID, (jbyte)-1)</td><td>SetByteField(all correct, value = 1) set value to field - correct</td></tr>
<tr><td><a name="JNIEnv_SetByteField_6">JNIEnv_SetByteField_6</a></td><td> void SetByteField(jobject obj, jfieldID fieldID, jbyte val) </td><td>(obj, fieldID, 1)</td><td>SetByteField(all correct, value = 1) set value to field - correct</td></tr>
<tr><td><a name="JNIEnv_SetCharField_1">JNIEnv_SetCharField_1</a></td><td> void SetCharField(jobject obj, jfieldID fieldID, jchar val) </td><td>(NULL, fieldID, 'a')</td><td>SetCharField(obi = NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetCharField_2">JNIEnv_SetCharField_2</a></td><td> void SetCharField(jobject obj, jfieldID fieldID, jchar val) </td><td>(obj, (jfieldID)100, 'a')</td><td>SetCharField(fieldID = (jfieldID)100) do not crush - correct</td></tr>
<tr><td><a name="JNIEnv_SetCharField_3">JNIEnv_SetCharField_3</a></td><td> void SetCharField(jobject obj, jfieldID fieldID, jchar val) </td><td>(obj, (jfieldID)-100, 'a')</td><td>SetCharField(fieldID = (jfieldID)-100) do not crush - correct</td></tr>
<tr><td><a name="JNIEnv_SetCharField_4">JNIEnv_SetCharField_4</a></td><td> void SetCharField(jobject obj, jfieldID fieldID, jchar val) </td><td>(obj, NULL, 'a')</td><td>SetCharField(fieldID = NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetCharField_5">JNIEnv_SetCharField_5</a></td><td> void SetCharField(jobject obj, jfieldID fieldID, jchar val) </td><td>(obj, fieldID, (jchar)NULL)</td><td>SetCharField(all correct, value = NULL) set value to field - correct</td></tr>
<tr><td><a name="JNIEnv_SetCharField_6">JNIEnv_SetCharField_6</a></td><td> void SetCharField(jobject obj, jfieldID fieldID, jchar val) </td><td>(obj, fieldID, 'a')</td><td>SetCharField(all correct, value = a) set value to field - correct</td></tr>
<tr><td><a name="JNIEnv_SetDoubleField_1">JNIEnv_SetDoubleField_1</a></td><td> void SetDoubleField(jobject obj, jfieldID fieldID, jdouble val) </td><td>(NULL, fieldID, 1)</td><td>SetDoubleField(obj == NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetDoubleField_2">JNIEnv_SetDoubleField_2</a></td><td> void SetDoubleField(jobject obj, jfieldID fieldID, jdouble val) </td><td>(obj, (jfieldID)-100, 1)</td><td>SetDoubleField(fieldID = (jfieldID)-100) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetDoubleField_3">JNIEnv_SetDoubleField_3</a></td><td> void SetDoubleField(jobject obj, jfieldID fieldID, jdouble val) </td><td>(obj, (jfieldID)100, 1)</td><td>SetDoubleField(fieldID = (jfieldID)100) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetDoubleField_4">JNIEnv_SetDoubleField_4</a></td><td> void SetDoubleField(jobject obj, jfieldID fieldID, jdouble val) </td><td>(obj, NULL, 1)</td><td>SetDoubleField(fieldID = NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetDoubleField_5">JNIEnv_SetDoubleField_5</a></td><td> void SetDoubleField(jobject obj, jfieldID fieldID, jdouble val) </td><td>(obj, fieldID, (jdouble)10)</td><td>SetDoubleField(all correct) set value to field - correct</td></tr>
<tr><td><a name="JNIEnv_SetDoubleField_6">JNIEnv_SetDoubleField_6</a></td><td> void SetDoubleField(jobject obj, jfieldID fieldID, jdouble val) </td><td>(obj, fieldID, -100)</td><td>SetDoubleField(all correct) set value to field - correct</td></tr>
<tr><td><a name="JNIEnv_SetFloatField_1">JNIEnv_SetFloatField_1</a></td><td> void SetFloatField(jobject obj, jfieldID fieldID, jfloat val) </td><td>(NULL, fieldID, 1)</td><td>SetFloatField(obj == NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetFloatField_2">JNIEnv_SetFloatField_2</a></td><td> void SetFloatField(jobject obj, jfieldID fieldID, jfloat val) </td><td>(obj, (jfieldID)-100, 1)</td><td>SetFloatField(fieldID = (jfieldID)-100) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetFloatField_3">JNIEnv_SetFloatField_3</a></td><td> void SetFloatField(jobject obj, jfieldID fieldID, jfloat val) </td><td>(obj, (jfieldID)100, 1)</td><td>SetFloatField(fieldID = (jfieldID)100) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetFloatField_4">JNIEnv_SetFloatField_4</a></td><td> void SetFloatField(jobject obj, jfieldID fieldID, jfloat val) </td><td>(obj, NULL, 1)</td><td>SetFloatField(fieldID = NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetFloatField_5">JNIEnv_SetFloatField_5</a></td><td> void SetFloatField(jobject obj, jfieldID fieldID, jfloat val) </td><td>(obj, fieldID, 1)</td><td>SetFloatField(all correct) set value to field - correct</td></tr>
<tr><td><a name="JNIEnv_SetIntField_1">JNIEnv_SetIntField_1</a></td><td> void SetIntField(jobject obj, jfieldID fieldID, jint val) </td><td>(NULL, fieldID, 1)</td><td>SetIntField(obj == NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetIntField_2">JNIEnv_SetIntField_2</a></td><td> void SetIntField(jobject obj, jfieldID fieldID, jint val) </td><td>(obj, (jfieldID)-100, 1)</td><td>SetIntField(fieldID = (jfieldID)-100) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetIntField_3">JNIEnv_SetIntField_3</a></td><td> void SetIntField(jobject obj, jfieldID fieldID, jint val) </td><td>(obj, (jfieldID)100, 1)</td><td>SetIntField(fieldID = (jfieldID)100) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetIntField_4">JNIEnv_SetIntField_4</a></td><td> void SetIntField(jobject obj, jfieldID fieldID, jint val) </td><td>(obj, NULL, 1)</td><td>SetIntField(fieldID = NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetIntField_5">JNIEnv_SetIntField_5</a></td><td> void SetIntField(jobject obj, jfieldID fieldID, jint val) </td><td>(obj, fieldID, 1)</td><td>SetIntField(all correct) set value to field - correct</td></tr>
<tr><td><a name="JNIEnv_SetLongField_1">JNIEnv_SetLongField_1</a></td><td> void SetLongField(jobject obj, jfieldID fieldID, jlong val) </td><td>(NULL, fieldID, 1)</td><td>SetLongField(obj == NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetLongField_2">JNIEnv_SetLongField_2</a></td><td> void SetLongField(jobject obj, jfieldID fieldID, jlong val) </td><td>(obj, (jfieldID)-100, 1)</td><td>SetLongField(fieldID == (fieldID)-100) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetLongField_3">JNIEnv_SetLongField_3</a></td><td> void SetLongField(jobject obj, jfieldID fieldID, jlong val) </td><td>(obj, (jfieldID)100, 1)</td><td>SetLongField(fieldID == (fieldID)100) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetLongField_4">JNIEnv_SetLongField_4</a></td><td> void SetLongField(jobject obj, jfieldID fieldID, jlong val) </td><td>(obj, NULL, 1)</td><td>SetLongField(fieldID == NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetLongField_5">JNIEnv_SetLongField_5</a></td><td> void SetLongField(jobject obj, jfieldID fieldID, jlong val) </td><td>(obj, fieldID, 1)</td><td>SetLongField(all correct) set value to field - correct</td></tr>
<tr><td><a name="JNIEnv_SetObjectField_1">JNIEnv_SetObjectField_1</a></td><td> void SetObjectField(jobject obj, jfieldID fieldID, jobject val) </td><td>(NULL, fieldID, arr)</td><td>SetObjectField(for obj = NULL) passed</td></tr>
<tr><td><a name="JNIEnv_SetObjectField_2">JNIEnv_SetObjectField_2</a></td><td> void SetObjectField(jobject obj, jfieldID fieldID, jobject val) </td><td>(obj, (jfieldID)-100, arr)</td><td>SetObjectField(for fieldID = -100) passed</td></tr>
<tr><td><a name="JNIEnv_SetObjectField_3">JNIEnv_SetObjectField_3</a></td><td> void SetObjectField(jobject obj, jfieldID fieldID, jobject val) </td><td>(obj, (jfieldID)100, arr)</td><td>SetObjectField(for fieldID = 100) passed</td></tr>
<tr><td><a name="JNIEnv_SetObjectField_4">JNIEnv_SetObjectField_4</a></td><td> void SetObjectField(jobject obj, jfieldID fieldID, jobject val) </td><td>(obj, NULL, arr)</td><td>SetObjectField(for fieldID = NULL) passed</td></tr>
<tr><td><a name="JNIEnv_SetObjectField_5">JNIEnv_SetObjectField_5</a></td><td> void SetObjectField(jobject obj, jfieldID fieldID, jobject val) </td><td>(obj, fieldID, NULL)</td><td>SetObjectField(object == NULL) passed</td></tr>
<tr><td><a name="JNIEnv_SetShortField_1">JNIEnv_SetShortField_1</a></td><td> void SetShortField(jobject obj, jfieldID fieldID, jshort val) </td><td>(NULL, fieldID, 1)</td><td>SetShortField(obj == NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetShortField_2">JNIEnv_SetShortField_2</a></td><td> void SetShortField(jobject obj, jfieldID fieldID, jshort val) </td><td>(obj, (jfieldID)-100, 1)</td><td>SetShortField(with fieldID == (jfieldID)-100) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetShortField_3">JNIEnv_SetShortField_3</a></td><td> void SetShortField(jobject obj, jfieldID fieldID, jshort val) </td><td>(obj, (jfieldID)100, 1)</td><td>SetShortField(with fieldID == (jfieldID)100) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetShortField_4">JNIEnv_SetShortField_4</a></td><td> void SetShortField(jobject obj, jfieldID fieldID, jshort val) </td><td>(obj, NULL, 1)</td><td>SetShortField(fieldID == NULL) do not set field - correct</td></tr>
<tr><td><a name="JNIEnv_SetShortField_5">JNIEnv_SetShortField_5</a></td><td> void SetShortField(jobject obj, jfieldID fieldID, jshort val) </td><td>(obj, fieldID, 1)</td><td>SetShortField(all correct) set value to field - correct</td></tr>
<!--Total files: 119-->
<tr><td><a name="JNIEnv_GetStaticBooleanField_1">JNIEnv_GetStaticBooleanField_1</a></td><td> jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetStaticBooleanField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticBooleanField_2">JNIEnv_GetStaticBooleanField_2</a></td><td> jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)-100)</td><td>GetStaticBooleanField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticBooleanField_3">JNIEnv_GetStaticBooleanField_3</a></td><td> jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)100)</td><td>GetStaticBooleanField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticBooleanField_4">JNIEnv_GetStaticBooleanField_4</a></td><td> jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) </td><td>(clazz, NULL)</td><td>GetStaticBooleanField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticBooleanField_5">JNIEnv_GetStaticBooleanField_5</a></td><td> jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticBooleanField with val == JNI_TRUE return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticBooleanField_6">JNIEnv_GetStaticBooleanField_6</a></td><td> jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticBooleanField with val == JNI_FALSE return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticByteField_1">JNIEnv_GetStaticByteField_1</a></td><td> jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetStaticByteField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticByteField_2">JNIEnv_GetStaticByteField_2</a></td><td> jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)-100)</td><td>GetStaticByteField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticByteField_3">JNIEnv_GetStaticByteField_3</a></td><td> jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)100)</td><td>GetStaticByteField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticByteField_4">JNIEnv_GetStaticByteField_4</a></td><td> jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) </td><td>(clazz, NULL)</td><td>GetStaticByteField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticByteField_5">JNIEnv_GetStaticByteField_5</a></td><td> jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticByteField with val == MIN_JBYTE return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticByteField_6">JNIEnv_GetStaticByteField_6</a></td><td> jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticByteField with val == MAX_JBYTE return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticCharField_1">JNIEnv_GetStaticCharField_1</a></td><td> jchar GetStaticCharField(jclass clazz, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetStaticCharField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticCharField_2">JNIEnv_GetStaticCharField_2</a></td><td> jchar GetStaticCharField(jclass clazz, jfieldID fieldID) </td><td>(clazz, NULL)</td><td>GetStaticCharField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticCharField_3">JNIEnv_GetStaticCharField_3</a></td><td> jchar GetStaticCharField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)-100)</td><td>GetStaticCharField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticCharField_4">JNIEnv_GetStaticCharField_4</a></td><td> jchar GetStaticCharField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)100)</td><td>GetStaticCharField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticCharField_5">JNIEnv_GetStaticCharField_5</a></td><td> jchar GetStaticCharField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticCharField(all correct) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticDoubleField_1">JNIEnv_GetStaticDoubleField_1</a></td><td> jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetStaticDoubleField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticDoubleField_2">JNIEnv_GetStaticDoubleField_2</a></td><td> jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) </td><td>(clazz, NULL)</td><td>GetStaticDoubleField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticDoubleField_3">JNIEnv_GetStaticDoubleField_3</a></td><td> jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)-100)</td><td>GetStaticDoubleField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticDoubleField_4">JNIEnv_GetStaticDoubleField_4</a></td><td> jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)100)</td><td>GetStaticDoubleField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticDoubleField_5">JNIEnv_GetStaticDoubleField_5</a></td><td> jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticDoubleField(all correct) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_1">JNIEnv_GetStaticFieldID_1</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>(NULL, "static_name_int", "I" )</td><td>GetStaticFieldID with class == NULL return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_10">JNIEnv_GetStaticFieldID_10</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_name_long", "J")</td><td>GetStaticFieldID(all right for long) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_11">JNIEnv_GetStaticFieldID_11</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_name_double", "D")</td><td>GetStaticFieldID(all right for double) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_12">JNIEnv_GetStaticFieldID_12</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_name_char", "C")</td><td>GetStaticFieldID(all right for char) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_13">JNIEnv_GetStaticFieldID_13</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_name_float", "F")</td><td>GetStaticFieldID(all right for float) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_14">JNIEnv_GetStaticFieldID_14</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_name_string", "Ljava/lang/String;")</td><td>GetStaticFieldID(all right for object (string)) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_15">JNIEnv_GetStaticFieldID_15</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_name_int_arr", "[I")</td><td>GetStaticFieldID(all right for array) passed</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_16">JNIEnv_GetStaticFieldID_16</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "public_static_super_int", "I")</td><td>GetStaticFieldID(all right for super int) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_17">JNIEnv_GetStaticFieldID_17</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "public_static_super_object", "Ljava/lang/String;")</td><td>GetStaticFieldID(all right for super public object (string)) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_18">JNIEnv_GetStaticFieldID_18</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_name_int_private", "I")</td><td>GetStaticFieldID(all right for private int) return correct value - exception thrown</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_19">JNIEnv_GetStaticFieldID_19</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_name_int", "")</td><td>GetStaticFieldID with empty sig return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_2">JNIEnv_GetStaticFieldID_2</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( NULL, "I")</td><td>GetStaticFieldID with param_name == NULL return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_20">JNIEnv_GetStaticFieldID_20</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_final_int", "I")</td><td>GetFieldID(all right for static final int) passed</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_3">JNIEnv_GetStaticFieldID_3</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_name_int", NULL)</td><td>GetStaticFieldID with sig == NULL return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_4">JNIEnv_GetStaticFieldID_4</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_name_int", "J")</td><td>GetStaticFieldID with incorrect sig return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_5">JNIEnv_GetStaticFieldID_5</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_nameint", "I")</td><td>GetStaticFieldID with incorrect name return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_6">JNIEnv_GetStaticFieldID_6</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_final_int", "I")</td><td>GetFieldID(all right for static final int) passed</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_7">JNIEnv_GetStaticFieldID_7</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_name_bool", "Z")</td><td>GetStaticFieldID(all right for boolean) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_8">JNIEnv_GetStaticFieldID_8</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_name_byte", "B")</td><td>GetStaticFieldID(all right for byte) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFieldID_9">JNIEnv_GetStaticFieldID_9</a></td><td> jfieldID GetStaticFieldID(jclass clazz, const char *name, const char *sig) </td><td>( "static_name_short", "S")</td><td>GetStaticFieldID(all right for short) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFloatField_1">JNIEnv_GetStaticFloatField_1</a></td><td> jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetStaticFloatField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticFloatField_2">JNIEnv_GetStaticFloatField_2</a></td><td> jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) </td><td>(clazz, NULL)</td><td>GetStaticFloatField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticFloatField_3">JNIEnv_GetStaticFloatField_3</a></td><td> jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)-100)</td><td>GetStaticFloatField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticFloatField_4">JNIEnv_GetStaticFloatField_4</a></td><td> jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)100)</td><td>GetStaticFloatField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticFloatField_5">JNIEnv_GetStaticFloatField_5</a></td><td> jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticFloatField with val == MIN_JFLOAT return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticFloatField_6">JNIEnv_GetStaticFloatField_6</a></td><td> jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticFloatField with val == MAX_JFLOAT return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticIntField_1">JNIEnv_GetStaticIntField_1</a></td><td> jint GetStaticIntField(jclass clazz, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetStaticIntField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticIntField_2">JNIEnv_GetStaticIntField_2</a></td><td> jint GetStaticIntField(jclass clazz, jfieldID fieldID) </td><td>(clazz, NULL)</td><td>GetStaticIntField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticIntField_3">JNIEnv_GetStaticIntField_3</a></td><td> jint GetStaticIntField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)-100)</td><td>GetStaticIntField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticIntField_4">JNIEnv_GetStaticIntField_4</a></td><td> jint GetStaticIntField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)100)</td><td>GetStaticIntField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticIntField_5">JNIEnv_GetStaticIntField_5</a></td><td> jint GetStaticIntField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticIntField with val == MIN_JINT return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticIntField_6">JNIEnv_GetStaticIntField_6</a></td><td> jint GetStaticIntField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticIntField with val == MAX_JINT return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticLongField_1">JNIEnv_GetStaticLongField_1</a></td><td> jlong GetStaticLongField(jclass clazz, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetStaticLongField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticLongField_2">JNIEnv_GetStaticLongField_2</a></td><td> jlong GetStaticLongField(jclass clazz, jfieldID fieldID) </td><td>(clazz, NULL)</td><td>GetStaticLongField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticLongField_3">JNIEnv_GetStaticLongField_3</a></td><td> jlong GetStaticLongField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)-100)</td><td>GetStaticLongField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticLongField_4">JNIEnv_GetStaticLongField_4</a></td><td> jlong GetStaticLongField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)100)</td><td>GetStaticLongField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticLongField_5">JNIEnv_GetStaticLongField_5</a></td><td> jlong GetStaticLongField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticLongField with val == MIN_JLONG return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticLongField_6">JNIEnv_GetStaticLongField_6</a></td><td> jlong GetStaticLongField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticLongField with val == MAX_JLONG return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticObjectField_1">JNIEnv_GetStaticObjectField_1</a></td><td> jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetStaticObjectField(clazz == NULL) return NULL</td></tr>
<tr><td><a name="JNIEnv_GetStaticObjectField_2">JNIEnv_GetStaticObjectField_2</a></td><td> jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) </td><td>(clazz, NULL)</td><td>GetStaticObjectField(fieldID == NULL) return NULL</td></tr>
<tr><td><a name="JNIEnv_GetStaticObjectField_3">JNIEnv_GetStaticObjectField_3</a></td><td> jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)-100)</td><td>GetStaticObjectField(fieldID is incorrect negative) return NULL</td></tr>
<tr><td><a name="JNIEnv_GetStaticObjectField_4">JNIEnv_GetStaticObjectField_4</a></td><td> jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)100)</td><td>GetStaticObjectField(fieldID is incorrect positive) return NULL</td></tr>
<tr><td><a name="JNIEnv_GetStaticObjectField_5">JNIEnv_GetStaticObjectField_5</a></td><td> jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticObjectField(all right) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticShortField_1">JNIEnv_GetStaticShortField_1</a></td><td> jshort GetStaticShortField(jclass clazz, jfieldID fieldID) </td><td>(NULL, fieldID)</td><td>GetStaticShortField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticShortField_2">JNIEnv_GetStaticShortField_2</a></td><td> jshort GetStaticShortField(jclass clazz, jfieldID fieldID) </td><td>(clazz, NULL)</td><td>GetStaticShortField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticShortField_3">JNIEnv_GetStaticShortField_3</a></td><td> jshort GetStaticShortField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)-100)</td><td>GetStaticShortField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticShortField_4">JNIEnv_GetStaticShortField_4</a></td><td> jshort GetStaticShortField(jclass clazz, jfieldID fieldID) </td><td>(clazz, (jfieldID)100)</td><td>GetStaticShortField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_GetStaticShortField_5">JNIEnv_GetStaticShortField_5</a></td><td> jshort GetStaticShortField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticShortField with val == MIN_JSHORT return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticShortField_6">JNIEnv_GetStaticShortField_6</a></td><td> jshort GetStaticShortField(jclass clazz, jfieldID fieldID) </td><td>(clazz, fieldID)</td><td>GetStaticShortField with val == MAX_JSHORT return correct value</td></tr>
<tr><td><a name="JNIEnv_SetStaticBooleanField_1">JNIEnv_SetStaticBooleanField_1</a></td><td> void SetStaticBooleanField(jclass clazz, jfieldID fieldID, jboolean value) </td><td>(NULL, fieldID, TRUE)</td><td>SetStaticBooleanField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticBooleanField_2">JNIEnv_SetStaticBooleanField_2</a></td><td> void SetStaticBooleanField(jclass clazz, jfieldID fieldID, jboolean value) </td><td>(clazz, (jfieldID)-100, TRUE)</td><td>SetStaticBooleanField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticBooleanField_3">JNIEnv_SetStaticBooleanField_3</a></td><td> void SetStaticBooleanField(jclass clazz, jfieldID fieldID, jboolean value) </td><td>(clazz, (jfieldID)100, TRUE)</td><td>SetStaticBooleanField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticBooleanField_4">JNIEnv_SetStaticBooleanField_4</a></td><td> void SetStaticBooleanField(jclass clazz, jfieldID fieldID, jboolean value) </td><td>(clazz, NULL, TRUE)</td><td>SetStaticBooleanField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticBooleanField_5">JNIEnv_SetStaticBooleanField_5</a></td><td> void SetStaticBooleanField(jclass clazz, jfieldID fieldID, jboolean value) </td><td>(clazz, fieldID, JNI_FALSE)</td><td>SetStaticBooleanField(all correct, value == JNI_FALSE) set correct value to field</td></tr>
<tr><td><a name="JNIEnv_SetStaticBooleanField_6">JNIEnv_SetStaticBooleanField_6</a></td><td> void SetStaticBooleanField(jclass clazz, jfieldID fieldID, jboolean value) </td><td>(clazz, fieldID, JNI_TRUE)</td><td>SetStaticBooleanField(all correct, value == JNI_TRUE) set correct value to field</td></tr>
<tr><td><a name="JNIEnv_SetStaticByteField_1">JNIEnv_SetStaticByteField_1</a></td><td> void SetStaticByteField(jclass clazz, jfieldID fieldID, jbyte value) </td><td>(NULL, fieldID,1)</td><td>SetStaticByteField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticByteField_2">JNIEnv_SetStaticByteField_2</a></td><td> void SetStaticByteField(jclass clazz, jfieldID fieldID, jbyte value) </td><td>(clazz, (jfieldID)-100, 1)</td><td>SetStaticByteField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticByteField_3">JNIEnv_SetStaticByteField_3</a></td><td> void SetStaticByteField(jclass clazz, jfieldID fieldID, jbyte value) </td><td>(clazz, (jfieldID)100, 1)</td><td>SetStaticByteField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticByteField_4">JNIEnv_SetStaticByteField_4</a></td><td> void SetStaticByteField(jclass clazz, jfieldID fieldID, jbyte value) </td><td>(clazz, NULL, 1)</td><td>SetStaticByteField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticByteField_5">JNIEnv_SetStaticByteField_5</a></td><td> void SetStaticByteField(jclass clazz, jfieldID fieldID, jbyte value) </td><td>(clazz, fieldID, (jbyte)10)</td><td>SetStaticByteField(all correct, value == 10) set correct value to field</td></tr>
<tr><td><a name="JNIEnv_SetStaticByteField_6">JNIEnv_SetStaticByteField_6</a></td><td> void SetStaticByteField(jclass clazz, jfieldID fieldID, jbyte value) </td><td>(clazz, fieldID, (jbyte)-10)</td><td>SetStaticByteField(all correct, value == -10) set correct value to field</td></tr>
<tr><td><a name="JNIEnv_SetStaticCharField_1">JNIEnv_SetStaticCharField_1</a></td><td> void SetStaticCharField(jclass clazz, jfieldID fieldID, jchar value) </td><td>(NULL, fieldID, 'a')</td><td>SetStaticCharField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticCharField_2">JNIEnv_SetStaticCharField_2</a></td><td> void SetStaticCharField(jclass clazz, jfieldID fieldID, jchar value) </td><td>(clazz, (jfieldID)100, 'a')</td><td>SetStaticCharField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticCharField_3">JNIEnv_SetStaticCharField_3</a></td><td> void SetStaticCharField(jclass clazz, jfieldID fieldID, jchar value) </td><td>(clazz, (jfieldID)-100, 'a')</td><td>SetStaticCharField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticCharField_4">JNIEnv_SetStaticCharField_4</a></td><td> void SetStaticCharField(jclass clazz, jfieldID fieldID, jchar value) </td><td>(clazz, NULL, 'a')</td><td>SetStaticCharField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticCharField_5">JNIEnv_SetStaticCharField_5</a></td><td> void SetStaticCharField(jclass clazz, jfieldID fieldID, jchar value) </td><td>(clazz, fieldID, (jchar)NULL)</td><td>SetStaticCharField(all correct, value == (jchar)NULL) set correct value to field</td></tr>
<tr><td><a name="JNIEnv_SetStaticCharField_6">JNIEnv_SetStaticCharField_6</a></td><td> void SetStaticCharField(jclass clazz, jfieldID fieldID, jchar value) </td><td>(clazz, fieldID, 'a')</td><td>SetStaticCharField(all correct, value == a) set correct value to field</td></tr>
<tr><td><a name="JNIEnv_SetStaticDoubleField_1">JNIEnv_SetStaticDoubleField_1</a></td><td> void SetStaticDoubleField(jclass clazz, jfieldID fieldID, jdouble value) </td><td>(NULL, fieldID, 1)</td><td>SetStaticDoubleField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticDoubleField_2">JNIEnv_SetStaticDoubleField_2</a></td><td> void SetStaticDoubleField(jclass clazz, jfieldID fieldID, jdouble value) </td><td>(clazz, (jfieldID)-100, 1)</td><td>SetStaticDoubleField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticDoubleField_3">JNIEnv_SetStaticDoubleField_3</a></td><td> void SetStaticDoubleField(jclass clazz, jfieldID fieldID, jdouble value) </td><td>(clazz, (jfieldID)100, 1)</td><td>SetStaticDoubleField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticDoubleField_4">JNIEnv_SetStaticDoubleField_4</a></td><td> void SetStaticDoubleField(jclass clazz, jfieldID fieldID, jdouble value) </td><td>(clazz, NULL, 1)</td><td>SetStaticDoubleField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticDoubleField_5">JNIEnv_SetStaticDoubleField_5</a></td><td> void SetStaticDoubleField(jclass clazz, jfieldID fieldID, jdouble value) </td><td>(clazz, fieldID, (jdouble)100)</td><td>SetStaticDoubleField(all correct, value == 100) set correct value to field</td></tr>
<tr><td><a name="JNIEnv_SetStaticDoubleField_6">JNIEnv_SetStaticDoubleField_6</a></td><td> void SetStaticDoubleField(jclass clazz, jfieldID fieldID, jdouble value) </td><td>(clazz, fieldID, -100)</td><td>SetStaticDoubleField(all correct, value == -100) set correct value to field</td></tr>
<tr><td><a name="JNIEnv_SetStaticFloatField_1">JNIEnv_SetStaticFloatField_1</a></td><td> void SetStaticFloatField(jclass clazz, jfieldID fieldID, jfloat value) </td><td>(NULL, fieldID, 1)</td><td>SetStaticFloatField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticFloatField_2">JNIEnv_SetStaticFloatField_2</a></td><td> void SetStaticFloatField(jclass clazz, jfieldID fieldID, jfloat value) </td><td>(clazz, (jfieldID)-100, 1)</td><td>SetStaticFloatField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticFloatField_3">JNIEnv_SetStaticFloatField_3</a></td><td> void SetStaticFloatField(jclass clazz, jfieldID fieldID, jfloat value) </td><td>(clazz, (jfieldID)100, 1)</td><td>SetStaticFloatField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticFloatField_4">JNIEnv_SetStaticFloatField_4</a></td><td> void SetStaticFloatField(jclass clazz, jfieldID fieldID, jfloat value) </td><td>(clazz, NULL, 1)</td><td>SetStaticFloatField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticFloatField_5">JNIEnv_SetStaticFloatField_5</a></td><td> void SetStaticFloatField(jclass clazz, jfieldID fieldID, jfloat value) </td><td>(clazz, fieldID, 1)</td><td>SetStaticFloatField(all right, value == 1) return correct value</td></tr>
<tr><td><a name="JNIEnv_SetStaticIntField_1">JNIEnv_SetStaticIntField_1</a></td><td> void SetStaticIntField(jclass clazz, jfieldID fieldID, jint value) </td><td>(NULL, fieldID, 1)</td><td>SetStaticIntField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticIntField_2">JNIEnv_SetStaticIntField_2</a></td><td> void SetStaticIntField(jclass clazz, jfieldID fieldID, jint value) </td><td>(clazz, (jfieldID)-100, 1)</td><td>SetStaticIntField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticIntField_3">JNIEnv_SetStaticIntField_3</a></td><td> void SetStaticIntField(jclass clazz, jfieldID fieldID, jint value) </td><td>(clazz, (jfieldID)100, 1)</td><td>SetStaticIntField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticIntField_4">JNIEnv_SetStaticIntField_4</a></td><td> void SetStaticIntField(jclass clazz, jfieldID fieldID, jint value) </td><td>(clazz, NULL, 1)</td><td>SetStaticIntField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticIntField_5">JNIEnv_SetStaticIntField_5</a></td><td> void SetStaticIntField(jclass clazz, jfieldID fieldID, jint value) </td><td>(clazz, fieldID, 1)</td><td>SetStaticIntField(all right, value == 1) return correct value</td></tr>
<tr><td><a name="JNIEnv_SetStaticLongField_1">JNIEnv_SetStaticLongField_1</a></td><td> void SetStaticLongField(jclass clazz, jfieldID fieldID, jlong value) </td><td>(NULL, fieldID, 1)</td><td>SetStaticLongField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticLongField_2">JNIEnv_SetStaticLongField_2</a></td><td> void SetStaticLongField(jclass clazz, jfieldID fieldID, jlong value) </td><td>(clazz, (jfieldID)-100, 1)</td><td>SetStaticLongField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticLongField_3">JNIEnv_SetStaticLongField_3</a></td><td> void SetStaticLongField(jclass clazz, jfieldID fieldID, jlong value) </td><td>(clazz, (jfieldID)100, 1)</td><td>SetStaticLongField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticLongField_4">JNIEnv_SetStaticLongField_4</a></td><td> void SetStaticLongField(jclass clazz, jfieldID fieldID, jlong value) </td><td>(clazz, NULL, 1)</td><td>SetStaticLongField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticLongField_5">JNIEnv_SetStaticLongField_5</a></td><td> void SetStaticLongField(jclass clazz, jfieldID fieldID, jlong value) </td><td>(clazz, fieldID, 1)</td><td>SetStaticLongField(all right, value == 1) return correct value</td></tr>
<tr><td><a name="JNIEnv_SetStaticObjectField_1">JNIEnv_SetStaticObjectField_1</a></td><td> void SetStaticObjectField(jclass clazz, jfieldID fieldID, jobject value) </td><td>(NULL, fieldID, str)</td><td>SetStaticObjectField(clazz == NULL) return correct value</td></tr>
<tr><td><a name="JNIEnv_SetStaticObjectField_2">JNIEnv_SetStaticObjectField_2</a></td><td> void SetStaticObjectField(jclass clazz, jfieldID fieldID, jobject value) </td><td>(clazz, (jfieldID)-100, str)</td><td>SetStaticObjectField(fieldID incorrect negative) return correct value</td></tr>
<tr><td><a name="JNIEnv_SetStaticObjectField_3">JNIEnv_SetStaticObjectField_3</a></td><td> void SetStaticObjectField(jclass clazz, jfieldID fieldID, jobject value) </td><td>(clazz, (jfieldID)100, str)</td><td>SetStaticObjectField(fieldID incorrect positive) return correct value</td></tr>
<tr><td><a name="JNIEnv_SetStaticObjectField_4">JNIEnv_SetStaticObjectField_4</a></td><td> void SetStaticObjectField(jclass clazz, jfieldID fieldID, jobject value) </td><td>(clazz, NULL, str)</td><td>SetStaticObjectField(fieldID == NULL) return correct value</td></tr>
<tr><td><a name="JNIEnv_SetStaticObjectField_5">JNIEnv_SetStaticObjectField_5</a></td><td> void SetStaticObjectField(jclass clazz, jfieldID fieldID, jobject value) </td><td>(clazz, fieldID, str)</td><td>SetStaticObjectField(all right) return correct value</td></tr>
<tr><td><a name="JNIEnv_SetStaticShortField_1">JNIEnv_SetStaticShortField_1</a></td><td> void SetStaticShortField(jclass clazz, jfieldID fieldID, jshort value) </td><td>(NULL, fieldID, 1)</td><td>SetStaticShortField(clazz == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticShortField_2">JNIEnv_SetStaticShortField_2</a></td><td> void SetStaticShortField(jclass clazz, jfieldID fieldID, jshort value) </td><td>(clazz, (jfieldID)-100, 1)</td><td>SetStaticShortField(fieldID == (jfieldID)-100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticShortField_3">JNIEnv_SetStaticShortField_3</a></td><td> void SetStaticShortField(jclass clazz, jfieldID fieldID, jshort value) </td><td>(clazz, (jfieldID)100, 1)</td><td>SetStaticShortField(fieldID == (jfieldID)100) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticShortField_4">JNIEnv_SetStaticShortField_4</a></td><td> void SetStaticShortField(jclass clazz, jfieldID fieldID, jshort value) </td><td>(clazz, NULL, 1)</td><td>SetStaticShortField(fieldID == NULL) do not crush</td></tr>
<tr><td><a name="JNIEnv_SetStaticShortField_5">JNIEnv_SetStaticShortField_5</a></td><td> void SetStaticShortField(jclass clazz, jfieldID fieldID, jshort value) </td><td>(clazz, fieldID, 1)</td><td>SetStaticShortField(all right, value == 1) return correct value</td></tr>
<!--Total files: 112-->
<tr><td><a name="JNIEnv_GetArrayLength_1">JNIEnv_GetArrayLength_1</a></td><td> jsize GetArrayLength(jarray array) </td><td>(arr)</td><td>GetArrayLength(arr) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetArrayLength_2">JNIEnv_GetArrayLength_2</a></td><td> jsize GetArrayLength(jarray array) </td><td>(NULL)</td><td>GetArrayLength(NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetArrayLength_3">JNIEnv_GetArrayLength_3</a></td><td> jsize GetArrayLength(jarray array) </td><td>(arr)</td><td>GetArrayLength(empty) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetBooleanArrayElements_1">JNIEnv_GetBooleanArrayElements_1</a></td><td> jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) </td><td>(NULL, &isCopy)</td><td>GetBooleanArrayElements(NULL, NOT_NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetBooleanArrayElements_2">JNIEnv_GetBooleanArrayElements_2</a></td><td> jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) </td><td>(arr, NULL)</td><td>GetBooleanArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetBooleanArrayElements_3">JNIEnv_GetBooleanArrayElements_3</a></td><td> jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) </td><td>(arr, &isCopy)</td><td>GetBooleanArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetBooleanArrayRegion_1">JNIEnv_GetBooleanArrayRegion_1</a></td><td> void GetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, jboolean *buf) </td><td>(arr, start, leng, val)</td><td>GetBooleanArrayRegion(all right) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetByteArrayElements_1">JNIEnv_GetByteArrayElements_1</a></td><td> jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) </td><td>(NULL, &isCopy)</td><td>GetByteArrayElements(NULL, NOT_NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetByteArrayElements_2">JNIEnv_GetByteArrayElements_2</a></td><td> jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) </td><td>(arr, NULL)</td><td>GetByteArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetByteArrayElements_3">JNIEnv_GetByteArrayElements_3</a></td><td> jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) </td><td>(arr, &isCopy)</td><td>GetByteArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetByteArrayRegion_1">JNIEnv_GetByteArrayRegion_1</a></td><td> void GetByteArrayRegion(jbyteArray array, jsize start, jsize len, jbyte *buf) </td><td>(arr, start, leng, val)</td><td>GetByteArrayRegion(all right) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetCharArrayElements_1">JNIEnv_GetCharArrayElements_1</a></td><td> jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) </td><td>(NULL, &isCopy)</td><td>GetCharArrayElements(NULL, NOT_NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetCharArrayElements_2">JNIEnv_GetCharArrayElements_2</a></td><td> jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) </td><td>(arr, NULL)</td><td>GetCharArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetCharArrayElements_3">JNIEnv_GetCharArrayElements_3</a></td><td> jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) </td><td>(arr, &isCopy)</td><td>GetCharArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetCharArrayRegion_1">JNIEnv_GetCharArrayRegion_1</a></td><td> void GetCharArrayRegion(jcharArray array, jsize start, jsize len, jchar *buf) </td><td>(arr, start, leng, val)</td><td>GetCharArrayRegion(all right) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetDoubleArrayElements_1">JNIEnv_GetDoubleArrayElements_1</a></td><td> jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) </td><td>(NULL, &isCopy)</td><td>GetDoubleArrayElements(NULL, NOT_NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetDoubleArrayElements_2">JNIEnv_GetDoubleArrayElements_2</a></td><td> jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) </td><td>(arr, NULL)</td><td>GetDoubleArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetDoubleArrayElements_3">JNIEnv_GetDoubleArrayElements_3</a></td><td> jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) </td><td>(arr, &isCopy)</td><td>GetDoubleArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetDoubleArrayRegion_1">JNIEnv_GetDoubleArrayRegion_1</a></td><td> void GetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, jdouble *buf) </td><td>(arr, start, leng, val)</td><td>GetDoubleArrayRegion(all right) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetFloatArrayElements_1">JNIEnv_GetFloatArrayElements_1</a></td><td> jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) </td><td>(NULL, &isCopy)</td><td>GetFloatArrayElements(NULL, NOT_NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetFloatArrayElements_2">JNIEnv_GetFloatArrayElements_2</a></td><td> jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) </td><td>(arr, NULL)</td><td>GetFloatArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetFloatArrayElements_3">JNIEnv_GetFloatArrayElements_3</a></td><td> jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) </td><td>(arr, &isCopy)</td><td>GetFloatArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetFloatArrayRegion_1">JNIEnv_GetFloatArrayRegion_1</a></td><td> void GetFloatArrayRegion(jfloatArray array, jsize start, jsize len, jfloat *buf) </td><td>(arr, start, leng, val)</td><td>GetFloatArrayRegion(all right) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetIntArrayElements_1">JNIEnv_GetIntArrayElements_1</a></td><td> jint * GetIntArrayElements(jintArray array, jboolean *isCopy) </td><td>(NULL, &isCopy)</td><td>GetIntArrayElements(NULL, NOT_NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetIntArrayElements_2">JNIEnv_GetIntArrayElements_2</a></td><td> jint * GetIntArrayElements(jintArray array, jboolean *isCopy) </td><td>(arr, NULL)</td><td>GetIntArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetIntArrayElements_3">JNIEnv_GetIntArrayElements_3</a></td><td> jint * GetIntArrayElements(jintArray array, jboolean *isCopy) </td><td>(arr, &isCopy)</td><td>GetIntArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetIntArrayRegion_1">JNIEnv_GetIntArrayRegion_1</a></td><td> void GetIntArrayRegion(jintArray array, jsize start, jsize len, jint *buf) </td><td>(arr, start, leng, val)</td><td>GetIntArrayRegion(all right) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetIntArrayRegion_2">JNIEnv_GetIntArrayRegion_2</a></td><td> void GetIntArrayRegion(jintArray array, jsize start, jsize len, jint *buf) </td><td>(arr, start, leng, NULL)</td><td>GetIntArrayRegion(with buf as NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetIntArrayRegion_3">JNIEnv_GetIntArrayRegion_3</a></td><td> void GetIntArrayRegion(jintArray array, jsize start, jsize len, jint *buf) </td><td>(NULL, start, leng, val)</td><td>GetIntArrayRegion(arr = NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetIntArrayRegion_4">JNIEnv_GetIntArrayRegion_4</a></td><td> void GetIntArrayRegion(jintArray array, jsize start, jsize len, jint *buf) </td><td>(arr, start, leng, val)</td><td>GetIntArrayRegion(where start is -1) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetLongArrayElements_1">JNIEnv_GetLongArrayElements_1</a></td><td> jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) </td><td>(NULL, &isCopy)</td><td>GetLongArrayElements(NULL, NOT_NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetLongArrayElements_2">JNIEnv_GetLongArrayElements_2</a></td><td> jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) </td><td>(arr, NULL)</td><td>GetLongArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetLongArrayElements_3">JNIEnv_GetLongArrayElements_3</a></td><td> jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) </td><td>(arr, &isCopy)</td><td>GetLongArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetLongArrayRegion_1">JNIEnv_GetLongArrayRegion_1</a></td><td> void GetLongArrayRegion(jlongArray array, jsize start, jsize len, jlong *buf) </td><td>(arr, start, leng, val)</td><td>GetLongArrayRegion(all right) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetObjectArrayElement_1">JNIEnv_GetObjectArrayElement_1</a></td><td> jobject GetObjectArrayElement(jobjectArray array, jsize index) </td><td>(arr, (jsize) 0)</td><td>GetObjectArrayElement(all correct index >= 0 ) returns correct value - empty array</td></tr>
<tr><td><a name="JNIEnv_GetObjectArrayElement_2">JNIEnv_GetObjectArrayElement_2</a></td><td> jobject GetObjectArrayElement(jobjectArray array, jsize index) </td><td>(arr, (jsize) 0)</td><td>NewObjectArray(object as NULL) returns correct value - empty array</td></tr>
<tr><td><a name="JNIEnv_GetObjectArrayElement_3">JNIEnv_GetObjectArrayElement_3</a></td><td> jobject GetObjectArrayElement(jobjectArray array, jsize index) </td><td>(NULL, (jsize) 0)</td><td>NewObjectArray(array as NULL) returns correct value - empty array</td></tr>
<tr><td><a name="JNIEnv_GetObjectArrayElement_4">JNIEnv_GetObjectArrayElement_4</a></td><td> jobject GetObjectArrayElement(jobjectArray array, jsize index) </td><td>(arr, (jsize) -1)</td><td>GetObjectArrayElement(index < 0 ) returns correct value - empty array</td></tr>
<tr><td><a name="JNIEnv_GetObjectArrayElement_5">JNIEnv_GetObjectArrayElement_5</a></td><td> jobject GetObjectArrayElement(jobjectArray array, jsize index) </td><td>(arr, (jsize) 6)</td><td>GetObjectArrayElement(index > length ) returns correct value - empty array</td></tr>
<tr><td><a name="JNIEnv_GetShortArrayElements_1">JNIEnv_GetShortArrayElements_1</a></td><td> jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) </td><td>(NULL, &isCopy)</td><td>GetShortArrayElements(NULL, NOT_NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetShortArrayElements_2">JNIEnv_GetShortArrayElements_2</a></td><td> jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) </td><td>(arr, NULL)</td><td>GetShortArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetShortArrayElements_3">JNIEnv_GetShortArrayElements_3</a></td><td> jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) </td><td>(arr, &isCopy)</td><td>GetShortArrayElements(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetShortArrayRegion_1">JNIEnv_GetShortArrayRegion_1</a></td><td> void GetShortArrayRegion(jshortArray array, jsize start, jsize len, jshort *buf) </td><td>(arr, start, leng, val)</td><td>GetShortArrayRegion(all right) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewBooleanArray_1">JNIEnv_NewBooleanArray_1</a></td><td> jbooleanArray NewBooleanArray(jsize len) </td><td>(5)</td><td>NewBooleanArray(5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewBooleanArray_2">JNIEnv_NewBooleanArray_2</a></td><td> jbooleanArray NewBooleanArray(jsize len) </td><td>(-5)</td><td>NewBooleanArray(-5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewBooleanArray_3">JNIEnv_NewBooleanArray_3</a></td><td> jbooleanArray NewBooleanArray(jsize len) </td><td>(0)</td><td>NewBooleanArray(0) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewByteArray_1">JNIEnv_NewByteArray_1</a></td><td> jbyteArray NewByteArray(jsize len) </td><td>(5)</td><td>NewByteArray(5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewByteArray_2">JNIEnv_NewByteArray_2</a></td><td> jbyteArray NewByteArray(jsize len) </td><td>(-5)</td><td>NewByteArray(-5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewByteArray_3">JNIEnv_NewByteArray_3</a></td><td> jbyteArray NewByteArray(jsize len) </td><td>(0)</td><td>NewByteArray(0) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewCharArray_1">JNIEnv_NewCharArray_1</a></td><td> jcharArray NewCharArray(jsize len) </td><td>(5)</td><td>NewCharArray(5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewCharArray_2">JNIEnv_NewCharArray_2</a></td><td> jcharArray NewCharArray(jsize len) </td><td>(-5)</td><td>NewCharArray(-5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewCharArray_3">JNIEnv_NewCharArray_3</a></td><td> jcharArray NewCharArray(jsize len) </td><td>(0)</td><td>NewCharArray(0) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewDoubleArray_1">JNIEnv_NewDoubleArray_1</a></td><td> jdoubleArray NewDoubleArray(jsize len) </td><td>(5)</td><td>NewDoubleArray(5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewDoubleArray_2">JNIEnv_NewDoubleArray_2</a></td><td> jdoubleArray NewDoubleArray(jsize len) </td><td>(-5)</td><td>NewDoubleArray(-5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewDoubleArray_3">JNIEnv_NewDoubleArray_3</a></td><td> jdoubleArray NewDoubleArray(jsize len) </td><td>(0)</td><td>NewDoubleArray(0) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewFloatArray_1">JNIEnv_NewFloatArray_1</a></td><td> jfloatArray NewFloatArray(jsize len) </td><td>(5)</td><td>NewFloatArray(5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewFloatArray_2">JNIEnv_NewFloatArray_2</a></td><td> jfloatArray NewFloatArray(jsize len) </td><td>(-5)</td><td>NewFloatArray(-5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewFloatArray_3">JNIEnv_NewFloatArray_3</a></td><td> jfloatArray NewFloatArray(jsize len) </td><td>(0)</td><td>NewFloatArray(0) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewIntArray_1">JNIEnv_NewIntArray_1</a></td><td> jintArray NewIntArray(jsize len) </td><td>(5)</td><td>NewIntArray(5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewIntArray_2">JNIEnv_NewIntArray_2</a></td><td> jintArray NewIntArray(jsize len) </td><td>(-5)</td><td>NewIntArray(-5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewIntArray_3">JNIEnv_NewIntArray_3</a></td><td> jintArray NewIntArray(jsize len) </td><td>(0)</td><td>NewIntArray(0) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewLongArray_1">JNIEnv_NewLongArray_1</a></td><td> jlongArray NewLongArray(jsize len) </td><td>(5)</td><td>NewLongArray(5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewLongArray_2">JNIEnv_NewLongArray_2</a></td><td> jlongArray NewLongArray(jsize len) </td><td>(-5)</td><td>NewLongArray(-5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewLongArray_3">JNIEnv_NewLongArray_3</a></td><td> jlongArray NewLongArray(jsize len) </td><td>(0)</td><td>NewLongArray(0) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewObjectArray_1">JNIEnv_NewObjectArray_1</a></td><td> jobjectArray NewObjectArray(jsize len, jclass clazz, jobject init) </td><td>(5, clazz, NULL)</td><td>NewObjectArray(obj ia NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewObjectArray_2">JNIEnv_NewObjectArray_2</a></td><td> jobjectArray NewObjectArray(jsize len, jclass clazz, jobject init) </td><td>(-5, clazz, NULL)</td><td>NewObjectArray(-5, clazz, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewObjectArray_3">JNIEnv_NewObjectArray_3</a></td><td> jobjectArray NewObjectArray(jsize len, jclass clazz, jobject init) </td><td>(0, clazz, obj)</td><td>NewObjectArray(all correct with length = 0 ) returns correct value - empty array</td></tr>
<tr><td><a name="JNIEnv_NewObjectArray_4">JNIEnv_NewObjectArray_4</a></td><td> jobjectArray NewObjectArray(jsize len, jclass clazz, jobject init) </td><td>(4, clazz, obj)</td><td>NewObjectArray(all correct with length > 0 ) returns correct value - empty array</td></tr>
<tr><td><a name="JNIEnv_NewObjectArray_5">JNIEnv_NewObjectArray_5</a></td><td> jobjectArray NewObjectArray(jsize len, jclass clazz, jobject init) </td><td>(5, clazz, obj_incor)</td><td>NewObjectArray(obj is incorrect) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewObjectArray_6">JNIEnv_NewObjectArray_6</a></td><td> jobjectArray NewObjectArray(jsize len, jclass clazz, jobject init) </td><td>(5, NULL, obj)</td><td>NewObjectArray(obj is incorrect) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewShortArray_1">JNIEnv_NewShortArray_1</a></td><td> jshortArray NewShortArray(jsize len) </td><td>(5)</td><td>NewShortArray(5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewShortArray_2">JNIEnv_NewShortArray_2</a></td><td> jshortArray NewShortArray(jsize len) </td><td>(-5)</td><td>NewShortArray(-5) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewShortArray_3">JNIEnv_NewShortArray_3</a></td><td> jshortArray NewShortArray(jsize len) </td><td>(0)</td><td>NewShortArray(0) returns correct value</td></tr>
<tr><td><a name="JNIEnv_ReleaseBooleanArrayElements_1">JNIEnv_ReleaseBooleanArrayElements_1</a></td><td> void ReleaseBooleanArrayElements(jbooleanArray array, jboolean *elems, jint mode) </td><td>(arr, val, 0)</td><td>ReleaseBooleanArrayElements(arr, val, 0) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseBooleanArrayElements_2">JNIEnv_ReleaseBooleanArrayElements_2</a></td><td> void ReleaseBooleanArrayElements(jbooleanArray array, jboolean *elems, jint mode) </td><td>(arr, val, JNI_ABORT)</td><td>ReleaseBooleanArrayElements(arr, val, JNI_ABORT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseBooleanArrayElements_3">JNIEnv_ReleaseBooleanArrayElements_3</a></td><td> void ReleaseBooleanArrayElements(jbooleanArray array, jboolean *elems, jint mode) </td><td>(arr, val, JNI_COMMIT)</td><td>ReleaseBooleanArrayElements(arr, val, JNI_COMMIT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseByteArrayElements_1">JNIEnv_ReleaseByteArrayElements_1</a></td><td> void ReleaseByteArrayElements(jbyteArray array, jbyte *elems, jint mode) </td><td>(arr, val, 0)</td><td>ReleaseByteArrayElements(arr, val, 0) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseByteArrayElements_2">JNIEnv_ReleaseByteArrayElements_2</a></td><td> void ReleaseByteArrayElements(jbyteArray array, jbyte *elems, jint mode) </td><td>(arr, val, JNI_ABORT)</td><td>ReleaseByteArrayElements(arr, val, JNI_ABORT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseByteArrayElements_3">JNIEnv_ReleaseByteArrayElements_3</a></td><td> void ReleaseByteArrayElements(jbyteArray array, jbyte *elems, jint mode) </td><td>(arr, val, JNI_COMMIT)</td><td>ReleaseByteArrayElements(arr, val, JNI_COMMIT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseCharArrayElements_1">JNIEnv_ReleaseCharArrayElements_1</a></td><td> void ReleaseCharArrayElements(jcharArray array, jchar *elems, jint mode) </td><td>(arr, val, 0)</td><td>ReleaseCharArrayElements(arr, val, 0) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseCharArrayElements_2">JNIEnv_ReleaseCharArrayElements_2</a></td><td> void ReleaseCharArrayElements(jcharArray array, jchar *elems, jint mode) </td><td>(arr, val, JNI_ABORT)</td><td>ReleaseCharArrayElements(arr, val, JNI_ABORT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseCharArrayElements_3">JNIEnv_ReleaseCharArrayElements_3</a></td><td> void ReleaseCharArrayElements(jcharArray array, jchar *elems, jint mode) </td><td>(arr, val, JNI_COMMIT)</td><td>ReleaseCharArrayElements(arr, val, JNI_COMMIT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseDoubleArrayElements_1">JNIEnv_ReleaseDoubleArrayElements_1</a></td><td> void ReleaseDoubleArrayElements(jdoubleArray array, jdouble *elems, jint mode) </td><td>(arr, val, 0)</td><td>ReleaseDoubleArrayElements(arr, val, 0) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseDoubleArrayElements_2">JNIEnv_ReleaseDoubleArrayElements_2</a></td><td> void ReleaseDoubleArrayElements(jdoubleArray array, jdouble *elems, jint mode) </td><td>(arr, val, JNI_ABORT)</td><td>ReleaseDoubleArrayElements(arr, val, JNI_ABORT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseDoubleArrayElements_3">JNIEnv_ReleaseDoubleArrayElements_3</a></td><td> void ReleaseDoubleArrayElements(jdoubleArray array, jdouble *elems, jint mode) </td><td>(arr, val, JNI_COMMIT)</td><td>ReleaseDoubleArrayElements(arr, val, JNI_COMMIT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseFloatArrayElements_1">JNIEnv_ReleaseFloatArrayElements_1</a></td><td> void ReleaseFloatArrayElements(jfloatArray array, jfloat *elems, jint mode) </td><td>(arr, val, 0)</td><td>ReleaseFloatArrayElements(arr, val, 0) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseFloatArrayElements_2">JNIEnv_ReleaseFloatArrayElements_2</a></td><td> void ReleaseFloatArrayElements(jfloatArray array, jfloat *elems, jint mode) </td><td>(arr, val, JNI_ABORT)</td><td>ReleaseFloatArrayElements(arr, val, JNI_ABORT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseFloatArrayElements_3">JNIEnv_ReleaseFloatArrayElements_3</a></td><td> void ReleaseFloatArrayElements(jfloatArray array, jfloat *elems, jint mode) </td><td>(arr, val, JNI_COMMIT)</td><td>ReleaseFloatArrayElements(arr, val, JNI_COMMIT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseIntArrayElements_1">JNIEnv_ReleaseIntArrayElements_1</a></td><td> void ReleaseIntArrayElements(jintArray array, jint *elems, jint mode) </td><td>(arr, val, 0)</td><td>ReleaseIntArrayElements(arr, val, 0) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseIntArrayElements_2">JNIEnv_ReleaseIntArrayElements_2</a></td><td> void ReleaseIntArrayElements(jintArray array, jint *elems, jint mode) </td><td>(arr, val, JNI_ABORT)</td><td>ReleaseIntArrayElements(arr, val, JNI_ABORT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseIntArrayElements_3">JNIEnv_ReleaseIntArrayElements_3</a></td><td> void ReleaseIntArrayElements(jintArray array, jint *elems, jint mode) </td><td>(arr, val, JNI_COMMIT)</td><td>ReleaseIntArrayElements(arr, val, JNI_COMMIT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseLongArrayElements_1">JNIEnv_ReleaseLongArrayElements_1</a></td><td> void ReleaseLongArrayElements(jlongArray array, jlong *elems, jint mode) </td><td>(arr, val, 0)</td><td>ReleaseLongArrayElements(arr, val, 0) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseLongArrayElements_2">JNIEnv_ReleaseLongArrayElements_2</a></td><td> void ReleaseLongArrayElements(jlongArray array, jlong *elems, jint mode) </td><td>(arr, val, JNI_ABORT)</td><td>ReleaseLongArrayElements(arr, val, JNI_ABORT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseLongArrayElements_3">JNIEnv_ReleaseLongArrayElements_3</a></td><td> void ReleaseLongArrayElements(jlongArray array, jlong *elems, jint mode) </td><td>(arr, val, JNI_COMMIT)</td><td>ReleaseLongArrayElements(arr, val, JNI_COMMIT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseShortArrayElements_1">JNIEnv_ReleaseShortArrayElements_1</a></td><td> void ReleaseShortArrayElements(jshortArray array, jshort *elems, jint mode) </td><td>(arr, val, 0)</td><td>ReleaseShortArrayElements(arr, val, 0) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseShortArrayElements_2">JNIEnv_ReleaseShortArrayElements_2</a></td><td> void ReleaseShortArrayElements(jshortArray array, jshort *elems, jint mode) </td><td>(arr, val, JNI_ABORT)</td><td>ReleaseShortArrayElements(arr, val, JNI_ABORT) is correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseShortArrayElements_3">JNIEnv_ReleaseShortArrayElements_3</a></td><td> void ReleaseShortArrayElements(jshortArray array, jshort *elems, jint mode) </td><td>(arr, val, JNI_COMMIT)</td><td>ReleaseShortArrayElements(arr, val, JNI_COMMIT) is correct</td></tr>
<tr><td><a name="JNIEnv_SetBooleanArrayRegion_1">JNIEnv_SetBooleanArrayRegion_1</a></td><td> void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, jboolean *buf) </td><td>(arr, start, leng, buf)</td><td>SetBooleanArrayRegion(all correct) returns correct value</td></tr>
<tr><td><a name="JNIEnv_SetByteArrayRegion_1">JNIEnv_SetByteArrayRegion_1</a></td><td> void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, jbyte *buf) </td><td>(arr, start, leng, buf)</td><td>SetByteArrayRegion(all correct) returns correct value</td></tr>
<tr><td><a name="JNIEnv_SetCharArrayRegion_1">JNIEnv_SetCharArrayRegion_1</a></td><td> void SetCharArrayRegion(jcharArray array, jsize start, jsize len, jchar *buf) </td><td>(arr, start, leng, buf)</td><td>SetCharArrayRegion(arr, NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_SetDoubleArrayRegion_1">JNIEnv_SetDoubleArrayRegion_1</a></td><td> void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, jdouble *buf) </td><td>(arr, start, leng, buf)</td><td>SetDoubleArrayRegion(all right) returns correct value</td></tr>
<tr><td><a name="JNIEnv_SetFloatArrayRegion_1">JNIEnv_SetFloatArrayRegion_1</a></td><td> void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, jfloat *buf) </td><td>(arr, start, leng, buf)</td><td>SetFloatArrayRegion(all right) returns correct value</td></tr>
<tr><td><a name="JNIEnv_SetIntArrayRegion_1">JNIEnv_SetIntArrayRegion_1</a></td><td> void SetIntArrayRegion(jintArray array, jsize start, jsize len, jint *buf) </td><td>(arr, start, leng, buf)</td><td>SetIntArrayRegion(all right) returns correct value</td></tr>
<tr><td><a name="JNIEnv_SetIntArrayRegion_2">JNIEnv_SetIntArrayRegion_2</a></td><td> void SetIntArrayRegion(jintArray array, jsize start, jsize len, jint *buf) </td><td>(arr, start, leng, NULL)</td><td>SetIntArrayRegion(with buf as NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_SetIntArrayRegion_3">JNIEnv_SetIntArrayRegion_3</a></td><td> void SetIntArrayRegion(jintArray array, jsize start, jsize len, jint *buf) </td><td>(NULL, start, leng, buf)</td><td>SetIntArrayRegion(arr = NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_SetIntArrayRegion_4">JNIEnv_SetIntArrayRegion_4</a></td><td> void SetIntArrayRegion(jintArray array, jsize start, jsize len, jint *buf) </td><td>(arr, start, leng, buf)</td><td>SetIntArrayRegion(where start is -1) returns correct value</td></tr>
<tr><td><a name="JNIEnv_SetLongArrayRegion_1">JNIEnv_SetLongArrayRegion_1</a></td><td> void SetLongArrayRegion(jlongArray array, jsize start, jsize len, jlong *buf) </td><td>(arr, start, leng, buf)</td><td>SetLongArrayRegion(all right) returns correct value</td></tr>
<tr><td><a name="JNIEnv_SetObjectArrayElement_1">JNIEnv_SetObjectArrayElement_1</a></td><td> void SetObjectArrayElement(jobjectArray array, jsize index, jobject val) </td><td>(arr, (jsize)0, str1)</td><td>SetObjectArrayElement(all correct, index = 0 ) returns correct value - empty array</td></tr>
<tr><td><a name="JNIEnv_SetObjectArrayElement_2">JNIEnv_SetObjectArrayElement_2</a></td><td> void SetObjectArrayElement(jobjectArray array, jsize index, jobject val) </td><td>(arr, (jsize)0, NULL)</td><td>SetObjectArrayElement(all correct, element = NULL) returns correct value - empty array</td></tr>
<tr><td><a name="JNIEnv_SetObjectArrayElement_3">JNIEnv_SetObjectArrayElement_3</a></td><td> void SetObjectArrayElement(jobjectArray array, jsize index, jobject val) </td><td>(arr, (jsize)-1, str1)</td><td>SetObjectArrayElement(index < 0 ) returns correct value - empty array</td></tr>
<tr><td><a name="JNIEnv_SetObjectArrayElement_4">JNIEnv_SetObjectArrayElement_4</a></td><td> void SetObjectArrayElement(jobjectArray array, jsize index, jobject val) </td><td>(arr, (jsize)6, str1)</td><td>SetObjectArrayElement(index > length ) returns correct value - empty array</td></tr>
<tr><td><a name="JNIEnv_SetObjectArrayElement_5">JNIEnv_SetObjectArrayElement_5</a></td><td> void SetObjectArrayElement(jobjectArray array, jsize index, jobject val) </td><td>(arr, (jsize)6, obj_incor)</td><td>SetObjectArrayElement(incorrect object) returns correct value - empty array</td></tr>
<tr><td><a name="JNIEnv_SetShortArrayRegion_1">JNIEnv_SetShortArrayRegion_1</a></td><td> void SetShortArrayRegion(jshortArray array, jsize start, jsize len, jshort *buf) </td><td>(arr, start, leng, buf)</td><td>SetShortArrayRegion(all right) returns correct value</td></tr>
<!--Total files: 163-->
<tr><td><a name="JNIEnv_CallBooleanMethod_1">JNIEnv_CallBooleanMethod_1</a></td><td> jboolean CallBooleanMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallBooleanMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallBooleanMethod_2">JNIEnv_CallBooleanMethod_2</a></td><td> jboolean CallBooleanMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallBooleanMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallBooleanMethod_3">JNIEnv_CallBooleanMethod_3</a></td><td> jboolean CallBooleanMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallBooleanMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallBooleanMethod_4">JNIEnv_CallBooleanMethod_4</a></td><td> jboolean CallBooleanMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_FALSE, 0, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallBooleanMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallByteMethod_1">JNIEnv_CallByteMethod_1</a></td><td> jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallByteMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)B) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallByteMethod_2">JNIEnv_CallByteMethod_2</a></td><td> jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallByteMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)B) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallByteMethod_3">JNIEnv_CallByteMethod_3</a></td><td> jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, MIN_JBYTE, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallByteMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)B) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallByteMethod_4">JNIEnv_CallByteMethod_4</a></td><td> jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, MAX_JBYTE, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallByteMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)B) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallCharMethod_1">JNIEnv_CallCharMethod_1</a></td><td> jchar CallCharMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallCharMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)C) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallCharMethod_2">JNIEnv_CallCharMethod_2</a></td><td> jchar CallCharMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallCharMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)C) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallCharMethod_3">JNIEnv_CallCharMethod_3</a></td><td> jchar CallCharMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, MIN_JBYTE, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallCharMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)C) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallCharMethod_4">JNIEnv_CallCharMethod_4</a></td><td> jchar CallCharMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, MIN_JBYTE, NULL, 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallCharMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)C) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallDoubleMethod_1">JNIEnv_CallDoubleMethod_1</a></td><td> jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallDoubleMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)D) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallDoubleMethod_2">JNIEnv_CallDoubleMethod_2</a></td><td> jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallDoubleMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)D) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallDoubleMethod_3">JNIEnv_CallDoubleMethod_3</a></td><td> jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallDoubleMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)D) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallDoubleMethod_4">JNIEnv_CallDoubleMethod_4</a></td><td> jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, 0, MIN_JDOUBLE, NULL, NULL)</td><td>CallDoubleMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)D) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallFloatMethod_1">JNIEnv_CallFloatMethod_1</a></td><td> jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallFloatMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)F) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallFloatMethod_2">JNIEnv_CallFloatMethod_2</a></td><td> jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallFloatMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)F) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallFloatMethod_3">JNIEnv_CallFloatMethod_3</a></td><td> jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, MIN_JFLOAT, 100, NULL, NULL)</td><td>CallFloatMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)F) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallFloatMethod_4">JNIEnv_CallFloatMethod_4</a></td><td> jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, MAX_JFLOAT, 100, NULL, NULL)</td><td>CallFloatMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)F) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_1">JNIEnv_CallIntMethod_1</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, NULL)</td><td>CallIntMethod with sig = \"()I\" return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_10">JNIEnv_CallIntMethod_10</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA for public final not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_11">JNIEnv_CallIntMethod_11</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA for public synchronized not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_12">JNIEnv_CallIntMethod_12</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA for public synchronized not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_13">JNIEnv_CallIntMethod_13</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, 10)</td><td>CallIntMethod for public not inherited method that thrown exception really thrown exception</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_14">JNIEnv_CallIntMethod_14</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA for public not inherited method that thrown exception really thrown exception</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_15">JNIEnv_CallIntMethod_15</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA with sig = \"()I\" return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_16">JNIEnv_CallIntMethod_16</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', 1, MAX_JINT, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallIntMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_17">JNIEnv_CallIntMethod_17</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', 1, MIN_JINT, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallIntMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_18">JNIEnv_CallIntMethod_18</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_19">JNIEnv_CallIntMethod_19</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_2">JNIEnv_CallIntMethod_2</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_3">JNIEnv_CallIntMethod_3</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA for private not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_4">JNIEnv_CallIntMethod_4</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA for protected not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_5">JNIEnv_CallIntMethod_5</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA for no-modifiers not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_6">JNIEnv_CallIntMethod_6</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA for public inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_7">JNIEnv_CallIntMethod_7</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA for private inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_8">JNIEnv_CallIntMethod_8</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA for protected inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallIntMethod_9">JNIEnv_CallIntMethod_9</a></td><td> jint CallIntMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallIntMethodA for no-modifiers inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallLongMethod_1">JNIEnv_CallLongMethod_1</a></td><td> jlong CallLongMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallLongMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)J) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallLongMethod_2">JNIEnv_CallLongMethod_2</a></td><td> jlong CallLongMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallLongMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)J) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallLongMethod_3">JNIEnv_CallLongMethod_3</a></td><td> jlong CallLongMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', 1, 123, MAX_JLONG, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallLongMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)J) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallLongMethod_4">JNIEnv_CallLongMethod_4</a></td><td> jlong CallLongMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', 1, 123, MIN_JLONG, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallLongMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)J) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualBooleanMethod_1">JNIEnv_CallNonvirtualBooleanMethod_1</a></td><td> jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualBooleanMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualBooleanMethod_2">JNIEnv_CallNonvirtualBooleanMethod_2</a></td><td> jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualBooleanMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualBooleanMethod_3">JNIEnv_CallNonvirtualBooleanMethod_3</a></td><td> jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallNonvirtualBooleanMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualBooleanMethod_4">JNIEnv_CallNonvirtualBooleanMethod_4</a></td><td> jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_FALSE, 0, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallNonvirtualBooleanMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualByteMethod_1">JNIEnv_CallNonvirtualByteMethod_1</a></td><td> jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualByteMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)B) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualByteMethod_2">JNIEnv_CallNonvirtualByteMethod_2</a></td><td> jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualByteMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)B) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualByteMethod_3">JNIEnv_CallNonvirtualByteMethod_3</a></td><td> jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, MIN_JBYTE, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallNonvirtualByteMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)B) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualByteMethod_4">JNIEnv_CallNonvirtualByteMethod_4</a></td><td> jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, MAX_JBYTE, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallNonvirtualByteMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)B) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualCharMethod_1">JNIEnv_CallNonvirtualCharMethod_1</a></td><td> jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualCharMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)C) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualCharMethod_2">JNIEnv_CallNonvirtualCharMethod_2</a></td><td> jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualCharMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)C) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualCharMethod_3">JNIEnv_CallNonvirtualCharMethod_3</a></td><td> jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, MIN_JBYTE, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallNonvirtualCharMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)C) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualCharMethod_4">JNIEnv_CallNonvirtualCharMethod_4</a></td><td> jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, MIN_JBYTE, NULL, 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallNonvirtualCharMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)C) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualDoubleMethod_1">JNIEnv_CallNonvirtualDoubleMethod_1</a></td><td> jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualDoubleMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)D) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualDoubleMethod_2">JNIEnv_CallNonvirtualDoubleMethod_2</a></td><td> jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualDoubleMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)D) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualDoubleMethod_3">JNIEnv_CallNonvirtualDoubleMethod_3</a></td><td> jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallNonvirtualDoubleMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)D) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualDoubleMethod_4">JNIEnv_CallNonvirtualDoubleMethod_4</a></td><td> jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, 0, MIN_JDOUBLE, NULL, NULL)</td><td>CallNonvirtualDoubleMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)D) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualFloatMethod_1">JNIEnv_CallNonvirtualFloatMethod_1</a></td><td> jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualFloatMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)F) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualFloatMethod_2">JNIEnv_CallNonvirtualFloatMethod_2</a></td><td> jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualFloatMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)F) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualFloatMethod_3">JNIEnv_CallNonvirtualFloatMethod_3</a></td><td> jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, MIN_JFLOAT, 100, NULL, NULL)</td><td>CallNonvirtualFloatMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)F) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualFloatMethod_4">JNIEnv_CallNonvirtualFloatMethod_4</a></td><td> jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, MAX_JFLOAT, 100, NULL, NULL)</td><td>CallNonvirtualFloatMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)F) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_1">JNIEnv_CallNonvirtualIntMethod_1</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, 10)</td><td>CallNonvirtualIntMethod for public not inherited method that thrown exception really thrown exception</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_10">JNIEnv_CallNonvirtualIntMethod_10</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, clazz, MethodID, args)</td><td>CallNonvirtualIntMethodA for no-modifiers not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_11">JNIEnv_CallNonvirtualIntMethod_11</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, clazz, MethodID, args)</td><td>CallNonvirtualIntMethodA for public inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_12">JNIEnv_CallNonvirtualIntMethod_12</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, clazz, MethodID, args)</td><td>CallNonvirtualIntMethodA for private inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_13">JNIEnv_CallNonvirtualIntMethod_13</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, clazz, MethodID, args)</td><td>CallNonvirtualIntMethodA for protected inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_14">JNIEnv_CallNonvirtualIntMethod_14</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, clazz, MethodID, args)</td><td>CallNonvirtualIntMethodA for no-modifiers inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_15">JNIEnv_CallNonvirtualIntMethod_15</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, clazz, MethodID, args)</td><td>CallNonvirtualIntMethodA for public final not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_16">JNIEnv_CallNonvirtualIntMethod_16</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, clazz, MethodID, args)</td><td>CallNonvirtualIntMethodA for public synchronized not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_17">JNIEnv_CallNonvirtualIntMethod_17</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, clazz, MethodID, args)</td><td>CallNonvirtualIntMethodA for public synchronized not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_18">JNIEnv_CallNonvirtualIntMethod_18</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, clazz, MethodID, args)</td><td>CallNonvirtualIntMethodA for public synchronized not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_19">JNIEnv_CallNonvirtualIntMethod_19</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA (with class = superclass) for public synchronized not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_2">JNIEnv_CallNonvirtualIntMethod_2</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA for public not inherited method that thrown exception really thrown exception</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_20">JNIEnv_CallNonvirtualIntMethod_20</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA (with class = superclass) for public synchronized not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_21">JNIEnv_CallNonvirtualIntMethod_21</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA (with class = superclass) for public synchronized not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_22">JNIEnv_CallNonvirtualIntMethod_22</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA (with class = superclass) for public final not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_23">JNIEnv_CallNonvirtualIntMethod_23</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA (with class = superclass) for no-modifiers inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_24">JNIEnv_CallNonvirtualIntMethod_24</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA (with class = superclass) for protected inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_25">JNIEnv_CallNonvirtualIntMethod_25</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA (with class = superclass) for private inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_26">JNIEnv_CallNonvirtualIntMethod_26</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA (with class = superclass) for public inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_27">JNIEnv_CallNonvirtualIntMethod_27</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA (with class = superclass) for no-modifiers not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_28">JNIEnv_CallNonvirtualIntMethod_28</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA (with class = superclass) for protected not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_29">JNIEnv_CallNonvirtualIntMethod_29</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA (with class = superclass) for private not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_30">JNIEnv_CallNonvirtualIntMethod_30</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA (with class = superclass) for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_31">JNIEnv_CallNonvirtualIntMethod_31</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', 1, MAX_JINT, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallNonvirtualIntMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_32">JNIEnv_CallNonvirtualIntMethod_32</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', 1, MIN_JINT, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallNonvirtualIntMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_33">JNIEnv_CallNonvirtualIntMethod_33</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_34">JNIEnv_CallNonvirtualIntMethod_34</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_4">JNIEnv_CallNonvirtualIntMethod_4</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, NULL)</td><td>CallNonvirtualIntMethod with sig = \"()I\" return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_5">JNIEnv_CallNonvirtualIntMethod_5</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualIntMethodA with sig = \"()I\" return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_7">JNIEnv_CallNonvirtualIntMethod_7</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, clazz, MethodID, args)</td><td>CallNonvirtualIntMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_8">JNIEnv_CallNonvirtualIntMethod_8</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, clazz, MethodID, args)</td><td>CallNonvirtualIntMethodA for private not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualIntMethod_9">JNIEnv_CallNonvirtualIntMethod_9</a></td><td> jint CallNonvirtualIntMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, clazz, MethodID, args)</td><td>CallNonvirtualIntMethodA for protected not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualLongMethod_1">JNIEnv_CallNonvirtualLongMethod_1</a></td><td> jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualLongMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)J) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualLongMethod_2">JNIEnv_CallNonvirtualLongMethod_2</a></td><td> jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualLongMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)J) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualLongMethod_3">JNIEnv_CallNonvirtualLongMethod_3</a></td><td> jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', 1, 123, MAX_JLONG, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallNonvirtualLongMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)J) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualLongMethod_4">JNIEnv_CallNonvirtualLongMethod_4</a></td><td> jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', 1, 123, MIN_JLONG, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallNonvirtualLongMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)J) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualObjectMethod_1">JNIEnv_CallNonvirtualObjectMethod_1</a></td><td> jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualObjectMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualObjectMethod_2">JNIEnv_CallNonvirtualObjectMethod_2</a></td><td> jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualObjectMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualObjectMethod_3">JNIEnv_CallNonvirtualObjectMethod_3</a></td><td> jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', MIN_JSHORT, 123, 0, 0, MAX_JDOUBLE, jpath, NULL)</td><td>CallNonvirtualObjectMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualObjectMethod_4">JNIEnv_CallNonvirtualObjectMethod_4</a></td><td> jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', MIN_JSHORT, 123, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallNonvirtualObjectMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualObjectMethod_5">JNIEnv_CallNonvirtualObjectMethod_5</a></td><td> jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualObjectMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualObjectMethod_6">JNIEnv_CallNonvirtualObjectMethod_6</a></td><td> jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualObjectMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualObjectMethod_7">JNIEnv_CallNonvirtualObjectMethod_7</a></td><td> jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', MIN_JSHORT, 123, 0, 0, MAX_JDOUBLE, jpath, NULL)</td><td>CallNonvirtualObjectMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualShortMethod_1">JNIEnv_CallNonvirtualShortMethod_1</a></td><td> jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualShortMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)S) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualShortMethod_2">JNIEnv_CallNonvirtualShortMethod_2</a></td><td> jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualShortMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)S) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualShortMethod_3">JNIEnv_CallNonvirtualShortMethod_3</a></td><td> jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', MAX_JSHORT, 123, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallNonvirtualShortMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)S) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualShortMethod_4">JNIEnv_CallNonvirtualShortMethod_4</a></td><td> jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', MIN_JSHORT, 123, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallNonvirtualShortMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)S) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualVoidMethod_1">JNIEnv_CallNonvirtualVoidMethod_1</a></td><td> void CallNonvirtualVoidMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, args)</td><td>CallNonvirtualVoidMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallNonvirtualVoidMethod_2">JNIEnv_CallNonvirtualVoidMethod_2</a></td><td> void CallNonvirtualVoidMethod(jobject obj, jclass clazz, jmethodID methodID, ...) </td><td>(obj, env->GetSuperclass(clazz), MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallNonvirtualVoidMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallObjectMethod_1">JNIEnv_CallObjectMethod_1</a></td><td> jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallObjectMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallObjectMethod_2">JNIEnv_CallObjectMethod_2</a></td><td> jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallObjectMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallObjectMethod_3">JNIEnv_CallObjectMethod_3</a></td><td> jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', MIN_JSHORT, 123, 0, 0, MAX_JDOUBLE, jpath, NULL)</td><td>CallObjectMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallObjectMethod_4">JNIEnv_CallObjectMethod_4</a></td><td> jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', MIN_JSHORT, 123, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallObjectMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallObjectMethod_5">JNIEnv_CallObjectMethod_5</a></td><td> jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallObjectMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallObjectMethod_6">JNIEnv_CallObjectMethod_6</a></td><td> jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallObjectMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallObjectMethod_7">JNIEnv_CallObjectMethod_7</a></td><td> jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', MIN_JSHORT, 123, 0, 0, MAX_JDOUBLE, jpath, NULL)</td><td>CallObjectMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallShortMethod_1">JNIEnv_CallShortMethod_1</a></td><td> jshort CallShortMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallShortMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)S) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallShortMethod_2">JNIEnv_CallShortMethod_2</a></td><td> jshort CallShortMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallShortMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)S) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallShortMethod_3">JNIEnv_CallShortMethod_3</a></td><td> jshort CallShortMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', MAX_JSHORT, 123, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallShortMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)S) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallShortMethod_4">JNIEnv_CallShortMethod_4</a></td><td> jshort CallShortMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', MIN_JSHORT, 123, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallShortMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)S) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallVoidMethod_1">JNIEnv_CallVoidMethod_1</a></td><td> void CallVoidMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, args)</td><td>CallVoidMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallVoidMethod_2">JNIEnv_CallVoidMethod_2</a></td><td> void CallVoidMethod(jobject obj, jmethodID methodID, ...) </td><td>(obj, MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallVoidMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_1">JNIEnv_GetMethodID_1</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>(NULL, "Print_string", "(Ljava/lang/String;)V")</td><td>GetMethodID with class == NULL return 0, its correct</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_10">JNIEnv_GetMethodID_10</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test1_method5", "(ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)</td><td>GetMethodID for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_11">JNIEnv_GetMethodID_11</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Get_int_field", "()</td><td>GetMethodID for public method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_12">JNIEnv_GetMethodID_12</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test1_public_final", "(I)</td><td>GetMethodID for public final method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_13">JNIEnv_GetMethodID_13</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test1_public_sinc", "(I)</td><td>GetMethodID for public synchronized method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_14">JNIEnv_GetMethodID_14</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "mprint", "(I)</td><td>GetMethodID for public native method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_15">JNIEnv_GetMethodID_15</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test_method", "()</td><td>GetMethodID for public method from children of interface return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_16">JNIEnv_GetMethodID_16</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>(clazz, "Test_method", "()V")</td><td>GetMethodID for public method from interface return correct value (0)</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_17">JNIEnv_GetMethodID_17</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test2_override", "(I)</td><td>GetMethodID for public overrided method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_18">JNIEnv_GetMethodID_18</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>(clazz, "Test8_method1", "()V")</td><td>GetMethodID for public method from abstract class inherited from interface return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_19">JNIEnv_GetMethodID_19</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>(clazz, "Abs_public_abstract_int", "(I)I")</td><td>GetMethodID for public abstract method from abstract class return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_2">JNIEnv_GetMethodID_2</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Print_string", NULL)</td><td>GetMethodID with sig==NULL return 0, its correct</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_20">JNIEnv_GetMethodID_20</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>(clazz, "Abs_protected_abstract_int", "(I)I")</td><td>GetMethodID for protected abstract method from abstract class return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_21">JNIEnv_GetMethodID_21</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>(clazz, "Abs_nomod_abstract_int", "(I)I")</td><td>GetMethodID for no-modifier abstract method from abstract class return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_22">JNIEnv_GetMethodID_22</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>(clazz, "Test9_abs_public_int", "(I)I")</td><td>GetMethodID for public abstract method from super-abstract class return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_23">JNIEnv_GetMethodID_23</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>(clazz, "Test9_abs_protected_int", "(I)I")</td><td>GetMethodID for protected abstract method from super-abstract class return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_24">JNIEnv_GetMethodID_24</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>(clazz, "Test9_abs_nomod_int", "(I)I")</td><td>GetMethodID for no-modifiers abstract method from super-abstract class return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_25">JNIEnv_GetMethodID_25</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "<init>", "(S)</td><td>GetMethodID for no-modifiers constructor in non-abstract class return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_26">JNIEnv_GetMethodID_26</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "<init>", "(Z)</td><td>GetMethodID for protected constructor in non-abstract class return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_27">JNIEnv_GetMethodID_27</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "<init>", "(I)</td><td>GetMethodID for public constructor in non-abstract class return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_28">JNIEnv_GetMethodID_28</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>(clazz, "<init>", "(Ljava/lang/String;)V")</td><td>GetMethodID for public constructor in abstract class return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_29">JNIEnv_GetMethodID_29</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>(clazz, "<init>", "(I)V")</td><td>GetMethodID for private constructor in abstract class return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_3">JNIEnv_GetMethodID_3</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( NULL, "(Ljava/lang/String;)</td><td>GetMethodID for name = NULL return 0, its correct</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_30">JNIEnv_GetMethodID_30</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>(clazz, "<init>", "()V")</td><td>GetMethodID for protected constructor in abstract class return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_31">JNIEnv_GetMethodID_31</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>(clazz, "<init>", "(ILjava/lang/String;)V")</td><td>GetMethodID for no-modifiers constructor in abstract class return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_32">JNIEnv_GetMethodID_32</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "<init>", "()</td><td>GetMethodID for private constructor in non-abstract class return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_33">JNIEnv_GetMethodID_33</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Print_string_private", "(Ljava/lang/String;)</td><td>GetMethodID for private method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_34">JNIEnv_GetMethodID_34</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Print_string_protected", "(Ljava/lang/String;)</td><td>GetMethodID for protected method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_35">JNIEnv_GetMethodID_35</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Print_string_nomod", "(Ljava/lang/String;)</td><td>GetMethodID for no-modifiers method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_36">JNIEnv_GetMethodID_36</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Print_string_super_protected", "(Ljava/lang/String;)</td><td>GetMethodID for protected method from non-abstract class, inherited from superclass return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_37">JNIEnv_GetMethodID_37</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Print_string_super_nomod", "(Ljava/lang/String;)</td><td>GetMethodID for no-modifiers method from non-abstract class, inherited from superclass return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_38">JNIEnv_GetMethodID_38</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Get_int_field_super_private", "()</td><td>GetMethodID for private method from non-abstract class, inherited from superclass return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_39">JNIEnv_GetMethodID_39</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Get_int_field_super", "()</td><td>GetMethodID for public method from non-abstract class, inherited from superclass return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_4">JNIEnv_GetMethodID_4</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Print_string", "")</td><td>GetMethodID with incorrect sig return 0, its correct</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_5">JNIEnv_GetMethodID_5</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "name_not_exist", "(Ljava/lang/String;)</td><td>GetMethodID for not existing name return 0, its correct</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_6">JNIEnv_GetMethodID_6</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test1_method1", "()</td><td>GetMethodID for public not inherited method (sig = ()V) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_7">JNIEnv_GetMethodID_7</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test1_method2", "(ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)</td><td>GetMethodID for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)V) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_8">JNIEnv_GetMethodID_8</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test1_method3", "(ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)</td><td>GetMethodID for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetMethodID_9">JNIEnv_GetMethodID_9</a></td><td> jmethodID GetMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test1_method4", "(ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)</td><td>GetMethodID for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Ljava/lang/String;) return correct value</td></tr>
<!--Total files: 77-->
<tr><td><a name="JNIEnv_CallStaticBooleanMethod_1">JNIEnv_CallStaticBooleanMethod_1</a></td><td> jboolean CallStaticBooleanMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticBooleanMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticBooleanMethod_2">JNIEnv_CallStaticBooleanMethod_2</a></td><td> jboolean CallStaticBooleanMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticBooleanMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticBooleanMethod_3">JNIEnv_CallStaticBooleanMethod_3</a></td><td> jboolean CallStaticBooleanMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallStaticBooleanMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticBooleanMethod_4">JNIEnv_CallStaticBooleanMethod_4</a></td><td> jboolean CallStaticBooleanMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_FALSE, 0, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallStaticBooleanMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticByteMethod_1">JNIEnv_CallStaticByteMethod_1</a></td><td> jbyte CallStaticByteMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticByteMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)B) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticByteMethod_2">JNIEnv_CallStaticByteMethod_2</a></td><td> jbyte CallStaticByteMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticByteMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)B) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticByteMethod_3">JNIEnv_CallStaticByteMethod_3</a></td><td> jbyte CallStaticByteMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, MIN_JBYTE, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallStaticByteMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)B) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticByteMethod_4">JNIEnv_CallStaticByteMethod_4</a></td><td> jbyte CallStaticByteMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, MAX_JBYTE, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallStaticByteMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)B) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticCharMethod_1">JNIEnv_CallStaticCharMethod_1</a></td><td> jchar CallStaticCharMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticCharMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)C) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticCharMethod_2">JNIEnv_CallStaticCharMethod_2</a></td><td> jchar CallStaticCharMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticCharMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)C) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticCharMethod_3">JNIEnv_CallStaticCharMethod_3</a></td><td> jchar CallStaticCharMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, MIN_JBYTE, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallStaticCharMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)C) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticCharMethod_4">JNIEnv_CallStaticCharMethod_4</a></td><td> jchar CallStaticCharMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, MIN_JBYTE, NULL, 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallStaticCharMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)C) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticDoubleMethod_1">JNIEnv_CallStaticDoubleMethod_1</a></td><td> jdouble CallStaticDoubleMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticDoubleMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)D) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticDoubleMethod_2">JNIEnv_CallStaticDoubleMethod_2</a></td><td> jdouble CallStaticDoubleMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticDoubleMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)D) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticDoubleMethod_3">JNIEnv_CallStaticDoubleMethod_3</a></td><td> jdouble CallStaticDoubleMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallStaticDoubleMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)D) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticDoubleMethod_4">JNIEnv_CallStaticDoubleMethod_4</a></td><td> jdouble CallStaticDoubleMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, 0, MIN_JDOUBLE, NULL, NULL)</td><td>CallStaticDoubleMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)D) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticFloatMethod_1">JNIEnv_CallStaticFloatMethod_1</a></td><td> jfloat CallStaticFloatMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticFloatMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)F) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticFloatMethod_2">JNIEnv_CallStaticFloatMethod_2</a></td><td> jfloat CallStaticFloatMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticFloatMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)F) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticFloatMethod_3">JNIEnv_CallStaticFloatMethod_3</a></td><td> jfloat CallStaticFloatMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, MIN_JFLOAT, 100, NULL, NULL)</td><td>CallStaticFloatMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)F) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticFloatMethod_4">JNIEnv_CallStaticFloatMethod_4</a></td><td> jfloat CallStaticFloatMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, MAX_JFLOAT, 100, NULL, NULL)</td><td>CallStaticFloatMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)F) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_1">JNIEnv_CallStaticIntMethod_1</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, NULL)</td><td>CallStaticIntMethod with sig = \"()I\" return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_10">JNIEnv_CallStaticIntMethod_10</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA for no-modifiers not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_11">JNIEnv_CallStaticIntMethod_11</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA for public inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_12">JNIEnv_CallStaticIntMethod_12</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA for private inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_13">JNIEnv_CallStaticIntMethod_13</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA for protected inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_14">JNIEnv_CallStaticIntMethod_14</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA for no-modifiers inherited from superclass method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_15">JNIEnv_CallStaticIntMethod_15</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA for public final not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_16">JNIEnv_CallStaticIntMethod_16</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA for public synchronized not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_17">JNIEnv_CallStaticIntMethod_17</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA for public synchronized not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_18">JNIEnv_CallStaticIntMethod_18</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_19">JNIEnv_CallStaticIntMethod_19</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_2">JNIEnv_CallStaticIntMethod_2</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA with sig = \"()I\" return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_20">JNIEnv_CallStaticIntMethod_20</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', 1, MAX_JINT, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallStaticIntMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_21">JNIEnv_CallStaticIntMethod_21</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', 1, MIN_JINT, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallStaticIntMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_4">JNIEnv_CallStaticIntMethod_4</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, 10)</td><td>CallStaticIntMethod for public not inherited method that thrown exception really thrown exception</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_5">JNIEnv_CallStaticIntMethod_5</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA for public not inherited method that thrown exception really thrown exception</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_7">JNIEnv_CallStaticIntMethod_7</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_8">JNIEnv_CallStaticIntMethod_8</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA for private not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticIntMethod_9">JNIEnv_CallStaticIntMethod_9</a></td><td> jint CallStaticIntMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticIntMethodA for protected not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticLongMethod_1">JNIEnv_CallStaticLongMethod_1</a></td><td> jlong CallStaticLongMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticLongMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)J) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticLongMethod_2">JNIEnv_CallStaticLongMethod_2</a></td><td> jlong CallStaticLongMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticLongMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)J) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticLongMethod_3">JNIEnv_CallStaticLongMethod_3</a></td><td> jlong CallStaticLongMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', 1, 123, MAX_JLONG, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallStaticLongMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)J) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticLongMethod_4">JNIEnv_CallStaticLongMethod_4</a></td><td> jlong CallStaticLongMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', 1, 123, MIN_JLONG, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallStaticLongMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)J) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticObjectMethod_1">JNIEnv_CallStaticObjectMethod_1</a></td><td> jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticObjectMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticObjectMethod_2">JNIEnv_CallStaticObjectMethod_2</a></td><td> jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticObjectMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticObjectMethod_3">JNIEnv_CallStaticObjectMethod_3</a></td><td> jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', MIN_JSHORT, 123, 0, 0, MAX_JDOUBLE, jpath, NULL)</td><td>CallStaticObjectMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticObjectMethod_4">JNIEnv_CallStaticObjectMethod_4</a></td><td> jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', MIN_JSHORT, 123, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallStaticObjectMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticObjectMethod_5">JNIEnv_CallStaticObjectMethod_5</a></td><td> jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallObjectMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticObjectMethod_6">JNIEnv_CallStaticObjectMethod_6</a></td><td> jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallObjectMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticObjectMethod_7">JNIEnv_CallStaticObjectMethod_7</a></td><td> jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', MIN_JSHORT, 123, 0, 0, MAX_JDOUBLE, jpath, NULL)</td><td>CallObjectMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticShortMethod_1">JNIEnv_CallStaticShortMethod_1</a></td><td> jshort CallStaticShortMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticShortMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)S) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticShortMethod_2">JNIEnv_CallStaticShortMethod_2</a></td><td> jshort CallStaticShortMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticShortMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)S) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticShortMethod_3">JNIEnv_CallStaticShortMethod_3</a></td><td> jshort CallStaticShortMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', MAX_JSHORT, 123, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallStaticShortMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)S) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticShortMethod_4">JNIEnv_CallStaticShortMethod_4</a></td><td> jshort CallStaticShortMethod(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', MIN_JSHORT, 123, 0, 0, MAX_JDOUBLE, NULL, NULL)</td><td>CallStaticShortMethod for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)S) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticVoidMethod_1">JNIEnv_CallStaticVoidMethod_1</a></td><td> void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) </td><td>(clazz, MethodID, args)</td><td>CallStaticVoidMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_CallStaticVoidMethod_2">JNIEnv_CallStaticVoidMethod_2</a></td><td> void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) </td><td>(clazz, MethodID, JNI_TRUE, 0, 'a', 1, 123, 0, 0, 100, NULL, NULL)</td><td>CallStaticVoidMethodA for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Z) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_1">JNIEnv_GetStaticMethodID_1</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>(NULL, "Print_string_static", "(Ljava/lang/String;)V")</td><td>GetStaticMethodID with class == NULL return 0, its correct</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_10">JNIEnv_GetStaticMethodID_10</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test1_method5_static", "(ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)</td><td>GetStaticMethodID for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_11">JNIEnv_GetStaticMethodID_11</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test2_override_static", "(I)</td><td>GetStaticMethodID for public overrided method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_12">JNIEnv_GetStaticMethodID_12</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Get_int_field_static", "()</td><td>GetStaticMethodID for public static method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_13">JNIEnv_GetStaticMethodID_13</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test1_public_final_static", "(I)</td><td>GetStaticMethodID for public static final method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_14">JNIEnv_GetStaticMethodID_14</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test1_public_sinc_static", "(I)</td><td>GetStaticMethodID for public static synchronized method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_15">JNIEnv_GetStaticMethodID_15</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "mprint_static", "(I)</td><td>GetStaticMethodID for public native method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_16">JNIEnv_GetStaticMethodID_16</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Print_string_nomod_static", "(Ljava/lang/String;)</td><td>GetStaticMethodID for nomod static method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_17">JNIEnv_GetStaticMethodID_17</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Print_string_protected_static", "(Ljava/lang/String;)</td><td>GetStaticMethodID for protected static method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_18">JNIEnv_GetStaticMethodID_18</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Print_string_private_static", "(Ljava/lang/String;)</td><td>GetStaticMethodID for private method from non-abstract class, not inherited return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_19">JNIEnv_GetStaticMethodID_19</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Get_int_field_super_static", "()</td><td>GetStaticMethodID for public method from non-abstract class, inherited from superclass return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_2">JNIEnv_GetStaticMethodID_2</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Print_string_static", NULL)</td><td>GetStaticMethodID with sig==NULL return 0, its correct</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_20">JNIEnv_GetStaticMethodID_20</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Print_string_super_nomod_static", "(Ljava/lang/String;)</td><td>GetStaticMethodID for nomod static method from non-abstract class, inherited from superclass return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_21">JNIEnv_GetStaticMethodID_21</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Print_string_super_protected_static", "(Ljava/lang/String;)</td><td>GetStaticMethodID for protected static method from non-abstract class, inherited from superclass return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_22">JNIEnv_GetStaticMethodID_22</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Get_int_field_super_private_static", "()</td><td>GetStaticMethodID for private method from non-abstract class, inherited from superclass return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_3">JNIEnv_GetStaticMethodID_3</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( NULL, "(Ljava/lang/String;)</td><td>GetStaticMethodID for name = NULL return 0, its correct</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_4">JNIEnv_GetStaticMethodID_4</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Print_string_static", "")</td><td>GetStaticMethodID with incorrect sig return 0, its correct</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_5">JNIEnv_GetStaticMethodID_5</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "name_not_exist", "(Ljava/lang/String;)</td><td>GetStaticMethodID for not existing name return 0, its correct</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_6">JNIEnv_GetStaticMethodID_6</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test1_method1_static", "()</td><td>GetStaticMethodID for public not inherited method (sig = ()V) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_7">JNIEnv_GetStaticMethodID_7</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test1_method2_static", "(ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)</td><td>GetStaticMethodID for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)V) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_8">JNIEnv_GetStaticMethodID_8</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test1_method3_static", "(ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)</td><td>GetStaticMethodID for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)I) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetStaticMethodID_9">JNIEnv_GetStaticMethodID_9</a></td><td> jmethodID GetStaticMethodID(jclass clazz, const char *name, const char *sig) </td><td>( "Test1_method4_static", "(ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)</td><td>GetStaticMethodID for public not inherited method (sig = (ZBCSIJFDLjava/lang/String;[Ljava/lang/String;)Ljava/lang/String;) return correct value</td></tr>
<!--Total files: 16-->
<tr><td><a name="JNIEnv_FindClass_1">JNIEnv_FindClass_1</a></td><td> jclass FindClass(const char *name) </td><td>(NULL)</td><td>FindClass(NULL) return NULL - correct</td></tr>
<tr><td><a name="JNIEnv_FindClass_2">JNIEnv_FindClass_2</a></td><td> jclass FindClass(const char *name) </td><td>("Test1")</td><td>FindClass(name of existing class) return correct value</td></tr>
<tr><td><a name="JNIEnv_FindClass_3">JNIEnv_FindClass_3</a></td><td> jclass FindClass(const char *name) </td><td>("")</td><td>FindClass(empty string) return NULL - correct</td></tr>
<tr><td><a name="JNIEnv_FindClass_4">JNIEnv_FindClass_4</a></td><td> jclass FindClass(const char *name) </td><td>("Testx")</td><td>FindClass(name of non existing class) return NULL - correct</td></tr>
<tr><td><a name="JNIEnv_FindClass_5">JNIEnv_FindClass_5</a></td><td> jclass FindClass(const char *name) </td><td>("Test4")</td><td>FindClass(name of existing abstarct class) return correct value</td></tr>
<tr><td><a name="JNIEnv_FindClass_6">JNIEnv_FindClass_6</a></td><td> jclass FindClass(const char *name) </td><td>("Test3")</td><td>FindClass(name of existing abstarct class) return correct value</td></tr>
<tr><td><a name="JNIEnv_FindClass_7">JNIEnv_FindClass_7</a></td><td> jclass FindClass(const char *name) </td><td>("Ljava/lang/String;")</td><td>FindClass(java.lang.String) return correct value</td></tr>
<tr><td><a name="JNIEnv_FindClass_8">JNIEnv_FindClass_8</a></td><td> jclass FindClass(const char *name) </td><td>("[Ljava/lang/String;")</td><td>FindClass([java.lang.String) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetSuperclass_1">JNIEnv_GetSuperclass_1</a></td><td> jclass GetSuperclass(jclass sub) </td><td>(NULL)</td><td>GetSuperclass(NULL) return NULL - correct</td></tr>
<tr><td><a name="JNIEnv_GetSuperclass_2">JNIEnv_GetSuperclass_2</a></td><td> jclass GetSuperclass(jclass sub) </td><td>(clazz)</td><td>GetSuperclass(existing class) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetSuperclass_3">JNIEnv_GetSuperclass_3</a></td><td> jclass GetSuperclass(jclass sub) </td><td>(clazz)</td><td>GetSuperclass(interface) return NULL - correct</td></tr>
<tr><td><a name="JNIEnv_GetSuperclass_4">JNIEnv_GetSuperclass_4</a></td><td> jclass GetSuperclass(jclass sub) </td><td>(clazz)</td><td>GetSuperclass(lava.lang.Object) return correct value</td></tr>
<tr><td><a name="JNIEnv_IsAssignableFrom_1">JNIEnv_IsAssignableFrom_1</a></td><td> jboolean IsAssignableFrom(jclass sub, jclass sup) </td><td>(clazz1, clazz1) )</td><td>IsAssignableFrom(class, superclass) return correct value</td></tr>
<tr><td><a name="JNIEnv_IsAssignableFrom_2">JNIEnv_IsAssignableFrom_2</a></td><td> jboolean IsAssignableFrom(jclass sub, jclass sup) </td><td>(NULL, NULL) )</td><td>IsAssignableFrom(NULL, NULL) return correct value</td></tr>
<tr><td><a name="JNIEnv_IsAssignableFrom_3">JNIEnv_IsAssignableFrom_3</a></td><td> jboolean IsAssignableFrom(jclass sub, jclass sup) </td><td>(clazz1, clazz) )</td><td>IsAssignableFrom(class, is not superclass of class) return correct value</td></tr>
<tr><td><a name="JNIEnv_IsAssignableFrom_4">JNIEnv_IsAssignableFrom_4</a></td><td> jboolean IsAssignableFrom(jclass sub, jclass sup) </td><td>(clazz, clazz) )</td><td>IsAssignableFrom(class, same class) return correct value</td></tr>
<tr><td><a name="JNIEnv_IsAssignableFrom_5">JNIEnv_IsAssignableFrom_5</a></td><td> jboolean IsAssignableFrom(jclass sub, jclass sup) </td><td>(clazz, clazz1) )</td><td>IsAssignableFrom(implements of interface, interface) return correct value</td></tr>
<!--Total files: 13-->
<tr><td><a name="JNIEnv_ExceptionClear_1">JNIEnv_ExceptionClear_1</a></td><td> void ExceptionClear() </td><td>()</td><td>ExceptionClear(exception being thrown) really clear exception!</td></tr>
<tr><td><a name="JNIEnv_ExceptionClear_2">JNIEnv_ExceptionClear_2</a></td><td> void ExceptionClear() </td><td>()</td><td>ExceptionClear(no exception being thrown) do not failed!</td></tr>
<tr><td><a name="JNIEnv_ExceptionDescribe_1">JNIEnv_ExceptionDescribe_1</a></td><td> void ExceptionDescribe() </td><td>()</td><td>ExceptionDescribe(exception being thrown) is correct</td></tr>
<tr><td><a name="JNIEnv_ExceptionDescribe_2">JNIEnv_ExceptionDescribe_2</a></td><td> void ExceptionDescribe() </td><td>()</td><td>ExceptionDescribe(no exception being thrown) is correct</td></tr>
<tr><td><a name="JNIEnv_ExceptionOccurred_1">JNIEnv_ExceptionOccurred_1</a></td><td> jthrowable ExceptionOccurred() </td><td>()</td><td>ExceptionOccurred(exception being thrown) is correct</td></tr>
<tr><td><a name="JNIEnv_ExceptionOccurred_2">JNIEnv_ExceptionOccurred_2</a></td><td> jthrowable ExceptionOccurred() </td><td>()</td><td>ExceptionOccurred(no exception being thrown) is correct</td></tr>
<tr><td><a name="JNIEnv_FatalError_1">JNIEnv_FatalError_1</a></td><td> void FatalError(const char *msg) </td><td>("aaaaaa")</td><td>Crush - correct</td></tr>
<tr><td><a name="JNIEnv_ThrowNew_1">JNIEnv_ThrowNew_1</a></td><td> jint ThrowNew(jclass clazz, const char *msg) </td><td>(clazz, "AAAAAAAA")</td><td>ThrowNew(java.lang.ArrayIndexOutOfBoundsException, non empty message) returns correct value and thrown ArrayIndexOutOfBoundsException</td></tr>
<tr><td><a name="JNIEnv_ThrowNew_2">JNIEnv_ThrowNew_2</a></td><td> jint ThrowNew(jclass clazz, const char *msg) </td><td>(clazz, "")</td><td>ThrowNew(java.lang.ArrayIndexOutOfBoundsException, mess= \"\</td></tr>
<tr><td><a name="JNIEnv_ThrowNew_3">JNIEnv_ThrowNew_3</a></td><td> jint ThrowNew(jclass clazz, const char *msg) </td><td>(clazz, NULL)</td><td>ThrowNew(java.lang.ArrayIndexOutOfBoundsException, mess= NULL) returns correct value and thrown ArrayIndexOutOfBoundsException</td></tr>
<tr><td><a name="JNIEnv_ThrowNew_4">JNIEnv_ThrowNew_4</a></td><td> jint ThrowNew(jclass clazz, const char *msg) </td><td>(clazz, "test message")</td><td>ThrowNew(java.lang.String, message not empty) returns correct value and not thrown any exception</td></tr>
<tr><td><a name="JNIEnv_ThrowNew_5">JNIEnv_ThrowNew_5</a></td><td> jint ThrowNew(jclass clazz, const char *msg) </td><td>(NULL, NULL)</td><td>ThrowNew(NULL, NULL) returns correct value and not thrown any exception</td></tr>
<tr><td><a name="JNIEnv_Throw_1">JNIEnv_Throw_1</a></td><td> jint Throw(jthrowable obj) </td><td>(obj)</td><td>Throw(java.lang.ArrayIndexOutOfBoundsException) returns correct value and thrown ArrayIndexOutOfBoundsException</td></tr>
<tr><td><a name="JNIEnv_Throw_2">JNIEnv_Throw_2</a></td><td> jint Throw(jthrowable obj) </td><td>(NULL)</td><td>Throw(NULL) returns correct value and not thrown any Exceptions</td></tr>
<!--Total files: 5-->
<tr><td><a name="JNIEnv_DeleteGlobalRef_1">JNIEnv_DeleteGlobalRef_1</a></td><td> void DeleteGlobalRef(jobject gref) </td><td>(obj_ref)</td><td>DeleteGlobalRef work properly with correct parameter</td></tr>
<tr><td><a name="JNIEnv_DeleteGlobalRef_2">JNIEnv_DeleteGlobalRef_2</a></td><td> void DeleteGlobalRef(jobject gref) </td><td>(NULL)</td><td>DeleteGlobalRef(NULL) passed</td></tr>
<tr><td><a name="JNIEnv_DeleteLocalRef_1">JNIEnv_DeleteLocalRef_1</a></td><td> void DeleteLocalRef(jobject obj) </td><td>(obj)</td><td>DeleteLocalRef working properly with correct parameter</td></tr>
<tr><td><a name="JNIEnv_DeleteLocalRef_2">JNIEnv_DeleteLocalRef_2</a></td><td> void DeleteLocalRef(jobject obj) </td><td>(NULL)</td><td>DeleteLocalRef(NULL) passed</td></tr>
<tr><td><a name="JNIEnv_NewGlobalRef_1">JNIEnv_NewGlobalRef_1</a></td><td> jobject NewGlobalRef(jobject lobj) </td><td>(obj)</td><td>NewGlobalRef return correct value with correct object as parameter</td></tr>
<tr><td><a name="JNIEnv_NewGlobalRef_2">JNIEnv_NewGlobalRef_2</a></td><td> jobject NewGlobalRef(jobject lobj) </td><td>(NULL)</td><td>NewGlobalRef return correct value with object=NULL</td></tr>
<!--Total files: 1-->
<tr><td><a name="JNIEnv_GetJavaVM_1">JNIEnv_GetJavaVM_1</a></td><td> jint GetJavaVM(JavaVM **vm) </td><td>(NULL)</td><td>GetJavaVM work properly with NULL as JavaVM **</td></tr>
<tr><td><a name="JNIEnv_GetJavaVM_2">JNIEnv_GetJavaVM_2</a></td><td> jint GetJavaVM(JavaVM **vm) </td><td>(vm)</td><td>GetJavaVM work properly with correct parameters</td></tr>
<!--Total files: 32-->
<tr><td><a name="JNIEnv_AllocObject_1">JNIEnv_AllocObject_1</a></td><td> jobject AllocObject(jclass clazz) </td><td>(NULL)</td><td>AllocObject(NULL) return correct value - NULL</td></tr>
<tr><td><a name="JNIEnv_AllocObject_2">JNIEnv_AllocObject_2</a></td><td> jobject AllocObject(jclass clazz) </td><td>(clazz)</td><td>AllocObject(correct class) return correct value</td></tr>
<tr><td><a name="JNIEnv_AllocObject_3">JNIEnv_AllocObject_3</a></td><td> jobject AllocObject(jclass clazz) </td><td>(clazz)</td><td>AllocObject(abstract class) return correct value - NULL</td></tr>
<tr><td><a name="JNIEnv_AllocObject_4">JNIEnv_AllocObject_4</a></td><td> jobject AllocObject(jclass clazz) </td><td>(clazz)</td><td>AllocObject(interface) return correct value - NULL</td></tr>
<tr><td><a name="JNIEnv_GetObjectClass_1">JNIEnv_GetObjectClass_1</a></td><td> jclass GetObjectClass(jobject obj) </td><td>(obj)</td><td>GetObjectClass(some object) return correct value</td></tr>
<tr><td><a name="JNIEnv_GetObjectClass_2">JNIEnv_GetObjectClass_2</a></td><td> jclass GetObjectClass(jobject obj) </td><td>(NULL)</td><td>GetObjectClass(NULL) return correct value</td></tr>
<tr><td><a name="JNIEnv_IsInstanceOf_1">JNIEnv_IsInstanceOf_1</a></td><td> jboolean IsInstanceOf(jobject obj, jclass clazz) </td><td>(obj1, clazz1))</td><td>IsInstanceOf(some obj, its class) return correct value</td></tr>
<tr><td><a name="JNIEnv_IsInstanceOf_2">JNIEnv_IsInstanceOf_2</a></td><td> jboolean IsInstanceOf(jobject obj, jclass clazz) </td><td>(obj1, clazz2))</td><td>IsInstanceOf(some obj, its superclass) return correct value</td></tr>
<tr><td><a name="JNIEnv_IsInstanceOf_3">JNIEnv_IsInstanceOf_3</a></td><td> jboolean IsInstanceOf(jobject obj, jclass clazz) </td><td>(obj1, clazz3))</td><td>IsInstanceOf(some obj, isn't superclass or class) return correct value</td></tr>
<tr><td><a name="JNIEnv_IsInstanceOf_4">JNIEnv_IsInstanceOf_4</a></td><td> jboolean IsInstanceOf(jobject obj, jclass clazz) </td><td>(NULL, clazz1))</td><td>IsInstanceOf(NULL, class) return correct value</td></tr>
<tr><td><a name="JNIEnv_IsInstanceOf_5">JNIEnv_IsInstanceOf_5</a></td><td> jboolean IsInstanceOf(jobject obj, jclass clazz) </td><td>(NULL, NULL))</td><td>IsInstanceOf(NULL, NULL) return correct value</td></tr>
<tr><td><a name="JNIEnv_IsSameObject_1">JNIEnv_IsSameObject_1</a></td><td> jboolean IsSameObject(jobject obj1, jobject obj2) </td><td>(obj1, obj2) )</td><td>IsSameObject(obj, obj) return correct value</td></tr>
<tr><td><a name="JNIEnv_IsSameObject_2">JNIEnv_IsSameObject_2</a></td><td> jboolean IsSameObject(jobject obj1, jobject obj2) </td><td>(obj, obj1))</td><td>IsSameObject(obj, another obj) return correct value</td></tr>
<tr><td><a name="JNIEnv_IsSameObject_3">JNIEnv_IsSameObject_3</a></td><td> jboolean IsSameObject(jobject obj1, jobject obj2) </td><td>(obj, NULL) )</td><td>IsSameObject(obj, NULL) return correct value</td></tr>
<tr><td><a name="JNIEnv_IsSameObject_4">JNIEnv_IsSameObject_4</a></td><td> jboolean IsSameObject(jobject obj1, jobject obj2) </td><td>(NULL, NULL) )</td><td>IsSameObject(NULL, NULL) return correct value</td></tr>
<tr><td><a name="JNIEnv_NewObjectA_1">JNIEnv_NewObjectA_1</a></td><td> jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue *args) </td><td>(clazz, MethodID, args)</td><td>NewObjectA(all correct, int field) return correct value</td></tr>
<tr><td><a name="JNIEnv_NewObjectA_2">JNIEnv_NewObjectA_2</a></td><td> jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue *args) </td><td>(NULL, (jmethodID)1000, args)</td><td>NewObjectA for clazz = NULL and invalid constructor ID</td></tr>
<tr><td><a name="JNIEnv_NewObjectA_3">JNIEnv_NewObjectA_3</a></td><td> jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue *args) </td><td>(clazz, MethodID, args)</td><td>NewObjectA with java\\lang\\String as argument</td></tr>
<tr><td><a name="JNIEnv_NewObjectA_4">JNIEnv_NewObjectA_4</a></td><td> jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue *args) </td><td>(clazz, MethodID, args)</td><td>NewObjectA with legal class and illegal constructor ID</td></tr>
<tr><td><a name="JNIEnv_NewObjectA_5">JNIEnv_NewObjectA_5</a></td><td> jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue *args) </td><td>(clazz, (jmethodID)1000, args)</td><td>NewObjectA for abstract class and invalid constructor ID</td></tr>
<tr><td><a name="JNIEnv_NewObjectA_6">JNIEnv_NewObjectA_6</a></td><td> jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue *args) </td><td>(clazz, MethodID, args)</td><td>NewObjectA for class and private constructor</td></tr>
<tr><td><a name="JNIEnv_NewObjectA_7">JNIEnv_NewObjectA_7</a></td><td> jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue *args) </td><td>(clazz, MethodID, args)</td><td>NewObjectA for class and protected constructor</td></tr>
<tr><td><a name="JNIEnv_NewObjectA_8">JNIEnv_NewObjectA_8</a></td><td> jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue *args) </td><td>(clazz, MethodID, args)</td><td>NewObjectA for class and package visible constructor</td></tr>
<tr><td><a name="JNIEnv_NewObjectA_9">JNIEnv_NewObjectA_9</a></td><td> jobject NewObjectA(jclass clazz, jmethodID methodID, jvalue *args) </td><td>(clazz, MethodID, args)</td><td>NewObjectA for class and public constructor without arguments</td></tr>
<tr><td><a name="JNIEnv_NewObject_1">JNIEnv_NewObject_1</a></td><td> jobject NewObject(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, 555)</td><td>NewObject(all correct, int field) return correct value</td></tr>
<tr><td><a name="JNIEnv_NewObject_2">JNIEnv_NewObject_2</a></td><td> jobject NewObject(jclass clazz, jmethodID methodID, ...) </td><td>(NULL, (jmethodID)1000, 555)</td><td>NewObject for clazz = NULL and invalid constructor ID</td></tr>
<tr><td><a name="JNIEnv_NewObject_3">JNIEnv_NewObject_3</a></td><td> jobject NewObject(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, str)</td><td>NewObject with java\\lang\\String as argument</td></tr>
<tr><td><a name="JNIEnv_NewObject_4">JNIEnv_NewObject_4</a></td><td> jobject NewObject(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, 555)</td><td>NewObject with legal class and illegal constructor ID</td></tr>
<tr><td><a name="JNIEnv_NewObject_5">JNIEnv_NewObject_5</a></td><td> jobject NewObject(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, (jmethodID)1000, 555)</td><td>NewObject for abstract class and invalid constructor ID</td></tr>
<tr><td><a name="JNIEnv_NewObject_6">JNIEnv_NewObject_6</a></td><td> jobject NewObject(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, NULL)</td><td>NewObject for class and private constructor</td></tr>
<tr><td><a name="JNIEnv_NewObject_7">JNIEnv_NewObject_7</a></td><td> jobject NewObject(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, NULL)</td><td>NewObject for class and protected constructor</td></tr>
<tr><td><a name="JNIEnv_NewObject_8">JNIEnv_NewObject_8</a></td><td> jobject NewObject(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, NULL)</td><td>NewObject for class and package visible constructor</td></tr>
<tr><td><a name="JNIEnv_NewObject_9">JNIEnv_NewObject_9</a></td><td> jobject NewObject(jclass clazz, jmethodID methodID, ...) </td><td>(clazz, MethodID, NULL)</td><td>NewObject for class and public constructor without arguments</td></tr>
<!--Total files: 23-->
<tr><td><a name="JNIEnv_GetStringChars_1">JNIEnv_GetStringChars_1</a></td><td> const jchar *GetStringChars(jstring str, jboolean *isCopy) </td><td>(NULL, isCopy)</td><td>GetStringChars(NULL, isCopy) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetStringChars_2">JNIEnv_GetStringChars_2</a></td><td> const jchar *GetStringChars(jstring str, jboolean *isCopy) </td><td>(str, isCopy)</td><td>GetStringChars(empty, isCopy) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetStringChars_3">JNIEnv_GetStringChars_3</a></td><td> const jchar *GetStringChars(jstring str, jboolean *isCopy) </td><td>(str, isCopy)</td><td>GetStringChars(empty, isCopy) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetStringChars_4">JNIEnv_GetStringChars_4</a></td><td> const jchar *GetStringChars(jstring str, jboolean *isCopy) </td><td>(str, NULL)</td><td>GetStringChars(empty, isCopy) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetStringLength_1">JNIEnv_GetStringLength_1</a></td><td> jsize GetStringLength(jstring str) </td><td>(NULL)</td><td>GetStringLength(NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetStringLength_2">JNIEnv_GetStringLength_2</a></td><td> jsize GetStringLength(jstring str) </td><td>(str)</td><td>GetStringLength(NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetStringLength_3">JNIEnv_GetStringLength_3</a></td><td> jsize GetStringLength(jstring str) </td><td>(str)</td><td>GetStringLength(NULL) returns correct value</td></tr>
<tr><td><a name="JNIEnv_GetStringUTFChars_1">JNIEnv_GetStringUTFChars_1</a></td><td> const char* GetStringUTFChars(jstring str, jboolean *isCopy) </td><td>(str, NULL)</td><td>GetStringUTFChars returns correct value (non-empty string and isCopy = NULL)</td></tr>
<tr><td><a name="JNIEnv_GetStringUTFChars_2">JNIEnv_GetStringUTFChars_2</a></td><td> const char* GetStringUTFChars(jstring str, jboolean *isCopy) </td><td>(str, &isCopy)</td><td>GetStringUTFChars returns correct value (string=NULL and isCopy is not NULL)</td></tr>
<tr><td><a name="JNIEnv_GetStringUTFChars_3">JNIEnv_GetStringUTFChars_3</a></td><td> const char* GetStringUTFChars(jstring str, jboolean *isCopy) </td><td>(str, &isCopy)</td><td>GetStringUTFChars returns correct value (string is empty and isCopy is not NULL)</td></tr>
<tr><td><a name="JNIEnv_GetStringUTFChars_4">JNIEnv_GetStringUTFChars_4</a></td><td> const char* GetStringUTFChars(jstring str, jboolean *isCopy) </td><td>(str, &isCopy)</td><td>GetStringUTFChars returns correct value (string=12345678 and isCopy is not NULL)</td></tr>
<tr><td><a name="JNIEnv_GetStringUTFLength_1">JNIEnv_GetStringUTFLength_1</a></td><td> jsize GetStringUTFLength(jstring str) </td><td>(str)</td><td>GetStringUTFLength(correct string) return correct value!</td></tr>
<tr><td><a name="JNIEnv_GetStringUTFLength_2">JNIEnv_GetStringUTFLength_2</a></td><td> jsize GetStringUTFLength(jstring str) </td><td>(str)</td><td>GetStringUTFLength(empty string) return correct value!</td></tr>
<tr><td><a name="JNIEnv_GetStringUTFLength_3">JNIEnv_GetStringUTFLength_3</a></td><td> jsize GetStringUTFLength(jstring str) </td><td>(str)</td><td>GetStringUTFLength(string == NULL) return correct value!</td></tr>
<tr><td><a name="JNIEnv_NewStringUTF_1">JNIEnv_NewStringUTF_1</a></td><td> jstring NewStringUTF(const char *utf) </td><td>("12345678")</td><td>NewStringUTF(non empty string) return correct value</td></tr>
<tr><td><a name="JNIEnv_NewStringUTF_2">JNIEnv_NewStringUTF_2</a></td><td> jstring NewStringUTF(const char *utf) </td><td>("")</td><td>NewStringUTF(\"\</td></tr>
<tr><td><a name="JNIEnv_NewStringUTF_3">JNIEnv_NewStringUTF_3</a></td><td> jstring NewStringUTF(const char *utf) </td><td>(NULL)</td><td>NewStringUTF(NULL) == NULL, correct!</td></tr>
<tr><td><a name="JNIEnv_NewString_1">JNIEnv_NewString_1</a></td><td> jstring NewString(const jchar *unicode, jsize len) </td><td>(NULL, 0)</td><td>NewString(NULL, 0) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewString_2">JNIEnv_NewString_2</a></td><td> jstring NewString(const jchar *unicode, jsize len) </td><td>(str_chars, 0)</td><td>NewString(correct, 0) returns correct value</td></tr>
<tr><td><a name="JNIEnv_NewString_3">JNIEnv_NewString_3</a></td><td> jstring NewString(const jchar *unicode, jsize len) </td><td>(str_chars, 4)</td><td>NewString(correct, correct) returns correct value</td></tr>
<tr><td><a name="JNIEnv_ReleaseStringChars_1">JNIEnv_ReleaseStringChars_1</a></td><td> void ReleaseStringChars(jstring str, const jchar *chars) </td><td>(NULL, NULL)</td><td>ReleaseStringChars(NULL, NULL) correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseStringChars_2">JNIEnv_ReleaseStringChars_2</a></td><td> void ReleaseStringChars(jstring str, const jchar *chars) </td><td>(str, chars)</td><td>ReleaseStringChars(correct, correct) correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseStringUTFChars_1">JNIEnv_ReleaseStringUTFChars_1</a></td><td> void ReleaseStringUTFChars(jstring str, const char* chars) </td><td>(str, str_chars)</td><td>ReleaseStringUTFChars(correct, correct) correct</td></tr>
<tr><td><a name="JNIEnv_ReleaseStringUTFChars_2">JNIEnv_ReleaseStringUTFChars_2</a></td><td> void ReleaseStringUTFChars(jstring str, const char* chars) </td><td>(NULL, NULL)</td><td>ReleaseStringUTFChars(NULL, NULL) do not failed</td></tr>
<!--Total files: 0-->
<tr><td><a name="JNIEnv_GetVersion_1">JNIEnv_GetVersion_1</a></td><td> jint GetVersion() </td><td>()</td><td>GetVersion passed</td></tr>
</table></body></html>

Просмотреть файл

@ -1,758 +0,0 @@
########################### LCM tests #######################
LCM_StartupLiveConnect_1
LCM_StartupLiveConnect_2
LCM_ShutdownLiveConnect_1
LCM_ShutdownLiveConnect_2
LCM_IsLiveConnectEnabled_1
LCM_IsLiveConnectEnabled_2
LCM_InitLiveConnectClasses_1
LCM_WrapJavaObject_1
LCM_WrapJavaObject_2
#
#
############################# TM tests #########################
#
ThreadManager_PostEvent_1
ThreadManager_PostEvent_2
ThreadManager_PostEvent_3
ThreadManager_PostEvent_4
ThreadManager_PostEvent_5
ThreadManager_PostEvent_6
ThreadManager_PostEvent_7
ThreadManager_CreateThread_1
ThreadManager_CreateThread_2
ThreadManager_CreateThread_3
ThreadManager_CreateThread_4
ThreadManager_NotifyAll_1
ThreadManager_NotifyAll_2
ThreadManager_NotifyAll_3
ThreadManager_NotifyAll_4
ThreadManager_Notify_1
ThreadManager_Notify_2
ThreadManager_Notify_3
ThreadManager_Notify_4
ThreadManager_Wait_1
ThreadManager_Wait_2
ThreadManager_Wait_3
ThreadManager_Wait_4
ThreadManager_ExitMonitor_1
ThreadManager_ExitMonitor_2
ThreadManager_ExitMonitor_3
ThreadManager_ExitMonitor_4
ThreadManager_EnterMonitor_1
ThreadManager_EnterMonitor_4
ThreadManager_GetCurrentThread_1
ThreadManager_Sleep_1
ThreadManager_Sleep_2
#
#
############################## JVMManager tests #################
#
JVMManager_CreateProxyJNI_1
JVMManager_CreateProxyJNI_2
JVMManager_CreateProxyJNI_3
JVMManager_CreateProxyJNI_4
JVMManager_GetProxyJNI_1
JVMManager_GetProxyJNI_2
JVMManager_GetProxyJNI_3
JVMManager_IsJavaEnabled_1
JVMManager_ShowJavaConsole_1
JVMManager_ShowJavaConsole_2
#
############################# JNIEnv tests ######################
#
JNIEnv_GetBooleanField_1
JNIEnv_GetBooleanField_2
JNIEnv_GetBooleanField_3
JNIEnv_GetBooleanField_4
JNIEnv_GetBooleanField_5
JNIEnv_GetBooleanField_6
JNIEnv_GetByteField_1
JNIEnv_GetByteField_2
JNIEnv_GetByteField_3
JNIEnv_GetByteField_4
JNIEnv_GetByteField_5
JNIEnv_GetByteField_6
JNIEnv_GetCharField_1
JNIEnv_GetCharField_2
JNIEnv_GetCharField_3
JNIEnv_GetCharField_4
JNIEnv_GetCharField_5
JNIEnv_GetDoubleField_1
JNIEnv_GetDoubleField_2
JNIEnv_GetDoubleField_3
JNIEnv_GetDoubleField_4
JNIEnv_GetDoubleField_5
JNIEnv_GetDoubleField_6
JNIEnv_GetFieldID_1
JNIEnv_GetFieldID_10
JNIEnv_GetFieldID_11
JNIEnv_GetFieldID_12
JNIEnv_GetFieldID_13
JNIEnv_GetFieldID_14
JNIEnv_GetFieldID_15
JNIEnv_GetFieldID_16
JNIEnv_GetFieldID_17
JNIEnv_GetFieldID_18
JNIEnv_GetFieldID_19
JNIEnv_GetFieldID_2
JNIEnv_GetFieldID_20
JNIEnv_GetFieldID_3
JNIEnv_GetFieldID_4
JNIEnv_GetFieldID_5
JNIEnv_GetFieldID_6
JNIEnv_GetFieldID_7
JNIEnv_GetFieldID_8
JNIEnv_GetFieldID_9
JNIEnv_GetFloatField_1
JNIEnv_GetFloatField_2
JNIEnv_GetFloatField_3
JNIEnv_GetFloatField_4
JNIEnv_GetFloatField_5
JNIEnv_GetFloatField_6
JNIEnv_GetIntField_1
JNIEnv_GetIntField_2
JNIEnv_GetIntField_3
JNIEnv_GetIntField_4
JNIEnv_GetIntField_5
JNIEnv_GetIntField_6
JNIEnv_GetIntField_7
JNIEnv_GetLongField_1
JNIEnv_GetLongField_2
JNIEnv_GetLongField_3
JNIEnv_GetLongField_4
JNIEnv_GetLongField_5
JNIEnv_GetLongField_6
JNIEnv_GetObjectField_1
JNIEnv_GetObjectField_2
JNIEnv_GetObjectField_3
JNIEnv_GetObjectField_4
JNIEnv_GetObjectField_5
JNIEnv_GetShortField_1
JNIEnv_GetShortField_2
JNIEnv_GetShortField_3
JNIEnv_GetShortField_4
JNIEnv_GetShortField_5
JNIEnv_GetShortField_6
JNIEnv_SetBooleanField_1
JNIEnv_SetBooleanField_2
JNIEnv_SetBooleanField_3
JNIEnv_SetBooleanField_4
JNIEnv_SetBooleanField_5
JNIEnv_SetBooleanField_6
JNIEnv_SetBooleanField_7
JNIEnv_SetByteField_1
JNIEnv_SetByteField_2
JNIEnv_SetByteField_3
JNIEnv_SetByteField_4
JNIEnv_SetByteField_5
JNIEnv_SetByteField_6
JNIEnv_SetCharField_1
JNIEnv_SetCharField_2
JNIEnv_SetCharField_3
JNIEnv_SetCharField_4
JNIEnv_SetCharField_5
JNIEnv_SetCharField_6
JNIEnv_SetDoubleField_1
JNIEnv_SetDoubleField_2
JNIEnv_SetDoubleField_3
JNIEnv_SetDoubleField_4
JNIEnv_SetDoubleField_5
JNIEnv_SetDoubleField_6
JNIEnv_SetFloatField_1
JNIEnv_SetFloatField_2
JNIEnv_SetFloatField_3
JNIEnv_SetFloatField_4
JNIEnv_SetFloatField_5
JNIEnv_SetIntField_1
JNIEnv_SetIntField_2
JNIEnv_SetIntField_3
JNIEnv_SetIntField_4
JNIEnv_SetIntField_5
JNIEnv_SetLongField_1
JNIEnv_SetLongField_2
JNIEnv_SetLongField_3
JNIEnv_SetLongField_4
JNIEnv_SetLongField_5
JNIEnv_SetObjectField_1
JNIEnv_SetObjectField_2
JNIEnv_SetObjectField_3
JNIEnv_SetObjectField_4
JNIEnv_SetObjectField_5
JNIEnv_SetShortField_1
JNIEnv_SetShortField_2
JNIEnv_SetShortField_3
JNIEnv_SetShortField_4
JNIEnv_SetShortField_5
JNIEnv_GetStaticBooleanField_1
JNIEnv_GetStaticBooleanField_2
JNIEnv_GetStaticBooleanField_3
JNIEnv_GetStaticBooleanField_4
JNIEnv_GetStaticBooleanField_5
JNIEnv_GetStaticBooleanField_6
JNIEnv_GetStaticByteField_1
JNIEnv_GetStaticByteField_2
JNIEnv_GetStaticByteField_3
JNIEnv_GetStaticByteField_4
JNIEnv_GetStaticByteField_5
JNIEnv_GetStaticByteField_6
JNIEnv_GetStaticCharField_1
JNIEnv_GetStaticCharField_2
JNIEnv_GetStaticCharField_3
JNIEnv_GetStaticCharField_4
JNIEnv_GetStaticCharField_5
JNIEnv_GetStaticDoubleField_1
JNIEnv_GetStaticDoubleField_2
JNIEnv_GetStaticDoubleField_3
JNIEnv_GetStaticDoubleField_4
JNIEnv_GetStaticDoubleField_5
JNIEnv_GetStaticFieldID_1
JNIEnv_GetStaticFieldID_10
JNIEnv_GetStaticFieldID_11
JNIEnv_GetStaticFieldID_12
JNIEnv_GetStaticFieldID_13
JNIEnv_GetStaticFieldID_14
JNIEnv_GetStaticFieldID_15
JNIEnv_GetStaticFieldID_16
JNIEnv_GetStaticFieldID_17
JNIEnv_GetStaticFieldID_18
JNIEnv_GetStaticFieldID_19
JNIEnv_GetStaticFieldID_2
JNIEnv_GetStaticFieldID_20
JNIEnv_GetStaticFieldID_3
JNIEnv_GetStaticFieldID_4
JNIEnv_GetStaticFieldID_5
JNIEnv_GetStaticFieldID_6
JNIEnv_GetStaticFieldID_7
JNIEnv_GetStaticFieldID_8
JNIEnv_GetStaticFieldID_9
JNIEnv_GetStaticFloatField_1
JNIEnv_GetStaticFloatField_2
JNIEnv_GetStaticFloatField_3
JNIEnv_GetStaticFloatField_4
JNIEnv_GetStaticFloatField_5
JNIEnv_GetStaticFloatField_6
JNIEnv_GetStaticIntField_1
JNIEnv_GetStaticIntField_2
JNIEnv_GetStaticIntField_3
JNIEnv_GetStaticIntField_4
JNIEnv_GetStaticIntField_5
JNIEnv_GetStaticIntField_6
JNIEnv_GetStaticLongField_1
JNIEnv_GetStaticLongField_2
JNIEnv_SetStaticIntField_1
JNIEnv_GetStaticLongField_3
JNIEnv_GetStaticLongField_4
JNIEnv_GetStaticLongField_5
JNIEnv_GetStaticLongField_6
JNIEnv_GetStaticObjectField_1
JNIEnv_GetStaticObjectField_2
JNIEnv_GetStaticObjectField_3
JNIEnv_GetStaticObjectField_4
JNIEnv_GetStaticObjectField_5
JNIEnv_GetStaticShortField_1
JNIEnv_GetStaticShortField_2
JNIEnv_GetStaticShortField_3
JNIEnv_GetStaticShortField_4
JNIEnv_GetStaticShortField_5
JNIEnv_GetStaticShortField_6
JNIEnv_SetStaticBooleanField_1
JNIEnv_SetStaticBooleanField_2
JNIEnv_SetStaticBooleanField_3
JNIEnv_SetStaticBooleanField_4
JNIEnv_SetStaticBooleanField_5
JNIEnv_SetStaticBooleanField_6
JNIEnv_SetStaticByteField_1
JNIEnv_SetStaticByteField_2
JNIEnv_SetStaticByteField_3
JNIEnv_SetStaticByteField_4
JNIEnv_SetStaticByteField_5
JNIEnv_SetStaticByteField_6
JNIEnv_SetStaticCharField_1
JNIEnv_SetStaticCharField_2
JNIEnv_SetStaticCharField_3
JNIEnv_SetStaticCharField_4
JNIEnv_SetStaticCharField_5
JNIEnv_SetStaticCharField_6
JNIEnv_SetStaticDoubleField_1
JNIEnv_SetStaticDoubleField_2
JNIEnv_SetStaticDoubleField_3
JNIEnv_SetStaticDoubleField_4
JNIEnv_SetStaticDoubleField_5
JNIEnv_SetStaticDoubleField_6
JNIEnv_SetStaticFloatField_1
JNIEnv_SetStaticFloatField_2
JNIEnv_SetStaticFloatField_3
JNIEnv_SetStaticFloatField_4
JNIEnv_SetStaticFloatField_5
JNIEnv_SetStaticIntField_2
JNIEnv_SetStaticIntField_3
JNIEnv_SetStaticIntField_4
JNIEnv_SetStaticIntField_5
JNIEnv_SetStaticLongField_1
JNIEnv_SetStaticLongField_2
JNIEnv_SetStaticLongField_3
JNIEnv_SetStaticLongField_4
JNIEnv_SetStaticLongField_5
JNIEnv_SetStaticObjectField_1
JNIEnv_SetStaticObjectField_2
JNIEnv_SetStaticObjectField_3
JNIEnv_SetStaticObjectField_4
JNIEnv_SetStaticObjectField_5
JNIEnv_SetStaticShortField_1
JNIEnv_SetStaticShortField_2
JNIEnv_SetStaticShortField_3
JNIEnv_SetStaticShortField_4
JNIEnv_SetStaticShortField_5
JNIEnv_GetArrayLength_1
JNIEnv_GetArrayLength_2
JNIEnv_GetArrayLength_3
JNIEnv_GetBooleanArrayElements_1
JNIEnv_GetBooleanArrayElements_2
JNIEnv_GetBooleanArrayElements_3
JNIEnv_GetBooleanArrayRegion_1
JNIEnv_GetByteArrayElements_1
JNIEnv_GetByteArrayElements_2
JNIEnv_GetByteArrayElements_3
JNIEnv_GetByteArrayRegion_1
JNIEnv_GetCharArrayElements_1
JNIEnv_GetCharArrayElements_2
JNIEnv_GetCharArrayElements_3
JNIEnv_GetCharArrayRegion_1
JNIEnv_GetDoubleArrayElements_1
JNIEnv_GetDoubleArrayElements_2
JNIEnv_GetDoubleArrayElements_3
JNIEnv_GetDoubleArrayRegion_1
JNIEnv_GetFloatArrayElements_1
JNIEnv_GetFloatArrayElements_2
JNIEnv_GetFloatArrayElements_3
JNIEnv_GetFloatArrayRegion_1
JNIEnv_GetIntArrayElements_1
JNIEnv_GetIntArrayElements_2
JNIEnv_GetIntArrayRegion_1
JNIEnv_GetIntArrayElements_3
JNIEnv_GetIntArrayRegion_2
JNIEnv_GetIntArrayRegion_3
JNIEnv_GetIntArrayRegion_4
JNIEnv_GetLongArrayElements_1
JNIEnv_GetLongArrayElements_2
JNIEnv_GetLongArrayElements_3
JNIEnv_GetLongArrayRegion_1
JNIEnv_GetObjectArrayElement_1
JNIEnv_GetObjectArrayElement_2
JNIEnv_GetObjectArrayElement_3
JNIEnv_GetObjectArrayElement_4
JNIEnv_GetObjectArrayElement_5
JNIEnv_GetShortArrayElements_1
JNIEnv_GetShortArrayElements_2
JNIEnv_GetShortArrayElements_3
JNIEnv_GetShortArrayRegion_1
JNIEnv_NewBooleanArray_1
JNIEnv_NewBooleanArray_2
JNIEnv_NewBooleanArray_3
JNIEnv_NewByteArray_1
JNIEnv_NewByteArray_2
JNIEnv_NewByteArray_3
JNIEnv_NewCharArray_1
JNIEnv_NewCharArray_2
JNIEnv_NewCharArray_3
JNIEnv_NewDoubleArray_1
JNIEnv_NewDoubleArray_2
JNIEnv_NewDoubleArray_3
JNIEnv_NewFloatArray_1
JNIEnv_NewFloatArray_2
JNIEnv_NewFloatArray_3
JNIEnv_NewIntArray_1
JNIEnv_NewIntArray_2
JNIEnv_NewIntArray_3
JNIEnv_NewLongArray_1
JNIEnv_NewLongArray_2
JNIEnv_NewLongArray_3
JNIEnv_NewObjectArray_1
JNIEnv_NewObjectArray_2
JNIEnv_NewObjectArray_3
JNIEnv_NewObjectArray_4
JNIEnv_NewObjectArray_5
JNIEnv_NewObjectArray_6
JNIEnv_NewShortArray_1
JNIEnv_NewShortArray_2
JNIEnv_NewShortArray_3
JNIEnv_ReleaseBooleanArrayElements_1
JNIEnv_ReleaseBooleanArrayElements_2
JNIEnv_ReleaseBooleanArrayElements_3
JNIEnv_ReleaseByteArrayElements_1
JNIEnv_ReleaseByteArrayElements_2
JNIEnv_ReleaseByteArrayElements_3
JNIEnv_ReleaseCharArrayElements_1
JNIEnv_ReleaseCharArrayElements_2
JNIEnv_ReleaseCharArrayElements_3
JNIEnv_ReleaseDoubleArrayElements_1
JNIEnv_ReleaseDoubleArrayElements_2
JNIEnv_ReleaseDoubleArrayElements_3
JNIEnv_ReleaseFloatArrayElements_1
JNIEnv_ReleaseFloatArrayElements_2
JNIEnv_ReleaseFloatArrayElements_3
JNIEnv_ReleaseIntArrayElements_1
JNIEnv_ReleaseIntArrayElements_2
JNIEnv_ReleaseIntArrayElements_3
JNIEnv_ReleaseLongArrayElements_1
JNIEnv_ReleaseLongArrayElements_2
JNIEnv_ReleaseLongArrayElements_3
JNIEnv_ReleaseShortArrayElements_1
JNIEnv_ReleaseShortArrayElements_2
JNIEnv_ReleaseShortArrayElements_3
JNIEnv_SetBooleanArrayRegion_1
JNIEnv_SetByteArrayRegion_1
JNIEnv_SetCharArrayRegion_1
JNIEnv_SetDoubleArrayRegion_1
JNIEnv_SetFloatArrayRegion_1
JNIEnv_SetIntArrayRegion_1
JNIEnv_SetIntArrayRegion_2
JNIEnv_SetIntArrayRegion_3
JNIEnv_SetIntArrayRegion_4
JNIEnv_SetLongArrayRegion_1
JNIEnv_SetObjectArrayElement_1
JNIEnv_SetObjectArrayElement_2
JNIEnv_SetObjectArrayElement_3
JNIEnv_SetObjectArrayElement_4
JNIEnv_SetObjectArrayElement_5
JNIEnv_SetShortArrayRegion_1
JNIEnv_CallBooleanMethod_1
JNIEnv_CallBooleanMethod_2
JNIEnv_CallBooleanMethod_3
JNIEnv_CallBooleanMethod_4
JNIEnv_CallByteMethod_1
JNIEnv_CallByteMethod_2
JNIEnv_CallByteMethod_3
JNIEnv_CallByteMethod_4
JNIEnv_CallCharMethod_1
JNIEnv_CallCharMethod_2
JNIEnv_CallCharMethod_3
JNIEnv_CallCharMethod_4
JNIEnv_CallDoubleMethod_1
JNIEnv_CallDoubleMethod_2
JNIEnv_CallDoubleMethod_3
JNIEnv_CallDoubleMethod_4
JNIEnv_CallFloatMethod_1
JNIEnv_CallFloatMethod_2
JNIEnv_CallFloatMethod_3
JNIEnv_CallFloatMethod_4
JNIEnv_CallIntMethod_1
JNIEnv_CallIntMethod_10
JNIEnv_CallIntMethod_11
JNIEnv_CallIntMethod_12
JNIEnv_CallIntMethod_13
JNIEnv_CallIntMethod_14
JNIEnv_CallIntMethod_15
JNIEnv_CallIntMethod_16
JNIEnv_CallIntMethod_17
JNIEnv_CallIntMethod_18
JNIEnv_CallIntMethod_19
JNIEnv_CallIntMethod_2
JNIEnv_CallIntMethod_3
JNIEnv_CallIntMethod_4
JNIEnv_CallIntMethod_5
JNIEnv_CallIntMethod_6
JNIEnv_CallIntMethod_7
JNIEnv_CallIntMethod_8
JNIEnv_CallIntMethod_9
JNIEnv_CallLongMethod_1
JNIEnv_CallLongMethod_2
JNIEnv_CallLongMethod_3
JNIEnv_CallLongMethod_4
JNIEnv_CallNonvirtualBooleanMethod_1
JNIEnv_CallNonvirtualBooleanMethod_2
JNIEnv_CallNonvirtualByteMethod_1
JNIEnv_CallNonvirtualBooleanMethod_3
JNIEnv_CallNonvirtualBooleanMethod_4
JNIEnv_CallNonvirtualByteMethod_2
JNIEnv_CallNonvirtualByteMethod_3
JNIEnv_CallNonvirtualByteMethod_4
JNIEnv_CallNonvirtualCharMethod_1
JNIEnv_CallNonvirtualCharMethod_2
JNIEnv_CallNonvirtualCharMethod_3
JNIEnv_CallNonvirtualCharMethod_4
JNIEnv_CallNonvirtualDoubleMethod_1
JNIEnv_CallNonvirtualDoubleMethod_2
JNIEnv_CallNonvirtualDoubleMethod_3
JNIEnv_CallNonvirtualDoubleMethod_4
JNIEnv_CallNonvirtualFloatMethod_1
JNIEnv_CallNonvirtualFloatMethod_2
JNIEnv_CallNonvirtualFloatMethod_3
JNIEnv_CallNonvirtualFloatMethod_4
JNIEnv_CallNonvirtualIntMethod_1
JNIEnv_CallNonvirtualIntMethod_10
JNIEnv_CallNonvirtualIntMethod_11
JNIEnv_CallNonvirtualIntMethod_12
JNIEnv_CallNonvirtualIntMethod_13
JNIEnv_CallNonvirtualIntMethod_14
JNIEnv_CallNonvirtualIntMethod_15
JNIEnv_GetMethodID_1
JNIEnv_CallNonvirtualIntMethod_16
JNIEnv_CallNonvirtualIntMethod_17
JNIEnv_CallNonvirtualIntMethod_18
JNIEnv_CallNonvirtualIntMethod_19
JNIEnv_CallNonvirtualIntMethod_2
JNIEnv_CallNonvirtualIntMethod_20
JNIEnv_CallNonvirtualIntMethod_21
JNIEnv_CallNonvirtualIntMethod_22
JNIEnv_CallNonvirtualIntMethod_23
JNIEnv_CallNonvirtualIntMethod_24
JNIEnv_CallNonvirtualIntMethod_25
JNIEnv_CallNonvirtualIntMethod_26
JNIEnv_CallObjectMethod_1
JNIEnv_CallNonvirtualIntMethod_27
JNIEnv_CallNonvirtualIntMethod_28
JNIEnv_CallNonvirtualIntMethod_29
JNIEnv_CallNonvirtualIntMethod_30
JNIEnv_CallNonvirtualIntMethod_31
JNIEnv_CallNonvirtualIntMethod_32
JNIEnv_CallNonvirtualIntMethod_33
JNIEnv_CallNonvirtualIntMethod_34
JNIEnv_CallNonvirtualIntMethod_4
JNIEnv_CallNonvirtualIntMethod_5
JNIEnv_CallNonvirtualIntMethod_7
JNIEnv_CallNonvirtualIntMethod_8
JNIEnv_CallObjectMethod_2
JNIEnv_CallNonvirtualIntMethod_9
JNIEnv_CallNonvirtualLongMethod_1
JNIEnv_CallNonvirtualLongMethod_2
JNIEnv_CallNonvirtualLongMethod_3
JNIEnv_CallNonvirtualLongMethod_4
JNIEnv_CallNonvirtualObjectMethod_1
JNIEnv_CallNonvirtualObjectMethod_2
JNIEnv_CallNonvirtualObjectMethod_3
JNIEnv_CallNonvirtualObjectMethod_4
JNIEnv_CallNonvirtualObjectMethod_5
JNIEnv_CallNonvirtualObjectMethod_6
JNIEnv_CallNonvirtualObjectMethod_7
JNIEnv_CallNonvirtualShortMethod_1
JNIEnv_CallNonvirtualShortMethod_2
JNIEnv_CallNonvirtualShortMethod_3
JNIEnv_CallNonvirtualShortMethod_4
JNIEnv_CallNonvirtualVoidMethod_1
JNIEnv_CallNonvirtualVoidMethod_2
JNIEnv_CallObjectMethod_3
JNIEnv_CallObjectMethod_4
JNIEnv_CallObjectMethod_5
JNIEnv_CallObjectMethod_6
JNIEnv_CallObjectMethod_7
JNIEnv_CallShortMethod_1
JNIEnv_CallShortMethod_2
JNIEnv_CallShortMethod_3
JNIEnv_CallShortMethod_4
JNIEnv_CallVoidMethod_1
JNIEnv_CallVoidMethod_2
JNIEnv_GetMethodID_10
JNIEnv_GetMethodID_11
JNIEnv_GetMethodID_12
JNIEnv_GetMethodID_13
JNIEnv_GetMethodID_14
JNIEnv_GetMethodID_15
JNIEnv_GetMethodID_16
JNIEnv_GetMethodID_17
JNIEnv_GetMethodID_18
JNIEnv_GetMethodID_19
JNIEnv_GetMethodID_2
JNIEnv_GetMethodID_20
JNIEnv_GetMethodID_21
JNIEnv_GetMethodID_22
JNIEnv_GetMethodID_23
JNIEnv_GetMethodID_24
JNIEnv_GetMethodID_25
JNIEnv_GetMethodID_26
JNIEnv_GetMethodID_27
JNIEnv_GetMethodID_28
JNIEnv_GetMethodID_29
JNIEnv_GetMethodID_3
JNIEnv_GetMethodID_30
JNIEnv_GetMethodID_31
JNIEnv_GetMethodID_32
JNIEnv_GetMethodID_33
JNIEnv_GetMethodID_34
JNIEnv_GetMethodID_35
JNIEnv_GetMethodID_36
JNIEnv_GetMethodID_37
JNIEnv_GetMethodID_38
JNIEnv_GetMethodID_39
JNIEnv_GetMethodID_4
JNIEnv_GetMethodID_5
JNIEnv_GetMethodID_6
JNIEnv_GetMethodID_7
JNIEnv_GetMethodID_8
JNIEnv_GetMethodID_9
JNIEnv_CallStaticBooleanMethod_1
JNIEnv_CallStaticBooleanMethod_2
JNIEnv_CallStaticBooleanMethod_3
JNIEnv_CallStaticBooleanMethod_4
JNIEnv_CallStaticByteMethod_1
JNIEnv_CallStaticByteMethod_2
JNIEnv_CallStaticByteMethod_3
JNIEnv_CallStaticByteMethod_4
JNIEnv_CallStaticCharMethod_1
JNIEnv_CallStaticCharMethod_2
JNIEnv_CallStaticCharMethod_3
JNIEnv_CallStaticCharMethod_4
JNIEnv_CallStaticDoubleMethod_1
JNIEnv_CallStaticDoubleMethod_2
JNIEnv_CallStaticDoubleMethod_3
JNIEnv_CallStaticDoubleMethod_4
JNIEnv_CallStaticFloatMethod_1
JNIEnv_CallStaticFloatMethod_2
JNIEnv_CallStaticFloatMethod_3
JNIEnv_CallStaticFloatMethod_4
JNIEnv_CallStaticIntMethod_1
JNIEnv_CallStaticIntMethod_10
JNIEnv_CallStaticIntMethod_11
JNIEnv_CallStaticIntMethod_12
JNIEnv_CallStaticIntMethod_13
JNIEnv_CallStaticIntMethod_14
JNIEnv_CallStaticIntMethod_15
JNIEnv_CallStaticIntMethod_16
JNIEnv_CallStaticIntMethod_17
JNIEnv_CallStaticIntMethod_18
JNIEnv_CallStaticIntMethod_19
JNIEnv_CallStaticIntMethod_2
JNIEnv_CallStaticIntMethod_20
JNIEnv_CallStaticIntMethod_21
JNIEnv_CallStaticIntMethod_4
JNIEnv_CallStaticIntMethod_5
JNIEnv_CallStaticIntMethod_7
JNIEnv_CallStaticIntMethod_8
JNIEnv_CallStaticIntMethod_9
JNIEnv_CallStaticLongMethod_1
JNIEnv_CallStaticLongMethod_2
JNIEnv_CallStaticLongMethod_3
JNIEnv_CallStaticLongMethod_4
JNIEnv_CallStaticObjectMethod_1
JNIEnv_CallStaticObjectMethod_2
JNIEnv_CallStaticObjectMethod_3
JNIEnv_CallStaticObjectMethod_4
JNIEnv_CallStaticObjectMethod_5
JNIEnv_CallStaticObjectMethod_6
JNIEnv_CallStaticObjectMethod_7
JNIEnv_CallStaticShortMethod_1
JNIEnv_CallStaticShortMethod_2
JNIEnv_CallStaticShortMethod_3
JNIEnv_CallStaticShortMethod_4
JNIEnv_CallStaticVoidMethod_1
JNIEnv_CallStaticVoidMethod_2
JNIEnv_GetStaticMethodID_1
JNIEnv_GetStaticMethodID_10
JNIEnv_GetStaticMethodID_11
JNIEnv_GetStaticMethodID_12
JNIEnv_GetStaticMethodID_13
JNIEnv_GetStaticMethodID_14
JNIEnv_GetStaticMethodID_15
JNIEnv_GetStaticMethodID_16
JNIEnv_GetStaticMethodID_17
JNIEnv_GetStaticMethodID_18
JNIEnv_GetStaticMethodID_19
JNIEnv_GetStaticMethodID_2
JNIEnv_GetStaticMethodID_20
JNIEnv_GetStaticMethodID_21
JNIEnv_GetStaticMethodID_22
JNIEnv_GetStaticMethodID_3
JNIEnv_GetStaticMethodID_4
JNIEnv_GetStaticMethodID_5
JNIEnv_GetStaticMethodID_6
JNIEnv_GetStaticMethodID_7
JNIEnv_GetStaticMethodID_8
JNIEnv_GetStaticMethodID_9
JNIEnv_FindClass_1
JNIEnv_FindClass_2
JNIEnv_FindClass_3
JNIEnv_FindClass_4
JNIEnv_FindClass_5
JNIEnv_FindClass_6
JNIEnv_FindClass_7
JNIEnv_FindClass_8
JNIEnv_GetSuperclass_1
JNIEnv_GetSuperclass_2
JNIEnv_GetSuperclass_3
JNIEnv_GetSuperclass_4
JNIEnv_IsAssignableFrom_1
JNIEnv_IsAssignableFrom_2
JNIEnv_IsAssignableFrom_3
JNIEnv_IsAssignableFrom_4
JNIEnv_IsAssignableFrom_5
JNIEnv_ExceptionClear_1
JNIEnv_ExceptionClear_2
JNIEnv_ExceptionDescribe_1
JNIEnv_ExceptionDescribe_2
JNIEnv_ExceptionOccured_1
JNIEnv_ExceptionOccured_2
JNIEnv_FatalError_1
JNIEnv_ThrowNew_1
JNIEnv_ThrowNew_2
JNIEnv_ThrowNew_3
JNIEnv_ThrowNew_4
JNIEnv_ThrowNew_5
JNIEnv_Throw_1
JNIEnv_Throw_2
JNIEnv_DeleteGlobalRef_1
JNIEnv_DeleteGlobalRef_2
JNIEnv_DeleteLocalRef_1
JNIEnv_DeleteLocalRef_2
JNIEnv_NewGlobalRef_1
JNIEnv_NewGlobalRef_2
JNIEnv_GetJavaVM_1
JNIEnv_GetJavaVM_2
JNIEnv_AllocObject_1
JNIEnv_AllocObject_2
JNIEnv_AllocObject_3
JNIEnv_AllocObject_4
JNIEnv_GetObjectClass_1
JNIEnv_GetObjectClass_2
JNIEnv_IsInstanceOf_1
JNIEnv_IsInstanceOf_2
JNIEnv_IsInstanceOf_3
JNIEnv_IsInstanceOf_4
JNIEnv_IsInstanceOf_5
JNIEnv_IsSameObject_1
JNIEnv_IsSameObject_2
JNIEnv_IsSameObject_3
JNIEnv_IsSameObject_4
JNIEnv_NewObjectA_1
JNIEnv_NewObjectA_2
JNIEnv_NewObjectA_3
JNIEnv_NewObjectA_4
JNIEnv_NewObjectA_5
JNIEnv_NewObjectA_6
JNIEnv_NewObjectA_7
JNIEnv_NewObjectA_8
JNIEnv_NewObjectA_9
JNIEnv_NewObject_1
JNIEnv_NewObject_2
JNIEnv_NewObject_3
JNIEnv_NewObject_4
JNIEnv_NewObject_5
JNIEnv_NewObject_6
JNIEnv_NewObject_7
JNIEnv_NewObject_8
JNIEnv_NewObject_9
JNIEnv_GetStringChars_1
JNIEnv_GetStringChars_2
JNIEnv_GetStringChars_3
JNIEnv_GetStringChars_4
JNIEnv_GetStringLength_1
JNIEnv_GetStringLength_2
JNIEnv_GetStringLength_3
JNIEnv_GetStringUTFChars_1
JNIEnv_GetStringUTFChars_2
JNIEnv_GetStringUTFChars_3
JNIEnv_GetStringUTFChars_4
JNIEnv_GetStringUTFLength_1
JNIEnv_GetStringUTFLength_2
JNIEnv_GetStringUTFLength_3
JNIEnv_NewStringUTF_1
JNIEnv_NewStringUTF_2
JNIEnv_NewStringUTF_3
JNIEnv_NewString_1
JNIEnv_NewString_2
JNIEnv_NewString_3
JNIEnv_ReleaseStringChars_1
JNIEnv_ReleaseStringChars_2
JNIEnv_ReleaseStringUTFChars_1
JNIEnv_ReleaseStringUTFChars_2
JNIEnv_GetVersion_1

Просмотреть файл

@ -1,558 +0,0 @@
#
####################### Proxy JNI tests #######################
#
JNIEnv_AllocObject_2
JNIEnv_AllocObject_3
JNIEnv_AllocObject_4
JNIEnv_CallBooleanMethod_1
JNIEnv_CallBooleanMethod_2
JNIEnv_CallBooleanMethod_3
JNIEnv_CallBooleanMethod_4
JNIEnv_CallByteMethod_1
JNIEnv_CallByteMethod_2
JNIEnv_CallByteMethod_3
JNIEnv_CallByteMethod_4
JNIEnv_CallCharMethod_1
JNIEnv_CallCharMethod_2
JNIEnv_CallDoubleMethod_1
JNIEnv_CallDoubleMethod_2
JNIEnv_CallDoubleMethod_3
JNIEnv_CallDoubleMethod_4
JNIEnv_CallFloatMethod_1
JNIEnv_CallFloatMethod_2
JNIEnv_CallFloatMethod_3
JNIEnv_CallFloatMethod_4
JNIEnv_CallIntMethod_10
JNIEnv_CallIntMethod_11
JNIEnv_CallIntMethod_13
JNIEnv_CallIntMethod_14
JNIEnv_CallIntMethod_15
JNIEnv_CallIntMethod_16
JNIEnv_CallIntMethod_17
JNIEnv_CallIntMethod_18
JNIEnv_CallIntMethod_19
JNIEnv_CallIntMethod_1
JNIEnv_CallIntMethod_2
JNIEnv_CallIntMethod_3
JNIEnv_CallIntMethod_4
JNIEnv_CallIntMethod_5
JNIEnv_CallIntMethod_6
JNIEnv_CallIntMethod_7
JNIEnv_CallIntMethod_8
JNIEnv_CallIntMethod_9
JNIEnv_CallLongMethod_1
JNIEnv_CallLongMethod_2
JNIEnv_CallLongMethod_3
JNIEnv_CallLongMethod_4
JNIEnv_CallNonvirtualBooleanMethod_1
JNIEnv_CallNonvirtualBooleanMethod_2
JNIEnv_CallNonvirtualBooleanMethod_3
JNIEnv_CallNonvirtualBooleanMethod_4
JNIEnv_CallNonvirtualByteMethod_1
JNIEnv_CallNonvirtualByteMethod_2
JNIEnv_CallNonvirtualByteMethod_3
JNIEnv_CallNonvirtualByteMethod_4
JNIEnv_CallNonvirtualCharMethod_1
JNIEnv_CallNonvirtualCharMethod_2
JNIEnv_CallNonvirtualCharMethod_3
JNIEnv_CallNonvirtualCharMethod_4
JNIEnv_CallNonvirtualDoubleMethod_1
JNIEnv_CallNonvirtualDoubleMethod_2
JNIEnv_CallNonvirtualDoubleMethod_3
JNIEnv_CallNonvirtualDoubleMethod_4
JNIEnv_CallNonvirtualFloatMethod_1
JNIEnv_CallNonvirtualFloatMethod_2
JNIEnv_CallNonvirtualFloatMethod_3
JNIEnv_CallNonvirtualFloatMethod_4
JNIEnv_CallNonvirtualIntMethod_10
JNIEnv_CallNonvirtualIntMethod_11
JNIEnv_CallNonvirtualIntMethod_12
JNIEnv_CallNonvirtualIntMethod_13
JNIEnv_CallNonvirtualIntMethod_14
JNIEnv_CallNonvirtualIntMethod_15
JNIEnv_CallNonvirtualIntMethod_16
JNIEnv_CallNonvirtualIntMethod_18
JNIEnv_CallNonvirtualIntMethod_19
JNIEnv_CallNonvirtualIntMethod_1
JNIEnv_CallNonvirtualIntMethod_21
JNIEnv_CallNonvirtualIntMethod_22
JNIEnv_CallNonvirtualIntMethod_23
JNIEnv_CallNonvirtualIntMethod_24
JNIEnv_CallNonvirtualIntMethod_25
JNIEnv_CallNonvirtualIntMethod_26
JNIEnv_CallNonvirtualIntMethod_27
JNIEnv_CallNonvirtualIntMethod_28
JNIEnv_CallNonvirtualIntMethod_29
JNIEnv_CallNonvirtualIntMethod_2
JNIEnv_CallNonvirtualIntMethod_30
JNIEnv_CallNonvirtualIntMethod_31
JNIEnv_CallNonvirtualIntMethod_32
JNIEnv_CallNonvirtualIntMethod_33
JNIEnv_CallNonvirtualIntMethod_34
JNIEnv_CallNonvirtualIntMethod_4
JNIEnv_CallNonvirtualIntMethod_5
JNIEnv_CallNonvirtualIntMethod_7
JNIEnv_CallNonvirtualIntMethod_8
JNIEnv_CallNonvirtualIntMethod_9
JNIEnv_CallNonvirtualLongMethod_1
JNIEnv_CallNonvirtualLongMethod_2
JNIEnv_CallNonvirtualLongMethod_3
JNIEnv_CallNonvirtualLongMethod_4
JNIEnv_CallNonvirtualObjectMethod_1
JNIEnv_CallNonvirtualObjectMethod_2
JNIEnv_CallNonvirtualObjectMethod_3
JNIEnv_CallNonvirtualObjectMethod_4
JNIEnv_CallNonvirtualObjectMethod_5
JNIEnv_CallNonvirtualObjectMethod_6
JNIEnv_CallNonvirtualObjectMethod_7
JNIEnv_CallNonvirtualShortMethod_1
JNIEnv_CallNonvirtualShortMethod_2
JNIEnv_CallNonvirtualShortMethod_3
JNIEnv_CallNonvirtualShortMethod_4
JNIEnv_CallNonvirtualVoidMethod_1
JNIEnv_CallNonvirtualVoidMethod_2
JNIEnv_CallObjectMethod_1
JNIEnv_CallObjectMethod_2
JNIEnv_CallObjectMethod_3
JNIEnv_CallObjectMethod_4
JNIEnv_CallObjectMethod_5
JNIEnv_CallObjectMethod_6
JNIEnv_CallObjectMethod_7
JNIEnv_CallShortMethod_1
JNIEnv_CallShortMethod_2
JNIEnv_CallShortMethod_3
JNIEnv_CallShortMethod_4
JNIEnv_CallStaticBooleanMethod_1
JNIEnv_CallStaticBooleanMethod_2
JNIEnv_CallStaticBooleanMethod_3
JNIEnv_CallStaticBooleanMethod_4
JNIEnv_CallStaticByteMethod_1
JNIEnv_CallStaticByteMethod_2
JNIEnv_CallStaticByteMethod_3
JNIEnv_CallStaticByteMethod_4
JNIEnv_CallStaticCharMethod_1
JNIEnv_CallStaticCharMethod_2
JNIEnv_CallStaticCharMethod_3
JNIEnv_CallStaticCharMethod_4
JNIEnv_CallStaticDoubleMethod_1
JNIEnv_CallStaticDoubleMethod_2
JNIEnv_CallStaticDoubleMethod_3
JNIEnv_CallStaticDoubleMethod_4
JNIEnv_CallStaticFloatMethod_1
JNIEnv_CallStaticFloatMethod_2
JNIEnv_CallStaticFloatMethod_3
JNIEnv_CallStaticFloatMethod_4
JNIEnv_CallStaticIntMethod_10
JNIEnv_CallStaticIntMethod_11
JNIEnv_CallStaticIntMethod_12
JNIEnv_CallStaticIntMethod_13
JNIEnv_CallStaticIntMethod_14
JNIEnv_CallStaticIntMethod_15
JNIEnv_CallStaticIntMethod_16
JNIEnv_CallStaticIntMethod_18
JNIEnv_CallStaticIntMethod_19
JNIEnv_CallStaticIntMethod_1
JNIEnv_CallStaticIntMethod_20
JNIEnv_CallStaticIntMethod_21
JNIEnv_CallStaticIntMethod_2
JNIEnv_CallStaticIntMethod_4
JNIEnv_CallStaticIntMethod_5
JNIEnv_CallStaticIntMethod_7
JNIEnv_CallStaticIntMethod_8
JNIEnv_CallStaticIntMethod_9
JNIEnv_CallStaticLongMethod_1
JNIEnv_CallStaticLongMethod_2
JNIEnv_CallStaticLongMethod_3
JNIEnv_CallStaticLongMethod_4
JNIEnv_CallStaticObjectMethod_1
JNIEnv_CallStaticObjectMethod_2
JNIEnv_CallStaticObjectMethod_3
JNIEnv_CallStaticObjectMethod_4
JNIEnv_CallStaticObjectMethod_5
JNIEnv_CallStaticObjectMethod_6
JNIEnv_CallStaticObjectMethod_7
JNIEnv_CallStaticShortMethod_1
JNIEnv_CallStaticShortMethod_2
JNIEnv_CallStaticShortMethod_3
JNIEnv_CallStaticShortMethod_4
JNIEnv_CallStaticVoidMethod_1
JNIEnv_CallStaticVoidMethod_2
JNIEnv_CallVoidMethod_1
JNIEnv_CallVoidMethod_2
JNIEnv_DeleteGlobalRef_1
JNIEnv_DeleteGlobalRef_2
JNIEnv_DeleteLocalRef_1
JNIEnv_DeleteLocalRef_2
JNIEnv_ExceptionClear_1
JNIEnv_ExceptionClear_2
JNIEnv_ExceptionDescribe_1
JNIEnv_ExceptionDescribe_2
JNIEnv_FindClass_2
JNIEnv_FindClass_3
JNIEnv_FindClass_4
JNIEnv_FindClass_5
JNIEnv_FindClass_6
JNIEnv_FindClass_7
JNIEnv_FindClass_8
JNIEnv_GetArrayLength_1
JNIEnv_GetArrayLength_3
JNIEnv_GetBooleanArrayElements_2
JNIEnv_GetBooleanArrayElements_3
JNIEnv_GetBooleanArrayRegion_1
JNIEnv_GetBooleanField_1
JNIEnv_GetBooleanField_5
JNIEnv_GetBooleanField_6
JNIEnv_GetByteArrayElements_2
JNIEnv_GetByteArrayElements_3
JNIEnv_GetByteArrayRegion_1
JNIEnv_GetByteField_1
JNIEnv_GetByteField_5
JNIEnv_GetByteField_6
JNIEnv_GetCharArrayElements_2
JNIEnv_GetCharArrayElements_3
JNIEnv_GetCharArrayRegion_1
JNIEnv_GetCharField_1
JNIEnv_GetCharField_5
JNIEnv_GetDoubleArrayElements_2
JNIEnv_GetDoubleArrayElements_3
JNIEnv_GetDoubleArrayRegion_1
JNIEnv_GetDoubleField_1
JNIEnv_GetDoubleField_5
JNIEnv_GetDoubleField_6
JNIEnv_GetFieldID_10
JNIEnv_GetFieldID_11
JNIEnv_GetFieldID_12
JNIEnv_GetFieldID_13
JNIEnv_GetFieldID_15
JNIEnv_GetFieldID_16
JNIEnv_GetFieldID_17
JNIEnv_GetFieldID_18
JNIEnv_GetFieldID_19
JNIEnv_GetFieldID_20
JNIEnv_GetFieldID_3
JNIEnv_GetFieldID_4
JNIEnv_GetFieldID_6
JNIEnv_GetFieldID_7
JNIEnv_GetFieldID_8
JNIEnv_GetFieldID_9
JNIEnv_GetFloatArrayElements_2
JNIEnv_GetFloatArrayElements_3
JNIEnv_GetFloatArrayRegion_1
JNIEnv_GetFloatField_1
JNIEnv_GetFloatField_5
JNIEnv_GetFloatField_6
JNIEnv_GetIntArrayElements_2
JNIEnv_GetIntArrayElements_3
JNIEnv_GetIntArrayRegion_1
JNIEnv_GetIntArrayRegion_2
JNIEnv_GetIntArrayRegion_4
JNIEnv_GetIntField_1
JNIEnv_GetIntField_5
JNIEnv_GetIntField_6
JNIEnv_GetIntField_7
JNIEnv_GetJavaVM_2
JNIEnv_GetLongArrayElements_2
JNIEnv_GetLongArrayElements_3
JNIEnv_GetLongArrayRegion_1
JNIEnv_GetLongField_1
JNIEnv_GetLongField_5
JNIEnv_GetLongField_6
JNIEnv_GetMethodID_10
JNIEnv_GetMethodID_11
JNIEnv_GetMethodID_12
JNIEnv_GetMethodID_13
JNIEnv_GetMethodID_15
JNIEnv_GetMethodID_16
JNIEnv_GetMethodID_17
JNIEnv_GetMethodID_18
JNIEnv_GetMethodID_19
JNIEnv_GetMethodID_20
JNIEnv_GetMethodID_21
JNIEnv_GetMethodID_22
JNIEnv_GetMethodID_23
JNIEnv_GetMethodID_24
JNIEnv_GetMethodID_25
JNIEnv_GetMethodID_26
JNIEnv_GetMethodID_27
JNIEnv_GetMethodID_28
JNIEnv_GetMethodID_29
JNIEnv_GetMethodID_30
JNIEnv_GetMethodID_31
JNIEnv_GetMethodID_32
JNIEnv_GetMethodID_33
JNIEnv_GetMethodID_34
JNIEnv_GetMethodID_35
JNIEnv_GetMethodID_36
JNIEnv_GetMethodID_37
JNIEnv_GetMethodID_38
JNIEnv_GetMethodID_39
JNIEnv_GetMethodID_5
JNIEnv_GetMethodID_6
JNIEnv_GetMethodID_7
JNIEnv_GetMethodID_8
JNIEnv_GetMethodID_9
JNIEnv_GetObjectArrayElement_1
JNIEnv_GetObjectArrayElement_2
JNIEnv_GetObjectArrayElement_4
JNIEnv_GetObjectArrayElement_5
JNIEnv_GetObjectClass_1
JNIEnv_GetObjectField_1
JNIEnv_GetShortArrayElements_2
JNIEnv_GetShortArrayElements_3
JNIEnv_GetShortArrayRegion_1
JNIEnv_GetShortField_1
JNIEnv_GetShortField_5
JNIEnv_GetShortField_6
JNIEnv_GetStaticBooleanField_1
JNIEnv_GetStaticBooleanField_5
JNIEnv_GetStaticBooleanField_6
JNIEnv_GetStaticByteField_1
JNIEnv_GetStaticByteField_5
JNIEnv_GetStaticByteField_6
JNIEnv_GetStaticCharField_1
JNIEnv_GetStaticCharField_5
JNIEnv_GetStaticDoubleField_1
JNIEnv_GetStaticDoubleField_5
JNIEnv_GetStaticFieldID_10
JNIEnv_GetStaticFieldID_11
JNIEnv_GetStaticFieldID_12
JNIEnv_GetStaticFieldID_13
JNIEnv_GetStaticFieldID_14
JNIEnv_GetStaticFieldID_15
JNIEnv_GetStaticFieldID_16
JNIEnv_GetStaticFieldID_17
JNIEnv_GetStaticFieldID_18
JNIEnv_GetStaticFieldID_19
JNIEnv_GetStaticFieldID_20
JNIEnv_GetStaticFieldID_4
JNIEnv_GetStaticFieldID_5
JNIEnv_GetStaticFieldID_6
JNIEnv_GetStaticFieldID_7
JNIEnv_GetStaticFieldID_8
JNIEnv_GetStaticFieldID_9
JNIEnv_GetStaticFloatField_1
JNIEnv_GetStaticFloatField_5
JNIEnv_GetStaticFloatField_6
JNIEnv_GetStaticIntField_1
JNIEnv_GetStaticIntField_5
JNIEnv_GetStaticIntField_6
JNIEnv_GetStaticLongField_1
JNIEnv_GetStaticLongField_5
JNIEnv_GetStaticLongField_6
JNIEnv_GetStaticMethodID_10
JNIEnv_GetStaticMethodID_11
JNIEnv_GetStaticMethodID_12
JNIEnv_GetStaticMethodID_13
JNIEnv_GetStaticMethodID_14
JNIEnv_GetStaticMethodID_16
JNIEnv_GetStaticMethodID_17
JNIEnv_GetStaticMethodID_18
JNIEnv_GetStaticMethodID_19
JNIEnv_GetStaticMethodID_20
JNIEnv_GetStaticMethodID_21
JNIEnv_GetStaticMethodID_6
JNIEnv_GetStaticMethodID_7
JNIEnv_GetStaticMethodID_8
JNIEnv_GetStaticMethodID_9
JNIEnv_GetStaticObjectField_1
JNIEnv_GetStaticObjectField_5
JNIEnv_GetStaticShortField_1
JNIEnv_GetStaticShortField_5
JNIEnv_GetStaticShortField_6
JNIEnv_GetStringChars_4
JNIEnv_GetStringLength_2
JNIEnv_GetStringLength_3
JNIEnv_GetStringUTFChars_1
JNIEnv_GetStringUTFChars_3
JNIEnv_GetStringUTFChars_4
JNIEnv_GetStringUTFLength_1
JNIEnv_GetStringUTFLength_2
JNIEnv_GetSuperclass_2
JNIEnv_GetSuperclass_3
JNIEnv_GetSuperclass_4
JNIEnv_GetVersion_1
JNIEnv_IsAssignableFrom_1
JNIEnv_IsAssignableFrom_3
JNIEnv_IsAssignableFrom_4
JNIEnv_IsAssignableFrom_5
JNIEnv_IsInstanceOf_1
JNIEnv_IsInstanceOf_2
JNIEnv_IsInstanceOf_3
JNIEnv_IsInstanceOf_4
JNIEnv_IsInstanceOf_5
JNIEnv_IsSameObject_1
JNIEnv_IsSameObject_2
JNIEnv_IsSameObject_3
JNIEnv_IsSameObject_4
JNIEnv_NewBooleanArray_1
JNIEnv_NewBooleanArray_2
JNIEnv_NewBooleanArray_3
JNIEnv_NewByteArray_1
JNIEnv_NewByteArray_2
JNIEnv_NewByteArray_3
JNIEnv_NewCharArray_1
JNIEnv_NewCharArray_2
JNIEnv_NewCharArray_3
JNIEnv_NewDoubleArray_1
JNIEnv_NewDoubleArray_2
JNIEnv_NewDoubleArray_3
JNIEnv_NewFloatArray_1
JNIEnv_NewFloatArray_2
JNIEnv_NewFloatArray_3
JNIEnv_NewGlobalRef_1
JNIEnv_NewGlobalRef_2
JNIEnv_NewIntArray_1
JNIEnv_NewIntArray_2
JNIEnv_NewIntArray_3
JNIEnv_NewLongArray_1
JNIEnv_NewLongArray_2
JNIEnv_NewLongArray_3
JNIEnv_NewObjectA_1
JNIEnv_NewObjectA_3
JNIEnv_NewObjectA_4
JNIEnv_NewObjectA_9
JNIEnv_NewObjectArray_1
JNIEnv_NewObjectArray_3
JNIEnv_NewObjectArray_4
JNIEnv_NewObjectArray_5
JNIEnv_NewObject_1
JNIEnv_NewObject_3
JNIEnv_NewObject_4
JNIEnv_NewObject_9
JNIEnv_NewShortArray_1
JNIEnv_NewShortArray_2
JNIEnv_NewShortArray_3
JNIEnv_NewStringUTF_1
JNIEnv_NewStringUTF_2
JNIEnv_NewStringUTF_3
JNIEnv_NewString_2
JNIEnv_NewString_3
JNIEnv_ReleaseBooleanArrayElements_1
JNIEnv_ReleaseBooleanArrayElements_2
JNIEnv_ReleaseBooleanArrayElements_3
JNIEnv_ReleaseByteArrayElements_1
JNIEnv_ReleaseByteArrayElements_2
JNIEnv_ReleaseByteArrayElements_3
JNIEnv_ReleaseCharArrayElements_1
JNIEnv_ReleaseCharArrayElements_2
JNIEnv_ReleaseCharArrayElements_3
JNIEnv_ReleaseDoubleArrayElements_1
JNIEnv_ReleaseDoubleArrayElements_2
JNIEnv_ReleaseDoubleArrayElements_3
JNIEnv_ReleaseFloatArrayElements_1
JNIEnv_ReleaseFloatArrayElements_2
JNIEnv_ReleaseFloatArrayElements_3
JNIEnv_ReleaseIntArrayElements_1
JNIEnv_ReleaseIntArrayElements_2
JNIEnv_ReleaseIntArrayElements_3
JNIEnv_ReleaseLongArrayElements_1
JNIEnv_ReleaseLongArrayElements_2
JNIEnv_ReleaseLongArrayElements_3
JNIEnv_ReleaseShortArrayElements_1
JNIEnv_ReleaseShortArrayElements_2
JNIEnv_ReleaseShortArrayElements_3
JNIEnv_ReleaseStringChars_2
JNIEnv_ReleaseStringUTFChars_1
JNIEnv_ReleaseStringUTFChars_2
JNIEnv_SetBooleanArrayRegion_1
JNIEnv_SetBooleanField_1
JNIEnv_SetBooleanField_5
JNIEnv_SetBooleanField_6
JNIEnv_SetBooleanField_7
JNIEnv_SetByteArrayRegion_1
JNIEnv_SetByteField_1
JNIEnv_SetByteField_5
JNIEnv_SetByteField_6
JNIEnv_SetCharArrayRegion_1
JNIEnv_SetCharField_1
JNIEnv_SetCharField_5
JNIEnv_SetCharField_6
JNIEnv_SetDoubleArrayRegion_1
JNIEnv_SetDoubleField_1
JNIEnv_SetDoubleField_5
JNIEnv_SetDoubleField_6
JNIEnv_SetFloatArrayRegion_1
JNIEnv_SetFloatField_1
JNIEnv_SetFloatField_5
JNIEnv_SetIntArrayRegion_1
JNIEnv_SetIntArrayRegion_2
JNIEnv_SetIntArrayRegion_4
JNIEnv_SetIntField_1
JNIEnv_SetIntField_5
JNIEnv_SetLongArrayRegion_1
JNIEnv_SetLongField_1
JNIEnv_SetLongField_5
JNIEnv_SetObjectArrayElement_1
JNIEnv_SetObjectArrayElement_2
JNIEnv_SetObjectArrayElement_3
JNIEnv_SetObjectArrayElement_4
JNIEnv_SetObjectArrayElement_5
JNIEnv_SetObjectField_5
JNIEnv_SetShortArrayRegion_1
JNIEnv_SetShortField_1
JNIEnv_SetShortField_5
JNIEnv_SetStaticBooleanField_1
JNIEnv_SetStaticBooleanField_5
JNIEnv_SetStaticBooleanField_6
JNIEnv_SetStaticByteField_1
JNIEnv_SetStaticByteField_5
JNIEnv_SetStaticByteField_6
JNIEnv_SetStaticCharField_1
JNIEnv_SetStaticCharField_5
JNIEnv_SetStaticCharField_6
JNIEnv_SetStaticDoubleField_1
JNIEnv_SetStaticDoubleField_5
JNIEnv_SetStaticDoubleField_6
JNIEnv_SetStaticFloatField_1
JNIEnv_SetStaticFloatField_5
JNIEnv_SetStaticIntField_1
JNIEnv_SetStaticIntField_5
JNIEnv_SetStaticLongField_1
JNIEnv_SetStaticLongField_5
JNIEnv_SetStaticObjectField_1
JNIEnv_SetStaticObjectField_5
JNIEnv_SetStaticShortField_1
JNIEnv_SetStaticShortField_5
JNIEnv_ThrowNew_1
JNIEnv_ThrowNew_2
JNIEnv_ThrowNew_3
JNIEnv_ThrowNew_4
#
####################### JVM Manager tests #######################
#
JVMManager_CreateProxyJNI_1
JVMManager_CreateProxyJNI_4
JVMManager_GetProxyJNI_2
JVMManager_GetProxyJNI_3
JVMManager_ShowJavaConsole_1
JVMManager_ShowJavaConsole_2
#
####################### Live Connect Manager tests ##############
#
LCM_IsLiveConnectEnabled_2
LCM_WrapJavaObject_1
#
####################### Thread Manager tests ####################
#
ThreadManager_CreateThread_4
ThreadManager_EnterMonitor_4
ThreadManager_ExitMonitor_1
ThreadManager_ExitMonitor_3
ThreadManager_ExitMonitor_4
ThreadManager_GetCurrentThread_1
ThreadManager_NotifyAll_3
ThreadManager_NotifyAll_4
ThreadManager_Notify_1
ThreadManager_Notify_3
ThreadManager_Notify_4
ThreadManager_PostEvent_2
ThreadManager_PostEvent_3
ThreadManager_PostEvent_5
ThreadManager_PostEvent_6
ThreadManager_PostEvent_7
ThreadManager_Sleep_1
ThreadManager_Sleep_2
ThreadManager_Wait_1
ThreadManager_Wait_2
ThreadManager_Wait_3
ThreadManager_Wait_4

Просмотреть файл

@ -1,740 +0,0 @@
#!/usr/bin/perl
#
# ***** 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
# Sun Microsystems, Inc.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# 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 *****
# Created By: Raju Pallath
# Creation Date: Aug 2nd 1999
#
# Ported by: Konstantin S. Ermakov
# Ported date: Aug 24th 1999
#
# This script is used to invoke all test case for OJI API
# through apprunner and to recored their results
#
#
# Attach Perl Libraries
###################################################################
use POSIX ":sys_wait_h"; #used by waitpid
use Cwd;
use File::Copy;
#use Win32::Process;
#use IO::Handle;
###################################################################
########################
# #
# User's settings #
# #
########################
#Mozilla's executable
$MOZILLA_EXECUTABLE="mozilla-bin";
if ($^O =~ /Win32/i) {
$MOZILLA_EXECUTABLE="mozilla.exe";
}
#sometimes we need to specify additional parameters for mozilla
$ADDITIONAL_PARAMETERS="-P default";
# time in seconds after which the apprunner has to be killed.
# by default the apprunner will be up for so much time regardless of
# whether over or not. User can either decrease it or increase it.
#
$DELAY_FACTOR = 50;
$FULL_TEST_LIST="OJITestsList.lst";
$TEST_RESULTS="OJITestResults.txt";
$TEST_DESCRIPTIONS="../OJIAPITestsDescr.html";
$TARGET_WINDOW="Test Descriptions";
$curdir = cwd();
$DEFAULT_TEST_URL="file:///$curdir";
# time period in seconds of periodically checking: is the apprunner still alive
$DELAY_OF_CYCLE = 1;
##############################################################
##############################################################
##############################################################
$DOCROOT = $ENV{"TEST_URL"} ? $ENV{"TEST_URL"} : $DEFAULT_TEST_URL;
# delimiter for logfile
$delimiter="###################################################\n";
$nosort=0;
##################################################################
# Usage
##################################################################
sub usage() {
print "\n";
print "##################################################################\n";
print " perl autorun.pl [ -help ] [ -genhtml [ ALL/PASS/FAILED/<test_type> ] ] [ -compare [ <output_file> <file1> <file2> ] ] [ -t <test_case> ]\n";
print "\n";
print " -help This message.\n\n";
print " -compare <output_file> <file1> <file2> \n";
print " Compares two test result files and generates the diff files\n";
print " <output_file> the resulting diff files in text (.txt)\n";
print " and HTML (.html) formats\n";
print " <file1(2)> files to be compared (optional parameters)\n";
print " should contain test results in text format\n";
print " (generated by autorun.pl as BWTest.txt);\n";
print " if ommited the default values are used: \n";
print " <file1> => log/BWTest.txt \n";
print " <file2> => log/BWTest.txt.bak \n\n";
print " -genhtml <option> Generates report in HTML format (without tests execution).\n";
print " ALL Generates report for all executed tests. \n";
print " PASS Generates report for passed tests\n";
print " FAILED Generates report for failed tests\n";
print " <test_type> Generates report for the specific <test_type>\n";
print " <test_type> = JNIEnv/LCM/ThreadManager/JVMManager\n";
print " If specified all other parameters are ignored\n\n";
print " -t <test case> Executes the specified <test_case>.\n";
print " test_case example: JVMManager_CreateProxyJNI_1\n";
print "\n";
print "##################################################################\n";
print "\n";
}
##################################################################
# Title display
##################################################################
sub title() {
print "\n";
print "################################################\n";
print " Automated Execution of OJI API TestSuite\n";
print "################################################\n";
print "\n\n";
}
##################################################################
#
# check which tests to run. XML/HTML or both
#
##################################################################
sub checkRun() {
$runtype = "0";
while( true ) {
print "Run 1) HTML Test suite.\n";
print " 2) XML Test suite.\n";
print " 3) BOTH HTML and XML.\n";
print "Enter choice (1-3) :\n";
$runtype = getc;
if(( $runtype ne "1" ) &&
( $runtype ne "2" ) &&
( $runtype ne "3" ) )
{
print "Invaid choice. Range is from 1-3...\n";
print "\n";
next;
} else {
last;
}
}
}
#########################################################################
#
# Append table entries to Output HTML File
#
#########################################################################
sub appendEntries() {
print LOGHTML "<tr><td></td><td></td></tr><td></td>\n";
print LOGHTML "<tr><td></td><td></td></tr><td></td>\n";
print LOGHTML "<tr bgcolor=\"#FF6666\"><td>Test Status (XML)</td><td>Result</td><td>Comment</td></tr>\n";
}
#########################################################################
#
# Construct Output HTML file Header
#
#########################################################################
sub constructHTMLHeader() {
print LOGHTML "<html><head><title>\n";
print LOGHTML "OJI API Test Status\n";
print LOGHTML "</title></head><body bgcolor=\"white\">\n";
print LOGHTML "<center><h1>\n";
print LOGHTML "OJI API Automated TestRun Results\n";
$date = localtime;
print LOGHTML "</h1><h2>", $date;
print LOGHTML "</h2></center>\n";
print LOGHTML "<hr noshade>";
print LOGHTML "<table bgcolor=\"lightgreen\" border=1 cellpadding=10>\n";
print LOGHTML "<tr bgcolor=\"lightblue\">\n";
print LOGHTML "<td>Test Case</td>\n";
print LOGHTML "<td>Result</td>\n";
print LOGHTML "<td>Comment</td></tr>\n";
}
#########################################################################
#
# Construct Output HTML file indicating status of each run
#
#########################################################################
sub constructHTMLBody() {
open( MYLOG, $LOGTXT ) || print("WARNING: can't open log file $LOGTXT: $!\n");
@all_lines = <MYLOG>;
close( MYLOG );
my $line;
my $f_cnt = 0;
my $p_cnt = 0;
foreach $line ( ($nosort) ? @all_lines : sort @all_lines ) {
# avoid linebreaks
chop $line;
if ($line eq "" || $line =~ /^\0*$/ || $line =~ /^\s*$/) {
next;
}
$comment = "---";
# assuming that all lines are kind'of 'aaa=bbb'
($class, $status) = split /\: /, $line;
if ($status =~ /(.*?) \((.*?)\)$/) {
$status = $1;
$comment = $2 ? $2 : "---";
}
if ($status =~ /FAIL/) {
$status = "<font color=\"red\">".$status;
$status = $status."<\/font>";
$f_cnt++;
} elsif ($status =~ /PASS/) {
$p_cnt++;
}
if ($genparam eq "ALL" || ($genparam ne "" && $line =~ /$genparam/)) {
print LOGHTML "<tr><td><a target=\"$TARGET_WINDOW\" href=\"$TEST_DESCRIPTIONS#$class\">",$class,"</a></td><td>",$status,"</td><td>",$comment,"</td></tr>\n";
}
}
if ($p_cnt+$f_cnt) {
$pp = sprintf "%.2f", $p_cnt/($p_cnt+$f_cnt)*100;
$pf = sprintf "%.2f", $f_cnt/($p_cnt+$f_cnt)*100;
}
print LOGHTML "<tr><td colspan=3>Total: $p_cnt($pp\%) tests passed and $f_cnt($pf\%) tests failed.</td></tr>\n";
}
#########################################################################
#
# Construct Output HTML file Footer
#
#########################################################################
sub constructHTMLFooter() {
print LOGHTML "</table></body></html>\n";
}
#########################################################################
#
# Construct Output HTML file indicating status of each run
#
#########################################################################
sub constructHTML() {
constructHTMLHeader();
constructHTMLBody();
constructHTMLFooter();
}
#########################################################################
#
# Construct LogFile Header. The Log file is always appended with entries
#
#########################################################################
sub constructLogHeader() {
print LOGFILE "\n";
print LOGFILE "\n";
print LOGFILE $delimiter;
$date = localtime;
print LOGFILE "Logging Test Run on $date ...\n";
print LOGFILE $delimiter;
print LOGFILE "\n";
print "All Log Entries are maintained in LogFile $LOGFILE\n";
print "\n";
}
#########################################################################
#
# Construct LogFile Footer.
#
#########################################################################
sub constructLogFooter() {
print "\n";
print LOGFILE $delimiter;
$date = localtime;
print LOGFILE "End of Logging Test $date ...\n";
print LOGFILE $delimiter;
print "\n";
}
########################################################################
#
# Construct Log String
#
########################################################################
sub constructLogString {
my $logstring = shift(@_);
print LOGFILE "$logstring\n";
print "$logstring\n";
}
########################################################################
#
# Safely append to file : open, append, close.
#
########################################################################
sub safeAppend {
my $file = shift(@_);
my $line = shift(@_);
open (FILE, ">>$file") or die ("Cann't open $file");
print FILE $line;
close FILE;
}
#######################################################################
#
# Running Test case under Win32
#
#######################################################################
sub RunTestCaseWin {
# win32 specific values
# STILL_ALIVE is a constant defined in winbase.h and indicates what
# process still alive
$STILL_ALIVE = 0x103;
do 'Win32/Process.pm';
open(SAVEOUT, ">&STDOUT" );
open(SAVEERR, ">&STDERR" );
open(STDOUT, ">$testlog" ) || die "Can't redirect stdout";
open(STDERR, ">&STDOUT" ) || die "Can't dup STDOUT";
select STDERR; $|=1; select STDOUT; $|=1;
Win32::Process::Create($ProcessObj,
"$mozhome/$MOZILLA_EXECUTABLE",
"$mozhome/$MOZILLA_EXECUTABLE $ADDITIONAL_PARAMETERS $DOCFILE",
1,
NORMAL_PRIORITY_CLASS,
"$mozhome" ) || die "cann't start apprunner";
close(STDOUT);
close(STDERR);
open(STDOUT, ">&SAVEOUT");
open(STDERR, ">&SAVEERR");
$crashed = 0;
$cnt = 0;
while (true) {
sleep($DELAY_OF_CYCLE);
system("$curdir\\killer.exe");
$ProcessObj->GetExitCode($exit_code);
if ($exit_code != $STILL_ALIVE ) {
$crashed = 1;
$logstr = "Test FAILED...";
constructLogString "$logstr";
$logstr = "Mozilla terminated with exit code $exit_code.";
constructLogString "$logstr";
$logstr = "Check ErrorLog File $testlog ";
constructLogString "$logstr";
constructLogString "========================================\n";
safeAppend $LOGTXT, "$testcase: FAILED (Mozilla crashed with exitcode $exit_code)\n";
last;
}
$cnt += $DELAY_OF_CYCLE;
if ( $cnt >= $DELAY_FACTOR ) {
$ProcessObj->Kill(0);
last;
}
} # while with sleep
$crashed;
}
#######################################################################
#
# Running Test case under Unix
#
#######################################################################
sub RunTestCaseUnix {
$exit_code = 0;
$pid = 0;
open(SAVEOUT, ">&STDOUT" );
open(SAVEERR, ">&STDERR" );
open(STDOUT, ">$testlog" ) || die "Can't redirect stdout";
open(STDERR, ">&STDOUT" ) || die "Can't dup STDOUT";
select STDERR; $|=1; select STDOUT; $|=1;
if (!($pid = fork())) {
#this is a child process - we should start mozilla in it
# the second exec to overide any shell parsing
# If argument list had any metacharacter (like ~) then it is pass
# to /bin/sh -c as a separate process. To avoid that we have the
# second exec.
exec(" exec $mozhome/$MOZILLA_EXECUTABLE $ADDITIONAL_PARAMETERS $DOCFILE");
close(STDOUT);
close(STDERR);
open(STDOUT, ">&SAVEOUT");
open(STDERR, ">&SAVEERR");
die "ERROR: Can't start mozilla: $!\n";
}
#this is a parent process - we should control mozilla execution from it
close(STDOUT);
close(STDERR);
open(STDOUT, ">&SAVEOUT");
open(STDERR, ">&SAVEERR");
$cnt = 0;
$crashed = 0;
print("Mozilla's pid: $pid\n");
while (true) {
sleep($DELAY_OF_CYCLE);
#print "Try call waitpid ...\n";
if (waitpid($pid,&WNOHANG)) {
$crashed = 1;
$logstr = "Test FAILED...";
constructLogString "$logstr";
$logstr = "Mozilla terminated by signal ".($? & 127)." with exitcode ".($? >> 8);
constructLogString "$logstr";
$logstr = "Check ErrorLog File $testlog ";
constructLogString "$logstr";
constructLogString "========================================\n";
safeAppend $LOGTXT, "$testcase: FAILED (Mozilla terminated by signal ".($? & 127)." with exitcode ".($? >> 8).")\n";
last;
}
$cnt += $DELAY_OF_CYCLE;
if ( $cnt >= $DELAY_FACTOR ) {
kill(9, $pid);
#now we should take exitcode to avoid zombie appearance
sleep(1);
waitpid($pid,&WNOHANG);
last;
}
} # while with sleep
$crashed;
}
sub compareResults {
$out_fn = shift;
$fn1 = shift;
$fn2 = shift;
if (!defined($out_fn)) {
$out_fn = "$curdir/log/diff";
}
if (!defined($fn2)) {
$fn2 = "$curdir/log/BWTest.txt.bak";
}
if (!defined($fn1)) {
$fn1 = "$curdir/log/BWTest.txt";
}
(-f $fn1 && open(IN1, "<$fn1")) || die "Can't open file $fn1: $!\n";
(-f $fn2 && open(IN2, "<$fn2")) || die "Can't open file $fn2: $!\n";
open(OUT_TXT, ">$out_fn".".txt") || die "Can't open output file $out_fn.txt: $!\n";
$genparam = "ALL";
$nosort = 1;
my %res1;
my %line1;
my %res2;
my $ln = 0;
my $j=0;
while($line = <IN1>) {
$ln ++;
chop $line;
if ($line =~ /(.*): (.*)/) {
$res1{$1} = $2;
$line1{$1} = $line;
} else {
die "File format error in file $fn1, line $ln: $line\n";
}
}
$ln = 0;
while($line = <IN2>) {
$ln ++;
chop $line;
if ($line =~ /(.*): (.*)/) {
if (defined($res1{$1})) {
if ($res1{$1} ne $2) {
print OUT_TXT $line1{$1}."\n";
print OUT_TXT $line."\n";
}
delete $res1{$1};
} else {
$new_in_2[$j++] = $line;
#file2 contain extra tests (that file1 doesn't contain)
#file1 can also contain extra tests (that file2 doen't contain)
#do we need to report about it ?
}
} else {
die "File format error in file $fn2, line $ln: $line\n";
}
}
#report about extra tests in file1
@remained_keys = keys %res1;
if ($#remained_keys >= 0) {
print OUT_TXT " : EXTRA (TESTS IN $fn1:)\n";
foreach $key (@remained_keys) {
print OUT_TXT "$line1{$key}\n";
}
}
#report about extra tests in file2
if ($j > 0) {
print OUT_TXT " : EXTRA (TESTS IN $fn2:)\n";
for($i=0; $i<$j; $i++) {
print OUT_TXT "$new_in_2[$i]\n";
}
}
if (<OUT_TXT>) {
close OUT_TXT;
$LOGTXT = "$out_fn".".txt";
open(LOGHTML, ">$out_fn.html") || die "Can't open output file $out_fn.html: $!\n";
constructHTML();
close LOGHTML;
} else {
close OUT_TXT;
print "Results are equivalent !\n";
}
close IN1;
close IN2;
}
##################################################################
# main
##################################################################
title;
$curdir = cwd();
# Prepare file names
$x=`mkdir -p $curdir/log`;
$LOGFILE = "$curdir/log/BWTestRun.log";
$LOGTXT = "$curdir/log/BWTest.txt";
$LOGHTML = "$curdir/log/BWTest.html";
# process command-line parameters
# and check for valid usage
$testparam = "";
$genparam = "";
if ($ARGV[0] =~ /help/ || $ARGV[0] =~ /\?/) {
usage();
exit(0);
}
if ($ARGV[0] =~ "-genhtml") {
$genparam = $ARGV[1];
if ($genparam eq "") {
$genparam = "ALL";
}
open( LOGHTML, ">$LOGHTML" ) or die("Can't open HTML file $LOGHTML ($!)...\n");
print("Generating result HTML page ...\n");
constructHTML();
exit(0);
}
if ($ARGV[0] eq "-compare") {
compareResults($ARGV[1], $ARGV[2], $ARGV[3]);
exit(0);
}
if ( $#ARGV >= 0 ) {
if ( $ARGV[0] != "-t" ) {
usage;
die;
} elsif ($ARGV[1] ne "") {
$testparam = $ARGV[1];
} else {
usage();
die;
}
}
## Default behaviour is to generate the HTML file
if ($genparam eq "") {
$genparam = "ALL";
}
$mozhome = $ENV{"MOZILLA_FIVE_HOME"};
if ( $mozhome eq "" ) {
print "MOZILLA_FIVE_HOME is not set. Please set it and rerun this script....\n";
die;
}
if ( ! -f "$mozhome/$MOZILLA_EXECUTABLE" ) {
print "Could not find $MOZILLA_EXECUTABLE in MOZILLA_FIVE_HOME.\n";
print "Please check your setting...\n";
die;
}
# Here must come a piece of code, that determinates
# apprunner instance, removes core, but there's no
# core under win32
# Backup existing .lst file
if ( ! -f "$curdir/$FULL_TEST_LIST" ) {
print "Can't find list of OJI API tests to be run.";
die;
}
$id=$$;
# check if output text file of previous run exists.
# if so, then save it as .bak
#
if ( -f "$LOGTXT" ) {
$newfile="$LOGTXT.bak";
rename $LOGTXT, $newfile;
}
# check if output html file of previous run exists.
# if so, then save it as .bak
#
if ( -f "$LOGHTML" ) {
$newfile="$LOGHTML.bak";
rename $LOGHTML, $newfile;
}
# construct DOCFILE
$DOCFILE = "$DOCROOT/test.html";
$runcnt = 1;
$filename = "$curdir/$FULL_TEST_LIST";
# Prepare log streams
open( LOGHTML, ">$LOGHTML" ) or die("Can't open HTML file...\n");
open( LOGFILE, ">>$LOGFILE" ) or die("Can't open LOG file...\n");
select LOGFILE; $| = 1; select STDOUT;
constructLogHeader();
$LST_OUT = "$mozhome/OJITests.lst";
$currcnt = 0;
while (true) {
open( file, $filename ) or die("Can't open $filename...\n");
while( $line = <file> ) {
chop $line;
if ( $testparam ne "" ) {
$testcase = $testparam;
} else {
$testcase = $line;
}
if ( $testcase eq "" || $testcase =~ /^\s*#/ ) {
next;
}
open(LST_OUT, ">$LST_OUT") or die ("Can't open LST_OUT file...\n");
print LST_OUT $testcase;
close(LST_OUT);
chdir( $mozhome );
#deleting old result ...
unlink("$mozhome/$TEST_RESULTS");
$logstr="Running TestCase $testcase....";
constructLogString "========================================";
constructLogString "$logstr";
($nom) = ($testcase =~ /([^\.]*)$/);
$testlog = "$curdir/log/$nom.$id.log";
if ($^O =~ /Win32/i) {
$crashed = RunTestCaseWin();
} else {
$crashed = RunTestCaseUnix();
}
if (!$crashed) {
if (!open (TEST_RES, "$mozhome/$TEST_RESULTS") || ($logstr = <TEST_RES>) =~ /^\s*$/) {
$logstr = "$testcase: FAILED (undefined result)";
}
close TEST_RES;
chomp $logstr;
constructLogString "$logstr";
constructLogString "========================================\n";
safeAppend "$LOGTXT", "$logstr\n";
}
( $testparam eq "" ) || last;
} # while ( $line
( ++$currcnt < $runcnt ) || last;
} # while(true)
constructLogFooter;
constructHTML();
if (-f "$curdir/log/BWTest.txt.bak") {
print("Old result file found => generating diff files: \nTXT:->$curdir/log/diff.txt \nHTML:->$curdir/log/diff.html");
compareResults();
}
chdir($curdir);

Двоичные данные
modules/oji/tests/script/killer.exe

Двоичный файл не отображается.

Просмотреть файл

@ -1,18 +0,0 @@
<html>
<head>
<script>
function startOJITests() {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// var OJITestLoader = Components.classes["component://netscape/oji/test/api/loader"].createInstance();
var OJITestLoader = Components.classes['@mozilla.org/oji/test/api/loader;1'].createInstance();
}
</script>
</head>
<body>
<h2 align="center">OJI API tests starting page. </h2>
Results of tests execution could be found on the console and
in the appropriate output files.
<script>
startOJITests();
</script>
</body>

Просмотреть файл

@ -1,49 +0,0 @@
#
# ***** 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
# Sun Microsystems, Inc.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# 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 *****
use POSIX ":sys_wait_h";
if (!($pid = fork())) {
system("sleep 10");
exit(0);
}
print "Child pid: $pid\n";
do {
sleep(1);
$ret = waitpid($pid, &WNOHANG);
print("WaitPid: $ret\n");
}while ($ret >= 0);

Просмотреть файл

@ -1,93 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#include "JVMManagerTests.h"
#include "CreateProxyJNI.h"
/*CreateProxyJNI*/
//1-st parameter is NULL
JM_OJIAPITest(JVMManager_CreateProxyJNI_1) {
GET_JM_FOR_TEST
JNIEnv *jniEnv;
nsresult rc = jvmMgr->CreateProxyJNI(nsnull, &jniEnv);
if (NS_SUCCEEDED(rc) && jniEnv)
return TestResult::PASS("First paramenter CAN be NULL.");
return TestResult::FAIL("CreateProxyJNI", rc);
}
//both parameters are NULL
JM_OJIAPITest(JVMManager_CreateProxyJNI_2) {
GET_JM_FOR_TEST
//JNIEnv **jniEnv = nsnull;
nsresult rc = jvmMgr->CreateProxyJNI(nsnull, nsnull);
if (NS_FAILED(rc))
return TestResult::PASS("Method should fail because no space is allocated for the result pointer.");
return TestResult::FAIL("CreateProxyJNI", rc);
}
//2-nd parameter is NULL
JM_OJIAPITest(JVMManager_CreateProxyJNI_3) {
GET_JM_FOR_TEST
//JNIEnv **jniEnv = nsnull;
nsISecureEnv *secureEnv = new nsDummySecureEnv();
nsresult rc = jvmMgr->CreateProxyJNI(secureEnv, nsnull);
if (NS_FAILED(rc))
return TestResult::PASS("Method should fail because no space is allocated for the result pointer.");
return TestResult::FAIL("CreateProxyJNI", rc);
}
//both parameters !=NULL
JM_OJIAPITest(JVMManager_CreateProxyJNI_4) {
GET_JM_FOR_TEST
JNIEnv *jniEnv;
nsISecureEnv *secureEnv = new nsDummySecureEnv();
nsresult rc = jvmMgr->CreateProxyJNI(secureEnv, &jniEnv);
if (NS_SUCCEEDED(rc) && jniEnv)
return TestResult::PASS("Method should work OK.");
return TestResult::FAIL("CreateProxyJNI", rc);
}

Просмотреть файл

@ -1,270 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#include <nsISecureEnv.h>
class nsDummySecureEnv : public nsISecureEnv {
public:
nsDummySecureEnv() {}
//nsISupports interface
NS_METHOD QueryInterface(const nsIID & uuid, void * *result) { return NS_OK; }
NS_METHOD_(nsrefcnt) AddRef(void) { return NS_OK; }
NS_METHOD_(nsrefcnt) Release(void) { return NS_OK; }
//nsISecureEnv interface
NS_METHOD NewObject(/*[in]*/ jclass clazz,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jobject* result,
/*[in]*/ nsISecurityContext* ctx = NULL) { return NS_OK; }
NS_METHOD CallMethod(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) { return NS_OK; }
NS_METHOD CallNonvirtualMethod(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jclass clazz,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) { return NS_OK; }
NS_METHOD GetField(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jfieldID fieldID,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) { return NS_OK; }
NS_METHOD SetField(/*[in]*/ jni_type type,
/*[in]*/ jobject obj,
/*[in]*/ jfieldID fieldID,
/*[in]*/ jvalue val,
/*[in]*/ nsISecurityContext* ctx = NULL) { return NS_OK; }
NS_METHOD CallStaticMethod(/*[in]*/ jni_type type,
/*[in]*/ jclass clazz,
/*[in]*/ jmethodID methodID,
/*[in]*/ jvalue *args,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) { return NS_OK; }
NS_METHOD GetStaticField(/*[in]*/ jni_type type,
/*[in]*/ jclass clazz,
/*[in]*/ jfieldID fieldID,
/*[out]*/ jvalue* result,
/*[in]*/ nsISecurityContext* ctx = NULL) { return NS_OK; }
NS_METHOD SetStaticField(/*[in]*/ jni_type type,
/*[in]*/ jclass clazz,
/*[in]*/ jfieldID fieldID,
/*[in]*/ jvalue val,
/*[in]*/ nsISecurityContext* ctx = NULL) { return NS_OK; }
NS_METHOD GetVersion(/*[out]*/ jint* version) { return NS_OK; }
NS_METHOD DefineClass(/*[in]*/ const char* name,
/*[in]*/ jobject loader,
/*[in]*/ const jbyte *buf,
/*[in]*/ jsize len,
/*[out]*/ jclass* clazz) { return NS_OK; }
NS_METHOD FindClass(/*[in]*/ const char* name,
/*[out]*/ jclass* clazz) { return NS_OK; }
NS_METHOD GetSuperclass(/*[in]*/ jclass sub,
/*[out]*/ jclass* super) { return NS_OK; }
NS_METHOD IsAssignableFrom(/*[in]*/ jclass sub,
/*[in]*/ jclass super,
/*[out]*/ jboolean* result) { return NS_OK; }
NS_METHOD Throw(/*[in]*/ jthrowable obj,
/*[out]*/ jint* result) { return NS_OK; }
NS_METHOD ThrowNew(/*[in]*/ jclass clazz,
/*[in]*/ const char *msg,
/*[out]*/ jint* result) { return NS_OK; }
NS_METHOD ExceptionOccurred(/*[out]*/ jthrowable* result) { return NS_OK; }
NS_METHOD ExceptionDescribe(void) { return NS_OK; }
NS_METHOD ExceptionClear(void) { return NS_OK; }
NS_METHOD FatalError(/*[in]*/ const char* msg) { return NS_OK; }
NS_METHOD NewGlobalRef(/*[in]*/ jobject lobj,
/*[out]*/ jobject* result) { return NS_OK; }
NS_METHOD DeleteGlobalRef(/*[in]*/ jobject gref) { return NS_OK; }
NS_METHOD DeleteLocalRef(/*[in]*/ jobject obj) { return NS_OK; }
NS_METHOD IsSameObject(/*[in]*/ jobject obj1,
/*[in]*/ jobject obj2,
/*[out]*/ jboolean* result) { return NS_OK; }
NS_METHOD AllocObject(/*[in]*/ jclass clazz,
/*[out]*/ jobject* result) { return NS_OK; }
NS_METHOD GetObjectClass(/*[in]*/ jobject obj,
/*[out]*/ jclass* result) { return NS_OK; }
NS_METHOD IsInstanceOf(/*[in]*/ jobject obj,
/*[in]*/ jclass clazz,
/*[out]*/ jboolean* result) { return NS_OK; }
NS_METHOD GetMethodID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jmethodID* id) { return NS_OK; }
NS_METHOD GetFieldID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jfieldID* id) { return NS_OK; }
NS_METHOD GetStaticMethodID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jmethodID* id) { return NS_OK; }
NS_METHOD GetStaticFieldID(/*[in]*/ jclass clazz,
/*[in]*/ const char* name,
/*[in]*/ const char* sig,
/*[out]*/ jfieldID* id) { return NS_OK; }
NS_METHOD NewString(/*[in]*/ const jchar* unicode,
/*[in]*/ jsize len,
/*[out]*/ jstring* result) { return NS_OK; }
NS_METHOD GetStringLength(/*[in]*/ jstring str,
/*[out]*/ jsize* result) { return NS_OK; }
NS_METHOD GetStringChars(/*[in]*/ jstring str,
/*[in]*/ jboolean *isCopy,
/*[out]*/ const jchar** result) { return NS_OK; }
NS_METHOD ReleaseStringChars(/*[in]*/ jstring str,
/*[in]*/ const jchar *chars) { return NS_OK; }
NS_METHOD NewStringUTF(/*[in]*/ const char *utf,
/*[out]*/ jstring* result) { return NS_OK; }
NS_METHOD GetStringUTFLength(/*[in]*/ jstring str,
/*[out]*/ jsize* result) { return NS_OK; }
NS_METHOD GetStringUTFChars(/*[in]*/ jstring str,
/*[in]*/ jboolean *isCopy,
/*[out]*/ const char** result) { return NS_OK; }
NS_METHOD ReleaseStringUTFChars(/*[in]*/ jstring str,
/*[in]*/ const char *chars) { return NS_OK; }
NS_METHOD GetArrayLength(/*[in]*/ jarray array,
/*[out]*/ jsize* result) { return NS_OK; }
NS_METHOD NewObjectArray(/*[in]*/ jsize len,
/*[in]*/ jclass clazz,
/*[in]*/ jobject init,
/*[out]*/ jobjectArray* result) { return NS_OK; }
NS_METHOD GetObjectArrayElement(/*[in]*/ jobjectArray array,
/*[in]*/ jsize index,
/*[out]*/ jobject* result) { return NS_OK; }
NS_METHOD SetObjectArrayElement(/*[in]*/ jobjectArray array,
/*[in]*/ jsize index,
/*[in]*/ jobject val) { return NS_OK; }
NS_METHOD NewArray(/*[in]*/ jni_type element_type,
/*[in]*/ jsize len,
/*[out]*/ jarray* result) { return NS_OK; }
NS_METHOD GetArrayElements(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ jboolean *isCopy,
/*[out]*/ void* result) { return NS_OK; }
NS_METHOD ReleaseArrayElements(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ void *elems,
/*[in]*/ jint mode) { return NS_OK; }
NS_METHOD GetArrayRegion(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ jsize start,
/*[in]*/ jsize len,
/*[out]*/ void* buf) { return NS_OK; }
NS_METHOD SetArrayRegion(/*[in]*/ jni_type type,
/*[in]*/ jarray array,
/*[in]*/ jsize start,
/*[in]*/ jsize len,
/*[in]*/ void* buf) { return NS_OK; }
NS_METHOD RegisterNatives(/*[in]*/ jclass clazz,
/*[in]*/ const JNINativeMethod *methods,
/*[in]*/ jint nMethods,
/*[out]*/ jint* result) { return NS_OK; }
NS_METHOD UnregisterNatives(/*[in]*/ jclass clazz,
/*[out]*/ jint* result) { return NS_OK; }
NS_METHOD MonitorEnter(/*[in]*/ jobject obj,
/*[out]*/ jint* result) { return NS_OK; }
NS_METHOD MonitorExit(/*[in]*/ jobject obj,
/*[out]*/ jint* result) { return NS_OK; }
NS_METHOD GetJavaVM(/*[in]*/ JavaVM **vm,
/*[out]*/ jint* result) { return NS_OK; }
};

Просмотреть файл

@ -1,76 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#include "JVMManagerTests.h"
/*GetProxyJNI*/
JM_OJIAPITest(JVMManager_GetProxyJNI_1) {
GET_JM_FOR_TEST
nsresult rc = jvmMgr->GetProxyJNI(nsnull);
if (NS_FAILED(rc))
return TestResult::PASS("Method should fail because no space is allocated for the result pointer.");
return TestResult::FAIL("GetProxyJNI", rc);
}
JM_OJIAPITest(JVMManager_GetProxyJNI_2) {
GET_JM_FOR_TEST
JNIEnv *jniEnv;
nsresult rc = jvmMgr->GetProxyJNI(&jniEnv);
if (NS_SUCCEEDED(rc))
return TestResult::PASS("Method should work OK though we didn't call CreateProxyJNI before.");
return TestResult::FAIL("GetProxyJNI", rc);
}
JM_OJIAPITest(JVMManager_GetProxyJNI_3) {
GET_JM_FOR_TEST
JNIEnv *jniEnv;
nsresult rc = jvmMgr->CreateProxyJNI(nsnull, &jniEnv);
if (NS_SUCCEEDED(rc)) {
rc = jvmMgr->GetProxyJNI(&jniEnv);
if (NS_SUCCEEDED(rc))
return TestResult::PASS("Before calling GetProxyJNI CreateProxyJNI method is called.");
return TestResult::FAIL("GetProxyJNI", rc);
}
return TestResult::FAIL("Can't create ProxyJNI.");
}

Просмотреть файл

@ -1,82 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#include "JVMManagerTests.h"
/*IsJavaEnabled*/
JM_OJIAPITest(JVMManager_IsJavaEnabled_1) {
GET_JM_FOR_TEST
nsresult rc = jvmMgr->IsJavaEnabled(nsnull);
if (NS_FAILED(rc))
return TestResult::PASS("Method should fail because no space is allocated for the result pointer.");
return TestResult::FAIL("GetProxyJNI", rc);
}
JM_OJIAPITest(JVMManager_IsJavaEnabled_2) {
GET_JM_FOR_TEST
PRBool b;
nsresult rc = jvmMgr->IsJavaEnabled(&b);
if (NS_SUCCEEDED(rc) && b == PR_TRUE) {
return TestResult::PASS("Should PASS if security.enable_java property is set to true or ommited.");
}
return TestResult::FAIL("IsJavaEnabled", rc);
}
JM_OJIAPITest(JVMManager_IsJavaEnabled_3) {
GET_JM_FOR_TEST
PRBool b;
//how can we disable Java ????? -> this test doesn't work
nsresult rc = jvmMgr->IsJavaEnabled(&b);
if (NS_SUCCEEDED(rc) && b == PR_FALSE) {
return TestResult::PASS("Should PASS if security.enable_java property is set to false.");
}
return TestResult::FAIL("To make this test pass one should delete OJI plugin !");
}

Просмотреть файл

@ -1,47 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#include <ojiapitests.h>
#include <nsIJVMManager.h>
static NS_DEFINE_IID(kJVMManagerCID, NS_JVMMANAGER_CID);
static NS_DEFINE_IID(kIJVMManagerIID, NS_IJVMMANAGER_IID);
extern nsresult GetJVMManager(nsIJVMManager** jm);

Просмотреть файл

@ -1,57 +0,0 @@
#
# ***** 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
# Sun Microsystems, Inc.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# 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 *****
TOP_DIR= ../..
OBJ_DIR= obj
CPP=get_jm.cpp \
CreateProxyJNI.cpp \
GetProxyJNI.cpp \
IsJavaEnabled.cpp \
ShowJavaConsole.cpp
OBJS= $(OBJ_DIR)/get_jm.o \
$(OBJ_DIR)/CreateProxyJNI.o \
$(OBJ_DIR)/GetProxyJNI.o \
$(OBJ_DIR)/IsJavaEnabled.o \
$(OBJ_DIR)/ShowJavaConsole.o
DLL= ojiapijmtests
include ../../build/rules.mk
all: compile link

Просмотреть файл

@ -1,57 +0,0 @@
#
# ***** 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
# Sun Microsystems, Inc.
# Portions created by the Initial Developer are Copyright (C) 1999
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# 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 *****
TOP_DIR = ../..
OBJ_DIR = obj
CPP = get_jm.cpp \
CreateProxyJNI.cpp \
GetProxyJNI.cpp \
IsJavaEnabled.cpp \
ShowJavaConsole.cpp
OBJS = $(OBJ_DIR)/get_jm.obj \
$(OBJ_DIR)/CreateProxyJNI.obj \
$(OBJ_DIR)/GetProxyJNI.obj \
$(OBJ_DIR)/IsJavaEnabled.obj \
$(OBJ_DIR)/ShowJavaConsole.obj
DLL = ojiapijmtests
include ../../build/rules.mak
all: compile link

Просмотреть файл

@ -1,68 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#include "JVMManagerTests.h"
/*ShowJavaConsole*/
JM_OJIAPITest(JVMManager_ShowJavaConsole_1) {
GET_JM_FOR_TEST
JNIEnv *jniEnv;
jvmMgr->CreateProxyJNI(nsnull, &jniEnv);
nsresult rc = jvmMgr->ShowJavaConsole();
if (NS_SUCCEEDED(rc))
return TestResult::PASS("CreateProxyJNI is called before ShowJavaConsole.");
return TestResult::FAIL("ShowJavaConsole", rc);
}
JM_OJIAPITest(JVMManager_ShowJavaConsole_2) {
GET_JM_FOR_TEST
JNIEnv *jniEnv;
nsresult rc = jvmMgr->ShowJavaConsole();
if (NS_SUCCEEDED(rc))
return TestResult::PASS("Method should PASS nevertheless CreateProxyJNI wasn't call before.");
return TestResult::FAIL("ShowJavaConsole", rc);
}

Просмотреть файл

@ -1,49 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#include <JVMManagerTests.h>
#include <nsIServiceManager.h>
nsresult GetJVMManager(nsIJVMManager** jvmMngr) {
*jvmMngr;
nsresult rv = CallGetService(kJVMManagerCID, jvmMngr);
if (rv != NS_OK || !jvmMngr) {
fprintf(stderr, "ERROR: Can't get JVM manager !\n");
return NS_ERROR_FAILURE;
}
return NS_OK;
}

Просмотреть файл

@ -1,73 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#ifndef AccessingFields_h___
#define AccessingFields_h___
#define IMPLEMENT_GetFieldID_METHOD(class_name, param_name, returnType)\
\
jclass clazz = env->FindClass(class_name); \
if (!clazz) \
return TestResult::FAIL("Can't find class !"); \
jobject obj = env->AllocObject(clazz); \
if (!obj) \
return TestResult::FAIL("Can't allocate object !\n"); \
jfieldID fieldID = env->GetFieldID(clazz, param_name, returnType ); \
printf("fieldID = %d\n", (int)fieldID); \
#define IMPLEMENT_GetStaticFieldID_METHOD(class_name, param_name, returnType)\
\
jclass clazz = env->FindClass(class_name); \
/*jobject obj = env->AllocObject(clazz); */ \
jfieldID fieldID = env->GetStaticFieldID(clazz, param_name, returnType ); \
printf("fieldID = %d\n", (int)fieldID); \
#define IMPLEMENT_GetMethodID_METHOD(class_name, func_name, returnType)\
jclass clazz = env->FindClass(class_name);\
jobject obj = env->AllocObject(clazz); \
jmethodID MethodID = env->GetMethodID(clazz, func_name, returnType);\
printf("ID of %s method = %d\n", func_name, (int)MethodID);
#define IMPLEMENT_GetStaticMethodID_METHOD(class_name, func_name, returnType)\
jclass clazz = env->FindClass(class_name);\
jobject obj = env->AllocObject(clazz); \
jmethodID MethodID = env->GetStaticMethodID(clazz, func_name, returnType);\
printf("ID of static %s method = %d\n", func_name, (int)MethodID);
#endif //AccessingFields_h___

Просмотреть файл

@ -1,49 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#include "JNIEnvTests.h"
#include "AccessingFields.h"
JNI_OJIAPITest(JNIEnv_GetBooleanField_1)
{
GET_JNI_FOR_TEST
IMPLEMENT_GetFieldID_METHOD("Test1","name_bool", "Z");
jboolean value = env->GetBooleanField(NULL, fieldID);
printf("value = %d\n", (int)value);
return TestResult::PASS("GetBooleanField with obj = NULL return correct value - do not crash");
}

Просмотреть файл

@ -1,49 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#include "JNIEnvTests.h"
#include "AccessingFields.h"
JNI_OJIAPITest(JNIEnv_GetBooleanField_2)
{
GET_JNI_FOR_TEST
IMPLEMENT_GetFieldID_METHOD("Test1","name_bool", "Z");
jboolean value = env->GetBooleanField(obj, (jfieldID)-100);
printf("value = %d\n", (int)value);
return TestResult::PASS("GetBooleanField with fieldID = (jfieldID)-100 return correct value - do not crash");
}

Просмотреть файл

@ -1,49 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#include "JNIEnvTests.h"
#include "AccessingFields.h"
JNI_OJIAPITest(JNIEnv_GetBooleanField_3)
{
GET_JNI_FOR_TEST
IMPLEMENT_GetFieldID_METHOD("Test1","name_bool", "Z");
jboolean value = env->GetBooleanField(obj, (jfieldID)100);
printf("value = %d\n", (int)value);
return TestResult::PASS("GetBooleanField with fieldID = (jfieldID)100 return correct value - do not crash");
}

Просмотреть файл

@ -1,49 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#include "JNIEnvTests.h"
#include "AccessingFields.h"
JNI_OJIAPITest(JNIEnv_GetBooleanField_4)
{
GET_JNI_FOR_TEST
IMPLEMENT_GetFieldID_METHOD("Test1","name_bool", "Z");
jboolean value = env->GetBooleanField(obj, NULL);
printf("value = %d\n", (int)value);
return TestResult::PASS("GetBooleanField with fieldID = NULL return correct value - do not crash");
}

Просмотреть файл

@ -1,54 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#include "JNIEnvTests.h"
#include "AccessingFields.h"
JNI_OJIAPITest(JNIEnv_GetBooleanField_5)
{
GET_JNI_FOR_TEST
IMPLEMENT_GetFieldID_METHOD("Test1","name_bool", "Z");
env->SetBooleanField(obj, fieldID, JNI_TRUE);
jboolean value = env->GetBooleanField(obj, fieldID);
printf("value = %d\n", (int)value);
if(value == JNI_TRUE){
return TestResult::PASS("GetBooleanField with val == JNI_TRUE return correct value");
}else{
return TestResult::FAIL("GetBooleanField with val == JNI_TRUE return incorrect value");
}
}

Просмотреть файл

@ -1,54 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#include "JNIEnvTests.h"
#include "AccessingFields.h"
JNI_OJIAPITest(JNIEnv_GetBooleanField_6)
{
GET_JNI_FOR_TEST
IMPLEMENT_GetFieldID_METHOD("Test1","name_bool", "Z");
env->SetBooleanField(obj, fieldID, JNI_FALSE);
jboolean value = env->GetBooleanField(obj, fieldID);
printf("value = %d\n", (int)value);
if(value == JNI_FALSE){
return TestResult::PASS("GetBooleanField with val == JNI_FALSE return correct value");
}else{
return TestResult::FAIL("GetBooleanField with val == JNI_FALSE return incorrect value");
}
}

Просмотреть файл

@ -1,49 +0,0 @@
/* -*- 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
*
* 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
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* 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 ***** */
#include "JNIEnvTests.h"
#include "AccessingFields.h"
JNI_OJIAPITest(JNIEnv_GetByteField_1)
{
GET_JNI_FOR_TEST
IMPLEMENT_GetFieldID_METHOD("Test1","name_byte", "B");
jbyte value = env->GetByteField(NULL, fieldID);
printf("value = %d\n", (byte)value);
return TestResult::PASS("GetByteField with obj = NULL return correct value - do not crash");
}

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше