Linux Mac OSX Windows
 The nsIPlugin interface is the minimum interface plugin developers need to 
 support in order to implement a plugin. The plugin manager may QueryInterface 
 for more specific plugin types, e.g. nsILiveConnectPlugin.

 The old NPP_New plugin operation is now subsumed by two operations:

 CreateInstance -- called once, after the plugin instance is created. This 
 method is used to initialize the new plugin instance (although the actual
 plugin instance object will be created by the plugin manager).

 nsIPluginInstance::Start -- called when the plugin instance is to be
 started. This happens in two circumstances: (1) after the plugin instance
 is first initialized, and (2) after a plugin instance is returned to
 (e.g. by going back in the window history) after previously being stopped
 by the Stop method. 
[uuid(df773070-0199-11d2-815b-006008119d7a)]
interface nsIPlugin : nsIFactory

Methods

 Creates a new plugin instance, based on a MIME type. This
 allows different impelementations to be created depending on
 the specified MIME type.
void createPluginInstance(in nsISupports aOuter, in nsIIDRef aIID, in string aPluginMIMEType, [iid_is(aIID), retval] out nsQIResult aResult)
 Returns the MIME description for the plugin. The MIME description 
 is a colon-separated string containg the plugin MIME type, plugin
 data file extension, and plugin name, e.g.:

 "application/x-simple-plugin:smp:Simple LiveConnect Sample Plug-in"

 (Corresponds to NPP_GetMIMEDescription.)

 @param aMIMEDescription - the resulting MIME description 
 @result                 - NS_OK if this operation was successful
void getMIMEDescription(out constCharPtr aMIMEDescription)
 Returns the value of a variable associated with the plugin.

 (Corresponds to NPP_GetValue.)

 @param aVariable - the plugin variable to get
 @param aValue    - the address of where to store the resulting value
 @result          - NS_OK if this operation was successful
void getValue(in nsPluginVariable aVariable, in voidPtr aValue)
 Initializes the plugin and will be called before any new instances are
 created. It is passed browserInterfaces on which QueryInterface
 may be used to obtain an nsIPluginManager, and other interfaces.

 @param browserInterfaces - an object that allows access to other browser
 interfaces via QueryInterface
 @result - NS_OK if this operation was successful
void initialize()
 Called when the browser is done with the plugin factory, or when
 the plugin is disabled by the user.

 (Corresponds to NPP_Shutdown.)

 @result - NS_OK if this operation was successful
void shutdown()