--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/TestAgent/testagentdata.cpp Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,237 @@
+/*
+* Copyright (c) 2004-2009 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:
+* testagentconsumer.cpp
+* implements some of OMA DRM for testing purposes
+*
+*/
+
+
+
+#include <caf/caf.h>
+#include "testagentdata.h"
+#include "testagentattributes.h"
+#include "TestAgentFile.h"
+#include "TestAgentDrmContent.h"
+
+using namespace ContentAccess;
+
+CTestAgentData* CTestAgentData::NewL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)
+ {
+ CTestAgentData* self = NewLC(aVirtualPath, aShareMode);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CTestAgentData* CTestAgentData::NewLC(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)
+ {
+ CTestAgentData* self=new(ELeave) CTestAgentData();
+ CleanupStack::PushL(self);
+ self->ConstructL(aVirtualPath, aShareMode);
+ return self;
+ }
+
+CTestAgentData* CTestAgentData::NewL(RFile& aFile, const TDesC& aUniqueId)
+ {
+ CTestAgentData* self = NewLC(aFile, aUniqueId);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CTestAgentData* CTestAgentData::NewLC(RFile& aFile, const TDesC& aUniqueId)
+ {
+ CTestAgentData* self=new(ELeave) CTestAgentData();
+ CleanupStack::PushL(self);
+ self->ConstructL(aFile, aUniqueId);
+ return self;
+ }
+
+CTestAgentData::CTestAgentData()
+ {
+ }
+
+CTestAgentData::~CTestAgentData()
+ {
+ delete iVirtualPath;
+ delete iTestFileObject;
+
+ iFile.Close();
+ iFs.Close();
+ }
+
+void CTestAgentData::ConstructL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)
+ {
+ // It is at this point that the agent can open the target content
+ // and cache the size. Evaluation of intent will be left until the
+ // CData object is created.
+
+ // default share mode of EFileShareReadersOnly
+ TUint mode = EFileStream | EFileRead;
+
+ if(aShareMode == EContentShareReadWrite)
+ {
+ mode |= EFileShareReadersOrWriters;
+ }
+ else if (aShareMode == EContentShareExclusive)
+ {
+ mode |= EFileShareExclusive;
+ }
+ else
+ {
+ mode |= EFileShareReadersOnly;
+ }
+
+ TFileName dummyFileName;
+ TTestAgentAttributes::GetDummyFileName(aVirtualPath.URI(), dummyFileName);
+
+ // open the file with the correct mode
+ User::LeaveIfError(iFs.Connect());
+ User::LeaveIfError(iFs.ShareAuto());
+ User::LeaveIfError(iFile.Open(iFs, dummyFileName, mode));
+
+ // remember the location of the file
+ iVirtualPath = CVirtualPath::NewL(dummyFileName, aVirtualPath.UniqueId());
+
+ // Parse the structure of the DCF file if asked to open default content
+ if(aVirtualPath.UniqueId().Length() == 0)
+ {
+ iTestFileObject = CTestAgentFile::NewL(iFile);
+ }
+ else
+ {
+ iTestFileObject = CTestAgentDrmContent::NewL(iFile);
+ }
+
+ // seek to start of data in the file, ready to "read"
+ TInt Pos = 0;
+ Seek(ESeekStart, Pos);
+ }
+
+
+void CTestAgentData::ConstructL(RFile& aFile, const TDesC& aUniqueId)
+ {
+ User::LeaveIfError(iFile.Duplicate(aFile));
+
+ User::LeaveIfError(iFs.Connect());
+ User::LeaveIfError(iFs.ShareAuto());
+
+ // only parse the drm content if requested to open it
+ if(aUniqueId.Length() == 0)
+ {
+ iTestFileObject = CTestAgentFile::NewL(iFile);
+ }
+ else
+ {
+ iTestFileObject = CTestAgentDrmContent::NewL(iFile);
+ }
+
+
+ // seek to start of data in the file, ready to "read"
+ TInt Pos = 0;
+ Seek(ESeekStart, Pos);
+ }
+
+void CTestAgentData::DataSizeL(TInt &aSize)
+ {
+ iTestFileObject->DataSizeL(aSize);
+ }
+
+TInt CTestAgentData::EvaluateIntent(TIntent /*aIntent*/)
+ {
+ return KErrNone;
+ }
+
+TInt CTestAgentData::ExecuteIntent(TIntent /*aIntent*/)
+ {
+ return KErrNone;
+ }
+
+TInt CTestAgentData::Read(TDes8& aDes)
+ {
+ return iTestFileObject->Read(aDes,aDes.MaxLength());
+ }
+
+TInt CTestAgentData::Read(TDes8& aDes,TInt aLength)
+ {
+ return iTestFileObject->Read(aDes,aLength);
+ }
+
+void CTestAgentData::Read(TDes8& aDes,TRequestStatus& aStatus)
+ {
+ iTestFileObject->Read(aDes, aDes.MaxLength(), aStatus);
+ }
+
+void CTestAgentData::Read(TDes8& aDes, TInt aLength, TRequestStatus& aStatus)
+ {
+ iTestFileObject->Read(aDes, aLength, aStatus);
+ }
+
+TInt CTestAgentData::Read(TInt aPos, TDes8& aDes, TInt aLength, TRequestStatus& aStatus)
+ {
+ iTestFileObject->Read(aPos, aDes, aLength, aStatus);
+ return KErrNone;
+ }
+
+void CTestAgentData::ReadCancel(TRequestStatus& aStatus)
+{
+ iTestFileObject->ReadCancel(aStatus);
+}
+
+TInt CTestAgentData::Seek(TSeek aMode, TInt& aPos)
+ {
+ return iTestFileObject->Seek(aMode, aPos);
+ }
+
+TInt CTestAgentData::SetProperty(TAgentProperty /*aProperty*/, TInt /*aValue*/)
+ {
+ return KErrCANotSupported;
+ }
+
+TInt CTestAgentData::GetAttribute(TInt aAttribute, TInt& aValue)
+ {
+ return iTestFileObject->GetAttribute(aAttribute, aValue);
+ }
+
+TInt CTestAgentData::GetAttributeSet(RAttributeSet& aAttributeSet)
+ {
+ return TTestAgentAttributes::GetAttributeSet(*iTestFileObject, aAttributeSet);
+ }
+
+TInt CTestAgentData::GetStringAttribute(TInt aAttribute, TDes& aValue)
+ {
+ return iTestFileObject->GetStringAttribute(aAttribute, aValue);
+ }
+
+TInt CTestAgentData::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet)
+ {
+ return TTestAgentAttributes::GetStringAttributeSet(*iTestFileObject, aStringAttributeSet);
+ }
+
+#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+TInt CTestAgentData::Read64(TInt64 /* aPos */, TDes8& /* aDes */, TInt /* aLength */, TRequestStatus& /* aStatus */)
+ {
+ return KErrCANotSupported;
+ }
+
+void CTestAgentData::DataSize64L(TInt64& /*aSize*/)
+ {
+ User::Leave(KErrCANotSupported);
+ }
+
+TInt CTestAgentData::Seek64(TSeek /*aMode*/, TInt64& /*aPos*/)
+ {
+ return KErrCANotSupported;
+ }
+#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+