--- /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;
+ }