M dist/build.xml
M dist/netbeans/nbproject/project.properties M examples/simple/src/main/java/simple/SimplePluglet.java M examples/simple/src/main/web/index.html M src/Pluglet.cpp New release. Now with JavaScript to Pluglet calling. git-svn-id: svn://10.0.0.236/trunk@242022 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
a38e88a6fc
commit
6eec4a4797
4
mozilla/java/plugins/dist/build.xml
vendored
4
mozilla/java/plugins/dist/build.xml
vendored
@ -32,8 +32,8 @@
|
||||
<property name="name" value="pluglet"/>
|
||||
<property name="major.version" value="1" />
|
||||
<property name="minor.version" value="1" />
|
||||
<property name="release.version" value="a1" />
|
||||
<property name="release.version.full" value="alpha_1" />
|
||||
<property name="release.version" value="a2" />
|
||||
<property name="release.version.full" value="alpha_2" />
|
||||
<property name="version"
|
||||
value="${major.version}_${minor.version}_${release.version}"/>
|
||||
<property name="full.version" value="${major.version}_${minor.version}_${release.version.full}"/>
|
||||
|
||||
@ -20,10 +20,10 @@ file.reference.main-java=../test/manual/src/main/java
|
||||
file.reference.main-java-1=../samples/jmfplayer/src/main/java
|
||||
file.reference.main-java-2=../src/main/java
|
||||
file.reference.main-java-3=../samples/simple/src/main/java
|
||||
file.reference.pluglet-1_1_a1.jar=../lib/pluglet-1_1_a1.jar
|
||||
file.reference.pluglet-1_1_a2.jar=../lib/pluglet-1_1_a2.jar
|
||||
jar.compress=false
|
||||
javac.classpath=\
|
||||
${file.reference.pluglet-1_1_a1.jar}:\
|
||||
${file.reference.pluglet-1_1_a2.jar}:\
|
||||
${libs.JMF.classpath}
|
||||
# Space-separated list of extra javac options
|
||||
javac.compilerargs=
|
||||
|
||||
@ -193,10 +193,27 @@ class SimplePlugletInstance implements Pluglet {
|
||||
org.mozilla.util.DebugPluglet.print("--SimplePlugletInstance.finalize()\n");
|
||||
}
|
||||
|
||||
public String calledFromJavaScript1(String arg1, String arg2) {
|
||||
org.mozilla.util.DebugPluglet.print("calledFromJavaScript1\n");
|
||||
return "hard coded result";
|
||||
public String calledFromJavaScript3(String arg0, String arg1, String arg2) {
|
||||
org.mozilla.util.DebugPluglet.print("calledFromJavaScript2\n");
|
||||
return "3 args. arg0: " + arg0 + " arg1: " + arg1 + " arg2: " + arg2 + "";
|
||||
}
|
||||
|
||||
public String calledFromJavaScript2(String arg0, String arg1) {
|
||||
org.mozilla.util.DebugPluglet.print("calledFromJavaScript2\n");
|
||||
return "2 args. arg0: " + arg0 + " arg1: " + arg1 + "";
|
||||
}
|
||||
|
||||
public String calledFromJavaScript1(String arg0) {
|
||||
org.mozilla.util.DebugPluglet.print("calledFromJavaScript1\n");
|
||||
return "1 args. arg0: " + arg0 + "";
|
||||
}
|
||||
|
||||
public String calledFromJavaScript0() {
|
||||
org.mozilla.util.DebugPluglet.print("calledFromJavaScript0\n");
|
||||
return "0 arg hard coded result";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
class TestStreamListener implements PlugletStreamListener {
|
||||
|
||||
@ -7,10 +7,23 @@
|
||||
<script>
|
||||
var embed = document.embeds[0];
|
||||
|
||||
function callPluglet()
|
||||
function callPluglet0()
|
||||
{
|
||||
var strs2 = {
|
||||
value : ["double","me"]
|
||||
value : []
|
||||
};
|
||||
|
||||
var strslen2 = {
|
||||
value : strs2.value.length
|
||||
};
|
||||
|
||||
embed.callPlugletMethod("calledFromJavaScript0", strslen2, strs2);
|
||||
alert("Pluglet returned " + strs2.value);
|
||||
}
|
||||
function callPluglet1()
|
||||
{
|
||||
var strs2 = {
|
||||
value : [ "arg0" ]
|
||||
};
|
||||
|
||||
var strslen2 = {
|
||||
@ -18,11 +31,41 @@ var strslen2 = {
|
||||
};
|
||||
|
||||
embed.callPlugletMethod("calledFromJavaScript1", strslen2, strs2);
|
||||
alert("Pluglet returned " + strs2.value);
|
||||
}
|
||||
function callPluglet2()
|
||||
{
|
||||
var strs2 = {
|
||||
value : [ "arg0", "arg1" ]
|
||||
};
|
||||
|
||||
var strslen2 = {
|
||||
value : strs2.value.length
|
||||
};
|
||||
|
||||
embed.callPlugletMethod("calledFromJavaScript2", strslen2, strs2);
|
||||
alert("Pluglet returned " + strs2.value);
|
||||
}
|
||||
function callPluglet3()
|
||||
{
|
||||
var strs2 = {
|
||||
value : [ "arg0", "arg1", "arg2" ]
|
||||
};
|
||||
|
||||
var strslen2 = {
|
||||
value : strs2.value.length
|
||||
};
|
||||
|
||||
embed.callPlugletMethod("calledFromJavaScript3", strslen2, strs2);
|
||||
alert("Pluglet returned " + strs2.value);
|
||||
}
|
||||
</script>
|
||||
|
||||
<form name="formname">
|
||||
<input type=button value="Call Pluglet" onclick='callPluglet()'> </input>
|
||||
<input type=button value="Call Pluglet 0 arg" onclick='callPluglet0()'> </input>
|
||||
<input type=button value="Call Pluglet 1 arg" onclick='callPluglet1()'> </input>
|
||||
<input type=button value="Call Pluglet 2 arg" onclick='callPluglet2()'> </input>
|
||||
<input type=button value="Call Pluglet 3 arg" onclick='callPluglet3()'> </input>
|
||||
</form>
|
||||
|
||||
</body>
|
||||
|
||||
@ -27,6 +27,8 @@
|
||||
#include "Registry.h"
|
||||
#include "PlugletViewFactory.h"
|
||||
#include "PlugletLog.h"
|
||||
#include "nsMemory.h"
|
||||
|
||||
|
||||
|
||||
|
||||
@ -307,7 +309,7 @@ NS_IMETHODIMP Pluglet::CallPlugletMethod(const char *methodName, PRUint32 *inArg
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
if (NULL != methodName && 0 < strlen(methodName) && NULL != inArgc && NULL != inArgv) {
|
||||
if (NULL != methodName && 0 < strlen(methodName) && NULL != inArgc && NULL != inArgv && (10 < (int)inArgc)) {
|
||||
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
|
||||
("Pluglet::CallPlugletMethod: methodName: %s\n", methodName));
|
||||
|
||||
@ -316,6 +318,220 @@ NS_IMETHODIMP Pluglet::CallPlugletMethod(const char *methodName, PRUint32 *inArg
|
||||
if (NULL != plugletMethodMID) {
|
||||
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
|
||||
("Pluglet::CallPlugletMethod: found match for methodName: %s\n", methodName));
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
nsCOMPtr<iPlugletEngine> plugletEngine =
|
||||
do_GetService(PLUGLETENGINE_ContractID, &rv);;
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
JNIEnv *env = nsnull;
|
||||
rv = plugletEngine->GetJNIEnv(&env);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
jstring resultJstr;
|
||||
|
||||
if (0 == *inArgc) {
|
||||
resultJstr = (jstring) env->CallObjectMethod(jthis, plugletMethodMID);
|
||||
}
|
||||
else {
|
||||
char **args = *inArgv;
|
||||
if (1 == *inArgc) {
|
||||
jstring jstr0 = env->NewStringUTF(args[0]);
|
||||
if (jstr0) {
|
||||
resultJstr = (jstring) env->CallObjectMethod(jthis, plugletMethodMID, jstr0);
|
||||
}
|
||||
env->DeleteLocalRef(jstr0);
|
||||
}
|
||||
else if (2 == *inArgc) {
|
||||
jstring jstr0 = env->NewStringUTF(args[0]);
|
||||
jstring jstr1 = env->NewStringUTF(args[1]);
|
||||
if (jstr0 && jstr1) {
|
||||
resultJstr = (jstring) env->CallObjectMethod(jthis, plugletMethodMID, jstr0, jstr1);
|
||||
}
|
||||
env->DeleteLocalRef(jstr0);
|
||||
env->DeleteLocalRef(jstr1);
|
||||
}
|
||||
else if (3 == *inArgc) {
|
||||
jstring jstr0 = env->NewStringUTF(args[0]);
|
||||
jstring jstr1 = env->NewStringUTF(args[1]);
|
||||
jstring jstr2 = env->NewStringUTF(args[2]);
|
||||
if (jstr0 && jstr1 && jstr2) {
|
||||
resultJstr = (jstring) env->CallObjectMethod(jthis, plugletMethodMID, jstr0, jstr1, jstr2);
|
||||
}
|
||||
env->DeleteLocalRef(jstr0);
|
||||
env->DeleteLocalRef(jstr1);
|
||||
env->DeleteLocalRef(jstr2);
|
||||
}
|
||||
else if (4 == *inArgc) {
|
||||
jstring jstr0 = env->NewStringUTF(args[0]);
|
||||
jstring jstr1 = env->NewStringUTF(args[1]);
|
||||
jstring jstr2 = env->NewStringUTF(args[2]);
|
||||
jstring jstr3 = env->NewStringUTF(args[3]);
|
||||
if (jstr0 && jstr1 && jstr2 && jstr3) {
|
||||
resultJstr = (jstring) env->CallObjectMethod(jthis, plugletMethodMID, jstr0, jstr1, jstr2,
|
||||
jstr3);
|
||||
}
|
||||
env->DeleteLocalRef(jstr0);
|
||||
env->DeleteLocalRef(jstr1);
|
||||
env->DeleteLocalRef(jstr2);
|
||||
env->DeleteLocalRef(jstr3);
|
||||
}
|
||||
else if (5 == *inArgc) {
|
||||
jstring jstr0 = env->NewStringUTF(args[0]);
|
||||
jstring jstr1 = env->NewStringUTF(args[1]);
|
||||
jstring jstr2 = env->NewStringUTF(args[2]);
|
||||
jstring jstr3 = env->NewStringUTF(args[3]);
|
||||
jstring jstr4 = env->NewStringUTF(args[4]);
|
||||
if (jstr0 && jstr1 && jstr2 && jstr3 && jstr4) {
|
||||
resultJstr = (jstring) env->CallObjectMethod(jthis, plugletMethodMID, jstr0, jstr1, jstr2,
|
||||
jstr3, jstr4);
|
||||
}
|
||||
env->DeleteLocalRef(jstr0);
|
||||
env->DeleteLocalRef(jstr1);
|
||||
env->DeleteLocalRef(jstr2);
|
||||
env->DeleteLocalRef(jstr3);
|
||||
env->DeleteLocalRef(jstr4);
|
||||
}
|
||||
else if (6 == *inArgc) {
|
||||
jstring jstr0 = env->NewStringUTF(args[0]);
|
||||
jstring jstr1 = env->NewStringUTF(args[1]);
|
||||
jstring jstr2 = env->NewStringUTF(args[2]);
|
||||
jstring jstr3 = env->NewStringUTF(args[3]);
|
||||
jstring jstr4 = env->NewStringUTF(args[4]);
|
||||
jstring jstr5 = env->NewStringUTF(args[5]);
|
||||
if (jstr0 && jstr1 && jstr2 && jstr3 && jstr4 && jstr5) {
|
||||
resultJstr = (jstring) env->CallObjectMethod(jthis, plugletMethodMID, jstr0, jstr1, jstr2,
|
||||
jstr3, jstr4, jstr5);
|
||||
}
|
||||
env->DeleteLocalRef(jstr0);
|
||||
env->DeleteLocalRef(jstr1);
|
||||
env->DeleteLocalRef(jstr2);
|
||||
env->DeleteLocalRef(jstr3);
|
||||
env->DeleteLocalRef(jstr4);
|
||||
env->DeleteLocalRef(jstr5);
|
||||
}
|
||||
else if (7 == *inArgc) {
|
||||
jstring jstr0 = env->NewStringUTF(args[0]);
|
||||
jstring jstr1 = env->NewStringUTF(args[1]);
|
||||
jstring jstr2 = env->NewStringUTF(args[2]);
|
||||
jstring jstr3 = env->NewStringUTF(args[3]);
|
||||
jstring jstr4 = env->NewStringUTF(args[4]);
|
||||
jstring jstr5 = env->NewStringUTF(args[5]);
|
||||
jstring jstr6 = env->NewStringUTF(args[6]);
|
||||
if (jstr0 && jstr1 && jstr2 && jstr3 && jstr4 && jstr5 && jstr6) {
|
||||
resultJstr = (jstring) env->CallObjectMethod(jthis, plugletMethodMID, jstr0, jstr1, jstr2,
|
||||
jstr3, jstr4, jstr5, jstr6);
|
||||
}
|
||||
env->DeleteLocalRef(jstr0);
|
||||
env->DeleteLocalRef(jstr1);
|
||||
env->DeleteLocalRef(jstr2);
|
||||
env->DeleteLocalRef(jstr3);
|
||||
env->DeleteLocalRef(jstr4);
|
||||
env->DeleteLocalRef(jstr5);
|
||||
env->DeleteLocalRef(jstr6);
|
||||
}
|
||||
else if (8 == *inArgc) {
|
||||
jstring jstr0 = env->NewStringUTF(args[0]);
|
||||
jstring jstr1 = env->NewStringUTF(args[1]);
|
||||
jstring jstr2 = env->NewStringUTF(args[2]);
|
||||
jstring jstr3 = env->NewStringUTF(args[3]);
|
||||
jstring jstr4 = env->NewStringUTF(args[4]);
|
||||
jstring jstr5 = env->NewStringUTF(args[5]);
|
||||
jstring jstr6 = env->NewStringUTF(args[6]);
|
||||
jstring jstr7 = env->NewStringUTF(args[7]);
|
||||
if (jstr0 && jstr1 && jstr2 && jstr3 && jstr4 && jstr5 && jstr6 && jstr7) {
|
||||
resultJstr = (jstring) env->CallObjectMethod(jthis, plugletMethodMID, jstr0, jstr1, jstr2,
|
||||
jstr3, jstr4, jstr5, jstr6, jstr7);
|
||||
}
|
||||
env->DeleteLocalRef(jstr0);
|
||||
env->DeleteLocalRef(jstr1);
|
||||
env->DeleteLocalRef(jstr2);
|
||||
env->DeleteLocalRef(jstr3);
|
||||
env->DeleteLocalRef(jstr4);
|
||||
env->DeleteLocalRef(jstr5);
|
||||
env->DeleteLocalRef(jstr6);
|
||||
env->DeleteLocalRef(jstr7);
|
||||
}
|
||||
else if (9 == *inArgc) {
|
||||
jstring jstr0 = env->NewStringUTF(args[0]);
|
||||
jstring jstr1 = env->NewStringUTF(args[1]);
|
||||
jstring jstr2 = env->NewStringUTF(args[2]);
|
||||
jstring jstr3 = env->NewStringUTF(args[3]);
|
||||
jstring jstr4 = env->NewStringUTF(args[4]);
|
||||
jstring jstr5 = env->NewStringUTF(args[5]);
|
||||
jstring jstr6 = env->NewStringUTF(args[6]);
|
||||
jstring jstr7 = env->NewStringUTF(args[7]);
|
||||
jstring jstr8 = env->NewStringUTF(args[8]);
|
||||
if (jstr0 && jstr1 && jstr2 && jstr3 && jstr4 && jstr5 && jstr6 && jstr7 && jstr8) {
|
||||
resultJstr = (jstring) env->CallObjectMethod(jthis, plugletMethodMID, jstr0, jstr1, jstr2,
|
||||
jstr3, jstr4, jstr5, jstr6, jstr7, jstr8);
|
||||
}
|
||||
env->DeleteLocalRef(jstr0);
|
||||
env->DeleteLocalRef(jstr1);
|
||||
env->DeleteLocalRef(jstr2);
|
||||
env->DeleteLocalRef(jstr3);
|
||||
env->DeleteLocalRef(jstr4);
|
||||
env->DeleteLocalRef(jstr5);
|
||||
env->DeleteLocalRef(jstr6);
|
||||
env->DeleteLocalRef(jstr7);
|
||||
env->DeleteLocalRef(jstr8);
|
||||
}
|
||||
else if (10 == *inArgc) {
|
||||
jstring jstr0 = env->NewStringUTF(args[0]);
|
||||
jstring jstr1 = env->NewStringUTF(args[1]);
|
||||
jstring jstr2 = env->NewStringUTF(args[2]);
|
||||
jstring jstr3 = env->NewStringUTF(args[3]);
|
||||
jstring jstr4 = env->NewStringUTF(args[4]);
|
||||
jstring jstr5 = env->NewStringUTF(args[5]);
|
||||
jstring jstr6 = env->NewStringUTF(args[6]);
|
||||
jstring jstr7 = env->NewStringUTF(args[7]);
|
||||
jstring jstr8 = env->NewStringUTF(args[8]);
|
||||
jstring jstr9 = env->NewStringUTF(args[9]);
|
||||
if (jstr0 && jstr1 && jstr2 && jstr3 && jstr4 && jstr5 && jstr6 && jstr7 && jstr8 && jstr9) {
|
||||
resultJstr = (jstring) env->CallObjectMethod(jthis, plugletMethodMID, jstr0, jstr1, jstr2,
|
||||
jstr3, jstr4, jstr5, jstr6, jstr7, jstr8, jstr9);
|
||||
}
|
||||
env->DeleteLocalRef(jstr0);
|
||||
env->DeleteLocalRef(jstr1);
|
||||
env->DeleteLocalRef(jstr2);
|
||||
env->DeleteLocalRef(jstr3);
|
||||
env->DeleteLocalRef(jstr4);
|
||||
env->DeleteLocalRef(jstr5);
|
||||
env->DeleteLocalRef(jstr6);
|
||||
env->DeleteLocalRef(jstr7);
|
||||
env->DeleteLocalRef(jstr8);
|
||||
env->DeleteLocalRef(jstr9);
|
||||
}
|
||||
}
|
||||
|
||||
if (NULL != resultJstr) {
|
||||
jboolean isCopy;
|
||||
const char * result = env->GetStringUTFChars(resultJstr, &isCopy);
|
||||
if (NULL != result) {
|
||||
const static char *strings[1];
|
||||
strings[0] = result;
|
||||
// Taken from xpctest_array.cpp. Thanks jband
|
||||
const static PRUint32 scount = sizeof(strings)/sizeof(strings[0]);
|
||||
char** out = (char**) nsMemory::Alloc(scount * sizeof(char*));
|
||||
if(!out) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
for(PRUint32 i = 0; i < scount; ++i) {
|
||||
out[i] = (char*) nsMemory::Clone(strings[i], strlen(strings[i])+1);
|
||||
if(!out[i]) {
|
||||
nsMemory::Free(out);
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
}
|
||||
*inArgc = 1;
|
||||
*inArgv = out;
|
||||
}
|
||||
if (isCopy == JNI_TRUE) {
|
||||
env->ReleaseStringUTFChars(resultJstr, result);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
PR_LOG(PlugletLog::log, PR_LOG_DEBUG,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user