diff -r afc583cfa176 -r da2ae96f639b contentmgmt/referencedrmagent/tcaf/source/cafstep.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contentmgmt/referencedrmagent/tcaf/source/cafstep.cpp Mon Oct 12 10:17:04 2009 +0300 @@ -0,0 +1,211 @@ +/* +* Copyright (c) 2003-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: +* +*/ + +#include "cafstep.h" +#include +#include +#include +#include "cafserver.h" +#include "resolver.h" +#include "manager.h" +#include "bitset.h" +#include "CafApaRecognizer.h" + +#include +#include +#include +#include +#include + +using namespace ContentAccess; + +/* + * Base class for all CAF test steps + * + */ + +CCAFStep::CCAFStep() + { + } + +CCAFStep::~CCAFStep() + { + } + +void CCAFStep:: InitialiseFileHandleParametersL() + { + GetStringFromConfig(ConfigSection(),_L("uri"),iUri); + GetStringFromConfig(ConfigSection(),_L("uniqueid"),iUniqueId); + GetIntFromConfig(ConfigSection(),_L("result"),iExpectedResult); + + iFs.Connect(); + CleanupClosePushL(iFs); + User::LeaveIfError(iFs.ShareProtected()); + User::LeaveIfError(iFile.Open(iFs, iUri, EFileShareReadersOnly| EFileRead | EFileStream)); + CleanupClosePushL(iFile); + } + +void CCAFStep::ReadBufferL(TDesC16& aFileName, TDes8& aBuffer) + { + RFs fs; + RFile handle; + TInt result; + User::LeaveIfError(fs.Connect()); + CleanupClosePushL(fs); + result = handle.Open(fs,aFileName,EFileRead | EFileStream | EFileShareAny); + User::LeaveIfError(result); + CleanupClosePushL(handle); + handle.Read(aBuffer); + CleanupStack::PopAndDestroy(2, &fs); + } + +HBufC8* CCAFStep::ConvertDes16toHBufC8LC(TDesC& source) + { + RFs fs; + HBufC8 *buf = HBufC8::NewL(source.Length()); + CleanupStack::PushL(buf); + TPtr8 ptr=buf->Des(); + + CCnvCharacterSetConverter *converter = CCnvCharacterSetConverter::NewLC(); + User::LeaveIfError(fs.Connect()); + CleanupClosePushL(fs); + converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierAscii, fs); + converter->ConvertFromUnicode(ptr, source); + CleanupStack::PopAndDestroy(2, converter); + return buf; + } + +HBufC16* CCAFStep::ConvertDes8toHBufC16LC(TDesC8& source) + { + RFs fs; + TInt status=0; + HBufC16 *buf = HBufC16::NewL(source.Length()); + CleanupStack::PushL(buf); + TPtr16 ptr=buf->Des(); + CCnvCharacterSetConverter *converter = CCnvCharacterSetConverter::NewLC(); + User::LeaveIfError(fs.Connect()); + CleanupClosePushL(fs); + converter->PrepareToConvertToOrFromL(KCharacterSetIdentifierAscii, fs); + converter->ConvertToUnicode(ptr, source, status); + CleanupStack::PopAndDestroy(2, converter); + return buf; + } + +#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT + +HBufC8* CCAFStep::CreateWmdrmHeaderLC() + { + // create dummy header data. + const TInt KMaxBufferLen = 64; + _LIT8(KHeaderData, "W\0R\0M\0H\0E\0A\0D\0E\0R\0"); + + HBufC8* headerData = HBufC8::NewMaxLC(KMaxBufferLen); + TPtr8 headerPtr = headerData->Des(); + headerPtr.Repeat(KHeaderData); + return headerData; + } +#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT + + +void CCAFStep::LoadCafRecognizerL() + { + static const TUid KImplementationUID= {0x102031E9}; + + TAny* ptr = REComSession::CreateImplementationL(KImplementationUID, iDtorIDKey); + iRecognizer = static_cast (ptr); + } + +void CCAFStep::UnLoadCafRecognizer() + { + delete iRecognizer; + iRecognizer=NULL; + REComSession::DestroyedImplementation(iDtorIDKey); + REComSession::FinalClose(); + } + +TInt CCAFStep::Delete(const TDesC& aFile) + { + TInt err = KErrNone; + RFs fs; + err = fs.Connect(); + if(err == KErrNone) + { + err = fs.Delete(aFile); + fs.Close(); + } + return err; + } + + + +TVerdict CCAFStep::doTestStepPreambleL() + { + iActiveScheduler = new (ELeave) CActiveScheduler; + CActiveScheduler::Install(iActiveScheduler); + return TestStepResult(); + } + +TVerdict CCAFStep::doTestStepPostambleL() + { + CActiveScheduler::Install(NULL); + delete iActiveScheduler; + return TestStepResult(); + } + + +// Dummy class required to create an apparc server (below) +class CT_Serv2DummyShell : public CBase, public MApaAppStarter + { + public: + TThreadId StartAppL(const CApaCommandLine&) { return *(TThreadId*)this; } + void ConstructL(); + public: + RFs iFs; + RFbsSession iFbs; + }; + +void CT_Serv2DummyShell::ConstructL() + { + User::LeaveIfError(iFs.Connect()); + User::LeaveIfError(iFbs.Connect()); + } + + +void CCAFStep::StartApparcServerL() + { + INFO_PRINTF1(_L("Starting Apparc Server")); + FbsStartup(); + TInt ret=RFbsSession::Connect(); + TEST(ret==KErrNone); + + // set up an fbs + ret = FbsStartup(); + TEST(ret==KErrNone); + // + // set up an app starter + CT_Serv2DummyShell* dummy=new(ELeave) CT_Serv2DummyShell(); + dummy->ConstructL(); + + ret=StartupApaServerProcess(); + + + TEST(((ret==KErrNone)||(ret==KErrAlreadyExists))); + // + + + INFO_PRINTF1(_L("Apparc Startup Complete")); + }