gecko-dev/java/plugins
edburns%acm.org 118875675b M mozilla/Makefile.in
- add nspr to libs

M mozilla/nppluglet.cpp

- make sure to store instance pointer for return to browser, this enables
  shutdown to work properly

- When HasPlugletForMimeType is called multiple times, actually check
  the mime type.

M mozilla/nsISimplePlugin.idl

- Fix this so it's callable from JavaScript

M src/PlugletsDir.cpp

- Fix bug for multiple plugin instances

Index: mozilla/Makefile.in
===================================================================
RCS file: /cvsroot/mozilla/java/plugins/mozilla/Makefile.in,v
retrieving revision 1.1
diff -u -r1.1 Makefile.in
--- mozilla/Makefile.in	7 Oct 2006 23:31:52 -0000	1.1
+++ mozilla/Makefile.in	14 Oct 2006 12:26:06 -0000
@@ -59,7 +59,7 @@

 XPIDLSRCS = nsISimplePlugin.idl

-SHARED_LIBRARY_LIBS = $(PLUGIN_SDK)/samples/common/$(LIB_PREFIX)plugingate_s.$(LIB_SUFFIX) ../src/$(LIB_PREFIX)pluglet_s.$(LIB_SUFFIX)
+SHARED_LIBRARY_LIBS = $(PLUGIN_SDK)/samples/common/$(LIB_PREFIX)plugingate_s.$(LIB_SUFFIX) ../src/$(LIB_PREFIX)pluglet.$(LIB_SUFFIX) $(XPCOM_LIBS) $(NSPR_LIBS)

 ifeq ($(OS_ARCH),WINNT)
 DEFFILE = $(win_srcdir)/nppluglet.def
Index: mozilla/nppluglet.cpp
===================================================================
RCS file: /cvsroot/mozilla/java/plugins/mozilla/nppluglet.cpp,v
retrieving revision 1.3
diff -u -r1.3 nppluglet.cpp
--- mozilla/nppluglet.cpp	13 Oct 2006 14:45:14 -0000	1.3
+++ mozilla/nppluglet.cpp	14 Oct 2006 12:26:07 -0000
@@ -47,6 +47,8 @@

 #include "nsServiceManagerUtils.h"

+#include "plstr.h"
+
 // service manager which will give the access to all public browser services
 // we will use memory service as an illustration
 nsIServiceManager * gServiceManager = NULL;
@@ -153,17 +155,21 @@
 // nsPluginInstance class implementation
 //
 nsPluginInstance::nsPluginInstance(nsPluginCreateData * aCreateDataStruct) : nsPluginInstanceBase(),
-  mInstance(aCreateDataStruct->instance),
   mInitialized(PR_FALSE),
   mScriptablePeer(nsnull),
   mPluglet(nsnull)
 {
+  mInstance = aCreateDataStruct->instance;
+
   mCreateDataStruct.instance = aCreateDataStruct->instance;
   mCreateDataStruct.type = aCreateDataStruct->type;
   mCreateDataStruct.mode = aCreateDataStruct->mode;
   mCreateDataStruct.argc = aCreateDataStruct->argc;
   mCreateDataStruct.argn = aCreateDataStruct->argn;
   mCreateDataStruct.saved = aCreateDataStruct->saved;
+
+  mCreateDataStruct.instance->pdata = this;
+  mInstance->pdata = this;
   mString[0] = '\0';
 }

@@ -256,19 +262,27 @@
                                                       PRBool *outResult)
 {
     nsresult rv = NS_ERROR_FAILURE;
-
-    nsCOMPtr<nsIPlugin> plugletEngine =
-	do_GetService(PLUGLETENGINE_ContractID, &rv);
     *outResult = PR_FALSE;
+    nsCOMPtr<nsIPlugin> plugletEngine = nsnull;
     nsIID scriptableIID = NS_ISIMPLEPLUGIN_IID;
+
+    if (!mPluglet) {
+        plugletEngine = do_GetService(PLUGLETENGINE_ContractID, &rv);

-    if (NS_SUCCEEDED(rv)) {
-        rv = plugletEngine->CreatePluginInstance(nsnull, scriptableIID,
-                                                 aMimeType,
-                                                 getter_AddRefs(mPluglet));
-        if (NS_SUCCEEDED(rv) && mPluglet) {
+        if (NS_SUCCEEDED(rv)) {
+            rv = plugletEngine->CreatePluginInstance(nsnull, scriptableIID,
+                                                     aMimeType,
+                                                     getter_AddRefs(mPluglet));
+            if (NS_SUCCEEDED(rv) && mPluglet) {
+                *outResult = PR_TRUE;
+            }
+        }
+    }
+    else {
+        if (0 == PL_strcmp(aMimeType, mCreateDataStruct.type)) {
             *outResult = PR_TRUE;
         }
+		rv = NS_OK;
     }

     return rv;
Index: mozilla/nsISimplePlugin.idl
===================================================================
RCS file: /cvsroot/mozilla/java/plugins/mozilla/nsISimplePlugin.idl,v
retrieving revision 1.2
diff -u -r1.2 nsISimplePlugin.idl
--- mozilla/nsISimplePlugin.idl	12 Oct 2006 21:22:47 -0000	1.2
+++ mozilla/nsISimplePlugin.idl	14 Oct 2006 12:26:07 -0000
@@ -40,5 +40,5 @@

 [scriptable, uuid(482e1890-1fe5-11d5-9cf8-0060b0fbd8ac)]
 interface nsISimplePlugin : nsISupports {
-  void hasPlugletForMimeType(in string aMimeType, out boolean isSupported);
+  boolean hasPlugletForMimeType(in string aMimeType);
 };
Index: src/PlugletsDir.cpp
===================================================================
RCS file: /cvsroot/mozilla/java/plugins/src/PlugletsDir.cpp,v
retrieving revision 1.10
diff -u -r1.10 PlugletsDir.cpp
--- src/PlugletsDir.cpp	12 Oct 2006 21:22:47 -0000	1.10
+++ src/PlugletsDir.cpp	14 Oct 2006 12:26:07 -0000
@@ -124,6 +124,9 @@
     if(!mMimeTypeToPlugletFacoryHash) {
 	res = LoadPluglets();
     }
+    else {
+	res = NS_OK;
+    }
     if (NS_SUCCEEDED(res) && mMimeTypeToPlugletFacoryHash) {
 	*plugletFactory = (PlugletFactory *)
 	    PL_HashTableLookup(mMimeTypeToPlugletFacoryHash,
2006-10-14 12:28:15 +00:00
..
classes
config
examples pluglet_build 2006-03-26 16:36:55 +00:00
jni Make plugletjni.lib and .dll build. 2006-03-24 17:57:24 +00:00
mozilla M mozilla/Makefile.in 2006-10-14 12:28:15 +00:00
src M mozilla/Makefile.in 2006-10-14 12:28:15 +00:00
test checkpoint 2006-10-12 21:22:47 +00:00
wrappers
build.xml checkpoint 2006-10-12 21:22:47 +00:00
README

Java-Implemented Plug-ins.
================================
http://www.mozilla.org/projects/blackwood/java-plugins/
--------------------------------
This directory contains the beginnings of the Java-Implemented plug-uns.

The sources is divided into four directories

	classes
	       Java source files
	src 
	       Native code (c++/c)
	jni
	       Implamentations of java native methods
	test
	       Test code, including simple pluglet.

========================================================================
Win32 Directions:
========================================================================
Requirements:

* current mozilla built tree

* JDK1.3 or JDK1.2 if you are not using OJI

* Perl 5 perl.exe must be in your path

How To Build:

*  make sure the environment var JDKHOME is set to your jdk installation
   directory, ie SET JDKHOME=C:\jdk1.2

* if you do not have working OJI set OJI_DISABLE to 1
  (You can do it in your command prompt, or you can set it in 
   mozilla/java/plugins/src/makefile.win).

* type "nmake /f makefile.win"

How to Run:

* Add following directories to to your path:
  %MOZILLA_FIVE_HOME%
  In case OJI_DISABLE add %JDKHOME%\jre\bin\client to your path

* Copy class files from mozilla/dist/classes to your JRE/lib/ext directory and
add JRE/lib/ext to your classpath
 
How to build and run test
* go to the test directory and type "nmake /f makefile.win"

* Set PLUGLET environment to the  directory you have test.jar

* Run mozilla and load page test.html from test directory and if everething is ok you will see
  some awt demo.


=========================================================================
Unix (Sparc Solaris and i386 Linux) Directions:
=========================================================================

Requirements:

* current mozilla built tree

* JDK1.3 

* Perl 5 must be in your path

How To Build:

*  make sure the environment var JDKHOME is set to your jdk installation
   directory, ie export  JDKHOME=/usr/local/jdk1.3

* Add following directories to to your LD_LIBRARY_PATH:

$MOZILLA_FIVE_HOME:$JDKHOME/jre/lib/$HOSTTYPE/native_threads:$JDKHOME/jre/lib/$HOSTTYPE/client:
$JDKHOME/jre/lib/$HOSTTYPE/:

* type "gmake"
     
How to Run:
	 
* Add $MOZILLA_FILE_HOME/../classes to your CLASSPATH

How to build and run test

* go to the test directory and type "gmake"
  test.jar will be placed  in mozilla/dist/bin/plugins directory

* set LD_PRELOAD to libXm.so (to libawt.so on linux platform)

* Run mozilla and load page resource:///res/javadev/pluglets/test.html and if everething is ok you will see  some awt demo.
  
  
========================================================================

Problems:

* post to netscape.public.mozilla.java newsgroup