diff -r 4ca382093dae -r 493058e57c8c buildverification/autosmoketest/messaging/Src/TestMessSharedData.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/buildverification/autosmoketest/messaging/Src/TestMessSharedData.cpp Wed Sep 01 12:30:50 2010 +0100 @@ -0,0 +1,276 @@ +// 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 "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: +// This contains CTestMessSharedData +// +// + +#include "TestMessSharedData.h" + +#include +#include +#include +#include + +_LIT(KName, "name"); + +CTestMessSharedData* CTestMessSharedData::NewL() +/** + * @return - Instance of the test server + * Same code for Secure and non-secure variants + * Called inside the MainL() function to create and start the + * CTestServer derived server. + */ + { + CTestMessSharedData* sharedData = new (ELeave) CTestMessSharedData(); + CleanupStack::PushL(sharedData); + sharedData->ConstructL(); + CleanupStack::Pop(sharedData); + return sharedData; + } + +CTestMessSharedData::CTestMessSharedData() +: CBase() +, iSession(NULL) +, iMtmRegistry(NULL) +, iList(NULL) +, iAnyPostStepToDo(NULL) +, iDeleteTestStep(EFalse) + { + } + +void CTestMessSharedData::ConstructL() + { + iSession=CMsvSession::OpenSyncL(*this); + iMtmRegistry=CClientMtmRegistry::NewL(*iSession); + } + +CTestMessSharedData::~CTestMessSharedData() + { + while ( iList != NULL ) + { + CMsgEntry* entry=iList; + iList=iList->iNext; + delete entry; + } + delete iMtmRegistry; + iMtmRegistry=NULL; + delete iSession; + iSession=NULL; + } + +void CTestMessSharedData::DoProcessL() + { + if ( iAnyPostStepToDo != NULL ) + { + if (iDeleteTestStep) + { + iAnyPostStepToDo->DoCancelProcessL(); + iDeleteTestStep=EFalse; + } + else + { + iAnyPostStepToDo->DoProcessL(*iMtmRegistry); + } + iAnyPostStepToDo=NULL; + } + } + +void CTestMessSharedData::IMAP4ConnectAndSyncCompleteAfterDisconnectL(TUid aMtmId, TMsvId aMsvId, CTestStep& aStep) + { + iList=CMsgIMAP4ConnectAndSyncComplete::NewL(aMtmId, aMsvId, aStep, iList); + iAnyPostStepToDo=iList; + } + +TInt CTestMessSharedData::DeleteEntryL(CTestStep& aStep) + { + TInt ret=KErrNone; + TPtrC name; + + if ( !aStep.GetStringFromConfig(aStep.ConfigSection(), KName, name) ) + { + aStep.ERR_PRINTF1(_L("Name not found")); + aStep.SetTestStepResult(EFail); + ret=KErrArgument; + } + else + { + aStep.INFO_PRINTF2(_L("Name : %S"), &name); + + CMsgEntry* msgParent=NULL; + CMsgEntry* msgEntry=iList; + TBool found=EFalse; + + while ( (msgEntry!=NULL) && !found ) + { + if ( msgEntry->iName.Compare(name) == 0 ) + { + if ( msgParent!=NULL ) + { + msgParent->iNext=msgEntry->iNext; + } + else + { + iList=msgEntry->iNext; + } + iDeleteTestStep=ETrue; + iAnyPostStepToDo=msgEntry; + found=ETrue; + } + else + { + msgParent=msgEntry; + msgEntry=msgEntry->iNext; + } + } + + if ( !found ) + { + aStep.ERR_PRINTF1(_L("Message Entry not found")); + aStep.SetTestStepResult(EFail); + ret=KErrNotFound; + } + } + + return ret; + } + +CTestMessSharedData::CMsgEntry::CMsgEntry(CMsgEntry* aList) +: CActive(EPriorityStandard) +, iNext(aList) +, iReadyToBeDeleted(EFalse) + { + } + +void CTestMessSharedData::CMsgEntry::ConstructL(CTestStep& aStep) + { + TPtrC name; + + // Read in name tag + if ( !aStep.GetStringFromConfig(aStep.ConfigSection(), KName, name) ) + { + aStep.ERR_PRINTF1(_L("Name not found")); + aStep.SetTestStepResult(EFail); + } + else + { + aStep.INFO_PRINTF2(_L("Name : %S"), &name); + iName.Copy(name); + } + } + +CTestMessSharedData::CMsgEntry::~CMsgEntry() + { + } + +void CTestMessSharedData::CMsgEntry::DoCancel() + { + } + +void CTestMessSharedData::CMsgEntry::RunL() + { + iReadyToBeDeleted=ETrue; + } + +CTestMessSharedData::CMsgIMAP4ConnectAndSyncComplete* CTestMessSharedData::CMsgIMAP4ConnectAndSyncComplete::NewL(TUid aMtmId, TMsvId aMsvId, CTestStep& aStep, CMsgEntry* aList) + { + CMsgIMAP4ConnectAndSyncComplete* self= new (ELeave) CMsgIMAP4ConnectAndSyncComplete(aMtmId, aMsvId, aList); + CleanupStack::PushL(self); + self->ConstructL(aStep); + CleanupStack::Pop(self); + return self; + } + +CTestMessSharedData::CMsgIMAP4ConnectAndSyncComplete::CMsgIMAP4ConnectAndSyncComplete(TUid aMtmId, TMsvId aMsvId, CMsgEntry* aList) +: CMsgEntry(aList) +, iMtmId(aMtmId) +, iMsvId(aMsvId) +, iBaseMtm(NULL) +, iOperation(NULL) + { + } + +CTestMessSharedData::CMsgIMAP4ConnectAndSyncComplete::~CMsgIMAP4ConnectAndSyncComplete() + { + if ( iOperation != NULL ) + { + delete iOperation; + iOperation=NULL; + } + delete iBaseMtm; + iBaseMtm=NULL; + } + +void CTestMessSharedData::CMsgIMAP4ConnectAndSyncComplete::RunL() + { + CMsgEntry::RunL(); + delete iOperation; + iOperation=NULL; + delete iBaseMtm; + iBaseMtm=NULL; + + } + +void CTestMessSharedData::CMsgIMAP4ConnectAndSyncComplete::DoProcessL(CClientMtmRegistry& aMtmRegistry) + { + iBaseMtm=aMtmRegistry.NewMtmL(iMtmId); + CActiveScheduler::Add(this); + + iBaseMtm->SwitchCurrentEntryL(iMsvId); + CMsvEntrySelection* selection=new (ELeave) CMsvEntrySelection(); + CleanupStack::PushL(selection); + selection->Reset(); + selection->AppendL(iMsvId); + selection->AppendL(iMsvId); // remote inbox + + TPckg parameter(this); + iOperation=iBaseMtm->InvokeAsyncFunctionL(KIMAP4MTMConnectAndSyncCompleteAfterDisconnect, *selection, parameter, iStatus); + CleanupStack::PopAndDestroy(selection); + SetActive(); + } + +void CTestMessSharedData::CMsgIMAP4ConnectAndSyncComplete::DoCancelProcessL() + { + if ( iOperation != NULL ) + { + iOperation->Cancel(); + } + } + +void CTestMessSharedData::CMsgIMAP4ConnectAndSyncComplete::HandleImapConnectionEvent(TImapConnectionEvent aConnectionEvent) + { + switch (aConnectionEvent) + { + /** Connecting to server. */ + case EConnectingToServer: + break; + /** Synchronising folder list. */ + case ESynchronisingFolderList: + break; + /** Synchronising inbox. */ + case ESynchronisingInbox: + break; + /** Synchronising folders. */ + case ESynchronisingFolders: + break; + /** Synchronisation complete. */ + case ESynchronisationComplete: + break; + /** Disconnecting. */ + case EDisconnecting: + break; + /** Connection completed. */ + case EConnectionCompleted: + break; + } + }