diff -r 1c0a769d0cc5 -r 2672ba96448e mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/src/DRMTestVidPlayer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/src/DRMTestVidPlayer.cpp Fri Jun 11 15:13:33 2010 +0300 @@ -0,0 +1,450 @@ +// Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "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: +// REQ1952 +// +// + +#include +#include + + +#include "DRMTestVidPlayer.h" +#include "rightsdatabase.h" + +using namespace ContentAccess; + +const TInt KFrameWidth = 100; +const TInt KFrameHeight = 50; +const TInt KDefaultRightsID = 1; +const TInt KDefaultRightsCount = 2; +const TInt KZeroRightsCount = 0; + +TAny GetDriveName(TDes& aFileName) +{ +#ifdef __WINS__ + aFileName = _L("c:"); +#elif defined(__MARM__) || defined(__X86GCC__) + #ifdef __TEST_FILES_ON_C_DRIVE__ + aFileName = _L("c:"); + #else + aFileName = _L("z:"); + #endif // __TEST_FILES_ON_C_DRIVE__ +#endif +} + +/** + * + * Static constructor for CTestStepVidPlayerDRMGetFrame. + * + * + * @return "CTestStepVidPlayerDRMGetFrame*" + * The constructed CTestStepVidPlayerDRMGetFrame + * + * @xxxx + * + */ + +CTestStepVidPlayerDRMGetFrame::CTestStepVidPlayerDRMGetFrame(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) + : CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse) + {} + +CTestStepVidPlayerDRMGetFrame* CTestStepVidPlayerDRMGetFrame::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) + { + CTestStepVidPlayerDRMGetFrame* self = new (ELeave) CTestStepVidPlayerDRMGetFrame(aTestName,aSectName,aKeyName); + return self; + } + + +void CTestStepVidPlayerDRMGetFrame::MvpuoFrameReady(CFbsBitmap& aFrame, TInt aError) + { + iError = aError; + if (aError==KErrNone) + { + if (aFrame.Handle() == NULL || aFrame.SizeInPixels() != TSize(KFrameWidth,KFrameHeight) ) + iError = KErrArgument; + else + { + iError = KErrNone; + INFO_PRINTF1(_L("MvpuoFrameReady: GetFrameL() COMPLETED OK")); + } + } + CActiveScheduler::Stop(); + } + +/** + * Load and initialise an audio file. + */ +TVerdict CTestStepVidPlayerDRMGetFrame::DoTestStepL() + { + TVerdict ret = EFail; + iError = KErrTimedOut; + + INFO_PRINTF1(_L("Test : Video Player DRM GetFrame")); + + + TPtrC filename; + if(!GetStringFromConfig(iSectName,iKeyName,filename)) + return EInconclusive; + + InitWservL(); + + //setup DRM rights + CRightsDatabase* rights = CRightsDatabase::NewL(EFalse); // create new database overwriting current one + delete rights; // the database will now be reset and have no entries in it + + TRect rect, clipRect; + CVideoPlayerUtility* player = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal, + EMdaPriorityPreferenceTimeAndQuality, + iWs, *iScreen, *iWindow, rect, clipRect); + CleanupStack::PushL(player); + + TRAP(iError,player->OpenFileL(filename)); + + if(iError == KErrNone) + { + // Wait for initialisation callback + INFO_PRINTF1(_L("CVideoPlayerUtility: Opening file")); + CActiveScheduler::Start(); + } + // Check for errors. + if (iError == KErrNone && player != NULL) + { + player->Prepare(); + CActiveScheduler::Start(); + } + + // Check for errors. + if (iError == KErrNone && player != NULL) + ret = DoTestL(player); + + INFO_PRINTF1(_L("CVideoPlayerUtility: Destroying")); + CleanupStack::PopAndDestroy(player); + if(iError != KErrNone) + ERR_PRINTF2( _L("CVideoPlayerUtility failed with error %d"),iError ); + return ret; + } + +TVerdict CTestStepVidPlayerDRMGetFrame::DoTestL(CVideoPlayerUtility* aPlayer) + { + TVerdict ret = EFail; + + iError = KErrTimedOut; + aPlayer->GetFrameL(EColor16M, EView); + INFO_PRINTF1(_L("CVideoPlayerUtility: Getting Frame from file")); + // Wait for init callback + CActiveScheduler::Start(); + if(iError == KErrNone) + ret = EPass; + else + ret = EFail; + + + return ret; + } + +// +/** + * + * Static constructor for CTestStepVidPlayerDRMGetFrameProtected. + * + * + * @return "CTestStepVidPlayerDRMGetFrameProtected*" + * The constructed CTestStepVidPlayerDRMGetFrameProtected + * + * @xxxx + * + */ + +CTestStepVidPlayerDRMGetFrameProtected::CTestStepVidPlayerDRMGetFrameProtected(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) + : CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse) + {} + +CTestStepVidPlayerDRMGetFrameProtected* CTestStepVidPlayerDRMGetFrameProtected::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) + { + CTestStepVidPlayerDRMGetFrameProtected* self = new (ELeave) CTestStepVidPlayerDRMGetFrameProtected(aTestName,aSectName,aKeyName); + return self; + } + + +void CTestStepVidPlayerDRMGetFrameProtected::MvpuoFrameReady(CFbsBitmap& aFrame, TInt aError) + { + iError = aError; + if (iError == KErrNone) + { + if (aFrame.Handle() == NULL || aFrame.SizeInPixels() != TSize(KFrameWidth,KFrameHeight) ) + iError = KErrArgument; + else + { + iError = KErrNone; + INFO_PRINTF1(_L("MvpuoFrameReady: GetFrameL() COMPLETED OK")); + } + } + CActiveScheduler::Stop(); + } + +/** + * Load and initialise an audio file. + */ +TVerdict CTestStepVidPlayerDRMGetFrameProtected::DoTestStepL() + { +TVerdict ret = EFail; + iError = KErrTimedOut; + + INFO_PRINTF1(_L("Test : Video Player DRM GetFrame")); + + + TPtrC filename; + if(!GetStringFromConfig(iSectName,iKeyName,filename)) + return EInconclusive; + + InitWservL(); + + //setup DRM rights + CRightsDatabase* rights = CRightsDatabase::NewL(EFalse); // create new database overwriting current one + CleanupStack::PushL(rights); + rights->AddRightsL(KDefaultRightsID,KZeroRightsCount); // add rights count + CleanupStack::PopAndDestroy(rights); // cleanup rights object + + + TRect rect, clipRect; + CVideoPlayerUtility* player = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal, + EMdaPriorityPreferenceTimeAndQuality, + iWs, *iScreen, *iWindow, rect, clipRect); + CleanupStack::PushL(player); + TMMFileSource fs(filename, KDefaultContentObject, EPeek); + TRAP(iError,player->OpenFileL(fs)); + + if(iError == KErrNone) + { + // Wait for initialisation callback + INFO_PRINTF1(_L("CVideoPlayerUtility: Opening file")); + CActiveScheduler::Start(); + } + // Check for errors. + if (iError == KErrNone && player != NULL) + { + player->Prepare(); + CActiveScheduler::Start(); + } + + // Check for errors. + if (iError == KErrNone && player != NULL) + ret = DoTestL(player); + + INFO_PRINTF1(_L("CVideoPlayerUtility: Destroying")); + CleanupStack::PopAndDestroy(player); + if(iError != KErrNone) + ERR_PRINTF2( _L("CVideoPlayerUtility failed with error %d"),iError ); + return ret; + } + +TVerdict CTestStepVidPlayerDRMGetFrameProtected::DoTestL(CVideoPlayerUtility* aPlayer) + { + TVerdict ret = EFail; + + iError = KErrTimedOut; + //set rights count to zero + aPlayer->GetFrameL(EColor16M, EView); + INFO_PRINTF1(_L("CVideoPlayerUtility: Getting Frame from file")); + // Wait for init callback + CActiveScheduler::Start(); + if(iError == KErrCANoPermission) + ret = EPass; + else + ret = EFail; + + return ret; + } + +// +/** + * + * Static constructor for CTestStepVidPlayerDRMPlayNoRights. + * + * + * @return "CTestStepVidPlayerDRMPlayNoRights*" + * The constructed CTestStepVidPlayerDRMPlayNoRights + * + * @xxxx + * + */ + +CTestStepVidPlayerDRMPlayNoRights::CTestStepVidPlayerDRMPlayNoRights(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) + : CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse) + {} + +CTestStepVidPlayerDRMPlayNoRights* CTestStepVidPlayerDRMPlayNoRights::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) + { + CTestStepVidPlayerDRMPlayNoRights* self = new (ELeave) CTestStepVidPlayerDRMPlayNoRights(aTestName,aSectName,aKeyName); + return self; + } + +/** + * Load and initialise an audio file. + */ +TVerdict CTestStepVidPlayerDRMPlayNoRights::DoTestStepL() + { + TVerdict ret = EFail; + iError = KErrTimedOut; + + INFO_PRINTF1(_L("Test : Video Player - Open File with no rights")); + + TPtrC filename; + if(!GetStringFromConfig(iSectName,iKeyName,filename)) + return EInconclusive; + + + InitWservL(); + + //setup DRM rights + CRightsDatabase* rights = CRightsDatabase::NewL(EFalse); // create new database overwriting current one + delete rights; // the database will now be reset and have no entries in it + + TRect rect, clipRect; + CVideoPlayerUtility* player = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal, + EMdaPriorityPreferenceTimeAndQuality, + iWs, *iScreen, *iWindow, rect, clipRect); + CleanupStack::PushL(player); + TRAP(iError,player->OpenFileL(filename)); + if (iError != KErrNone) + { + ERR_PRINTF2( _L("OpenFileL() left with %d, expecting"),iError); + CleanupStack::PopAndDestroy(player); + return ret; + } + CActiveScheduler::Start(); + + if(iError == KErrCANoRights) + { + ret = EPass; + INFO_PRINTF1(_L("Expected failure with KErrCANoRights")); + } + else + ERR_PRINTF3( _L("CVideoPlayerUtility received error %d, expecting"),iError, KErrCANoRights ); + INFO_PRINTF1(_L("CVideoPlayerUtility: Destroying")); + + CleanupStack::PopAndDestroy(player); + return ret; + } + +TVerdict CTestStepVidPlayerDRMPlayNoRights::DoTestL(CVideoPlayerUtility* aPlayer) + { + TVerdict ret = EFail; + + iError = KErrTimedOut; + aPlayer->Play(); + INFO_PRINTF1(_L("CVideoPlayerUtility: Playing file")); + // Wait for init callback + CActiveScheduler::Start(); + if(iError == KErrNone) + ret = EPass; + else + ret = EFail; + + return ret; + } + +// +/** + * + * Static constructor for CTestStepVidPlayerDRMPlayRights. + * + * + * @return "CTestStepVidPlayerDRMPlayRights*" + * The constructed CTestStepVidPlayerDRMPlayRights + * + * @xxxx + * + */ + +CTestStepVidPlayerDRMPlayRights::CTestStepVidPlayerDRMPlayRights(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) + : CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse) + {} + +CTestStepVidPlayerDRMPlayRights* CTestStepVidPlayerDRMPlayRights::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) + { + CTestStepVidPlayerDRMPlayRights* self = new (ELeave) CTestStepVidPlayerDRMPlayRights(aTestName,aSectName,aKeyName); + return self; + } + +/** + * Load and initialise an audio file. + */ +TVerdict CTestStepVidPlayerDRMPlayRights::DoTestStepL() + { + TVerdict ret = EFail; + iError = KErrTimedOut; + + INFO_PRINTF1(_L("Test : Video Player - File")); + + TPtrC filename; + if(!GetStringFromConfig(iSectName,iKeyName,filename)) + return EInconclusive; + + + InitWservL(); + + //setup DRM rights + CRightsDatabase* rights = CRightsDatabase::NewL(EFalse); // create new database overwriting current one + CleanupStack::PushL(rights); + rights->AddRightsL(KDefaultRightsID,KDefaultRightsCount); // add rights count + CleanupStack::PopAndDestroy(rights); // cleanup rights object + + TRect rect, clipRect; + CVideoPlayerUtility* player = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal, + EMdaPriorityPreferenceTimeAndQuality, + iWs, *iScreen, *iWindow, rect, clipRect); + CleanupStack::PushL(player); + TRAP(iError,player->OpenFileL(filename)); + + if(iError == KErrNone) + { + // Wait for initialisation callback + INFO_PRINTF1(_L("CVideoPlayerUtility: Opening file")); + CActiveScheduler::Start(); + } + // Check for errors. + if (iError == KErrNone && player != NULL) + { + player->Prepare(); + CActiveScheduler::Start(); + } + + // Check for errors. + if (iError == KErrNone && player != NULL) + ret = DoTestL(player); + + INFO_PRINTF1(_L("CVideoPlayerUtility: Destroying")); + CleanupStack::PopAndDestroy(player); + if(iError != KErrNone) + ERR_PRINTF2( _L("CVideoPlayerUtility failed with error %d"),iError ); + return ret; + } + +TVerdict CTestStepVidPlayerDRMPlayRights::DoTestL(CVideoPlayerUtility* aPlayer) + { + TVerdict ret = EFail; + + iError = KErrTimedOut; + aPlayer->Play(); + INFO_PRINTF1(_L("CVideoPlayerUtility: Playing file")); + // Wait for init callback + CActiveScheduler::Start(); + if(iError == KErrNone) + ret = EPass; + else + ret = EFail; + + return ret; + }