From 0d9bfd924a9f173ee36c6f6037210222ea2eeb6a Mon Sep 17 00:00:00 2001 From: "idk%eng.sun.com" Date: Tue, 26 Sep 2000 06:53:53 +0000 Subject: [PATCH] * NOT PART OF TBOX BUILDS * Updated Pluglets to tip of the tree and latest jdk1.3 on solaris Fixed 40615 --- .../pluglet/mozilla/PlugletManagerImpl.java | 34 ++++++------ java/plugins/examples/zip/ZipView.java | 21 +++++--- java/plugins/src/Makefile.in | 8 +-- java/plugins/src/PlugletEngine.cpp | 54 +++++++++---------- java/plugins/src/PlugletViewMotif.cpp | 36 ++++++------- 5 files changed, 78 insertions(+), 75 deletions(-) diff --git a/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletManagerImpl.java b/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletManagerImpl.java index 4a797a5cc0bd..deee82bfe661 100644 --- a/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletManagerImpl.java +++ b/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletManagerImpl.java @@ -1,4 +1,4 @@ -/* +/* -*- 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 @@ -58,11 +58,13 @@ public class PlugletManagerImpl implements PlugletManager { * 'javascript:' URLs, even if the user currently has JavaScript * disabled (usually specify false) */ - public native void getURL(Pluglet pluglet, + public void getURL(Pluglet pluglet, URL url, String target, PlugletStreamListener streamListener, String altHost, URL referrer, - boolean forceJSEnabled); + boolean forceJSEnabled) { + throw(new UnsupportedOperationException("PlagletManager.getURL not implemented yet")); + } /** * Posts to a URL with post data and/or post headers. * @@ -89,18 +91,20 @@ public class PlugletManagerImpl implements PlugletManager { * are no post headers */ - public native void postURL(Pluglet pluglet, - URL url, - int postDataLen, - byte[] postData, - boolean isFile, - String target, - PlugletStreamListener streamListener, - String altHost, - URL referrer, - boolean forceJSEnabled, - int postHeadersLength, - byte[] postHeaders); + public void postURL(Pluglet pluglet, + URL url, + int postDataLen, + byte[] postData, + boolean isFile, + String target, + PlugletStreamListener streamListener, + String altHost, + URL referrer, + boolean forceJSEnabled, + int postHeadersLength, + byte[] postHeaders) { + throw(new UnsupportedOperationException("PlagletManager.postURL not implemented yet")); + } protected void finalize() { nativeFinalize(); } diff --git a/java/plugins/examples/zip/ZipView.java b/java/plugins/examples/zip/ZipView.java index 19dc8dd97bc8..1cb1b13ed9fe 100644 --- a/java/plugins/examples/zip/ZipView.java +++ b/java/plugins/examples/zip/ZipView.java @@ -4,7 +4,8 @@ import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeSelectionModel; import javax.swing.tree.TreePath; import javax.swing.JScrollPane; - +import javax.swing.JButton; +import javax.swing.JTextField; import org.mozilla.pluglet.*; import org.mozilla.pluglet.mozilla.*; @@ -43,7 +44,7 @@ class Node { } class ZipDecoder implements Pluglet { - Button extract; + JButton extract; byte[] b; Frame frm; Panel panel; @@ -129,10 +130,13 @@ class ZipDecoder implements Pluglet { extract.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { - - if (zipTree == null) return; + if (zipTree == null) { + return; + } TreePath tp = zipTree.getSelectionPath(); - if (tp == null) return; + if (tp == null) { + return; + } Object[] elements = tp.getPath(); if (tp.getPathCount() == 1) return; @@ -267,7 +271,7 @@ class ZipDecoder implements Pluglet { public void start() { panel = new Panel(); - extract = new Button("Extract"); + extract = new JButton("Extract"); } public void stop() { @@ -289,7 +293,10 @@ class ZipDecoder implements Pluglet { frame.setLayout(new BorderLayout()); frame.setSize(defaultSize); frame.add(panel); - panel.add(extract); + JPanel jpanel = new JPanel(); + panel.add(jpanel); + + jpanel.add(extract); frame.pack(); frm=frame; } diff --git a/java/plugins/src/Makefile.in b/java/plugins/src/Makefile.in index f09a896128e4..1c5a3083606a 100644 --- a/java/plugins/src/Makefile.in +++ b/java/plugins/src/Makefile.in @@ -49,21 +49,21 @@ CPPSRCS = \ PlugletViewFactory.cpp \ $(NULL) -CXXFLAGS += $(MOZ_TOOLKIT_REGISTRY_CFLAGS) -D_REENTRANT -DOJI_DISABLE +CXXFLAGS := -I$(JDKHOME)/include -I$(JDKHOME)/include/solaris $(MOZ_TOOLKIT_REGISTRY_CFLAGS) -D_REENTRANT -DOJI_DISABLE $(CXXFLAGS) DSO_LDOPTS += \ -L$(JDKHOME)/jre/lib/$(HOSTTYPE)/ \ -L$(JDKHOME)/jre/lib/$(HOSTTYPE)/classic \ - -ljava -ljvm -lawt \ + -ljava -ljvm -lawt -lXt\ -lgdk ifneq ($(OS_ARCH), Linux) DSO_LDOPTS += \ - -lthread -lXm -lX11 -lXt -lm + -lthread endif - include $(topsrcdir)/config/rules.mk +CCC += $(CXXFLAGS) diff --git a/java/plugins/src/PlugletEngine.cpp b/java/plugins/src/PlugletEngine.cpp index c30b5ff3fcb5..001aa23b51ed 100644 --- a/java/plugins/src/PlugletEngine.cpp +++ b/java/plugins/src/PlugletEngine.cpp @@ -43,8 +43,8 @@ static NS_DEFINE_CID(kPluginManagerCID, NS_PLUGINMANAGER_CID); PRLogModuleInfo* PlugletLog::log = NULL; -#define PLUGLETENGINE_PROGID \ -"component://netscape/blackwood/pluglet-engine" +#define PLUGLETENGINE_ContractID \ + "@mozilla.org/blackwood/pluglet-engine;1" #define PLUGLETENGINE_CID \ { /* C1E694F3-9BE1-11d3-837C-0004AC56C49E */ \ @@ -58,7 +58,7 @@ static nsModuleComponentInfo components[] = { "Pluglet Engine", PLUGLETENGINE_CID, - PLUGLETENGINE_PROGID, + PLUGLETENGINE_ContractID, PlugletEngineConstructor } }; @@ -173,42 +173,36 @@ PlugletEngine::~PlugletEngine(void) { JavaVM *PlugletEngine::jvm = NULL; -void PlugletEngine::StartJVM(void) { - PR_LOG(PlugletLog::log, PR_LOG_DEBUG, - ("PlugletEngine::StartJVM\n")); - JNIEnv *env = NULL; +void PlugletEngine::StartJVM() { + JNIEnv *env = NULL; jint res; jsize jvmCount; JNI_GetCreatedJavaVMs(&jvm, 1, &jvmCount); if (jvmCount) { PR_LOG(PlugletLog::log, PR_LOG_DEBUG, - ("PlugletEngine::StartJVM we have running jvm. We do not need to start another one\n")); + ("PlugletEngine::StartJVM we got already started JVM\n")); return; } - JDK1_1InitArgs vm_args; char classpath[1024]; - JNI_GetDefaultJavaVMInitArgs(&vm_args); - vm_args.version = 0x00010001; - /* Append USER_CLASSPATH to the default system class path */ - sprintf(classpath, "%s%c%s", - vm_args.classpath, PATH_SEPARATOR, PR_GetEnv("CLASSPATH")); + JavaVMInitArgs vm_args; + JavaVMOption options[2]; + + sprintf(classpath, "-Djava.class.path=%s",PR_GetEnv("CLASSPATH")); PR_LOG(PlugletLog::log, PR_LOG_DEBUG, - ("PlugletEngine::StartJVM classpath=%s\n",classpath)); - char **props = new char*[2]; - props[0]="java.compiler=NONE"; - props[1]=0; - vm_args.properties = props; - vm_args.classpath = classpath; - /* Create the Java VM */ - res = JNI_CreateJavaVM(&jvm, &env, &vm_args); - if(res < 0 ) { - PR_LOG(PlugletLog::log, PR_LOG_DEBUG, - ("PlugletEngine::StartJVM JNI_CreateJavaVM failed \n")); - } else { - PR_LOG(PlugletLog::log, PR_LOG_DEBUG, - ("PlugletEngine::StartJVM jvm was started \n")); - } + ("PlugletEngine::StartJVM about to create JVM classpath=%s\n",classpath)); + options[0].optionString = classpath; + options[1].optionString=""; //-Djava.compiler=NONE"; + vm_args.version = 0x00010002; + vm_args.options = options; + vm_args.nOptions = 2; + vm_args.ignoreUnrecognized = JNI_TRUE; + /* Create the Java VM */ + res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); + printf("--bcJavaGlobal::StartJVM jvm started res %d\n",res); + PR_LOG(PlugletLog::log, PR_LOG_DEBUG, + ("PlugletEngine::StartJVM after CreateJavaVM res = %d\n",res)); } + #endif /* OJI_DISABLE */ JNIEnv * PlugletEngine::GetJNIEnv(void) { @@ -238,7 +232,7 @@ JNIEnv * PlugletEngine::GetJNIEnv(void) { StartJVM(); } if (jvm) { - jvm->AttachCurrentThread(&res,NULL); + jvm->AttachCurrentThread((void**)&res,NULL); } #endif /* OJI_DISABLE */ return res; diff --git a/java/plugins/src/PlugletViewMotif.cpp b/java/plugins/src/PlugletViewMotif.cpp index 637fdd63222b..81fd823ec2a2 100644 --- a/java/plugins/src/PlugletViewMotif.cpp +++ b/java/plugins/src/PlugletViewMotif.cpp @@ -49,18 +49,23 @@ PlugletViewMotif::PlugletViewMotif() { WindowID = 0; } -#ifdef SOLARIS //following futures are not available under Linux Blackdown JDK extern "C" void getAwtData(int *awt_depth, Colormap *awt_cmap, Visual **awt_visual, int *awt_num_colors, void *pReserved); +extern "C" Display *getAwtDisplay(void); + +extern "C" void getAwtLockFunctions(void (**AwtLock)(JNIEnv *), + void (**AwtUnlock)(JNIEnv *), + void (**AwtNoFlushUnlock)(JNIEnv *), + void *pReserved); + static int awt_depth; static Colormap awt_cmap; static Visual * awt_visual; static int awt_num_colors; -#endif void PlugletViewMotif::Initialize() { PR_LOG(PlugletLog::log, PR_LOG_DEBUG, @@ -77,21 +82,11 @@ void PlugletViewMotif::Initialize() { clazz = NULL; return; } -#ifdef SOLARIS - getAwtData(&awt_depth, &awt_cmap, &awt_visual, &awt_num_colors, NULL); -#endif + getAwtData(&awt_depth, &awt_cmap, &awt_visual, &awt_num_colors, NULL); } -#define AWT_LOCK() (env)->MonitorEnter(awt_lock) - -#define AWT_UNLOCK() (env)->MonitorExit(awt_lock) - - - -extern jobject awt_lock; -extern Display *awt_display; - PRBool PlugletViewMotif::SetWindow(nsPluginWindow* win) { + PR_LOG(PlugletLog::log, PR_LOG_DEBUG, ("PlugletViewMotif.SetWindow this=%p\n",this)); JNIEnv *env = PlugletEngine::GetJNIEnv(); @@ -136,7 +131,12 @@ PRBool PlugletViewMotif::SetWindow(nsPluginWindow* win) { WindowID = containerWindowID; - AWT_LOCK(); + void (*AwtLock)(JNIEnv *); + void (*AwtUnLock)(JNIEnv *); + void (*AwtNoFlushUnLock)(JNIEnv *); + getAwtLockFunctions(&AwtLock, &AwtUnLock, &AwtNoFlushUnLock,NULL); + AwtLock(env); + Display *awt_display = getAwtDisplay(); XSync(awt_display, FALSE); Arg args[40]; int argc = 0; @@ -146,12 +146,10 @@ PRBool PlugletViewMotif::SetWindow(nsPluginWindow* win) { XtSetArg(args[argc], XmNheight, win->height); argc++; XtSetArg(args[argc], XmNx, 0); argc++; XtSetArg(args[argc], XmNy, 0); argc++; - XtSetArg(args[argc],XmNmappedWhenManaged,False); argc++; -#ifdef SOLARIS + XtSetArg(args[argc], XmNmappedWhenManaged,False); argc++; XtSetArg(args[argc], XmNvisual, awt_visual); argc++; XtSetArg(args[argc], XmNdepth, awt_depth); argc++; XtSetArg(args[argc], XmNcolormap, awt_cmap); argc++; -#endif Widget w = XtAppCreateShell("AWTapp", "XApplication", vendorShellWidgetClass, awt_display, @@ -183,7 +181,7 @@ PRBool PlugletViewMotif::SetWindow(nsPluginWindow* win) { } } - AWT_UNLOCK(); + AwtUnLock(env); return PR_TRUE; }