mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-04 02:57:38 +00:00
213 lines
6.5 KiB
C++
213 lines
6.5 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* 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) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// NETSCAPE JAVA VM PLUGIN EXTENSIONS
|
|
//
|
|
// This interface allows a Java virtual machine to be plugged into
|
|
// Communicator to implement the APPLET tag and host applets.
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef nsjvm_h___
|
|
#define nsjvm_h___
|
|
|
|
#include "nsplugin.h"
|
|
#include "jri.h" // XXX for now
|
|
#include "jni.h"
|
|
#include "prthread.h"
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Java VM Plugin Manager
|
|
// This interface defines additional entry points that are available
|
|
// to JVM plugins for browsers that support JVM plugins.
|
|
|
|
class NPIJVMPluginManager : public NPIPluginManager {
|
|
public:
|
|
|
|
virtual void NP_LOADDS
|
|
BeginWaitCursor(void) = 0;
|
|
|
|
virtual void NP_LOADDS
|
|
EndWaitCursor(void) = 0;
|
|
|
|
virtual const char* NP_LOADDS
|
|
GetProgramPath(void) = 0;
|
|
|
|
virtual const char* NP_LOADDS
|
|
GetTempDirPath(void) = 0;
|
|
|
|
enum FileNameType { SIGNED_APPLET_DBNAME, TEMP_FILENAME };
|
|
|
|
virtual nsresult NP_LOADDS
|
|
GetFileName(const char* fn, FileNameType type,
|
|
char* resultBuf, PRUint32 bufLen) = 0;
|
|
|
|
virtual nsresult NP_LOADDS
|
|
NewTempFileName(const char* prefix, char* resultBuf, PRUint32 bufLen) = 0;
|
|
|
|
virtual PRBool NP_LOADDS
|
|
HandOffJSLock(PRThread* oldOwner, PRThread* newOwner) = 0;
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
// Debugger Stuff (XXX move to subclass)
|
|
|
|
virtual PRBool NP_LOADDS
|
|
SetDebugAgentPassword(PRInt32 pwd) = 0;
|
|
|
|
};
|
|
|
|
#define NP_IJVMPLUGINMANAGER_IID \
|
|
{ /* a1e5ed50-aa4a-11d1-85b2-00805f0e4dfe */ \
|
|
0xa1e5ed50, \
|
|
0xaa4a, \
|
|
0x11d1, \
|
|
{0x85, 0xb2, 0x00, 0x80, 0x5f, 0x0e, 0x4d, 0xfe} \
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
enum JVMStatus {
|
|
JVMStatus_Enabled, // but not Running
|
|
JVMStatus_Disabled, // explicitly disabled
|
|
JVMStatus_Running, // enabled and started
|
|
JVMStatus_Failed // enabled but failed to start
|
|
};
|
|
|
|
enum JVMError {
|
|
JVMError_Ok = NPPluginError_NoError,
|
|
JVMError_Base = 0x1000,
|
|
JVMError_InternalError = JVMError_Base,
|
|
JVMError_NoClasses,
|
|
JVMError_WrongClasses,
|
|
JVMError_JavaError,
|
|
JVMError_NoDebugger
|
|
};
|
|
|
|
enum JVMDebugPort {
|
|
JVMDebugPort_None = 0,
|
|
JVMDebugPort_SharedMemory = -1
|
|
// anything else is a port number
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Java VM Plugin Interface
|
|
// This interface defines additional entry points that a plugin developer needs
|
|
// to implement in order to implement a Java virtual machine plugin.
|
|
|
|
class NPIJVMPlugin : public NPIPlugin {
|
|
public:
|
|
|
|
virtual JVMStatus NP_LOADDS
|
|
StartupJVM() = 0;
|
|
|
|
virtual JVMStatus NP_LOADDS
|
|
ShutdownJVM(PRBool fullShutdown = PR_TRUE) = 0;
|
|
|
|
virtual PRBool NP_LOADDS
|
|
GetJVMEnabled() = 0;
|
|
|
|
virtual void NP_LOADDS
|
|
SetJVMEnabled(PRBool enable) = 0;
|
|
|
|
virtual JVMStatus NP_LOADDS
|
|
GetJVMStatus() = 0;
|
|
|
|
// Find or create a JNIEnv for the specified thread. The thread
|
|
// parameter may be NULL indicating the current thread.
|
|
// XXX JNIEnv*
|
|
virtual JRIEnv* NP_LOADDS
|
|
EnsureExecEnv(PRThread* thread = NULL) = 0;
|
|
|
|
virtual void NP_LOADDS
|
|
AddToClassPath(const char* dirPath) = 0;
|
|
|
|
virtual void NP_LOADDS
|
|
ShowConsole() = 0;
|
|
|
|
virtual void NP_LOADDS
|
|
HideConsole() = 0;
|
|
|
|
virtual PRBool NP_LOADDS
|
|
IsConsoleVisible() = 0;
|
|
|
|
virtual void NP_LOADDS
|
|
PrintToConsole(const char* msg) = 0;
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
// Debugger Stuff (XXX move to subclass)
|
|
|
|
virtual JVMError NP_LOADDS
|
|
StartDebugger(JVMDebugPort port) = 0;
|
|
|
|
};
|
|
|
|
#define NP_IJVMPLUGIN_IID \
|
|
{ /* da6f3bc0-a1bc-11d1-85b1-00805f0e4dfe */ \
|
|
0xda6f3bc0, \
|
|
0xa1bc, \
|
|
0x11d1, \
|
|
{0x85, 0xb1, 0x00, 0x80, 0x5f, 0x0e, 0x4d, 0xfe} \
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// Java VM Plugin Instance Peer Interface
|
|
// This interface provides additional hooks into the plugin manager that allow
|
|
// a plugin to implement the plugin manager's Java virtual machine.
|
|
|
|
enum NPTagAttributeName {
|
|
NPTagAttributeName_Width,
|
|
NPTagAttributeName_Height,
|
|
NPTagAttributeName_Classid,
|
|
NPTagAttributeName_Code,
|
|
NPTagAttributeName_Codebase,
|
|
NPTagAttributeName_Docbase,
|
|
NPTagAttributeName_Archive,
|
|
NPTagAttributeName_Name,
|
|
NPTagAttributeName_MayScript
|
|
};
|
|
|
|
class NPIJVMPluginInstancePeer : public NPIPluginInstancePeer {
|
|
public:
|
|
|
|
// XXX Does this overlap with GetArgNames/GetArgValues?
|
|
// XXX What happens if someone says something like:
|
|
// <object codebase=...> <param name=codebase value=...>
|
|
// Which takes precedent?
|
|
virtual char* NP_LOADDS
|
|
GetAttribute(NPTagAttributeName name) = 0;
|
|
|
|
// XXX reload method?
|
|
|
|
// Returns a unique id for the current document on which the
|
|
// plugin is displayed.
|
|
virtual PRUint32 NP_LOADDS
|
|
GetDocumentID() = 0;
|
|
|
|
};
|
|
|
|
#define NP_IJVMPLUGININSTANCEPEER_IID \
|
|
{ /* 27b42df0-a1bd-11d1-85b1-00805f0e4dfe */ \
|
|
0x27b42df0, \
|
|
0xa1bd, \
|
|
0x11d1, \
|
|
{0x85, 0xb1, 0x00, 0x80, 0x5f, 0x0e, 0x4d, 0xfe} \
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
#endif /* nsjvm_h___ */
|