mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-29 15:52:07 +00:00
bug=80906
ra=edburns author= Nikolay Igotti Added and removed files - continued previous checkin.
This commit is contained in:
parent
efc7c81088
commit
3aa0b68c56
1
java/pluggable-jvm/wf/build/java/.cvsignore
Normal file
1
java/pluggable-jvm/wf/build/java/.cvsignore
Normal file
@ -0,0 +1 @@
|
||||
.classes.list
|
1
java/pluggable-jvm/wf/build/java/ext/av/.cvsignore
Normal file
1
java/pluggable-jvm/wf/build/java/ext/av/.cvsignore
Normal file
@ -0,0 +1 @@
|
||||
.classes.list
|
33
java/pluggable-jvm/wf/build/java/ext/av/FileListExt.mk
Normal file
33
java/pluggable-jvm/wf/build/java/ext/av/FileListExt.mk
Normal file
@ -0,0 +1,33 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
#
|
||||
# The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
# Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# $Id: FileListExt.mk,v 1.1 2001/07/12 20:25:23 edburns%acm.org Exp $
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
#
|
||||
|
||||
FILES_java = \
|
||||
sun/jvmp/av/WFAppletViewerImpl.java \
|
||||
sun/jvmp/av/AVFactory.java \
|
||||
sun/jvmp/av/WFProxyHandler.java \
|
||||
sun/jvmp/av/WFAppletPanel.java \
|
||||
sun/jvmp/av/AVClassLoader.java \
|
||||
sun/jvmp/av/WFAuthenticatorImpl.java \
|
||||
sun/jvmp/av/protocol/http/Handler.java \
|
||||
sun/jvmp/av/protocol/http/HttpURLConnection.java
|
@ -8,42 +8,40 @@
|
||||
# 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 Original Code is The Waterfall Java Plugin Module
|
||||
#
|
||||
#
|
||||
# The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
# Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# $Id: GNUmakefile,v 1.1 2001/05/10 18:12:22 edburns%acm.org Exp $
|
||||
#
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Nikolay N. Igotti <inn@sparc.spb.su>
|
||||
# $Id: GNUmakefile,v 1.1 2001/07/12 20:25:24 edburns%acm.org Exp $
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
#
|
||||
|
||||
BUILDDIR = ../..
|
||||
JAVASRCDIR = ../../../../java
|
||||
CLASSDESTDIR = ../../../unix/ext/jpav
|
||||
ADDCLASSPATH=../../../unix/classes:../../../unix/ext/jpav
|
||||
PATH_SEP=:
|
||||
CLASSDESTDIR = ../../../unix/ext/av
|
||||
ADDCLASSPATH=../../../unix/classes:../../../unix/ext/av
|
||||
|
||||
include FileListExt.mk
|
||||
|
||||
include $(BUILDDIR)/Defs.gmk
|
||||
include $(BUILDDIR)/Rules.gmk
|
||||
|
||||
all: jpav.jar
|
||||
all: av.jar
|
||||
|
||||
jpav.jar: classes
|
||||
av.jar: classes
|
||||
@if [ -s .classes.list ]; then \
|
||||
echo -n "Creating jpav.jar..."; \
|
||||
echo -n "Creating av.jar..."; \
|
||||
cd $(CLASSDESTDIR); \
|
||||
$(RM) manifest.tmp; \
|
||||
echo "Factory-Class: sun.jvmp.jpav.JavaPluginAVFactory" >> manifest.tmp ; \
|
||||
echo "Protocol-Handlers: sun.jvmp.jpav.protocol.jdk12" >> manifest.tmp ; \
|
||||
$(JAR_CMD) cfm jpav.jar manifest.tmp sun ; \
|
||||
$(MV) jpav.jar .. ;\
|
||||
echo "Factory-Class: sun.jvmp.av.AVFactory" >> manifest.tmp ; \
|
||||
$(JAR_CMD) cfm av.jar manifest.tmp sun ; \
|
||||
$(MV) av.jar .. ;\
|
||||
echo " done."; fi
|
||||
|
||||
|
@ -8,54 +8,50 @@
|
||||
# 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 Original Code is The Waterfall Java Plugin Module
|
||||
#
|
||||
#
|
||||
# The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
# Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# $Id: makefile.win,v 1.1 2001/05/10 18:12:22 edburns%acm.org Exp $
|
||||
#
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Nikolay N. Igotti <inn@sparc.spb.su>
|
||||
# $Id: makefile.win,v 1.1 2001/07/12 20:25:25 edburns%acm.org Exp $
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
#
|
||||
|
||||
BUILDDIR = ..\..
|
||||
JAVASRCDIR = ..\..\..\..\java
|
||||
CLASSDESTDIR = ..\..\..\win32\ext\jpav
|
||||
ADDCLASSPATH=..\..\..\win32\classes;..\..\..\win32\ext\jpav
|
||||
EDBURNS=edburns
|
||||
PATH_SEP=;
|
||||
CLASSDESTDIR = ..\..\..\win32\ext\av
|
||||
ADDCLASSPATH=..\..\..\win32\classes;..\..\..\win32\ext\av
|
||||
|
||||
PKG3=sun.jvmp.jpav
|
||||
PKG4=sun.jvmp.jpav.protocol.jdk12.http
|
||||
PKG15=sun.jvmp.jpav.protocol.jdk12.https
|
||||
PKG16=sun.jvmp.jpav.protocol.jdk12.ftp
|
||||
PKG17=sun.jvmp.jpav.protocol.jdk12.gopher
|
||||
PKG18=sun.jvmp.jpav.protocol.jdk12.jar
|
||||
PKG3=sun.jvmp.av
|
||||
PKG4=sun.jvmp.av.protocol.http
|
||||
PKG15=sun.jvmp.av.protocol.https
|
||||
PKG16=sun.jvmp.av.protocol.ftp
|
||||
PKG17=sun.jvmp.av.protocol.gopher
|
||||
|
||||
!include FileListExt.mk
|
||||
|
||||
# ugly, but nmake is pretty stupid in substitutions
|
||||
CLASSDESTDIR=..\..\..\win32\ext\jpav
|
||||
FILES_class = $(FILES_java:sun/jvmp=../../../win32/ext/jpav/sun/jvmp)
|
||||
CLASSDESTDIR=..\..\..\win32\ext\av
|
||||
FILES_class = $(FILES_java:sun/jvmp=../../../win32/ext/av/sun/jvmp)
|
||||
|
||||
!include $(BUILDDIR)\defs.mk
|
||||
!include $(BUILDDIR)\rules.mk
|
||||
|
||||
all: jpav.jar
|
||||
all: av.jar
|
||||
|
||||
jpav.jar: classes
|
||||
av.jar: classes
|
||||
@IF EXIST manifest.tmp $(DEL) manifest.tmp
|
||||
@ echo Creating jpav.jar...
|
||||
@ echo Creating av.jar...
|
||||
@ cd $(CLASSDESTDIR)
|
||||
@$(JAR_CMD) cfm jpav.jar <<manifest.tmp sun
|
||||
Factory-Class: sun.jvmp.jpav.JavaPluginAVFactory
|
||||
Protocol-Handlers: sun.jvmp.jpav.protocol.jdk12
|
||||
@$(JAR_CMD) cfm av.jar <<manifest.tmp sun
|
||||
Factory-Class: sun.jvmp.av.AVFactory
|
||||
<<
|
||||
-@$(DEL) ..\jpav.jar manifest.tmp
|
||||
@$(MV) jpav.jar ..
|
||||
-@$(DEL) ..\av.jar manifest.tmp
|
||||
@$(MV) av.jar ..
|
||||
@ echo Done
|
||||
|
@ -1,46 +0,0 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
#
|
||||
# The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
# Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# $Id: FileListExt.mk,v 1.1 2001/05/10 18:12:22 edburns%acm.org Exp $
|
||||
#
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Nikolay N. Igotti <inn@sparc.spb.su>
|
||||
|
||||
FILES_java = \
|
||||
sun/jvmp/jpav/ActivatorAppletContext.java \
|
||||
sun/jvmp/jpav/ActivatorAppletPanel.java \
|
||||
sun/jvmp/jpav/AppletMessageHandler.java \
|
||||
sun/jvmp/jpav/ActivatorClassLoader.java \
|
||||
sun/jvmp/jpav/ClassLoaderInfo.java \
|
||||
sun/jvmp/jpav/ActivatorProxyHandler.java \
|
||||
sun/jvmp/jpav/CookieHandler.java \
|
||||
sun/jvmp/jpav/ProxyHandler.java \
|
||||
sun/jvmp/jpav/JavaPluginAVFactory.java \
|
||||
sun/jvmp/jpav/RMIActivatorSocketFactory.java \
|
||||
sun/jvmp/jpav/protocol/jdk12/http/HttpClient.java \
|
||||
sun/jvmp/jpav/protocol/jdk12/http/HttpURLConnection.java \
|
||||
sun/jvmp/jpav/protocol/jdk12/http/Handler.java \
|
||||
sun/jvmp/jpav/protocol/jdk12/http/SocksSocket.java \
|
||||
sun/jvmp/jpav/protocol/jdk12/https/BrowserHttpsInputStream.java \
|
||||
sun/jvmp/jpav/protocol/jdk12/https/BrowserHttpsOutputStream.java \
|
||||
sun/jvmp/jpav/protocol/jdk12/https/BrowserHttpsURLConnection.java \
|
||||
sun/jvmp/jpav/protocol/jdk12/https/Handler.java \
|
||||
sun/jvmp/jpav/protocol/jdk12/ftp/Handler.java \
|
||||
sun/jvmp/jpav/protocol/jdk12/gopher/Handler.java \
|
||||
sun/jvmp/jpav/protocol/jdk12/jar/Handler.java
|
10
java/pluggable-jvm/wf/build/unix/.cvsignore
Normal file
10
java/pluggable-jvm/wf/build/unix/.cvsignore
Normal file
@ -0,0 +1,10 @@
|
||||
wflog.out
|
||||
wflog.err
|
||||
plugin.policy
|
||||
Helper.libXm.so.4
|
||||
plugin_host
|
||||
wf-bin.tgz
|
||||
wfrelease
|
||||
wf.jar
|
||||
classes
|
||||
ext
|
@ -1,42 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: plugin.policy,v 1.2 2001/05/11 23:31:37 edburns%acm.org Exp $
|
||||
*
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <inn@sparc.spb.su>
|
||||
*/
|
||||
|
||||
grant codeBase "file:${jvmp.home}/classes/" {
|
||||
permission java.security.AllPermission;
|
||||
};
|
||||
grant codeBase "file:${jvmp.home}/wf.jar" {
|
||||
permission java.security.AllPermission;
|
||||
};
|
||||
|
||||
grant {
|
||||
permission java.lang.RuntimePermission "accessClassInPackage.sun.jvmp";
|
||||
permission java.lang.RuntimePermission "accessClassInPackage.sun.jvmp.applet";
|
||||
permission java.lang.RuntimePermission "accessClassInPackage.sun.security.action";
|
||||
permission java.lang.RuntimePermission "accessClassInPackage.sun.awt.image";
|
||||
permission java.lang.RuntimePermission "accessClassInPackage.sun.audio";
|
||||
permission java.lang.RuntimePermission "accessClassInPackage.sun.applet";
|
||||
permission java.lang.RuntimePermission "modifyThread";
|
||||
};
|
16
java/pluggable-jvm/wf/doc/MPL.txt
Normal file
16
java/pluggable-jvm/wf/doc/MPL.txt
Normal file
@ -0,0 +1,16 @@
|
||||
The contents of this file are subject to the Mozilla Public
|
||||
License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
|
||||
The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
All Rights Reserved.
|
||||
|
102
java/pluggable-jvm/wf/doc/add_legal.pl
Normal file
102
java/pluggable-jvm/wf/doc/add_legal.pl
Normal file
@ -0,0 +1,102 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
#
|
||||
# The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
# Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# $Id: add_legal.pl,v 1.1 2001/07/12 20:25:38 edburns%acm.org Exp $
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
#
|
||||
|
||||
require "rules.pl";
|
||||
|
||||
$relpath = "";
|
||||
sub get_type
|
||||
{
|
||||
my ($name) = @_;
|
||||
foreach (keys %mapping)
|
||||
{
|
||||
return $mapping{$_} if ($name =~ /$_/);
|
||||
}
|
||||
return undef;
|
||||
}
|
||||
|
||||
sub handle_file
|
||||
{
|
||||
my ($file, $name) = @_;
|
||||
my $type = get_type($name);
|
||||
open(FILE, $file) || die "cannot read $file: $!";
|
||||
#print "name=$name type=$type\n";
|
||||
my @lines = <FILE>;
|
||||
close(FILE);
|
||||
my @newlines;
|
||||
if ($type) {
|
||||
my ($pre, $com1, $com2, $com3) =
|
||||
($prefixes{$type}, $comments_start{$type},
|
||||
$comments_middle{$type}, $comments_end{$type});
|
||||
if (!$com1 || !com2 || !com3) {
|
||||
print "not defined comments for type $type - skipping...\n";
|
||||
@newlines = @lines;
|
||||
} else {
|
||||
@newlines = proceed($file, $type, @lines);
|
||||
}
|
||||
} else {
|
||||
print "skipped $file...\n";
|
||||
@newlines = @lines;
|
||||
}
|
||||
my $newname = "$newtree/$relpath$name";
|
||||
open(FILE, ">$newname") || die "cannot write to $newname: $!"; ;
|
||||
foreach (@newlines) {
|
||||
print FILE $_;
|
||||
}
|
||||
close(FILE);
|
||||
}
|
||||
|
||||
sub handle_dir
|
||||
{
|
||||
my ($dir, $short) = @_;
|
||||
my $oldrelpath = $relpath;
|
||||
$relpath .= $short."/" if ($short);
|
||||
opendir(DIR, $dir) || die "can't opendir $dir: $!";
|
||||
my $newdir = "$newtree/$relpath";
|
||||
mkdir $newdir unless (-d $newdir);
|
||||
# it will remove all starting with dot entries
|
||||
my @entries = grep { !/^\.$/ && !/^\.\.$/} readdir(DIR);
|
||||
closedir DIR;
|
||||
my @filez = grep { -f "$dir/$_"} @entries;
|
||||
foreach (@filez) { handle_file("$dir/$_", $_); }
|
||||
my @dirz = grep { -d "$dir/$_" && !$ignore_dirs{$_}} @entries;
|
||||
foreach (@dirz) {
|
||||
print "Handling $relpath$_...\n";
|
||||
handle_dir("$dir/$_", $_);
|
||||
}
|
||||
$relpath = $oldrelpath;
|
||||
}
|
||||
|
||||
|
||||
open(LIC, $license) || die "can't read license file $license: $!";
|
||||
@lic = <LIC>;
|
||||
close (LIC);
|
||||
|
||||
handle_dir($oldtree, "");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
15
java/pluggable-jvm/wf/doc/copyright.txt
Normal file
15
java/pluggable-jvm/wf/doc/copyright.txt
Normal file
@ -0,0 +1,15 @@
|
||||
Copyright issues with Waterfall.
|
||||
|
||||
COPYRIGTH POLICY:
|
||||
Waterfall intended to be GPL'ed, or maybe MPL'ed.
|
||||
|
||||
DEPENDNCIES:
|
||||
This product was inspired by Java Plugin (and designed to replace it)
|
||||
so I used some of Java Plugin code. Code itself is licensed under Sun's JDK
|
||||
license. So to obtain clean GPL'ed implementation we need:
|
||||
- rewrite applet viewer (sun/jvmp/applet)
|
||||
- rewrite Java LiveConnect related code in Mozilla extension (C code is clean)
|
||||
but Mozilla extension isn't official part of Waterfall.
|
||||
|
||||
|
||||
|
159
java/pluggable-jvm/wf/doc/rules.pl
Normal file
159
java/pluggable-jvm/wf/doc/rules.pl
Normal file
@ -0,0 +1,159 @@
|
||||
#
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
#
|
||||
# The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
# Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# $Id: rules.pl,v 1.1 2001/07/12 20:25:40 edburns%acm.org Exp $
|
||||
#
|
||||
# Contributor(s):
|
||||
#
|
||||
# Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
#
|
||||
|
||||
$post_license = <<EOF
|
||||
|
||||
Contributor(s):
|
||||
|
||||
Nikolay N. Igotti <nikolay.igotti\@Sun.Com>
|
||||
EOF
|
||||
;
|
||||
# trick to prevent CVS from rewriting those comments
|
||||
$post_license = "\$"."Id: CVS comments placeholder "."Exp \$\n".$post_license;
|
||||
|
||||
$license = "/work/checkin/MPL.txt";
|
||||
$oldtree = "/work/checkin/wf";
|
||||
$newtree = "/work/checkin/wf.new";
|
||||
|
||||
%mapping = (
|
||||
".*\\.cpp\$" => "cpp",
|
||||
".*\\.c\$" => "c",
|
||||
".*\\.h\$" => "h",
|
||||
".*\\.java\$" => "java",
|
||||
".*\\.bat\$" => "bat",
|
||||
".*\\.BAT\$" => "bat",
|
||||
".*\\.policy" => "policy",
|
||||
".*\\.sh" => "sh",
|
||||
".*\\.csh" => "csh",
|
||||
"GNUmakefile" => "GNUmakefile",
|
||||
"Makefile" => "Makefile",
|
||||
"makefile\\.win" => "makefile.win",
|
||||
".*\\.mk" => "mk",
|
||||
".*\\.gmk" => "gmk",
|
||||
".*\\.pl" => "pl"
|
||||
);
|
||||
|
||||
%prefixes = (
|
||||
"cpp" => "-*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- ",
|
||||
"c" => "-*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-",
|
||||
"java" => "-*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-",
|
||||
"h" => "-*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-"
|
||||
);
|
||||
%comments_start = (
|
||||
"cpp" => "/* ",
|
||||
"c" => "/* ",
|
||||
"h" => "/* ",
|
||||
"policy" => "/* ",
|
||||
"sh" => "# ",
|
||||
"csh" => "# ",
|
||||
"pl" => "# ",
|
||||
"GNUmakefile" => "# ",
|
||||
"Makefile" => "# ",
|
||||
"makefile.win"=> "# ",
|
||||
"java" => "/* ",
|
||||
"bat" => "\@REM ",
|
||||
"BAT" => "\@REM ",
|
||||
"mk" => "# ",
|
||||
"gmk" => "# "
|
||||
);
|
||||
|
||||
%comments_middle = (
|
||||
"cpp" => " * ",
|
||||
"c" => " * ",
|
||||
"h" => " * ",
|
||||
"policy" => " * ",
|
||||
"java" => " * ",
|
||||
"sh" => "# ",
|
||||
"csh" => "# ",
|
||||
"pl" => "# ",
|
||||
"GNUmakefile" => "# ",
|
||||
"Makefile" => "# ",
|
||||
"makefile.win"=> "# ",
|
||||
"mk" => "# ",
|
||||
"gmk" => "# ",
|
||||
"bat" => "\@REM ",
|
||||
"BAT" => "\@REM "
|
||||
);
|
||||
|
||||
%comments_end = (
|
||||
"cpp" => " */",
|
||||
"c" => " */",
|
||||
"h" => " */",
|
||||
"policy" => " */",
|
||||
"sh" => "# ",
|
||||
"csh" => "# ",
|
||||
"pl" => "# ",
|
||||
"GNUmakefile" => "# ",
|
||||
"Makefile" => "# ",
|
||||
"makefile.win"=> "# ",
|
||||
"java" => " */ ",
|
||||
"bat" => "\@REM ",
|
||||
"BAT" => "\@REM ",
|
||||
"mk" => "# ",
|
||||
"gmk" => "# "
|
||||
);
|
||||
|
||||
%ignore_dirs = (
|
||||
"CVS" => 1
|
||||
);
|
||||
|
||||
|
||||
# filtering procedure:
|
||||
# input - filename, type, list of file strings
|
||||
# output - list of file strings
|
||||
sub proceed
|
||||
{
|
||||
my ($file, $type, @lines) = @_;
|
||||
my @newlines;
|
||||
|
||||
my ($pre, $com1, $com2, $com3) =
|
||||
($prefixes{$type}, $comments_start{$type},
|
||||
$comments_middle{$type}, $comments_end{$type});
|
||||
# in shell scripts add only after #!<smth> execution comment
|
||||
if ($type eq "sh" || $type eq "csh" || $type eq "pl") {
|
||||
$_ = $lines[0];
|
||||
push @newlines, shift @lines if (/^\#\S*\!/);
|
||||
}
|
||||
|
||||
push @newlines, "$com1$pre\n";
|
||||
push @newlines, "$com2\n" if ($pre);
|
||||
foreach (@lic) {
|
||||
push @newlines, "$com2$_";
|
||||
}
|
||||
|
||||
my @post = split('\n', $post_license);
|
||||
foreach (@post) {
|
||||
push @newlines, "$com2$_\n";
|
||||
}
|
||||
push @newlines, "$com3\n\n";
|
||||
|
||||
foreach (@lines) {
|
||||
push @newlines, $_;
|
||||
}
|
||||
return @newlines;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
1
java/pluggable-jvm/wf/doc/wf-in-proc.png
Normal file
1
java/pluggable-jvm/wf/doc/wf-in-proc.png
Normal file
@ -0,0 +1 @@
|
||||
‰PNG
|
1
java/pluggable-jvm/wf/doc/wf-out-proc.png
Normal file
1
java/pluggable-jvm/wf/doc/wf-out-proc.png
Normal file
@ -0,0 +1 @@
|
||||
‰PNG
|
@ -0,0 +1,89 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: JSException.java,v 1.1 2001/07/12 20:25:44 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package netscape.javascript;
|
||||
|
||||
// exception that can be thrown by LiveConnect in Mozilla.
|
||||
|
||||
public class JSException extends RuntimeException {
|
||||
|
||||
// Exception type supported by JavaScript 1.4 in Mozilla
|
||||
public static final int EXCEPTION_TYPE_EMPTY = -1;
|
||||
public static final int EXCEPTION_TYPE_VOID = 0;
|
||||
public static final int EXCEPTION_TYPE_OBJECT = 1;
|
||||
public static final int EXCEPTION_TYPE_FUNCTION = 2;
|
||||
public static final int EXCEPTION_TYPE_STRING = 3;
|
||||
public static final int EXCEPTION_TYPE_NUMBER = 4;
|
||||
public static final int EXCEPTION_TYPE_BOOLEAN = 5;
|
||||
public static final int EXCEPTION_TYPE_ERROR = 6;
|
||||
|
||||
public JSException() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
public JSException(String s) {
|
||||
this(s, null, -1, null, -1);
|
||||
}
|
||||
|
||||
|
||||
public JSException(String s, String filename, int lineno, String source,
|
||||
int tokenIndex) {
|
||||
super(s);
|
||||
this.message = s;
|
||||
this.filename = filename;
|
||||
this.lineno = lineno;
|
||||
this.source = source;
|
||||
this.tokenIndex = tokenIndex;
|
||||
this.wrappedExceptionType = EXCEPTION_TYPE_EMPTY;
|
||||
}
|
||||
|
||||
public JSException(int wrappedExceptionType, Object wrappedException) {
|
||||
this();
|
||||
this.wrappedExceptionType = wrappedExceptionType;
|
||||
this.wrappedException = wrappedException;
|
||||
}
|
||||
|
||||
protected String message = null;
|
||||
|
||||
protected String filename = null;
|
||||
|
||||
protected int lineno = -1;
|
||||
|
||||
protected String source = null;
|
||||
|
||||
protected int tokenIndex = -1;
|
||||
|
||||
private int wrappedExceptionType = -1;
|
||||
|
||||
private Object wrappedException = null;
|
||||
|
||||
public int getWrappedExceptionType() {
|
||||
return wrappedExceptionType;
|
||||
}
|
||||
|
||||
public Object getWrappedException() {
|
||||
return wrappedException;
|
||||
}
|
||||
}
|
93
java/pluggable-jvm/wf/java/netscape/javascript/JSObject.java
Normal file
93
java/pluggable-jvm/wf/java/netscape/javascript/JSObject.java
Normal file
@ -0,0 +1,93 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: JSObject.java,v 1.1 2001/07/12 20:25:45 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package netscape.javascript;
|
||||
|
||||
import java.applet.Applet;
|
||||
import java.applet.AppletContext;
|
||||
|
||||
|
||||
import sun.jvmp.javascript.JSContext;
|
||||
|
||||
public abstract class JSObject {
|
||||
|
||||
/**
|
||||
* Call to JS
|
||||
**/
|
||||
public abstract Object call(String methodName,
|
||||
Object args[])
|
||||
throws JSException;
|
||||
|
||||
/**
|
||||
* Evaluate JS expression
|
||||
*/
|
||||
public abstract Object eval(String s) throws JSException;
|
||||
|
||||
/**
|
||||
* Obtain member of JS object
|
||||
*/
|
||||
public abstract Object getMember(String name) throws JSException;
|
||||
|
||||
/**
|
||||
* Set member of JS object
|
||||
*/
|
||||
public abstract void setMember(String name, Object value) throws JSException;
|
||||
|
||||
/**
|
||||
* Remove member of JS object
|
||||
*/
|
||||
public abstract void removeMember(String name) throws JSException;
|
||||
|
||||
/**
|
||||
* Obtain slot of JS object
|
||||
*/
|
||||
public abstract Object getSlot(int index) throws JSException;
|
||||
|
||||
/**
|
||||
* Set slot of JS object
|
||||
*/
|
||||
public abstract void setSlot(int index, Object value) throws JSException;
|
||||
|
||||
/**
|
||||
* Returns a JSObject for the window containing the given applet.
|
||||
*/
|
||||
public static JSObject getWindow(Applet applet) throws JSException {
|
||||
|
||||
AppletContext c = applet.getAppletContext();
|
||||
|
||||
JSObject ret = null;
|
||||
|
||||
if (c instanceof sun.jvmp.javascript.JSContext)
|
||||
{
|
||||
JSContext j = (JSContext) c;
|
||||
ret = j.getJSObject();
|
||||
}
|
||||
|
||||
if (ret == null)
|
||||
throw new JSException("AppletContext doesn\'t provide correct JSContext");
|
||||
else
|
||||
return ret;
|
||||
}
|
||||
}
|
45
java/pluggable-jvm/wf/java/netscape/javascript/JSUtil.java
Normal file
45
java/pluggable-jvm/wf/java/netscape/javascript/JSUtil.java
Normal file
@ -0,0 +1,45 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: JSUtil.java,v 1.1 2001/07/12 20:25:46 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
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;
|
||||
PrintWriter p;
|
||||
|
||||
captureStream = new ByteArrayOutputStream();
|
||||
p = new PrintWriter(captureStream);
|
||||
|
||||
t.printStackTrace(p);
|
||||
p.flush();
|
||||
|
||||
return captureStream.toString();
|
||||
}
|
||||
}
|
255
java/pluggable-jvm/wf/java/sun/jvmp/ConsoleWindow.java
Normal file
255
java/pluggable-jvm/wf/java/sun/jvmp/ConsoleWindow.java
Normal file
@ -0,0 +1,255 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: ConsoleWindow.java,v 1.1 2001/07/12 20:25:49 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.util.Enumeration;
|
||||
|
||||
class ConsoleWindow extends Frame {
|
||||
PluggableJVM m_jvm = null;
|
||||
int debugLevel = 10;
|
||||
/*
|
||||
* Create the new console window
|
||||
*/
|
||||
public ConsoleWindow(PluggableJVM jvm) {
|
||||
super("Waterfall Java Console");
|
||||
m_jvm = jvm;
|
||||
setResizable(true);
|
||||
setLayout(new BorderLayout());
|
||||
textArea = new TextArea();
|
||||
add(textArea, BorderLayout.CENTER);
|
||||
|
||||
Button clear = new Button("Clear");
|
||||
Button close = new Button("Close");
|
||||
|
||||
Panel panel = new Panel();
|
||||
panel.setLayout(new FlowLayout(FlowLayout.CENTER));
|
||||
panel.add(clear);
|
||||
panel.add(new Label(" "));
|
||||
panel.add(close);
|
||||
|
||||
KeyListener keyListener = new KeyAdapter() {
|
||||
public void keyPressed(KeyEvent evt) {
|
||||
switch (evt.getKeyCode()) {
|
||||
// those events passed to default handlers
|
||||
case KeyEvent.VK_KP_DOWN:
|
||||
case KeyEvent.VK_KP_UP:
|
||||
case KeyEvent.VK_KP_LEFT:
|
||||
case KeyEvent.VK_KP_RIGHT:
|
||||
case KeyEvent.VK_DOWN:
|
||||
case KeyEvent.VK_UP:
|
||||
case KeyEvent.VK_LEFT:
|
||||
case KeyEvent.VK_RIGHT:
|
||||
case KeyEvent.VK_PAGE_UP:
|
||||
case KeyEvent.VK_PAGE_DOWN:
|
||||
case KeyEvent.VK_END:
|
||||
case KeyEvent.VK_HOME:
|
||||
return;
|
||||
}
|
||||
switch (evt.getKeyChar()) {
|
||||
case '?':
|
||||
case 'h':
|
||||
case 'H':
|
||||
printHelp();
|
||||
break;
|
||||
case 't':
|
||||
case 'T':
|
||||
dumpThreads();
|
||||
break;
|
||||
case 'g':
|
||||
case 'G':
|
||||
System.out.println("running garbage collector...");
|
||||
System.gc();
|
||||
System.out.println("done.");
|
||||
break;
|
||||
case 'f':
|
||||
case 'F':
|
||||
System.out.println("finalize objects...");
|
||||
System.runFinalization();
|
||||
System.out.println("done.");
|
||||
break;
|
||||
case 'm':
|
||||
case 'M':
|
||||
Runtime r = Runtime.getRuntime();
|
||||
System.out.println("Memory usage: free "+
|
||||
r.freeMemory() +
|
||||
" of total " +
|
||||
r.totalMemory());
|
||||
break;
|
||||
case 'c':
|
||||
case 'C':
|
||||
textArea.setText("");
|
||||
break;
|
||||
case 'q':
|
||||
case 'Q':
|
||||
hide();
|
||||
break;
|
||||
case 'o':
|
||||
case 'O':
|
||||
dumpObjs();
|
||||
break;
|
||||
case 'V':
|
||||
m_jvm.setDebugLevel(++debugLevel);
|
||||
System.out.println("new debug level="+debugLevel);
|
||||
break;
|
||||
case 'v':
|
||||
m_jvm.setDebugLevel(--debugLevel);
|
||||
System.out.println("new debug level="+debugLevel);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
// don't propagate further
|
||||
evt.consume();
|
||||
}
|
||||
public void keyReleased(KeyEvent evt) {
|
||||
}
|
||||
public void keyTyped(KeyEvent evt) {
|
||||
}
|
||||
};
|
||||
addKeyListener(keyListener);
|
||||
textArea.addKeyListener(keyListener);
|
||||
|
||||
WindowListener windowEventListener = new WindowAdapter() {
|
||||
public void windowClosing(WindowEvent evt) {
|
||||
dispose();
|
||||
}
|
||||
};
|
||||
addWindowListener(windowEventListener);
|
||||
|
||||
|
||||
int rgb = SystemColor.control.getRGB();
|
||||
panel.setBackground(new Color(rgb));
|
||||
|
||||
add(panel, BorderLayout.SOUTH);
|
||||
|
||||
clear.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
synchronized (textArea) {
|
||||
textArea.setText("");
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
close.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
hide();
|
||||
}
|
||||
});
|
||||
|
||||
setSize(400,300);
|
||||
pack();
|
||||
}
|
||||
|
||||
void printHelp()
|
||||
{
|
||||
System.out.println("Waterfall Java Console commands:");
|
||||
System.out.println(" h - print this message");
|
||||
System.out.println(" t - print all Java threads");
|
||||
System.out.println(" g - run garbage collector");
|
||||
System.out.println(" f - finalize objects in finalizer queue");
|
||||
System.out.println(" m - print memory usage");
|
||||
System.out.println(" c - clear console");
|
||||
System.out.println(" q - close console");
|
||||
System.out.println(" o - show all objects");
|
||||
System.out.println(" V/v - increase/decrease verbosity");
|
||||
}
|
||||
|
||||
void dumpThreads()
|
||||
{
|
||||
System.out.println("Threads list:");
|
||||
Thread t = Thread.currentThread();
|
||||
ThreadGroup tg = t.getThreadGroup();
|
||||
// find root thread group
|
||||
while (tg.getParent() != null) tg = tg.getParent();
|
||||
// now dump leafs
|
||||
dumpThreadGroup(tg);
|
||||
}
|
||||
|
||||
void dumpThreadGroup(ThreadGroup tg)
|
||||
{
|
||||
if (tg == null) return;
|
||||
int cnt = tg.activeCount();
|
||||
System.out.println(" Thread group "+tg.getName());
|
||||
Thread[] tlist = new Thread [cnt];
|
||||
cnt = tg.enumerate(tlist);
|
||||
for (int i=0; i < cnt; i++)
|
||||
System.out.println(" "+tlist[i]);
|
||||
int tgcnt = tg.activeGroupCount();
|
||||
ThreadGroup[] tglist = new ThreadGroup[tgcnt];
|
||||
tgcnt = tg.enumerate(tglist);
|
||||
for (int i=0; i < tgcnt; i++)
|
||||
dumpThreadGroup(tglist[i]);
|
||||
}
|
||||
|
||||
void dumpObjs()
|
||||
{
|
||||
System.out.println("Registered extensions:");
|
||||
for (Enumeration e = m_jvm.getAllExtensions(); e.hasMoreElements();)
|
||||
{
|
||||
WaterfallExtension ext = (WaterfallExtension)e.nextElement();
|
||||
if (ext != null) System.out.println(" " + ext);
|
||||
}
|
||||
System.out.println("Registered windows:");
|
||||
for (Enumeration e = m_jvm.getAllFrames(); e.hasMoreElements();)
|
||||
{
|
||||
NativeFrame nf = (NativeFrame)e.nextElement();
|
||||
if (nf != null) System.out.println(" " + nf);
|
||||
}
|
||||
System.out.println("Registered objects:");
|
||||
for (Enumeration e = m_jvm.getAllPeers(); e.hasMoreElements();)
|
||||
{
|
||||
HostObjectPeer p = (HostObjectPeer)e.nextElement();
|
||||
if (p != null) System.out.println(" " + p);
|
||||
}
|
||||
System.out.println("Registered threads:");
|
||||
for (Enumeration e = m_jvm.getAllThreads(); e.hasMoreElements();)
|
||||
{
|
||||
NativeThread t = (NativeThread)e.nextElement();
|
||||
if (t != null) System.out.println(" " + t);
|
||||
}
|
||||
System.out.println("Registered synchro objects:");
|
||||
for (Enumeration e = m_jvm.getAllSynchroObjects(); e.hasMoreElements();)
|
||||
{
|
||||
SynchroObject so = (SynchroObject)e.nextElement();
|
||||
if (so != null) System.out.println(" " + so);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
public void append(String text) {
|
||||
synchronized (textArea) {
|
||||
textArea.append(text);
|
||||
};
|
||||
}
|
||||
|
||||
private TextArea textArea;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
80
java/pluggable-jvm/wf/java/sun/jvmp/DebugOutputStream.java
Normal file
80
java/pluggable-jvm/wf/java/sun/jvmp/DebugOutputStream.java
Normal file
@ -0,0 +1,80 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: DebugOutputStream.java,v 1.1 2001/07/12 20:25:50 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
public class DebugOutputStream extends OutputStream
|
||||
{
|
||||
ConsoleWindow console;
|
||||
FileOutputStream log;
|
||||
|
||||
public DebugOutputStream(ConsoleWindow console,
|
||||
String filename)
|
||||
{
|
||||
this.console = console;
|
||||
if (filename != null)
|
||||
{
|
||||
String wfHome = System.getProperty("jvmp.home");
|
||||
try {
|
||||
File file = new File(wfHome, filename);
|
||||
if (file.exists()) file.delete();
|
||||
log = new FileOutputStream(file);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void write(byte b[], int off, int len)
|
||||
throws IOException
|
||||
{
|
||||
if (console != null)
|
||||
console.append(new String(b, off, len));
|
||||
if (log != null)
|
||||
{
|
||||
try {
|
||||
log.write(b, off, len);
|
||||
} catch (IOException e) {
|
||||
if (console != null)
|
||||
console.append(e.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void write(int b) throws IOException
|
||||
{
|
||||
System.err.println("char write: "+b);
|
||||
// inefficient implementation, but short writes shouldn't happen often
|
||||
byte buf[] = new byte[1];
|
||||
buf[0] = (byte)b;
|
||||
write(buf, 0, 1);
|
||||
}
|
||||
|
||||
public synchronized void flush() throws IOException {
|
||||
if (log != null) log.flush();
|
||||
}
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: AppletManager.java,v 1.1 2001/07/12 20:25:54 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.applet;
|
||||
|
||||
import sun.jvmp.*;
|
||||
import java.util.Hashtable;
|
||||
|
||||
public class AppletManager
|
||||
{
|
||||
PluggableJVM jvm;
|
||||
public AppletManager(PluggableJVM jvm)
|
||||
{
|
||||
this.jvm = jvm;
|
||||
}
|
||||
|
||||
public WFAppletViewer createAppletViewer(WFAppletContext ctx,
|
||||
BrowserSupport support,
|
||||
Hashtable atts)
|
||||
{
|
||||
if (jvm == null) return null;
|
||||
AppletViewerArgs arg = new AppletViewerArgs(ctx, support, atts, jvm);
|
||||
WFAppletViewer av = null;
|
||||
try {
|
||||
av = (WFAppletViewer)jvm.getServiceByCID(WFAppletViewer.CID, arg);
|
||||
} catch (ClassCastException cce) {
|
||||
jvm.trace("WFAppletViewer interface not implemented by applet viewer",
|
||||
PluggableJVM.LOG_ERROR);
|
||||
}
|
||||
return av;
|
||||
}
|
||||
};
|
||||
|
@ -0,0 +1,48 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: AppletViewerArgs.java,v 1.1 2001/07/12 20:25:56 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.applet;
|
||||
|
||||
import sun.jvmp.BrowserSupport;
|
||||
import java.util.Hashtable;
|
||||
import sun.jvmp.PluggableJVM;
|
||||
|
||||
public class AppletViewerArgs
|
||||
{
|
||||
public AppletViewerArgs(WFAppletContext ctx,
|
||||
BrowserSupport support,
|
||||
Hashtable atts,
|
||||
PluggableJVM jvm)
|
||||
{
|
||||
this.ctx = ctx;
|
||||
this.support = support;
|
||||
this.atts = atts;
|
||||
this.jvm = jvm;
|
||||
}
|
||||
public WFAppletContext ctx;
|
||||
public BrowserSupport support;
|
||||
public Hashtable atts;
|
||||
public PluggableJVM jvm;
|
||||
}
|
39
java/pluggable-jvm/wf/java/sun/jvmp/applet/ProxyHandler.java
Normal file
39
java/pluggable-jvm/wf/java/sun/jvmp/applet/ProxyHandler.java
Normal file
@ -0,0 +1,39 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: ProxyHandler.java,v 1.1 2001/07/12 20:25:56 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.applet;
|
||||
|
||||
import java.net.URL;
|
||||
|
||||
|
||||
public interface ProxyHandler {
|
||||
|
||||
/* getProxyInfo takes a particular URL and returns its proxy setting.
|
||||
*/
|
||||
ProxyInfo getProxyInfo(URL u);
|
||||
}
|
||||
|
||||
|
||||
|
121
java/pluggable-jvm/wf/java/sun/jvmp/applet/ProxyInfo.java
Normal file
121
java/pluggable-jvm/wf/java/sun/jvmp/applet/ProxyInfo.java
Normal file
@ -0,0 +1,121 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: ProxyInfo.java,v 1.1 2001/07/12 20:25:56 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.applet;
|
||||
|
||||
public class ProxyInfo {
|
||||
String proxyHost;
|
||||
int proxyPort = -1;
|
||||
String socksProxyHost;
|
||||
int socksProxyPort = -1;
|
||||
|
||||
public ProxyInfo(String pinfo) {
|
||||
this(pinfo, null);
|
||||
}
|
||||
|
||||
public ProxyInfo(String pinfo, String spinfo) {
|
||||
// handle HTTP proxy settings
|
||||
// accepted format is http://somehost.somedomain.com:port
|
||||
if (pinfo != null)
|
||||
{
|
||||
int i = pinfo.indexOf("//");
|
||||
// XXX: should I do smth meaningful with protocol
|
||||
if (i >= 0) pinfo = pinfo.substring(i + 2);
|
||||
i = pinfo.indexOf(":");
|
||||
if (i < 0)
|
||||
{
|
||||
proxyHost = pinfo;
|
||||
proxyPort = 3128; // or 80?
|
||||
}
|
||||
else
|
||||
{
|
||||
proxyHost = pinfo.substring(0, i);
|
||||
try {
|
||||
proxyPort = Integer.parseInt(pinfo.substring(i + 1));
|
||||
} catch (NumberFormatException e) {
|
||||
proxyPort = 3128;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// handle SOCKS proxy settings
|
||||
// accepted format is host:port
|
||||
if (spinfo != null)
|
||||
{
|
||||
int i = spinfo.indexOf(":");
|
||||
if (i < 0)
|
||||
{
|
||||
socksProxyHost = spinfo;
|
||||
socksProxyPort = 1080;
|
||||
}
|
||||
else
|
||||
{
|
||||
socksProxyHost = spinfo.substring(0, i);
|
||||
try {
|
||||
socksProxyPort
|
||||
= Integer.parseInt(spinfo.substring(i + 1));
|
||||
} catch (NumberFormatException e) {
|
||||
socksProxyPort = 1080;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ProxyInfo(String proxy, int port) {
|
||||
this(proxy, port, null, -1);
|
||||
}
|
||||
|
||||
public ProxyInfo(String proxy, int port, String socksProxy, int socksPort)
|
||||
{
|
||||
this.proxyHost = proxy;
|
||||
this.proxyPort = port;
|
||||
this.socksProxyHost = socksProxy;
|
||||
this.socksProxyPort = socksPort;
|
||||
}
|
||||
|
||||
public String getProxy() {
|
||||
return proxyHost;
|
||||
}
|
||||
|
||||
public int getPort() {
|
||||
return proxyPort;
|
||||
}
|
||||
|
||||
public String getSocksProxy() {
|
||||
return socksProxyHost;
|
||||
}
|
||||
|
||||
public int getSocksPort() {
|
||||
return socksProxyPort;
|
||||
}
|
||||
|
||||
public boolean isProxyUsed() {
|
||||
return (proxyHost != null || socksProxyHost != null);
|
||||
}
|
||||
|
||||
public boolean isSocksUsed() {
|
||||
return (socksProxyHost != null);
|
||||
}
|
||||
}
|
38
java/pluggable-jvm/wf/java/sun/jvmp/applet/ProxyType.java
Normal file
38
java/pluggable-jvm/wf/java/sun/jvmp/applet/ProxyType.java
Normal file
@ -0,0 +1,38 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: ProxyType.java,v 1.1 2001/07/12 20:25:57 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.applet;
|
||||
|
||||
public interface ProxyType {
|
||||
/**
|
||||
* Proxy config type
|
||||
**/
|
||||
public static final int PROXY_TYPE_NO_PROXY = 0;
|
||||
public static final int PROXY_TYPE_MANUAL = 1;
|
||||
public static final int PROXY_TYPE_AUTOCONFIG = 2;
|
||||
}
|
||||
|
||||
|
||||
|
@ -0,0 +1,40 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: WFAppletClassLoader.java,v 1.1 2001/07/12 20:25:57 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.applet;
|
||||
|
||||
import sun.applet.*;
|
||||
import java.net.*;
|
||||
import java.security.*;
|
||||
import java.io.*;
|
||||
|
||||
public class WFAppletClassLoader extends AppletClassLoader
|
||||
{
|
||||
private URL base;
|
||||
public WFAppletClassLoader(URL base) {
|
||||
super(base);
|
||||
this.base = base;
|
||||
}
|
||||
};
|
190
java/pluggable-jvm/wf/java/sun/jvmp/applet/WFAppletContext.java
Normal file
190
java/pluggable-jvm/wf/java/sun/jvmp/applet/WFAppletContext.java
Normal file
@ -0,0 +1,190 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: WFAppletContext.java,v 1.1 2001/07/12 20:25:58 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.applet;
|
||||
|
||||
import java.applet.*;
|
||||
import java.util.*;
|
||||
import sun.applet.*;
|
||||
import java.awt.*;
|
||||
import java.net.*;
|
||||
import java.io.*;
|
||||
import java.lang.reflect.*;
|
||||
import sun.awt.image.URLImageSource;
|
||||
|
||||
public abstract class WFAppletContext implements AppletContext
|
||||
{
|
||||
public AudioClip getAudioClip(URL url) {
|
||||
System.getSecurityManager().checkConnect(url.getHost(), url.getPort());
|
||||
synchronized (audioClips) {
|
||||
// first try cached data
|
||||
AudioClip clip = (AudioClip)getFromCache(audioClips, url);
|
||||
if (clip == null) {
|
||||
clip = new AppletAudioClip(url);
|
||||
putToCache(audioClips, url, clip);
|
||||
}
|
||||
return clip;
|
||||
}
|
||||
}
|
||||
|
||||
public Image getImage(URL url) {
|
||||
System.getSecurityManager().checkConnect(url.getHost(), url.getPort());
|
||||
synchronized (images) {
|
||||
// first try cached data
|
||||
Image img = (Image)getFromCache(images, url);
|
||||
if (img == null) {
|
||||
img =
|
||||
Toolkit.getDefaultToolkit().createImage(new URLImageSource(url));;
|
||||
putToCache(images, url, img);
|
||||
}
|
||||
return img;
|
||||
}
|
||||
}
|
||||
|
||||
public Applet getApplet(String name) {
|
||||
name = name.toLowerCase();
|
||||
for (Enumeration e = appletPanels.elements() ; e.hasMoreElements() ;) {
|
||||
AppletPanel p = (AppletPanel)e.nextElement();
|
||||
String param = p.getParameter("name");
|
||||
if (param != null) {
|
||||
param = param.toLowerCase();
|
||||
}
|
||||
if (name.equals(param) &&
|
||||
p.getDocumentBase().equals(appletPanel.getDocumentBase())) {
|
||||
try {
|
||||
if (!checkConnect(appletPanel.getCodeBase().getHost(),
|
||||
p.getCodeBase().getHost()))
|
||||
return null;
|
||||
} catch (InvocationTargetException ee) {
|
||||
showStatus(ee.getTargetException().getMessage());
|
||||
return null;
|
||||
} catch (Exception ee) {
|
||||
showStatus(ee.getMessage());
|
||||
return null;
|
||||
}
|
||||
return p.getApplet();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Enumeration getApplets() {
|
||||
Vector v = new Vector();
|
||||
for (Enumeration e = appletPanels.elements() ; e.hasMoreElements() ;) {
|
||||
AppletPanel p = (AppletPanel)e.nextElement();
|
||||
if (p.getDocumentBase().equals(appletPanel.getDocumentBase())) {
|
||||
try {
|
||||
checkConnect(appletPanel.getCodeBase().getHost(),
|
||||
p.getCodeBase().getHost());
|
||||
v.addElement(p.getApplet());
|
||||
} catch (InvocationTargetException ee) {
|
||||
showStatus(ee.getTargetException().getMessage());
|
||||
} catch (Exception ee) {
|
||||
showStatus(ee.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
return v.elements();
|
||||
}
|
||||
|
||||
|
||||
private boolean checkConnect(String sourceHostName, String targetHostName)
|
||||
throws SecurityException, InvocationTargetException, Exception
|
||||
{
|
||||
SocketPermission panelSp =
|
||||
new SocketPermission(sourceHostName,
|
||||
"connect");
|
||||
SocketPermission sp =
|
||||
new SocketPermission(targetHostName,
|
||||
"connect");
|
||||
if (panelSp.implies(sp)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// separate methods to easily work around situation when weak refs
|
||||
// not accesible
|
||||
Object getFromCache(Hashtable cache,
|
||||
Object key)
|
||||
{
|
||||
Object result = null;
|
||||
try {
|
||||
java.lang.ref.WeakReference ref =
|
||||
(java.lang.ref.WeakReference)cache.get(key);
|
||||
if (ref != null) result = ref.get();
|
||||
} catch (Exception e) {
|
||||
// if no weak refs - use cache what gives memory impact
|
||||
result = cache.get(key);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void putToCache(Hashtable cache,
|
||||
Object key,
|
||||
Object value)
|
||||
{
|
||||
try {
|
||||
cache.put(key, new java.lang.ref.WeakReference(value));
|
||||
} catch (Exception e) {
|
||||
// if no weak refs - use cache what gives memory impact
|
||||
cache.put(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
abstract public void showDocument(URL url);
|
||||
abstract public void showDocument(URL url, String target);
|
||||
abstract public void showStatus(String status);
|
||||
|
||||
public void addAppletInContext(AppletPanel appletPanel) {
|
||||
this.appletPanel = appletPanel;
|
||||
appletPanels.addElement(appletPanel);
|
||||
}
|
||||
|
||||
public void removeAppletFromContext(AppletPanel applet) {
|
||||
appletPanels.removeElement(applet);
|
||||
}
|
||||
|
||||
public java.util.Iterator getStreamKeys() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public java.io.InputStream getStream(String s) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setStream(String s, java.io.InputStream str) {
|
||||
}
|
||||
|
||||
private AppletPanel appletPanel;
|
||||
private static Vector appletPanels = new Vector();
|
||||
private static Hashtable audioClips = new Hashtable();
|
||||
private static Hashtable images = new Hashtable();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,61 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: WFAppletSecurityManager.java,v 1.1 2001/07/12 20:26:00 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
/**
|
||||
* this class created for 3 reasons:
|
||||
* - to hide from extension developers sun.applet.* classes
|
||||
* - to give extension developers basic point for security decisions, like
|
||||
* security code can do:
|
||||
* sm = System.getSecurityManager();
|
||||
* if (sm instanceof sun.jvmp.applet.WFAppletSecurityManager)
|
||||
* {
|
||||
* Class[] clazz = mgr.getExecutionStackContext();
|
||||
* and return codesource properly
|
||||
* }
|
||||
* - to allow fix bugs in sun.applet.* security manager
|
||||
**/
|
||||
package sun.jvmp.applet;
|
||||
|
||||
import java.security.*;
|
||||
|
||||
public class WFAppletSecurityManager extends sun.applet.AppletSecurity {
|
||||
|
||||
public WFAppletSecurityManager() {
|
||||
}
|
||||
|
||||
public Class[] getExecutionStackContext()
|
||||
{
|
||||
return super.getClassContext();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,69 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: WFAppletViewer.java,v 1.1 2001/07/12 20:26:01 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.applet;
|
||||
|
||||
import java.net.URL;
|
||||
import java.awt.Frame;
|
||||
import java.applet.Applet;
|
||||
/**
|
||||
* interface to be implemented by different applet viewer implementation
|
||||
**/
|
||||
public interface WFAppletViewer
|
||||
{
|
||||
/**
|
||||
* applet lifetime control
|
||||
**/
|
||||
public void startApplet();
|
||||
public void stopApplet();
|
||||
// timeout is time allowed for applet to complete its shutdown
|
||||
// after all it just got destroyed
|
||||
public void destroyApplet(int timeout);
|
||||
|
||||
/**
|
||||
* Returns current status of applet loading, possible values - see below
|
||||
**/
|
||||
public int getLoadingStatus();
|
||||
|
||||
/**
|
||||
* Get currently viewed object
|
||||
*/
|
||||
public Applet getApplet();
|
||||
|
||||
/**
|
||||
* two methods to be used to supply applet with
|
||||
* rendering context and real document base later than it created.
|
||||
* Applet viewer shouldn't try to start applet before both are supplied.
|
||||
**/
|
||||
public void setDocumentBase(URL docbase);
|
||||
public void setWindow(Frame f);
|
||||
|
||||
public final static String CID = "@sun.com/wf/applets/appletviewer;1";
|
||||
public final static int STATUS_STARTED = 1;
|
||||
public final static int STATUS_ERROR = 2;
|
||||
public final static int STATUS_UNKNOWN = 3;
|
||||
public final static int STATUS_LOADING = 4;
|
||||
public final static int STATUS_STOPPED = 5;
|
||||
};
|
101
java/pluggable-jvm/wf/java/sun/jvmp/av/AVClassLoader.java
Normal file
101
java/pluggable-jvm/wf/java/sun/jvmp/av/AVClassLoader.java
Normal file
@ -0,0 +1,101 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: AVClassLoader.java,v 1.1 2001/07/12 20:26:04 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.av;
|
||||
|
||||
import java.net.URL;
|
||||
import sun.applet.*;
|
||||
import java.net.*;
|
||||
import java.security.*;
|
||||
import java.io.*;
|
||||
import java.util.Enumeration;
|
||||
|
||||
public class AVClassLoader extends sun.jvmp.applet.WFAppletClassLoader
|
||||
{
|
||||
private URL base;
|
||||
public AVClassLoader(URL base) {
|
||||
super(base);
|
||||
this.base = base;
|
||||
}
|
||||
|
||||
/* this code is workaround for subtle bug/feature in JDK1.3.1 and 1.4,
|
||||
related to loading applets behind proxy */
|
||||
protected PermissionCollection getPermissions(CodeSource codesource)
|
||||
{
|
||||
PermissionCollection sysPerms = null;
|
||||
Policy policy = (Policy)
|
||||
AccessController.doPrivileged(
|
||||
new PrivilegedAction() {
|
||||
public Object run()
|
||||
{
|
||||
return Policy.getPolicy();
|
||||
}});
|
||||
if (policy != null)
|
||||
sysPerms = policy.getPermissions(new CodeSource(null, null));
|
||||
else
|
||||
sysPerms = new Permissions();
|
||||
|
||||
final PermissionCollection perms = sysPerms;
|
||||
if (base != null && base.getHost() != null)
|
||||
perms.add(new SocketPermission(base.getHost()+":1-",
|
||||
"accept,connect,resolve"));
|
||||
URL url = codesource.getLocation();
|
||||
|
||||
if (url.getProtocol().equals("file")) {
|
||||
|
||||
String path = url.getFile().replace('/', File.separatorChar);
|
||||
|
||||
if (!path.endsWith(File.separator)) {
|
||||
int endIndex = path.lastIndexOf(File.separatorChar);
|
||||
if (endIndex != -1) {
|
||||
path = path.substring(0, endIndex+1) + "-";
|
||||
perms.add(new FilePermission(path, "read"));
|
||||
}
|
||||
}
|
||||
perms.add(new SocketPermission("localhost", "connect,accept"));
|
||||
AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
try {
|
||||
String host = InetAddress.getLocalHost().getHostName();
|
||||
perms.add(new SocketPermission(host,"connect,accept"));
|
||||
} catch (UnknownHostException uhe) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
if (base.getProtocol().equals("file")) {
|
||||
String bpath = base.getFile().replace('/', File.separatorChar);
|
||||
if (bpath.endsWith(File.separator)) {
|
||||
bpath += "-";
|
||||
}
|
||||
perms.add(new FilePermission(bpath, "read"));
|
||||
}
|
||||
}
|
||||
//for (Enumeration e=perms.elements();e.hasMoreElements();)
|
||||
// System.err.println("p="+e.nextElement());
|
||||
return perms;
|
||||
}
|
||||
};
|
171
java/pluggable-jvm/wf/java/sun/jvmp/av/AVFactory.java
Normal file
171
java/pluggable-jvm/wf/java/sun/jvmp/av/AVFactory.java
Normal file
@ -0,0 +1,171 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: AVFactory.java,v 1.1 2001/07/12 20:26:05 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.av;
|
||||
|
||||
import sun.jvmp.*;
|
||||
import sun.jvmp.applet.*;
|
||||
import java.util.*;
|
||||
import java.security.*;
|
||||
import java.net.*;
|
||||
import java.awt.Frame;
|
||||
import java.applet.Applet;
|
||||
|
||||
|
||||
public class AVFactory implements sun.jvmp.ObjectFactory
|
||||
{
|
||||
Vector cids;
|
||||
Hashtable permsHash;
|
||||
Permissions permsForAll;
|
||||
boolean inited=false;
|
||||
CodeSource codesource;
|
||||
PluggableJVM jvm;
|
||||
static AVFactory instance = null;
|
||||
|
||||
public static ObjectFactory getFactory(PluggableJVM jvm,
|
||||
CodeSource codesource)
|
||||
throws ComponentException
|
||||
{
|
||||
if (instance == null)
|
||||
instance = new AVFactory(jvm, codesource);
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
||||
protected AVFactory(PluggableJVM jvm, CodeSource codesource)
|
||||
throws ComponentException
|
||||
{
|
||||
cids = new Vector();
|
||||
cids.addElement(WFAppletViewer.CID);
|
||||
permsHash = new Hashtable();
|
||||
this.jvm = jvm;
|
||||
this.codesource = codesource;
|
||||
// XXX: rewrite with policy file
|
||||
permsForAll = new Permissions();
|
||||
permsForAll.add(new java.lang.RuntimePermission("accessClassInPackage.sun.jvmp.av"));
|
||||
permsForAll.add(new java.lang.RuntimePermission("accessClassInPackage.sun.jvmp.av.protocol.http"));
|
||||
permsForAll.add(new java.lang.RuntimePermission("accessClassInPackage.sun.jvmp.av.protocol.ftp"));
|
||||
permsForAll.add(new java.lang.RuntimePermission("accessClassInPackage.sun.jvmp.av.protocol.jar"));
|
||||
permsForAll.add(new java.lang.RuntimePermission("accessClassInPackage.sun.jvmp.av.protocol.https"));
|
||||
permsForAll.add(new java.lang.RuntimePermission("accessClassInPackage.sun.jvmp.av.protocol.gopher"));
|
||||
jvm.registerProtocolHandlers(this.getClass().getClassLoader(), "sun.jvmp.av.protocol");
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return "Waterfall applet viewer";
|
||||
}
|
||||
|
||||
public Enumeration getCIDs()
|
||||
{
|
||||
return cids.elements();
|
||||
}
|
||||
|
||||
public boolean handleConflict(String cid,
|
||||
ObjectFactory f)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public Object instantiate(String cid, Object arg)
|
||||
{
|
||||
AppletViewerArgs a;
|
||||
try {
|
||||
a = (AppletViewerArgs)arg;
|
||||
} catch (ClassCastException e) {
|
||||
return null;
|
||||
}
|
||||
initEnvironment(a.support);
|
||||
if ((cid == null) || (!WFAppletViewer.CID.equals(cid)) || (a == null))
|
||||
return null;
|
||||
return new WFAppletViewerImpl(a.jvm, a.ctx, a.support, a.atts);
|
||||
}
|
||||
|
||||
public PermissionCollection getPermissions(CodeSource codesource)
|
||||
{
|
||||
// pity, but no clone() here
|
||||
Permissions p = new Permissions();
|
||||
for (Enumeration e=permsForAll.elements(); e.hasMoreElements(); )
|
||||
p.add((Permission)e.nextElement());
|
||||
if (codesource != null && codesource.getLocation() != null)
|
||||
{
|
||||
Permissions p1 = (Permissions)permsHash.get(codesource);
|
||||
if (p1 != null)
|
||||
{
|
||||
for (Enumeration e=p1.elements(); e.hasMoreElements(); )
|
||||
p.add((Permission)e.nextElement());
|
||||
}
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
void initEnvironment(BrowserSupport support)
|
||||
{
|
||||
if (inited) return;
|
||||
Properties props = new Properties(System.getProperties());
|
||||
props.put("browser", "sun.jvmp");
|
||||
props.put("browser.vendor", "Sun Microsystems Inc.");
|
||||
props.put("http.agent", "Waterfall Applet Viewer/1.0");
|
||||
props.put("package.restrict.access.sun", "true");
|
||||
props.put("package.restrict.access.netscape", "false");
|
||||
props.put("package.restrict.definition.java", "true");
|
||||
props.put("package.restrict.definition.sun", "true");
|
||||
props.put("package.restrict.definition.netscape", "true");
|
||||
props.put("java.version.applet", "true");
|
||||
props.put("java.vendor.applet", "true");
|
||||
props.put("java.vendor.url.applet", "true");
|
||||
props.put("java.class.version.applet", "true");
|
||||
props.put("os.name.applet", "true");
|
||||
props.put("os.version.applet", "true");
|
||||
props.put("os.arch.applet", "true");
|
||||
props.put("file.separator.applet", "true");
|
||||
props.put("path.separator.applet", "true");
|
||||
props.put("line.separator.applet", "true");
|
||||
System.setProperties(props);
|
||||
ProxyHandler handler
|
||||
= getDefaultProxyHandler(ProxyType.PROXY_TYPE_AUTOCONFIG,
|
||||
null,
|
||||
null,
|
||||
support);
|
||||
try {
|
||||
WFProxyHandler.setDefaultProxyHandler(handler);
|
||||
Authenticator.setDefault(new WFAuthenticatorImpl());
|
||||
} catch(Throwable e) {
|
||||
PluggableJVM.trace(e, PluggableJVM.LOG_WARNING);
|
||||
}
|
||||
}
|
||||
|
||||
protected static ProxyHandler
|
||||
getDefaultProxyHandler(int proxyType,
|
||||
String proxyList,
|
||||
String proxyOverride,
|
||||
BrowserSupport ctx)
|
||||
{
|
||||
return new WFProxyHandler(proxyType,
|
||||
proxyList,
|
||||
proxyOverride,
|
||||
ctx);
|
||||
}
|
||||
}
|
366
java/pluggable-jvm/wf/java/sun/jvmp/av/WFAppletPanel.java
Normal file
366
java/pluggable-jvm/wf/java/sun/jvmp/av/WFAppletPanel.java
Normal file
@ -0,0 +1,366 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: WFAppletPanel.java,v 1.1 2001/07/12 20:26:06 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.av;
|
||||
|
||||
import java.applet.*;
|
||||
import sun.applet.*;
|
||||
import java.net.URL;
|
||||
import java.net.MalformedURLException;
|
||||
import java.util.*;
|
||||
import java.awt.*;
|
||||
import sun.jvmp.*;
|
||||
import sun.jvmp.applet.*;
|
||||
import java.io.IOException;
|
||||
|
||||
// wrapper for JDK's applet viewer implementation
|
||||
public class WFAppletPanel extends AppletPanel implements ProxyType
|
||||
{
|
||||
PluggableJVM jvm;
|
||||
Frame viewFrame;
|
||||
int width;
|
||||
int height;
|
||||
URL documentURL;
|
||||
URL baseURL;
|
||||
WFAppletContext appletContext;
|
||||
|
||||
protected Hashtable atts;
|
||||
|
||||
private boolean inited = false;
|
||||
private String myJars;
|
||||
|
||||
public WFAppletPanel(PluggableJVM jvm,
|
||||
WFAppletContext appletContext,
|
||||
Hashtable atts)
|
||||
{
|
||||
if (appletContext == null)
|
||||
throw new IllegalArgumentException("AppletContext");
|
||||
this.atts = atts;
|
||||
this.jvm = jvm;
|
||||
this.appletContext = appletContext;
|
||||
appletContext.addAppletInContext(this);
|
||||
}
|
||||
|
||||
public void init()
|
||||
{
|
||||
super.init();
|
||||
sendEvent(APPLET_LOAD);
|
||||
sendEvent(APPLET_INIT);
|
||||
}
|
||||
|
||||
public void appletStart()
|
||||
{
|
||||
if (inited) sendEvent(APPLET_START);
|
||||
}
|
||||
|
||||
public void appletStop()
|
||||
{
|
||||
sendEvent(APPLET_STOP);
|
||||
}
|
||||
|
||||
public int getLoadingStatus()
|
||||
{
|
||||
switch (status)
|
||||
{
|
||||
case APPLET_START:
|
||||
return WFAppletViewer.STATUS_STARTED;
|
||||
case APPLET_STOP:
|
||||
return WFAppletViewer.STATUS_STOPPED;
|
||||
case APPLET_ERROR:
|
||||
return WFAppletViewer.STATUS_ERROR;
|
||||
case APPLET_LOAD:
|
||||
return WFAppletViewer.STATUS_LOADING;
|
||||
default:
|
||||
return WFAppletViewer.STATUS_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
public void onClose(final int timeOut)
|
||||
{
|
||||
appletContext.removeAppletFromContext(this);
|
||||
Thread killer = new Thread(new Runnable() {
|
||||
public void run() {
|
||||
if (status==APPLET_LOAD) stopLoading();
|
||||
sendEvent(APPLET_STOP);
|
||||
sendEvent(APPLET_DESTROY);
|
||||
sendEvent(APPLET_DISPOSE);
|
||||
sendEvent(APPLET_QUIT);
|
||||
}
|
||||
});
|
||||
killer.start();
|
||||
}
|
||||
|
||||
public URL getDocumentBase()
|
||||
{
|
||||
return documentURL;
|
||||
}
|
||||
|
||||
public void setDocumentBase(URL url)
|
||||
{
|
||||
documentURL = url;
|
||||
initCodebase();
|
||||
tryToInit();
|
||||
}
|
||||
|
||||
public int getWidth()
|
||||
{
|
||||
String w = getParameter("width");
|
||||
if (w != null) return Integer.valueOf(w).intValue();
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int getHeight()
|
||||
{
|
||||
String h = getParameter("height");
|
||||
if (h != null) return Integer.valueOf(h).intValue();
|
||||
return 0;
|
||||
}
|
||||
|
||||
public String getSerializedObject()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getJarFiles()
|
||||
{
|
||||
return myJars;
|
||||
}
|
||||
|
||||
public String getParameter(String name) {
|
||||
name = name.toLowerCase();
|
||||
if (atts.get(name) != null) {
|
||||
return (String) atts.get(name);
|
||||
} else {
|
||||
String value=null;
|
||||
try {
|
||||
value = getParameterFromHTML(name);
|
||||
} catch (Throwable e) {
|
||||
jvm.trace(e, PluggableJVM.LOG_WARNING);
|
||||
}
|
||||
if (value != null)
|
||||
atts.put(name.toLowerCase(), value);
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
public Hashtable getParameters()
|
||||
{
|
||||
return (Hashtable) atts.clone();
|
||||
}
|
||||
|
||||
public URL getCodeBase()
|
||||
{
|
||||
return baseURL;
|
||||
}
|
||||
|
||||
public String getCode()
|
||||
{
|
||||
String code = getParameter("java_code");
|
||||
if (code==null)
|
||||
code=getParameter("code");
|
||||
return code;
|
||||
}
|
||||
|
||||
public AppletContext getAppletContext()
|
||||
{
|
||||
return appletContext;
|
||||
}
|
||||
|
||||
public void setParameter(String name, Object value) {
|
||||
name = name.toLowerCase();
|
||||
atts.put(name, value.toString());
|
||||
}
|
||||
|
||||
public void setWindow(Frame f)
|
||||
{
|
||||
if (f == null)
|
||||
{
|
||||
// maybe create new top level Frame
|
||||
jvm.trace("Got zero Frame for SetWindow",
|
||||
PluggableJVM.LOG_ERROR);
|
||||
return;
|
||||
}
|
||||
f.setLayout(null);
|
||||
Applet a = getApplet();
|
||||
if (a == null) {
|
||||
try {
|
||||
int wd = Integer.parseInt(getParameter("width"));
|
||||
int ht = Integer.parseInt(getParameter("height"));
|
||||
this.width = wd;
|
||||
this.height = ht;
|
||||
} catch (NumberFormatException e) {
|
||||
setParameter("width", new Integer(width));
|
||||
setParameter("height", new Integer(height));
|
||||
}
|
||||
} else {
|
||||
setParameter("width", new Integer(width));
|
||||
setParameter("height", new Integer(height));
|
||||
setSize(width, height);
|
||||
a.resize(width, height);
|
||||
a.setVisible(true);
|
||||
}
|
||||
setBounds(0, 0, width, height);
|
||||
if (this.viewFrame == f) return;
|
||||
this.viewFrame = f;
|
||||
f.add(this);
|
||||
f.show();
|
||||
f.setBounds(0, 0, width, height);
|
||||
tryToInit();
|
||||
}
|
||||
|
||||
|
||||
public void paint(Graphics g)
|
||||
{
|
||||
if (getApplet() == null && g != null) {
|
||||
setBackground(Color.lightGray);
|
||||
g.setColor(Color.black);
|
||||
Dimension d = getSize();
|
||||
Font fontOld = g.getFont();
|
||||
FontMetrics fm = null;
|
||||
if (fontOld != null)
|
||||
fm = g.getFontMetrics(fontOld);
|
||||
String str = getStatusString();;
|
||||
|
||||
// Display message on the screen if the applet is not started yet.
|
||||
if (d != null && fm != null)
|
||||
g.drawString(str, (d.width - fm.stringWidth(str))/ 2,
|
||||
(d.height + fm.getAscent())/ 2);
|
||||
}
|
||||
}
|
||||
|
||||
protected String getParameterFromHTML(String name)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
protected void loadJarFiles(AppletClassLoader loader)
|
||||
throws IOException, InterruptedException
|
||||
{
|
||||
|
||||
|
||||
// Cache option as read from the Html page tag
|
||||
String copt;
|
||||
|
||||
// Cache Archive value as read from the Html page tag
|
||||
String carch;
|
||||
|
||||
// Cache Version value as read from the Html page tag
|
||||
String cver;
|
||||
|
||||
// Vector to store the names of the jar files to be cached
|
||||
Vector jname = new Vector();
|
||||
|
||||
// Vector to store actual version numbers
|
||||
Vector jVersion = new Vector();
|
||||
|
||||
|
||||
// Figure out the list of all required JARs.
|
||||
String raw = getParameter("java_archive");
|
||||
if (raw == null)
|
||||
{
|
||||
raw = getParameter("archive");
|
||||
}
|
||||
|
||||
// no jars required
|
||||
if (raw == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
myJars = raw;
|
||||
super.loadJarFiles(loader);
|
||||
return;
|
||||
}
|
||||
|
||||
protected AppletClassLoader createClassLoader(final URL codebase)
|
||||
{
|
||||
return new AVClassLoader(codebase);
|
||||
}
|
||||
|
||||
private String getStatusString()
|
||||
{
|
||||
switch (status)
|
||||
{
|
||||
case APPLET_START:
|
||||
return "Applet started.";
|
||||
case APPLET_STOP:
|
||||
return "Applet stopped.";
|
||||
case APPLET_ERROR:
|
||||
return "Error loading applet.";
|
||||
case APPLET_LOAD:
|
||||
return "WF loading applet...";
|
||||
default:
|
||||
// just for user's convinience ;)
|
||||
return "loading applet...";
|
||||
//return "Unknown status";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void tryToInit() {
|
||||
//jvm.trace("tryToInit()", PluggableJVM.LOG_DEBUG);
|
||||
if (!inited && viewFrame != null && getDocumentBase() != null)
|
||||
{
|
||||
inited = true;
|
||||
Thread starter = new Thread(new Runnable() {
|
||||
public void run() {
|
||||
//jvm.trace("real Init()", PluggableJVM.LOG_DEBUG);
|
||||
init();
|
||||
sendEvent(APPLET_START);
|
||||
}
|
||||
});
|
||||
starter.start();
|
||||
}
|
||||
}
|
||||
|
||||
private void initCodebase()
|
||||
{
|
||||
String att = getParameter("java_codebase");
|
||||
if (att == null) att = getParameter("codebase");
|
||||
if (att != null) {
|
||||
if (!att.endsWith("/")) att += "/";
|
||||
try {
|
||||
baseURL = new URL(documentURL, att);
|
||||
} catch (MalformedURLException e) {
|
||||
}
|
||||
}
|
||||
if (baseURL == null) {
|
||||
String file = documentURL.getFile();
|
||||
int i = file.lastIndexOf('/');
|
||||
if (i > 0 && i < file.length() - 1) {
|
||||
try {
|
||||
baseURL = new URL(documentURL, file.substring(0, i + 1));
|
||||
} catch (MalformedURLException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (baseURL == null) baseURL = documentURL;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,83 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: WFAppletViewerImpl.java,v 1.1 2001/07/12 20:26:07 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.av;
|
||||
|
||||
import sun.jvmp.*;
|
||||
import sun.jvmp.applet.*;
|
||||
import java.util.Hashtable;
|
||||
import java.applet.*;
|
||||
import java.net.URL;
|
||||
import java.awt.Frame;
|
||||
|
||||
class WFAppletViewerImpl implements WFAppletViewer
|
||||
{
|
||||
WFAppletPanel av;
|
||||
|
||||
|
||||
WFAppletViewerImpl(PluggableJVM jvm,
|
||||
WFAppletContext ctx,
|
||||
BrowserSupport support,
|
||||
Hashtable atts)
|
||||
{
|
||||
av = new WFAppletPanel(jvm, ctx, atts);
|
||||
}
|
||||
|
||||
public void startApplet()
|
||||
{
|
||||
av.appletStart();
|
||||
}
|
||||
|
||||
public void stopApplet()
|
||||
{
|
||||
av.appletStop();
|
||||
}
|
||||
|
||||
public void destroyApplet(int timeout)
|
||||
{
|
||||
av.onClose(timeout);
|
||||
}
|
||||
|
||||
public int getLoadingStatus()
|
||||
{
|
||||
return av.getLoadingStatus();
|
||||
}
|
||||
|
||||
public void setDocumentBase(URL docbase)
|
||||
{
|
||||
av.setDocumentBase(docbase);
|
||||
}
|
||||
|
||||
public void setWindow(Frame f)
|
||||
{
|
||||
av.setWindow(f);
|
||||
}
|
||||
|
||||
public Applet getApplet()
|
||||
{
|
||||
return av.getApplet();
|
||||
}
|
||||
}
|
||||
|
152
java/pluggable-jvm/wf/java/sun/jvmp/av/WFAuthenticatorImpl.java
Normal file
152
java/pluggable-jvm/wf/java/sun/jvmp/av/WFAuthenticatorImpl.java
Normal file
@ -0,0 +1,152 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: WFAuthenticatorImpl.java,v 1.1 2001/07/12 20:26:07 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.av;
|
||||
|
||||
import java.net.*;
|
||||
import java.security.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
|
||||
public class WFAuthenticatorImpl extends Authenticator
|
||||
{
|
||||
|
||||
protected synchronized PasswordAuthentication getPasswordAuthentication()
|
||||
{
|
||||
PasswordAuthentication pass = null;
|
||||
try
|
||||
{
|
||||
InetAddress host = getRequestingSite();
|
||||
String hostName = "<<unknown>>";
|
||||
if (host != null) hostName = host.toString();
|
||||
pass = askUser(hostName,
|
||||
getRequestingPrompt(),
|
||||
getRequestingScheme());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// do nothing here
|
||||
e.printStackTrace();
|
||||
}
|
||||
return pass;
|
||||
}
|
||||
|
||||
protected PasswordAuthentication askUser(String host,
|
||||
String prompt,
|
||||
String scheme)
|
||||
{
|
||||
AuthDialog dlg = new AuthDialog(host, prompt, scheme);
|
||||
return dlg.askUser();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class AuthDialog extends Frame
|
||||
{
|
||||
TextField user;
|
||||
TextField passwd;
|
||||
PasswordAuthentication auth;
|
||||
|
||||
AuthDialog(String host,
|
||||
String prompt,
|
||||
String scheme)
|
||||
{
|
||||
super("Authentication dialog");
|
||||
//System.err.println("h="+host+" p="+prompt+" s="+scheme);
|
||||
setLayout(new BorderLayout());
|
||||
setResizable(true);
|
||||
Panel p1 = new Panel();
|
||||
p1.setLayout(new BorderLayout());
|
||||
user = new TextField(15);
|
||||
passwd = new TextField(15);
|
||||
passwd.setEchoChar('*');
|
||||
p1.add(new Label("Auth request for "+host),
|
||||
BorderLayout.NORTH);
|
||||
p1.add(new Label(prompt), BorderLayout.SOUTH);
|
||||
|
||||
Panel p2 = new Panel();
|
||||
p2.setLayout(new BorderLayout());
|
||||
Panel p21 = new Panel();
|
||||
p21.setLayout(new FlowLayout(FlowLayout.LEFT));
|
||||
p21.add(new Label("Username: "));
|
||||
p21.add(user);
|
||||
Panel p22 = new Panel();
|
||||
p22.setLayout(new FlowLayout(FlowLayout.LEFT));
|
||||
p22.add(new Label("Password: "));
|
||||
p22.add(passwd);
|
||||
p2.add(p21, BorderLayout.NORTH);
|
||||
p2.add(p22, BorderLayout.SOUTH);
|
||||
|
||||
Panel p3 = new Panel();
|
||||
p3.setLayout(new FlowLayout(FlowLayout.CENTER));
|
||||
Button ok = new Button("OK");
|
||||
ok.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
synchronized (user) {
|
||||
auth = new PasswordAuthentication(user.getText(),
|
||||
passwd.getText().toCharArray());
|
||||
user.notify();
|
||||
}
|
||||
}
|
||||
});
|
||||
p3.add(ok);
|
||||
Button cancel = new Button("Cancel");
|
||||
cancel.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
auth = null;
|
||||
synchronized (user) {
|
||||
// System.err.println("u="+user.getText()+" p="+passwd.getText());
|
||||
user.notify();
|
||||
}
|
||||
}
|
||||
});
|
||||
p3.add(cancel);
|
||||
|
||||
add(p1, BorderLayout.NORTH);
|
||||
add(p3, BorderLayout.SOUTH);
|
||||
add(p2, BorderLayout.CENTER);
|
||||
setSize(320,180);
|
||||
}
|
||||
|
||||
PasswordAuthentication askUser()
|
||||
{
|
||||
show();
|
||||
try {
|
||||
synchronized (user) {
|
||||
user.wait();
|
||||
}
|
||||
} catch (InterruptedException e) {}
|
||||
hide();
|
||||
return auth;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
112
java/pluggable-jvm/wf/java/sun/jvmp/av/WFProxyHandler.java
Normal file
112
java/pluggable-jvm/wf/java/sun/jvmp/av/WFProxyHandler.java
Normal file
@ -0,0 +1,112 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: WFProxyHandler.java,v 1.1 2001/07/12 20:26:07 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.av;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.Hashtable;
|
||||
import java.util.StringTokenizer;
|
||||
import sun.jvmp.*;
|
||||
import sun.jvmp.applet.*;
|
||||
|
||||
|
||||
public class WFProxyHandler implements ProxyHandler, ProxyType {
|
||||
|
||||
private int proxyType = PROXY_TYPE_NO_PROXY;
|
||||
|
||||
private String proxyList = null;
|
||||
private String proxyOverride = null;
|
||||
private Hashtable proxyCache = null;
|
||||
private BrowserSupport support = null;
|
||||
|
||||
public WFProxyHandler(int proxyType,
|
||||
String proxyList,
|
||||
String proxyOverride,
|
||||
BrowserSupport sup)
|
||||
{
|
||||
this.proxyType = proxyType;
|
||||
this.proxyList = proxyList;
|
||||
this.proxyOverride = proxyOverride;
|
||||
this.support = sup;
|
||||
// XXX: implement me
|
||||
if (proxyType == PROXY_TYPE_MANUAL)
|
||||
{
|
||||
PluggableJVM.trace("Manual proxy config not supported yet",
|
||||
PluggableJVM.LOG_ERROR);
|
||||
}
|
||||
proxyCache = new Hashtable();
|
||||
}
|
||||
|
||||
public synchronized ProxyInfo getProxyInfo(URL u)
|
||||
{
|
||||
ProxyInfo pinfo = null;
|
||||
|
||||
try {
|
||||
pinfo = (ProxyInfo) proxyCache.get(u.getProtocol()
|
||||
+ u.getHost()
|
||||
+ u.getPort());
|
||||
|
||||
// currently the only way to get proxy is to ask it from browser
|
||||
if (pinfo != null)
|
||||
return pinfo;
|
||||
if (support == null)
|
||||
pinfo = null;
|
||||
else
|
||||
pinfo = support.getProxyInfoForURL(u);
|
||||
proxyCache.put(u.getProtocol() + u.getHost() + u.getPort(), pinfo);
|
||||
}
|
||||
catch (Exception e) {
|
||||
PluggableJVM.trace("Proxy is not configured",
|
||||
PluggableJVM.LOG_ERROR);
|
||||
PluggableJVM.trace(e, PluggableJVM.LOG_ERROR);
|
||||
pinfo = new ProxyInfo(null, -1);
|
||||
}
|
||||
return pinfo;
|
||||
}
|
||||
|
||||
// The current default proxy handler
|
||||
private static ProxyHandler handler;
|
||||
|
||||
public static ProxyHandler getDefaultProxyHandler()
|
||||
{
|
||||
return handler;
|
||||
}
|
||||
|
||||
public static void setDefaultProxyHandler(ProxyHandler newDefault)
|
||||
{
|
||||
handler = newDefault;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,43 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: Handler.java,v 1.1 2001/07/12 20:26:09 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.av.protocol.http;
|
||||
|
||||
import java.net.*;
|
||||
import java.io.IOException;
|
||||
|
||||
public class Handler extends sun.net.www.protocol.http.Handler
|
||||
{
|
||||
|
||||
public URLConnection openConnection(URL u)
|
||||
throws IOException
|
||||
{
|
||||
return new HttpURLConnection(u, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,102 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: HttpURLConnection.java,v 1.1 2001/07/12 20:26:11 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.av.protocol.http;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.security.*;
|
||||
import sun.net.*;
|
||||
import java.net.*;
|
||||
import sun.net.www.*;
|
||||
import sun.jvmp.applet.*;
|
||||
import sun.jvmp.av.*;
|
||||
|
||||
class HttpURLConnection extends sun.net.www.protocol.http.HttpURLConnection
|
||||
{
|
||||
protected String proxy = null;
|
||||
protected int proxyPort = -1;
|
||||
|
||||
public HttpURLConnection(URL u, Handler handler)
|
||||
throws IOException
|
||||
{
|
||||
super(u, handler);
|
||||
ProxyHandler p = WFProxyHandler.getDefaultProxyHandler();
|
||||
ProxyInfo pi = (p != null) ? p.getProxyInfo(u) : null;
|
||||
if (pi != null)
|
||||
{
|
||||
this.proxy = pi.getProxy();
|
||||
this.proxyPort = pi.getPort();
|
||||
//System.err.println("for url="+url+" proxy="+proxy);
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void connect()
|
||||
throws IOException
|
||||
{
|
||||
if (connected) return;
|
||||
try {
|
||||
AccessController.doPrivileged(new PrivilegedExceptionAction()
|
||||
{
|
||||
public Object run() throws IOException {
|
||||
http = new sun.net.www.http.HttpClient(url, proxy, proxyPort);
|
||||
ps = (PrintStream)http.getOutputStream();
|
||||
return null;
|
||||
}
|
||||
});
|
||||
} catch (PrivilegedActionException e) {
|
||||
IOException ioe = (IOException)e.getException();
|
||||
System.err.println("rethrown security exception");
|
||||
throw ioe;
|
||||
}
|
||||
connected = true;
|
||||
}
|
||||
|
||||
public synchronized InputStream getInputStream()
|
||||
throws IOException
|
||||
{
|
||||
if (!connected) connect();
|
||||
return super.getInputStream();
|
||||
}
|
||||
|
||||
public Permission getPermission() throws IOException
|
||||
{
|
||||
if (proxy != null)
|
||||
{
|
||||
return new java.net.SocketPermission(proxy+":"+proxyPort,
|
||||
"connect,accept,resolve");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,36 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: JSContext.java,v 1.1 2001/07/12 20:26:14 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.javascript;
|
||||
|
||||
/**
|
||||
* Interface to be implemented by applet context if it likes to
|
||||
* provide LiveConnect functionality
|
||||
**/
|
||||
public interface JSContext {
|
||||
|
||||
netscape.javascript.JSObject getJSObject();
|
||||
|
||||
}
|
@ -0,0 +1,266 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: MozillaAppletPeer.java,v 1.3 2001/07/12 20:26:17 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.mozilla;
|
||||
|
||||
import sun.jvmp.*;
|
||||
import sun.jvmp.security.*;
|
||||
import sun.jvmp.applet.*;
|
||||
import java.util.Hashtable;
|
||||
import java.net.URL;
|
||||
import java.net.MalformedURLException;
|
||||
import java.applet.*;
|
||||
import java.awt.Frame;
|
||||
|
||||
public class MozillaAppletPeer extends WFAppletContext
|
||||
implements HostObjectPeer, sun.jvmp.javascript.JSContext
|
||||
{
|
||||
private int m_id;
|
||||
private int m_winid;
|
||||
private long m_params = 0;
|
||||
MozillaPeerFactory m_factory;
|
||||
WFAppletViewer m_viewer = null;
|
||||
private boolean m_stopped = true;
|
||||
protected netscape.javascript.JSObject
|
||||
m_js = null;
|
||||
PluggableJVM jvm;
|
||||
|
||||
MozillaAppletPeer(MozillaHostObjectPeer fake, int id)
|
||||
{
|
||||
m_factory = fake.m_factory;;
|
||||
jvm = m_factory.m_jvm;
|
||||
jvm.trace("CREATED APPLET OBJECT: "+this,
|
||||
PluggableJVM.LOG_DEBUG);
|
||||
m_id = id;
|
||||
m_winid = 0;
|
||||
}
|
||||
|
||||
public int getID()
|
||||
{
|
||||
return m_id;
|
||||
}
|
||||
|
||||
public void setID(int id)
|
||||
{
|
||||
if (m_id != 0) return;
|
||||
m_id = id;
|
||||
}
|
||||
public int handleEvent(SecurityCaps caps, int eventID, long eventData)
|
||||
{
|
||||
int retval = 0;
|
||||
//jvm.trace("GOT EVENT "+eventID+"!!!");
|
||||
switch (eventID)
|
||||
{
|
||||
case PE_CREATE:
|
||||
retval = 1;
|
||||
break;
|
||||
case PE_SETTYPE:
|
||||
jvm.trace("SETTYPE called twice - IGNORED",
|
||||
PluggableJVM.LOG_WARNING);
|
||||
retval = 1;
|
||||
break;
|
||||
case PE_SETWINDOW:
|
||||
jvm.trace("PE_SETWINDOW", PluggableJVM.LOG_DEBUG);
|
||||
m_winid = (int)eventData;
|
||||
retval = handleSetWindow();
|
||||
break;
|
||||
case PE_NEWPARAMS:
|
||||
m_params = eventData;
|
||||
retval = handleNewParams();
|
||||
break;
|
||||
case PE_DESTROY:
|
||||
retval = destroy(caps);
|
||||
break;
|
||||
case PE_STOP:
|
||||
retval = 1;
|
||||
// do it before stop, as after we can't be sure
|
||||
// our browser peer is still alive
|
||||
m_stopped = true;
|
||||
if (m_viewer != null) m_viewer.stopApplet();
|
||||
break;
|
||||
case PE_START:
|
||||
retval = 1;
|
||||
m_stopped = false;
|
||||
m_viewer.startApplet();
|
||||
break;
|
||||
case PE_GETPEER:
|
||||
// this call is handled in both ways - direct and
|
||||
// queued as policy on place where to handle
|
||||
// JS calls can be changed on Mozilla side
|
||||
// At least for now it works OK with both cases
|
||||
retval = handleCall(caps, PE_GETPEER, eventData);
|
||||
break;
|
||||
default:
|
||||
retval = 0;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
public int handleCall(SecurityCaps caps, int arg1, long arg2)
|
||||
{
|
||||
int retval = 0;
|
||||
switch (arg1)
|
||||
{
|
||||
case PE_GETPEER:
|
||||
if (m_viewer == null) break;
|
||||
Object o = null;
|
||||
switch (m_viewer.getLoadingStatus())
|
||||
{
|
||||
case WFAppletViewer.STATUS_STARTED:
|
||||
o = m_viewer.getApplet();
|
||||
break;
|
||||
case WFAppletViewer.STATUS_ERROR:
|
||||
o = null;
|
||||
break;
|
||||
default:
|
||||
jvm.trace("XXX: Applet loading in progress....",
|
||||
PluggableJVM.LOG_WARNING);
|
||||
// here we just return NULL, as for the moment no valid
|
||||
// applet object exist - if someone really needs this
|
||||
// object - call later
|
||||
break;
|
||||
}
|
||||
nativeReturnJObject(o, arg2);
|
||||
retval = 1;
|
||||
break;
|
||||
default:
|
||||
retval = 0;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
public int destroy(SecurityCaps caps)
|
||||
{
|
||||
jvm.trace("DESTROY", PluggableJVM.LOG_DEBUG);
|
||||
finalizeParams();
|
||||
m_params = 0;
|
||||
m_stopped = true;
|
||||
if (m_viewer != null) {
|
||||
m_viewer.destroyApplet(2500);
|
||||
m_viewer = null;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
public HostObjectPeerFactory getFactory()
|
||||
{
|
||||
return m_factory;
|
||||
}
|
||||
|
||||
private int handleNewParams()
|
||||
{
|
||||
String[][] params = getParams();
|
||||
String[] keys = params[0];
|
||||
String[] vals = params[1];
|
||||
URL docbase;
|
||||
Hashtable hparams = new Hashtable();
|
||||
for (int i=0; i < keys.length; i++)
|
||||
hparams.put(keys[i].toLowerCase(), vals[i]);
|
||||
//hparams.put("OWNER", this);
|
||||
//hparams.put("ID", new Integer(m_id));
|
||||
try
|
||||
{
|
||||
docbase = new URL((String)hparams.get("docbase"));
|
||||
}
|
||||
catch (MalformedURLException e)
|
||||
{
|
||||
jvm.trace("invalid docbase due "+e,
|
||||
PluggableJVM.LOG_ERROR);
|
||||
return 0;
|
||||
}
|
||||
m_viewer = m_factory.m_mgr.createAppletViewer(this,
|
||||
m_factory,
|
||||
hparams);
|
||||
m_viewer.setDocumentBase(docbase);
|
||||
return handleSetWindow();
|
||||
}
|
||||
|
||||
private int handleSetWindow()
|
||||
{
|
||||
if (m_stopped) return 0;
|
||||
if (m_winid != 0) {
|
||||
Frame f = jvm.getFrameWithId(m_winid);
|
||||
if (f != null) m_viewer.setWindow(f);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
/**
|
||||
* From AppletContext
|
||||
*/
|
||||
public void showStatus(String string)
|
||||
{
|
||||
//PluggableJVM.trace("Status: "+string);
|
||||
// calls back peer in Mozilla
|
||||
if (m_stopped) return;
|
||||
nativeShowStatus(string);
|
||||
}
|
||||
|
||||
public void showDocument(URL url, String target)
|
||||
{
|
||||
// never pass events after stop() - otherwise
|
||||
// we'll crash the browser
|
||||
if (m_stopped) return;
|
||||
// calls back peer in Mozilla
|
||||
nativeShowDocument(url.toString(), target);
|
||||
}
|
||||
|
||||
public void showDocument(URL url)
|
||||
{
|
||||
showDocument(url, "_top");
|
||||
}
|
||||
|
||||
/**
|
||||
* From JSContext
|
||||
*/
|
||||
public netscape.javascript.JSObject getJSObject()
|
||||
{
|
||||
// check if we got params from browser - fail otherwise
|
||||
if (m_params == 0) return null;
|
||||
if (m_js == null)
|
||||
m_js = m_factory.getJSObject(m_params);
|
||||
return m_js;
|
||||
}
|
||||
|
||||
// duplicates of nsIJavaObjectInfo methods
|
||||
// funny way to return 2 arrays of strings
|
||||
native protected String[][] getParams();
|
||||
native protected void finalizeParams();
|
||||
native protected boolean nativeShowStatus(String status);
|
||||
native protected boolean nativeShowDocument(String url,
|
||||
String target);
|
||||
// method to write jobject ret to native pointer ptr
|
||||
native protected void nativeReturnJObject(Object ret, long ptr);
|
||||
// XXX: add others
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,106 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: MozillaHostObjectPeer.java,v 1.3 2001/07/12 20:26:18 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.mozilla;
|
||||
|
||||
import sun.jvmp.*;
|
||||
import sun.jvmp.security.*;
|
||||
|
||||
public class MozillaHostObjectPeer implements HostObjectPeer
|
||||
{
|
||||
private int m_id = 0;
|
||||
private long m_data = 0;
|
||||
private HostObjectPeer m_realPeer = null;
|
||||
MozillaPeerFactory m_factory = null;
|
||||
|
||||
public MozillaHostObjectPeer(MozillaPeerFactory factory, int version)
|
||||
{
|
||||
m_factory = factory;
|
||||
}
|
||||
|
||||
public int getID()
|
||||
{
|
||||
return m_id;
|
||||
}
|
||||
|
||||
public void setID(int id)
|
||||
{
|
||||
if (m_id != 0) return;
|
||||
m_id = id;
|
||||
}
|
||||
|
||||
public int handleEvent(SecurityCaps caps, int eventID, long eventData)
|
||||
{
|
||||
int retval = 0;
|
||||
// forward functionality to the real peer
|
||||
if (m_realPeer != null)
|
||||
return m_realPeer.handleEvent(caps, eventID, eventData);
|
||||
switch (eventID)
|
||||
{
|
||||
case PE_CREATE:
|
||||
retval = 1;
|
||||
break;
|
||||
case PE_SETTYPE:
|
||||
switch((int)eventData)
|
||||
{
|
||||
case PT_APPLET:
|
||||
case PT_OBJECT:
|
||||
m_realPeer = new MozillaAppletPeer(this, m_id);
|
||||
// maybe send CREATE event from here?
|
||||
retval = 1;
|
||||
break;
|
||||
default:
|
||||
m_factory.m_jvm.trace("Unknown tag type",
|
||||
PluggableJVM.LOG_WARNING);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
retval = 0;
|
||||
break;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
public int destroy(SecurityCaps caps)
|
||||
{
|
||||
if (m_realPeer != null)
|
||||
return m_realPeer.destroy(caps);
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int handleCall(SecurityCaps caps, int arg1, long arg2)
|
||||
{
|
||||
if (m_realPeer != null)
|
||||
return m_realPeer.handleCall(caps, arg1, arg2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
public HostObjectPeerFactory getFactory()
|
||||
{
|
||||
return m_factory;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -0,0 +1,263 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: MozillaPeerFactory.java,v 1.3 2001/07/12 20:26:18 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.mozilla;
|
||||
|
||||
import sun.jvmp.*;
|
||||
import sun.jvmp.security.*;
|
||||
import sun.jvmp.applet.*;
|
||||
import java.net.*;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.*;
|
||||
import java.security.*;
|
||||
import java.lang.reflect.*;
|
||||
|
||||
public class MozillaPeerFactory implements HostObjectPeerFactory,
|
||||
AccessControlDecider,
|
||||
BrowserSupport
|
||||
{
|
||||
protected final String cid = "@sun.com/wf/mozilla/appletpeer;1";
|
||||
protected final int version = 1;
|
||||
PluggableJVM m_jvm = null;
|
||||
protected long m_params = 0;
|
||||
protected int m_id;
|
||||
private static boolean initialized = false;
|
||||
protected URL[] m_codebase;
|
||||
AppletManager m_mgr;
|
||||
Constructor jsConstructor;
|
||||
|
||||
protected MozillaPeerFactory(PluggableJVM jvm, long data)
|
||||
throws Exception
|
||||
{
|
||||
loadLibrary();
|
||||
m_jvm = jvm;
|
||||
m_params = data;
|
||||
/* as we could load only one factory, this will allow
|
||||
generic operations, like JS evaluation, to be performed without
|
||||
any applets at all */
|
||||
try {
|
||||
Class jsClass = Class.forName("sun.jvmp.mozilla.JSObject");
|
||||
jsConstructor = jsClass.getDeclaredConstructor(new Class[]{Long.class});
|
||||
Field eval = jsClass.getDeclaredField("m_evaluator");
|
||||
eval.setLong(null, data);
|
||||
} catch (Exception e) {
|
||||
jsConstructor = null;
|
||||
jvm.trace("Liveconnect not inited - sorry", PluggableJVM.LOG_ERROR);
|
||||
jvm.trace(e, PluggableJVM.LOG_ERROR);
|
||||
}
|
||||
|
||||
m_mgr = new AppletManager(jvm);
|
||||
try {
|
||||
m_codebase = null;
|
||||
URLClassLoader cl =
|
||||
(URLClassLoader)this.getClass().getClassLoader();
|
||||
if (cl != null) m_codebase = cl.getURLs();
|
||||
} catch (ClassCastException e) {
|
||||
// do nothing here
|
||||
}
|
||||
System.setSecurityManager(new MozillaSecurityManager());
|
||||
}
|
||||
|
||||
netscape.javascript.JSObject getJSObject(long params)
|
||||
{
|
||||
if (jsConstructor == null) return null;
|
||||
netscape.javascript.JSObject jso = null;
|
||||
try {
|
||||
Object o = jsConstructor.newInstance(new Object[]{new Long(params)});
|
||||
jso = (netscape.javascript.JSObject)o;
|
||||
} catch (Exception e) {
|
||||
m_jvm.trace(e, PluggableJVM.LOG_ERROR);
|
||||
}
|
||||
return jso;
|
||||
}
|
||||
|
||||
public static HostObjectPeerFactory start(PluggableJVM jvm, Long data)
|
||||
{
|
||||
MozillaPeerFactory factory = null;
|
||||
try {
|
||||
factory = new MozillaPeerFactory(jvm, data.longValue());
|
||||
} catch (Exception e) {
|
||||
jvm.trace("MOZILLA FACTORY NOT CREATED", PluggableJVM.LOG_ERROR);
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
return factory;
|
||||
}
|
||||
|
||||
public String getCID()
|
||||
{
|
||||
return cid;
|
||||
}
|
||||
|
||||
public HostObjectPeer create(int version)
|
||||
{
|
||||
|
||||
return new MozillaHostObjectPeer(this, version);
|
||||
}
|
||||
|
||||
public int handleEvent(SecurityCaps caps,
|
||||
int eventID,
|
||||
long eventData)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
private native int nativeHandleCall(int arg1, long arg2);
|
||||
|
||||
public int handleCall(SecurityCaps caps, int arg1, long arg2)
|
||||
{
|
||||
int rv = 0;
|
||||
if (arg1 > 0)
|
||||
rv = nativeHandleCall(arg1, arg2);
|
||||
else
|
||||
rv = 1;
|
||||
return rv;
|
||||
}
|
||||
|
||||
public int destroy(SecurityCaps caps)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
public PermissionCollection getPermissions(CodeSource codesource)
|
||||
{
|
||||
Permissions perms = new Permissions();
|
||||
URL location = codesource.getLocation();
|
||||
if (m_codebase != null && location != null) {
|
||||
for (int i=0; i<m_codebase.length; i++)
|
||||
{
|
||||
// XXX: maybe I'm totally wrong here
|
||||
if (location.equals(m_codebase[i]))
|
||||
{
|
||||
PluggableJVM.trace("extension granted all permissions to own codesource "+codesource,
|
||||
PluggableJVM.LOG_WARNING);
|
||||
perms.add(new java.security.AllPermission());
|
||||
return perms;
|
||||
}
|
||||
}
|
||||
}
|
||||
perms.add(new RuntimePermission("accessClassInPackage.sun.jvmp.mozilla"));
|
||||
return perms;
|
||||
}
|
||||
|
||||
private void loadLibrary() throws UnsatisfiedLinkError
|
||||
{
|
||||
String libname = "wf_moz6";
|
||||
try
|
||||
{
|
||||
System.loadLibrary(libname);
|
||||
}
|
||||
catch (UnsatisfiedLinkError ex)
|
||||
{
|
||||
PluggableJVM.trace("System could not load DLL: " + libname,
|
||||
PluggableJVM.LOG_ERROR);
|
||||
PluggableJVM.trace("Path is:" +
|
||||
System.getProperty("java.library.path"),
|
||||
PluggableJVM.LOG_WARNING);
|
||||
PluggableJVM.trace(ex.toString(),
|
||||
PluggableJVM.LOG_WARNING);
|
||||
throw ex;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* AccessControlDecider methods
|
||||
*/
|
||||
public int decide(CallingContext ctx, String principal, int cap_no)
|
||||
{
|
||||
return NA;
|
||||
}
|
||||
|
||||
public boolean belongs(int cap_no)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* BrowserSupport methods
|
||||
*/
|
||||
public ProxyInfo getProxyInfoForURL(URL url)
|
||||
{
|
||||
String s = nativeGetProxyInfoForURL(url.toString());
|
||||
m_jvm.trace("Proxy string for:\""+
|
||||
url.toString() +"\" is \""+s+"\"",
|
||||
PluggableJVM.LOG_DEBUG);
|
||||
ProxyInfo info = extractAutoProxySetting(s);
|
||||
return info;
|
||||
}
|
||||
|
||||
public URLConnection getConnectionForURL(URL url)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private native String nativeGetProxyInfoForURL(String s);
|
||||
private ProxyInfo extractAutoProxySetting(String s)
|
||||
{
|
||||
if (s != null)
|
||||
{
|
||||
StringTokenizer st = new StringTokenizer(s, ";", false);
|
||||
if (st.hasMoreTokens())
|
||||
{
|
||||
String pattern = st.nextToken();
|
||||
|
||||
int i = pattern.indexOf("PROXY");
|
||||
|
||||
if (i != -1) {
|
||||
// "PROXY" is specified
|
||||
return new ProxyInfo(pattern.substring(i + 6));
|
||||
}
|
||||
|
||||
i = pattern.indexOf("SOCKS");
|
||||
|
||||
if (i != -1)
|
||||
{
|
||||
// "SOCKS" is specified
|
||||
return new ProxyInfo(null, pattern.substring(i + 6));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// proxy string contains 'DIRECT' or unrecognized text
|
||||
return new ProxyInfo(null, -1);
|
||||
}
|
||||
|
||||
public int getID()
|
||||
{
|
||||
return m_id;
|
||||
}
|
||||
|
||||
public void setID(int id)
|
||||
{
|
||||
if (m_id != 0) return;
|
||||
m_id = id;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,75 @@
|
||||
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: MozillaSecurityManager.java,v 1.3 2001/07/12 20:26:18 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
package sun.jvmp.mozilla;
|
||||
|
||||
import sun.jvmp.*;
|
||||
import sun.jvmp.security.*;
|
||||
import sun.jvmp.applet.*;
|
||||
import java.security.*;
|
||||
|
||||
public class MozillaSecurityManager extends WFAppletSecurityManager
|
||||
{
|
||||
java.net.SocketPermission resolvePerm =
|
||||
new java.net.SocketPermission("*", "resolve");
|
||||
|
||||
|
||||
public void checkPackageAccess(final String p)
|
||||
{
|
||||
//System.err.println("checkPackageAccesss: "+p);
|
||||
// this check used to prevent infinite recursion when calling implies()
|
||||
// in JavaScriptProtectionDomain,, as it has to load some classes
|
||||
if (p.equals("sun.jvmp.mozilla"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
super.checkPackageAccess(p);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void checkPermission(Permission p)
|
||||
{
|
||||
// this kludge is workaround for some bug/feature in Sun's JDK
|
||||
// 1.3.1 and 1.4 related to handling proxies and applets
|
||||
if (p != null && p instanceof java.net.SocketPermission)
|
||||
{
|
||||
String action = ((java.net.SocketPermission)p).getActions();
|
||||
if ("resolve".equals(action)) return;
|
||||
//AccessControlContext c = AccessController.getContext();
|
||||
//System.err.println("p="+p+" ctx="+c);
|
||||
}
|
||||
super.checkPermission(p);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,112 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: Aptest.java,v 1.1 2001/05/10 18:12:36 edburns%acm.org Exp $
|
||||
*
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <inn@sparc.spb.su>
|
||||
*/
|
||||
|
||||
import java.util.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.applet.*;
|
||||
import java.text.*;
|
||||
import java.net.*;
|
||||
|
||||
public class Aptest extends Applet implements Runnable {
|
||||
Thread timer; // The thread that displays clock
|
||||
int lastxs, lastys, lastxm,
|
||||
lastym, lastxh, lastyh; // Dimensions used to draw hands
|
||||
SimpleDateFormat formatter; // Formats the date displayed
|
||||
String lastdate; // String to hold date displayed
|
||||
Font clockFaceFont; // Font for number display on clock
|
||||
Date currentDate; // Used to get date to display
|
||||
Color handColor; // Color of main hands and dial
|
||||
Color numberColor; // Color of second hand and numbers
|
||||
|
||||
public void init() {
|
||||
Button b1 = new Button("Show status");
|
||||
b1.setBounds(0, 0, 40, 40);
|
||||
b1.addActionListener(new ActionListener()
|
||||
{
|
||||
public void actionPerformed(ActionEvent e)
|
||||
{
|
||||
AppletContext ctx = getAppletContext();
|
||||
ctx.showStatus("DONE SHOW STATUS");
|
||||
}
|
||||
});
|
||||
Button b2 = new Button("Show document");
|
||||
b2.setBounds(0, 0, 40, 40);
|
||||
b2.addActionListener(new ActionListener()
|
||||
{
|
||||
public void actionPerformed(ActionEvent e)
|
||||
{
|
||||
AppletContext ctx = getAppletContext();
|
||||
try {
|
||||
ctx.showDocument(new URL("http://www.sun.com"));
|
||||
} catch (Exception ex) {}
|
||||
}
|
||||
});
|
||||
setLayout(new FlowLayout(FlowLayout.CENTER));
|
||||
|
||||
add(b1);
|
||||
add(b2);
|
||||
resize(300,300); // Set clock window size
|
||||
}
|
||||
|
||||
public void start() {
|
||||
timer = new Thread(this);
|
||||
timer.start();
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
timer = null;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
Thread me = Thread.currentThread();
|
||||
while (timer == me) {
|
||||
try {
|
||||
Thread.currentThread().sleep(100);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void update(Graphics g) {
|
||||
paint(g);
|
||||
}
|
||||
|
||||
public String getAppletInfo() {
|
||||
return "Title: A Clock \nAuthor: Rachel Gollub, 1995 \nAn analog clock.";
|
||||
}
|
||||
|
||||
public String[][] getParameterInfo() {
|
||||
String[][] info = {
|
||||
{"bgcolor", "hexadecimal RGB number", "The background color. Default is the color of your browser."},
|
||||
{"fgcolor1", "hexadecimal RGB number", "The color of the hands and dial. Default is blue."},
|
||||
{"fgcolor2", "hexadecimal RGB number", "The color of the seconds hand and numbers. Default is dark gray."}
|
||||
};
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,329 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: UnixShell.c,v 1.1 2001/05/10 18:12:37 edburns%acm.org Exp $
|
||||
*
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <inn@sparc.spb.su>
|
||||
*/
|
||||
|
||||
/* -*- Mode: C; tab-width: 4; -*- */
|
||||
/******************************************************************************
|
||||
* Copyright (c) 1996 Netscape Communications. All rights reserved.
|
||||
******************************************************************************/
|
||||
/*
|
||||
* UnixShell.c
|
||||
*
|
||||
* Netscape Client Plugin API
|
||||
* - Function that need to be implemented by plugin developers
|
||||
*
|
||||
* This file defines a "Template" plugin that plugin developers can use
|
||||
* as the basis for a real plugin. This shell just provides empty
|
||||
* implementations of all functions that the plugin can implement
|
||||
* that will be called by Netscape (the NPP_xxx methods defined in
|
||||
* npapi.h).
|
||||
*
|
||||
* dp Suresh <dp@netscape.com>
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "npapi.h"
|
||||
|
||||
/***********************************************************************
|
||||
* Instance state information about the plugin.
|
||||
*
|
||||
* PLUGIN DEVELOPERS:
|
||||
* Use this struct to hold per-instance information that you'll
|
||||
* need in the various functions in this file.
|
||||
***********************************************************************/
|
||||
|
||||
typedef struct _PluginInstance
|
||||
{
|
||||
int nothing;
|
||||
} PluginInstance;
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
*
|
||||
* Empty implementations of plugin API functions
|
||||
*
|
||||
* PLUGIN DEVELOPERS:
|
||||
* You will need to implement these functions as required by your
|
||||
* plugin.
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
char*
|
||||
NPP_GetMIMEDescription(void)
|
||||
{
|
||||
return("mime/type:sample:Template Only");
|
||||
}
|
||||
|
||||
NPError
|
||||
NPP_GetValue(void *future, NPPVariable variable, void *value)
|
||||
{
|
||||
NPError err = NPERR_NO_ERROR;
|
||||
|
||||
switch (variable) {
|
||||
case NPPVpluginNameString:
|
||||
*((char **)value) = "Template plugin";
|
||||
break;
|
||||
case NPPVpluginDescriptionString:
|
||||
*((char **)value) =
|
||||
"This plugins handles nothing. This is only"
|
||||
" a template.";
|
||||
break;
|
||||
default:
|
||||
err = NPERR_GENERIC_ERROR;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
NPError
|
||||
NPP_Initialize(void)
|
||||
{
|
||||
return NPERR_NO_ERROR;
|
||||
}
|
||||
|
||||
|
||||
jref
|
||||
NPP_GetJavaClass()
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
NPP_Shutdown(void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
NPError
|
||||
NPP_New(NPMIMEType pluginType,
|
||||
NPP instance,
|
||||
uint16 mode,
|
||||
int16 argc,
|
||||
char* argn[],
|
||||
char* argv[],
|
||||
NPSavedData* saved)
|
||||
{
|
||||
PluginInstance* This;
|
||||
|
||||
if (instance == NULL)
|
||||
return NPERR_INVALID_INSTANCE_ERROR;
|
||||
|
||||
instance->pdata = NPN_MemAlloc(sizeof(PluginInstance));
|
||||
|
||||
This = (PluginInstance*) instance->pdata;
|
||||
|
||||
if (This != NULL)
|
||||
return NPERR_NO_ERROR;
|
||||
else
|
||||
return NPERR_OUT_OF_MEMORY_ERROR;
|
||||
}
|
||||
|
||||
|
||||
NPError
|
||||
NPP_Destroy(NPP instance, NPSavedData** save)
|
||||
{
|
||||
PluginInstance* This;
|
||||
|
||||
if (instance == NULL)
|
||||
return NPERR_INVALID_INSTANCE_ERROR;
|
||||
|
||||
This = (PluginInstance*) instance->pdata;
|
||||
|
||||
/* PLUGIN DEVELOPERS:
|
||||
* If desired, call NP_MemAlloc to create a
|
||||
* NPSavedDate structure containing any state information
|
||||
* that you want restored if this plugin instance is later
|
||||
* recreated.
|
||||
*/
|
||||
|
||||
if (This != NULL) {
|
||||
NPN_MemFree(instance->pdata);
|
||||
instance->pdata = NULL;
|
||||
}
|
||||
|
||||
return NPERR_NO_ERROR;
|
||||
}
|
||||
|
||||
|
||||
|
||||
NPError
|
||||
NPP_SetWindow(NPP instance, NPWindow* window)
|
||||
{
|
||||
PluginInstance* This;
|
||||
|
||||
if (instance == NULL)
|
||||
return NPERR_INVALID_INSTANCE_ERROR;
|
||||
|
||||
if (window == NULL)
|
||||
return NPERR_NO_ERROR;
|
||||
|
||||
This = (PluginInstance*) instance->pdata;
|
||||
|
||||
/*
|
||||
* PLUGIN DEVELOPERS:
|
||||
* Before setting window to point to the
|
||||
* new window, you may wish to compare the new window
|
||||
* info to the previous window (if any) to note window
|
||||
* size changes, etc.
|
||||
*/
|
||||
|
||||
return NPERR_NO_ERROR;
|
||||
}
|
||||
|
||||
|
||||
NPError
|
||||
NPP_NewStream(NPP instance,
|
||||
NPMIMEType type,
|
||||
NPStream *stream,
|
||||
NPBool seekable,
|
||||
uint16 *stype)
|
||||
{
|
||||
NPByteRange range;
|
||||
PluginInstance* This;
|
||||
|
||||
if (instance == NULL)
|
||||
return NPERR_INVALID_INSTANCE_ERROR;
|
||||
|
||||
This = (PluginInstance*) instance->pdata;
|
||||
|
||||
return NPERR_NO_ERROR;
|
||||
}
|
||||
|
||||
|
||||
/* PLUGIN DEVELOPERS:
|
||||
* These next 2 functions are directly relevant in a plug-in which
|
||||
* handles the data in a streaming manner. If you want zero bytes
|
||||
* because no buffer space is YET available, return 0. As long as
|
||||
* the stream has not been written to the plugin, Navigator will
|
||||
* continue trying to send bytes. If the plugin doesn't want them,
|
||||
* just return some large number from NPP_WriteReady(), and
|
||||
* ignore them in NPP_Write(). For a NP_ASFILE stream, they are
|
||||
* still called but can safely be ignored using this strategy.
|
||||
*/
|
||||
|
||||
int32 STREAMBUFSIZE = 0X0FFFFFFF; /* If we are reading from a file in NPAsFile
|
||||
* mode so we can take any size stream in our
|
||||
* write call (since we ignore it) */
|
||||
|
||||
int32
|
||||
NPP_WriteReady(NPP instance, NPStream *stream)
|
||||
{
|
||||
PluginInstance* This;
|
||||
if (instance != NULL)
|
||||
This = (PluginInstance*) instance->pdata;
|
||||
|
||||
return STREAMBUFSIZE;
|
||||
}
|
||||
|
||||
|
||||
int32
|
||||
NPP_Write(NPP instance, NPStream *stream, int32 offset, int32 len, void *buffer)
|
||||
{
|
||||
if (instance != NULL)
|
||||
{
|
||||
PluginInstance* This = (PluginInstance*) instance->pdata;
|
||||
}
|
||||
|
||||
return len; /* The number of bytes accepted */
|
||||
}
|
||||
|
||||
|
||||
NPError
|
||||
NPP_DestroyStream(NPP instance, NPStream *stream, NPError reason)
|
||||
{
|
||||
PluginInstance* This;
|
||||
|
||||
if (instance == NULL)
|
||||
return NPERR_INVALID_INSTANCE_ERROR;
|
||||
This = (PluginInstance*) instance->pdata;
|
||||
|
||||
return NPERR_NO_ERROR;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
NPP_StreamAsFile(NPP instance, NPStream *stream, const char* fname)
|
||||
{
|
||||
PluginInstance* This;
|
||||
if (instance != NULL)
|
||||
This = (PluginInstance*) instance->pdata;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
NPP_Print(NPP instance, NPPrint* printInfo)
|
||||
{
|
||||
if(printInfo == NULL)
|
||||
return;
|
||||
|
||||
if (instance != NULL) {
|
||||
PluginInstance* This = (PluginInstance*) instance->pdata;
|
||||
|
||||
if (printInfo->mode == NP_FULL) {
|
||||
/*
|
||||
* PLUGIN DEVELOPERS:
|
||||
* If your plugin would like to take over
|
||||
* printing completely when it is in full-screen mode,
|
||||
* set printInfo->pluginPrinted to TRUE and print your
|
||||
* plugin as you see fit. If your plugin wants Netscape
|
||||
* to handle printing in this case, set
|
||||
* printInfo->pluginPrinted to FALSE (the default) and
|
||||
* do nothing. If you do want to handle printing
|
||||
* yourself, printOne is true if the print button
|
||||
* (as opposed to the print menu) was clicked.
|
||||
* On the Macintosh, platformPrint is a THPrint; on
|
||||
* Windows, platformPrint is a structure
|
||||
* (defined in npapi.h) containing the printer name, port,
|
||||
* etc.
|
||||
*/
|
||||
|
||||
void* platformPrint =
|
||||
printInfo->print.fullPrint.platformPrint;
|
||||
NPBool printOne =
|
||||
printInfo->print.fullPrint.printOne;
|
||||
|
||||
/* Do the default*/
|
||||
printInfo->print.fullPrint.pluginPrinted = FALSE;
|
||||
}
|
||||
else { /* If not fullscreen, we must be embedded */
|
||||
/*
|
||||
* PLUGIN DEVELOPERS:
|
||||
* If your plugin is embedded, or is full-screen
|
||||
* but you returned false in pluginPrinted above, NPP_Print
|
||||
* will be called with mode == NP_EMBED. The NPWindow
|
||||
* in the printInfo gives the location and dimensions of
|
||||
* the embedded plugin on the printed page. On the
|
||||
* Macintosh, platformPrint is the printer port; on
|
||||
* Windows, platformPrint is the handle to the printing
|
||||
* device context.
|
||||
*/
|
||||
|
||||
NPWindow* printWindow =
|
||||
&(printInfo->print.embedPrint.window);
|
||||
void* platformPrint =
|
||||
printInfo->print.embedPrint.platformPrint;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,85 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: common.h,v 1.1 2001/05/10 18:12:36 edburns%acm.org Exp $
|
||||
*
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <inn@sparc.spb.su>
|
||||
*/
|
||||
|
||||
#ifndef _common_h
|
||||
#define _common_h
|
||||
#include "npapi.h"
|
||||
/***********************************************************************
|
||||
* Instance state information about the plugin.
|
||||
*
|
||||
* PLUGIN DEVELOPERS:
|
||||
* Use this struct to hold per-instance information that you'll
|
||||
* need in the various functions in this file.
|
||||
***********************************************************************/
|
||||
|
||||
typedef struct _PluginInstance
|
||||
{
|
||||
void* info; /* really "this" */
|
||||
NPP m_peer;
|
||||
jint m_id;
|
||||
jint m_wid;
|
||||
int16 m_argc;
|
||||
char** m_argn;
|
||||
char** m_argv;
|
||||
char* m_docbase;
|
||||
} PluginInstance;
|
||||
|
||||
typedef struct _GlobalData
|
||||
{
|
||||
#ifdef XP_UNIX
|
||||
Display* m_dpy;
|
||||
/* message queue ID of shared memory transport in host -> JVM direction */
|
||||
int m_msgid;
|
||||
/* message queue ID of shared memory transport in JVM -> host direction */
|
||||
int m_msgid1;
|
||||
/* XID of widget used to notify browser about our requests */
|
||||
XID m_xid;
|
||||
#endif
|
||||
} GlobalData;
|
||||
|
||||
#define PE_NOPE 0
|
||||
#define PE_CREATE 1
|
||||
#define PE_SETWINDOW 2
|
||||
#define PE_DESTROY 3
|
||||
#define PE_START 4
|
||||
#define PE_STOP 5
|
||||
#define PE_NEWPARAMS 6
|
||||
#define PE_SETTYPE 7
|
||||
|
||||
#define PV_UNKNOWN 0
|
||||
#define PV_MOZILLA6 1
|
||||
#define PV_MOZILLA4 2
|
||||
|
||||
#define PT_UNKNOWN 0
|
||||
#define PT_EMBED 1
|
||||
#define PT_OBJECT 2
|
||||
#define PT_APPLET 3
|
||||
#define PT_PLUGLET 4
|
||||
|
||||
#define WFNetscape4VendorID 2 /* Netscape 4 */
|
||||
#define WFNetscape4ExtVersion 1
|
||||
|
||||
#endif
|
@ -1,667 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: jri.h,v 1.1 2001/05/10 18:12:36 edburns%acm.org Exp $
|
||||
*
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <inn@sparc.spb.su>
|
||||
*/
|
||||
|
||||
/* -*- Mode: C; tab-width: 4; -*- */
|
||||
/*******************************************************************************
|
||||
* Java Runtime Interface
|
||||
* Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef JRI_H
|
||||
#define JRI_H
|
||||
|
||||
#include "jritypes.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/*******************************************************************************
|
||||
* JRIEnv
|
||||
******************************************************************************/
|
||||
|
||||
/* The type of the JRIEnv interface. */
|
||||
typedef struct JRIEnvInterface JRIEnvInterface;
|
||||
|
||||
/* The type of a JRIEnv instance. */
|
||||
typedef const JRIEnvInterface* JRIEnv;
|
||||
|
||||
/*******************************************************************************
|
||||
* JRIEnv Operations
|
||||
******************************************************************************/
|
||||
|
||||
#define JRI_DefineClass(env, classLoader, buf, bufLen) \
|
||||
(((*(env))->DefineClass)(env, JRI_DefineClass_op, classLoader, buf, bufLen))
|
||||
|
||||
#define JRI_FindClass(env, name) \
|
||||
(((*(env))->FindClass)(env, JRI_FindClass_op, name))
|
||||
|
||||
#define JRI_Throw(env, obj) \
|
||||
(((*(env))->Throw)(env, JRI_Throw_op, obj))
|
||||
|
||||
#define JRI_ThrowNew(env, clazz, message) \
|
||||
(((*(env))->ThrowNew)(env, JRI_ThrowNew_op, clazz, message))
|
||||
|
||||
#define JRI_ExceptionOccurred(env) \
|
||||
(((*(env))->ExceptionOccurred)(env, JRI_ExceptionOccurred_op))
|
||||
|
||||
#define JRI_ExceptionDescribe(env) \
|
||||
(((*(env))->ExceptionDescribe)(env, JRI_ExceptionDescribe_op))
|
||||
|
||||
#define JRI_ExceptionClear(env) \
|
||||
(((*(env))->ExceptionClear)(env, JRI_ExceptionClear_op))
|
||||
|
||||
#define JRI_NewGlobalRef(env, ref) \
|
||||
(((*(env))->NewGlobalRef)(env, JRI_NewGlobalRef_op, ref))
|
||||
|
||||
#define JRI_DisposeGlobalRef(env, gref) \
|
||||
(((*(env))->DisposeGlobalRef)(env, JRI_DisposeGlobalRef_op, gref))
|
||||
|
||||
#define JRI_GetGlobalRef(env, gref) \
|
||||
(((*(env))->GetGlobalRef)(env, JRI_GetGlobalRef_op, gref))
|
||||
|
||||
#define JRI_SetGlobalRef(env, gref, ref) \
|
||||
(((*(env))->SetGlobalRef)(env, JRI_SetGlobalRef_op, gref, ref))
|
||||
|
||||
#define JRI_IsSameObject(env, a, b) \
|
||||
(((*(env))->IsSameObject)(env, JRI_IsSameObject_op, a, b))
|
||||
|
||||
#define JRI_NewObject(env) ((*(env))->NewObject)
|
||||
#define JRI_NewObjectV(env, clazz, methodID, args) \
|
||||
(((*(env))->NewObjectV)(env, JRI_NewObject_op_va_list, clazz, methodID, args))
|
||||
#define JRI_NewObjectA(env, clazz, method, args) \
|
||||
(((*(env))->NewObjectA)(env, JRI_NewObject_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_GetObjectClass(env, obj) \
|
||||
(((*(env))->GetObjectClass)(env, JRI_GetObjectClass_op, obj))
|
||||
|
||||
#define JRI_IsInstanceOf(env, obj, clazz) \
|
||||
(((*(env))->IsInstanceOf)(env, JRI_IsInstanceOf_op, obj, clazz))
|
||||
|
||||
#define JRI_GetMethodID(env, clazz, name, sig) \
|
||||
(((*(env))->GetMethodID)(env, JRI_GetMethodID_op, clazz, name, sig))
|
||||
|
||||
#define JRI_CallMethod(env) ((*(env))->CallMethod)
|
||||
#define JRI_CallMethodV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodV)(env, JRI_CallMethod_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodA)(env, JRI_CallMethod_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodBoolean(env) ((*(env))->CallMethodBoolean)
|
||||
#define JRI_CallMethodBooleanV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodBooleanV)(env, JRI_CallMethodBoolean_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodBooleanA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodBooleanA)(env, JRI_CallMethodBoolean_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodByte(env) ((*(env))->CallMethodByte)
|
||||
#define JRI_CallMethodByteV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodByteV)(env, JRI_CallMethodByte_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodByteA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodByteA)(env, JRI_CallMethodByte_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodChar(env) ((*(env))->CallMethodChar)
|
||||
#define JRI_CallMethodCharV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodCharV)(env, JRI_CallMethodChar_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodCharA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodCharA)(env, JRI_CallMethodChar_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodShort(env) ((*(env))->CallMethodShort)
|
||||
#define JRI_CallMethodShortV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodShortV)(env, JRI_CallMethodShort_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodShortA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodShortA)(env, JRI_CallMethodShort_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodInt(env) ((*(env))->CallMethodInt)
|
||||
#define JRI_CallMethodIntV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodIntV)(env, JRI_CallMethodInt_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodIntA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodIntA)(env, JRI_CallMethodInt_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodLong(env) ((*(env))->CallMethodLong)
|
||||
#define JRI_CallMethodLongV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodLongV)(env, JRI_CallMethodLong_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodLongA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodLongA)(env, JRI_CallMethodLong_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodFloat(env) ((*(env))->CallMethodFloat)
|
||||
#define JRI_CallMethodFloatV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodFloatV)(env, JRI_CallMethodFloat_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodFloatA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodFloatA)(env, JRI_CallMethodFloat_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_CallMethodDouble(env) ((*(env))->CallMethodDouble)
|
||||
#define JRI_CallMethodDoubleV(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodDoubleV)(env, JRI_CallMethodDouble_op_va_list, obj, methodID, args))
|
||||
#define JRI_CallMethodDoubleA(env, obj, methodID, args) \
|
||||
(((*(env))->CallMethodDoubleA)(env, JRI_CallMethodDouble_op_array, obj, methodID, args))
|
||||
|
||||
#define JRI_GetFieldID(env, clazz, name, sig) \
|
||||
(((*(env))->GetFieldID)(env, JRI_GetFieldID_op, clazz, name, sig))
|
||||
|
||||
#define JRI_GetField(env, obj, fieldID) \
|
||||
(((*(env))->GetField)(env, JRI_GetField_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldBoolean(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldBoolean)(env, JRI_GetFieldBoolean_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldByte(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldByte)(env, JRI_GetFieldByte_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldChar(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldChar)(env, JRI_GetFieldChar_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldShort(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldShort)(env, JRI_GetFieldShort_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldInt(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldInt)(env, JRI_GetFieldInt_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldLong(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldLong)(env, JRI_GetFieldLong_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldFloat(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldFloat)(env, JRI_GetFieldFloat_op, obj, fieldID))
|
||||
|
||||
#define JRI_GetFieldDouble(env, obj, fieldID) \
|
||||
(((*(env))->GetFieldDouble)(env, JRI_GetFieldDouble_op, obj, fieldID))
|
||||
|
||||
#define JRI_SetField(env, obj, fieldID, value) \
|
||||
(((*(env))->SetField)(env, JRI_SetField_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldBoolean(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldBoolean)(env, JRI_SetFieldBoolean_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldByte(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldByte)(env, JRI_SetFieldByte_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldChar(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldChar)(env, JRI_SetFieldChar_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldShort(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldShort)(env, JRI_SetFieldShort_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldInt(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldInt)(env, JRI_SetFieldInt_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldLong(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldLong)(env, JRI_SetFieldLong_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldFloat(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldFloat)(env, JRI_SetFieldFloat_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_SetFieldDouble(env, obj, fieldID, value) \
|
||||
(((*(env))->SetFieldDouble)(env, JRI_SetFieldDouble_op, obj, fieldID, value))
|
||||
|
||||
#define JRI_IsSubclassOf(env, a, b) \
|
||||
(((*(env))->IsSubclassOf)(env, JRI_IsSubclassOf_op, a, b))
|
||||
|
||||
#define JRI_GetStaticMethodID(env, clazz, name, sig) \
|
||||
(((*(env))->GetStaticMethodID)(env, JRI_GetStaticMethodID_op, clazz, name, sig))
|
||||
|
||||
#define JRI_CallStaticMethod(env) ((*(env))->CallStaticMethod)
|
||||
#define JRI_CallStaticMethodV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodV)(env, JRI_CallStaticMethod_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodA)(env, JRI_CallStaticMethod_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodBoolean(env) ((*(env))->CallStaticMethodBoolean)
|
||||
#define JRI_CallStaticMethodBooleanV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodBooleanV)(env, JRI_CallStaticMethodBoolean_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodBooleanA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodBooleanA)(env, JRI_CallStaticMethodBoolean_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodByte(env) ((*(env))->CallStaticMethodByte)
|
||||
#define JRI_CallStaticMethodByteV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodByteV)(env, JRI_CallStaticMethodByte_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodByteA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodByteA)(env, JRI_CallStaticMethodByte_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodChar(env) ((*(env))->CallStaticMethodChar)
|
||||
#define JRI_CallStaticMethodCharV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodCharV)(env, JRI_CallStaticMethodChar_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodCharA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodCharA)(env, JRI_CallStaticMethodChar_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodShort(env) ((*(env))->CallStaticMethodShort)
|
||||
#define JRI_CallStaticMethodShortV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodShortV)(env, JRI_CallStaticMethodShort_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodShortA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodShortA)(env, JRI_CallStaticMethodShort_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodInt(env) ((*(env))->CallStaticMethodInt)
|
||||
#define JRI_CallStaticMethodIntV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodIntV)(env, JRI_CallStaticMethodInt_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodIntA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodIntA)(env, JRI_CallStaticMethodInt_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodLong(env) ((*(env))->CallStaticMethodLong)
|
||||
#define JRI_CallStaticMethodLongV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodLongV)(env, JRI_CallStaticMethodLong_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodLongA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodLongA)(env, JRI_CallStaticMethodLong_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodFloat(env) ((*(env))->CallStaticMethodFloat)
|
||||
#define JRI_CallStaticMethodFloatV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodFloatV)(env, JRI_CallStaticMethodFloat_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodFloatA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodFloatA)(env, JRI_CallStaticMethodFloat_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_CallStaticMethodDouble(env) ((*(env))->CallStaticMethodDouble)
|
||||
#define JRI_CallStaticMethodDoubleV(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodDoubleV)(env, JRI_CallStaticMethodDouble_op_va_list, clazz, methodID, args))
|
||||
#define JRI_CallStaticMethodDoubleA(env, clazz, methodID, args) \
|
||||
(((*(env))->CallStaticMethodDoubleA)(env, JRI_CallStaticMethodDouble_op_array, clazz, methodID, args))
|
||||
|
||||
#define JRI_GetStaticFieldID(env, clazz, name, sig) \
|
||||
(((*(env))->GetStaticFieldID)(env, JRI_GetStaticFieldID_op, clazz, name, sig))
|
||||
|
||||
#define JRI_GetStaticField(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticField)(env, JRI_GetStaticField_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldBoolean(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldBoolean)(env, JRI_GetStaticFieldBoolean_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldByte(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldByte)(env, JRI_GetStaticFieldByte_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldChar(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldChar)(env, JRI_GetStaticFieldChar_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldShort(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldShort)(env, JRI_GetStaticFieldShort_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldInt(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldInt)(env, JRI_GetStaticFieldInt_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldLong(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldLong)(env, JRI_GetStaticFieldLong_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldFloat(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldFloat)(env, JRI_GetStaticFieldFloat_op, clazz, fieldID))
|
||||
|
||||
#define JRI_GetStaticFieldDouble(env, clazz, fieldID) \
|
||||
(((*(env))->GetStaticFieldDouble)(env, JRI_GetStaticFieldDouble_op, clazz, fieldID))
|
||||
|
||||
#define JRI_SetStaticField(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticField)(env, JRI_SetStaticField_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldBoolean(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldBoolean)(env, JRI_SetStaticFieldBoolean_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldByte(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldByte)(env, JRI_SetStaticFieldByte_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldChar(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldChar)(env, JRI_SetStaticFieldChar_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldShort(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldShort)(env, JRI_SetStaticFieldShort_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldInt(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldInt)(env, JRI_SetStaticFieldInt_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldLong(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldLong)(env, JRI_SetStaticFieldLong_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldFloat(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldFloat)(env, JRI_SetStaticFieldFloat_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_SetStaticFieldDouble(env, clazz, fieldID, value) \
|
||||
(((*(env))->SetStaticFieldDouble)(env, JRI_SetStaticFieldDouble_op, clazz, fieldID, value))
|
||||
|
||||
#define JRI_NewString(env, unicode, len) \
|
||||
(((*(env))->NewString)(env, JRI_NewString_op, unicode, len))
|
||||
|
||||
#define JRI_GetStringLength(env, string) \
|
||||
(((*(env))->GetStringLength)(env, JRI_GetStringLength_op, string))
|
||||
|
||||
#define JRI_GetStringChars(env, string) \
|
||||
(((*(env))->GetStringChars)(env, JRI_GetStringChars_op, string))
|
||||
|
||||
#define JRI_NewStringUTF(env, utf, len) \
|
||||
(((*(env))->NewStringUTF)(env, JRI_NewStringUTF_op, utf, len))
|
||||
|
||||
#define JRI_GetStringUTFLength(env, string) \
|
||||
(((*(env))->GetStringUTFLength)(env, JRI_GetStringUTFLength_op, string))
|
||||
|
||||
#define JRI_GetStringUTFChars(env, string) \
|
||||
(((*(env))->GetStringUTFChars)(env, JRI_GetStringUTFChars_op, string))
|
||||
|
||||
#define JRI_NewScalarArray(env, length, elementSig, initialElements) \
|
||||
(((*(env))->NewScalarArray)(env, JRI_NewScalarArray_op, length, elementSig, initialElements))
|
||||
|
||||
#define JRI_GetScalarArrayLength(env, array) \
|
||||
(((*(env))->GetScalarArrayLength)(env, JRI_GetScalarArrayLength_op, array))
|
||||
|
||||
#define JRI_GetScalarArrayElements(env, array) \
|
||||
(((*(env))->GetScalarArrayElements)(env, JRI_GetScalarArrayElements_op, array))
|
||||
|
||||
#define JRI_NewObjectArray(env, length, elementClass, initialElement) \
|
||||
(((*(env))->NewObjectArray)(env, JRI_NewObjectArray_op, length, elementClass, initialElement))
|
||||
|
||||
#define JRI_GetObjectArrayLength(env, array) \
|
||||
(((*(env))->GetObjectArrayLength)(env, JRI_GetObjectArrayLength_op, array))
|
||||
|
||||
#define JRI_GetObjectArrayElement(env, array, index) \
|
||||
(((*(env))->GetObjectArrayElement)(env, JRI_GetObjectArrayElement_op, array, index))
|
||||
|
||||
#define JRI_SetObjectArrayElement(env, array, index, value) \
|
||||
(((*(env))->SetObjectArrayElement)(env, JRI_SetObjectArrayElement_op, array, index, value))
|
||||
|
||||
#define JRI_RegisterNatives(env, clazz, nameAndSigArray, nativeProcArray) \
|
||||
(((*(env))->RegisterNatives)(env, JRI_RegisterNatives_op, clazz, nameAndSigArray, nativeProcArray))
|
||||
|
||||
#define JRI_UnregisterNatives(env, clazz) \
|
||||
(((*(env))->UnregisterNatives)(env, JRI_UnregisterNatives_op, clazz))
|
||||
|
||||
/*******************************************************************************
|
||||
* JRIEnv Interface
|
||||
******************************************************************************/
|
||||
|
||||
struct java_lang_ClassLoader;
|
||||
struct java_lang_Class;
|
||||
struct java_lang_Throwable;
|
||||
struct java_lang_Object;
|
||||
struct java_lang_String;
|
||||
|
||||
struct JRIEnvInterface {
|
||||
void* reserved0;
|
||||
void* reserved1;
|
||||
void* reserved2;
|
||||
void* reserved3;
|
||||
struct java_lang_Class* (*FindClass)(JRIEnv* env, jint op, const char* a);
|
||||
void (*Throw)(JRIEnv* env, jint op, struct java_lang_Throwable* a);
|
||||
void (*ThrowNew)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b);
|
||||
struct java_lang_Throwable* (*ExceptionOccurred)(JRIEnv* env, jint op);
|
||||
void (*ExceptionDescribe)(JRIEnv* env, jint op);
|
||||
void (*ExceptionClear)(JRIEnv* env, jint op);
|
||||
jglobal (*NewGlobalRef)(JRIEnv* env, jint op, void* a);
|
||||
void (*DisposeGlobalRef)(JRIEnv* env, jint op, jglobal a);
|
||||
void* (*GetGlobalRef)(JRIEnv* env, jint op, jglobal a);
|
||||
void (*SetGlobalRef)(JRIEnv* env, jint op, jglobal a, void* b);
|
||||
jbool (*IsSameObject)(JRIEnv* env, jint op, void* a, void* b);
|
||||
void* (*NewObject)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
void* (*NewObjectV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
void* (*NewObjectA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
struct java_lang_Class* (*GetObjectClass)(JRIEnv* env, jint op, void* a);
|
||||
jbool (*IsInstanceOf)(JRIEnv* env, jint op, void* a, struct java_lang_Class* b);
|
||||
jint (*GetMethodID)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b, const char* c);
|
||||
void* (*CallMethod)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
void* (*CallMethodV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
void* (*CallMethodA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jbool (*CallMethodBoolean)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jbool (*CallMethodBooleanV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jbool (*CallMethodBooleanA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jbyte (*CallMethodByte)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jbyte (*CallMethodByteV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jbyte (*CallMethodByteA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jchar (*CallMethodChar)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jchar (*CallMethodCharV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jchar (*CallMethodCharA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jshort (*CallMethodShort)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jshort (*CallMethodShortV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jshort (*CallMethodShortA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jint (*CallMethodInt)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jint (*CallMethodIntV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jint (*CallMethodIntA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jlong (*CallMethodLong)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jlong (*CallMethodLongV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jlong (*CallMethodLongA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jfloat (*CallMethodFloat)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jfloat (*CallMethodFloatV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jfloat (*CallMethodFloatA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jdouble (*CallMethodDouble)(JRIEnv* env, jint op, void* a, jint b, ...);
|
||||
jdouble (*CallMethodDoubleV)(JRIEnv* env, jint op, void* a, jint b, va_list c);
|
||||
jdouble (*CallMethodDoubleA)(JRIEnv* env, jint op, void* a, jint b, JRIValue* c);
|
||||
jint (*GetFieldID)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b, const char* c);
|
||||
void* (*GetField)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jbool (*GetFieldBoolean)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jbyte (*GetFieldByte)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jchar (*GetFieldChar)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jshort (*GetFieldShort)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jint (*GetFieldInt)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jlong (*GetFieldLong)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jfloat (*GetFieldFloat)(JRIEnv* env, jint op, void* a, jint b);
|
||||
jdouble (*GetFieldDouble)(JRIEnv* env, jint op, void* a, jint b);
|
||||
void (*SetField)(JRIEnv* env, jint op, void* a, jint b, void* c);
|
||||
void (*SetFieldBoolean)(JRIEnv* env, jint op, void* a, jint b, jbool c);
|
||||
void (*SetFieldByte)(JRIEnv* env, jint op, void* a, jint b, jbyte c);
|
||||
void (*SetFieldChar)(JRIEnv* env, jint op, void* a, jint b, jchar c);
|
||||
void (*SetFieldShort)(JRIEnv* env, jint op, void* a, jint b, jshort c);
|
||||
void (*SetFieldInt)(JRIEnv* env, jint op, void* a, jint b, jint c);
|
||||
void (*SetFieldLong)(JRIEnv* env, jint op, void* a, jint b, jlong c);
|
||||
void (*SetFieldFloat)(JRIEnv* env, jint op, void* a, jint b, jfloat c);
|
||||
void (*SetFieldDouble)(JRIEnv* env, jint op, void* a, jint b, jdouble c);
|
||||
jbool (*IsSubclassOf)(JRIEnv* env, jint op, struct java_lang_Class* a, struct java_lang_Class* b);
|
||||
jint (*GetStaticMethodID)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b, const char* c);
|
||||
void* (*CallStaticMethod)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
void* (*CallStaticMethodV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
void* (*CallStaticMethodA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jbool (*CallStaticMethodBoolean)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jbool (*CallStaticMethodBooleanV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jbool (*CallStaticMethodBooleanA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jbyte (*CallStaticMethodByte)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jbyte (*CallStaticMethodByteV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jbyte (*CallStaticMethodByteA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jchar (*CallStaticMethodChar)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jchar (*CallStaticMethodCharV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jchar (*CallStaticMethodCharA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jshort (*CallStaticMethodShort)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jshort (*CallStaticMethodShortV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jshort (*CallStaticMethodShortA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jint (*CallStaticMethodInt)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jint (*CallStaticMethodIntV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jint (*CallStaticMethodIntA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jlong (*CallStaticMethodLong)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jlong (*CallStaticMethodLongV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jlong (*CallStaticMethodLongA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jfloat (*CallStaticMethodFloat)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jfloat (*CallStaticMethodFloatV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jfloat (*CallStaticMethodFloatA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jdouble (*CallStaticMethodDouble)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, ...);
|
||||
jdouble (*CallStaticMethodDoubleV)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, va_list c);
|
||||
jdouble (*CallStaticMethodDoubleA)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, JRIValue* c);
|
||||
jint (*GetStaticFieldID)(JRIEnv* env, jint op, struct java_lang_Class* a, const char* b, const char* c);
|
||||
void* (*GetStaticField)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jbool (*GetStaticFieldBoolean)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jbyte (*GetStaticFieldByte)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jchar (*GetStaticFieldChar)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jshort (*GetStaticFieldShort)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jint (*GetStaticFieldInt)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jlong (*GetStaticFieldLong)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jfloat (*GetStaticFieldFloat)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
jdouble (*GetStaticFieldDouble)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b);
|
||||
void (*SetStaticField)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, void* c);
|
||||
void (*SetStaticFieldBoolean)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jbool c);
|
||||
void (*SetStaticFieldByte)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jbyte c);
|
||||
void (*SetStaticFieldChar)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jchar c);
|
||||
void (*SetStaticFieldShort)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jshort c);
|
||||
void (*SetStaticFieldInt)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jint c);
|
||||
void (*SetStaticFieldLong)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jlong c);
|
||||
void (*SetStaticFieldFloat)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jfloat c);
|
||||
void (*SetStaticFieldDouble)(JRIEnv* env, jint op, struct java_lang_Class* a, jint b, jdouble c);
|
||||
struct java_lang_String* (*NewString)(JRIEnv* env, jint op, const jchar* a, jint b);
|
||||
jint (*GetStringLength)(JRIEnv* env, jint op, struct java_lang_String* a);
|
||||
const jchar* (*GetStringChars)(JRIEnv* env, jint op, struct java_lang_String* a);
|
||||
struct java_lang_String* (*NewStringUTF)(JRIEnv* env, jint op, const jbyte* a, jint b);
|
||||
jint (*GetStringUTFLength)(JRIEnv* env, jint op, struct java_lang_String* a);
|
||||
const jbyte* (*GetStringUTFChars)(JRIEnv* env, jint op, struct java_lang_String* a);
|
||||
void* (*NewScalarArray)(JRIEnv* env, jint op, jint a, const char* b, const jbyte* c);
|
||||
jint (*GetScalarArrayLength)(JRIEnv* env, jint op, void* a);
|
||||
jbyte* (*GetScalarArrayElements)(JRIEnv* env, jint op, void* a);
|
||||
void* (*NewObjectArray)(JRIEnv* env, jint op, jint a, struct java_lang_Class* b, void* c);
|
||||
jint (*GetObjectArrayLength)(JRIEnv* env, jint op, void* a);
|
||||
void* (*GetObjectArrayElement)(JRIEnv* env, jint op, void* a, jint b);
|
||||
void (*SetObjectArrayElement)(JRIEnv* env, jint op, void* a, jint b, void* c);
|
||||
void (*RegisterNatives)(JRIEnv* env, jint op, struct java_lang_Class* a, char** b, void** c);
|
||||
void (*UnregisterNatives)(JRIEnv* env, jint op, struct java_lang_Class* a);
|
||||
struct java_lang_Class* (*DefineClass)(JRIEnv* env, jint op, struct java_lang_ClassLoader* a, jbyte* b, jsize bLen);
|
||||
};
|
||||
|
||||
/*******************************************************************************
|
||||
* JRIEnv Operation IDs
|
||||
******************************************************************************/
|
||||
|
||||
typedef enum JRIEnvOperations {
|
||||
JRI_Reserved0_op,
|
||||
JRI_Reserved1_op,
|
||||
JRI_Reserved2_op,
|
||||
JRI_Reserved3_op,
|
||||
JRI_FindClass_op,
|
||||
JRI_Throw_op,
|
||||
JRI_ThrowNew_op,
|
||||
JRI_ExceptionOccurred_op,
|
||||
JRI_ExceptionDescribe_op,
|
||||
JRI_ExceptionClear_op,
|
||||
JRI_NewGlobalRef_op,
|
||||
JRI_DisposeGlobalRef_op,
|
||||
JRI_GetGlobalRef_op,
|
||||
JRI_SetGlobalRef_op,
|
||||
JRI_IsSameObject_op,
|
||||
JRI_NewObject_op,
|
||||
JRI_NewObject_op_va_list,
|
||||
JRI_NewObject_op_array,
|
||||
JRI_GetObjectClass_op,
|
||||
JRI_IsInstanceOf_op,
|
||||
JRI_GetMethodID_op,
|
||||
JRI_CallMethod_op,
|
||||
JRI_CallMethod_op_va_list,
|
||||
JRI_CallMethod_op_array,
|
||||
JRI_CallMethodBoolean_op,
|
||||
JRI_CallMethodBoolean_op_va_list,
|
||||
JRI_CallMethodBoolean_op_array,
|
||||
JRI_CallMethodByte_op,
|
||||
JRI_CallMethodByte_op_va_list,
|
||||
JRI_CallMethodByte_op_array,
|
||||
JRI_CallMethodChar_op,
|
||||
JRI_CallMethodChar_op_va_list,
|
||||
JRI_CallMethodChar_op_array,
|
||||
JRI_CallMethodShort_op,
|
||||
JRI_CallMethodShort_op_va_list,
|
||||
JRI_CallMethodShort_op_array,
|
||||
JRI_CallMethodInt_op,
|
||||
JRI_CallMethodInt_op_va_list,
|
||||
JRI_CallMethodInt_op_array,
|
||||
JRI_CallMethodLong_op,
|
||||
JRI_CallMethodLong_op_va_list,
|
||||
JRI_CallMethodLong_op_array,
|
||||
JRI_CallMethodFloat_op,
|
||||
JRI_CallMethodFloat_op_va_list,
|
||||
JRI_CallMethodFloat_op_array,
|
||||
JRI_CallMethodDouble_op,
|
||||
JRI_CallMethodDouble_op_va_list,
|
||||
JRI_CallMethodDouble_op_array,
|
||||
JRI_GetFieldID_op,
|
||||
JRI_GetField_op,
|
||||
JRI_GetFieldBoolean_op,
|
||||
JRI_GetFieldByte_op,
|
||||
JRI_GetFieldChar_op,
|
||||
JRI_GetFieldShort_op,
|
||||
JRI_GetFieldInt_op,
|
||||
JRI_GetFieldLong_op,
|
||||
JRI_GetFieldFloat_op,
|
||||
JRI_GetFieldDouble_op,
|
||||
JRI_SetField_op,
|
||||
JRI_SetFieldBoolean_op,
|
||||
JRI_SetFieldByte_op,
|
||||
JRI_SetFieldChar_op,
|
||||
JRI_SetFieldShort_op,
|
||||
JRI_SetFieldInt_op,
|
||||
JRI_SetFieldLong_op,
|
||||
JRI_SetFieldFloat_op,
|
||||
JRI_SetFieldDouble_op,
|
||||
JRI_IsSubclassOf_op,
|
||||
JRI_GetStaticMethodID_op,
|
||||
JRI_CallStaticMethod_op,
|
||||
JRI_CallStaticMethod_op_va_list,
|
||||
JRI_CallStaticMethod_op_array,
|
||||
JRI_CallStaticMethodBoolean_op,
|
||||
JRI_CallStaticMethodBoolean_op_va_list,
|
||||
JRI_CallStaticMethodBoolean_op_array,
|
||||
JRI_CallStaticMethodByte_op,
|
||||
JRI_CallStaticMethodByte_op_va_list,
|
||||
JRI_CallStaticMethodByte_op_array,
|
||||
JRI_CallStaticMethodChar_op,
|
||||
JRI_CallStaticMethodChar_op_va_list,
|
||||
JRI_CallStaticMethodChar_op_array,
|
||||
JRI_CallStaticMethodShort_op,
|
||||
JRI_CallStaticMethodShort_op_va_list,
|
||||
JRI_CallStaticMethodShort_op_array,
|
||||
JRI_CallStaticMethodInt_op,
|
||||
JRI_CallStaticMethodInt_op_va_list,
|
||||
JRI_CallStaticMethodInt_op_array,
|
||||
JRI_CallStaticMethodLong_op,
|
||||
JRI_CallStaticMethodLong_op_va_list,
|
||||
JRI_CallStaticMethodLong_op_array,
|
||||
JRI_CallStaticMethodFloat_op,
|
||||
JRI_CallStaticMethodFloat_op_va_list,
|
||||
JRI_CallStaticMethodFloat_op_array,
|
||||
JRI_CallStaticMethodDouble_op,
|
||||
JRI_CallStaticMethodDouble_op_va_list,
|
||||
JRI_CallStaticMethodDouble_op_array,
|
||||
JRI_GetStaticFieldID_op,
|
||||
JRI_GetStaticField_op,
|
||||
JRI_GetStaticFieldBoolean_op,
|
||||
JRI_GetStaticFieldByte_op,
|
||||
JRI_GetStaticFieldChar_op,
|
||||
JRI_GetStaticFieldShort_op,
|
||||
JRI_GetStaticFieldInt_op,
|
||||
JRI_GetStaticFieldLong_op,
|
||||
JRI_GetStaticFieldFloat_op,
|
||||
JRI_GetStaticFieldDouble_op,
|
||||
JRI_SetStaticField_op,
|
||||
JRI_SetStaticFieldBoolean_op,
|
||||
JRI_SetStaticFieldByte_op,
|
||||
JRI_SetStaticFieldChar_op,
|
||||
JRI_SetStaticFieldShort_op,
|
||||
JRI_SetStaticFieldInt_op,
|
||||
JRI_SetStaticFieldLong_op,
|
||||
JRI_SetStaticFieldFloat_op,
|
||||
JRI_SetStaticFieldDouble_op,
|
||||
JRI_NewString_op,
|
||||
JRI_GetStringLength_op,
|
||||
JRI_GetStringChars_op,
|
||||
JRI_NewStringUTF_op,
|
||||
JRI_GetStringUTFLength_op,
|
||||
JRI_GetStringUTFChars_op,
|
||||
JRI_NewScalarArray_op,
|
||||
JRI_GetScalarArrayLength_op,
|
||||
JRI_GetScalarArrayElements_op,
|
||||
JRI_NewObjectArray_op,
|
||||
JRI_GetObjectArrayLength_op,
|
||||
JRI_GetObjectArrayElement_op,
|
||||
JRI_SetObjectArrayElement_op,
|
||||
JRI_RegisterNatives_op,
|
||||
JRI_UnregisterNatives_op,
|
||||
JRI_DefineClass_op
|
||||
} JRIEnvOperations;
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* JRI_H */
|
||||
/******************************************************************************/
|
@ -1,196 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: jri_md.h,v 1.1 2001/05/10 18:12:36 edburns%acm.org Exp $
|
||||
*
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <inn@sparc.spb.su>
|
||||
*/
|
||||
|
||||
/* -*- Mode: C; tab-width: 4; -*- */
|
||||
/*******************************************************************************
|
||||
* Java Runtime Interface - Machine Dependent Types
|
||||
* Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef JRI_MD_H
|
||||
#define JRI_MD_H
|
||||
|
||||
#include <assert.h>
|
||||
#include "jni.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
* WHAT'S UP WITH THIS FILE?
|
||||
*
|
||||
* This is where we define the mystical JRI_PUBLIC_API macro that works on all
|
||||
* platforms. If you're running with Visual C++, Symantec C, or Borland's
|
||||
* development environment on the PC, you're all set. Or if you're on the Mac
|
||||
* with Metrowerks, Symantec or MPW with SC you're ok too. For UNIX it shouldn't
|
||||
* matter.
|
||||
*
|
||||
* On UNIX though you probably care about a couple of other symbols though:
|
||||
* IS_LITTLE_ENDIAN must be defined for little-endian systems
|
||||
* HAVE_LONG_LONG must be defined on systems that have 'long long' integers
|
||||
* HAVE_ALIGNED_LONGLONGS must be defined if long-longs must be 8 byte aligned
|
||||
* HAVE_ALIGNED_DOUBLES must be defined if doubles must be 8 byte aligned
|
||||
* IS_64 must be defined on 64-bit machines (like Dec Alpha)
|
||||
******************************************************************************/
|
||||
|
||||
/* DLL Entry modifiers... */
|
||||
|
||||
/* PC */
|
||||
#if defined(XP_PC) || defined(_WINDOWS) || defined(WIN32) || defined(_WIN32)
|
||||
# include <windows.h>
|
||||
# if defined(_MSC_VER)
|
||||
# if defined(WIN32) || defined(_WIN32)
|
||||
# define JRI_PUBLIC_API(ResultType) _declspec(dllexport) ResultType
|
||||
# define JRI_CALLBACK
|
||||
# else /* !_WIN32 */
|
||||
# if defined(_WINDLL)
|
||||
# define JRI_PUBLIC_API(ResultType) ResultType __cdecl __export __loadds
|
||||
# define JRI_CALLBACK __loadds
|
||||
# else /* !WINDLL */
|
||||
# define JRI_PUBLIC_API(ResultType) ResultType __cdecl __export
|
||||
# define JRI_CALLBACK __export
|
||||
# endif /* !WINDLL */
|
||||
# endif /* !_WIN32 */
|
||||
# elif defined(__BORLANDC__)
|
||||
# if defined(WIN32) || defined(_WIN32)
|
||||
# define JRI_PUBLIC_API(ResultType) __export ResultType
|
||||
# define JRI_CALLBACK
|
||||
# else /* !_WIN32 */
|
||||
# define JRI_PUBLIC_API(ResultType) ResultType _cdecl _export _loadds
|
||||
# define JRI_CALLBACK _loadds
|
||||
# endif
|
||||
# else
|
||||
# error Unsupported PC development environment.
|
||||
# endif
|
||||
# ifndef IS_LITTLE_ENDIAN
|
||||
# define IS_LITTLE_ENDIAN
|
||||
# endif
|
||||
|
||||
/* Mac */
|
||||
#elif macintosh || Macintosh || THINK_C
|
||||
# if defined(__MWERKS__) /* Metrowerks */
|
||||
# if !__option(enumsalwaysint)
|
||||
# error You need to define 'Enums Always Int' for your project.
|
||||
# endif
|
||||
# if defined(GENERATING68K) && !GENERATINGCFM
|
||||
# if !__option(fourbyteints)
|
||||
# error You need to define 'Struct Alignment: 68k' for your project.
|
||||
# endif
|
||||
# endif /* !GENERATINGCFM */
|
||||
# elif defined(__SC__) /* Symantec */
|
||||
# error What are the Symantec defines? (warren@netscape.com)
|
||||
# elif macintosh && applec /* MPW */
|
||||
# error Please upgrade to the latest MPW compiler (SC).
|
||||
# else
|
||||
# error Unsupported Mac development environment.
|
||||
# endif
|
||||
# define JRI_PUBLIC_API(ResultType) ResultType
|
||||
# define JRI_CALLBACK
|
||||
|
||||
/* Unix or else */
|
||||
#else
|
||||
# define JRI_PUBLIC_API(ResultType) ResultType
|
||||
# define JRI_CALLBACK
|
||||
#endif
|
||||
|
||||
#ifndef FAR /* for non-Win16 */
|
||||
#define FAR
|
||||
#endif
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
/* Java Scalar Types */
|
||||
|
||||
typedef unsigned char jbool;
|
||||
#ifdef IS_64 /* XXX ok for alpha, but not right on all 64-bit architectures */
|
||||
typedef unsigned int juint;
|
||||
typedef int jint;
|
||||
#else
|
||||
typedef unsigned long juint;
|
||||
#endif
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
/*
|
||||
** JDK Stuff -- This stuff is still needed while we're using the JDK
|
||||
** dynamic linking strategy to call native methods.
|
||||
*/
|
||||
|
||||
typedef union JRI_JDK_stack_item {
|
||||
/* Non pointer items */
|
||||
jint i;
|
||||
jfloat f;
|
||||
jint o;
|
||||
/* Pointer items */
|
||||
void *h;
|
||||
void *p;
|
||||
unsigned char *addr;
|
||||
#ifdef IS_64
|
||||
double d;
|
||||
long l; /* == 64bits! */
|
||||
#endif
|
||||
} JRI_JDK_stack_item;
|
||||
|
||||
typedef union JRI_JDK_Java8Str {
|
||||
jint x[2];
|
||||
jdouble d;
|
||||
jlong l;
|
||||
void *p;
|
||||
float f;
|
||||
} JRI_JDK_Java8;
|
||||
|
||||
#ifdef HAVE_ALIGNED_LONGLONGS
|
||||
#define JRI_GET_INT64(_t,_addr) ( ((_t).x[0] = ((jint*)(_addr))[0]), \
|
||||
((_t).x[1] = ((jint*)(_addr))[1]), \
|
||||
(_t).l )
|
||||
#define JRI_SET_INT64(_t, _addr, _v) ( (_t).l = (_v), \
|
||||
((jint*)(_addr))[0] = (_t).x[0], \
|
||||
((jint*)(_addr))[1] = (_t).x[1] )
|
||||
#else
|
||||
#define JRI_GET_INT64(_t,_addr) (*(jlong*)(_addr))
|
||||
#define JRI_SET_INT64(_t, _addr, _v) (*(jlong*)(_addr) = (_v))
|
||||
#endif
|
||||
|
||||
/* If double's must be aligned on doubleword boundaries then define this */
|
||||
#ifdef HAVE_ALIGNED_DOUBLES
|
||||
#define JRI_GET_DOUBLE(_t,_addr) ( ((_t).x[0] = ((jint*)(_addr))[0]), \
|
||||
((_t).x[1] = ((jint*)(_addr))[1]), \
|
||||
(_t).d )
|
||||
#define JRI_SET_DOUBLE(_t, _addr, _v) ( (_t).d = (_v), \
|
||||
((jint*)(_addr))[0] = (_t).x[0], \
|
||||
((jint*)(_addr))[1] = (_t).x[1] )
|
||||
#else
|
||||
#define JRI_GET_DOUBLE(_t,_addr) (*(jdouble*)(_addr))
|
||||
#define JRI_SET_DOUBLE(_t, _addr, _v) (*(jdouble*)(_addr) = (_v))
|
||||
#endif
|
||||
|
||||
/******************************************************************************/
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* JRI_MD_H */
|
||||
/******************************************************************************/
|
@ -1,193 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: jritypes.h,v 1.1 2001/05/10 18:12:36 edburns%acm.org Exp $
|
||||
*
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <inn@sparc.spb.su>
|
||||
*/
|
||||
|
||||
/* -*- Mode: C; tab-width: 4; -*- */
|
||||
/*******************************************************************************
|
||||
* Java Runtime Interface
|
||||
* Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef JRITYPES_H
|
||||
#define JRITYPES_H
|
||||
|
||||
#include "jri_md.h"
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
* Types
|
||||
******************************************************************************/
|
||||
|
||||
struct JRIEnvInterface;
|
||||
|
||||
typedef void* JRIRef;
|
||||
typedef void* JRIGlobalRef;
|
||||
|
||||
typedef jint JRIInterfaceID[4];
|
||||
typedef jint JRIFieldID;
|
||||
typedef jint JRIMethodID;
|
||||
|
||||
/* synonyms: */
|
||||
typedef JRIGlobalRef jglobal;
|
||||
typedef JRIRef jref;
|
||||
|
||||
typedef union JRIValue {
|
||||
jbool z;
|
||||
jbyte b;
|
||||
jchar c;
|
||||
jshort s;
|
||||
jint i;
|
||||
jlong l;
|
||||
jfloat f;
|
||||
jdouble d;
|
||||
jref r;
|
||||
} JRIValue;
|
||||
|
||||
|
||||
typedef enum JRIBoolean {
|
||||
JRIFalse = 0,
|
||||
JRITrue = 1
|
||||
} JRIBoolean;
|
||||
|
||||
typedef enum JRIConstant {
|
||||
JRIUninitialized = -1
|
||||
} JRIConstant;
|
||||
|
||||
/* convenience types: */
|
||||
#define JRIConstructorMethodName "<init>"
|
||||
|
||||
/*******************************************************************************
|
||||
* Signature Construction Macros
|
||||
******************************************************************************/
|
||||
|
||||
/*
|
||||
** These macros can be used to construct signature strings. Hopefully their names
|
||||
** are a little easier to remember than the single character they correspond to.
|
||||
** For example, to specify the signature of the method:
|
||||
**
|
||||
** public int read(byte b[], int off, int len);
|
||||
**
|
||||
** you could write something like this in C:
|
||||
**
|
||||
** char* readSig = JRISigMethod(JRISigArray(JRISigByte)
|
||||
** JRISigInt
|
||||
** JRISigInt) JRISigInt;
|
||||
**
|
||||
** Of course, don't put commas between the types.
|
||||
*/
|
||||
#define JRISigArray(T) "[" T
|
||||
#define JRISigByte "B"
|
||||
#define JRISigChar "C"
|
||||
#define JRISigClass(name) "L" name ";"
|
||||
#define JRISigFloat "F"
|
||||
#define JRISigDouble "D"
|
||||
#define JRISigMethod(args) "(" args ")"
|
||||
#define JRISigNoArgs ""
|
||||
#define JRISigInt "I"
|
||||
#define JRISigLong "J"
|
||||
#define JRISigShort "S"
|
||||
#define JRISigVoid "V"
|
||||
#define JRISigBoolean "Z"
|
||||
|
||||
/*******************************************************************************
|
||||
* Environments
|
||||
******************************************************************************/
|
||||
|
||||
extern JRI_PUBLIC_API(const struct JRIEnvInterface**)
|
||||
JRI_GetCurrentEnv(void);
|
||||
|
||||
/*******************************************************************************
|
||||
* Specific Scalar Array Types
|
||||
******************************************************************************/
|
||||
|
||||
/*
|
||||
** The JRI Native Method Interface does not support boolean arrays. This
|
||||
** is to allow Java runtime implementations to optimize boolean array
|
||||
** storage. Using the ScalarArray operations on boolean arrays is bound
|
||||
** to fail, so convert any boolean arrays to byte arrays in Java before
|
||||
** passing them to a native method.
|
||||
*/
|
||||
|
||||
#define JRI_NewByteArray(env, length, initialValues) \
|
||||
JRI_NewScalarArray(env, length, JRISigByte, (jbyte*)(initialValues))
|
||||
#define JRI_GetByteArrayLength(env, array) \
|
||||
JRI_GetScalarArrayLength(env, array)
|
||||
#define JRI_GetByteArrayElements(env, array) \
|
||||
JRI_GetScalarArrayElements(env, array)
|
||||
|
||||
#define JRI_NewCharArray(env, length, initialValues) \
|
||||
JRI_NewScalarArray(env, ((length) * sizeof(jchar)), JRISigChar, (jbyte*)(initialValues))
|
||||
#define JRI_GetCharArrayLength(env, array) \
|
||||
JRI_GetScalarArrayLength(env, array)
|
||||
#define JRI_GetCharArrayElements(env, array) \
|
||||
((jchar*)JRI_GetScalarArrayElements(env, array))
|
||||
|
||||
#define JRI_NewShortArray(env, length, initialValues) \
|
||||
JRI_NewScalarArray(env, ((length) * sizeof(jshort)), JRISigShort, (jbyte*)(initialValues))
|
||||
#define JRI_GetShortArrayLength(env, array) \
|
||||
JRI_GetScalarArrayLength(env, array)
|
||||
#define JRI_GetShortArrayElements(env, array) \
|
||||
((jshort*)JRI_GetScalarArrayElements(env, array))
|
||||
|
||||
#define JRI_NewIntArray(env, length, initialValues) \
|
||||
JRI_NewScalarArray(env, ((length) * sizeof(jint)), JRISigInt, (jbyte*)(initialValues))
|
||||
#define JRI_GetIntArrayLength(env, array) \
|
||||
JRI_GetScalarArrayLength(env, array)
|
||||
#define JRI_GetIntArrayElements(env, array) \
|
||||
((jint*)JRI_GetScalarArrayElements(env, array))
|
||||
|
||||
#define JRI_NewLongArray(env, length, initialValues) \
|
||||
JRI_NewScalarArray(env, ((length) * sizeof(jlong)), JRISigLong, (jbyte*)(initialValues))
|
||||
#define JRI_GetLongArrayLength(env, array) \
|
||||
JRI_GetScalarArrayLength(env, array)
|
||||
#define JRI_GetLongArrayElements(env, array) \
|
||||
((jlong*)JRI_GetScalarArrayElements(env, array))
|
||||
|
||||
#define JRI_NewFloatArray(env, length, initialValues) \
|
||||
JRI_NewScalarArray(env, ((length) * sizeof(jfloat)), JRISigFloat, (jbyte*)(initialValues))
|
||||
#define JRI_GetFloatArrayLength(env, array) \
|
||||
JRI_GetScalarArrayLength(env, array)
|
||||
#define JRI_GetFloatArrayElements(env, array) \
|
||||
((jfloat*)JRI_GetScalarArrayElements(env, array))
|
||||
|
||||
#define JRI_NewDoubleArray(env, length, initialValues) \
|
||||
JRI_NewScalarArray(env, ((length) * sizeof(jdouble)), JRISigDouble, (jbyte*)(initialValues))
|
||||
#define JRI_GetDoubleArrayLength(env, array) \
|
||||
JRI_GetScalarArrayLength(env, array)
|
||||
#define JRI_GetDoubleArrayElements(env, array) \
|
||||
((jdouble*)JRI_GetScalarArrayElements(env, array))
|
||||
|
||||
/******************************************************************************/
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* JRITYPES_H */
|
||||
/******************************************************************************/
|
127
java/pluggable-jvm/wf/src/plugin/win32/installer.c
Normal file
127
java/pluggable-jvm/wf/src/plugin/win32/installer.c
Normal file
@ -0,0 +1,127 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (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 Original Code is The Waterfall Java Plugin Module
|
||||
*
|
||||
* The Initial Developer of the Original Code is Sun Microsystems Inc
|
||||
* Portions created by Sun Microsystems Inc are Copyright (C) 2001
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* $Id: installer.c,v 1.1 2001/07/12 20:26:30 edburns%acm.org Exp $
|
||||
*
|
||||
* Contributor(s):
|
||||
*
|
||||
* Nikolay N. Igotti <nikolay.igotti@Sun.Com>
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
//#include "dialogs.h"
|
||||
//#include "ifuncns.h"
|
||||
|
||||
#define CLASS_NAME "WFInstall"
|
||||
|
||||
/* global variables */
|
||||
HINSTANCE hInst;
|
||||
|
||||
HANDLE hAccelTable;
|
||||
|
||||
HWND hDlgUninstall;
|
||||
HWND hDlgMessage;
|
||||
HWND hWndMain;
|
||||
|
||||
LPSTR szEGlobalAlloc;
|
||||
LPSTR szEStringLoad;
|
||||
LPSTR szEDllLoad;
|
||||
LPSTR szEStringNull;
|
||||
LPSTR szTempSetupPath;
|
||||
|
||||
LPSTR szClassName;
|
||||
LPSTR szUninstallDir;
|
||||
LPSTR szTempDir;
|
||||
LPSTR szOSTempDir;
|
||||
LPSTR szFileIniUninstall;
|
||||
LPSTR gszSharedFilename;
|
||||
|
||||
ULONG ulOSType;
|
||||
DWORD dwScreenX;
|
||||
DWORD dwScreenY;
|
||||
|
||||
void Log(char* str)
|
||||
{
|
||||
MessageBox(hWndMain, str, NULL, MB_ICONEXCLAMATION);
|
||||
}
|
||||
|
||||
|
||||
BOOL InitApplication(HINSTANCE hInstance)
|
||||
{
|
||||
WNDCLASS wc;
|
||||
|
||||
wc.style = CS_DBLCLKS | CS_SAVEBITS | CS_BYTEALIGNWINDOW;
|
||||
wc.lpfnWndProc = DefDlgProc;
|
||||
wc.cbClsExtra = 0;
|
||||
wc.cbWndExtra = DLGWINDOWEXTRA;
|
||||
wc.hInstance = hInstance;
|
||||
//wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_UNINSTALL));
|
||||
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
|
||||
wc.lpszMenuName = NULL;
|
||||
wc.lpszClassName = szClassName;
|
||||
|
||||
return(RegisterClass(&wc));
|
||||
}
|
||||
|
||||
HRESULT Initialize(HINSTANCE hInstance)
|
||||
{
|
||||
szClassName = (LPSTR)GlobalAlloc(GMEM_FIXED|GMEM_ZEROINIT, 50);
|
||||
lstrcpy(szClassName, CLASS_NAME);
|
||||
Log(szClassName);
|
||||
return(0);
|
||||
}
|
||||
|
||||
int APIENTRY WinMain(HINSTANCE hInstance,
|
||||
HINSTANCE hPrevInstance,
|
||||
LPSTR lpszCmdLine,
|
||||
int nCmdShow)
|
||||
{
|
||||
/***********************************************************************/
|
||||
/* HANDLE hInstance; handle for this instance */
|
||||
/* HANDLE hPrevInstance; handle for possible previous instances */
|
||||
/* LPSTR lpszCmdLine; long pointer to exec command line */
|
||||
/* int nCmdShow; Show code for main window display */
|
||||
/***********************************************************************/
|
||||
|
||||
MSG msg;
|
||||
|
||||
if(!hPrevInstance)
|
||||
{
|
||||
hInst = GetModuleHandle(NULL);
|
||||
Log("1");
|
||||
if(Initialize(hInst))
|
||||
{
|
||||
Log("2");
|
||||
PostQuitMessage(1);
|
||||
}
|
||||
else if(!InitApplication(hInst))
|
||||
{
|
||||
Log("3");
|
||||
PostQuitMessage(1);
|
||||
}
|
||||
}
|
||||
Log("4");
|
||||
while(GetMessage(&msg, NULL, 0, 0))
|
||||
{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
return(msg.wParam);
|
||||
} /* End of WinMain */
|
Loading…
Reference in New Issue
Block a user