sl@0: /*
sl@0: * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0: * All rights reserved.
sl@0: * This component and the accompanying materials are made available
sl@0: * under the terms of the License "Eclipse Public License v1.0"
sl@0: * which accompanies this distribution, and is available
sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0: *
sl@0: * Initial Contributors:
sl@0: * Nokia Corporation - initial contribution.
sl@0: *
sl@0: * Contributors:
sl@0: *
sl@0: * Description: 
sl@0: *
sl@0: */
sl@0: 
sl@0: 
sl@0: /**
sl@0:  @file
sl@0: */
sl@0: 
sl@0: #include "t_message.h"
sl@0: #include "t_input.h"
sl@0: #include "t_testactionspec.h"
sl@0: #include "t_output.h"
sl@0: 
sl@0: _LIT8(KMessageStart, "<message>");
sl@0: _LIT8(KMessageEnd, "</message>");
sl@0: 
sl@0: CTestActionMessage* CTestActionMessage::NewL(CConsoleBase& aConsole, 
sl@0: 											 Output& aOut,
sl@0: 											 const TTestActionSpec& aTestActionSpec)
sl@0: 	{
sl@0: 	CTestActionMessage* self = CTestActionMessage::NewLC(aConsole, aOut, aTestActionSpec);
sl@0: 	CleanupStack::Pop(self);
sl@0: 	return self;
sl@0: 	}
sl@0: 
sl@0: CTestActionMessage* CTestActionMessage::NewLC(CConsoleBase& aConsole, 
sl@0: 											  Output& aOut,
sl@0: 											  const TTestActionSpec& aTestActionSpec)
sl@0: 	{
sl@0: 	CTestActionMessage* self = new(ELeave) CTestActionMessage(aConsole, aOut);
sl@0: 	CleanupStack::PushL(self);
sl@0: 	self->ConstructL(aTestActionSpec);
sl@0: 	return self;
sl@0: 	}
sl@0: 
sl@0: CTestActionMessage::~CTestActionMessage()
sl@0: 	{
sl@0: 	delete iMessage;
sl@0: 	}
sl@0: 
sl@0: void CTestActionMessage::DoPerformPrerequisite(TRequestStatus& aStatus)
sl@0: 	{
sl@0: 	iActionState = EAction;
sl@0: 	TRequestStatus* status = &aStatus;
sl@0: 	User::RequestComplete(status, KErrNone);
sl@0: 	};
sl@0: 
sl@0: void CTestActionMessage::PerformAction(TRequestStatus& aStatus)
sl@0: 	{
sl@0: 	TRequestStatus* status = &aStatus;
sl@0: 	User::RequestComplete(status, KErrNone);
sl@0: 	iActionState = EPostrequisite;
sl@0: 	}
sl@0: 
sl@0: void CTestActionMessage::DoPerformPostrequisite(TRequestStatus& aStatus) 
sl@0: 	{	
sl@0: 	TRequestStatus* status = &aStatus;
sl@0: 	User::RequestComplete(status, KErrNone);
sl@0: 	iFinished = ETrue;
sl@0: 	iResult = ETrue;
sl@0: 	};
sl@0: 
sl@0: void CTestActionMessage::PerformMessage()
sl@0: 	{
sl@0: 	__ASSERT_DEBUG(EFalse, User::Panic(_L("CTestActionMessage::PerformMessage()"), 1));
sl@0: 	}
sl@0: 
sl@0: void CTestActionMessage::Reset()
sl@0: 	{
sl@0: 	__ASSERT_DEBUG(EFalse, User::Panic(_L("CTestActionMessage::Reset()"), 1));
sl@0: 	}
sl@0: 
sl@0: CTestActionMessage::CTestActionMessage(CConsoleBase& aConsole, 
sl@0: 									   Output& aOut)
sl@0: : CTestAction(aConsole, aOut) 
sl@0: 	{
sl@0: 	}
sl@0: 
sl@0: void CTestActionMessage::ConstructL(const TTestActionSpec& aTestActionSpec)
sl@0: 	{
sl@0: 	CTestAction::ConstructL(aTestActionSpec);
sl@0: 	TInt pos = 0;
sl@0: 	TInt err = KErrNone;
sl@0: 	HBufC8* aBody = HBufC8::NewLC(aTestActionSpec.iActionBody.Length());
sl@0: 	aBody->Des().Copy(aTestActionSpec.iActionBody);
sl@0: 	TPtrC8 pMessage = Input::ParseElement(*aBody, KMessageStart, KMessageEnd, pos, err);
sl@0: 	User::LeaveIfError(err);
sl@0: 	iMessage = pMessage.AllocL();
sl@0: 	CleanupStack::PopAndDestroy();
sl@0: 	}
sl@0: 
sl@0: void CTestActionMessage::DoReportAction()
sl@0: 	{
sl@0: 	iOut.writeString(*iMessage);
sl@0: 	iOut.writeNewLine();
sl@0: 	iOut.writeNewLine();
sl@0: 	}
sl@0: 
sl@0: void CTestActionMessage::DoCheckResult(TInt /*aError*/)
sl@0: 	{
sl@0: 	}