diff --git a/mozilla/extensions/java/xpcom/AppFileLocProvider.java b/mozilla/extensions/java/xpcom/AppFileLocProvider.java index 20e39b0ae0c..b8ce68a241d 100644 --- a/mozilla/extensions/java/xpcom/AppFileLocProvider.java +++ b/mozilla/extensions/java/xpcom/AppFileLocProvider.java @@ -39,8 +39,33 @@ package org.mozilla.xpcom; import java.io.*; + +/** + * Used by XPCOM's Directory Service to get file locations. + * + * @see GeckoEmbed#initEmbedding + * @see XPCOM#initXPCOM + */ public interface AppFileLocProvider { + /** + * Directory Service calls this when it gets the first request for + * a prop or on every request if the prop is not persistent. + * + * @param prop the symbolic name of the file + * @param persistent an array of length one used to supply the output value:
true - The returned file will be cached
+ * by Directory Service. Subsequent requests for this prop
+ * will bypass the provider and use the cache. false - The provider will be asked for
+ * this prop each time it is requested. null to use the working
+ * directory.
+ * @param aAppFileLocProvider The object to be used by Gecko that specifies
+ * to Gecko where to find profiles, the component
+ * registry preferences and so on; or use
+ * null for the default behaviour.
+ *
+ * @exception XPCOMException if a failure occurred during initialization
+ */
+ public static native
+ void initEmbedding(File aMozBinDirectory,
+ AppFileLocProvider aAppFileLocProvider);
+
+ /**
+ * Terminates the Gecko embedding layer. Call this function during shutdown to
+ * ensure that global services are unloaded, files are closed and
+ * XPCOM is shutdown.
+ * + * NOTE: Release any XPCOM objects within Gecko that you may be holding a + * reference to before calling this function. + *
+ * + * @exception XPCOMException if a failure occurred during termination + */ + public static native + void termEmbedding(); } diff --git a/mozilla/extensions/java/xpcom/XPCOM.java b/mozilla/extensions/java/xpcom/XPCOM.java index 4cb331e622f..aeadef9aa38 100644 --- a/mozilla/extensions/java/xpcom/XPCOM.java +++ b/mozilla/extensions/java/xpcom/XPCOM.java @@ -41,19 +41,121 @@ import java.lang.reflect.*; import java.io.*; +/** + * Provides access to methods for initializing XPCOM, as well as helper methods + * for working with XPCOM classes. + */ public final class XPCOM { - public static native nsIServiceManager initXPCOM(File aMozBinDirectory, AppFileLocProvider aAppFileLocProvider); - public static native void shutdownXPCOM(nsIServiceManager aServMgr); - public static native nsIServiceManager getServiceManager(); - public static native nsIComponentManager getComponentManager(); - public static native nsIComponentRegistrar getComponentRegistrar(); - public static native nsILocalFile newLocalFile(String aPath, boolean followLinks); + /** + * Initializes XPCOM. You must call this method before proceeding + * to use XPCOM. + * + * @param aMozBinDirectory The directory containing the component + * registry and runtime libraries; + * or usenull to use the working
+ * directory.
+ *
+ * @param aAppFileLocProvider The object to be used by Gecko that specifies
+ * to Gecko where to find profiles, the component
+ * registry preferences and so on; or use
+ * null for the default behaviour.
+ *
+ * @return the service manager
+ *
+ * @exception XPCOMException queryInterface method. This helper
+ * function provides a simple implementation. Therefore, if your class does
+ * not need to do anything special with queryInterface, your
+ * implementation would look like:
+ *
+ * public nsISupports queryInterface(String aIID) {
+ * return XPCOM.queryInterface(this, aIID);
+ * }
+ *
+ *
+ * @param aObject object to query
+ * @param aIID requested interface IID
+ *
+ * @return aObject if the given object supports that
+ * interface;
+ * null otherwise.
+ */
public static nsISupports queryInterface(nsISupports aObject, String aIID)
{
Class[] interfaces = aObject.getClass().getInterfaces();
@@ -64,8 +166,14 @@ public final class XPCOM {
return null;
}
- // Given an interface, this will construct the name of the IID field (such as
- // NS_ISUPPORTS_IID) and return its value.
+ /**
+ * Gets the interface IID for a particular Java interface. This is similar
+ * to NS_GET_IID in the C++ Mozilla files.
+ *
+ * @param aInterface interface which has defined an IID
+ *
+ * @return IID for given interface
+ */
public static String getInterfaceIID(Class aInterface)
{
// Get short class name (i.e. "bar", not "org.blah.foo.bar")
@@ -90,7 +198,7 @@ public final class XPCOM {
iid = (String) iidField.get(null);
} catch (NoSuchFieldException e) {
// Class may implement non-Mozilla interfaces, which would not have an
- // IID method. In that case, just return an emptry string.
+ // IID method. In that case, just return an empty string.
iid = "";
} catch (IllegalAccessException e) {
// XXX Should be using a logging service, such as java.util.logging
diff --git a/mozilla/extensions/java/xpcom/XPCOMException.java b/mozilla/extensions/java/xpcom/XPCOMException.java
index 3ee5031e819..e29be655497 100644
--- a/mozilla/extensions/java/xpcom/XPCOMException.java
+++ b/mozilla/extensions/java/xpcom/XPCOMException.java
@@ -37,26 +37,28 @@
package org.mozilla.xpcom;
+
+/**
+ * This exception is thrown whenever an internal XPCOM/Gecko error occurs.
+ * The internal Mozilla error ID is contained in the message.
+ */
public final class XPCOMException extends RuntimeException {
+ /**
+ * Constructs a new XPCOMException instance.
+ */
public XPCOMException() {
super();
}
+ /**
+ * Constructs a new XPCOMException instance.
+ *
+ * @param message detailed message of exception
+ */
public XPCOMException(String message) {
super(message);
}
- /* The RuntimeException constructors that take a Throwable parameter are only
- available starting in Java 1.4. Commenting out for now to allow use by
- Java 1.3
- */
-/* public XPCOMException(String message, Throwable cause) {
- super(message, cause);
- }
-
- public XPCOMException(Throwable cause) {
- super(cause);
- }*/
}