From 1c7ec1a23d8ae36484ad3e1ed98ccc8d0239ebfc Mon Sep 17 00:00:00 2001 From: fur Date: Mon, 22 Jun 1998 17:23:57 +0000 Subject: [PATCH] [Doesn't build with mozilla] Java files associated with new LiveConnect. --- .../netscape/javascript/JSException.java | 56 ++++++++ .../classes/netscape/javascript/JSObject.java | 131 ++++++++++++++++++ .../classes/netscape/javascript/JSProxy.java | 37 +++++ .../classes/netscape/javascript/JSUtil.java | 38 +++++ 4 files changed, 262 insertions(+) create mode 100644 js/ref/liveconnect/classes/netscape/javascript/JSException.java create mode 100644 js/ref/liveconnect/classes/netscape/javascript/JSObject.java create mode 100644 js/ref/liveconnect/classes/netscape/javascript/JSProxy.java create mode 100644 js/ref/liveconnect/classes/netscape/javascript/JSUtil.java diff --git a/js/ref/liveconnect/classes/netscape/javascript/JSException.java b/js/ref/liveconnect/classes/netscape/javascript/JSException.java new file mode 100644 index 00000000000..4ae02ffcb77 --- /dev/null +++ b/js/ref/liveconnect/classes/netscape/javascript/JSException.java @@ -0,0 +1,56 @@ +/* Insert copyright and license here 19** */ + +package netscape.javascript; + +/** + * JSException is an exception which is thrown when JavaScript code + * returns an error. + */ + +public +class JSException extends Exception { + String filename; + int lineno; + String source; + int tokenIndex; + + /** + * Constructs a JSException without a detail message. + * A detail message is a String that describes this particular exception. + */ + public JSException() { + super(); + filename = "unknown"; + lineno = 0; + source = ""; + tokenIndex = 0; + } + + /** + * Constructs a JSException with a detail message. + * A detail message is a String that describes this particular exception. + * @param s the detail message + */ + public JSException(String s) { + super(s); + filename = "unknown"; + lineno = 0; + source = ""; + tokenIndex = 0; + } + + /** + * Constructs a JSException with a detail message and all the + * other info that usually comes with a JavaScript error. + * @param s the detail message + */ + public JSException(String s, String filename, int lineno, + String source, int tokenIndex) { + super(s); + this.filename = filename; + this.lineno = lineno; + this.source = source; + this.tokenIndex = tokenIndex; + } +} + diff --git a/js/ref/liveconnect/classes/netscape/javascript/JSObject.java b/js/ref/liveconnect/classes/netscape/javascript/JSObject.java new file mode 100644 index 00000000000..f93e51ace74 --- /dev/null +++ b/js/ref/liveconnect/classes/netscape/javascript/JSObject.java @@ -0,0 +1,131 @@ +/* -*- Mode: C; tab-width: 4; -*- */ + +/* Insert copyright and license here 19** */ + +/* more doc todo: + * threads + * gc + * + * + */ + +package netscape.javascript; + +import java.applet.Applet; + +/** + * JSObject allows Java to manipulate objects that are + * defined in JavaScript. + * Values passed from Java to JavaScript are converted as + * follows: + * Values passed from JavaScript to Java are converted as follows: + * This means that all JavaScript values show up as some kind + * of java.lang.Object in Java. In order to make much use of them, + * you will have to cast them to the appropriate subclass of Object, + * e.g. (String) window.getMember("name"); or + * (JSObject) window.getMember("document");. + */ +public final class JSObject { + /* the internal object data */ + private int internal; + + /** + * initialize + */ + private static native void initClass(); + static { + System.loadLibrary("LiveConnect"); + initClass(); + } + + /** + * it is illegal to construct a JSObject manually + */ + private JSObject(int jsobj_addr) {internal = jsobj_addr;} + + /** + * Retrieves a named member of a JavaScript object. + * Equivalent to "this.name" in JavaScript. + */ + public native Object getMember(String name); + + /** + * Retrieves an indexed member of a JavaScript object. + * Equivalent to "this[index]" in JavaScript. + */ +// public Object getMember(int index) { return getSlot(index); } + public native Object getSlot(int index); + + /** + * Sets a named member of a JavaScript object. + * Equivalent to "this.name = value" in JavaScript. + */ + public native void setMember(String name, Object value); + + /** + * Sets an indexed member of a JavaScript object. + * Equivalent to "this[index] = value" in JavaScript. + */ +// public void setMember(int index, Object value) { +// setSlot(index, value); +// } + public native void setSlot(int index, Object value); + + /** + * Removes a named member of a JavaScript object. + */ + public native void removeMember(String name); + + /** + * Calls a JavaScript method. + * Equivalent to "this.methodName(args[0], args[1], ...)" in JavaScript. + */ + public native Object call(String methodName, Object args[]); + + /** + * Evaluates a JavaScript expression. The expression is a string + * of JavaScript source code which will be evaluated in the context + * given by "this". + */ + public native Object eval(String s); + + /** + * Converts a JSObject to a String. + */ + public native String toString(); + + // should use some sort of identifier rather than String + // is "property" the right word? + // native String[] listProperties(); + + + /** + * get a JSObject for the window containing the given applet + */ + public static native JSObject getWindow(Applet applet); + + /** + * Finalization decrements the reference count on the corresponding + * JavaScript object. + */ + protected native void finalize(); +} diff --git a/js/ref/liveconnect/classes/netscape/javascript/JSProxy.java b/js/ref/liveconnect/classes/netscape/javascript/JSProxy.java new file mode 100644 index 00000000000..ee266c4a538 --- /dev/null +++ b/js/ref/liveconnect/classes/netscape/javascript/JSProxy.java @@ -0,0 +1,37 @@ +/* -*- Mode: Java; 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. + */ +/* ** */ +/** + * The JSProxy interface allows applets and plugins to + * share javascript contexts. + */ + +package netscape.javascript; +import java.applet.Applet; + +public interface JSProxy { + Object getMember(JSObject jso, String name); + Object getSlot(JSObject jso, int index); + void setMember(JSObject jso, String name, Object value); + void setSlot(JSObject jso, int index, Object value); + void removeMember(JSObject jso, String name); + Object call(JSObject jso, String methodName, Object args[]); + Object eval(JSObject jso, String s); + String toString(JSObject jso); + JSObject getWindow(Applet applet); +} diff --git a/js/ref/liveconnect/classes/netscape/javascript/JSUtil.java b/js/ref/liveconnect/classes/netscape/javascript/JSUtil.java new file mode 100644 index 00000000000..6d3cab84048 --- /dev/null +++ b/js/ref/liveconnect/classes/netscape/javascript/JSUtil.java @@ -0,0 +1,38 @@ +/* -*- Mode: Java; 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. + */ +/* ** */ + +package netscape.javascript; +import java.io.*; + +public class JSUtil { + + /* Return the stack trace of an exception or error as a String */ + public static String getStackTrace(Throwable t) { + ByteArrayOutputStream captureStream; + PrintStream p; + + captureStream = new ByteArrayOutputStream(); + p = new PrintStream(captureStream); + + t.printStackTrace(p); + p.flush(); + + return captureStream.toString(); + } +}