Updating sample plugin to test java class loading.
This commit is contained in:
@@ -38,6 +38,7 @@ extern ANPCanvasInterfaceV0 gCanvasI;
|
||||
extern ANPLogInterfaceV0 gLogI;
|
||||
extern ANPPaintInterfaceV0 gPaintI;
|
||||
extern ANPSurfaceInterfaceV0 gSurfaceI;
|
||||
extern ANPSystemInterfaceV0 gSystemI;
|
||||
extern ANPTypefaceInterfaceV0 gTypefaceI;
|
||||
|
||||
#define ARRAY_COUNT(array) (sizeof(array) / sizeof(array[0]))
|
||||
@@ -66,6 +67,7 @@ BackgroundPlugin::BackgroundPlugin(NPP inst) : SurfaceSubPlugin(inst) {
|
||||
test_bitmaps(); // android bitmaps
|
||||
test_domAccess();
|
||||
test_javascript();
|
||||
test_loadJavaClass();
|
||||
}
|
||||
|
||||
BackgroundPlugin::~BackgroundPlugin() {
|
||||
@@ -421,3 +423,39 @@ void BackgroundPlugin::test_javascript() {
|
||||
// free the memory allocated within the browser
|
||||
browser->memfree(stringMem);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Load Java Classes Tests
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void BackgroundPlugin::test_loadJavaClass() {
|
||||
|
||||
JNIEnv* env = NULL;
|
||||
if (gVM->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
|
||||
gLogI.log(inst(), kError_ANPLogType, " ---- LoadJavaTest: failed to get env");
|
||||
return;
|
||||
}
|
||||
|
||||
const char* className = "com.android.sampleplugin.BackgroundTest";
|
||||
jclass backgroundClass = gSystemI.loadJavaClass(inst(), className);
|
||||
|
||||
if(!backgroundClass) {
|
||||
gLogI.log(inst(), kError_ANPLogType, " ---- LoadJavaTest: failed to load class");
|
||||
return;
|
||||
}
|
||||
|
||||
jmethodID constructor = env->GetMethodID(backgroundClass, "<init>", "()V");
|
||||
jmethodID addMethod = env->GetMethodID(backgroundClass, "addInt", "(II)I");
|
||||
jobject backgroundObject = env->NewObject(backgroundClass, constructor);
|
||||
|
||||
if(!backgroundObject) {
|
||||
gLogI.log(inst(), kError_ANPLogType, " ---- LoadJavaTest: failed to construct object");
|
||||
return;
|
||||
}
|
||||
|
||||
jint result = env->CallIntMethod(backgroundObject, addMethod, 2, 2);
|
||||
|
||||
if (result != 4) {
|
||||
gLogI.log(inst(), kError_ANPLogType, " ---- LoadJavaTest: invalid result (%d != 4)", result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,6 +62,7 @@ private:
|
||||
void test_bitmap_transparency(const ANPEvent* evt);
|
||||
void test_domAccess();
|
||||
void test_javascript();
|
||||
void test_loadJavaClass();
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -157,9 +157,8 @@ NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc,
|
||||
|
||||
// Scripting functions appeared in NPAPI version 14
|
||||
if (browser->version >= 14) {
|
||||
instance->pdata = browser->createobject (instance, getPluginClass());
|
||||
obj = static_cast<PluginObject*>(instance->pdata);
|
||||
bzero(obj, sizeof(*obj));
|
||||
instance->pdata = browser->createobject (instance, getPluginClass());
|
||||
obj = static_cast<PluginObject*>(instance->pdata);
|
||||
}
|
||||
/* END: STANDARD PLUGIN FRAMEWORK */
|
||||
|
||||
@@ -407,9 +406,9 @@ NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value)
|
||||
PluginObject *obj = (PluginObject*) instance->pdata;
|
||||
|
||||
if (obj)
|
||||
browser->retainobject((NPObject*)obj);
|
||||
browser->retainobject(&obj->header);
|
||||
|
||||
*v = obj;
|
||||
*v = &(obj->header);
|
||||
return NPERR_NO_ERROR;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <npruntime.h>
|
||||
#include "android_npapi.h"
|
||||
#include "ANPSurface_npapi.h"
|
||||
#include "ANPSystem_npapi.h"
|
||||
|
||||
extern NPNetscapeFuncs* browser;
|
||||
extern JavaVM* gVM;
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.android.sampleplugin;
|
||||
|
||||
public class BackgroundTest {
|
||||
|
||||
public BackgroundTest() {}
|
||||
|
||||
public int addInt(int x, int y) {
|
||||
return x + y;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user