mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-04 07:40:42 +00:00
First Checked In.
This commit is contained in:
parent
9fb7d1cfd6
commit
2ea1c49ef3
js/ref
157
js/ref/liveconnect/macbuild/JavaSession/JavaSession.cpp
Normal file
157
js/ref/liveconnect/macbuild/JavaSession/JavaSession.cpp
Normal file
@ -0,0 +1,157 @@
|
||||
/* -*- 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) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
JavaSession.cpp
|
||||
|
||||
Uses MRJ to open a Java VM.
|
||||
|
||||
by Patrick C. Beard.
|
||||
*/
|
||||
|
||||
#include "JavaSession.h"
|
||||
|
||||
#include <Errors.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <Resources.h>
|
||||
|
||||
extern "C" {
|
||||
|
||||
static void java_stdout(JMSessionRef session, const void *message, UInt32 messageLengthInBytes);
|
||||
static void java_stderr(JMSessionRef session, const void *message, UInt32 messageLengthInBytes);
|
||||
static SInt32 java_stdin(JMSessionRef session, void *buffer, SInt32 maxBufferLength);
|
||||
static Boolean java_exit(JMSessionRef session, int value);
|
||||
static Boolean java_authenticate(JMSessionRef session, const char *url, const char *realm,
|
||||
char userName[255], char password[255]);
|
||||
static void java_lowmem(JMSessionRef session);
|
||||
|
||||
}
|
||||
|
||||
static JMSessionCallbacks callbacks = {
|
||||
kJMVersion, /* should be set to kJMVersion */
|
||||
&java_stdout, /* JM will route "stdout" to this function. */
|
||||
&java_stderr, /* JM will route "stderr" to this function. */
|
||||
&java_stdin, /* read from console - can be nil for default behavior (no console IO) */
|
||||
&java_exit, /* handle System.exit(int) requests */
|
||||
&java_authenticate, /* present basic authentication dialog */
|
||||
&java_lowmem /* Low Memory notification Proc */
|
||||
};
|
||||
|
||||
JavaSession::JavaSession() : mSession(NULL)
|
||||
{
|
||||
OSStatus status = ::JMOpenSession(&mSession, /* eDisableJITC */ eJManager2Defaults, eCheckRemoteCode,
|
||||
&callbacks, kTextEncodingMacRoman, NULL);
|
||||
checkStatus(status);
|
||||
}
|
||||
|
||||
JavaSession::~JavaSession()
|
||||
{
|
||||
if (mSession != NULL) {
|
||||
OSStatus status = ::JMCloseSession(mSession);
|
||||
checkStatus(status);
|
||||
}
|
||||
}
|
||||
|
||||
JNIEnv* JavaSession::getEnv()
|
||||
{
|
||||
return ::JMGetCurrentEnv(mSession);
|
||||
}
|
||||
|
||||
static StringPtr c2p(const char* str, StringPtr pstr)
|
||||
{
|
||||
unsigned char len = strlen(str);
|
||||
memcpy(pstr + 1, str, len);
|
||||
*pstr = len;
|
||||
return pstr;
|
||||
}
|
||||
|
||||
jclass JavaSession::getClass(const char* className)
|
||||
{
|
||||
JNIEnv* env = getEnv();
|
||||
jclass result = env->FindClass(className);
|
||||
if (result == NULL) throw OSStatusException(fnfErr);
|
||||
/* if (result == NULL) {
|
||||
Str255 pClassName;
|
||||
c2p(className, pClassName);
|
||||
Handle classHandle = ::GetNamedResource(ClassResType, pClassName);
|
||||
if (classHandle != NULL) {
|
||||
::HLock(classHandle);
|
||||
result = env->DefineClass(className, NULL, (signed char*)*classHandle, ::GetHandleSize(classHandle));
|
||||
::ReleaseResource(classHandle);
|
||||
}
|
||||
} */
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a Mac-style path name to the MRJ class path.
|
||||
*/
|
||||
void JavaSession::addClassPath(const char* jarFilePath)
|
||||
{
|
||||
Str255 pJarFilePath;
|
||||
FSSpec jarFileSpec;
|
||||
OSStatus status = FSMakeFSSpec( 0, 0, // use "current working directory"
|
||||
c2p(jarFilePath, pJarFilePath),
|
||||
&jarFileSpec);
|
||||
checkStatus(status);
|
||||
status = JMAddToClassPath(mSession, &jarFileSpec);
|
||||
checkStatus(status);
|
||||
}
|
||||
|
||||
// OBLIGATORY JMSession callbacks.
|
||||
|
||||
static void java_stdout(JMSessionRef session, const void *message, UInt32 messageLengthInBytes)
|
||||
{
|
||||
char* msg = (char*)message;
|
||||
while (messageLengthInBytes--) {
|
||||
char c = *msg++;
|
||||
if (c == '\r')
|
||||
c = '\n';
|
||||
fputc(c, stdout);
|
||||
}
|
||||
}
|
||||
|
||||
static void java_stderr(JMSessionRef session, const void *message, UInt32 messageLengthInBytes)
|
||||
{
|
||||
char* msg = (char*)message;
|
||||
while (messageLengthInBytes--) {
|
||||
char c = *msg++;
|
||||
if (c == '\r')
|
||||
c = '\n';
|
||||
fputc(c, stderr);
|
||||
}
|
||||
}
|
||||
|
||||
static SInt32 java_stdin(JMSessionRef session, void *buffer, SInt32 maxBufferLength)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
static Boolean java_exit(JMSessionRef session, int value) { return false; }
|
||||
|
||||
static Boolean java_authenticate(JMSessionRef session, const char *url, const char *realm,
|
||||
char userName[255], char password[255])
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
static void java_lowmem(JMSessionRef session)
|
||||
{
|
||||
}
|
46
js/ref/liveconnect/macbuild/JavaSession/JavaSession.h
Normal file
46
js/ref/liveconnect/macbuild/JavaSession/JavaSession.h
Normal file
@ -0,0 +1,46 @@
|
||||
/* -*- 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) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
JavaSession.h
|
||||
|
||||
Uses MRJ to open a Java VM.
|
||||
|
||||
by Patrick C. Beard
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <jni.h>
|
||||
#include <JManager.h>
|
||||
|
||||
#include "OSStatusException.h"
|
||||
|
||||
class JavaSession {
|
||||
public:
|
||||
JavaSession();
|
||||
~JavaSession();
|
||||
|
||||
JNIEnv* getEnv();
|
||||
jclass getClass(const char* className);
|
||||
|
||||
void addClassPath(const char* jarFilePath);
|
||||
|
||||
private:
|
||||
JMSessionRef mSession;
|
||||
};
|
46
js/ref/liveconnect/macbuild/JavaSession/OSStatusException.h
Normal file
46
js/ref/liveconnect/macbuild/JavaSession/OSStatusException.h
Normal file
@ -0,0 +1,46 @@
|
||||
/* -*- 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) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
OSStatusException.h
|
||||
|
||||
MacOS OSStatus exception.
|
||||
|
||||
by Patrick C. Beard.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __TYPES__
|
||||
#include <Types.h>
|
||||
#endif
|
||||
|
||||
class OSStatusException {
|
||||
public:
|
||||
OSStatusException(OSStatus status) : mStatus(status) {}
|
||||
OSStatus getStatus() { return mStatus; }
|
||||
|
||||
private:
|
||||
OSStatus mStatus;
|
||||
};
|
||||
|
||||
inline void checkStatus(OSStatus status)
|
||||
{
|
||||
if (status != noErr)
|
||||
throw OSStatusException(status);
|
||||
}
|
BIN
js/ref/liveconnect/macbuild/LiveConnectShell.mcp
Normal file
BIN
js/ref/liveconnect/macbuild/LiveConnectShell.mcp
Normal file
Binary file not shown.
4
js/ref/liveconnect/macbuild/LiveConnectShell.prefix
Normal file
4
js/ref/liveconnect/macbuild/LiveConnectShell.prefix
Normal file
@ -0,0 +1,4 @@
|
||||
#define XP_MAC 1
|
||||
#define JSFILE 1
|
||||
#define LIVECONNECT 1
|
||||
// #define JS_THREADSAFE 1
|
2
js/ref/macbuild/JSRef.prefix
Normal file
2
js/ref/macbuild/JSRef.prefix
Normal file
@ -0,0 +1,2 @@
|
||||
#define XP_MAC 1
|
||||
#define JSFILE 1
|
Loading…
x
Reference in New Issue
Block a user