ns4xPluginInstance.h - Revision 1.16

There were 1 changes made.
Legend
   Added lines
   Changed lines
   Removed lines

ns4xPluginInstance.h,1.16
.
Disk File
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
.
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
.
 *
 * The contents of this file are subject to the Netscape Public
.
 * The contents of this file are subject to the Netscape Public
 * License Version 1.1 (the "License"); you may not use this file
.
 * License Version 1.1 (the "License"); you may not use this file
 * except in compliance with the License. You may obtain a copy of
.
 * except in compliance with the License. You may obtain a copy of
 * the License at http://www.mozilla.org/NPL/
.
 * the License at http://www.mozilla.org/NPL/
 *
.
 *
 * Software distributed under the License is distributed on an "AS
.
 * Software distributed under the License is distributed on an "AS
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
.
 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 * implied. See the License for the specific language governing
.
 * implied. See the License for the specific language governing
 * rights and limitations under the License.
.
 * rights and limitations under the License.
 *
.
 *
 * The Original Code is mozilla.org code.
.
 * The Original Code is mozilla.org code.
 *
.
 *
 * The Initial Developer of the Original Code is Netscape
.
 * The Initial Developer of the Original Code is Netscape
 * Communications Corporation.  Portions created by Netscape are
.
 * Communications Corporation.  Portions created by Netscape are
 * Copyright (C) 1998 Netscape Communications Corporation. All
.
 * Copyright (C) 1998 Netscape Communications Corporation. All
 * Rights Reserved.
.
 * Rights Reserved.
 *
.
 *
 * Contributor(s): 
.
 * Contributor(s): 
 */
.
 */
 
.
 
#ifndef ns4xPluginInstance_h__
.
#ifndef ns4xPluginInstance_h__
#define ns4xPluginInstance_h__
.
#define ns4xPluginInstance_h__
 
.
 
#define _UINT32
.
#define _UINT32
 
.
 
/* On HPUX, int32 is already defined in /usr/include/moduel.h */
.
/* On HPUX, int32 is already defined in /usr/include/moduel.h */
/* #ifndef hpux */
.
/* #ifndef hpux */
#ifndef HPUX11
.
#ifndef HPUX11
#define _INT32
.
#define _INT32
#endif /* HPUX11 */
.
#endif /* HPUX11 */
 
.
 
#include "nsplugin.h"
.
#include "nsplugin.h"
#include "npupp.h"
.
#include "npupp.h"
#include "jri.h"
.
#include "jri.h"
#include "prlink.h"  // for PRLibrary
.
#include "prlink.h"  // for PRLibrary
#include "nsIScriptablePlugin.h"
.
#include "nsIScriptablePlugin.h"
 
.
 
#ifdef MOZ_WIDGET_GTK
.
#ifdef MOZ_WIDGET_GTK
#include <gtk/gtk.h>
.
#include <gtk/gtk.h>
#endif
.
#endif
 
.
 
////////////////////////////////////////////////////////////////////////
.
////////////////////////////////////////////////////////////////////////
 
.
 
class ns4xPluginInstance : public nsIPluginInstance,
.
class ns4xPluginInstance : public nsIPluginInstance,
                           public nsIScriptablePlugin
.
                           public nsIScriptablePlugin
{
.
{
public:
.
public:
 
.
 
    NS_DECL_ISUPPORTS
.
    NS_DECL_ISUPPORTS
 
.
 
    ////////////////////////////////////////////////////////////////////////
.
    ////////////////////////////////////////////////////////////////////////
    // nsIPluginInstance methods
.
    // nsIPluginInstance methods
 
.
 
    /**
.
    /**
     * Actually initialize the plugin instance. This calls the 4.x <b>newp</b>
.
     * Actually initialize the plugin instance. This calls the 4.x <b>newp</b>
     * callback, and may return an error (which is why it is distinct from the
.
     * callback, and may return an error (which is why it is distinct from the
     * constructor.) If an error is returned, the caller should <i>not</i>
.
     * constructor.) If an error is returned, the caller should <i>not</i>
     * continue to use the <b>ns4xPluginInstance</b> object.
.
     * continue to use the <b>ns4xPluginInstance</b> object.
     */
.
     */
    NS_METHOD Initialize(nsIPluginInstancePeer* peer);
.
    NS_METHOD Initialize(nsIPluginInstancePeer* peer);
 
.
 
    NS_IMETHOD GetPeer(nsIPluginInstancePeer* *resultingPeer);
.
    NS_IMETHOD GetPeer(nsIPluginInstancePeer* *resultingPeer);
 
.
 
    NS_IMETHOD Start(void);
.
    NS_IMETHOD Start(void);
 
.
 
    NS_IMETHOD Stop(void);
.
    NS_IMETHOD Stop(void);
 
.
 
    NS_IMETHOD Destroy(void);
.
    NS_IMETHOD Destroy(void);
 
.
 
    NS_IMETHOD SetWindow(nsPluginWindow* window);
.
    NS_IMETHOD SetWindow(nsPluginWindow* window);
 
.
 
    NS_IMETHOD NewStream(nsIPluginStreamListener** listener);
.
    NS_IMETHOD NewStream(nsIPluginStreamListener** listener);
 
.
 
    NS_IMETHOD Print(nsPluginPrint* platformPrint);
.
    NS_IMETHOD Print(nsPluginPrint* platformPrint);
 
.
 
    NS_IMETHOD GetValue(nsPluginInstanceVariable variable, void *value);
.
    NS_IMETHOD GetValue(nsPluginInstanceVariable variable, void *value);
 
.
 
    NS_IMETHOD HandleEvent(nsPluginEvent* event, PRBool* handled);
.
    NS_IMETHOD HandleEvent(nsPluginEvent* event, PRBool* handled);
    
.
    
    ////////////////////////////////////////////////////////////////////////
.
    ////////////////////////////////////////////////////////////////////////
    // nsIScriptablePlugin methods
.
    // nsIScriptablePlugin methods
 
.
 
    NS_IMETHOD GetScriptablePeer(void * *aScriptablePeer);
.
    NS_IMETHOD GetScriptablePeer(void * *aScriptablePeer);
 
.
 
    NS_IMETHOD GetScriptableInterface(nsIID * *aScriptableInterface);
.
    NS_IMETHOD GetScriptableInterface(nsIID * *aScriptableInterface);
 
.
 
    ////////////////////////////////////////////////////////////////////////
.
    ////////////////////////////////////////////////////////////////////////
    // ns4xPluginInstance-specific methods
.
    // ns4xPluginInstance-specific methods
 
.
 
    /**
.
    /**
     * Return the 4.x-style interface object.
.
     * Return the 4.x-style interface object.
     */
.
     */
    nsresult GetNPP(NPP * aNPP);
.
    nsresult GetNPP(NPP * aNPP);
 
.
 
    /**
.
    /**
     * Return the callbacks for the plugin instance.
.
     * Return the callbacks for the plugin instance.
     */
.
     */
    nsresult GetCallbacks(const NPPluginFuncs ** aCallbacks);
.
    nsresult GetCallbacks(const NPPluginFuncs ** aCallbacks);
 
.
 
    nsresult SetWindowless(PRBool aWindowless);
.
    nsresult SetWindowless(PRBool aWindowless);
 
.
 
    nsresult SetTransparent(PRBool aTransparent);
.
    nsresult SetTransparent(PRBool aTransparent);
 
.
 
    nsresult NewNotifyStream(nsIPluginStreamListener** listener, void* notifyD
ata);
.
    nsresult NewNotifyStream(nsIPluginStreamListener** listener, void* notifyD
ata);
 
.
 
    /**
.
    /**
     * Construct a new 4.x plugin instance with the specified peer
.
     * Construct a new 4.x plugin instance with the specified peer
     * and callbacks.
.
     * and callbacks.
     */
.
     */
    ns4xPluginInstance(NPPluginFuncs* callbacks, PRLibrary* aLibrary);
.
    ns4xPluginInstance(NPPluginFuncs* callbacks, PRLibrary* aLibrary);
 
.
 
    // Use Release() to destroy this
.
    // Use Release() to destroy this
    virtual ~ns4xPluginInstance(void);
.
    virtual ~ns4xPluginInstance(void);
 
.
 
    // returns the state of mStarted
.
    // returns the state of mStarted
    PRBool IsStarted(void);
.
    PRBool IsStarted(void);
 
.
    
protected:
.
protected:
 
.
 
    nsresult InitializePlugin(nsIPluginInstancePeer* peer);
.
    nsresult InitializePlugin(nsIPluginInstancePeer* peer);
    
.
    
    /**
.
    /**
     * The plugin instance peer for this instance.
.
     * The plugin instance peer for this instance.
     */
.
     */
    nsCOMPtr<nsIPluginInstancePeer> mPeer;
.
    nsCOMPtr<nsIPluginInstancePeer> mPeer;
 
.
 
    /**
.
    /**
     * A pointer to the plugin's callback functions. This information
.
     * A pointer to the plugin's callback functions. This information
     * is actually stored in the plugin class (<b>nsPluginClass</b>),
.
     * is actually stored in the plugin class (<b>nsPluginClass</b>),
     * and is common for all plugins of the class.
.
     * and is common for all plugins of the class.
     */
.
     */
    NPPluginFuncs* fCallbacks;
.
    NPPluginFuncs* fCallbacks;
 
.
 
#ifdef MOZ_WIDGET_GTK
.
#ifdef MOZ_WIDGET_GTK
   /**
.
   /**
    * Special GtkXtBin widget that encapsulates the Xt toolkit
.
    * Special GtkXtBin widget that encapsulates the Xt toolkit
    * within a Gtk Application
.
    * within a Gtk Application
    */
.
    */
   GtkWidget *mXtBin;
.
   GtkWidget *mXtBin;
#endif
.
#endif
 
.
 
    /**
.
    /**
     * The 4.x-style structure used to communicate between the plugin
.
     * The 4.x-style structure used to communicate between the plugin
     * instance and the browser.
.
     * instance and the browser.
     */
.
     */
    NPP_t fNPP;
.
    NPP_t fNPP;
 
.
 
    //these are used to store the windowless properties
.
    //these are used to store the windowless properties
    //which the browser will later query
.
    //which the browser will later query
 
.
 
    PRBool  mWindowless;
.
    PRBool  mWindowless;
    PRBool  mTransparent;
.
    PRBool  mTransparent;
    PRBool  mStarted;
.
    PRBool  mStarted;
 
.
 
public:
.
public:
    PRLibrary* fLibrary;
.
    PRLibrary* fLibrary;
};
.
};
 
.
 
#endif // ns4xPluginInstance_h__
.
#endif // ns4xPluginInstance_h__