sl@0: // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // Header file: Declaration for Various Classes used for Audio Resource Notification tests for Video Client. sl@0: // sl@0: // sl@0: sl@0: /** sl@0: @file Testvideoplayer_apr.h sl@0: */ sl@0: sl@0: #ifndef TESTVIDEOPLAYER_APR_H sl@0: #define TESTVIDEOPLAYER_APR_H sl@0: sl@0: sl@0: #include "testvideoplayer.h" sl@0: #include "mdaaudiosampleplayer.h" sl@0: #include "u32hal.h" sl@0: sl@0: sl@0: const TInt KSizeBuf = 256; sl@0: const TInt KMaxEvents = 2; sl@0: sl@0: //------------------------------------------------------------------------------ sl@0: //********************PREQ 797 - Audio Resource Notification******************** sl@0: //------------------------------------------------------------------------------ sl@0: sl@0: /** sl@0: * stopActiveScheduler sl@0: */ sl@0: static TInt stopActiveScheduler(TAny*) sl@0: { sl@0: CActiveScheduler::Stop(); sl@0: return KErrNone; sl@0: } sl@0: sl@0: // sl@0: //Declarations// sl@0: // sl@0: sl@0: // sl@0: //Custom Error Codes & CONST Declarations. sl@0: // sl@0: const TInt KErrUser = -1000; sl@0: const TInt KErrBadResult = (KErrUser - 1); sl@0: const TInt KMicroSecsInOneSec = 1000000; sl@0: const TUint KSampleRate8000Hz = 8000; sl@0: sl@0: // sl@0: //Forward class declarations sl@0: // sl@0: class CCallbackTimer; sl@0: class CTestAVPlayerAPRCallbackSupport; sl@0: class CVclntAviAprWillResumeTimer; sl@0: //------------------------------------------------------------------------------ sl@0: //******************CR 0805 - Auto Pause Resume for video client******************* sl@0: //------------------------------------------------------------------------------ sl@0: sl@0: // sl@0: //ENUM DECLARATIONS// sl@0: // sl@0: sl@0: // Enum to describe the current state. sl@0: enum TAVPlayerAPRState sl@0: { sl@0: EStateBegin = 0, sl@0: EStateOpenAudioPlayer1, sl@0: EStateOpenAudioPlayer2, sl@0: EStateAudioPlaying1, sl@0: EStateAudioPlaying2, sl@0: EStateEndAudioPlay1, sl@0: EStateEndAudioPlay1A, sl@0: EStateEndAudioPlay2, sl@0: EStateEndAudioPlay2A, sl@0: EStateErrInUseAudioPlayer1, sl@0: EStateErrInUseAudioPlayer2, sl@0: EStateNotifiedAudioPlayer1, sl@0: EStateNotifiedAudioPlayer2, sl@0: EStateErrInUseAudioPlayer1A, sl@0: EStateNotifiedAudioPlayer1A, sl@0: EStateAudioPlaying2A, sl@0: EStateAudioEndPlay2A, sl@0: EStatePrepareVideoPlayer, sl@0: EStateOpenVideoPlayer, sl@0: EStateVideoPlaying, sl@0: EStateEndVideoPlay, sl@0: EStateErrInUseVideoPlayer, sl@0: EStateNotifiedVideoPlayer, sl@0: EStateErrInUseVideoPlayer1A, sl@0: EStateNotifiedVideoPlayer1A, sl@0: EStateVideoPlaying2A, sl@0: EStateEndVideoPlay2A, sl@0: EStateNoOtherPlayerNotified sl@0: }; sl@0: sl@0: // Enum to decide which Event has occured. sl@0: enum TAVPlayerAPREvents sl@0: { sl@0: EIdlePlayer = 0, sl@0: EMvpuoOpenComplete, sl@0: EMvpuoPrepareComplete, sl@0: EMvpuoFrameReady, sl@0: EMvpuoPlayComplete, sl@0: EMvpuoEvent, sl@0: EMapcInitComplete1, sl@0: EMapcInitComplete2, sl@0: EMapcPlayComplete1, sl@0: EMapcPlayComplete2, sl@0: EMarncResourceAvailable1, sl@0: EMarncResourceAvailable2, sl@0: EMarncResourceAvailable3 sl@0: }; sl@0: sl@0: // sl@0: //BASE CLASS DECLARATIONS// sl@0: // sl@0: sl@0: /** sl@0: * timer support sl@0: * sl@0: * @class CCallBackTimer sl@0: * sl@0: */ sl@0: sl@0: class CCallBackTimer : public CTimer sl@0: { sl@0: public: sl@0: static CCallBackTimer* NewL(TCallBack aCallBack, TPriority aPriority = EPriorityStandard); sl@0: private: sl@0: virtual void RunL(); sl@0: private: sl@0: CCallBackTimer(TCallBack aCallBack, TPriority aPriority); sl@0: private: sl@0: TCallBack iCallBack; sl@0: }; sl@0: sl@0: sl@0: /** sl@0: * Observer class to identify and pass events to the test step class sl@0: * sl@0: * @class MTestAVPlayerAPRCallback sl@0: * sl@0: */ sl@0: class MTestAVPlayerAPRCallback sl@0: { sl@0: public : sl@0: virtual void MvpuoOpenCompleteTest(TInt aError, CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport) = 0; sl@0: virtual void MvpuoPrepareCompleteTest(TInt aError, CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport)= 0; sl@0: virtual void MvpuoFrameReadyTest(CFbsBitmap &aFrame, TInt aError, CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport)=0; sl@0: virtual void MvpuoPlayCompleteTest(TInt aError,CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport)=0; sl@0: virtual void MvpuoEventTest(const TMMFEvent &aEvent, CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport)=0; sl@0: virtual void MapcInitCompleteTest(TInt aError, const TTimeIntervalMicroSeconds &aDuration, CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport)=0; sl@0: virtual void MapcPlayCompleteTest(TInt aError, CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport)=0; sl@0: virtual void MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport) = 0; sl@0: }; sl@0: sl@0: /** sl@0: * Support class to pass the events to the test step class using the MTestAVPlayerAPRCallback sl@0: * sl@0: * @class CTestAVPlayerAPRCallbackSupport sl@0: * sl@0: */ sl@0: class CTestAVPlayerAPRCallbackSupport : public CBase, public MVideoPlayerUtilityObserver, public MMMFAudioResourceNotificationCallback, public MMdaAudioPlayerCallback sl@0: { sl@0: public : sl@0: static CTestAVPlayerAPRCallbackSupport* NewL(MTestAVPlayerAPRCallback& aCallback); sl@0: virtual void MvpuoOpenComplete(TInt aError); sl@0: virtual void MvpuoPrepareComplete(TInt aError); sl@0: virtual void MvpuoFrameReady(CFbsBitmap &aFrame, TInt aError); sl@0: virtual void MvpuoPlayComplete(TInt aError); sl@0: virtual void MvpuoEvent(const TMMFEvent &aEvent); sl@0: virtual void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds &aDuration); sl@0: virtual void MapcPlayComplete(TInt aError); sl@0: virtual void MarncResourceAvailable(TUid aNotificationEventId, const TDesC8& aNotificationData); sl@0: sl@0: protected: sl@0: CTestAVPlayerAPRCallbackSupport(MTestAVPlayerAPRCallback& aCallback); sl@0: void ConstructL(); sl@0: private : sl@0: MTestAVPlayerAPRCallback& iCallback; sl@0: }; sl@0: sl@0: sl@0: /** sl@0: * Base Class for APR functionality for most APR video player tests sl@0: * sl@0: * @class RTestMmfVclntVideoPlayerAPR sl@0: * sl@0: */ sl@0: class RTestMmfVclntVideoPlayerAPR : public RTestMmfVclntAviStep, public MTestAVPlayerAPRCallback sl@0: { sl@0: public : sl@0: // Constructor sl@0: RTestMmfVclntVideoPlayerAPR(const TDesC& aTestName, const TDesC& aSectName); sl@0: sl@0: // Virtual methods for Preamble and Postamble. sl@0: virtual TVerdict DoTestStepCreateL(); sl@0: virtual TVerdict DoTestStepDeleteL(); sl@0: // Virtual function to access test specific methods sl@0: virtual TVerdict DoTestStepL(); sl@0: // Pure function to access test specific methods sl@0: virtual TVerdict DoTestL()=0; sl@0: // from MTestAVPlayerAPRCallback sl@0: virtual void MvpuoOpenCompleteTest(TInt aError, CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport); sl@0: virtual void MvpuoPrepareCompleteTest(TInt aError, CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport); sl@0: virtual void MvpuoFrameReadyTest(CFbsBitmap &aFrame, TInt aError, CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport); sl@0: virtual void MvpuoPlayCompleteTest(TInt aError,CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport); sl@0: virtual void MvpuoEventTest(const TMMFEvent &aEvent, CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport); sl@0: virtual void MarncResourceAvailableTest(TUid aNotificationEventId, const TDesC8& aNotificationData, CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport); sl@0: virtual void MapcInitCompleteTest(TInt aError, const TTimeIntervalMicroSeconds &aDuration, CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport); sl@0: virtual void MapcPlayCompleteTest(TInt aError, CTestAVPlayerAPRCallbackSupport& aMdaVideoPlayerCallbackSupport); sl@0: sl@0: // Centralised State Handler sl@0: virtual void Fsm(TAVPlayerAPREvents aEventCode, TInt aError)=0; sl@0: virtual TBool FsmCheck(TAVPlayerAPREvents aEventCode, TInt aError); sl@0: virtual TInt SetCacheSize(); sl@0: virtual TInt CheckCacheError(TInt aError); sl@0: sl@0: protected : sl@0: // StateInit Function sl@0: void StateInit(); sl@0: // StateChange Function sl@0: void StateChange(TAVPlayerAPRState aState, TAVPlayerAPREvents aExpectedEvent, TInt aExpectedError=KErrNone, TInt aEventIndex = 1); sl@0: // check if we can go to the next state sl@0: TInt AnalyseInput(TAVPlayerAPREvents aEventCode, TInt aError); sl@0: protected : sl@0: sl@0: // CMdaAudioPlayerUtility instances sl@0: CMdaAudioPlayerUtility* iTestAudioPlayer1; sl@0: CMdaAudioPlayerUtility* iTestAudioPlayer2; sl@0: // CVideoPlayerUtility instances sl@0: CVideoPlayerUtility* iTestVideoPlayer; sl@0: // CTestAVPlayerAPRCallbackSupport instances sl@0: CTestAVPlayerAPRCallbackSupport* iVideoPlayerCallbackSupport1; sl@0: CTestAVPlayerAPRCallbackSupport* iAudioPlayerCallbackSupport1; sl@0: CTestAVPlayerAPRCallbackSupport* iAudioPlayerCallbackSupport2; sl@0: sl@0: sl@0: // Other class variable declarations sl@0: TBuf iFilename1; sl@0: TBuf iFilename2; sl@0: TBuf iFilename3; sl@0: TTimeIntervalMicroSeconds iPosition; sl@0: TTimeIntervalMicroSeconds iDuration; sl@0: TInt iError; sl@0: TAVPlayerAPRState iState; sl@0: TRequestStatus iRequestStatus; sl@0: CCallBackTimer* iCallBackTimer; sl@0: TAVPlayerAPREvents iExpectedEvent[KMaxEvents]; sl@0: TInt iExpectedError[KMaxEvents]; sl@0: TBool iCanStateChange; sl@0: TInt iExpEventCount; sl@0: TInt iActEventCount; sl@0: }; sl@0: sl@0: // sl@0: //POSITIVE TESTS// sl@0: // sl@0: sl@0: /** sl@0: * One-time registration for same event by a player. sl@0: * sl@0: * RTestVclntAprRegOnce4SameEvent sl@0: * MM-MMF-VCLNTAVIAPR-I-0001-HP sl@0: * sl@0: */ sl@0: class RTestVclntAprRegOnce4SameEvent : public RTestMmfVclntVideoPlayerAPR sl@0: { sl@0: public: sl@0: static RTestVclntAprRegOnce4SameEvent* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void Fsm(TAVPlayerAPREvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: RTestVclntAprRegOnce4SameEvent( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Register before opening Video player and receive notification of a resource available event sl@0: * sl@0: * RTestVclntAprRegB4Open sl@0: * MM-MMF-VCLNTAVIAPR-I-0002-HP sl@0: * sl@0: */ sl@0: class RTestVclntAprRegB4Open : public RTestMmfVclntVideoPlayerAPR sl@0: { sl@0: public: sl@0: static RTestVclntAprRegB4Open* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void Fsm(TAVPlayerAPREvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: RTestVclntAprRegB4Open( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Register (after Open and before Play of video) , receive notification of a resource available event. sl@0: * sl@0: * RTestVclntAprRegAftrOpenAndB4Play sl@0: * MM-MMF-VCLNTAVIAPR-I-0003-HP sl@0: * sl@0: */ sl@0: class RTestVclntAprRegAftrOpenAndB4Play : public RTestMmfVclntVideoPlayerAPR sl@0: { sl@0: public: sl@0: static RTestVclntAprRegAftrOpenAndB4Play* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void Fsm(TAVPlayerAPREvents aEventCode, TInt aError); sl@0: TTimeIntervalMicroSeconds iVidPosition; sl@0: sl@0: protected: sl@0: RTestVclntAprRegAftrOpenAndB4Play( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Register after the highest priority client (Audio) completes playing and receive the notification of a resource availalble event. sl@0: * sl@0: * RTestVclntAprRegAftrHpClntCompltPlay sl@0: * MM-MMF-VCLNTAVIAPR-I-0004-HP sl@0: * sl@0: */ sl@0: class RTestVclntAprRegAftrHpClntCompltPlay : public RTestMmfVclntVideoPlayerAPR sl@0: { sl@0: public: sl@0: static RTestVclntAprRegAftrHpClntCompltPlay* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void Fsm(TAVPlayerAPREvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: RTestVclntAprRegAftrHpClntCompltPlay( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Receive notification by same priority players in the order of registration sl@0: * sl@0: * RTestVclntAprRegSamePriorityPlayers sl@0: * MM-MMF-VCLNTAVIAPR-I-0005-HP sl@0: * sl@0: */ sl@0: class RTestVclntAprRegSamePriorityPlayers : public RTestMmfVclntVideoPlayerAPR sl@0: { sl@0: public: sl@0: static RTestVclntAprRegSamePriorityPlayers* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void Fsm(TAVPlayerAPREvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: RTestVclntAprRegSamePriorityPlayers( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: sl@0: /** sl@0: * Register (at the time of Play) and Cancellation of the notification request sl@0: * sl@0: * RTestVclntAprRegAtPlayAndCancelNfn sl@0: * MM-MMF-VCLNTAVIAPR-I-0006-HP sl@0: * sl@0: */ sl@0: class RTestVclntAprRegAtPlayAndCancelNfn : public RTestMmfVclntVideoPlayerAPR sl@0: { sl@0: public: sl@0: static RTestVclntAprRegAtPlayAndCancelNfn* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void Fsm(TAVPlayerAPREvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: RTestVclntAprRegAtPlayAndCancelNfn( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Test for WillResumePlay() using 3 clients. sl@0: * sl@0: * RTestVclntAprTestWillResumePlay sl@0: * MM-MMF-VCLNTAVIAPR-I-0007-HP sl@0: * sl@0: */ sl@0: class RTestVclntAprTestWillResumePlay : public RTestMmfVclntVideoPlayerAPR sl@0: { sl@0: public: sl@0: static RTestVclntAprTestWillResumePlay* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void Fsm(TAVPlayerAPREvents aEventCode, TInt aError); sl@0: virtual void FinishedL(); // for CVclntAviAprWillResumeTimer sl@0: sl@0: protected: sl@0: RTestVclntAprTestWillResumePlay( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: CVclntAviAprWillResumeTimer* iWillResumePlayTimer; sl@0: }; sl@0: sl@0: /** sl@0: * sl@0: * CVclntAviAprWillResumeTimer sl@0: * MM-MMF-VCLNTAVIAPR-I-0007-HP sl@0: * - Timer for checking if no notification occurs in 5 seconds sl@0: * after calling WillResumePlay() sl@0: * sl@0: */ sl@0: class CVclntAviAprWillResumeTimer : public CTimer sl@0: { sl@0: public: sl@0: static CVclntAviAprWillResumeTimer* NewL(RTestVclntAprTestWillResumePlay* aParent, TTimeIntervalMicroSeconds32 aWaitTime); sl@0: void Start(); sl@0: protected: sl@0: TInt RunError(TInt aError); sl@0: void RunL(); sl@0: private: sl@0: CVclntAviAprWillResumeTimer(RTestVclntAprTestWillResumePlay* aParent, TTimeIntervalMicroSeconds32 aWaitTime); sl@0: RTestVclntAprTestWillResumePlay* iParent; sl@0: TTimeIntervalMicroSeconds32 iWaitTime; sl@0: }; sl@0: sl@0: /** sl@0: * APR Alloc tests (using shared heap) for Video Player utility. sl@0: * sl@0: * RTestVclntAprAllocUsingSharedHeap sl@0: * MM-MMF-VCLNTAVIAPR-I-0008-HP sl@0: * sl@0: */ sl@0: class RTestVclntAprAllocUsingSharedHeap : public RTestMmfVclntVideoPlayerAPR sl@0: { sl@0: public: sl@0: static RTestVclntAprAllocUsingSharedHeap* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: void VideoPlayAllocL(); sl@0: virtual TVerdict DoTestStepL(); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void Fsm(TAVPlayerAPREvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: RTestVclntAprAllocUsingSharedHeap( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: sl@0: // sl@0: //NEGATIVE TESTS// sl@0: // sl@0: sl@0: /** sl@0: * Multiple Registration (at the time of Play) and receive notification of a resource available event sl@0: * sl@0: * RTestVclntAprMultRegAtPlay sl@0: * MM-MMF-VCLNTAVIAPR-I-0101-HP sl@0: * sl@0: */ sl@0: class RTestVclntAprMultRegAtPlay : public RTestMmfVclntVideoPlayerAPR sl@0: { sl@0: public: sl@0: static RTestVclntAprMultRegAtPlay* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void Fsm(TAVPlayerAPREvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: RTestVclntAprMultRegAtPlay( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Cancel when no resource Notification is requested. sl@0: * sl@0: * RTestVclntAprCancelNoResourceNfn sl@0: * MM-MMF-VCLNTAVIAPR-I-0102-HP sl@0: * sl@0: */ sl@0: class RTestVclntAprCancelNoResourceNfn : public RTestMmfVclntVideoPlayerAPR sl@0: { sl@0: public: sl@0: static RTestVclntAprCancelNoResourceNfn* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void Fsm(TAVPlayerAPREvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: RTestVclntAprCancelNoResourceNfn( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Register for notification with an unsupported event type. sl@0: * sl@0: * RTestVclntAprRegUnsupportedEvent sl@0: * MM-MMF-VCLNTAVIAPR-I-0103-HP sl@0: * sl@0: */ sl@0: class RTestVclntAprRegUnsupportedEvent : public RTestMmfVclntVideoPlayerAPR sl@0: { sl@0: public: sl@0: static RTestVclntAprRegUnsupportedEvent* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void Fsm(TAVPlayerAPREvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: RTestVclntAprRegUnsupportedEvent( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: /** sl@0: * Cancellation of notification with an unsupported event type. sl@0: * sl@0: * RTestVclntAprCancelUnsupportedEvent sl@0: * MM-MMF-VCLNTAVIAPR-I-0104-HP sl@0: * sl@0: */ sl@0: class RTestVclntAprCancelUnsupportedEvent : public RTestMmfVclntVideoPlayerAPR sl@0: { sl@0: public: sl@0: static RTestVclntAprCancelUnsupportedEvent* NewL( const TDesC& aTestName, const TDesC& aSectName ); sl@0: virtual TVerdict DoTestL(); sl@0: virtual void Fsm(TAVPlayerAPREvents aEventCode, TInt aError); sl@0: sl@0: protected: sl@0: RTestVclntAprCancelUnsupportedEvent( const TDesC& aTestName, const TDesC& aSectName ); sl@0: TVerdict PerformTestL(); sl@0: }; sl@0: sl@0: #endif