browserplugins/browseraudiovideoplugin/inc/BavpPlugin.h
branchRCL_3
changeset 48 8e6fa1719340
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserplugins/browseraudiovideoplugin/inc/BavpPlugin.h	Wed Sep 01 12:31:04 2010 +0100
@@ -0,0 +1,370 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Interface to Browser for handling embedded video requests.
+*
+*/
+
+
+#ifndef BAVPPLUGIN_H
+#define BAVPPLUGIN_H
+
+//  INCLUDES
+#include <e32std.h>
+#include <npupp.h>
+#include <pluginadapterinterface.h> // For base class MPluginNotifier
+#include <aknnotewrappers.h>  // For displaying note
+#include <drmhelper.h>
+#include <DRMCommon.h>
+#include <cecombrowserplugininterface.h>
+#include "BavpNPObject.h"
+#include <rt_gesturehelper.h>
+
+// FORWARD DECLARATIONS
+class CBavpView;
+class CBavpController;
+
+// CLASS DECLARATION
+
+/******************************************
+This class is specific to ECom Style Plugin.
+This is used for passing plugin specific initialization information to and from
+browser.
+*******************************************/
+IMPORT_C NPError InitializeFuncs( NPPluginFuncs* aPpf );
+
+// CONSTANTS
+const TInt KFirstBavpImplementationValue = 0x10282811;
+const TInt KSecondBavpImplementationValue = 0x10282812;
+const TInt KThirdBavpImplementationValue = 0x10282813;
+const TInt KFourthBavpImplementationValue = 0x10282814;
+
+/**
+*  CBavpPluginEcomMain
+*  Used for passing plugin specific initialization information to and from browser.
+*  @lib npBrowserVideoPlugin.lib
+*  @since 3.2
+*/
+class CBavpPluginEcomMain : public CEcomBrowserPluginInterface
+    {
+    public: // Methods from base classes
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CBavpPluginEcomMain* NewL( TAny* aInitParam );
+        
+        /**
+        * Destructor
+        */
+        ~CBavpPluginEcomMain();
+        
+        /**
+        * Passed from the browser to the plugin and delcares what functions the browser 
+        * makes available
+        */
+        NPNetscapeFuncs* Funcs() { return iNpf; }
+
+    private:
+
+        // Default constructor
+        CBavpPluginEcomMain( NPNetscapeFuncs* aNpf );
+
+        // By default Symbian 2nd phase constructor is private.
+        void ConstructL( NPPluginFuncs* aPluginFuncs );
+
+        // Netscape Function Pointer
+        NPNetscapeFuncs* iNpf;
+    };
+
+/**
+*  CBavpPlugin class 
+*  Interfaces to Browser, used to pass information between browser and plugin
+*  @lib npBrowserVideoPlugin.lib
+*  @since 3.2
+*/
+class CBavpPlugin : public CBase,
+                    public MPluginNotifier
+    {
+    public: // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CBavpPlugin* NewL();
+
+        /**
+        * Destructor.
+        */
+        virtual ~CBavpPlugin();
+
+    public: // New methods
+
+       /**
+        * SetWindowL
+        * @since 3.2
+        * @param MPluginAdapter *pluginAdapter: Pointer to Browser adapter class
+        * @param const TRect& aRect: rectangle representing current UI
+        * @return void
+        */
+        void SetWindowL( MPluginAdapter *pluginAdapter, NPWindow* aWindow, NPP aInstance );
+
+        /**
+        * OpenAndPlayFileL
+        * @since 3.2
+        * @param const TDesC& aFileName: Name and path of file to be played
+        * @param const HBufC* originalFileName: name of the file to be played. added for scripting.
+        * @return void
+        */
+        void OpenAndPlayFileL( const TDesC& aFileName, const HBufC* originalFileName );
+
+        /**
+        * OpenAndPlayUrlL
+        * @since 3.2
+        * @param const TDesC& aUrl: Name and path of uri to be played
+        * @return void
+        */
+        void OpenAndPlayUrlL( const TDesC& aUrl );
+        
+        /**
+        * Controller
+        * @since 5.0
+        * @param void
+        * @return controller
+        */
+        CBavpController* Controller() { return iBavpController; }
+        
+        /**
+        * SetNPObject
+        * iNPObject is a scriptable object
+        * @since 5.0
+        * @param BavpNPObject *aObj
+        * @return void
+        */ 
+        void SetNPObject( BavpNPObject* aObj ) { iNPObject = aObj; }
+        
+        /**
+        * NPObject
+        * return the scriptable object
+        * @since 5.0
+        * @param void
+        * @return BavpNPObject*
+        */
+        BavpNPObject* NPObject() const { return iNPObject; }
+
+
+    public: // New methods
+
+        /**
+        * SetAccessPtId
+        * Set access pt id
+        * @since 3.2
+        * @param TUint aAccessPtId, sets the access pt id
+        * @return void
+        */
+        void SetAccessPtId( TUint aAccessPtId );
+
+        /**
+        * SetVolumeAndLoop
+        * Set volume, loop, and infinite values
+        * @since 3.2
+        * @param TInt aVolume, the volume level from web page 
+        * @param TInt aLoop, the loop count from web page 
+        * @param TInt aInfiniteFlag, not used 
+        * @return void
+        */
+        void SetVolumeAndLoop( TInt aVolume, TInt aLoop, TInt aInfiniteFlag );
+
+        /**
+        * SetRtspUri
+        * Set Rtsp uri
+        * @since 3.2
+        * @param TInt aVolume, the volume level from web page 
+        * @param TInt aLoop, the loop count from web page 
+        * @param TInt aInfiniteFlag, not used 
+        * @return void
+        */
+        void SetRtspUriL( const TDesC& aRtspUri );
+
+    public: // Methods from base classes
+
+        /**
+        * From MPluginNotifier
+        * @since 3.2
+        * @param TNotificationType aCallType: Represents a type of notification from Browser
+        * @param void* aParam: Contains value corresponding to notification
+        * @return TInt: Error Code
+        */
+        TInt NotifyL( TNotificationType aCallType, void* aParam );
+
+        /**
+        * Set the mime type
+        * The mimetype is returned from headers
+        * @param NPMIMEType type
+        * @return void
+        */
+        void SetMimeType(NPMIMEType type);
+        
+        NPP  getNPP() {return iNPP;}
+        
+        NPNetscapeFuncs* getNPNFuncs();
+        
+        TBool HandleGesture(void* aEvent);
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CBavpPlugin();
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+       
+    public: // Data
+
+        // Initialize as false, then set it whenever error occurs
+        TBool iError; 
+
+    private:    // Data
+
+        // Interface to Browser
+        MPluginAdapter* iPluginAdapter;
+
+        // Audio or Video controller
+        CBavpController* iBavpController;
+
+        // CCoeControl interface
+        CBavpView* iBavpView;
+        
+        BavpNPObject* iNPObject;
+
+        // Resource offset
+        TInt iResourceOffset;
+
+        // Src file scheme, which is changed by script in run time
+        HBufC* iFileName;
+        
+        // Src RTSP scheme uri, which is used to start BavpController 
+        HBufC* iRtspUrl;
+
+        // Access point id  
+        TUint iAccessPtId;
+
+        // Value of the Volume embedded in the HTML file
+        TInt  iVolume;
+
+        // Value of the Loop embedded in the HTML file
+        TInt  iLoop;
+
+        // Flag indication if the loop is set to infinite
+        TBool iInfiniteFlag;
+
+        // DRM Helper instance to address the error case from the plugin level
+        CDRMHelper* iDrmHelper;
+        
+        // Mime type. Added for scripting functionality
+        HBufC8* iMimeType;
+        NPP iNPP;
+        //browser plugin state, used for play and resume 
+        TBool iPauseState; 
+        TBool iIsForeGround;
+        TBool iPauseInBackground;
+        TBool iPlayFromFile;
+    };
+
+/**
+********************************************************************************
+    Plugin API methods. Source located in CBavpApi.cpp
+*********************************************************************************
+*/
+
+/**
+ * Create a plugin.
+ */
+
+NPError BavpNewp( NPMIMEType pluginType, NPP instance, uint16 mode,
+                  CDesCArray* argn, CDesCArray* argv, NPSavedData* saved );
+
+/**
+ * Wrapper the errors
+ */
+void BavpConstructL( NPP aInstance, CDesCArray* argn, CDesCArray* argv );
+
+/**
+ * Destroy a plugin.
+ */
+NPError BavpDestroy( NPP instance, NPSavedData** save );
+
+/**
+ * This is the parent window of a plugin.
+ */
+NPError BavpSetwindow( NPP instance, NPWindow* window );
+
+/**
+ * A new data stream has been created for sending data to the plugin.
+ */
+NPError BavpNewstream( NPP instance, NPMIMEType type, NPStream* stream,
+                       NPBool seekable, uint16* stype );
+
+/**
+ * A data stream has been terminated.
+ */
+NPError BavpDestroystream( NPP instance, NPStream* stream, NPReason reason );
+
+/**
+ * A data stream has been fully saved to a file.
+ */
+void BavpAsfile( NPP instance, NPStream* stream, const TDesC& fname );
+
+/**
+ * Return the maximum number of bytes this plugin can accept from the stream.
+ */
+int32 BavpWriteready( NPP instance, NPStream* stream );
+
+/**
+ * Receive more data - return number of bytes processed.
+ */
+int32 BavpWrite( NPP instance, NPStream* stream,
+                 int32 offset, int32 len, void* buffer );
+
+/**
+ * This is the URL being sensed.
+ */
+void BavpUrlnotify( NPP instance, const TDesC8& url, NPReason reason,
+                    void* notifyData );
+
+/**
+ * Generic hook to retrieve values/attributes from the plugin.
+ */
+NPError BavpGetvalue( NPP instance, NPPVariable variable, void *ret_value );
+
+/**
+ * Generic hook to set values/attributes within the plugin.
+ */
+NPError BavpSetvalue( NPP instance, NPNVariable variable, void *ret_value );
+
+/**
+ * Print
+ */
+void BavpPrint( NPP instance, NPPrint* platformPrint );
+
+/**
+ * Event
+ */
+int16 BavpEvent( NPP instance, void* event );
+
+#endif      // BAVPPLUGIN_H
+
+// End of File