tsrc/fusionmpxplayer_test/FusionMpxPlayerTestExeUi/inc/FusionMpxPlayerTester.h
changeset 0 96612d01cf9f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/fusionmpxplayer_test/FusionMpxPlayerTestExeUi/inc/FusionMpxPlayerTester.h	Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,241 @@
+/*
+* Copyright (c) 2008 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: 
+*
+*/
+
+
+#ifndef FUSIONMPXPLAYERTESTER_H
+#define FUSIONMPXPLAYERTESTER_H
+
+//  INCLUDES
+#include <e32base.h>
+
+#include <mpxvideoplaybackdefs.h>
+#include <mpxplaybackobserver.h>
+#include <mpxviewactivationobserver.h>
+
+// FORWARD DECLARATIONS
+class CVcxConnectionUtility;
+class MMPXPlaybackUtility;
+class MMPXViewUtility;
+class CIptvTestActiveWait;
+
+// DATA TYPES
+const TInt KTestUndefined = 10001;
+const TInt KFusionTestMsgNone = -66666;
+
+// CLASS DECLARATION
+class TExpectedGeneralMessage
+    {
+    public:
+        TExpectedGeneralMessage( TInt aEvent, TInt aType, TInt aData )
+            {
+            iEvent = aEvent;
+            iType = aType;
+            iData = aData;
+            }
+    public:
+        TInt iEvent;
+        TInt iType;
+        TInt iData;
+    };
+
+class MFusionMpxPlayerTesterObserver
+    {
+    public:
+        /**
+         * Sent when expected message list is empty. 
+         */
+        virtual void TesterCommandComplete() = 0;
+    };
+
+/**
+* 
+*/
+class CFusionMpxPlayerTester : public CBase,
+                               public MMPXPlaybackObserver,
+                               public MMPXViewActivationObserver,
+                               public MMPXPlaybackCallback
+    {
+    public:
+        /**
+        * Two-phased constructor.
+        */
+        static CFusionMpxPlayerTester* NewL( MFusionMpxPlayerTesterObserver* aObserver );
+
+        /**
+        * C++ default constructor.
+        */
+        CFusionMpxPlayerTester();
+
+        /**
+        * Destructor.
+        */
+        ~CFusionMpxPlayerTester();
+
+    public: // New functions
+
+        TInt OpenLocalFile( const TDesC& aFileName );
+        
+        void OpenUrlL( const TDesC& aUrl, TInt aIapID );
+
+        void CreateGeneralPlaybackCommandL( TMPXPlaybackCommand aCmd, TInt aData = KTestUndefined );
+        
+        void CreateVideoPlaybackCommandL( TMPXVideoPlaybackCommand aCmd );
+        
+        /**
+         * Checks that all expected messages have been gotten.
+         */
+        TInt CheckExpectedMessages();
+        
+        void AddExpectedGeneralPlaybackCommandMessages( TMPXPlaybackCommand aCmd, TInt &aData );
+        void AddExpectedVideoPlaybackCommandMessages( TMPXVideoPlaybackCommand aCmd );
+        TInt ExpectedMessageCount() { return iExpectedGeneralMessages.Count(); };
+        void PrepareCloseL();
+    
+    private: // New functions
+
+        void GetGeneralPlaybackCommandDes( TMPXPlaybackCommand aCmd, TDes& aDes );
+        void GetVideoPlaybackCommandDes( TMPXVideoPlaybackCommand aCmd, TDes& aDes );
+        void GetGeneralPlaybackEventDes( TInt aEvent, TDes& aDes );
+        void GetStateDes( TMPXPlaybackState aState, TDes& aDes );
+        void GetPropertyDes( TMPXPlaybackProperty aProperty, TDes& aDes );        
+        
+    private: // Constructors and destructor
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL( MFusionMpxPlayerTesterObserver* aObserver );
+
+    private: // Functions from base classes
+
+        /**
+        *  Handle playback message.
+        *  Note: only one of HandlePlaybackMessage callback can be implemented.
+        *  Note: change into pure virtual when all clients updated.
+        *
+        *  @since S60 3.2.3
+        *  @param aMsg playback message, ownership not transferred.
+        *         Please check aMsg is not NULL before using it. If aErr is not
+        *         KErrNone, plugin might still call back with more info in the aMsg.
+        *  @param aErr system error code.
+        */
+        virtual void HandlePlaybackMessage( CMPXMessage* aMsg, TInt aErr );
+
+        void DoHandleGeneralPlaybackMessageL( const CMPXMessage& aMessage );
+        
+        void DoHandleVideoPlaybackMessageL( const CMPXMessage& aMessage );
+
+        void DoHandleStateChangeL( TMPXPlaybackState aState );
+        
+        void DoHandlePropertyChangeL( TInt aProperty, TInt aValue );
+        
+        /**
+         * Handle view activation.
+         *
+         * @since S60 3.2.3
+         * @param aCurrentViewType Current view type Uid.
+         * @param aPreviousViewType Previous view type Uid.
+         */
+        virtual void HandleViewActivation( const TUid& aCurrentViewType, const TUid& aPreviousViewType );
+
+        /**
+         * Called in case a view plugin is added/updated/removed through a SIS install.
+         *
+         * @since S60 3.2.3
+         * @param aViewUid view UID
+         * @param aUpdateEvent Defines the update type (addition/update/removal).
+         * @param aLoaded ETrue if the view plugin is loaded, EFalse otherwise. It is recommended
+         *          that client applications exit when loaded plugins are updated or removed.
+         *          This would normally be handled in the AppUi.
+         * @param aData Its meaning depends on the update event:
+         *            EViewPluginAdd - new view plugin version
+         *            EViewPluginUpdate - new view plugin version
+         *            EViewPluginRemove - old view plugin version
+         */
+        virtual void HandleViewUpdate( TUid aViewUid, TViewUpdateEvent aUpdateEvent, 
+                TBool aLoaded, TInt aData );
+
+        /**
+        *  Handle playback property.
+        *
+        *  @since S60 3.2.3
+        *  @param aProperty the property
+        *  @param aValue the value of the property
+        *  @param aError error code
+        */
+        virtual void HandlePropertyL(TMPXPlaybackProperty aProperty,
+                                     TInt aValue, 
+                                     TInt aError);
+        
+        /**
+        *  Method is called continously until aComplete=ETrue, signifying that 
+        *  it is done and there will be no more callbacks.
+        *  Only new items are passed each time.
+        *
+        *  @since S60 3.2.3
+        *  @param aPlayer UID of the subplayer
+        *  @param aSubPlayers a list of sub players
+        *  @param aComplete ETrue no more sub players. EFalse more subplayer
+        *                   expected
+        *  @param aError error code
+        */
+        virtual void HandleSubPlayerNamesL(TUid aPlayer, 
+                                           const MDesCArray* aSubPlayers,
+                                           TBool aComplete,
+                                           TInt aError);
+        
+        /**
+        *  Call back of media request.
+        *
+        *  @since S60 3.2.3
+        *  @param aMedia media 
+        *  @param aError error code    
+        */
+        virtual void HandleMediaL(const CMPXMedia& aProperties,
+                                  TInt aError);
+        
+        /**
+         *  Handle completion of a asynchronous command.
+         *  Note: All clients should implement this callback.
+         *
+         *  @since S60 3.2.3
+         *  @param aCommandResult result of the command, NULL if error
+         *  @param aError error code    
+         */
+        virtual void HandlePlaybackCommandComplete( CMPXCommand* /*aCommandResult*/, 
+                                                   TInt /*aError*/ );
+        
+    private: // Data
+        MFusionMpxPlayerTesterObserver* iObserver;
+        
+        MMPXPlaybackUtility*      iPlaybackUtility;
+
+        MMPXViewUtility*          iViewUtility;
+        
+        RArray<TExpectedGeneralMessage> iExpectedGeneralMessages;
+        
+        TMPXPlaybackState iState;
+        
+        TInt iVolume;
+        TInt iVolumeBeforeMute;
+        
+        TBool iInitComplete;
+        
+        CIptvTestActiveWait* iWait;
+        };
+
+#endif // FUSIONMPXPLAYERTESTER_H