This commit is contained in:
idk%eng.sun.com 1999-09-08 00:21:03 +00:00
Родитель ba91027c38
Коммит a94e7aa625
31 изменённых файлов: 1548 добавлений и 196 удалений

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

@ -0,0 +1,44 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
package org.mozilla.pluglet.mozilla;
class ByteRangesImpl implements ByteRanges {
//why not [][] ? Because it is simpler & faster from jni
private int offset[];
private int length[];
//this is the index for next available free cell in the array
private int current = 0;
//size increment for offset and length arrays
private final static int STEP = 10;
ByteRangesImpl() {
offset = new int[STEP];
length = new int[STEP];
}
public void addRange(int off, int len) {
if (current >= offset.length) {
int tmpOffset[] = new int[offset.length+STEP];
int tmpLength[] = new int[offset.length+STEP];
System.arraycopy(offset,0,tmpOffset,0,offset.length);
System.arraycopy(length,0,tmpLength,0,length.length);
offset = tmpOffset;
length = tmpLength;
}
offset[current] = off;
length[current] = len;
current++;
}
}

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

@ -19,19 +19,25 @@ import java.io.*;
class PlugletInputStream extends InputStream {
private long peer;
private byte buf[] = new byte[1];
private PlugletInputStream(long peer) {
this.peer = peer;
nativeInitialize();
}
public int read() throws IOException {
byte b[] = new byte[1];
return read(b,0,1);
return read(buf,0,1);
}
public int read(byte b[], int off, int len) throws IOException {
if (off>0) {
skip(off);
}
return read(b,len);
if (b == null) {
throw new NullPointerException();
} else if ((off < 0) || (off > b.length) || (len < 0) ||
((off + len) > b.length) || ((off + len) < 0)) {
throw new IndexOutOfBoundsException();
} else if (len == 0) {
return 0;
}
return nativeRead(b,off,len);
}
public native int available();
public native void close();
@ -42,10 +48,13 @@ class PlugletInputStream extends InputStream {
public boolean markSupported() {
return false;
}
private native int read(byte b[], int len);
protected void finalize() {
nativeFinalize();
}
private native void nativeFinalize();
private native void nativeInitialize();
private native int nativeRead(byte b[], int off, int len) throws IOException;
}

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

@ -45,4 +45,12 @@ public interface PlugletInstancePeer {
* @param message the status message to display
*/
public void showStatus(String message);
}
/**
* Set the desired size of the window in which the plugin instance lives.
*
* @param width - new window width
* @param height - new window height
*/
public void setWindowSize(int width, int height);
}

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

@ -0,0 +1,61 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
package org.mozilla.pluglet.mozilla;
import java.io.OutputStream;
class PlugletInstancePeerImpl implements PlugletInstancePeer {
private long peer = 0;
private PlugletInstancePeerImpl(long peer) {
this.peer = peer;
nativeInitialize();
}
/**
* Returns the MIME type of the pluglet instance.
*/
public native String getMIMEType();
/**
* Returns the mode of the pluglet instance, i.e. whether the pluglet
* is embedded in the html, or full page.
*/
public native int getMode();
/**
* Returns the value of a variable associated with the pluglet manager.
* @param variable the pluglet manager variable to get
*/
public native String getValue(int variable);
/**
* This operation is called by the pluglet instance when it wishes to send a stream of data to the browser. It constructs a
* new output stream to which the pluglet may send the data. When complete, the Close and Release methods should be
* called on the output stream.
* @param type type MIME type of the stream to create
* @param target the target window name to receive the data
*/
public native OutputStream newStream(String type, String target);
/** This operation causes status information to be displayed on the window associated with the pluglet instance.
* @param message the status message to display
*/
public native void showStatus(String message);
/**
* Set the desired size of the window in which the plugin instance lives.
*
* @param width - new window width
* @param height - new window height
*/
public native void setWindowSize(int width, int height);
private native void nativeFinalize();
private native void nativeInitialize();
};

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

@ -0,0 +1,117 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
package org.mozilla.pluglet.mozilla;
import org.mozilla.pluglet.*;
import java.net.URL;
class PlugletManagerImpl implements PlugletManager {
private long peer = 0;
private PlugletManagerImpl(long _peer) {
peer = _peer;
nativeInitialize();
}
/**
* Returns the value of a variable associated with the pluglet manager.
*
* @param variable the pluglet manager variable to get
*/
public native String getValue(int variable);
/**
* Causes the pluglets directory to be searched again for new pluglet
* libraries.
*
* @param reloadPages indicates whether currently visible pages should
* also be reloaded
*/
public native void reloadPluglets(boolean reloadPages);
/**
* Returns the user agent string for the browser.
*
*/
public native String userAgent();
/**
* Fetches a URL.
* @param plugletInst the pluglet making the request.
* If null, the URL is fetched in the background.
* @param url the URL to fetch
* @param target the target window into which to load the URL
* @param notifyData when present, URLNotify is called passing the
* notifyData back to the client.
* @param altHost an IP-address string that will be used instead of
* the host specified in the URL. This is used to
* @param prevent DNS-spoofing attacks. Can be defaulted to null
* meaning use the host in the URL.
* @param referrer the referring URL (may be null)
* @param forceJSEnabled forces JavaScript to be enabled for
* 'javascript:' URLs, even if the user currently has JavaScript
* disabled (usually specify false)
*/
public native void getURL(PlugletInstance plugletInst,
URL url, String target,
PlugletStreamListener streamListener,
String altHost, URL referrer,
boolean forceJSEnabled);
/**
* Posts to a URL with post data and/or post headers.
*
* @param plugletInst the pluglet making the request. If null, the URL
* is fetched in the background.
* @param url the URL to fetch
* @param target the target window into which to load the URL
* @param postDataLength the length of postData (if non-null)
* @param postData the data to POST. null specifies that there is not post
* data
* @param isFile whether the postData specifies the name of a file to
* post instead of data. The file will be deleted afterwards.
* @param notifyData when present, URLNotify is called passing the
* notifyData back to the client.
* @param altHost n IP-address string that will be used instead of the
* host specified in the URL. This is used to prevent DNS-spoofing
* attacks. Can be defaulted to null meaning use the host in the URL.
* @param referrer the referring URL (may be null)
* @param forceJSEnabled forces JavaScript to be enabled for 'javascript:'
* URLs, even if the user currently has JavaScript disabled (usually
* specify false)
* @param postHeadersLength the length of postHeaders (if non-null)
* @param postHeaders the headers to POST. null specifies that there
* are no post headers
*/
public native void postURL(PlugletInstance plugletInst,
URL url,
int postDataLen,
byte[] postData,
boolean isFile,
String target,
PlugletStreamListener streamListener,
String altHost,
URL referrer,
boolean forceJSEnabled,
int postHeadersLength,
byte[] postHeaders);
protected void finalize() {
nativeFinalize();
}
private native void nativeFinalize();
private native void nativeInitialize();
}

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

@ -0,0 +1,47 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
package org.mozilla.pluglet.mozilla;
import java.io.*;
class PlugletOutputStream extends OutputStream {
private long peer;
private byte buf[] = new byte[1];
private PlugletOutputStream(long peer) {
this.peer = peer;
nativeInitialize();
}
public void write(int b) throws IOException {
buf[0] = (byte)b;
write(buf,0,1);
}
public void write(byte b[], int off, int len) throws IOException {
if (b == null) {
throw new NullPointerException();
} else if ((off < 0) || (off > b.length) || (len < 0) ||
((off + len) > b.length) || ((off + len) < 0)) {
throw new IndexOutOfBoundsException();
} else if (len == 0) {
return;
}
nativeWrite(b,off,len);
}
public native void flush();
public native void close();
private native void nativeWrite(byte b[], int off, int len) throws IOException;
private native void nativeFinalize();
private native void nativeInitialize();
}

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

@ -0,0 +1,106 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
#include "ByteRanges.h"
jfieldID ByteRanges::offsetFID = NULL;
jfieldID ByteRanges::lengthFID = NULL;
jfieldID ByteRanges::currentFID = NULL;
nsByteRange* ByteRanges::GetByteRanges(JNIEnv *env, jobject object) {
if (!currentFID) {
Initialize(env);
if (!currentFID) {
return NULL;
}
}
jint current = 0; //curent is the last one, sorry for this name :)
current = env->GetIntField(object,currentFID);
if (env->ExceptionOccurred()) {
env->ExceptionDescribe();
return NULL;
}
if (!current) { //empty ranges
return NULL;
}
jintArray joffset = NULL;
joffset = (jintArray)env->GetObjectField(object,offsetFID);
if (!joffset) {
env->ExceptionDescribe();
return NULL;
}
jintArray jlength = NULL;
jlength = (jintArray)env->GetObjectField(object,lengthFID);
if (!jlength) {
env->ExceptionDescribe();
return NULL;
}
jint *offset = NULL;
jint *length = NULL;
offset = env->GetIntArrayElements(joffset,NULL);
if(!offset) {
env->ExceptionDescribe();
return NULL;
}
length = env->GetIntArrayElements(joffset,NULL);
if(!length) {
env->ExceptionDescribe();
return NULL;
}
nsByteRange *res = (nsByteRange*)malloc(sizeof(nsByteRange)*current);
if(!res) {
env->ReleaseIntArrayElements(joffset,offset,0);
env->ReleaseIntArrayElements(jlength,length,0);
return NULL;
}
for (int i = 0;i<current;i++) {
res[i].offset = offset[i];
res[i].length = length[i];
res[i].next = &res[i+1];
}
res[i].next = NULL;
env->ReleaseIntArrayElements(joffset,offset,0);
env->ReleaseIntArrayElements(jlength,length,0);
return res;
}
void ByteRanges::FreeByteRanges(nsByteRange * ranges) {
free(ranges);
}
void ByteRanges::Initialize(JNIEnv *env) {
jclass clazz = env->FindClass("org/mozilla/pluglet/mozilla/ByteRangesImpl");
if(!clazz) {
env->ExceptionDescribe();
return;
}
offsetFID = env->GetFieldID(clazz,"offset","[I");
if(!offsetFID) {
env->ExceptionDescribe();
return;
}
lengthFID = env->GetFieldID(clazz,"length","[I");
if(!lengthFID) {
env->ExceptionDescribe();
return;
}
currentFID = env->GetFieldID(clazz,"current","I");
if(!currentFID) {
env->ExceptionDescribe();
return;
}
}

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

@ -0,0 +1,35 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
#ifndef __ByteRanges_h__
#define __ByteRanges_h__
#include "nsplugindefs.h"
#include "nsISupports.h"
#include "jni.h"
class ByteRanges {
public:
static nsByteRange* GetByteRanges(JNIEnv *env, jobject object);
static void FreeByteRanges(nsByteRange * ranges);
private:
static void Initialize(JNIEnv *env);
static jfieldID offsetFID;
static jfieldID lengthFID;
static jfieldID currentFID;
};
#endif /* __ByteRanges_h__ */

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

@ -0,0 +1,62 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
#include "PlugletOutputStream.h"
jclass PlugletOutputStream::clazz = NULL;
jmethodID PlugletOutputStream::initMID = NULL;
void PlugletOutputStream::Initialize(JNIEnv *env) {
clazz = env->FindClass("org/mozilla/pluglet/mozilla/PlugletOutputStream");
if (!clazz) {
env->ExceptionDescribe();
return;
}
clazz = (jclass) env->NewGlobalRef(clazz);
initMID = env->GetMethodID(clazz,"<init>","(J)V");
if (!initMID) {
env->ExceptionDescribe();
clazz = NULL;
return;
}
}
void PlugletOutputStream::Destroy(JNIEnv *env) {
//nb who gonna cal it?
if(clazz) {
env->DeleteGlobalRef(clazz);
}
}
jobject PlugletOutputStream::GetJObject(JNIEnv *env, const nsIOutputStream *stream) {
jobject res = NULL;
if(!clazz) {
Initialize(env);
if (! clazz) {
return NULL;
}
}
res = env->NewObject(clazz,initMID,(jlong)stream);
if (!res) {
env->ExceptionDescribe();
}
return res;
}

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

@ -0,0 +1,32 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
#ifndef __PlugletOutputStream_h__
#define __PlugletOutputStream_h__
#include "nsIOutputStream.h"
#include "jni.h"
class PlugletOutputStream {
public:
static jobject GetJObject(JNIEnv* env,const nsIOutputStream *stream);
private:
static void Initialize(JNIEnv* env);
static void Destroy(JNIEnv *env);
static jclass clazz;
static jmethodID initMID;
};
#endif /* __PlugletOutputtStream_h__ */

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

@ -1,62 +1,67 @@
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
# Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
# Inc. All Rights Reserved.
IGNORE_MANIFEST=1
#//------------------------------------------------------------------------
#//
#// Makefile to build
#//
#//------------------------------------------------------------------------
MODULE = plugletjni
LIBRARY_NAME = plugletjni
DEPTH= ..\..\..
OBJS = \
.\$(OBJDIR)\org_mozilla_util_Debug.obj \
.\$(OBJDIR)\org_mozilla_pluglet_mozilla_PlugletStreamInfoImpl.obj \
.\$(OBJDIR)\org_mozilla_pluglet_mozilla_PlugletInputStream.obj
MAKE_OBJ_TYPE = DLL
#//------------------------------------------------------------------------
#//
#// Define any Public Targets here (ie. PROGRAM, LIBRARY, DLL, ...)
#// (these must be defined before the common makefiles are included)
#//
#//------------------------------------------------------------------------
DLLNAME=plugletjni
DLL = .\$(OBJDIR)\$(DLLNAME).dll
#//------------------------------------------------------------------------
#//
#// Define any local options for the make tools
#// (ie. LCFLAGS, LLFLAGS, LLIBS, LINCS)
#//
#//------------------------------------------------------------------------
#//------------------------------------------------------------------------
#//
#// Include the common makefile rules
#//
#//------------------------------------------------------------------------
include <$(DEPTH)/config/rules.mak>
install:: $(DLL)
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).dll $(DIST)\bin\
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
# Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
# Inc. All Rights Reserved.
IGNORE_MANIFEST=1
#//------------------------------------------------------------------------
#//
#// Makefile to build
#//
#//------------------------------------------------------------------------
MODULE = plugletjni
LIBRARY_NAME = plugletjni
DEPTH= ..\..\..
OBJS = \
.\$(OBJDIR)\org_mozilla_util_Debug.obj \
.\$(OBJDIR)\org_mozilla_pluglet_mozilla_PlugletStreamInfoImpl.obj \
.\$(OBJDIR)\org_mozilla_pluglet_mozilla_PlugletInputStream.obj \
.\$(OBJDIR)\org_mozilla_pluglet_mozilla_PlugletOutputStream.obj \
.\$(OBJDIR)\org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl.obj \
.\$(ONJDIR)\org_mozilla_pluglet_mozilla_PlugletManagerImpl.obj \
.\$(OBJDIR)\PlugletOutputStream.obj \
.\$(OBJDIR)\ByteRanges.obj
MAKE_OBJ_TYPE = DLL
#//------------------------------------------------------------------------
#//
#// Define any Public Targets here (ie. PROGRAM, LIBRARY, DLL, ...)
#// (these must be defined before the common makefiles are included)
#//
#//------------------------------------------------------------------------
DLLNAME=plugletjni
DLL = .\$(OBJDIR)\$(DLLNAME).dll
#//------------------------------------------------------------------------
#//
#// Define any local options for the make tools
#// (ie. LCFLAGS, LLFLAGS, LLIBS, LINCS)
#//
#//------------------------------------------------------------------------
#//------------------------------------------------------------------------
#//
#// Include the common makefile rules
#//
#//------------------------------------------------------------------------
include <$(DEPTH)/config/rules.mak>
install:: $(DLL)
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).dll $(DIST)\bin\

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

@ -47,28 +47,32 @@ JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInputStream_close
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInputStream
* Method: read
* Signature: ([BI)I
* Method: nativeRead
* Signature: ([BII)I
*/
JNIEXPORT jint JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInputStream_read
(JNIEnv *env, jobject jthis, jbyteArray b, jint len) {
JNIEXPORT jint JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInputStream_nativeRead
(JNIEnv *env, jobject jthis, jbyteArray b, jint off, jint len) {
PRUint32 retval = 0;
nsIInputStream * input = (nsIInputStream*)env->GetLongField(jthis, peerFID);
if (env->ExceptionOccurred()) {
return retval;
}
jbyte * bufElems = env->GetByteArrayElements(b,NULL);
if (env->ExceptionOccurred()) {
jbyte * bufElems = (jbyte*) malloc(sizeof(jbyte)*len);
if (!bufElems) {
return retval;
//nb throw OutOfMemory
}
nsresult res;
res = input->Read((char*)bufElems,(PRUint32)len,&retval);
if (NS_FAILED(res)) {
free(bufElems);
return retval;
}
env->ReleaseByteArrayElements(b,bufElems,0);
env->SetByteArrayRegion(b,off,len,bufElems);
free(bufElems);
return retval;
}
@ -99,9 +103,6 @@ JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInputStream_nativ
return;
}
}
if (env->ExceptionOccurred()) {
return;
}
nsIInputStream * input = (nsIInputStream*)env->GetLongField(jthis, peerFID);
if (input) {
input->AddRef();

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

@ -14,7 +14,7 @@
* Inc. All Rights Reserved.
*/
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
#include <jni.h>
/* Header for class org_mozilla_pluglet_mozilla_PlugletInputStream */
#ifndef _Included_org_mozilla_pluglet_mozilla_PlugletInputStream
@ -41,14 +41,6 @@ JNIEXPORT jint JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInputStream_avail
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInputStream_close
(JNIEnv *, jobject);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInputStream
* Method: read
* Signature: ([BI)I
*/
JNIEXPORT jint JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInputStream_read
(JNIEnv *, jobject, jbyteArray, jint);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInputStream
* Method: nativeFinalize
@ -65,6 +57,14 @@ JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInputStream_nativ
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInputStream_nativeInitialize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInputStream
* Method: nativeRead
* Signature: ([BII)I
*/
JNIEXPORT jint JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInputStream_nativeRead
(JNIEnv *, jobject, jbyteArray, jint, jint);
#ifdef __cplusplus
}
#endif

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

@ -0,0 +1,160 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
#include "nsIPluginInstancePeer.h"
#include "PlugletOutputStream.h"
#include "org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl.h"
static jfieldID peerFID = NULL;
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: getMIMEType
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_getMIMEType
(JNIEnv *env, jobject jthis) {
nsIPluginInstancePeer * instancePeer = (nsIPluginInstancePeer*)env->GetLongField(jthis, peerFID);
if (!instancePeer) {
return NULL;
}
nsMIMEType mime;
if(NS_FAILED(instancePeer->GetMIMEType(&mime))) {
return NULL;
}
return env->NewStringUTF((char *)mime);
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: getMode
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_getMode
(JNIEnv *, jobject) {
return 1; //nb
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: getValue
* Signature: (I)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_getValue
(JNIEnv *, jobject, jint) {
return NULL; //nb
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: newStream
* Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/io/OutputStream;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_newStream
(JNIEnv *env, jobject jthis, jstring _type, jstring _target) {
nsMIMEType mimeType = NULL;
if(!(mimeType = (nsMIMEType)env->GetStringUTFChars(_type,NULL))) {
return NULL;
}
const char * target = NULL;
if(!(target = env->GetStringUTFChars(_target,NULL))) {
env->ReleaseStringUTFChars(_type,(char *)mimeType);
return NULL;
}
nsIPluginInstancePeer * instancePeer = NULL;
if(!(instancePeer = (nsIPluginInstancePeer*)env->GetLongField(jthis, peerFID))) {
env->ReleaseStringUTFChars(_type,(char *)mimeType);
env->ReleaseStringUTFChars(_target,target);
return NULL;
}
nsIOutputStream *output = NULL;
if (NS_FAILED(instancePeer->NewStream(mimeType,target,&output))) {
env->ReleaseStringUTFChars(_type,(char *)mimeType);
env->ReleaseStringUTFChars(_target,target);
return NULL;
}
env->ReleaseStringUTFChars(_type,(char *)mimeType);
env->ReleaseStringUTFChars(_target,target);
return PlugletOutputStream::GetJObject(env,output);
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: showStatus
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_showStatus
(JNIEnv *env, jobject jthis, jstring _msg) {
nsIPluginInstancePeer * instancePeer = (nsIPluginInstancePeer*)env->GetLongField(jthis, peerFID);
if (!instancePeer) {
return;
}
const char *msg = NULL;
if(!(msg = env->GetStringUTFChars(_msg,NULL))) {
return;
}
instancePeer->ShowStatus(msg);
env->ReleaseStringUTFChars(_msg,msg);
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: setWindowSize
* Signature: (II)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_setWindowSize
(JNIEnv *env, jobject jthis, jint width, jint height) {
nsIPluginInstancePeer * instancePeer = (nsIPluginInstancePeer*)env->GetLongField(jthis, peerFID);
if (!instancePeer) {
return;
}
instancePeer->SetWindowSize(width,height);
//nb add exception throwing
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: nativeFinalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_nativeFinalize
(JNIEnv *env, jobject jthis) {
nsIPluginInstancePeer * instancePeer = (nsIPluginInstancePeer*)env->GetLongField(jthis, peerFID);
if (instancePeer) {
/*nb do as in java-dom stuff */
NS_RELEASE(instancePeer);
}
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: nativeInitialize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_nativeInitialize
(JNIEnv *env, jobject jthis) {
if(!peerFID) {
peerFID = env->GetFieldID(env->GetObjectClass(jthis),"peer","J");
if (!peerFID) {
return;
}
}
nsIPluginInstancePeer * instancePeer = (nsIPluginInstancePeer*)env->GetLongField(jthis, peerFID);
if (instancePeer) {
instancePeer->AddRef();
}
}

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

@ -0,0 +1,93 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl */
#ifndef _Included_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
#define _Included_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: getMIMEType
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_getMIMEType
(JNIEnv *, jobject);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: getMode
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_getMode
(JNIEnv *, jobject);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: getValue
* Signature: (I)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_getValue
(JNIEnv *, jobject, jint);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: newStream
* Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/io/OutputStream;
*/
JNIEXPORT jobject JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_newStream
(JNIEnv *, jobject, jstring, jstring);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: showStatus
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_showStatus
(JNIEnv *, jobject, jstring);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: setWindowSize
* Signature: (II)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_setWindowSize
(JNIEnv *, jobject, jint, jint);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: nativeFinalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_nativeFinalize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl
* Method: nativeInitialize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInstancePeerImpl_nativeInitialize
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif

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

@ -0,0 +1,91 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
#include "nsIPluginManager.h"
#include "org_mozilla_pluglet_mozilla_PlugletManagerImpl.h"
/*
* Class: org_mozilla_pluglet_mozilla_PlugletManagerImpl
* Method: getValue
* Signature: (I)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_pluglet_mozilla_PlugletManagerImpl_getValue
(JNIEnv *, jobject, jint) {
//nb
return NULL;
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletManagerImpl
* Method: reloadPluglets
* Signature: (Z)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletManagerImpl_reloadPluglets
(JNIEnv *, jobject, jboolean) {
//nb
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletManagerImpl
* Method: userAgent
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_pluglet_mozilla_PlugletManagerImpl_userAgent
(JNIEnv *, jobject) {
//nb
return NULL;
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletManagerImpl
* Method: getURL
* Signature: (Lorg/mozilla/pluglet/PlugletInstance;Ljava/net/URL;Ljava/lang/String;Lorg/mozilla/pluglet/PlugletStreamListener;Ljava/lang/String;Ljava/net/URL;Z)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletManagerImpl_getURL
(JNIEnv *, jobject, jobject, jobject, jstring, jobject, jstring, jobject, jboolean) {
//nb
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletManagerImpl
* Method: postURL
* Signature: (Lorg/mozilla/pluglet/PlugletInstance;Ljava/net/URL;I[BZLjava/lang/String;Lorg/mozilla/pluglet/PlugletStreamListener;Ljava/lang/String;Ljava/net/URL;ZI[B)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletManagerImpl_postURL
(JNIEnv *, jobject, jobject, jobject, jint, jbyteArray, jboolean, jstring, jobject, jstring, jobject, jboolean, jint, jbyteArray) {
//nb
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletManagerImpl
* Method: nativeFinalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletManagerImpl_nativeFinalize
(JNIEnv *, jobject) {
//nb
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletManagerImpl
* Method: nativeInitialize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletManagerImpl_nativeInitialize
(JNIEnv *, jobject) {
//nb
}

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

@ -0,0 +1,84 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_pluglet_mozilla_PlugletManagerImpl */
#ifndef _Included_org_mozilla_pluglet_mozilla_PlugletManagerImpl
#define _Included_org_mozilla_pluglet_mozilla_PlugletManagerImpl
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_mozilla_pluglet_mozilla_PlugletManagerImpl
* Method: getValue
* Signature: (I)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_pluglet_mozilla_PlugletManagerImpl_getValue
(JNIEnv *, jobject, jint);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletManagerImpl
* Method: reloadPluglets
* Signature: (Z)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletManagerImpl_reloadPluglets
(JNIEnv *, jobject, jboolean);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletManagerImpl
* Method: userAgent
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_org_mozilla_pluglet_mozilla_PlugletManagerImpl_userAgent
(JNIEnv *, jobject);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletManagerImpl
* Method: getURL
* Signature: (Lorg/mozilla/pluglet/PlugletInstance;Ljava/net/URL;Ljava/lang/String;Lorg/mozilla/pluglet/PlugletStreamListener;Ljava/lang/String;Ljava/net/URL;Z)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletManagerImpl_getURL
(JNIEnv *, jobject, jobject, jobject, jstring, jobject, jstring, jobject, jboolean);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletManagerImpl
* Method: postURL
* Signature: (Lorg/mozilla/pluglet/PlugletInstance;Ljava/net/URL;I[BZLjava/lang/String;Lorg/mozilla/pluglet/PlugletStreamListener;Ljava/lang/String;Ljava/net/URL;ZI[B)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletManagerImpl_postURL
(JNIEnv *, jobject, jobject, jobject, jint, jbyteArray, jboolean, jstring, jobject, jstring, jobject, jboolean, jint, jbyteArray);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletManagerImpl
* Method: nativeFinalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletManagerImpl_nativeFinalize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletManagerImpl
* Method: nativeInitialize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletManagerImpl_nativeInitialize
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif

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

@ -0,0 +1,104 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
#include "nsIOutputStream.h"
#include "org_mozilla_pluglet_mozilla_PlugletOutputstream.h"
static jfieldID peerFID = NULL;
/*
* Class: org_mozilla_pluglet_mozilla_PlugletOutputStream
* Method: flush
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletOutputStream_flush
(JNIEnv *env, jobject jthis) {
nsIOutputStream * output = NULL;
output = (nsIOutputStream*)env->GetLongField(jthis, peerFID);
if(!output) {
return;
}
output->Flush();
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletOutputStream
* Method: nativeWrite
* Signature: ([BII)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletOutputStream_nativeWrite
(JNIEnv *env, jobject jthis, jbyteArray b, jint off, jint len) {
jbyte *buf = NULL;
if(!(buf = (jbyte*)malloc(sizeof(jbyte)*len))) {
return; //nb throw OutOfMemoryException
}
nsIOutputStream * output = NULL;
output = (nsIOutputStream*)env->GetLongField(jthis, peerFID);
if(!output) {
return;
}
env->GetByteArrayRegion(b,off,len,buf);
PRUint32 tmp;
output->Write(buf,len,&tmp);
free(buf);
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletOutputStream
* Method: nativeFinalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletOutputStream_nativeFinalize
(JNIEnv *env, jobject jthis) {
/* nb do as in java-dom stuff */
nsIOutputStream * output = (nsIOutputStream*)env->GetLongField(jthis, peerFID);
if(output) {
NS_RELEASE(output);
}
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletOutputStream
* Method: nativeInitialize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletOutputStream_nativeInitialize
(JNIEnv *env, jobject jthis) {
if(!peerFID) {
peerFID = env->GetFieldID(env->GetObjectClass(jthis),"peer","J");
if (!peerFID) {
return;
}
}
nsIOutputStream * output = (nsIOutputStream*)env->GetLongField(jthis, peerFID);
if (output) {
output->AddRef();
}
}
/*
* Class: org_mozilla_pluglet_mozilla_PlugletOutputStream
* Method: close
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletOutputStream_close
(JNIEnv *env, jobject jthis) {
nsIOutputStream * output = (nsIOutputStream*)env->GetLongField(jthis, peerFID);
if (output) {
NS_RELEASE(output);
env->SetLongField(jthis, peerFID,0);
}
}

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

@ -0,0 +1,69 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_mozilla_pluglet_mozilla_PlugletOutputStream */
#ifndef _Included_org_mozilla_pluglet_mozilla_PlugletOutputStream
#define _Included_org_mozilla_pluglet_mozilla_PlugletOutputStream
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_mozilla_pluglet_mozilla_PlugletOutputStream
* Method: flush
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletOutputStream_flush
(JNIEnv *, jobject);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletOutputStream
* Method: close
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletOutputStream_close
(JNIEnv *, jobject);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletOutputStream
* Method: nativeWrite
* Signature: ([BII)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletOutputStream_nativeWrite
(JNIEnv *, jobject, jbyteArray, jint, jint);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletOutputStream
* Method: nativeFinalize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletOutputStream_nativeFinalize
(JNIEnv *, jobject);
/*
* Class: org_mozilla_pluglet_mozilla_PlugletOutputStream
* Method: nativeInitialize
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletOutputStream_nativeInitialize
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif

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

@ -15,7 +15,7 @@
*/
#include "nsIPluginStreamInfo.h"
#include "org_mozilla_pluglet_mozilla_PlugletStreamInfoImpl.h"
#include "ByteRanges.h"
static jfieldID peerFID = NULL;
/*
@ -117,8 +117,14 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_pluglet_mozilla_PlugletStreamInfoImpl
* Signature: (Lorg/mozilla/pluglet/mozilla/ByteRanges;)V
*/
JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletStreamInfoImpl_requestRead
(JNIEnv *, jobject, jobject) {
/* nb let's do it */
(JNIEnv *env, jobject jthis, jobject object) {
nsIPluginStreamInfo * streamInfo = (nsIPluginStreamInfo*)env->GetLongField(jthis, peerFID);
if (!streamInfo) {
return;
}
nsByteRange* range = ByteRanges::GetByteRanges(env,object);
streamInfo->RequestRead(range);
ByteRanges::FreeByteRanges(range);
}
/*

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

@ -17,6 +17,7 @@
#include "Pluglet.h"
#include "nsIServiceManager.h"
#include "prenv.h"
#include "PlugletManager.h"
static NS_DEFINE_IID(kIPluginIID,NS_IPLUGIN_IID);
static NS_DEFINE_CID(kPluginCID,NS_PLUGIN_CID);
@ -25,6 +26,11 @@ static NS_DEFINE_IID(kIJVMManagerIID,NS_IJVMMANAGER_IID);
static NS_DEFINE_CID(kJVMManagerCID,NS_JVMMANAGER_CID);
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
static NS_DEFINE_IID(kIPluginManagerIID, NS_IPLUGINMANAGER_IID);
static NS_DEFINE_CID(kPluginManagerCID, NS_PLUGINMANAGER_CID);
#define PLUGIN_MIME_DESCRIPTION "*:*:Pluglet Engine"
@ -33,6 +39,9 @@ int PlugletEngine::objectCount = 0;
PlugletsDir * PlugletEngine::dir = NULL;
PRInt32 PlugletEngine::lockCount = 0;
PlugletEngine * PlugletEngine::engine = NULL;
nsIPluginManager *PlugletEngine::pluginManager = NULL;
jobject PlugletEngine::plugletManager = NULL;
NS_IMPL_ISUPPORTS(PlugletEngine,kIPluginIID);
NS_METHOD PlugletEngine::Initialize(void) {
//nb ???
@ -90,20 +99,21 @@ PlugletEngine::PlugletEngine(nsISupports* aService) {
NS_INIT_REFCNT();
dir = new PlugletsDir();
nsresult res = NS_OK;
#if 0
nsIServiceManager *sm;
res = aService->QueryInterface(nsIServiceManager::GetIID(),(void**)&sm);
if (NS_FAILED(res)) {
jvmManager = NULL;
return;
}
res = sm->GetService(kPluginManagerCID,kIPluginManagerIID,(nsISupports**)&pluginManager);
#if 0
res = sm->GetService(kJVMManagerCID,kIJVMManagerIID,(nsISupports**)&jvmManager);
//nb
if (NS_FAILED(res)) {
jvmManager = NULL;
}
NS_RELEASE(sm);
#endif
NS_RELEASE(sm);
engine = this;
objectCount++;
}
@ -128,8 +138,6 @@ static void StartJVM() {
vm_args.version = 0x00010001;
JNI_GetDefaultJavaVMInitArgs(&vm_args);
/* Append USER_CLASSPATH to the default system class path */
//nb todo urgent
sprintf(classpath, "%s%c%s",
vm_args.classpath, PATH_SEPARATOR, PR_GetEnv("CLASSPATH"));
printf("-- classpath %s\n",classpath);
@ -159,8 +167,10 @@ JNIEnv * PlugletEngine::GetJNIEnv(void) {
}
jobject PlugletEngine::GetPlugletManager(void) {
//nb todo urgent
return NULL;
if (!plugletManager) {
plugletManager = PlugletManager::GetJObject(pluginManager);
}
return plugletManager;
}
PlugletEngine * PlugletEngine::GetEngine(void) {

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

@ -18,6 +18,7 @@
#include "nsplugin.h"
#include "jni.h"
#include "nsJVMManager.h"
#include "nsIPluginManager.h"
#include "PlugletsDir.h"
class PlugletEngine : public nsIPlugin {
@ -46,6 +47,8 @@ class PlugletEngine : public nsIPlugin {
static PlugletsDir *dir;
static PlugletEngine * engine;
//nb static nsJVMManager * jvmManager;
static nsIPluginManager *pluginManager;
static jobject plugletManager;
};
#endif /* __PlugletEngine_h__ */

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

@ -15,8 +15,8 @@
*/
#ifndef __PlugletInputStream_h__
#define __PlugletInputStream_h__
#include "jni.h"
#include "nsIInputStream.h"
#include "jni.h"
class PlugletInputStream {
public:

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

@ -16,6 +16,7 @@
#include "PlugletInstance.h"
#include "PlugletEngine.h"
#include "PlugletStreamListener.h"
#include "PlugletInstancePeer.h"
jmethodID PlugletInstance::initializeMID = NULL;
jmethodID PlugletInstance::startMID = NULL;
@ -38,6 +39,7 @@ PlugletInstance::PlugletInstance(jobject object) {
PlugletInstance::~PlugletInstance() {
PlugletEngine::GetJNIEnv()->DeleteGlobalRef(jthis);
NS_RELEASE(peer);
}
NS_METHOD PlugletInstance::HandleEvent(nsPluginEvent* event, PRBool* handled) {
@ -46,9 +48,9 @@ NS_METHOD PlugletInstance::HandleEvent(nsPluginEvent* event, PRBool* handled) {
}
NS_METHOD PlugletInstance::Initialize(nsIPluginInstancePeer* _peer) {
JNIEnv *env = PlugletEngine::GetJNIEnv();
if (!printMID) {
//nb check for null after each and every JNI call
JNIEnv *env = PlugletEngine::GetJNIEnv();
jclass clazz = env->FindClass("org/mozilla/pluglet/PlugletInstance");
initializeMID = env->GetMethodID(clazz,"initialize","(Lorg/mozilla/pluglet/mozilla/PlugletInstancePeer;)V");
startMID = env->GetMethodID(clazz,"start","()V");
@ -60,7 +62,11 @@ NS_METHOD PlugletInstance::Initialize(nsIPluginInstancePeer* _peer) {
}
peer = _peer;
peer->AddRef();
//nb call java
jobject obj = PlugletInstancePeer::GetJObject(peer);
if (!obj) {
return NS_ERROR_FAILURE;
}
env->CallVoidMethod(jthis,initializeMID,obj);
return NS_OK;
}

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

@ -0,0 +1,64 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
#include "nsISupports.h"
#include "PlugletInstancePeer.h"
#include "PlugletEngine.h"
jclass PlugletInstancePeer::clazz = NULL;
jmethodID PlugletInstancePeer::initMID = NULL;
void PlugletInstancePeer::Initialize(void) {
JNIEnv * env = PlugletEngine::GetJNIEnv();
clazz = env->FindClass("org/mozilla/pluglet/mozilla/PlugletInstancePeerImpl");
if (env->ExceptionOccurred()) {
env->ExceptionDescribe();
clazz = NULL;
return;
}
clazz = (jclass) env->NewGlobalRef(clazz);
initMID = env->GetMethodID(clazz,"<init>","(J)V");
if (env->ExceptionOccurred()
|| !initMID) {
env->ExceptionDescribe();
clazz = NULL;
return;
}
}
void PlugletInstancePeer::Destroy(void) {
//nb who gonna cal it?
JNIEnv * env = PlugletEngine::GetJNIEnv();
if(clazz) {
env->DeleteGlobalRef(clazz);
}
}
jobject PlugletInstancePeer::GetJObject(const nsIPluginInstancePeer *stream) {
jobject res = NULL;
JNIEnv *env = PlugletEngine::GetJNIEnv();
if(!clazz) {
Initialize();
if (! clazz) {
return NULL;
}
}
res = env->NewObject(clazz,initMID,(jlong)stream);
if (env->ExceptionOccurred()) {
env->ExceptionDescribe();
res = NULL;
}
return res;
}

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

@ -0,0 +1,30 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
#ifndef __PlugletInstancePeer_h__
#define __PlugletInstancePeer_h__
#include "nsIPluginInstancePeer.h"
#include "jni.h"
class PlugletInstancePeer {
public:
static jobject GetJObject(const nsIPluginInstancePeer *instancePeer);
private:
static void Initialize(void);
static void Destroy(void);
static jclass clazz;
static jmethodID initMID;
};
#endif /* __PlugletInputStream_h__ */

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

@ -0,0 +1,63 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
#include "PlugletManager.h"
#include "PlugletEngine.h"
jclass PlugletManager::clazz = NULL;
jmethodID PlugletManager::initMID = NULL;
void PlugletManager::Initialize(void) {
JNIEnv * env = PlugletEngine::GetJNIEnv();
clazz = env->FindClass("org/mozilla/pluglet/mozilla/PlugletManagerImpl");
if (env->ExceptionOccurred()) {
env->ExceptionDescribe();
clazz = NULL;
return;
}
clazz = (jclass) env->NewGlobalRef(clazz);
initMID = env->GetMethodID(clazz,"<init>","(J)V");
if (env->ExceptionOccurred()
|| !initMID) {
env->ExceptionDescribe();
clazz = NULL;
return;
}
}
void PlugletManager::Destroy(void) {
//nb who gonna cal it?
JNIEnv * env = PlugletEngine::GetJNIEnv();
if(clazz) {
env->DeleteGlobalRef(clazz);
}
}
jobject PlugletManager::GetJObject(const nsIPluginManager *stream) {
jobject res = NULL;
JNIEnv *env = PlugletEngine::GetJNIEnv();
if(!clazz) {
Initialize();
if (! clazz) {
return NULL;
}
}
res = env->NewObject(clazz,initMID,(jlong)stream);
if (env->ExceptionOccurred()) {
env->ExceptionDescribe();
res = NULL;
}
return res;
}

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

@ -0,0 +1,30 @@
/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
* Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
* Inc. All Rights Reserved.
*/
#ifndef __PlugletManager_h__
#define __PlugletManager_h__
#include "nsIPluginManager.h"
#include "jni.h"
class PlugletManager {
public:
static jobject GetJObject(const nsIPluginManager *instancePeer);
private:
static void Initialize(void);
static void Destroy(void);
static jclass clazz;
static jmethodID initMID;
};
#endif /* __PlugletManager_h__ */

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

@ -37,7 +37,7 @@ void PlugletStreamInfo::Initialize(void) {
}
void PlugletStreamInfo::Destroy(void) {
//nb who gonna call it
//nb who gonna call it?
JNIEnv * env = PlugletEngine::GetJNIEnv();
if (clazz) {
env->DeleteGlobalRef(clazz);

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

@ -1,93 +1,95 @@
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
# Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
# Inc. All Rights Reserved.
# -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1999 Netscape Communications Corporation. All Rights
# Reserved.
IGNORE_MANIFEST=1
#//------------------------------------------------------------------------
#//
#// Makefile to build
#//
#//------------------------------------------------------------------------
MODULE = nppluglet
LIBRARY_NAME = nppluglet
DEPTH= ..\..\..\
REQUIRES = java plug xpcom raptor oji
OBJS = \
.\$(OBJDIR)\Pluglet.obj \
.\$(OBJDIR)\PlugletEngine.obj \
.\$(OBJDIR)\PlugletList.obj \
.\$(OBJDIR)\PlugletLoader.obj \
.\$(OBJDIR)\PlugletsDir.obj \
.\$(OBJDIR)\PlugletInstance.obj \
.\$(OBJDIR)\PlugletStreamListener.obj \
.\$(OBJDIR)\PlugletStreamInfo.obj \
.\$(OBJDIR)\PlugletInputStream.obj
MAKE_OBJ_TYPE = DLL
#//------------------------------------------------------------------------
#//
#// Define any Public Targets here (ie. PROGRAM, LIBRARY, DLL, ...)
#// (these must be defined before the common makefiles are included)
#//
#//------------------------------------------------------------------------
DLLNAME=nppluglet
PDBFILE=nppluglet.pdb
MAPFILE=nppluglet.map
DEFFILE=PlugletEngine.def
RESFILE=PlugletEngine.res
DLL = .\$(OBJDIR)\$(DLLNAME).dll
#//------------------------------------------------------------------------
#//
#// Define any local options for the make tools
#// (ie. LCFLAGS, LLFLAGS, LLIBS, LINCS)
#//
#//------------------------------------------------------------------------
LLIBS=$(LLIBS) $(LIBNSPR) $(DIST)\lib\xpcom.lib $(DIST)\lib\oji.lib $(JDKHOME)\lib\jvm.lib
#//------------------------------------------------------------------------
#//
#// Include the common makefile rules
#//
#//------------------------------------------------------------------------
include <$(DEPTH)/config/rules.mak>
install:: $(DLL)
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).dll $(DIST)\bin\plugins
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (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 Initial Developer of the Original Code is Sun Microsystems,
# Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems,
# Inc. All Rights Reserved.
# -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1999 Netscape Communications Corporation. All Rights
# Reserved.
IGNORE_MANIFEST=1
#//------------------------------------------------------------------------
#//
#// Makefile to build
#//
#//------------------------------------------------------------------------
MODULE = nppluglet
LIBRARY_NAME = nppluglet
DEPTH= ..\..\..\
REQUIRES = java plug xpcom raptor oji
OBJS = \
.\$(OBJDIR)\Pluglet.obj \
.\$(OBJDIR)\PlugletEngine.obj \
.\$(OBJDIR)\PlugletList.obj \
.\$(OBJDIR)\PlugletLoader.obj \
.\$(OBJDIR)\PlugletsDir.obj \
.\$(OBJDIR)\PlugletInstance.obj \
.\$(OBJDIR)\PlugletStreamListener.obj \
.\$(OBJDIR)\PlugletStreamInfo.obj \
.\$(OBJDIR)\PlugletInstancePeer.obj \
.\$(OBJDIR)\PlugletManager.obj \
.\$(OBJDIR)\PlugletInputStream.obj
MAKE_OBJ_TYPE = DLL
#//------------------------------------------------------------------------
#//
#// Define any Public Targets here (ie. PROGRAM, LIBRARY, DLL, ...)
#// (these must be defined before the common makefiles are included)
#//
#//------------------------------------------------------------------------
DLLNAME=nppluglet
PDBFILE=nppluglet.pdb
MAPFILE=nppluglet.map
DEFFILE=PlugletEngine.def
RESFILE=PlugletEngine.res
DLL = .\$(OBJDIR)\$(DLLNAME).dll
#//------------------------------------------------------------------------
#//
#// Define any local options for the make tools
#// (ie. LCFLAGS, LLFLAGS, LLIBS, LINCS)
#//
#//------------------------------------------------------------------------
LLIBS=$(LLIBS) $(LIBNSPR) $(DIST)\lib\xpcom.lib $(DIST)\lib\oji.lib $(JDKHOME)\lib\jvm.lib
#//------------------------------------------------------------------------
#//
#// Include the common makefile rules
#//
#//------------------------------------------------------------------------
include <$(DEPTH)/config/rules.mak>
install:: $(DLL)
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).dll $(DIST)\bin\plugins

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

@ -55,6 +55,16 @@ class TestInstance implements PlugletInstance{
public void initialize(PlugletInstancePeer peer) {
org.mozilla.util.Debug.print("--TestInstance.initialize\n");
peer.showStatus("Hello world");
try {
OutputStreamWriter out = new OutputStreamWriter(peer.newStream("text/plain","test"));
String msg = "Hello, world";
out.write(msg,0,msg.length());
out.flush();
out.close();
} catch (Exception e) {
;
}
}
/**
* Called to instruct the pluglet instance to start. This will be called after