buildverification/autosmoketest/messaging/Src/TestMessSharedData.cpp
branchRCL_3
changeset 11 493058e57c8c
parent 0 9736f095102e
--- /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 <mtclbase.h>
+#include <msvids.h>
+#include <e32std.h>
+#include <imapcmds.h>
+
+_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<MMsvImapConnectionObserver*>	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;
+		}
+	}