videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosCollectionPluginTest.h
changeset 0 96612d01cf9f
child 15 cf5481c2bc0b
child 34 bbb98528c666
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/inc/VCXMyVideosCollectionPluginTest.h	Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,892 @@
+/*
+* Copyright (c) 2002 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:   ?Description*
+*/
+
+
+
+#ifndef VCXMYVIDEOSCOLLECTIONPLUGINTEST_H
+#define VCXMYVIDEOSCOLLECTIONPLUGINTEST_H
+
+//  INCLUDES
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+#include "MVCXMyVideosCollectionPluginTesterObserver.h"
+#include <f32file.h>
+#include "MIptvTestTimerObserver.h"
+//#ifdef __WINSCW__
+#include <harvesterclient.h>
+//#endif // __WINSCW__
+#include "CIptvTestVideoCreator.h"
+
+// CONSTANTS
+const TInt KTimeoutMinute = 60 * 1000000; // a minute
+const TInt KTimeoutSecond = 1000000;
+_LIT( KVCXMYVideosTest2kURLTag, "XXX2kURLXXX" );
+_LIT( KVCXMYVideosTest1200CharsURLTag, "XXX21200charsURLXXX" );
+_LIT( KVCXMYVideosTest1kURLTag, "XXX1kURLXXX" );
+_LIT( KVCXMYVideosTest2kURL, "http://193.65.182.78/Nseries/video1.3gp?123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456_END" );
+//_LIT( KVCXMYVideosTest1200charsURL, "http://193.65.182.78/Nseries/video1.3gp?123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012_END" );
+_LIT( KVCXMYVideosTest1kURL, "http://193.65.182.78/Nseries/video1.3gp?123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012ASDFASDFAADSFDSFASDFSDAFSDFASDFADFASDF_END" );
+_LIT( KVCXTestZeroIap, "VcxTestZeroIap" );
+_LIT( KVCXTestInvalidIap, "VcxTestInvalidIap" );
+_LIT( KVCXTestZeroUrl, "VcxTestZeroUrl" );
+
+// MACROS
+//#define ?macro ?macro_def
+// Logging path
+_LIT( KVCXMyVideosCollectionPluginTestLogPath, "\\logs\\testframework\\VCXMyVideosCollectionPluginTest\\" );
+// Log file
+_LIT( KVCXMyVideosCollectionPluginTestLogFile, "VCXMyVideosCollectionPluginTest.txt" );
+
+// FORWARD DECLARATIONS
+class CVCXMyVideosCollectionPluginTest;
+class CVCXMyVideosCollectionPluginTester;
+class CVCXTestCommon;
+class CIptvTestActiveWait;
+class CIptvTestTimer;
+class CMPXMedia;
+class TMPXAttributeData;
+class CIptvVodContentContentBriefDetails;
+class CVCXMyVideosTestServiceEmu;
+class CVCXTestMdsDbModifier;
+class CFileMan;
+class CMPXMediaArray;
+class CVCXTestStatsKeeper;
+
+// DATA TYPES
+//enum ?declaration
+//typedef ?declaration
+//extern ?data_type;
+enum TVcxTestMediaAttributeType
+    {
+    EVcxTestMediaAttributeTypeString = 1,
+    EVcxTestMediaAttributeTypeTTime,
+    EVcxTestMediaAttributeTypeTDateTime,
+    EVcxTestMediaAttributeTypeTInt,
+    EVcxTestMediaAttributeTypeTUint,
+    EVcxTestMediaAttributeTypeTUint8,
+    EVcxTestMediaAttributeTypeTUint32,
+    EVcxTestMediaAttributeTypeTReal32,
+    EVcxTestMediaAttributeTypeTInt32,
+    EVcxTestMediaAttributeTypeTMPXItemId,
+    EVcxTestMediaAttributeTypeTInt8,
+    EVcxTestMediaAttributeTypeTInt64,
+    EVcxTestMediaAttributeTypeMvFlags,
+    };
+
+enum TVcxTestMediaAttributeIdMapping
+    {
+    EVcxTestMapping_KMPXMediaGeneralId = 1, /* Brief */
+    EVcxTestMapping_KMPXMediaGeneralTitle, /* Brief */
+    EVcxTestMapping_KMPXMediaGeneralComment,
+    EVcxTestMapping_KMPXMediaGeneralUri, /* Brief */
+    EVcxTestMapping_KMPXMediaGeneralSize, /* Brief, not used */
+    EVcxTestMapping_KMPXMediaGeneralExtSizeInt64, /* Brief */
+    EVcxTestMapping_KMPXMediaGeneralDate,
+    EVcxTestMapping_KMPXMediaGeneralFlags,
+    EVcxTestMapping_KMPXMediaGeneralCopyright,
+    EVcxTestMapping_KMPXMediaGeneralMimeType,
+    EVcxTestMapping_KVcxMediaMyVideosModifiedDate,
+    EVcxTestMapping_KVcxMediaMyVideosAgeProfile, /* Brief */
+    EVcxTestMapping_KVcxMediaMyVideosAudioLanguage,
+    EVcxTestMapping_KVcxMediaMyVideosAuthor,
+    EVcxTestMapping_KVcxMediaMyVideosOrigin,
+    EVcxTestMapping_KVcxMediaMyVideosDuration,
+    EVcxTestMapping_KMPXMediaGeneralLastPlaybackPosition,
+    EVcxTestMapping_KVcxMediaMyVideosDownloadId,
+    /* Rest are not saved into MDS */
+    EVcxTestMapping_KVcxMediaMyVideosRemoteUrl,
+    EVcxTestMapping_KVcxMediaMyVideosDownloadState,
+    EVcxTestMapping_KVcxMediaMyVideosIapId,
+    EVcxTestMapping_KVcxMediaMyVideosUsername,
+    EVcxTestMapping_KVcxMediaMyVideosPassword,
+    EVcxTestMapping_KVcxMediaMyVideosCommandId,
+    EVcxTestMapping_KVcxMediaMyVideosDownloadProgress,
+    EVcxTestMapping_KVcxMediaMyVideosCategoryItemCount,
+    EVcxTestMapping_KVcxMediaMyVideosCategoryNewItemCount,
+    EVcxTestMapping_KVcxMediaMyVideosModifiedDateCurrent,
+    EVcxTestMapping_KVcxMediaMyVideosCategoryNewItemName,
+    EVcxTestMapping_KVcxMediaMyVideosAudioFourCc
+    };
+
+typedef RPointerArray<CIptvVodContentContentBriefDetails> TVcxTestContentArray;
+
+// CLASS DECLARATION
+
+/**
+*  CVCXMyVideosCollectionPluginTest test class for STIF Test Framework TestScripter.
+*  ?other_description_lines
+*
+*  @lib ?library
+*  @since ?Series60_version
+*/
+NONSHARABLE_CLASS(CVCXMyVideosCollectionPluginTest) : public CScriptBase,
+            public MVCXMyVideosCollectionPluginTesterObserver, public MIptvTestTimerObserver
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CVCXMyVideosCollectionPluginTest* NewL( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CVCXMyVideosCollectionPluginTest();
+
+    public: // Functions from base classes
+
+        /**
+        * From CScriptBase Runs a script line.
+        * @since ?Series60_version
+        * @param aItem Script line containing method name and parameters
+        * @return Symbian OS error code
+        */
+        virtual TInt RunMethodL( CStifItemParser& aItem );
+
+        /*
+         * From CVCXMyVideosCollectionPluginTesterObserver.
+         */
+        virtual void HandleVcxMvTesterMessageL( TInt aMessage, TInt aError );
+
+        /**
+        * From MIptvTestTimerObserver Handles timer completion
+        * @since
+        * @param aTimerId
+        * @param aError
+        */
+        void TimerComplete(TInt aTimerId, TInt aError);
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CVCXMyVideosCollectionPluginTest( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+        /**
+        * Frees all resources allocated from test methods.
+        * @since ?Series60_version
+        */
+        void Delete();
+
+        /**
+         * Methods for STIF testscripter.
+         */
+
+        /**
+        * Initializes the test module.
+        *
+        * @param CaseId When this is given then events and other major calls are logged into a
+        *        separate text file.
+        */
+        virtual TInt CreateL( CStifItemParser& aItem );
+
+        /**
+         * Enables statistics for this instance. Disables error reporting to STIF for errors from collection plugin.
+         *
+         * @param Name for the stats.
+         * @param Filename for the stats. 
+         */
+         virtual TInt EnableStatsL( CStifItemParser& aItem );
+             
+        /**
+         * Sets CenRep value for My Videos MPX plugin preferred memory for downloads.
+         *
+         * @param aPreferredMemory, a drive letter
+         */
+        virtual TInt SetPreferredMemoryL( CStifItemParser& aItem );
+
+        /**
+         * Sets CenRep value for My Videos MPX plugin sort.
+         * If category is whole collection is refreshed:
+         *  - Sort order set to none.
+         *  - Close/Open(index) called for Mpx collection.
+         *  - Sort order set as specified.
+         *  - Close/Open(index) called for Mpx collection.
+         *
+         * @param aSortingOrder
+         */
+        virtual TInt SetSortingOrderL( CStifItemParser& aItem );
+
+        /**
+         * Use to toggle automatic refresh of contents when open collection changes.
+         * Use with caution, some actions need the refresh.
+         */
+        virtual TInt SetAutomaticRefresh( CStifItemParser& aItem );
+
+        /**
+         * Use to disable some of the logging of test module.
+         */
+        virtual TInt SetQuietMode( CStifItemParser& aItem );
+
+        /**
+         * Waits until VCX MV plugin stops sending messages.
+         * Messages are processed but not signaled to test script.
+         *
+         * @param timeout minutes (default 10)
+         */
+        virtual TInt CoolDownL( CStifItemParser& aItem );
+
+        /**
+         * Disables check for missing downloads.
+         */
+        virtual TInt DisableDownloadCheckL( CStifItemParser& aItem );
+
+        /**
+         * Toggle filecheck on/off.
+         */
+        virtual TInt SetFileCheckL( CStifItemParser& aItem );
+
+        /**
+         * Enables or disables the resuming paused downloads automaticly.
+         *
+         * @param TBool
+         */
+        virtual TInt SetAutoResumeL( CStifItemParser& aItem );
+
+        /**
+         * Opens MPX collection.
+         * Asynchronous, test script will be signaled.
+         *
+         * @param collection UID as hex.
+         */
+        virtual TInt OpenCollectionL( CStifItemParser& aItem );
+
+        /**
+         * Opens collection level, e.g. My Videos category.
+         * Asynchronous, test script will be signaled.
+         *
+         * @param index number of the level.
+         */
+        virtual TInt OpenLevelL( CStifItemParser& aItem );
+
+        /**
+         * Closes collection level, e.g. My Videos category.
+         * Asynchronous, test script will be signaled.
+         */
+        virtual TInt CloseLevelL( CStifItemParser& aItem );
+
+        /**
+         * Refreshes the contents of currently open level.
+         * Asynchronous, test script will be signaled.
+         */
+        virtual TInt RefreshContentsL( CStifItemParser& aItem );
+
+        /**
+         * Gets medias by their MPX IDs
+         * Video category must be open, current entries will be the items with
+         * requested MPX IDs when this succeeds.
+         * Asynchronous, test script will be signaled.
+         *
+         * See CVCXMyVideosCollectionPluginTester header for SelectMediasL for selection rules.
+         *
+         * @param aStartIndex index at current entries.
+         * @param aEndIndex, index at current entries.
+         * @param aSyncCall, sync call, default is false for async. 
+         */
+        virtual TInt GetMediasByMpxIdL( CStifItemParser& aItem );
+
+        /**
+         * Gets details of the selected MPX item, e.g. My Videos video.
+         * Synchronous.
+         *
+         * @param driveLetter
+         * @param index
+         */
+        virtual TInt GetMediaFullDetailsL( CStifItemParser& aItem );
+
+        /**
+         * Gets details of the selected MPX item, e.g. My Videos video.
+         * Synchronous.
+         *
+         * @param driveLetter
+         * @param index
+         */
+        virtual TInt GetMediaFullDetailsByMpxIdL( CStifItemParser& aItem );
+
+        /**
+         * Gets details of all current MPX items and prints them into debug output.
+         */
+        virtual TInt GetAllMediaFullDetailsL( CStifItemParser& aItem );
+
+        /**
+         * Checks an attribute of a video item.
+         *
+         * This will fetch the full media from MPX.
+         *
+         * @param driveLetter
+         * @param itemIndex
+         * @param media attribute mapping id, see vcxmvcollectionplugintest.inc
+         * @param expectedValue
+         * @param expectedValue2...X
+         * @param When checking for real number use expectedValue2 for digits.
+         *        For TMPXItemId expectedValue2 is the iId2 member.
+         *        For KMPXMediaGeneralFlags there can be multiple expected values.
+         */
+        virtual TInt CheckMediaDetailL( CStifItemParser& aItem );
+
+        /**
+         * Sets attribute of media item made with CreateCopyOfMediaL.
+         *
+         * @param media attribute mapping id, see vcxmvcollectionplugintest.inc
+         * @param value
+         * @param value2...X
+         *       When setting real number use value2 for digits.
+         *        For TMPXItemId value2 is the iId2 member.
+         *        For KMPXMediaGeneralFlags there can be multiple values.
+         */
+        virtual TInt SetMediaDetailL( CStifItemParser& aItem );
+
+        /**
+         * Checks the video count and that the videos really exist.
+         *
+         * @param driveLetter, if specified checks only videos only on that drive
+         * @param expectedCount
+         */
+        virtual TInt CheckMediaCountL( CStifItemParser& aItem );
+
+        /**
+         * Checks the video count and that the videos really exist.
+         *
+         * @param driveLetter, if specified checks only videos only on that drive
+         * @param minimumCount
+         */
+        virtual TInt CheckMinimumMediaCountL( CStifItemParser& aItem );
+
+        /**
+         * Checks the video count and that the videos really exist.
+         *
+         * @param driveLetter, if specified checks only videos only on that drive
+         * @param maximumCount
+         */
+        virtual TInt CheckMaximumMediaCountL( CStifItemParser& aItem );
+
+        /**
+         * Checks the download count.
+         *
+         * @param expectedCount
+         */
+        virtual TInt CheckDownloadCountL( CStifItemParser& aItem );
+        
+        /**
+         * Checks the download progress.
+         *
+         * @param minimum progress
+         */
+        virtual TInt CheckDownloadProgressL( CStifItemParser& aItem );
+
+        /**
+         * Creates copy of a media from currently listed medias and stores it to
+         * a member variable. It is used by AddMediaL, SetMediaL and
+         * SetMediaDetailsL.
+         *
+         * This will fetch the full media from MPX.
+         *
+         * @param aDrive
+         * @param aIndex
+         * @param aFullCopy Optional, default is 1. If set to 0 then empty
+         *        MPX media item is created which only has the ID of original.
+         */
+        virtual TInt CreateCopyOfMediaL( CStifItemParser& aItem );
+
+        /**
+         * Creates empty media item to member variable.
+         */
+        virtual TInt CreateEmptyMediaL( CStifItemParser& aItem );
+
+        /**
+         * Adds media to the collection. Uses the media created with CreateCopyOfMediaL / CreateEmptyMediaL,
+         * if they are not called then empty item will be used instead.
+         *
+         * @param aSyncCall
+         */
+        virtual TInt AddMediaL( CStifItemParser& aItem );
+
+        /**
+         * Updates media to the collection. Uses the media created with CreateCopyOfMediaL / CreateEmptyMediaL
+         *
+         * @param aSyncCall
+         */
+        virtual TInt SetMediaL( CStifItemParser& aItem );
+
+        /**
+         * Makes a direct media update to MDS DB without using My Videos MPX plugin.
+         *
+         * Uses the media created with CreateCopyOfMediaL.
+         */
+        virtual TInt OutsideMediaUpdateL( CStifItemParser& aItem );
+
+        /**
+         * Media item will be removed with MPX MV plugin command KMPXCommandIdCollectionRemoveMedia.
+         * Asynchronous, test script will be signaled.
+         *
+         * @param aDrive
+         * @param aIndex
+         * @param aSyncCall
+         */
+        virtual TInt RemoveMediaL( CStifItemParser& aItem );
+
+        /**
+         * Removes all media items with MPX MV plugin command KMPXCommandIdCollectionRemoveMedia.
+         *
+         * @param aOneByOne, if true then each removal is waited to complete before next is done.
+         */
+        virtual TInt RemoveAllMediaL( CStifItemParser& aItem );
+
+        /**
+         * Moves a media.
+         *
+         * @param aSourceDriveLetter, where file will be selected from.
+         * @param aIndex, index of moved file on source disk.
+         * @param aDestDriveLetter, dest drive letter.
+         * @param aSyncCall
+         *
+         * See CVCXMyVideosCollectionPluginTester header for SelectMediasL for selection rules.
+         */
+        virtual TInt MoveMediaL( CStifItemParser& aItem );
+
+        /**
+         * Moves multiple medias.
+         *
+         * @param aSourceDriveLetter, where file will be selected from.
+         * @param aIndex, index of moved file on source disk.
+         * @param aStartIndex
+         * @param aEndIndex
+         * @param aDestDriveLetter
+         * @param aSyncCall
+         *
+         * See CVCXMyVideosCollectionPluginTester header for SelectMediasL for selection rules.
+         */
+        virtual TInt MoveMediasL( CStifItemParser& aItem );
+
+        /**
+         * Cancels move request.
+         *
+         * @param aSyncCall
+         */
+        virtual TInt CancelMoveL( CStifItemParser& aItem );
+
+        /**
+         * Copies a media.
+         *
+         * @param aSourceDriveLetter, where file will be selected from.
+         * @param aIndex, index of moved file on source disk.
+         * @param aDestDriveLetter, dest drive letter.
+         * @param aSyncCall
+         *
+         * See CVCXMyVideosCollectionPluginTester header for SelectMediasL for selection rules.
+         */
+        virtual TInt CopyMediaL( CStifItemParser& aItem );
+
+        /**
+         * Copies multiple medias.
+         *
+         * @param aSourceDriveLetter, where file will be selected from.
+         * @param aStartIndex
+         * @param aEndIndex
+         * @param aDestDriveLetter, dest drive letter.
+         * @param aSyncCall
+         *
+         * See CVCXMyVideosCollectionPluginTester header for SelectMediasL for selection rules.
+         */
+        virtual TInt CopyMediasL( CStifItemParser& aItem );
+
+        /**
+         * Cancels copy request.
+         *
+         * @param aSyncCall
+         */
+        virtual TInt CancelCopyL( CStifItemParser& aItem );
+
+        /**
+         * Deletes a media.
+         *
+         * @param aSourceDriveLetter, where file will be selected from.
+         * @param aIndex, index of moved file on source disk.
+         * @param aSyncCall
+         *
+         * See CVCXMyVideosCollectionPluginTester header for SelectMediasL for selection rules.
+         */
+        virtual TInt DeleteMediaL( CStifItemParser& aItem );
+
+        /**
+         * Delete multiple medias.
+         *
+         * @param aSourceDriveLetter, where file will be selected from.
+         * @param aIndex, index of moved file on source disk.
+         * @param aStartIndex
+         * @param aEndIndex
+         * @param aSyncCall
+         *
+         * See CVCXMyVideosCollectionPluginTester header for SelectMediasL for selection rules.
+         */
+        virtual TInt DeleteMediasL( CStifItemParser& aItem );
+
+        /**
+         * Cancels Delete request.
+         *
+         * @param aSyncCall
+         */
+        virtual TInt CancelDeleteL( CStifItemParser& aItem );
+
+        /**
+         * Cancels operation right after it starts. For Move/Copy/Delete.
+         */
+        virtual TInt CancelNextOperationL( CStifItemParser& aItem );
+
+        /**
+         * Deletes the file of selected media in current entries.
+         *
+         * @param aDrive
+         * @param aIndex
+         */
+        virtual TInt DeleteFileOfMediaL( CStifItemParser& aItem );
+
+        /**
+         * Delete files of all the current media entries.
+         */
+        virtual TInt DeleteFilesOfAllMediasL( CStifItemParser& aItem );
+
+        /**
+         * Creates a video file to the file system.
+         * Test module keeps track of these files with iSideloadedFiles array.
+         * If size is -1 video size will not be altered.
+         * If category is open then this will wait until collection is refreshed with new data.
+         */
+        virtual TInt CreateVideoFileL( CStifItemParser& aItem );
+
+        /**
+         * Creates a video file to the file system.
+         * Test module keeps track of these files with iSideloadedFiles array.
+         * If size is -1 video size will not be altered.
+         */
+        virtual TInt CreateVideoFileNoWaitL( CStifItemParser& aItem );
+
+        /**
+         * Creates video file(s).
+         */
+        void CreateVideoFileL( CIptvTestVideoCreator::TIptvTestVideoType aType, const TDesC& aDriveLetter, const TDesC& aFileName, TInt aSize, TInt aVideoCount, TBool aDoSync );
+
+        /**
+         * Ensures that drive has specified amount of videos, they are created and removed if needed.
+         * 
+         * @param drive
+         * @param amount of videos
+         * @param filename for new videos
+         */
+        virtual TInt EnsureDriveForVideosL( CStifItemParser& aItem );
+        
+        /**
+         * Deletes all videos created with CreateVideoFileL method.
+         */
+        virtual TInt EmptySideloadFoldersL( CStifItemParser& aItem );
+
+        /**
+         * Toggle deletion of created videos in the destructor.
+         */
+        virtual TInt SetDeleteSideloadedVideos( CStifItemParser& aItem );
+
+        /**
+         * Start a download using My Videos MPX plugin.
+         *
+         * @param iapName
+         * @param serviceName
+         * @param contentId
+         * @param syncCall
+         * @param userName (optional)
+         * @param password (optional)
+         */
+        virtual TInt DownloadL( CStifItemParser& aItem );
+        
+        /**
+         * Resume a download using My Videos MPX plugin.
+         *
+         * See DownloadL for parameters.
+         */
+        virtual TInt ResumeDownloadL( CStifItemParser& aItem );        
+
+        /**
+         * Resumes all paused downloads.
+         */
+        virtual TInt ResumeAllDownloadsL( CStifItemParser& aItem );        
+
+        /**
+         * Start a download using My Videos MPX plugin.
+         * The current media from CreateEmptyMediaL or CreateCopyOfMediaL is used to pass
+         * attributes to My Videos MPX plugin.
+         *
+         * See DownloadL for parameters.
+         */
+        virtual TInt DownloadUsingMediaL( CStifItemParser& aItem );
+        
+        /**
+         * Resume a download using My Videos MPX plugin.
+         * The current media from CreateEmptyMediaL or CreateCopyOfMediaL is used to pass
+         * attributes to My Videos MPX plugin.
+         *
+         * See DownloadL for parameters.
+         */
+        virtual TInt ResumeDownloadUsingMediaL( CStifItemParser& aItem );        
+
+        /**
+         * Starts download or resumes one. Cannot be called from STIF script.
+         * 
+         * @param aUseCurrentMedia, use the attributes of the current media.
+         * @param aResume, is this resume download.
+         */
+        void DownloadOrResumeL( CStifItemParser& aItem, TBool aUseCurrentMedia, TBool aResume );
+        
+        /**
+         * Start or resume a download using My Videos MPX plugin.
+         *
+         * Can be called with 'Download' and 'ResumeDownload' commands from STIF script.
+         *
+         * @param iapName
+         * @param URL
+         * @param syncCall
+         * @param userName (optional)
+         * @param password (optional)
+         */
+        virtual TInt DownloadUrlL( CStifItemParser& aItem );
+
+        /**
+         * Cancel a download using My Videos MPX plugin.
+         *
+         * @param serviceName
+         * @param contentId
+         * @param syncCall
+         */
+        virtual TInt CancelDownloadL( CStifItemParser& aItem );
+
+        /**
+         * Cancel a download using My Videos MPX plugin.
+         *
+         * @param mpxId, if -1 then first DL's mpxId is used.
+         * @param downloadId, if -1 then first DL's downloadId is used.
+         * @param syncCall
+         */
+        virtual TInt CancelDownloadByIdL( CStifItemParser& aItem );
+
+        /**
+         * Pause a download using My Videos MPX plugin.
+         * Also disables automatic resuming of paused downloads.
+         *
+         * @param serviceName
+         * @param contentId
+         * @param syncCall
+         */
+        virtual TInt PauseDownloadL( CStifItemParser& aItem );
+
+        /**
+         * Pause a download using My Videos MPX plugin.
+         * Also disables automatic resuming of paused downloads.
+         *
+         * @param url
+         */
+        TInt PauseDownloadByUrlL( CStifItemParser& aItem );
+
+        /**
+         * Wait all downloads to complete.
+         *
+         * @param timeout minutes (default 10)
+         */
+        virtual TInt WaitAllDownloadsL( CStifItemParser& aItem );
+
+        /**
+         * Starts a wait for message or messages of same type.
+         * STIF script is signaled when all of the messages have been
+         * received.
+         *
+         * @param message type
+         * @param timeout (optional. seconds, default is 5 seconds )
+         * @param message count (optional)
+         */
+        virtual TInt WaitForMessageL( CStifItemParser& aItem );
+
+        /**
+         * Starts a wait for messages
+         * STIF script is signaled when any of specified messages
+         * is received.
+         *
+         * @param timeout ( seconds )
+         * @param message type
+         * @param message type2
+         * @param message type3 etc...
+         */
+        virtual TInt WaitForAnyMessageL( CStifItemParser& aItem );
+
+        /**
+         * Starts a wait for messages.
+         * STIF script is signaled when all of specified messages
+         * have been received.
+         *
+         * @param timeout ( seconds )
+         * @param message type
+         * @param message type2
+         * @param message type3 etc...
+         */
+        virtual TInt WaitForMessagesL( CStifItemParser& aItem );
+
+        void WaitForMessagesL( TBool aBlock, RArray<TInt>& aMessages, TInt aTimeout, TBool aWaitAll );
+
+        /**
+         *  Other methods.
+         */
+
+        /**
+         * Delete directory if it's empty.
+         */
+        TInt DeleteDirectoryIfEmpty( RFs& aFs, CFileMan& aFileMan, const TDesC& aDirectory );
+
+        /**
+         *
+         */
+        TInt MapMpxMediaAttribute( TVcxTestMediaAttributeIdMapping aMapping, TMPXAttributeData& aAttribute,
+                TVcxTestMediaAttributeType& aType );
+
+        /**
+         *
+         */
+        void GetMessageDesc( TInt aMessage, TDes& aMsgBuff );
+
+        /**
+         * CheckMediasL
+         *
+         * aExpectedVideoCount
+         * aDrive
+         * aCheckType, 0 = exact, 1 no more than specified count, -1 no less than specified count.
+         */
+        void CheckMediasL( TInt aExpectedVideoCount, TInt aDrive, TInt aCheckType );
+
+        /**
+         * Gets drive parameter from aItem.
+         */
+        TInt GetDriveParam( CStifItemParser& aItem, TInt& aDrive );
+
+        /**
+         * MPX collection -> Close & Open( index ) & Open
+         */
+        void DoTotalRefreshL();
+        
+        /**
+         * Waits ongoing refresh to finish, can be forced to wait for next refresh.
+         */
+        void WaitForRefreshL( TBool aForcedWait );
+        
+        /**
+         * Gets medias for the specified level. 
+         */
+        CMPXMediaArray* GetMediasForLevelL( TInt aLevel, TUint aFlagsFilter );
+        
+    private:    // Data
+
+        // Instance of class holding the test logic to test MV MPX collection.
+        CVCXMyVideosCollectionPluginTester *iTester;
+
+        // CVCXTestCommon
+        CVCXTestCommon* iTestCommon;
+
+        // RFs
+        RFs iFs;
+        
+        // I'm a FileMan
+        CFileMan* iFileMan;
+
+        // Filenames created with CreateVideoFileL method are stored here.
+        RPointerArray<HBufC> iSideloadedFiles;
+
+        // Folders used for sideloading.
+        RPointerArray<HBufC> iSideloadFolders;
+
+        // CIptvTestActiveWait
+        CIptvTestActiveWait* iActiveWait;
+
+        // CIptvTestActiveWait
+        CIptvTestActiveWait* iActiveWaitBlocking;
+
+        TBool iDeleteSideloadedFilesAndFolders;
+
+        // List of messages which are in currently waited.
+        // Failed messages cause signal always.
+        RArray<TInt> iWaitedTestMessages;
+
+        TInt iLastReceivedMessage;
+
+        TBool iWaitingForAllMessages;
+
+        // Seconds to wait before message is got, default is 5
+        TInt iMessageWaitTimeout;
+
+        TBool iWaitingForAllDownloads;
+
+        // Wait is not called from script but from test module.
+        TBool iMessageWaitIsBlocking;
+
+//#ifdef __WINSCW__
+        RHarvesterClient iClient;
+//#endif // __WINSCW__
+
+        // Timeout timer
+        CIptvTestTimer* iTimeoutTimer;
+
+        TBuf<256> iCaseId;
+
+        TBool iLoggingEnabled;
+
+        CIptvTestTimer* iCoolDownTimer;
+
+        TBool iCoolDownWait;
+
+        TInt iEventError;
+
+        // Autoresume downloads
+        TBool iAutoResume;
+
+        CMPXMedia* iMpxMedia;
+
+        TBool iFileCheckDisabled;
+
+        TInt iLastDownloadError;
+
+        CVCXMyVideosTestServiceEmu* iServiceEmu;
+
+        CVCXTestMdsDbModifier* iMdsDbModifier;
+
+        TInt iCurrentSortOrder;
+
+        // To cancel move/copy/delete operations right after they start.
+        TBool iCancelNextOperation;
+        
+        // This is for passing media count check when mpx plugin build is urel, 
+        // which causes add media cmd to fail. 
+        TInt iAddMediaCmdCount;
+        
+        // Class to hold robustness and performance data.
+        CVCXTestStatsKeeper* iStats;
+
+        TBool iStatsEnabled;        
+    };
+
+#endif      // VCXMYVIDEOSCOLLECTIONPLUGINTEST_H
+
+// End of File