diff -r 000000000000 -r 96612d01cf9f videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTestBlocks.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/VCXMyVideosCollectionPluginTestBlocks.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,4913 @@ +/* +* 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* +*/ + + +// INCLUDE FILES +#include // CleanupResetAndDestroyPushL +#include +#include +#include +#include +#include + +#include "VCXTestLog.h" +#include "VCXTestCommon.h" +#include "CIptvTestActiveWait.h" +#include "CIptvTestTimer.h" +#include "VCXTestStatsKeeper.h" + +#include "VCXMyVideosCollectionPluginTest.h" +#include "VCXMyVideosCollectionPluginTester.h" +#include "VCXMyVideosTestCommon.h" +#include "VCXMyVideosTestDlWatcher.h" +#include "VCXMyVideosTestServiceEmu.h" +#include "VCXTestMdsDbModifier.h" + +#include +#include +#include + +#include "vcxmyvideosuids.h" + +// CONSTANTS + +const TInt KVcxTestFileSize3GB = -999; + +// MACROS +#define VCXMVTEST_ERR(err) ( iStatsEnabled ) ? KErrNone : err + +// MODULE DATA STRUCTURES + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CVCXMyVideosCollectionPluginTest::Delete +// Delete here all resources allocated and opened from test methods. +// Called from destructor. +// ----------------------------------------------------------------------------- +// +void CVCXMyVideosCollectionPluginTest::Delete() + { + VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTest::Delete ---------->"); + + delete iTester; + iTester = NULL; + + if( iDeleteSideloadedFilesAndFolders ) + { + iDeleteSideloadedFilesAndFolders = EFalse; + CStifItemParser* parser = NULL; + TRAP_IGNORE( EmptySideloadFoldersL( *parser ) ); // oeh noes + } + + iSideloadedFiles.ResetAndDestroy(); + + // Remove folders used in sideloading, if they'r empty + for( TInt i=0; i < iSideloadFolders.Count(); i++ ) + { + HBufC* path = iSideloadFolders[i]; + TInt pos = 0; + TInt firstPos = 0; + while( ETrue ) + { + pos = path->Des().LocateReverse('\\'); + firstPos = path->Des().Locate('\\'); + // Check that it's not the root folder. + if( pos != KErrNotFound && pos != firstPos ) + { + // Remove last folder from the path string, or the filename. + path->Des().SetLength( pos+1 ); + if( DeleteDirectoryIfEmpty( iFs, *iFileMan, *path ) != KErrNone) + { + break; + } + // Remove trailing backslash. + path->Des().SetLength( pos ); + } + else + { + break; + } + } + } + + iSideloadFolders.ResetAndDestroy(); + + delete iTestCommon; + iTestCommon = NULL; + +#ifdef __WINSCW__ + iClient.Close(); +#endif // __WINSCW__ + + if( iActiveWait ) + { + iActiveWait->Stop(); + delete iActiveWait; + iActiveWait = NULL; + } + + if( iActiveWaitBlocking ) + { + iActiveWaitBlocking->Stop(); + delete iActiveWaitBlocking; + iActiveWaitBlocking = NULL; + } + + if( iTimeoutTimer ) + { + iTimeoutTimer->CancelTimer(); + delete iTimeoutTimer; + iTimeoutTimer = NULL; + } + + if( iCoolDownTimer ) + { + iCoolDownTimer->CancelTimer(); + delete iCoolDownTimer; + iCoolDownTimer = NULL; + } + + delete iMpxMedia; + iMpxMedia = NULL; + + delete iServiceEmu; + iServiceEmu = NULL; + + delete iMdsDbModifier; + iMdsDbModifier = NULL; + + delete iFileMan; + iFileMan = NULL; + + iFs.Close(); + + delete iStats; + iStats = NULL; + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::EnableStatsL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In EnableStatsL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TPtrC statsName; + TPtrC fileName; + User::LeaveIfError( aItem.GetNextString( statsName) ); + User::LeaveIfError( aItem.GetNextString( fileName) ); + + TRAP_IGNORE( iStats->StartStatsKeepingL( statsName, fileName ) ); + iStatsEnabled = ETrue; + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CreateL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CreateL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + User::LeaveIfError( iFs.Connect() ); + iFileMan = CFileMan::NewL( iFs ); + + aItem.SetParsingType(CStifItemParser::EQuoteStyleParsing); + + iTestCommon = CVCXTestCommon::NewL(); + iStats = CVCXTestStatsKeeper::NewL(); + iTester = CVCXMyVideosCollectionPluginTester::NewL( this, iTestCommon, iStats ); + iActiveWait = CIptvTestActiveWait::NewL(); + iActiveWaitBlocking = CIptvTestActiveWait::NewL(); + iTimeoutTimer = CIptvTestTimer::NewL(*this, 0); + iCoolDownTimer = CIptvTestTimer::NewL(*this, 1); + +#ifdef __WINSCW__ + TInt err = iClient.Connect(); + if( KErrNone != err ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Could not start MDS server session! Err: %d", err); + } +#endif // __WINSCW__ + + iAutoResume = ETrue; + + iTester->SetAutoResume( iAutoResume ); + + iServiceEmu = CVCXMyVideosTestServiceEmu::NewL(); + + iMdsDbModifier = CVCXTestMdsDbModifier::NewL(); + + iCurrentSortOrder = EVcxMyVideosSortingNone; + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::SetPreferredMemoryL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In SetPreferredMemoryL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt drive(0); + User::LeaveIfError( GetDriveParam( aItem, drive ) ); + + // These were defined in CVcxMyVideosDownloadUtil::PreferredMemoryDesL() + const TInt KVcxCenRepUid = 0x102750E2; // same as KIptvCenRepUid in CIptvUtil.h + const TInt KVcxCenRepPreferredMemoryKey = 0x01; // same as KIptvCenRepPreferredMemoryKey in CIptvUtil.h + + TUid uid; + uid.iUid = KVcxCenRepUid; + + CRepository* cenRep = CRepository::NewLC( uid ); + User::LeaveIfError( cenRep->Set( KVcxCenRepPreferredMemoryKey, drive ) ); + CleanupStack::PopAndDestroy( cenRep ); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::SetSortingOrderL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In SetSortingOrderL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + TInt value(0); + TInt err = aItem.GetNextInt( value ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: New sorting order: %d", value); + + TUid uid; + uid.iUid = KVcxMyVideosCollectionCenrepUid; + + CRepository* cenRep = CRepository::NewLC( uid ); + User::LeaveIfError( cenRep->Set( KVcxMyVideosCollectionCenrepKeySortingOrder, value ) ); + CleanupStack::PopAndDestroy( cenRep ); + + TRAP( err, DoTotalRefreshL() ); + + iCurrentSortOrder = value; + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::SetAutomaticRefresh ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In SetAutomaticRefresh" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + TInt value(0); + TInt err = aItem.GetNextInt( value ); + + if( iTester ) + { + iTester->SetAutomaticRefresh( static_cast(value) ); + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::SetQuietMode ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In SetQuietMode" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + TInt value(0); + TInt err = aItem.GetNextInt( value ); + + if( iTester ) + { + iTester->SetQuietMode( static_cast(value) ); + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CoolDownL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CoolDownL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iCoolDownWait = ETrue; + iCoolDownTimer->After( KTimeoutSecond * 5 ); + iActiveWait->Start(); + + if( iEventError == KErrAbort ) + { + iEventError = KErrNone; + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Error, ABORTING!"); + User::Leave( KErrAbort ); + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::DisableDownloadCheckL"); + if( iTester ) + { + iTester->GetDownloadWatcher()->DisableDownloadCheck(); + } + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::SetFileCheckL"); + + TInt value(0); + User::LeaveIfError( aItem.GetNextInt( value ) ); + iFileCheckDisabled = !(static_cast(value)); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::SetAutoResumeL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In SetAutoResumeL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + TInt autoResume(0); + User::LeaveIfError( aItem.GetNextInt( autoResume ) ); + iAutoResume = autoResume; + if( iTester ) + { + iTester->SetAutoResume( iAutoResume ); + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::OpenCollectionL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In OpenCollectionL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + TUint32 collectionId( 0 ); + TPtrC collectionIdStr; + if( aItem.GetNextString( collectionIdStr ) == KErrNone ) + { + TLex lex( collectionIdStr ); + User::LeaveIfError( lex.Val( collectionId, EHex ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: collectionId: 0x%x", collectionId); + } + + if( collectionId == 0 ) + { + collectionId = KVcxUidMyVideosMpxCollection; + } + + iLastReceivedMessage = -1; + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->OpenCollectionL( collectionId ) ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::OpenLevelL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In OpenLevelL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + TInt index; + User::LeaveIfError( aItem.GetNextInt( index ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: index: %d", index); + + iLastReceivedMessage = -1; + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->OpenLevelL( index ) ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CloseLevelL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CloseLevelL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iLastReceivedMessage = -1; + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->CloseLevelL() ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::RefreshContentsL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In RefreshContentsL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->RefreshContentsL() ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::GetMediasByMpxIdL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In GetMediasByMpxIdL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt startIndex; + User::LeaveIfError( aItem.GetNextInt( startIndex ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: startIndex: %d", startIndex); + + TInt endIndex; + User::LeaveIfError( aItem.GetNextInt( endIndex ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: endIndex: %d", endIndex); + + TBool syncCall( EFalse ); + TInt syncCallInt(0); + if( aItem.GetNextInt( syncCallInt ) == KErrNone ) + { + syncCall = static_cast(syncCallInt); + } + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCall ); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->GetMediasByMpxIdL( startIndex, endIndex, syncCall ) ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::GetMediaFullDetailsL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In GetMediaFullDetailsL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt drive(0); + User::LeaveIfError( GetDriveParam( aItem, drive ) ); + + TInt index; + User::LeaveIfError( aItem.GetNextInt( index ) ); + + RArray messages; + messages.Append( KVCXMYVideosTestMessageCollectionMedia ); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->GetMediaFullDetailsL( drive, index ) ); + } + + if( err == KErrNone ) + { + TRAPD( err, WaitForMessagesL( ETrue, messages, 1, ETrue ) ); + messages.Reset(); + + if( err == KErrNone ) + { + CMPXMedia* media = iTester->GetLastFullMedia(); + TRAP_IGNORE( iTester->PrintMPXMediaL( *media, ETrue ) ); + } + } + + if( err != KErrNone ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest::GetMediaFullDetailsL err: %d", err); + } + + messages.Reset(); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::GetMediaFullDetailsByMpxIdL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In GetMediaFullDetailsByMpxIdL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt drive(0); + User::LeaveIfError( GetDriveParam( aItem, drive ) ); + + TInt index; + User::LeaveIfError( aItem.GetNextInt( index ) ); + + TBool sync; + TInt syncInt; + if( aItem.GetNextInt( syncInt ) != KErrNone ) + { + sync = EFalse; + } + else + { + sync = static_cast( syncInt ); + } + + RArray messages; + messages.Append( KVCXMYVideosTestMessageCollectionMedia ); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->GetMediaFullDetailsByMpxIdL( drive, index, sync ) ); + } + + if( err == KErrNone ) + { + TRAPD( err, WaitForMessagesL( ETrue, messages, 1, ETrue ) ); + messages.Reset(); + + if( err == KErrNone ) + { + CMPXMedia* media = iTester->GetLastFullMedia(); + TRAP_IGNORE( iTester->PrintMPXMediaL( *media, ETrue ) ); + } + } + + if( err != KErrNone ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest::GetMediaFullDetailsByMpxIdL err: %d", err); + } + + messages.Reset(); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::GetAllMediaFullDetailsL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In GetAllMediaFullDetailsL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->GetAllMediaFullDetailsL( ) ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + iLastReceivedMessage = -1; + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CheckMediaDetailL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CheckMediaDetailL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + TInt err( KErrNone ); + + TRAP_IGNORE( WaitForRefreshL( EFalse ) ); // Wait for possible refresh to finish. + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt drive(0); + User::LeaveIfError( GetDriveParam( aItem, drive ) ); + + TInt itemIndex(0); + User::LeaveIfError( aItem.GetNextInt( itemIndex ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: item index: %d", itemIndex); + + if( itemIndex < 0 || itemIndex >= iTester->GetMediaCount() ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Error. Index (%d) out of bounds.", itemIndex); + User::Leave( KErrArgument ); + } + + TInt mpxAttributeMappingId(0); + User::LeaveIfError( aItem.GetNextInt( mpxAttributeMappingId ) ); + + TVcxTestMediaAttributeType type; + TMPXAttributeData mpxMediaAttribute; + User::LeaveIfError( MapMpxMediaAttribute( + static_cast(mpxAttributeMappingId), + mpxMediaAttribute, type ) ); + + + CMPXMedia* media( NULL ); + TRAP( err, media = iTester->GetMediaL( drive, itemIndex ) ); + + // If attribute is not supported, fetch full media details. + if( media && !media->IsSupported( mpxMediaAttribute ) ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Requesting full media details."); + RArray messages; + messages.Append( KVCXMYVideosTestMessageCollectionMedia ); + TRAP( err, iTester->GetMediaFullDetailsL( drive, itemIndex ) ); + if( err == KErrNone ) + { + TRAP( err, WaitForMessagesL( ETrue, messages, 5, ETrue ) ); + media = iTester->GetLastFullMedia(); + } + messages.Reset(); + } + + if( err != KErrNone ) + { + VCXLOGLO1("<<IsSupported( mpxMediaAttribute ) ) + { + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: error: iAttributeId: %d, iContentId: %d is not supported.", + mpxMediaAttribute.iAttributeId == 0, mpxMediaAttribute.iContentId); + + iTester->PrintMPXMediaL( *media, ETrue ); + + VCXLOGLO1("<<ValueText( mpxMediaAttribute ); + + if( expectedValue != value ) + { + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: error, values do not match: %S and expected: %S", &value, &expectedValue); + err = KErrCorrupt; + } + } + + if( type == EVcxTestMediaAttributeTypeTTime ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Getting attribute of type TInt64(date)"); + + User::Leave( KErrNotSupported ); +#if 0 + //TPtrC expectedValue; + //User::LeaveIfError( aItem.GetNextString( expectedValue ) ); + + TInt64 value = *(*media).Value( mpxMediaAttribute ); + + TTime time ( value ); + TBuf<60> timeStr; + _LIT(KDateTimeString, "%D%M%Y%/0%1%/1%2%/2%3%/3 %-B%:0%H%:1%T%:2%S%.%*C2%:3%-B"); + time.FormatL(timeStr, KDateTimeString); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: date value: %S", &timeStr); +#endif + } + + if( type == EVcxTestMediaAttributeTypeTDateTime ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Getting attribute of type TDateTime"); + + User::Leave( KErrNotSupported ); +#if 0 + TInt expectedValue; + User::LeaveIfError( aItem.GetNextInt( expectedValue ) ); + + TTime time ( *(*media).Value( mpxMediaAttribute ) ); + + TBuf<60> timeStr; + _LIT(KDateTimeString, "%D%M%Y%/0%1%/1%2%/2%3%/3 %-B%:0%H%:1%T%:2%S%.%*C2%:3%-B"); + time.FormatL(timeStr, KDateTimeString); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: date value: %S", &timeStr); +#endif + } + + if( type == EVcxTestMediaAttributeTypeTInt ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Getting attribute of type TInt"); + TInt expectedValue; + User::LeaveIfError( aItem.GetNextInt( expectedValue ) ); + + TInt value = *(*media).Value( mpxMediaAttribute ); + + if( expectedValue != value ) + { + err = KErrCorrupt; + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: error, values do not match: %d and expected: %d", value, expectedValue); + } + } + + if( type == EVcxTestMediaAttributeTypeTUint ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Getting attribute of type TUint"); + + TInt expectedValue; + User::LeaveIfError( aItem.GetNextInt( expectedValue ) ); + + TUint value = *(*media).Value( mpxMediaAttribute ); + + if( expectedValue != value ) + { + err = KErrCorrupt; + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: error, values do not match: %d and expected: %d", value, expectedValue); + } + } + + if( type == EVcxTestMediaAttributeTypeTUint8 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Getting attribute of type TUint8"); + + TInt expectedValue; + User::LeaveIfError( aItem.GetNextInt( expectedValue ) ); + + TUint8 value = *(*media).Value( mpxMediaAttribute ); + + if( expectedValue != value ) + { + err = KErrCorrupt; + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: error, values do not match: %d and expected: %d", value, expectedValue); + } + } + + TBool isCategoryNewItemCount = + mpxMediaAttribute.iAttributeId == KVcxMediaMyVideosCategoryNewItemCount.iAttributeId && + mpxMediaAttribute.iContentId == KVcxMediaMyVideosCategoryNewItemCount.iContentId; + TInt isCategoryItemCount = + mpxMediaAttribute.iAttributeId == KVcxMediaMyVideosCategoryItemCount.iAttributeId && + mpxMediaAttribute.iContentId == KVcxMediaMyVideosCategoryItemCount.iContentId; + + // Category item counts. + if( isCategoryNewItemCount || isCategoryItemCount ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Getting item counts for category."); + + TInt expectedValue; + User::LeaveIfError( aItem.GetNextInt( expectedValue ) ); + + // Get actual count from item. + TUint32 count = *(*media).Value( mpxMediaAttribute ); + + // Get count of ROM medias for this category. + + TUint flags = ( isCategoryNewItemCount ? EVcxMyVideosVideoNew : 0 ); + + CMPXMediaArray* medias = GetMediasForLevelL( itemIndex, flags ); + + TInt romCount = 0; + for( TInt i = 0; i < medias->Count(); i++ ) + { + CMPXMedia* collectionMedia = (*medias)[i]; + if( collectionMedia->IsSupported( KMPXMediaGeneralUri ) ) + { + const TDesC& url = collectionMedia->ValueText( KMPXMediaGeneralUri ); + if( url.FindC( _L("z:" ) ) != KErrNotFound ) + { + romCount++; + } + } + } + + delete medias; + + if( expectedValue != count ) + { + // Check ROM videos are not interfering. + if( romCount != count - expectedValue ) + { + err = KErrCorrupt; + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: error, values do not match: %d and expected: %d", count, expectedValue); + } + } + } + else + // Other TUInt32 values. + if( type == EVcxTestMediaAttributeTypeTUint32 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Getting attribute of type TUint32"); + + TInt expectedValue; + User::LeaveIfError( aItem.GetNextInt( expectedValue ) ); + + TUint32 value = *(*media).Value( mpxMediaAttribute ); + + if( expectedValue != value ) + { + err = KErrCorrupt; + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: error, values do not match: %d and expected: %d", value, expectedValue); + } + } + + if( type == EVcxTestMediaAttributeTypeTReal32 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Getting attribute of type TReal32"); + + TInt num; + User::LeaveIfError( aItem.GetNextInt( num ) ); + TReal32 expectedValue( num ); + + TInt digits; + if( aItem.GetNextInt( digits ) == KErrNone ) + { + expectedValue += static_cast(digits)/10000; + } + + TReal32 value = *(*media).Value( mpxMediaAttribute ); + + if( expectedValue != value ) + { + err = KErrCorrupt; + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: error, values do not match: %f and expected: %f", value, expectedValue); + } + } + + if( type == EVcxTestMediaAttributeTypeTInt32 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Getting attribute of type TInt32"); + + TInt expectedValue; + User::LeaveIfError( aItem.GetNextInt( expectedValue ) ); + + TInt32 value = *(*media).Value( mpxMediaAttribute ); + + if( expectedValue != value ) + { + err = KErrCorrupt; + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: error, values do not match: %d and expected: %d", value, expectedValue); + } + } + + if( type == EVcxTestMediaAttributeTypeTInt8 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Getting attribute of type TInt8"); + + TInt expectedValue; + User::LeaveIfError( aItem.GetNextInt( expectedValue ) ); + + TInt8 value = *(*media).Value( mpxMediaAttribute ); + + if( expectedValue != value ) + { + err = KErrCorrupt; + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: error, values do not match: %d and expected: %d", value, expectedValue); + } + } + + if( type == EVcxTestMediaAttributeTypeTMPXItemId ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Getting attribute of type TMPXItemId"); + + TInt expectedValue; + User::LeaveIfError( aItem.GetNextInt( expectedValue ) ); + + TInt expectedValue2; + User::LeaveIfError( aItem.GetNextInt( expectedValue2 ) ); + + TMPXItemId itemId; + itemId.iId1 = expectedValue; + itemId.iId2 = expectedValue2; + + TMPXItemId value = *(*media).Value( mpxMediaAttribute ); + + if( itemId != value ) + { + err = KErrCorrupt; + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: expected Id1: %d, Id2: %d", itemId.iId1, itemId.iId2); + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: actual Id1: %d, Id2: %d", value.iId1, value.iId2); + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: ERROR no match!"); + } + } + + if( type == EVcxTestMediaAttributeTypeTInt64 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Getting attribute of type TInt64"); + + TInt expectedValue; + User::LeaveIfError( aItem.GetNextInt( expectedValue ) ); + + TInt64 value = *(*media).Value( mpxMediaAttribute ); + + if( expectedValue != value ) + { + err = KErrCorrupt; + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: error, values do not match: %d and expected: %d", value, expectedValue); + } + } + + if ( type == EVcxTestMediaAttributeTypeMvFlags ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Getting attribute of type MV flags ( TUint32 )"); + + TUint32 value = *(*media).Value( mpxMediaAttribute ); + + TInt expectedValue(0); + while( aItem.GetNextInt( expectedValue ) == KErrNone ) + { + if( ! (value & expectedValue) ) + { + err = KErrCorrupt; + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: error, flag is: %d, flag %d is not set!", value, expectedValue); + } + } + } + + if( err != KErrNone ) + { + TRAP_IGNORE( iTester->PrintMediasL( NULL, EFalse, _L("Videos") ) ); + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::SetMediaDetailL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In SetMediaDetailL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + if( !iMpxMedia ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Error. iMpxMedia not set!"); + User::Leave( KErrArgument ); + } + + TInt mpxAttributeMappingId(0); + User::LeaveIfError( aItem.GetNextInt( mpxAttributeMappingId ) ); + + TVcxTestMediaAttributeType type; + TMPXAttributeData mpxMediaAttribute; + User::LeaveIfError( MapMpxMediaAttribute( + static_cast(mpxAttributeMappingId), + mpxMediaAttribute, type ) ); + + TInt err( KErrNone ); + + if( type == EVcxTestMediaAttributeTypeString ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Setting attribute of type text"); + + TPtrC value; + User::LeaveIfError( aItem.GetNextString( value ) ); + + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Set to %S", &value); + iMpxMedia->SetTextValueL( mpxMediaAttribute, value ); + } + + if( type == EVcxTestMediaAttributeTypeTTime ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Setting attribute of type TInt64(date)"); + + TTime time; + time.UniversalTime(); + TTimeIntervalSeconds timeOffset = User::UTCOffset(); + TTime localTime = time + timeOffset; + + TInt64 value = localTime.Int64(); + iMpxMedia->SetTObjectValueL( mpxMediaAttribute, value ); + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Set to current time."); + } + + if( type == EVcxTestMediaAttributeTypeTDateTime ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Setting attribute of type TDateTime"); + + User::Leave( KErrNotSupported ); +#if 0 + TDateTime time; + iMpxMedia->SetTObjectValueL( mpxMediaAttribute, time ); + //VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Set to %d", value); +#endif + } + + if( type == EVcxTestMediaAttributeTypeTInt ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Setting attribute of type TInt"); + TInt value; + User::LeaveIfError( aItem.GetNextInt( value ) ); + iMpxMedia->SetTObjectValueL( mpxMediaAttribute, value ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Set to %d", value); + } + + if( type == EVcxTestMediaAttributeTypeTUint ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Setting attribute of type TUint"); + + TInt value; + User::LeaveIfError( aItem.GetNextInt( value ) ); + iMpxMedia->SetTObjectValueL( mpxMediaAttribute, value ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Set to %d", value); + } + + if( type == EVcxTestMediaAttributeTypeTUint8 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Setting attribute of type TUint8"); + + TInt value; + User::LeaveIfError( aItem.GetNextInt( value ) ); + iMpxMedia->SetTObjectValueL( mpxMediaAttribute, value ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Set to %d", value); + } + + if( type == EVcxTestMediaAttributeTypeTUint32 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Setting attribute of type TUint32"); + + TInt value; + User::LeaveIfError( aItem.GetNextInt( value ) ); + iMpxMedia->SetTObjectValueL( mpxMediaAttribute, value ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Set to %d", value); + } + + if( type == EVcxTestMediaAttributeTypeTReal32 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Setting attribute of type TReal32"); + + TInt num; + User::LeaveIfError( aItem.GetNextInt( num ) ); + TReal32 value( num ); + + TInt digits; + if( aItem.GetNextInt( digits ) == KErrNone ) + { + value += static_cast(digits)/10000; + } + + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Set to %f", value); + + iMpxMedia->SetTObjectValueL( mpxMediaAttribute, value ); + } + + if( type == EVcxTestMediaAttributeTypeTInt32 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Setting attribute of type TInt32"); + + TInt value; + User::LeaveIfError( aItem.GetNextInt( value ) ); + iMpxMedia->SetTObjectValueL( mpxMediaAttribute, value ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Set to %d", value); + } + + if( type == EVcxTestMediaAttributeTypeTMPXItemId ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Setting attribute of type EVcxTestMediaAttributeTypeTMPXItemId"); + + TInt value; + User::LeaveIfError( aItem.GetNextInt( value ) ); + + TInt value2; + User::LeaveIfError( aItem.GetNextInt( value2 ) ); + + TMPXItemId itemId; + itemId.iId1 = value; + itemId.iId2 = value2; + + iMpxMedia->SetTObjectValueL( mpxMediaAttribute, itemId ); + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: Set to Id1: %d, Id2: %d", value, value2); + } + + if( type == EVcxTestMediaAttributeTypeTInt8 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Setting attribute of type TInt8"); + + TInt value; + User::LeaveIfError( aItem.GetNextInt( value ) ); + iMpxMedia->SetTObjectValueL( mpxMediaAttribute, value ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Set to %d", value); + } + + if( type == EVcxTestMediaAttributeTypeTInt64 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Setting attribute of type TInt64"); + + TInt value; + User::LeaveIfError( aItem.GetNextInt( value ) ); + if( value == KVcxTestFileSize3GB ) + { + iMpxMedia->SetTObjectValueL( mpxMediaAttribute, 3000000000 ); + } + else + { + iMpxMedia->SetTObjectValueL( mpxMediaAttribute, value ); + } + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Set to %d", value); + } + + if ( type == EVcxTestMediaAttributeTypeMvFlags ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Setting attribute of type MV flags ( TUint32 )"); + + TInt value(0); + while( aItem.GetNextInt( value ) == KErrNone ) + { + value |= value; + } + iMpxMedia->SetTObjectValueL( mpxMediaAttribute, value ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Set to %d", value); + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CheckMediaCountL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CheckMediaCountL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + WaitForRefreshL( EFalse ); // Wait for possible refresh to finish. + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt drive(0); + User::LeaveIfError( GetDriveParam( aItem, drive ) ); + + TInt expectedCount(0); + User::LeaveIfError(aItem.GetNextInt(expectedCount)); + + TRAPD( err, CheckMediasL( expectedCount, drive, 0 ) ); + + if( err != KErrNone ) + { + iTester->PrintMediasL( NULL, EFalse, _L("Videos") ); + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CheckMinimumMediaCountL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CheckMinimumMediaCountL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + WaitForRefreshL( EFalse ); // Wait for possible refresh to finish. + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt drive(0); + User::LeaveIfError( GetDriveParam( aItem, drive ) ); + + TInt expectedCount(0); + User::LeaveIfError(aItem.GetNextInt(expectedCount)); + + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: drive: %d", drive); + + TRAPD( err, CheckMediasL( expectedCount, drive, -1 ) ); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CheckMaximumMediaCountL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CheckMaximumMediaCountL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + WaitForRefreshL( EFalse ); // Wait for possible refresh to finish. + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt drive(0); + User::LeaveIfError( GetDriveParam( aItem, drive ) ); + + TInt expectedCount(0); + User::LeaveIfError( aItem.GetNextInt(expectedCount) ); + + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: drive: %d", drive); + + TRAPD( err, CheckMediasL( expectedCount, drive, 1 ) ); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CheckDownloadCountL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CheckMediaCountL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + WaitForRefreshL( EFalse ); // Wait for possible refresh to finish. + + TInt expectedCount(0); + User::LeaveIfError(aItem.GetNextInt(expectedCount)); + + TInt err( KErrNotReady ); + if( iTester ) + { + err = KErrNone; + if( iTester->GetDownloadWatcher()->GetDownloadCount() != expectedCount ) + { + err = KErrCorrupt; + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: ERROR: Not expected count of downloads!"); + } + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CreateCopyOfMediaL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CreateCopyOfMediaL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt drive(0); + User::LeaveIfError( GetDriveParam( aItem, drive ) ); + + TInt index(0); + User::LeaveIfError( aItem.GetNextInt( index ) ); + + if( index < 0 || index >= iTester->GetMediaCount() ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Error. Index (%d) out of bounds.", index); + User::Leave( KErrArgument ); + } + + TInt fullCopy(1); + if( aItem.GetNextInt( fullCopy ) != KErrNone ) + { + fullCopy = 1; + } + + if( iTester->GetMediaCount() <= 0 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: ERROR: There's zero medias!"); + VCXLOGLO1("<< messages; + messages.Append( KVCXMYVideosTestMessageCollectionMedia ); + TRAP( err, iTester->GetMediaFullDetailsL( drive, index ) ); + if( err == KErrNone ) + { + TRAP( err, WaitForMessagesL( ETrue, messages, 5, ETrue ) ); + + if( err == KErrNone ) + { + CMPXMedia* copiedMedia = iTester->GetLastFullMedia(); + + const TDesC& title = copiedMedia->ValueText( KMPXMediaGeneralTitle ); + TMPXItemId itemId = *(copiedMedia->Value( KMPXMediaGeneralId )); + + VCXLOGLO4("CVCXMyVideosCollectionPluginTest:: Creating copy of MPX media: %S, id1: %d, id2: %d.", &title, itemId.iId1, itemId.iId2); + TRAP( err, iMpxMedia = copiedMedia->CopyL( *copiedMedia ) ); + } + } + messages.Reset(); + } + else + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Creating empty MPX media."); + iMpxMedia = CMPXMedia::NewL(); + + CMPXMedia* copiedMedia( NULL ); + + TRAP( err, copiedMedia = iTester->GetMediaL( drive, index ) ); + + if( copiedMedia ) + { + TMPXItemId mpxId = *(copiedMedia->Value( KMPXMediaGeneralId )); + iMpxMedia->SetTObjectValueL( KMPXMediaGeneralId, mpxId ); + } + } + + if( err != KErrNone ) + { + VCXLOGLO2("<<>>CVCXMyVideosCollectionPluginTest::CreateEmptyMediaL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CreateEmptyMediaL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + if( iMpxMedia ) + { + delete iMpxMedia; + iMpxMedia = NULL; + } + + iMpxMedia = CMPXMedia::NewL(); + + TMPXItemId mpxId; + mpxId.iId1 = 0; + mpxId.iId2 = 0; + iMpxMedia->SetTObjectValueL( KMPXMediaGeneralId, mpxId ); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::AddMediaL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In AddMediaL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt syncCallInt(0); + User::LeaveIfError( aItem.GetNextInt( syncCallInt ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCallInt); + TBool syncCall = static_cast(syncCallInt); + + TRAPD( err, iTester->AddMediaL( iMpxMedia, syncCall ) ); + +#ifndef __WINSCW__ + // In urel builds add media is not supported, check mpx plugin file size if this is urel or udeb build. + if( err == KErrNotSupported ) + { + RFile rf; + _LIT( KVCXTestSystemDriveMpxPluginPath, "z:\\sys\\bin\\vcxmyvideoscollectionplugin.dll" ); + _LIT( KVCXTestUserDriveMpxPluginPath, "c:\\sys\\bin\\vcxmyvideoscollectionplugin.dll" ); + + TInt err2( KErrNone ); + if( BaflUtils::FileExists( iFs, KVCXTestUserDriveMpxPluginPath ) ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Open C drive bin."); + err2 = rf.Open( iFs, KVCXTestUserDriveMpxPluginPath, EFileRead|EFileShareAny ); + } + else + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Open Z drive bin."); + err2 = rf.Open( iFs, KVCXTestSystemDriveMpxPluginPath, EFileRead|EFileShareAny ); + } + + if( err2 == KErrNone ) + { + TInt size(0); + if( rf.Size( size ) == KErrNone ) + { + if( size < 1024*40 ) + { + err = KErrNone; + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: !OBS! Looks like UREL build, Add media failed as expected."); + iAddMediaCmdCount++; // Increase 'fake' video count for media count check. + } + else + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: !OBS! ERROR: UDEB build I guess, add media failed, check this."); + } + } + rf.Close(); + } + else + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Open plugin binary failed: %d", err2); + } + } +#endif // __WINSCW__ + + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::SetMediaL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In SetMediaL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + if( !iMpxMedia ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Error. iMpxMedia not set!"); + User::Leave( KErrArgument ); + } + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt syncCallInt(0); + User::LeaveIfError( aItem.GetNextInt( syncCallInt ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCallInt); + TBool syncCall = static_cast(syncCallInt); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->SetMediaL( iMpxMedia, syncCall ) ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::OutsideMediaUpdateL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In OutsideMediaUpdateL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + if( !iMpxMedia ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Error. iMpxMedia not set!"); + User::Leave( KErrArgument ); + } + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TRAPD( err, iMdsDbModifier->UpdateVideoL( *iMpxMedia ) ); + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::RemoveMediaL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In RemoveMediaL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt drive(0); + User::LeaveIfError( GetDriveParam( aItem, drive ) ); + + TInt index(0); + User::LeaveIfError( aItem.GetNextInt( index ) ); + + TBool syncCall( EFalse ); + TInt syncCallInt(0); + if( aItem.GetNextInt( syncCallInt ) == KErrNone ) + { + syncCall = static_cast(syncCallInt); + } + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCall ); + + iLastReceivedMessage = -1; + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->RemoveMediaL( drive, index, syncCall ) ); + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::RemoveAllMediaL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In RemoveAllMediaL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + iLastReceivedMessage = -1; + + TRAP_IGNORE( iTester->EnsureMediaFilesAreNotInUseL() ); + + TInt error( KErrNone ); + + TInt mediaCount = iTester->GetMediaCount(); + + // Store info about the mpx items. + RArray mpxIds; + CleanupClosePushL( mpxIds ); + + RArray downloadIds; + CleanupClosePushL( downloadIds ); + + RArray downloadStates; + CleanupClosePushL( downloadStates ); + + RPointerArray filePaths; + CleanupResetAndDestroyPushL( filePaths ); + + // Get ids and other needed details. + + for( TInt i=0; iGetMediaL( -1, i ) ); + + if( error != KErrNone ) + { + CleanupStack::PopAndDestroy( &filePaths ); + CleanupStack::PopAndDestroy( &downloadStates ); + CleanupStack::PopAndDestroy( &downloadIds ); + CleanupStack::PopAndDestroy( &mpxIds ); + + VCXLOGLO1("<<IsSupported( KMPXMediaGeneralUri ) ) + { + TUint32 downloadId = 0; + if( media->IsSupported( KVcxMediaMyVideosDownloadId ) ) + { + downloadId = media->ValueTObjectL( KVcxMediaMyVideosDownloadId ); + } + + TInt state = -1; + if( media->IsSupported( KVcxMediaMyVideosDownloadState ) ) + { + state = media->ValueTObjectL( KVcxMediaMyVideosDownloadState ); + } + + HBufC* path( NULL ); + if( media->IsSupported( KMPXMediaGeneralUri ) ) + { + path = media->ValueText( KMPXMediaGeneralUri ).AllocL(); + } + else + { + path = HBufC::NewL( 32 ); + } + + TMPXItemId itemId = *(media->Value( KMPXMediaGeneralId )); + + filePaths.Append( path ); + downloadIds.Append( downloadId ); + downloadStates.Append( state ); + mpxIds.Append( itemId.iId1 ); + } + } + + // Cancel downloads. + + for( TInt i = mpxIds.Count()-1; i >= 0; i-- ) + { + if( downloadIds[i] != 0 || downloadStates[i] != -1 ) + { + // Cancel the download. + RArray messages; + if( BaflUtils::FileExists( iFs, filePaths[i]->Des() ) ) + { + messages.Append( KVCXMYVideosTestMessageMpxItemDeleted ); + } + messages.Append( KVCXMYVideosTestMessageCommandComplete ); + messages.Append( KVCXMYVideosTestMessageCollectionOpened ); + TRAP( error, iTester->CancelDownloadL( mpxIds[i], downloadIds[i], filePaths[i]->Des(), EFalse ) ); + if( error == KErrNone ) + { + TRAP( error, WaitForMessagesL( ETrue, messages, 30, ETrue ) ); + } + messages.Reset(); + // Error occured, lets hope deleting works. + if( error != KErrNone ) + { + downloadIds[i] = 0; + downloadStates[i] = -1; + } + } + } + + // Get current list of medias. + + CMPXMediaArray* medias( NULL ); + medias = iTester->SelectMediasL( -1, 0, iTester->GetMediaCount() ); + CleanupStack::PushL( medias ); + + TInt retries = 3; + + // Delete the videos, and retry few times if needed. + while( iTester->GetMediaCount() > 0 && retries-- > 0 ) + { + // Get medias to delete. + TRAP( error, iTester->DeleteMediasByMpxIdsL( medias, EFalse ) ); + + if( error == KErrNone ) + { + // Wait for deletion to complete. + RArray messages; + CleanupClosePushL( messages ); + messages.Append( KVCXMYVideosTestMessageDeleteResp ); + messages.Append( KVCXMYVideosTestMessageCommandComplete ); + messages.Append( KVCXMYVideosTestMessageDeleteStarted ); + + TInt timeout = medias->Count()*5 + 60; + + TRAP( error, WaitForMessagesL( ETrue, messages, timeout, ETrue ) ); + CleanupStack::PopAndDestroy( &messages ); + } + + CleanupStack::PopAndDestroy( medias ); + + // Refresh the medias. + RArray messages; + messages.Append( KVCXMYVideosTestMessageCollectionOpened ); + TRAP( error, iTester->RefreshContentsL() ); + if( error == KErrNone ) + { + TRAP( error, WaitForMessagesL( ETrue, messages, 120, ETrue ) ); + } + messages.Reset(); + + medias = iTester->SelectMediasL( -1, 0, iTester->GetMediaCount() ); + CleanupStack::PushL( medias ); + + if( iTester->GetMediaCount() > 0 ) + { + User::After( 60 * 1000000 ); // Wait a minute. + } + } + + CleanupStack::PopAndDestroy( medias ); + + iLastReceivedMessage = -1; + + CleanupStack::PopAndDestroy( &filePaths ); + CleanupStack::PopAndDestroy( &downloadStates ); + CleanupStack::PopAndDestroy( &downloadIds ); + CleanupStack::PopAndDestroy( &mpxIds ); + + if( iTester && iTester->GetDownloadWatcher() ) + { + iTester->GetDownloadWatcher()->Reset(); + } + + if( iTester->GetMediaCount() > 0 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: All medias could not be removed."); + error = KErrCorrupt; + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::MoveMediaL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In MoveMediaL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + iLastReceivedMessage = -1; + + TInt sourceDrive(0); + User::LeaveIfError( GetDriveParam( aItem, sourceDrive ) ); + + TInt index(0); + User::LeaveIfError( aItem.GetNextInt( index ) ); + + TInt destDrive(0); + User::LeaveIfError( GetDriveParam( aItem, destDrive ) ); + + TBool syncCall( EFalse ); + TInt syncCallInt(0); + if( aItem.GetNextInt( syncCallInt ) == KErrNone ) + { + syncCall = static_cast(syncCallInt); + } + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCall ); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->EnsureMediaFilesAreNotInUseL() ); + err = VCXMVTEST_ERR( err ); + if( err == KErrNone ) + { + TRAP( err, iTester->MoveMediasL( sourceDrive, index, index+1, destDrive, syncCall ) ); + } + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::MoveMediasL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In MoveMediasL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + iLastReceivedMessage = -1; + + TInt sourceDrive(0); + User::LeaveIfError( GetDriveParam( aItem, sourceDrive ) ); + + TInt index(0); + User::LeaveIfError( aItem.GetNextInt( index ) ); + + TInt endIndex(0); + User::LeaveIfError( aItem.GetNextInt( endIndex ) ); + + TInt destDrive(0); + User::LeaveIfError( GetDriveParam( aItem, destDrive ) ); + + TBool syncCall( EFalse ); + TInt syncCallInt(0); + if( aItem.GetNextInt( syncCallInt ) == KErrNone ) + { + syncCall = static_cast(syncCallInt); + } + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCall ); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->EnsureMediaFilesAreNotInUseL() ); + err = VCXMVTEST_ERR( err ); + if( err == KErrNone ) + { + TRAP( err, iTester->MoveMediasL( sourceDrive, index, endIndex, destDrive, syncCall ) ); + } + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CancelMoveL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CancelMoveL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + iLastReceivedMessage = -1; + + TBool syncCall( ETrue ); + TInt syncCallInt(0); + if( aItem.GetNextInt( syncCallInt ) == KErrNone ) + { + syncCall = static_cast(syncCallInt); + } + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCall ); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->CancelMoveOrCopyL( syncCall ) ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CopyMediaL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CopyMediaL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + iLastReceivedMessage = -1; + + TInt sourceDrive(0); + User::LeaveIfError( GetDriveParam( aItem, sourceDrive ) ); + + TInt index(0); + User::LeaveIfError( aItem.GetNextInt( index ) ); + + TInt destDrive(0); + User::LeaveIfError( GetDriveParam( aItem, destDrive ) ); + + TBool syncCall( EFalse ); + TInt syncCallInt(0); + if( aItem.GetNextInt( syncCallInt ) == KErrNone ) + { + syncCall = static_cast(syncCallInt); + } + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCall ); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->CopyMediasL( sourceDrive, index, index+1, destDrive, syncCall ) ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CopyMediasL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CopyMediasL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + iLastReceivedMessage = -1; + + TInt sourceDrive(0); + User::LeaveIfError( GetDriveParam( aItem, sourceDrive ) ); + + TInt index(0); + User::LeaveIfError( aItem.GetNextInt( index ) ); + + TInt endIndex(0); + User::LeaveIfError( aItem.GetNextInt( endIndex ) ); + + TInt destDrive(0); + User::LeaveIfError( GetDriveParam( aItem, destDrive ) ); + + TBool syncCall( EFalse ); + TInt syncCallInt(0); + if( aItem.GetNextInt( syncCallInt ) == KErrNone ) + { + syncCall = static_cast(syncCallInt); + } + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCall ); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->CopyMediasL( sourceDrive, index, endIndex, destDrive, syncCall ) ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CancelCopyL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CancelCopyL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + iLastReceivedMessage = -1; + + TBool syncCall( EFalse ); + TInt syncCallInt(0); + if( aItem.GetNextInt( syncCallInt ) == KErrNone ) + { + syncCall = static_cast(syncCallInt); + } + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCall ); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->CancelMoveOrCopyL( syncCall ) ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::DeleteMediaL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In DeleteMediaL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + iLastReceivedMessage = -1; + + TInt sourceDrive(0); + User::LeaveIfError( GetDriveParam( aItem, sourceDrive ) ); + + TInt index(0); + User::LeaveIfError( aItem.GetNextInt( index ) ); + + TBool syncCall( ETrue ); + TInt syncCallInt(0); + if( aItem.GetNextInt( syncCallInt ) == KErrNone ) + { + syncCall = static_cast(syncCallInt); + } + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCall ); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->EnsureMediaFilesAreNotInUseL() ); + err = VCXMVTEST_ERR( err ); + if( err == KErrNone ) + { + TRAP( err, iTester->DeleteMediasL( sourceDrive, index, index+1, syncCall ) ); + } + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::DeleteMediasL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In DeleteMediasL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + iLastReceivedMessage = -1; + + TInt sourceDrive(0); + User::LeaveIfError( GetDriveParam( aItem, sourceDrive ) ); + + TInt index(0); + User::LeaveIfError( aItem.GetNextInt( index ) ); + + TInt endIndex(0); + User::LeaveIfError( aItem.GetNextInt( endIndex ) ); + + TBool syncCall( EFalse ); + TInt syncCallInt(0); + if( aItem.GetNextInt( syncCallInt ) == KErrNone ) + { + syncCall = static_cast(syncCallInt); + } + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCall ); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->EnsureMediaFilesAreNotInUseL() ); + err = VCXMVTEST_ERR( err ); + if( err == KErrNone ) + { + TRAP( err, iTester->DeleteMediasL( sourceDrive, index, endIndex, syncCall ) ); + } + } + + if( err != KErrNone ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CancelDeleteL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CancelDeleteL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + iLastReceivedMessage = -1; + + TBool syncCall( ETrue ); + TInt syncCallInt(0); + if( aItem.GetNextInt( syncCallInt ) == KErrNone ) + { + syncCall = static_cast(syncCallInt); + } + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCall ); + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->CancelDeleteL( syncCall ) ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CancelNextOperationL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CancelNextOperationL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iCancelNextOperation = ETrue; + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::DeleteFileOfMediaL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In DeleteFileOfMediaL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt drive(0); + User::LeaveIfError( GetDriveParam( aItem, drive ) ); + + TInt index(0); + User::LeaveIfError( aItem.GetNextInt( index ) ); + + if( index < 0 || index >= iTester->GetMediaCount() ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Error. Index (%d) out of bounds.", index); + User::Leave( KErrArgument ); + } + + iLastReceivedMessage = -1; + + TRAPD( err, iTester->DeleteFileOfMediaL( drive, index ) ); + + if( err != KErrNone ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::DeleteFilesOfAllMediasL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In DeleteFilesOfAllMediasL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iLastReceivedMessage = -1; + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->EnsureMediaFilesAreNotInUseL() ); + err = VCXMVTEST_ERR( err ); + if( err == KErrNone ) + { + TRAP( err, iTester->DeleteAllMediaFilesL() ); + } + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CreateVideoFileL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CreateVideoFileL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt temp(0); + + // Parameter video type + CIptvTestVideoCreator::TIptvTestVideoType videoType; + User::LeaveIfError( aItem.GetNextInt(temp) ); + videoType = static_cast(temp); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: videoType: %d", videoType); + + // Parameter drive letter + TPtrC driveLetter; + User::LeaveIfError(aItem.GetNextString(driveLetter)); +#ifdef __WINSCW__ + driveLetter.Set(_L("C")); +#endif + + // Parameter path and filename + TPtrC filename; + User::LeaveIfError(aItem.GetNextString(filename)); + if(filename.Length() < 64) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: filename: %S", &filename); + } + + // Parameter video size + TInt size(-1); + if( aItem.GetNextInt(size) != KErrNone ) + { + size = -1; + } + + // Parameter video count + TInt count(1); + if( aItem.GetNextInt( count ) != KErrNone || count <= 0 ) + { + count = 1; + } + + TRAPD( err, CreateVideoFileL( videoType, driveLetter, filename, size, count, ETrue ) ); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CreateVideoFileNoWaitL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CreateVideoFileNoWaitL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt temp(0); + + // Parameter video type + CIptvTestVideoCreator::TIptvTestVideoType videoType; + User::LeaveIfError( aItem.GetNextInt(temp) ); + videoType = static_cast(temp); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: videoType: %d", videoType); + + // Parameter drive letter + TPtrC driveLetter; + User::LeaveIfError(aItem.GetNextString(driveLetter)); +#ifdef __WINSCW__ + driveLetter.Set(_L("C")); +#endif + + // Parameter path and filename + TPtrC filename; + User::LeaveIfError(aItem.GetNextString(filename)); + if(filename.Length() < 64) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: filename: %S", &filename); + } + + // Parameter video size + TInt size(-1); + if( aItem.GetNextInt( size ) != KErrNone ) + { + size = -1; + } + + size = size == 0 ? size -1 : size; + + // Parameter video count + TInt count(1); + if( aItem.GetNextInt( count ) != KErrNone || count <= 0 ) + { + count = 1; + } + + TRAPD( err, CreateVideoFileL( videoType, driveLetter, filename, size, count, EFalse ) ); + + VCXLOGLO1("<<"); + return VCXMVTEST_ERR( err ); + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosApiTest::CreateVideoFileL +// ----------------------------------------------------------------------------- +// +void CVCXMyVideosCollectionPluginTest::CreateVideoFileL( CIptvTestVideoCreator::TIptvTestVideoType aType, const TDesC& aDriveLetter, const TDesC& aFileName, TInt aSize, TInt aVideoCount, TBool aDoSync ) + { + HBufC* path = HBufC::NewL( 2048 ); + CleanupStack::PushL(path); + + // Make sure path exists and resolve path + filename + TInt pos = aFileName.LocateReverse('\\'); + // Folder is specified in the test case + if(pos != KErrNotFound) + { + path->Des().Copy( aDriveLetter ); + path->Des().Append( aFileName.Left( pos+1 ) ); + if( path->Des().Length() < 64 ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: path: %S", path); + } + BaflUtils::EnsurePathExistsL(iFs, path->Des()); + + path->Des().Copy( aDriveLetter ); + path->Des().Append( aFileName ); + } + // No folder specified. If drive is C use :\data\my videos, else :\my videos + else + { + path->Des().Copy( aDriveLetter ); + TInt driveNum(0); + RFs::CharToDrive( aDriveLetter[0], driveNum ); + if( driveNum == EDriveC ) + { + path->Des().Append( _L(":\\data\\my videos\\") ); + } + else + { + path->Des().Append( _L(":\\my videos\\") ); + } + + if( path->Des().Length() < 64 ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: path: %S", path); + } + + BaflUtils::EnsurePathExistsL( iFs, path->Des() ); + path->Des().Append( aFileName ); + } + + path->ReAllocL( path->Des().Length()+1 ); + + // Save path for later cleanup + HBufC* pathOnly = path->Des().Left( path->Des().LocateReverse('\\') + 1 ).AllocL(); + CleanupStack::PushL( pathOnly ); + TBool pathStoredAlready = EFalse; + for( TInt i = 0; i < iSideloadFolders.Count(); i++ ) + { + if( iSideloadFolders[i]->Des().Find( *pathOnly ) != KErrNotFound ) + { + pathStoredAlready = ETrue; + break; + } + } + if( !pathStoredAlready ) + { + CleanupStack::Pop( pathOnly ); + iSideloadFolders.Append( pathOnly ); + } + else + { + CleanupStack::PopAndDestroy( pathOnly ); + } + + // Create file(s) + TInt err( KErrNone ); + + iLastReceivedMessage = -1; + + if( aVideoCount == 1 ) + { + // Save the path for later use. + CleanupStack::Pop( path ); + iSideloadedFiles.Append( path ); + + // Create the video. + TRAP( err, iTestCommon->CreateVideoFileL( aType, *path, aSize ) ); + if(err != KErrNone) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: CreateVideoFileL returned error: %d:", err); + } + TRAP_IGNORE( iStats->ActionStartL( KSideloadVideoActionId, _L("Sideload video") ) ); + } + else + { + TRAP( err, iTestCommon->CreateVideoFilesL( aType, *path, aVideoCount, iSideloadedFiles ) ); + if(err != KErrNone) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: CreateVideoFilesL returned error: %d:", err); + } + for( TInt i = 0; i < aVideoCount; i++ ) + { + TRAP_IGNORE( iStats->ActionStartL( KSideloadVideoActionId, _L("Sideload video") ) ); + } + CleanupStack::PopAndDestroy( path ); + } + + if( iTester ) + { + // Wait until videos have been created and collection refreshed. + // Only if category is open. + if( aDoSync && iTester->GetCurrentLevel() == 3 ) + { + // Disable automatic refresh if adding multiple videos. + if( aVideoCount > 1 ) + { + iTester->SetAutomaticRefresh( EFalse ); + } + + // Wait for insertion events. + RArray messages; + for( TInt i=0; i 1 ) + { + iTester->RefreshContentsL(); + messages.Append( KVCXMYVideosTestMessageCollectionOpened ); + CleanupClosePushL( messages ); + WaitForMessagesL( ETrue, messages, 60, ETrue ); + CleanupStack::PopAndDestroy( &messages ); + iTester->SetAutomaticRefresh( ETrue ); + } + } + } + } + +// ----------------------------------------------------------------------------- +// CVCXMyVideosCollectionPluginTest::EnsureDriveForVideosL +// Delete everything from sideloading folders. +// ----------------------------------------------------------------------------- +// +TInt CVCXMyVideosCollectionPluginTest::EnsureDriveForVideosL( CStifItemParser& aItem ) + { + VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTest::EnsureDriveForVideosL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In EnsureDriveForVideosL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + // Parameter drive letter + TPtrC driveLetter; + User::LeaveIfError(aItem.GetNextString(driveLetter)); + + TInt drive(0); + if( driveLetter == _L("anydrive") ) + { + drive = -1; + } + else + { + User::LeaveIfError( iFs.CharToDrive( driveLetter[0], drive ) ); + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: drive: %S = %d", &driveLetter, drive ); + } + + TInt amount(0); + User::LeaveIfError( aItem.GetNextInt( amount ) ); + + TInt videoCount = iTester->GetVideoCountForDrive( drive ); + + TInt err( KErrNone ); + + if( videoCount < amount ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest::EnsureDriveForVideosL: drive has less than %d videos.", amount); + + // Parameter path and filename + TPtrC filename; + User::LeaveIfError(aItem.GetNextString(filename)); + if(filename.Length() < 64) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: filename: %S", &filename); + } + + TInt createCount = amount - videoCount; + + TRAP( err, CreateVideoFileL( + CIptvTestVideoCreator::IptvTestVideoMpeg4, driveLetter, filename, -1, createCount, ETrue ) ); + } + else + if( videoCount > amount ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest::EnsureDriveForVideosL: drive has more than %d videos.", amount); + + TInt deleteCount = videoCount - amount; + + TRAP_IGNORE( iTester->EnsureMediaFilesAreNotInUseL() ); + TRAP( err, iTester->DeleteMediasL( drive, 0, deleteCount, EFalse ) ); + + if( err == KErrNone ) + { + // Wait for deletion to complete. + RArray messages; + CleanupClosePushL( messages ); + messages.Append( KVCXMYVideosTestMessageDeleteResp ); + messages.Append( KVCXMYVideosTestMessageCommandComplete ); + messages.Append( KVCXMYVideosTestMessageDeleteStarted ); + + TInt timeout = deleteCount*5 + 60; + + TRAP_IGNORE( WaitForMessagesL( ETrue, messages, timeout, ETrue ) ); + CleanupStack::PopAndDestroy( &messages ); + } + } + else + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest::EnsureDriveForVideosL: drive already has %d videos.", amount); + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::EmptySideloadFoldersL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In EmptySideloadFoldersL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Sideloaded file count: %d", iSideloadedFiles.Count()); + + if( iSideloadedFiles.Count() <= 0 ) + { + VCXLOGLO1("<< filesInUse; + CleanupResetAndDestroyPushL( filesInUse ); + + iLastReceivedMessage = -1; + + TInt i; + // Delete files + for(i=iSideloadedFiles.Count()-1; i>=0; i--) + { + HBufC16* path = iSideloadedFiles[i]; + CleanupStack::PushL( path ); + iSideloadedFiles.Remove( i ); + + TInt err = iFs.Delete( path->Des() ); + if( err == KErrInUse ) + { + CleanupStack::Pop( path ); + filesInUse.Append( path ); + } + else + { + CleanupStack::PopAndDestroy( path ); + if( err != KErrNone ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: delete error: %d", err); + } + } + } + + // Try again deleting files which were in use + for( i = filesInUse.Count()-1; i >= 0; i--) + { + HBufC16* path = filesInUse[i]; + CleanupStack::PushL( path ); + filesInUse.Remove( i ); + + // Delete file + iTestCommon->EnsureFileIsNotInUse( *path ); + TInt err = iFs.Delete( path->Des() ); + if( err != KErrNone ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: delete 2nd error: %d", err); + } + + CleanupStack::PopAndDestroy( path ); + } + + CleanupStack::PopAndDestroy( &filesInUse ); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::SetDeleteSideloadedVideos ---------->"); + iDeleteSideloadedFilesAndFolders = ETrue; + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::DownloadL ---------->"); + iLastReceivedMessage = -1; + TRAPD( err, DownloadOrResumeL( aItem, EFalse, EFalse ) ); + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::ResumeDownloadL ---------->"); + iLastReceivedMessage = -1; + TRAPD( err, DownloadOrResumeL( aItem, EFalse, ETrue ) ); + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::ResumeAllDownloadsL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In ResumeAllDownloadsL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + TRAPD( err, iTester->ResumeAllDownloadsL() ); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::DownloadUsingMediaL ---------->"); + + if( !iMpxMedia ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Error. iMpxMedia not set!"); + User::Leave( KErrArgument ); + } + + iLastReceivedMessage = -1; + + TRAPD( err, DownloadOrResumeL( aItem, ETrue, EFalse ) ); + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::ResumeDownloadUsingMediaL ---------->"); + + if( !iMpxMedia ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Error. iMpxMedia not set!"); + User::Leave( KErrArgument ); + } + + iLastReceivedMessage = -1; + + TRAPD( err, DownloadOrResumeL( aItem, ETrue, ETrue ) ); + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::DownloadOrResumeL"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In DownloadOrResumeL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + iLastReceivedMessage = -1; + + TUint32 iapId(0); + TPtrC iapName; + User::LeaveIfError( aItem.GetNextString( iapName ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: iapName: %S", &iapName); + + if( iapName == KVCXTestZeroIap ) + { + iapId = 0; + } + else + if( iapName == KVCXTestInvalidIap ) + { + iapId = 10001; + } + else + { + User::LeaveIfError( iTestCommon->GetIapIdL(iapName, iapId) ); + } + + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: iapId: %d", iapId); + + TPtrC serviceName; + User::LeaveIfError( aItem.GetNextString( serviceName ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: serviceName: %S", &serviceName); + + TInt serviceId(0); + User::LeaveIfError( iServiceEmu->GetServiceIdL(serviceName, serviceId) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: serviceId: %d", serviceId); + + TInt contentId(0); + User::LeaveIfError( aItem.GetNextInt( contentId ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: contentId: %d", contentId); + + TInt syncCallInt(0); + User::LeaveIfError( aItem.GetNextInt( syncCallInt ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCallInt); + TBool syncCall = static_cast(syncCallInt); + + TPtrC userName; + if( KErrNone == aItem.GetNextString( userName ) ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: userName: %S", &userName); + } + else + { + userName.Set( _L("") ); + } + + TPtrC password; + if( KErrNone == aItem.GetNextString( password ) ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: password: %S", &password); + } + else + { + password.Set( _L("") ); + } + + const TPtrC url = iServiceEmu->GetContentUrlL( serviceId, contentId ); + const TPtrC title = iServiceEmu->GetContentTitleL( serviceId, contentId ); + + TInt err(0); + if( !aUseCurrentMedia ) + { + if( !aResume ) + { + TRAP( err, iTester->StartDownloadL( title, iapId, serviceId, contentId, url, syncCall, userName, password, NULL ) ); + } + else + { + TRAP( err, iTester->ResumeDownloadL( title, iapId, serviceId, contentId, url, syncCall, userName, password, NULL ) ); + } + } + else + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: passing current media to MPX plugin."); + if( !aResume ) + { + TRAP( err, iTester->StartDownloadL( title, iapId, serviceId, contentId, url, syncCall, userName, password, iMpxMedia ) ); + } + else + { + TRAP( err, iTester->ResumeDownloadL( title, iapId, serviceId, contentId, url, syncCall, userName, password, iMpxMedia ) ); + } + } + + // Set autoresume on if there's only one paused download. + CVCXMyVideosTestDlWatcher* dlWatcher = iTester->GetDownloadWatcher(); + if( aResume && dlWatcher && !iAutoResume ) + { + TInt pausedDlCount = 0; + for( TInt i=0; iGetDownloadCount(); i++ ) + { + CVCXMyVideosTestDownload* dl = dlWatcher->GetDownloadByIndex( i ); + if( dl->iState == EVcxMyVideosDlStatePaused ) + { + pausedDlCount++; + } + } + if( pausedDlCount == 1 ) + { + iAutoResume = ETrue; + iTester->SetAutoResume( ETrue ); + } + } + + if( err != KErrNone ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + User::Leave( err ); + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::DownloadUrlL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In DownloadUrlL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TUint32 iapId(0); + TPtrC iapName; + User::LeaveIfError( aItem.GetNextString( iapName ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: iapName: %S", &iapName); + User::LeaveIfError( iTestCommon->GetIapIdL(iapName, iapId) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: iapId: %d", iapId); + + TPtrC url; + User::LeaveIfError( aItem.GetNextString( url ) ); + + TInt syncCallInt(0); + User::LeaveIfError( aItem.GetNextInt( syncCallInt ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCallInt); + TBool syncCall = static_cast(syncCallInt); + + TPtrC userName; + if( KErrNone == aItem.GetNextString( userName ) ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: userName: %S", &userName); + } + else + { + userName.Set( _L("") ); + } + + TPtrC password; + if( KErrNone == aItem.GetNextString( password ) ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: password: %S", &password); + } + else + { + password.Set( _L("") ); + } + + if( url == KVCXTestZeroUrl) + { + url.Set( _L("" ) ); + } + + TInt err( KErrNone ); + + if( iTester ) + { + if( url == KVCXMYVideosTest2kURLTag ) + { + TRAP( err, iTester->StartDownloadL( _L("2kcharsurl"), iapId, 0, 0, KVCXMYVideosTest2kURL, syncCall, userName, password, NULL ) ); + } + else + if( url == KVCXMYVideosTest1kURLTag ) + { + TRAP( err, iTester->StartDownloadL( _L("1kcharsurl"), iapId, 0, 0, KVCXMYVideosTest1kURL, syncCall, userName, password, NULL ) ); + } + else + { + TRAP( err, iTester->StartDownloadL( _L("urldl"), iapId, 0, 0, url, syncCall, userName, password, NULL ) ); + } + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CancelDownloadL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CancelDownloadL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TPtrC serviceName; + User::LeaveIfError( aItem.GetNextString( serviceName ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: serviceName: %S", &serviceName); + + TInt serviceId(0); + User::LeaveIfError( iServiceEmu->GetServiceIdL(serviceName, serviceId) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: serviceId: %d", serviceId); + + TInt contentId(0); + User::LeaveIfError( aItem.GetNextInt( contentId ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: contentId: %d", contentId); + + TInt syncCallInt(0); + User::LeaveIfError( aItem.GetNextInt( syncCallInt ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCallInt); + TBool syncCall = static_cast(syncCallInt); + + const TPtrC url = iServiceEmu->GetContentUrlL( serviceId, contentId ); + + CVCXMyVideosTestDownload* dl = iTester->GetDownloadWatcher()->GetDownload( serviceId, contentId, url ); + + TInt err( KErrNotReady ); + if( !dl ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Could not find download with specified params!"); + } + else + if( iTester ) + { + TRAP( err, iTester->CancelDownloadL( dl, syncCall ) ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CancelDownloadByIdL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CancelDownloadByIdL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TInt mpxId(0); + User::LeaveIfError( aItem.GetNextInt( mpxId ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: mpxId: %d", mpxId); + + TInt downloadId(0); + User::LeaveIfError( aItem.GetNextInt( downloadId ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: downloadId: %d", downloadId); + + TInt syncCallInt(0); + User::LeaveIfError( aItem.GetNextInt( syncCallInt ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCallInt); + TBool syncCall = static_cast(syncCallInt); + + _LIT(KVCxTestEmptyString, "NULL"); + TPtrC downloadPath; + if( aItem.GetNextString( downloadPath ) != KErrNone ) + { + downloadPath.Set( KVCxTestEmptyString ); + } + + TInt err( KErrNotReady ); + if( iTester ) + { + TRAP( err, iTester->CancelDownloadL( mpxId, downloadId, downloadPath, syncCall ) ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::PauseDownloadL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In PauseDownloadL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TPtrC serviceName; + User::LeaveIfError( aItem.GetNextString( serviceName ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: serviceName: %S", &serviceName); + + TInt serviceId(0); + User::LeaveIfError( iServiceEmu->GetServiceIdL(serviceName, serviceId) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: serviceId: %d", serviceId); + + TInt contentId(0); + User::LeaveIfError( aItem.GetNextInt( contentId ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: contentId: %d", contentId); + + TInt syncCallInt(0); + User::LeaveIfError( aItem.GetNextInt( syncCallInt ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: callTypeInt: %d", syncCallInt); + TBool syncCall = static_cast(syncCallInt); + + const TPtrC url = iServiceEmu->GetContentUrlL( serviceId, contentId ); + + TInt err( KErrNotReady ); + if( iTester ) + { + // Disable autoresume + iAutoResume = EFalse; + iTester->SetAutoResume( iAutoResume ); + + TRAP( err, iTester->PauseDownloadL( serviceId, contentId, url, syncCall ) ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::PauseDownloadByUrlL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In PauseDownloadByUrlL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TPtrC url; + User::LeaveIfError( aItem.GetNextString( url ) ); + + TInt err( KErrNotReady ); + if( iTester ) + { + // Disable autoresume + iAutoResume = EFalse; + iTester->SetAutoResume( iAutoResume ); + + TRAP( err, iTester->PauseDownloadL( url, EFalse ) ); + } + + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: err: %d", err); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CheckDownloadProgressL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In CheckDownloadProgressL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + iLastReceivedMessage = -1; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + + TPtrC serviceName; + User::LeaveIfError( aItem.GetNextString( serviceName ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: serviceName: %S", &serviceName); + + TInt serviceId(0); + User::LeaveIfError( iServiceEmu->GetServiceIdL(serviceName, serviceId) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: serviceId: %d", serviceId); + + TInt contentId(0); + User::LeaveIfError( aItem.GetNextInt( contentId ) ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: contentId: %d", contentId); + + TInt minimumProgress( 0 ); + User::LeaveIfError( aItem.GetNextInt( minimumProgress ) ); + + const TPtrC url = iServiceEmu->GetContentUrlL( serviceId, contentId ); + + CVCXMyVideosTestDlWatcher* dlWatcher = iTester->GetDownloadWatcher(); + + TInt err( KErrNotReady ); + + if( dlWatcher ) + { + CVCXMyVideosTestDownload* dl = dlWatcher->GetDownload( serviceId, contentId, url ); + + if( dl ) + { + if( dl->iProgress < minimumProgress ) + { + err = KErrCorrupt; + } + else + { + err = KErrNone; + } + } + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::WaitAllDownloadsL ---------->"); + // Print to UI + _LIT( KVCXMyVideosCollectionPluginTest, "VCXMyVideosCollectionPluginTest" ); + _LIT( KWhere, "In WaitAllDownloadsL" ); + TestModuleIf().Printf( 0, KVCXMyVideosCollectionPluginTest, KWhere ); + // Print to log file + iLog->Log( KWhere ); + + TInt err( KErrNone ); + + TInt minutes(0); + if( aItem.GetNextInt( minutes ) != KErrNone ) + { + minutes = 10; + } + iTimeoutTimer->After( KTimeoutMinute * minutes ); + + iWaitingForAllDownloads = ETrue; + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::WaitForMessageL ---------->"); + + _LIT( KWhere, "In WaitForMessageL" ); + // Print to log file + iLog->Log( KWhere ); + + TInt message(0); + User::LeaveIfError( aItem.GetNextInt( message ) ); + + TInt timeout(0); + User::LeaveIfError( aItem.GetNextInt( timeout ) ); + + TInt count(0); + if( aItem.GetNextInt( count ) != KErrNone ) + { + count = 1; + } + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: count: %d", count); + + _LIT(KWhat,"MsgWait"); + _LIT(KDesc, "All: %d"); + TestModuleIf().Printf( 0, KWhat, KDesc, count ); + + RArray messages; + + iWaitedTestMessages.Reset(); + for( TInt i=0; i>>CVCXMyVideosCollectionPluginTest::WaitForAnyMessageL ---------->"); + // Print to UI + _LIT( KWhere, "In WaitForAnyMessageL" ); + // Print to log file + iLog->Log( KWhere ); + + TInt timeout(0); + User::LeaveIfError( aItem.GetNextInt( timeout ) ); + + RArray messages; + + TInt message(0); + TInt error = KErrNone; + while( error == KErrNone ) + { + error = aItem.GetNextInt( message ); + if( error == KErrNone ) + { + messages.Append( message ); + } + } + + _LIT(KWhat,"MsgWait"); + _LIT(KDesc, "Any: %d"); + TestModuleIf().Printf( 0, KWhat, KDesc, messages.Count() ); + + if( error != KErrNone && error != KErrNotFound ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Error reading parameters from script."); + } + else + { + TRAP( error, WaitForMessagesL( EFalse, messages, timeout, EFalse ) ); + } + + messages.Reset(); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::WaitForMessagesL ---------->"); + // Print to UI + _LIT( KWhere, "In WaitForMessagesL" ); + // Print to log file + iLog->Log( KWhere ); + + TInt timeout(0); + User::LeaveIfError( aItem.GetNextInt( timeout ) ); + + RArray messages; + + TInt message(0); + TInt error = KErrNone; + while( error == KErrNone ) + { + error = aItem.GetNextInt( message ); + if( error == KErrNone ) + { + messages.Append( message ); + } + } + + _LIT(KWhat,"MsgWait"); + _LIT(KDesc, "All: %d"); + TestModuleIf().Printf( 0, KWhat, KDesc, messages.Count() ); + + if( error != KErrNone && error != KErrNotFound ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Error reading parameters from script."); + } + else + { + TRAP( error, WaitForMessagesL( EFalse, messages, timeout, ETrue ) ); + } + + messages.Reset(); + + VCXLOGLO1("<<& aMessages, TInt aTimeout, + TBool aWaitAll ) + { + VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTest::WaitForMessagesL 2"); + if( aMessages.Count() <= 0 ) + { + User::Leave( KErrArgument ); + } + + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Timeout: %d seconds", aTimeout); + + iWaitingForAllMessages = aWaitAll; + + iMessageWaitTimeout = aTimeout; + iTimeoutTimer->After( aTimeout * KTimeoutSecond ); + + iWaitedTestMessages.Reset(); + + TBool messageReceivedAlready( EFalse ); + + for( TInt i=0; i msgStr; + GetMessageDesc( aMessages[i], msgStr); + + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: MsgQueue: wait: %S (%d)", &msgStr, aMessages[i]); + + iWaitedTestMessages.Append( aMessages[i] ); + + if( aMessages[i] == iLastReceivedMessage ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Received this message already."); + iLastReceivedMessage = -1; + + HandleVcxMvTesterMessageL( aMessages[i], KErrNone ); + messageReceivedAlready = ETrue; + } + } + + if( aBlock && !messageReceivedAlready ) + { + iMessageWaitIsBlocking = ETrue; + iActiveWaitBlocking->Start(); + iMessageWaitIsBlocking = EFalse; + + // Only leave if it was blocking call. + TInt error( iEventError ); + iEventError = KErrNone; + User::LeaveIfError( error ); + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::DeleteDirectoryIfEmpty"); + CDir* dirList = NULL; + + TInt result = aFs.GetDir( aDirectory, KEntryAttNormal | KEntryAttMatchMask, ESortByName, dirList ); + if( result != KErrNone ) VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: getdir result: %d", result ); + if( result == KErrNone && dirList->Count() == 0 ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: deleting folder: %S", &aDirectory ); + TInt err(KErrNone); + err = aFileMan.RmDir( aDirectory ); + if( err != KErrNone ) + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: delete error: %d", err ); + } + + delete dirList; + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::MapMpxMediaAttribute"); + + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: mapping id: %d", aMapping); + + aAttribute.iAttributeId = 0; + aAttribute.iContentId = 0; + + switch( aMapping ) + { + case EVcxTestMapping_KMPXMediaGeneralId: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KMPXMediaGeneralId"); + aAttribute = KMPXMediaGeneralId; + aType = EVcxTestMediaAttributeTypeTMPXItemId; + } + break; + + case EVcxTestMapping_KMPXMediaGeneralTitle: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KMPXMediaGeneralTitle"); + aAttribute = KMPXMediaGeneralTitle; + aType = EVcxTestMediaAttributeTypeString; + } + break; + + case EVcxTestMapping_KMPXMediaGeneralComment: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KMPXMediaGeneralComment"); + aAttribute = KMPXMediaGeneralComment; + aType = EVcxTestMediaAttributeTypeString; + } + break; + + case EVcxTestMapping_KMPXMediaGeneralUri: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KMPXMediaGeneralUri"); + aAttribute = KMPXMediaGeneralUri; + aType = EVcxTestMediaAttributeTypeString; + } + break; + + case EVcxTestMapping_KMPXMediaGeneralSize: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KMPXMediaGeneralSize"); + aAttribute = KMPXMediaGeneralSize; + aType = EVcxTestMediaAttributeTypeTInt; + } + break; + + case EVcxTestMapping_KMPXMediaGeneralExtSizeInt64: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KMPXMediaGeneralExtSizeInt64"); + aAttribute = KMPXMediaGeneralExtSizeInt64; + aType = EVcxTestMediaAttributeTypeTInt64; + } + break; + + case EVcxTestMapping_KMPXMediaGeneralDate: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KMPXMediaGeneralDate"); + aAttribute = KMPXMediaGeneralDate; + aType = EVcxTestMediaAttributeTypeTInt64; + } + break; + + case EVcxTestMapping_KMPXMediaGeneralFlags: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KMPXMediaGeneralFlags"); + aAttribute = KMPXMediaGeneralFlags; + aType = EVcxTestMediaAttributeTypeMvFlags; + } + break; + + case EVcxTestMapping_KMPXMediaGeneralCopyright: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KMPXMediaGeneralCopyright"); + aAttribute = KMPXMediaGeneralCopyright; + aType = EVcxTestMediaAttributeTypeString; + } + break; + + case EVcxTestMapping_KMPXMediaGeneralMimeType: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KMPXMediaGeneralMimeType"); + aAttribute = KMPXMediaGeneralMimeType; + aType = EVcxTestMediaAttributeTypeString; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosModifiedDate: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosModifiedDate"); + aAttribute = KVcxMediaMyVideosModifiedDate; + aType = EVcxTestMediaAttributeTypeTInt64; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosModifiedDateCurrent: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosModifiedDate"); + aAttribute = KVcxMediaMyVideosModifiedDate; + aType = EVcxTestMediaAttributeTypeTTime; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosAgeProfile: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosAgeProfile"); + aAttribute = KVcxMediaMyVideosAgeProfile; + aType = EVcxTestMediaAttributeTypeTInt32; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosAudioLanguage: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosAudioLanguage"); + aAttribute = KVcxMediaMyVideosAudioLanguage; + aType = EVcxTestMediaAttributeTypeString; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosAuthor: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosAuthor"); + aAttribute = KVcxMediaMyVideosAuthor; + aType = EVcxTestMediaAttributeTypeString; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosOrigin: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosOrigin"); + aAttribute = KVcxMediaMyVideosOrigin; + aType = EVcxTestMediaAttributeTypeTUint8; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosDuration: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosDuration"); + aAttribute = KVcxMediaMyVideosDuration; + aType = EVcxTestMediaAttributeTypeTReal32; + } + break; + + case EVcxTestMapping_KMPXMediaGeneralLastPlaybackPosition: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KMPXMediaGeneralLastPlaybackPosition"); + aAttribute = KMPXMediaGeneralLastPlaybackPosition; + aType = EVcxTestMediaAttributeTypeTInt; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosDownloadId: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosDownloadId"); + aAttribute = KVcxMediaMyVideosDownloadId; + aType = EVcxTestMediaAttributeTypeTUint32; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosRemoteUrl: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosRemoteUrl"); + aAttribute = KVcxMediaMyVideosRemoteUrl; + aType = EVcxTestMediaAttributeTypeString; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosDownloadState: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosDownloadState"); + aAttribute = KVcxMediaMyVideosDownloadState; + aType = EVcxTestMediaAttributeTypeTUint8; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosIapId: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosIapId"); + aAttribute = KVcxMediaMyVideosIapId; + aType = EVcxTestMediaAttributeTypeTUint32; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosUsername: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosUsername"); + aAttribute = KVcxMediaMyVideosUsername; + aType = EVcxTestMediaAttributeTypeString; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosPassword: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosPassword"); + aAttribute = KVcxMediaMyVideosPassword; + aType = EVcxTestMediaAttributeTypeString; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosCommandId: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosCommandId"); + aAttribute = KVcxMediaMyVideosCommandId; + aType = EVcxTestMediaAttributeTypeTUint; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosDownloadProgress: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosDownloadProgress"); + aAttribute = KVcxMediaMyVideosDownloadProgress; + aType = EVcxTestMediaAttributeTypeTInt8; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosCategoryItemCount: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosCategoryItemCount"); + aAttribute = KVcxMediaMyVideosCategoryItemCount; + aType = EVcxTestMediaAttributeTypeTUint32; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosCategoryNewItemCount: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosCategoryNewItemCount"); + aAttribute = KVcxMediaMyVideosCategoryNewItemCount; + aType = EVcxTestMediaAttributeTypeTUint32; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosCategoryNewItemName: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosCategoryNewItemName"); + aAttribute = KVcxMediaMyVideosCategoryNewItemName; + aType = EVcxTestMediaAttributeTypeString; + } + break; + + case EVcxTestMapping_KVcxMediaMyVideosAudioFourCc: + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: KVcxMediaMyVideosCategoryNewItemName"); + aAttribute = KVcxMediaMyVideosAudioFourCc; + aType = EVcxTestMediaAttributeTypeTUint32; + } + break; + } + + VCXLOGLO3("CVCXMyVideosCollectionPluginTest:: iAttributeId: %d, iContentId: %d", aAttribute.iAttributeId == 0, aAttribute.iContentId); + + TInt err( KErrNone ); + if( aAttribute.iAttributeId == 0 && aAttribute.iContentId == 0 ) + { + err = KErrNotFound; + } + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::CheckMediasL"); + + TInt actualVideoCount(0); + + // File check + TInt videoCount = iTester->GetMediaCount(); + + // attribute check that they are in allowed values + + for( TInt i = videoCount-1; i >= 0; i-- ) + { + CMPXMedia* media = iTester->GetMediaL( -1, i ); + + if( media->IsSupported( KMPXMediaGeneralUri ) ) + { + TMPXItemId itemId = *( media->Value( KMPXMediaGeneralId ) ); + + const TDesC& localFilePath = media->ValueText( KMPXMediaGeneralUri ); + + // Drive specified + if( aDrive != -1 ) + { + TInt drive(0); + User::LeaveIfError( iFs.CharToDrive( localFilePath[0], drive ) ); + // Don't count/check this file. + if( drive != aDrive ) + { + continue; + } + } + + actualVideoCount++; + + TInt state = -1; + if( media->IsSupported( KVcxMediaMyVideosDownloadState ) ) + { + state = media->ValueTObjectL( KVcxMediaMyVideosDownloadState ); + } + + TUint32 downloadId = 0; + if( media->IsSupported( KVcxMediaMyVideosDownloadId ) ) + { + downloadId = media->ValueTObjectL( KVcxMediaMyVideosDownloadId ); + } + + // No file check for ongoing downloads + if( !iFileCheckDisabled && ( downloadId == 0 || state == EVcxMyVideosDlStateDownloaded ) ) + { + if( !iFs.IsValidName( localFilePath ) ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest: ERROR. File path is not valid."); + VCXLOGLO2("Local file path: %S", &localFilePath); + User::Leave( KErrCorrupt ); + } + + if( !BaflUtils::FileExists( iFs, localFilePath ) ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest: ERROR. File doesn't exist! Mpx id: %d", itemId.iId1); + VCXLOGLO2("Local file path: %S", &localFilePath); + User::Leave( KErrGeneral ); + } + + for( TInt e = videoCount-1; e >= 0; e-- ) + { + CMPXMedia* media2 = iTester->GetMediaL( -1, e ); + TMPXItemId itemId2 = *( media2->Value( KMPXMediaGeneralId ) ); + if( media2->IsSupported( KMPXMediaGeneralUri ) ) + { + const TDesC& localFilePath2 = media2->ValueText( KMPXMediaGeneralUri ); + + TCollationMethod cm = *Mem::CollationMethodByIndex( 0 ); + cm.iFlags |= TCollationMethod::EFoldCase; + + if( localFilePath.CompareC( localFilePath2, 0, &cm ) == KErrNone && itemId.iId1 != itemId2.iId1 ) + { + VCXLOGLO3("CVCXMyVideosCollectionPluginTest: ERROR. 2 items with same path! Mpx id: %d & id: %d", itemId.iId1, itemId2.iId1); + User::Leave( KErrGeneral ); + } + } + } + } + } + } + + _LIT(KWhat,"CountCheck"); + _LIT(KDesc, "%d/%d"); + TestModuleIf().Printf( 0, KWhat, KDesc, actualVideoCount, aExpectedVideoCount); + + VCXLOGLO2("CVCXMyVideosCollectionPluginTest: Actual count: %d", actualVideoCount ); + + if( aCheckType < 0 ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest: Minimum count: %d", aExpectedVideoCount ); + + if ( actualVideoCount < aExpectedVideoCount ) + { + User::Leave( KErrGeneral ); + } + } + else + if( aCheckType > 0 ) + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest: Maximum count: %d", aExpectedVideoCount ); + + if ( actualVideoCount > aExpectedVideoCount ) + { + User::Leave( KErrGeneral ); + } + } + else + { + VCXLOGLO2("CVCXMyVideosCollectionPluginTest: Expected count: %d", aExpectedVideoCount ); + + if ( aExpectedVideoCount + iAddMediaCmdCount != actualVideoCount ) + { + User::Leave( KErrGeneral ); + } + } + + VCXLOGLO1("<<GetCurrentLevel() == 3 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: Close & Open ------>"); + + TInt currentOpenLevelIndex = iTester->GetCurrentOpenLevelIndex(); + + // Close current level + TRAPD( err, iTester->CloseLevelL() ); + if( err == KErrNone ) + { + WaitForRefreshL( ETrue ); + } + + // Open it again + TRAP( err, iTester->OpenLevelL( currentOpenLevelIndex ) ); + if( err == KErrNone ) + { + WaitForRefreshL( ETrue ); + } + + + // And refresh + TRAP( err, iTester->RefreshContentsL() ); + if( err == KErrNone ) + { + WaitForRefreshL( ETrue ); + } + } + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosApiTest::WaitForRefreshL +// ----------------------------------------------------------------------------- +// +void CVCXMyVideosCollectionPluginTest::WaitForRefreshL( TBool aForcedWait ) + { + if( iTester && ( iTester->IsRefreshing() || aForcedWait ) ) + { + RArray messages; + messages.Append( KVCXMYVideosTestMessageCollectionOpened ); + CleanupClosePushL( messages ); + WaitForMessagesL( ETrue, messages, 10, ETrue ); + CleanupStack::PopAndDestroy( &messages ); + } + } + +// ----------------------------------------------------------------------------- +// CIptvMyVideosApiTest::GetMediasForLevelL +// ----------------------------------------------------------------------------- +// +CMPXMediaArray* CVCXMyVideosCollectionPluginTest::GetMediasForLevelL( TInt aLevel, TUint aFlagsFilter ) + { + VCXLOGLO1(">>>CVCXMyVideosCollectionPluginTest::GetMediasForLevelL ---------->"); + + iLastReceivedMessage = -1; + + TInt prevCurrentLevel = iTester->GetCurrentLevel(); + TInt prevOpenLevelIndex = iTester->GetCurrentOpenLevelIndex(); + + TInt error( KErrNotReady ); + + TBool wrongLevelOpen = ( prevCurrentLevel == 3 && prevOpenLevelIndex != aLevel ); + TBool levelNotOpen = ( prevCurrentLevel >= 2 ); + + if( wrongLevelOpen || levelNotOpen ) + { + RArray messages; + CleanupClosePushL( messages ); + if( !levelNotOpen ) + { + // Close current level. + messages.Append( KVCXMYVideosTestMessageCollectionOpened ); + TRAP( error, iTester->CloseLevelL() ); + if( error == KErrNone ) + { + WaitForMessagesL( ETrue, messages, 10, ETrue ); + } + messages.Reset(); + } + + // Open the wanted level. + messages.Append( KVCXMYVideosTestMessageCollectionOpened ); + TRAP( error, iTester->OpenLevelL( aLevel ) ); + if( error == KErrNone ) + { + WaitForMessagesL( ETrue, messages, 30, ETrue ); + } + + CleanupStack::PopAndDestroy( &messages ); + } + + // Get the medias. + const CMPXMediaArray* collectionMediaArray = iTester->GetAllCollectionMedia(); + + CMPXMediaArray* medias = CMPXMediaArray::NewL(); + + for( TInt i = 0; i < collectionMediaArray->Count(); i++ ) + { + CMPXMedia* media = (*collectionMediaArray)[i]; + // Default flags is none if item does not have the detail. + TInt flags( 0 ); + if( media->IsSupported( KMPXMediaGeneralFlags ) ) + { + flags = *media->Value( KMPXMediaGeneralFlags ); + } + // No flags specified or it matches with medias flags + TBool fagsMatch = static_cast( flags & aFlagsFilter ); + if( !aFlagsFilter || fagsMatch ) + { + if( media->IsSupported( KMPXMediaGeneralTitle ) ) + { + const TDesC& title = media->ValueText( KMPXMediaGeneralTitle ); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Adding media: %S", &title); + } + + medias->AppendL( *media ); + } + } + + if( levelNotOpen || wrongLevelOpen ) + { + // Close current level. + TRAP( error, iTester->CloseLevelL() ); + if( error == KErrNone ) + { + RArray messages; + CleanupClosePushL( messages ); + messages.Append( KVCXMYVideosTestMessageCollectionOpened ); + WaitForMessagesL( ETrue, messages, 10, ETrue ); + CleanupStack::PopAndDestroy( &messages ); + } + + // Open the previous level. + if( wrongLevelOpen ) + { + TRAP( error, iTester->OpenLevelL( prevOpenLevelIndex ) ); + if( error == KErrNone ) + { + RArray messages; + CleanupClosePushL( messages ); + messages.Append( KVCXMYVideosTestMessageCollectionOpened ); + WaitForMessagesL( ETrue, messages, 30, ETrue ); + CleanupStack::PopAndDestroy( &messages ); + } + } + } + + User::LeaveIfError( error ); + + VCXLOGLO1("<<>>CVCXMyVideosCollectionPluginTest::HandleVcxMvTesterMessageL"); + + TBuf<256> msgStr; + GetMessageDesc( aMessage, msgStr); + + iLastReceivedMessage = aMessage; + + VCXLOGLO4("CVCXMyVideosCollectionPluginTest:: MsgQueue: received: %S (%d), aError: %d", &msgStr, aMessage, aError); + + // Tester requires to abort test run. + if( aMessage == KVCXMYVideosTestMessageCollectionGeneral && aError == KErrAbort ) + { + iEventError = aError; + Signal( aError ); + VCXLOGLO1("<<GetMediaCount(); + TestModuleIf().Printf( 0, KWhat, KDesc, videoCount ); + } + + + // Waiting for messages from mpx plugin to stop. + if( iCoolDownWait ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: MsgQueue: Cooling down."); + iCoolDownTimer->After( KTimeoutSecond * 5 ); + VCXLOGLO1("<<GetActiveDownloadCountL(); + TInt downloads = iTester->GetDownloadWatcher()->GetDownloadCount(); + _LIT(KWhat, "Downloads"); + _LIT(KDesc, "%d/%d"); + TestModuleIf().Printf( 0, KWhat, KDesc, activeDownloads, downloads ); + + if( aError != KErrNone ) + { + iLastDownloadError = aError; + } + } + + // Inform script of paused download when auto resume is off. + if( !iWaitingForAllDownloads && aMessage == KVCXMYVideosTestMessageDlPaused && !iAutoResume ) + { + // Add message to waited list and continue processing, check for signaling is done later. + iWaitedTestMessages.Reset(); + iWaitedTestMessages.AppendL( aMessage ); + } + + // Waiting for all downloads to complete. Check downloads and signal if needed. + if( iWaitingForAllDownloads ) + { + TInt activeDownloads = iTester->GetActiveDownloadCountL(); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: Ongoing download count: %d", activeDownloads); + + if( activeDownloads <= 0 ) + { + iTimeoutTimer->CancelTimer(); + iWaitingForAllDownloads = EFalse; + + TInt downloadCount = iTester->GetDownloadWatcher()->GetDownloadCount(); + TInt maxFailsToSucceed = downloadCount / 3; + TInt fails = iTester->GetDownloadWatcher()->GetFailedDownloadCount(); + + if( maxFailsToSucceed <= 0 ) + { + maxFailsToSucceed = 0; + } + + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: download count: %d", downloadCount); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: failed download count: %d", fails); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: max allowed fails: %d", maxFailsToSucceed); + + if( fails > maxFailsToSucceed ) + { + if( iLastDownloadError != KErrNone ) + { + iEventError = iLastDownloadError; + } + else + { + iEventError = KVCXMYVideosTestMessageDlFailed; + } + } + else + { + iEventError = KErrNone; + } + + // Add message to waited list and continue processing, check for signaling is done later. + iWaitedTestMessages.Reset(); + iWaitedTestMessages.AppendL( aMessage ); + } + } + + // See if there's cancel needed for move, copy or delete. + if( aError == KErrNone && iCancelNextOperation ) + { + if( aMessage == KVCXMYVideosTestMessageCopyOrMoveStarted ) + { + TRAP( aError, iTester->CancelMoveOrCopyL( ETrue ) ); + } + + if( aMessage == KVCXMYVideosTestMessageDeleteStarted ) + { + TRAP( aError, iTester->CancelDeleteL( ETrue ) ); + iCancelNextOperation = EFalse; + } + } + + // Check for errors. + if( aError != KErrNone && !iWaitingForAllDownloads ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: ----------> MsgQueue: Error: %d <----------", aError); + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + + iLastReceivedMessage = 0; + if( !iMessageWaitIsBlocking ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: ----------> MsgQueue: Signaling <----------"); + Signal( VCXMVTEST_ERR( aError ) ); + TestModuleIf().Printf( 0, _L("Signal"), _L("%d"), aError ); + iEventError = KErrNone; + } + else + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: ----------> MsgQueue: Stop wait <----------"); + iActiveWaitBlocking->Stop(); + iEventError = aError; + } + + VCXLOGLO1("<<= 0 ) + { + _LIT(KWhat,"MsgWait"); + _LIT(KDesc, "Left: %d"); + TestModuleIf().Printf( 0, KWhat, KDesc, iWaitedTestMessages.Count() ); + } + + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: MsgQueue: %d messages left in queue.", iWaitedTestMessages.Count() ); + if( iWaitedTestMessages.Count() == 0 ) + { + doSignal = ETrue; + } + else + { + // Restart the timeout for next message. + iTimeoutTimer->Cancel(); + iTimeoutTimer->After( iMessageWaitTimeout * KTimeoutSecond ); + break; + } + } + + if( doSignal ) + { + iWaitedTestMessages.Reset(); + + if( iEventError != KErrNone ) + { + VCXLOGLO1( "CVCXMyVideosCollectionPluginTest:: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + VCXLOGLO2("CVCXMyVideosCollectionPluginTest:: ----------> MsgQueue: Error: %d <---------", iEventError); + VCXLOGLO1( "CVCXMyVideosCollectionPluginTest:: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + } + + if( !iMessageWaitIsBlocking ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: ----------> MsgQueue: Signaling <----------"); + Signal( VCXMVTEST_ERR( iEventError ) ); + TestModuleIf().Printf( 0, _L("Signal"), _L("%d"), iEventError ); + iEventError = KErrNone; + } + else + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest:: ----------> MsgQueue: Stop wait <----------"); + iActiveWaitBlocking->Stop(); + } + + iTimeoutTimer->CancelTimer(); + iLastReceivedMessage = 0; + break; + } + } + } + + VCXLOGLO1("<<Stop(); + + if( aError == KErrNone ) + { + VCXLOGLO2( "CVCXMyVideosCollectionPluginTest::TimerComplete: TESTCASE TIMEOUT -------> Last error from events: %d.", + iEventError ); + + iEventError = ( iEventError != KErrNone ? iEventError : KErrTimedOut ); + + // Script is waiting for signal. + if( !iMessageWaitIsBlocking ) + { + VCXLOGLO2( "CVCXMyVideosCollectionPluginTest:: Signaling: %d", iEventError); + Signal( VCXMVTEST_ERR( iEventError ) ); + } + + TRAP_IGNORE( iStats->ActionEndL( 0, iEventError ) ); + + TestModuleIf().Printf( 0, _L("Timedout"), _L("%d"), iEventError ); + } + } + + if( aTimerId == 1 ) + { + VCXLOGLO1("CVCXMyVideosCollectionPluginTest::TimerComplete: Cooldown done. ------->"); + iActiveWait->Stop(); + iCoolDownWait = EFalse; + + iWaitingForAllDownloads = EFalse; + iWaitedTestMessages.Reset(); + iLastReceivedMessage = 0; + } + } + +// End of File +