Updating sample plugin to test java class loading.

This commit is contained in:
Derek Sollenberger
2009-11-09 15:38:58 -05:00
parent e458201d1a
commit b4a23918d3
5 changed files with 55 additions and 5 deletions

View File

@@ -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);
}
}

View File

@@ -62,6 +62,7 @@ private:
void test_bitmap_transparency(const ANPEvent* evt);
void test_domAccess();
void test_javascript();
void test_loadJavaClass();
};

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -0,0 +1,11 @@
package com.android.sampleplugin;
public class BackgroundTest {
public BackgroundTest() {}
public int addInt(int x, int y) {
return x + y;
}
}