sl@0: // Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // REQ1952 sl@0: // sl@0: // sl@0: sl@0: #include sl@0: #include sl@0: sl@0: sl@0: #include "DRMTestVidPlayer.h" sl@0: #include "rightsdatabase.h" sl@0: sl@0: using namespace ContentAccess; sl@0: sl@0: const TInt KFrameWidth = 100; sl@0: const TInt KFrameHeight = 50; sl@0: const TInt KDefaultRightsID = 1; sl@0: const TInt KDefaultRightsCount = 2; sl@0: const TInt KZeroRightsCount = 0; sl@0: sl@0: TAny GetDriveName(TDes& aFileName) sl@0: { sl@0: #ifdef __WINS__ sl@0: aFileName = _L("c:"); sl@0: #elif defined(__MARM__) || defined(__X86GCC__) sl@0: #ifdef __TEST_FILES_ON_C_DRIVE__ sl@0: aFileName = _L("c:"); sl@0: #else sl@0: aFileName = _L("z:"); sl@0: #endif // __TEST_FILES_ON_C_DRIVE__ sl@0: #endif sl@0: } sl@0: sl@0: /** sl@0: * sl@0: * Static constructor for CTestStepVidPlayerDRMGetFrame. sl@0: * sl@0: * sl@0: * @return "CTestStepVidPlayerDRMGetFrame*" sl@0: * The constructed CTestStepVidPlayerDRMGetFrame sl@0: * sl@0: * @xxxx sl@0: * sl@0: */ sl@0: sl@0: CTestStepVidPlayerDRMGetFrame::CTestStepVidPlayerDRMGetFrame(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) sl@0: : CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse) sl@0: {} sl@0: sl@0: CTestStepVidPlayerDRMGetFrame* CTestStepVidPlayerDRMGetFrame::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) sl@0: { sl@0: CTestStepVidPlayerDRMGetFrame* self = new (ELeave) CTestStepVidPlayerDRMGetFrame(aTestName,aSectName,aKeyName); sl@0: return self; sl@0: } sl@0: sl@0: sl@0: void CTestStepVidPlayerDRMGetFrame::MvpuoFrameReady(CFbsBitmap& aFrame, TInt aError) sl@0: { sl@0: iError = aError; sl@0: if (aError==KErrNone) sl@0: { sl@0: if (aFrame.Handle() == NULL || aFrame.SizeInPixels() != TSize(KFrameWidth,KFrameHeight) ) sl@0: iError = KErrArgument; sl@0: else sl@0: { sl@0: iError = KErrNone; sl@0: INFO_PRINTF1(_L("MvpuoFrameReady: GetFrameL() COMPLETED OK")); sl@0: } sl@0: } sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: sl@0: /** sl@0: * Load and initialise an audio file. sl@0: */ sl@0: TVerdict CTestStepVidPlayerDRMGetFrame::DoTestStepL() sl@0: { sl@0: TVerdict ret = EFail; sl@0: iError = KErrTimedOut; sl@0: sl@0: INFO_PRINTF1(_L("Test : Video Player DRM GetFrame")); sl@0: sl@0: sl@0: TPtrC filename; sl@0: if(!GetStringFromConfig(iSectName,iKeyName,filename)) sl@0: return EInconclusive; sl@0: sl@0: InitWservL(); sl@0: sl@0: //setup DRM rights sl@0: CRightsDatabase* rights = CRightsDatabase::NewL(EFalse); // create new database overwriting current one sl@0: delete rights; // the database will now be reset and have no entries in it sl@0: sl@0: TRect rect, clipRect; sl@0: CVideoPlayerUtility* player = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal, sl@0: EMdaPriorityPreferenceTimeAndQuality, sl@0: iWs, *iScreen, *iWindow, rect, clipRect); sl@0: CleanupStack::PushL(player); sl@0: sl@0: TRAP(iError,player->OpenFileL(filename)); sl@0: sl@0: if(iError == KErrNone) sl@0: { sl@0: // Wait for initialisation callback sl@0: INFO_PRINTF1(_L("CVideoPlayerUtility: Opening file")); sl@0: CActiveScheduler::Start(); sl@0: } sl@0: // Check for errors. sl@0: if (iError == KErrNone && player != NULL) sl@0: { sl@0: player->Prepare(); sl@0: CActiveScheduler::Start(); sl@0: } sl@0: sl@0: // Check for errors. sl@0: if (iError == KErrNone && player != NULL) sl@0: ret = DoTestL(player); sl@0: sl@0: INFO_PRINTF1(_L("CVideoPlayerUtility: Destroying")); sl@0: CleanupStack::PopAndDestroy(player); sl@0: if(iError != KErrNone) sl@0: ERR_PRINTF2( _L("CVideoPlayerUtility failed with error %d"),iError ); sl@0: return ret; sl@0: } sl@0: sl@0: TVerdict CTestStepVidPlayerDRMGetFrame::DoTestL(CVideoPlayerUtility* aPlayer) sl@0: { sl@0: TVerdict ret = EFail; sl@0: sl@0: iError = KErrTimedOut; sl@0: aPlayer->GetFrameL(EColor16M, EView); sl@0: INFO_PRINTF1(_L("CVideoPlayerUtility: Getting Frame from file")); sl@0: // Wait for init callback sl@0: CActiveScheduler::Start(); sl@0: if(iError == KErrNone) sl@0: ret = EPass; sl@0: else sl@0: ret = EFail; sl@0: sl@0: sl@0: return ret; sl@0: } sl@0: sl@0: // sl@0: /** sl@0: * sl@0: * Static constructor for CTestStepVidPlayerDRMGetFrameProtected. sl@0: * sl@0: * sl@0: * @return "CTestStepVidPlayerDRMGetFrameProtected*" sl@0: * The constructed CTestStepVidPlayerDRMGetFrameProtected sl@0: * sl@0: * @xxxx sl@0: * sl@0: */ sl@0: sl@0: CTestStepVidPlayerDRMGetFrameProtected::CTestStepVidPlayerDRMGetFrameProtected(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) sl@0: : CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse) sl@0: {} sl@0: sl@0: CTestStepVidPlayerDRMGetFrameProtected* CTestStepVidPlayerDRMGetFrameProtected::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) sl@0: { sl@0: CTestStepVidPlayerDRMGetFrameProtected* self = new (ELeave) CTestStepVidPlayerDRMGetFrameProtected(aTestName,aSectName,aKeyName); sl@0: return self; sl@0: } sl@0: sl@0: sl@0: void CTestStepVidPlayerDRMGetFrameProtected::MvpuoFrameReady(CFbsBitmap& aFrame, TInt aError) sl@0: { sl@0: iError = aError; sl@0: if (iError == KErrNone) sl@0: { sl@0: if (aFrame.Handle() == NULL || aFrame.SizeInPixels() != TSize(KFrameWidth,KFrameHeight) ) sl@0: iError = KErrArgument; sl@0: else sl@0: { sl@0: iError = KErrNone; sl@0: INFO_PRINTF1(_L("MvpuoFrameReady: GetFrameL() COMPLETED OK")); sl@0: } sl@0: } sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: sl@0: /** sl@0: * Load and initialise an audio file. sl@0: */ sl@0: TVerdict CTestStepVidPlayerDRMGetFrameProtected::DoTestStepL() sl@0: { sl@0: TVerdict ret = EFail; sl@0: iError = KErrTimedOut; sl@0: sl@0: INFO_PRINTF1(_L("Test : Video Player DRM GetFrame")); sl@0: sl@0: sl@0: TPtrC filename; sl@0: if(!GetStringFromConfig(iSectName,iKeyName,filename)) sl@0: return EInconclusive; sl@0: sl@0: InitWservL(); sl@0: sl@0: //setup DRM rights sl@0: CRightsDatabase* rights = CRightsDatabase::NewL(EFalse); // create new database overwriting current one sl@0: CleanupStack::PushL(rights); sl@0: rights->AddRightsL(KDefaultRightsID,KZeroRightsCount); // add rights count sl@0: CleanupStack::PopAndDestroy(rights); // cleanup rights object sl@0: sl@0: sl@0: TRect rect, clipRect; sl@0: CVideoPlayerUtility* player = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal, sl@0: EMdaPriorityPreferenceTimeAndQuality, sl@0: iWs, *iScreen, *iWindow, rect, clipRect); sl@0: CleanupStack::PushL(player); sl@0: TMMFileSource fs(filename, KDefaultContentObject, EPeek); sl@0: TRAP(iError,player->OpenFileL(fs)); sl@0: sl@0: if(iError == KErrNone) sl@0: { sl@0: // Wait for initialisation callback sl@0: INFO_PRINTF1(_L("CVideoPlayerUtility: Opening file")); sl@0: CActiveScheduler::Start(); sl@0: } sl@0: // Check for errors. sl@0: if (iError == KErrNone && player != NULL) sl@0: { sl@0: player->Prepare(); sl@0: CActiveScheduler::Start(); sl@0: } sl@0: sl@0: // Check for errors. sl@0: if (iError == KErrNone && player != NULL) sl@0: ret = DoTestL(player); sl@0: sl@0: INFO_PRINTF1(_L("CVideoPlayerUtility: Destroying")); sl@0: CleanupStack::PopAndDestroy(player); sl@0: if(iError != KErrNone) sl@0: ERR_PRINTF2( _L("CVideoPlayerUtility failed with error %d"),iError ); sl@0: return ret; sl@0: } sl@0: sl@0: TVerdict CTestStepVidPlayerDRMGetFrameProtected::DoTestL(CVideoPlayerUtility* aPlayer) sl@0: { sl@0: TVerdict ret = EFail; sl@0: sl@0: iError = KErrTimedOut; sl@0: //set rights count to zero sl@0: aPlayer->GetFrameL(EColor16M, EView); sl@0: INFO_PRINTF1(_L("CVideoPlayerUtility: Getting Frame from file")); sl@0: // Wait for init callback sl@0: CActiveScheduler::Start(); sl@0: if(iError == KErrCANoPermission) sl@0: ret = EPass; sl@0: else sl@0: ret = EFail; sl@0: sl@0: return ret; sl@0: } sl@0: sl@0: // sl@0: /** sl@0: * sl@0: * Static constructor for CTestStepVidPlayerDRMPlayNoRights. sl@0: * sl@0: * sl@0: * @return "CTestStepVidPlayerDRMPlayNoRights*" sl@0: * The constructed CTestStepVidPlayerDRMPlayNoRights sl@0: * sl@0: * @xxxx sl@0: * sl@0: */ sl@0: sl@0: CTestStepVidPlayerDRMPlayNoRights::CTestStepVidPlayerDRMPlayNoRights(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) sl@0: : CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse) sl@0: {} sl@0: sl@0: CTestStepVidPlayerDRMPlayNoRights* CTestStepVidPlayerDRMPlayNoRights::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) sl@0: { sl@0: CTestStepVidPlayerDRMPlayNoRights* self = new (ELeave) CTestStepVidPlayerDRMPlayNoRights(aTestName,aSectName,aKeyName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * Load and initialise an audio file. sl@0: */ sl@0: TVerdict CTestStepVidPlayerDRMPlayNoRights::DoTestStepL() sl@0: { sl@0: TVerdict ret = EFail; sl@0: iError = KErrTimedOut; sl@0: sl@0: INFO_PRINTF1(_L("Test : Video Player - Open File with no rights")); sl@0: sl@0: TPtrC filename; sl@0: if(!GetStringFromConfig(iSectName,iKeyName,filename)) sl@0: return EInconclusive; sl@0: sl@0: sl@0: InitWservL(); sl@0: sl@0: //setup DRM rights sl@0: CRightsDatabase* rights = CRightsDatabase::NewL(EFalse); // create new database overwriting current one sl@0: delete rights; // the database will now be reset and have no entries in it sl@0: sl@0: TRect rect, clipRect; sl@0: CVideoPlayerUtility* player = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal, sl@0: EMdaPriorityPreferenceTimeAndQuality, sl@0: iWs, *iScreen, *iWindow, rect, clipRect); sl@0: CleanupStack::PushL(player); sl@0: TRAP(iError,player->OpenFileL(filename)); sl@0: if (iError != KErrNone) sl@0: { sl@0: ERR_PRINTF2( _L("OpenFileL() left with %d, expecting"),iError); sl@0: CleanupStack::PopAndDestroy(player); sl@0: return ret; sl@0: } sl@0: CActiveScheduler::Start(); sl@0: sl@0: if(iError == KErrCANoRights) sl@0: { sl@0: ret = EPass; sl@0: INFO_PRINTF1(_L("Expected failure with KErrCANoRights")); sl@0: } sl@0: else sl@0: ERR_PRINTF3( _L("CVideoPlayerUtility received error %d, expecting"),iError, KErrCANoRights ); sl@0: INFO_PRINTF1(_L("CVideoPlayerUtility: Destroying")); sl@0: sl@0: CleanupStack::PopAndDestroy(player); sl@0: return ret; sl@0: } sl@0: sl@0: TVerdict CTestStepVidPlayerDRMPlayNoRights::DoTestL(CVideoPlayerUtility* aPlayer) sl@0: { sl@0: TVerdict ret = EFail; sl@0: sl@0: iError = KErrTimedOut; sl@0: aPlayer->Play(); sl@0: INFO_PRINTF1(_L("CVideoPlayerUtility: Playing file")); sl@0: // Wait for init callback sl@0: CActiveScheduler::Start(); sl@0: if(iError == KErrNone) sl@0: ret = EPass; sl@0: else sl@0: ret = EFail; sl@0: sl@0: return ret; sl@0: } sl@0: sl@0: // sl@0: /** sl@0: * sl@0: * Static constructor for CTestStepVidPlayerDRMPlayRights. sl@0: * sl@0: * sl@0: * @return "CTestStepVidPlayerDRMPlayRights*" sl@0: * The constructed CTestStepVidPlayerDRMPlayRights sl@0: * sl@0: * @xxxx sl@0: * sl@0: */ sl@0: sl@0: CTestStepVidPlayerDRMPlayRights::CTestStepVidPlayerDRMPlayRights(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) sl@0: : CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse) sl@0: {} sl@0: sl@0: CTestStepVidPlayerDRMPlayRights* CTestStepVidPlayerDRMPlayRights::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName) sl@0: { sl@0: CTestStepVidPlayerDRMPlayRights* self = new (ELeave) CTestStepVidPlayerDRMPlayRights(aTestName,aSectName,aKeyName); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * Load and initialise an audio file. sl@0: */ sl@0: TVerdict CTestStepVidPlayerDRMPlayRights::DoTestStepL() sl@0: { sl@0: TVerdict ret = EFail; sl@0: iError = KErrTimedOut; sl@0: sl@0: INFO_PRINTF1(_L("Test : Video Player - File")); sl@0: sl@0: TPtrC filename; sl@0: if(!GetStringFromConfig(iSectName,iKeyName,filename)) sl@0: return EInconclusive; sl@0: sl@0: sl@0: InitWservL(); sl@0: sl@0: //setup DRM rights sl@0: CRightsDatabase* rights = CRightsDatabase::NewL(EFalse); // create new database overwriting current one sl@0: CleanupStack::PushL(rights); sl@0: rights->AddRightsL(KDefaultRightsID,KDefaultRightsCount); // add rights count sl@0: CleanupStack::PopAndDestroy(rights); // cleanup rights object sl@0: sl@0: TRect rect, clipRect; sl@0: CVideoPlayerUtility* player = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal, sl@0: EMdaPriorityPreferenceTimeAndQuality, sl@0: iWs, *iScreen, *iWindow, rect, clipRect); sl@0: CleanupStack::PushL(player); sl@0: TRAP(iError,player->OpenFileL(filename)); sl@0: sl@0: if(iError == KErrNone) sl@0: { sl@0: // Wait for initialisation callback sl@0: INFO_PRINTF1(_L("CVideoPlayerUtility: Opening file")); sl@0: CActiveScheduler::Start(); sl@0: } sl@0: // Check for errors. sl@0: if (iError == KErrNone && player != NULL) sl@0: { sl@0: player->Prepare(); sl@0: CActiveScheduler::Start(); sl@0: } sl@0: sl@0: // Check for errors. sl@0: if (iError == KErrNone && player != NULL) sl@0: ret = DoTestL(player); sl@0: sl@0: INFO_PRINTF1(_L("CVideoPlayerUtility: Destroying")); sl@0: CleanupStack::PopAndDestroy(player); sl@0: if(iError != KErrNone) sl@0: ERR_PRINTF2( _L("CVideoPlayerUtility failed with error %d"),iError ); sl@0: return ret; sl@0: } sl@0: sl@0: TVerdict CTestStepVidPlayerDRMPlayRights::DoTestL(CVideoPlayerUtility* aPlayer) sl@0: { sl@0: TVerdict ret = EFail; sl@0: sl@0: iError = KErrTimedOut; sl@0: aPlayer->Play(); sl@0: INFO_PRINTF1(_L("CVideoPlayerUtility: Playing file")); sl@0: // Wait for init callback sl@0: CActiveScheduler::Start(); sl@0: if(iError == KErrNone) sl@0: ret = EPass; sl@0: else sl@0: ret = EFail; sl@0: sl@0: return ret; sl@0: }