JNI needs both the jmethodID and return type. Changed API to
[WebKit-https.git] / WebKit / Plugins.subproj / WebJavaPlugIn.h
1 /*
2     WebJavaPlugIn.h
3     Copyright 2004, Apple, Inc. All rights reserved.
4     
5     Public header file.
6 */
7
8 #import <JavaVM/jni.h>
9
10 /*!
11     The Java plug-in adds the following additional methods to facilitate JNI
12     access to Java VM via the plug-in.
13 */
14
15 typedef enum {
16     WebJNIReturnTypeInvalid = 0,
17     WebJNIReturnTypeVoid,
18     WebJNIReturnTypeObject,
19     WebJNIReturnTypeBoolean,
20     WebJNIReturnTypeByte,
21     WebJNIReturnTypeChar,
22     WebJNIReturnTypeShort,
23     WebJNIReturnTypeInt,
24     WebJNIReturnTypeLong,
25     WebJNIReturnTypeFloat,
26     WebJNIReturnTypeDouble
27 } WebJNIReturnType;
28
29 @interface NSObject (WebJavaPlugIn)
30
31 /*!
32     @method webPlugInGetApplet
33     @discusssion This returns the jobject representing the java applet to the
34     WebPlugInContainer.  It should always be called from the AppKit Main Thread.
35     This method is only implemented by the Java plug-in.
36 */
37 - (jobject)webPlugInGetApplet;
38
39 /*!
40     @method webPlugInCallJava:method:returnType:arguments:
41     @param object The Java instance that will receive the method call.
42     @param method The ID of the Java method to call.
43     @param returnType The return type of the Java method.
44     @param args The arguments to use with the method invocation.
45     @discussion Calls to Java from native code should not make direct
46     use of JNI.  Instead they should use this method to dispatch calls to the 
47     Java VM.  This is required to guarantee that the correct thread will receive
48     the call.  webPlugInCallJava:method:returnType:arguments: must always be called from
49     the AppKit main thread.  This method is only implemented by the Java plug-in.
50     @result The result of the method invocation.
51 */
52 - (jvalue)webPlugInCallJava:(jobject)object method:(jmethodID)method returnType:(WebJNIReturnType)returnType arguments:(jvalue*)args;
53
54 @end