mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/src/DRMTestVidPlayer.cpp
changeset 24 2672ba96448e
--- /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 <caf/caf.h>
+#include <e32math.h>
+
+
+#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;
+	}