contentmgmt/referencedrmagent/tcaf/source/ManagerStep.cpp
changeset 15 da2ae96f639b
child 53 030c4fbc13d7
child 108 ca9a0fc2f082
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/referencedrmagent/tcaf/source/ManagerStep.cpp	Mon Oct 12 10:17:04 2009 +0300
@@ -0,0 +1,1860 @@
+/*
+* 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 <test/testexecutelog.h>
+#include <apmstd.h>
+
+#include "cafserver.h"
+#include "ManagerStep.h"
+#include "manager.h"
+#include "dirstreamable.h"
+#include "virtualpathptr.h"
+#include "agent.h"
+#include "attributeset.h"
+#include "stringattributeset.h"
+#include "contentIterator.h"
+
+using namespace ContentAccess;
+
+
+
+/* 
+ * This step deletes a file using the CAF framework
+ *
+ */
+
+CCAFDeleteStep::~CCAFDeleteStep()
+	{
+	}
+
+CCAFDeleteStep::CCAFDeleteStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFDeleteStep);
+	}
+
+
+TVerdict CCAFDeleteStep::doTestStepL()
+	{
+	TPtrC fileName;
+
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to delete and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("filename"),fileName);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF3(_L("Delete File %S Expected result: %d"), &fileName, expectedResult);
+
+	__UHEAP_MARK;
+
+	TRAP(result, CManager::DeleteFileL(fileName));
+
+	if(result != KErrNone)
+		{
+		INFO_PRINTF2(_L("Delete file left: %d"), result);
+		if(result== expectedResult)
+			{
+			SetTestStepResult(EPass);
+			}
+		}
+	else if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else INFO_PRINTF2(_L("Delete file left with error: %d"), result);
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * This step copies a file using the CAF framework
+ *
+ */
+
+CCAFCopyFileStep::~CCAFCopyFileStep()
+	{
+	}
+
+CCAFCopyFileStep::CCAFCopyFileStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFCopyFileStep);
+	}
+
+
+TVerdict CCAFCopyFileStep::doTestStepL()
+	{
+	TPtrC source;
+	TPtrC destination;
+
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("source"),source);
+	GetStringFromConfig(ConfigSection(),_L("destination"),destination);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF4(_L("Copy %S to %S, Expected result: %d"), &source, &destination, expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+
+	result = manager->CopyFile(source, destination);
+	if(result == expectedResult)
+		{
+		SetTestStepResult(EPass);			
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("CopyFile(source as filename overload) returned with unexpected error: %d"), result);
+		}
+	// set up 2nd overload testing
+	RFs fs;
+	RFile file;
+
+	// read the input file and pass it to the CAF
+	fs.Connect();
+	CleanupClosePushL(fs);
+	User::LeaveIfError(fs.ShareProtected());		
+
+	result = file.Open(fs, source, EFileRead | EFileStream | EFileShareAny);
+	if (result == KErrNone)
+		{
+		CleanupClosePushL(file);
+		
+		// test the RFile overload
+		result = manager->CopyFile(file, destination);
+		
+		if ((result == expectedResult)&&(TestStepResult()==EPass))
+			{
+			SetTestStepResult(EPass);			
+			}
+		else 
+			{
+			INFO_PRINTF2(_L("CopyFile(source as RFile handle overload) returned with unexpected error: %d"), result);
+			}
+			
+		CleanupStack::PopAndDestroy(&file); 
+		
+		}
+	else if ((result == expectedResult)&&(TestStepResult()==EPass))
+		{
+		SetTestStepResult(EPass);			
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("CopyFile(source as RFile handle overload) returned with unexpected error: %d"), result);
+		}
+		
+	CleanupStack::PopAndDestroy(&fs); 
+
+	CleanupStack::PopAndDestroy(manager);
+	    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+/* 
+ * This step renames a file using the CAF framework
+ *
+ */
+
+CCAFRenameFileStep::~CCAFRenameFileStep()
+	{
+	}
+
+CCAFRenameFileStep::CCAFRenameFileStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFRenameFileStep);
+	}
+
+
+TVerdict CCAFRenameFileStep::doTestStepL()
+	{
+	TPtrC source;
+	TPtrC destination;
+
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("source"),source);
+	GetStringFromConfig(ConfigSection(),_L("destination"),destination);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF4(_L("Rename from %S to %S, Expected result: %d"), &source, &destination, expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	result = manager->RenameFile(source, destination);
+	CleanupStack::PopAndDestroy(manager);
+	
+	if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("RenameFile() returned with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * This step creates a directory using the CAF framework
+ *
+ */
+
+CCAFMkDirStep::~CCAFMkDirStep()
+	{
+	}
+
+CCAFMkDirStep::CCAFMkDirStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFMkDirStep);
+	}
+
+
+TVerdict CCAFMkDirStep::doTestStepL()
+	{
+	TPtrC path;
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("path"),path);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF3(_L("Create directory %S, Expected result: %d"), &path, expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	result = manager->MkDir(path);
+	CleanupStack::PopAndDestroy(manager);
+	
+	if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("MkDir() returned with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * This step creates several directory using the CAF framework
+ *
+ */
+
+CCAFMkDirAllStep::~CCAFMkDirAllStep()
+	{
+	}
+
+CCAFMkDirAllStep::CCAFMkDirAllStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFMkDirAllStep);
+	}
+
+
+TVerdict CCAFMkDirAllStep::doTestStepL()
+	{
+	TPtrC path;
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("path"),path);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF3(_L("Create directory %S, Expected result: %d"), &path, expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	// remove directory in case it already exists
+	manager->RmDir(path);
+	result = manager->MkDirAll(path);
+	CleanupStack::PopAndDestroy(manager);
+	
+	if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("MkDirAll() returned with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step removes a directory using the CAF framework
+ *
+ */
+
+CCAFRmDirStep::~CCAFRmDirStep()
+	{
+	}
+
+CCAFRmDirStep::CCAFRmDirStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFRmDirStep);
+	}
+
+
+TVerdict CCAFRmDirStep::doTestStepL()
+	{
+	TPtrC path;
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("path"),path);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF3(_L("Remove directory %S, Expected result: %d"), &path, expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	result = manager->RmDir(path);
+	CleanupStack::PopAndDestroy(manager);
+	
+	if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("RmDir() returned with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step lists the contents of a directory using the CAF framework
+ *
+ */
+
+CCAFGetDirStep::~CCAFGetDirStep()
+	{
+	}
+
+CCAFGetDirStep::CCAFGetDirStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFGetDirStep);
+	}
+
+
+TVerdict CCAFGetDirStep::doTestStepL()
+	{
+	TPtrC path;
+	TInt expectedResult;
+	TInt result;
+	TInt GetDirAPI = 0;
+
+	CDir *entrylist = NULL;
+	CDir *dirlist = NULL;
+	CDir *filelist = NULL;
+
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("path"),path);
+	GetIntFromConfig(ConfigSection(),_L("API"),GetDirAPI);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF3(_L("List contents of directory %S, Expected result: %d"), &path, expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	if(GetDirAPI == 1)
+		{
+		result = manager->GetDir(path,ESortByName, KEntryAttNormal, entrylist);
+		}
+	else if(GetDirAPI == 2)
+		{
+		result = manager->GetDir(path,ESortByName, KEntryAttNormal, entrylist, dirlist);
+		}
+	else
+		{
+		result = manager->GetDir(path,TUidType(), ESortByName, filelist);
+		}
+	CleanupStack::PopAndDestroy(manager);
+
+	if(entrylist)
+		{
+		INFO_PRINTF2(_L("%d items in EntryList:"), entrylist->Count());	
+		DisplayList(*entrylist);
+		delete entrylist;
+		entrylist = NULL;
+		}
+
+	if(dirlist)
+		{
+		INFO_PRINTF2(_L("%d items in DirList:"), dirlist->Count());	
+		DisplayList(*dirlist);
+		delete dirlist;
+		dirlist = NULL;
+		}
+	
+	if(filelist)
+		{
+		INFO_PRINTF2(_L("%d items in FileList:"), filelist->Count());	
+		DisplayList(*filelist);
+		delete filelist;
+		filelist = NULL;
+		}
+	
+	if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("GetDir() returned with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+void CCAFGetDirStep::DisplayList(CDir& aDir)
+	{
+	TInt i = 0;
+	for(i = 0; i < aDir.Count(); i++)
+		{
+		INFO_PRINTF2(_L("			%S"), &aDir[i].iName );	
+		}
+	}
+	
+	
+/* 
+ * This step tests the notification functions
+ *
+ */
+
+CCAFManagerNotifyStep::~CCAFManagerNotifyStep()
+	{
+	}
+
+CCAFManagerNotifyStep::CCAFManagerNotifyStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerNotifyStep);
+	}
+
+
+TVerdict CCAFManagerNotifyStep::doTestStepL()
+	{
+	TPtrC uri;
+	TInt result;
+	TRequestStatus status = KRequestPending;
+	
+	TInt Status1;
+	TInt Cancel1;
+	TInt Cancel2;
+	
+	
+	SetTestStepResult(EPass);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("path"),uri);
+	GetIntFromConfig(ConfigSection(),_L("Status1"),Status1);
+	GetIntFromConfig(ConfigSection(),_L("Cancel1"),Cancel1);
+	GetIntFromConfig(ConfigSection(),_L("Cancel2"),Cancel2);
+
+	INFO_PRINTF2(_L("Performing notification tests on %S"), &uri);
+
+	__UHEAP_MARK;
+	CManager *manager = CManager::NewLC();
+	// Wait for rights 
+	manager->NotifyStatusChange(uri, ERightsAvailable, status);
+	User::WaitForRequest(status);
+	if(status.Int() != Status1)
+		{
+		INFO_PRINTF3(_L("Status expected: %d returned unexpected status %d"), Status1, status.Int());
+		SetTestStepResult(EFail);
+		}
+	result = manager->CancelNotifyStatusChange(uri, status);
+	if(result != Cancel1)
+		{
+		INFO_PRINTF3(_L("Cancel request expected return value: %d returned unexpected value %d"), Cancel1, result);
+		SetTestStepResult(EFail);
+		}
+	
+	// Wait for rights expired but cancel before they arrive
+	manager->NotifyStatusChange(uri, ERightsExpired, status);
+	result = manager->CancelNotifyStatusChange(uri, status);
+	if(result != Cancel2)
+		{
+		INFO_PRINTF3(_L("Cancel2 request expected return value: %d returned unexpected value %d"), Cancel2, result);
+		SetTestStepResult(EFail);
+		}
+	
+	CleanupStack::PopAndDestroy(manager);
+	
+   		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step sets a property in the agents
+ *
+ */
+
+CCAFManagerSetPropertyStep::~CCAFManagerSetPropertyStep()
+	{
+	}
+
+CCAFManagerSetPropertyStep::CCAFManagerSetPropertyStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerSetPropertyStep);
+	}
+
+
+TVerdict CCAFManagerSetPropertyStep::doTestStepL()
+	{
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF2(_L("Set Property expected result: %d"), expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	result = manager->SetProperty(EAgentPropertyBufferSize, 100);
+	CleanupStack::PopAndDestroy(manager);
+	
+	// dummy test Agent expects KErrNotSupported
+	if(result == expectedResult || result == KErrNotSupported)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("SetProperty() returned with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * This step asks the agent to display information about a file
+ *
+ */
+
+CCAFManagerDisplayInfoStep::~CCAFManagerDisplayInfoStep()
+	{
+	}
+
+CCAFManagerDisplayInfoStep::CCAFManagerDisplayInfoStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerDisplayInfoStep);
+	}
+
+
+TVerdict CCAFManagerDisplayInfoStep::doTestStepL()
+	{
+	TPtrC uri;
+	TInt expectedResult;
+	TInt result;
+
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF3(_L("DisplayInfo for %S expected result: %d"), &uri, expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	TRAP(result, manager->DisplayInfoL(EFileProperties, TVirtualPathPtr(uri)));
+	CleanupStack::PopAndDestroy(manager);
+	
+	if(result == expectedResult)
+		{	
+		SetTestStepResult(EPass);
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("DisplayInfoL() left with unexpected error: %d"), result);
+		}
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step asks CAF for a list of agents
+ *
+ */
+
+CCAFManagerListAgentsStep::~CCAFManagerListAgentsStep()
+	{
+	}
+
+CCAFManagerListAgentsStep::CCAFManagerListAgentsStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerListAgentsStep);
+	}
+
+
+TVerdict CCAFManagerListAgentsStep::doTestStepL()
+	{
+	TPtrC uri;
+	TInt expectedResult;
+	TInt expectedNumber;
+	TInt result;
+
+	RArray <TAgent> agents;
+	
+	SetTestStepResult(EFail);
+
+	// Find the file to copy and the expected return code from the INI file
+	GetIntFromConfig(ConfigSection(),_L("count"),expectedNumber);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	INFO_PRINTF2(_L("List agents expected result: %d"), expectedResult);
+
+	__UHEAP_MARK;
+
+	CManager *manager = CManager::NewLC();
+	TRAP(result, manager->ListAgentsL(agents));
+	CleanupStack::PopAndDestroy(manager);
+	
+	TInt i = 0;
+	for (i = 0; i < agents.Count(); i++)
+		{
+		TPtrC agentName = agents[i].Name();
+		INFO_PRINTF2(_L("			%S"), &agentName);
+		}
+		
+	INFO_PRINTF2(_L("List agents expected result: %d"), expectedResult);
+
+	if(result == expectedResult)
+		{	
+		if(expectedNumber == agents.Count())
+			{
+			SetTestStepResult(EPass);
+			}
+		else
+			{
+			INFO_PRINTF2(_L("Expected number of agents: %d"), expectedNumber);
+			}
+		}
+	else 
+		{
+		INFO_PRINTF2(_L("ListAgents left with unexpected error: %d"), result);
+		}
+		
+	agents.Close();
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step attempts to perform an agent specific command
+ *
+ */
+
+CCAFManagerAgentSpecificStep::~CCAFManagerAgentSpecificStep()
+	{
+	}
+
+CCAFManagerAgentSpecificStep::CCAFManagerAgentSpecificStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerAgentSpecificStep);
+	}
+
+
+TVerdict CCAFManagerAgentSpecificStep::doTestStepL()
+	{
+	TPtrC input16;
+	TPtrC output16;
+	TInt expectedResult;
+	TInt command;
+	TInt result;
+	TBuf8 <100> actualOutput;
+	TBuf8 <100> output;
+	TBuf8 <100> input;
+	TInt index = 0;
+
+	RArray <TAgent> agents;
+	_LIT(KTestAgentName, "Reference Test Agent");
+	
+	SetTestStepResult(EPass);
+
+	GetIntFromConfig(ConfigSection(),_L("command"),command);
+	GetStringFromConfig(ConfigSection(),_L("input"),input16);
+	GetStringFromConfig(ConfigSection(),_L("output"),output16);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	input.Copy(input16);
+	output.Copy(output16);
+
+	__UHEAP_MARK;
+	CManager *manager = CManager::NewLC();
+	TRAP(result, manager->ListAgentsL(agents));
+
+	INFO_PRINTF1(_L("Running synchronous Agent specific command"));
+	actualOutput.SetLength(0);
+	if(result == KErrNone && agents.Count() > 0)
+		{
+		for(index = 0; index < agents.Count(); index++)
+			{
+			if(agents[index].Name() == KTestAgentName())
+				{
+				break;
+				}
+			}
+		result = manager->AgentSpecificCommand(agents[index],command, input, actualOutput);
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		}
+	if(result != expectedResult)
+		{	
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("Async Expected result: %d, actual result: %d"), expectedResult, result);
+		}
+	else if(actualOutput != output)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("Async Expected output: %S, actual output: %S"), &output, &actualOutput);
+		}
+
+	INFO_PRINTF1(_L("Running asynchronous Agent specific command"));
+	TRequestStatus status;
+	actualOutput.SetLength(0);
+	if((result == KErrNone || result == expectedResult) && agents.Count() > 0)
+		{
+		manager->AgentSpecificCommand(agents[index], command, input, actualOutput, status);
+		User::WaitForRequest(status);
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		}
+	if(status.Int() != expectedResult)
+		{	
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("Async Expected result: %d, actual result: %d"), expectedResult, status.Int());
+		}
+	else if(actualOutput != output)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("Async Expected output: %S, actual output: %S"), &output, &actualOutput);
+		}
+	
+	CleanupStack::PopAndDestroy(manager);		
+	agents.Close();
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * This step attempts to display configuration information
+ *
+ */
+
+CCAFManagerDisplayConfigStep::~CCAFManagerDisplayConfigStep()
+	{
+	}
+
+CCAFManagerDisplayConfigStep::CCAFManagerDisplayConfigStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerDisplayConfigStep);
+	}
+
+TVerdict CCAFManagerDisplayConfigStep::doTestStepL()
+	{
+	TInt expectedResult;
+	TInt result = KErrNone;
+
+	RArray <TAgent> agents;
+	CManager *manager;
+
+	SetTestStepResult(EPass);
+
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	__UHEAP_MARK;
+	manager = CManager::NewL();
+	CleanupStack::PushL(manager);
+	TRAP(result, manager->ListAgentsL(agents));
+		
+	if(result == KErrNone && agents.Count() > 0)
+		{
+		TRAP(result, manager->DisplayManagementInfoL(agents[0]));
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		}
+	if(result != expectedResult && result != KErrNotSupported) // dummy test agent expects -5
+		{	
+		SetTestStepResult(EFail);
+		INFO_PRINTF3(_L("Expected result: %d, actual result: %d"), expectedResult, result);
+		}
+
+	CleanupStack::PopAndDestroy(manager);		
+	agents.Close();
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Manager attribute step
+ *
+ */
+
+CCAFManagerAttributeStep::~CCAFManagerAttributeStep()
+	{
+	}
+
+CCAFManagerAttributeStep::CCAFManagerAttributeStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerAttributeStep);
+	}
+
+TVerdict CCAFManagerAttributeStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT    
+
+	TInt attribute;
+	TInt value = KErrNone;
+	TInt expectedValue;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	CManager *manager;
+
+	SetTestStepResult(EPass);
+
+	GetIntFromConfig(ConfigSection(),_L("attribute"),attribute);
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetIntFromConfig(ConfigSection(),_L("value"),expectedValue);
+
+	__UHEAP_MARK;
+	manager = CManager::NewL();
+	if(manager)
+		{
+		CleanupStack::PushL(manager);
+		User::LeaveIfError(manager->GetAttribute(attribute, value, TVirtualPathPtr(uri, uniqueId)));
+		if(expectedValue!= value)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF3(_L("CManager::GetAttribute() Expected value: %d, actual value: %d"), expectedValue, value);
+			}
+		CleanupStack::PopAndDestroy(manager);		
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CManager construction failed"));
+		}
+	
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Manager attributeset step
+ *
+ */
+
+CCAFManagerAttributeSetStep::~CCAFManagerAttributeSetStep()
+	{
+	}
+
+CCAFManagerAttributeSetStep::CCAFManagerAttributeSetStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerAttributeSetStep);
+	}
+
+TVerdict CCAFManagerAttributeSetStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT    
+
+	TInt value1;
+	TInt value2;
+	TInt expectedValue1;
+	TInt expectedValue2;
+	TInt attribute1;
+	TInt attribute2;
+	TInt result = KErrNone;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	CManager *manager;
+
+	SetTestStepResult(EPass);
+
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);
+	GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);
+	GetIntFromConfig(ConfigSection(),_L("value1"),expectedValue1);
+	GetIntFromConfig(ConfigSection(),_L("value2"),expectedValue2);
+
+	__UHEAP_MARK;
+	manager = CManager::NewL();
+	if(manager)
+		{
+		CleanupStack::PushL(manager);
+		RAttributeSet attributeSet;
+		CleanupClosePushL(attributeSet);
+		attributeSet.AddL(attribute1);
+		attributeSet.AddL(attribute2);
+		result = manager->GetAttributeSet(attributeSet, TVirtualPathPtr(uri, uniqueId));
+		if(result != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF1(_L("CManager::GetAttribute() failed"));
+			}
+		User::LeaveIfError(attributeSet.GetValue(attribute1, value1));
+		User::LeaveIfError(attributeSet.GetValue(attribute2, value2));
+		if(expectedValue1 != value1 || expectedValue2 != value2 || attributeSet.Count() != 2)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF1(_L("CManager::GetAttributeSet() values don't match expected values"));
+			}
+		CleanupStack::PopAndDestroy(&attributeSet);		
+		CleanupStack::PopAndDestroy(manager);		
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CManager construction failed"));
+		}
+	
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * Manager string attribute step
+ *
+ */
+
+CCAFManagerStringAttributeStep::~CCAFManagerStringAttributeStep()
+	{
+	}
+
+CCAFManagerStringAttributeStep::CCAFManagerStringAttributeStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerStringAttributeStep);
+	}
+
+TVerdict CCAFManagerStringAttributeStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT        
+     
+	TInt expectedResult;
+	TInt attribute;
+	TPtrC expectedValue;
+	TBuf <200> value;
+	TInt result = KErrNone;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	CManager *manager;
+
+	SetTestStepResult(EPass);
+
+	GetIntFromConfig(ConfigSection(),_L("attribute"),attribute);
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetStringFromConfig(ConfigSection(),_L("value"),expectedValue);
+	GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);
+
+	__UHEAP_MARK;
+	manager = CManager::NewL();
+	if(manager)
+		{
+		CleanupStack::PushL(manager);
+		result = manager->GetStringAttribute(attribute, value, TVirtualPathPtr(uri, uniqueId));
+		if(result != expectedResult)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF3(_L("CManager::GetStringAttribute() Expected result: %d, actual result: %d"), expectedResult, result);
+			}
+		if(value != expectedValue)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF3(_L("CManager::GetStringAttribute() Expected value: %S, actual result: %S"), &expectedValue, &value);
+			}
+
+		CleanupStack::PopAndDestroy(manager);		
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CManager construction failed"));
+		}
+	
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Manager StringAttributeSet step
+ *
+ */
+
+CCAFManagerStringAttributeSetStep::~CCAFManagerStringAttributeSetStep()
+	{
+	}
+
+CCAFManagerStringAttributeSetStep::CCAFManagerStringAttributeSetStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerStringAttributeSetStep);
+	}
+
+TVerdict CCAFManagerStringAttributeSetStep::doTestStepL()
+	{
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+    TBool wmdrmFlag = EFalse;     
+    GetBoolFromConfig(ConfigSection(),_L("wmdrmEnabled"), wmdrmFlag);     
+         
+    if(wmdrmFlag)     
+        {     
+        TVerdict verdict = doWmdrmTestStepL();     
+        return verdict;     
+        }     
+#endif  //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT     
+     
+	TPtrC expectedValue1;
+	TPtrC expectedValue2;
+	TBuf <200> value1;
+	TBuf <200> value2;
+	TInt result1;
+	TInt result2;
+	TInt attribute1;
+	TInt attribute2;
+	TInt result = KErrNone;
+	TPtrC uri;
+	TPtrC uniqueId;
+
+	CManager *manager;
+
+	SetTestStepResult(EPass);
+
+	GetStringFromConfig(ConfigSection(),_L("uri"),uri);
+	GetStringFromConfig(ConfigSection(),_L("uniqueid"),uniqueId);
+	GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);
+	GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);
+	GetStringFromConfig(ConfigSection(),_L("value1"),expectedValue1);
+	GetStringFromConfig(ConfigSection(),_L("value2"),expectedValue2);
+	GetIntFromConfig(ConfigSection(),_L("result1"),result1);
+	GetIntFromConfig(ConfigSection(),_L("result2"),result2);
+
+
+	__UHEAP_MARK;
+	manager = CManager::NewL();
+	if(manager)
+		{
+		CleanupStack::PushL(manager);
+		RStringAttributeSet attributeSet;
+		CleanupClosePushL(attributeSet);
+		attributeSet.AddL(attribute1);
+		attributeSet.AddL(attribute2);
+		result = manager->GetStringAttributeSet(attributeSet, TVirtualPathPtr(uri, uniqueId));
+		if(result != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF1(_L("CManager::GetAttribute() failed"));
+			}
+	if(result1 != attributeSet.GetValue(attribute1, value1))
+		{
+		INFO_PRINTF1(_L("RStringAttributeSet::GetValue failed"));
+		}
+	if(result2 != attributeSet.GetValue(attribute2, value2))
+		{
+		INFO_PRINTF1(_L("RStringAttributeSet::GetValue failed"));
+		}
+	if(value1 != expectedValue1 || value2 != expectedValue2 || attributeSet.Count() != 2)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF1(_L("CManager::GetAttributeSet() values don't match expected values"));
+			}
+		CleanupStack::PopAndDestroy(&attributeSet);		
+		CleanupStack::PopAndDestroy(manager);		
+		}
+	else
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF1(_L("CManager construction failed"));
+		}
+	
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+
+
+CIteratorTestStateMachine::CIteratorTestStateMachine(CCAFContentIteratorStep *aParent) : CActive(EPriorityStandard) 
+	{
+	iParent = aParent;
+	}
+		
+CIteratorTestStateMachine::~CIteratorTestStateMachine()
+	{
+	delete iter;	
+	delete iPath;
+	delete iMimeType;
+	}
+
+void CIteratorTestStateMachine::DoCancel()
+	{
+	// Not used
+	CActiveScheduler::Stop();
+	}
+
+
+void CIteratorTestStateMachine::RunTestL(const TDesC& aPath, TBool aRecursive, const TDesC8& aMimeType)
+		{
+		iPath = aPath.AllocL();
+		iMimeType = aMimeType.AllocL();
+		iRecursive = aRecursive;
+			
+		// This function will only return once all files have been found
+		// and the RunL() method calls CActiveScheduler::Stop()
+		CActiveScheduler::Add(this);
+		iStatus = KRequestPending;
+		SetActive();
+		TRequestStatus *ptr = &iStatus;
+		User::RequestComplete(ptr, KErrNone);
+		CActiveScheduler::Start();		
+		}
+		
+void CIteratorTestStateMachine::RunL()
+	{
+	TBuf <KMaxDataTypeLength> mime16;
+	TVirtualPathPtr location(KNullDesC(), KNullDesC());
+	
+	if(iStatus.Int() != KErrNone)
+		{
+		delete iter;
+		iter = NULL;
+		CActiveScheduler::Stop();
+		}
+	else
+		{
+		switch(iState)
+			{
+		case 0: // create iterator
+			iter = CContentIterator::NewL(*iPath, iRecursive, *iMimeType);
+			iStatus = KRequestPending;
+			iter->Next(iStatus);
+			SetActive();
+			iState = 1;
+			break;
+			
+		case 1:   // get result of Next request
+			location = iter->VirtualPath();
+			mime16.Copy(iter->MimeType());
+			iParent->PrintResult(location.URI(), location.UniqueId(), mime16);
+			iStatus = KRequestPending;
+			iter->Next(iStatus);
+			SetActive();
+			break;
+		default:
+			CActiveScheduler::Stop();
+			break;
+			};
+		}
+	}
+
+/* 
+ * Content Iterator Step
+ *
+ */
+
+CCAFContentIteratorStep::~CCAFContentIteratorStep()
+	{
+	}
+
+CCAFContentIteratorStep::CCAFContentIteratorStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFContentIteratorStep);
+	}
+
+TVerdict CCAFContentIteratorStep::doTestStepL()
+	{
+	TPtrC path;
+	TPtrC mimeType;
+	TBuf8 <KMaxDataTypeLength> mimeType8;
+		
+	SetTestStepResult(EPass);
+
+	GetStringFromConfig(ConfigSection(),_L("path"),path);
+	GetStringFromConfig(ConfigSection(),_L("mimetype"),mimeType);
+
+	mimeType8.Copy(mimeType);
+	
+	__UHEAP_MARK;
+	
+	CIteratorTestStateMachine *t = new CIteratorTestStateMachine(this);
+	
+	t->RunTestL(path, ETrue, mimeType8);
+	
+	delete t;	
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+void CCAFContentIteratorStep::PrintResult(const TDesC& aFileName, const TDesC& aUniqueId, const TDesC& aMimeType)
+	{
+	INFO_PRINTF4(_L("File: %S, UniqueId: %S, MimeType: %S"), &aFileName, &aUniqueId, &aMimeType);
+	}
+
+
+/* 
+ * This step asks the agent to display information about a file using the file handle
+ *
+ */
+CCAFManagerDisplayInfoByFileHandleStep::~CCAFManagerDisplayInfoByFileHandleStep()
+	{
+	}
+
+CCAFManagerDisplayInfoByFileHandleStep::CCAFManagerDisplayInfoByFileHandleStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerDisplayInfoByFileHandleStep);
+	}
+
+
+TVerdict CCAFManagerDisplayInfoByFileHandleStep::doTestStepL()
+	{
+	TInt result;
+	
+	//initialisation for testing purposes such as  iUri, iFs, iFile, iExpectedResult and iUniqueId. 
+	InitialiseFileHandleParametersL();
+
+	SetTestStepResult(EFail);
+
+	__UHEAP_MARK;
+	CManager *manager = CManager::NewLC();
+
+	TRAP(result, manager->DisplayInfoL(EFileProperties, iFile, iUniqueId));	
+	if(result == iExpectedResult)
+		{
+		SetTestStepResult(EPass);
+		INFO_PRINTF1(_L("CManager::DisplayInfoL()(RFile handle overload) PASSED"));
+		}
+	else
+		{
+		INFO_PRINTF1(_L("CManager::DisplayInfoL()(RFile handle overload) returned unexpected error"));
+		INFO_PRINTF3(_L("CManager::DisplayInfoL()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result);	
+		}
+	
+	//cleanup manager instance
+	CleanupStack::PopAndDestroy(manager);	
+	//cleanup iFs and iFile instances by closing the handles.
+	CleanupStack::PopAndDestroy(2, &iFs);	
+
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Manager attribute step using file handle.
+ *
+ */
+
+CCAFManagerAttributeByFileHandleStep::~CCAFManagerAttributeByFileHandleStep()
+	{
+	}
+
+CCAFManagerAttributeByFileHandleStep::CCAFManagerAttributeByFileHandleStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerAttributeByFileHandleStep);
+	}
+
+TVerdict CCAFManagerAttributeByFileHandleStep::doTestStepL()
+	{
+	TInt attribute;
+	TInt value = KErrNone;
+	TInt result= KErrNone;
+	TInt expectedValue;
+
+	//initialisation for testing purposes such as  iUri, iFs, iFile, iExpectedResult and iUniqueId. 
+	InitialiseFileHandleParametersL();
+	GetIntFromConfig(ConfigSection(),_L("attribute"),attribute);
+	GetIntFromConfig(ConfigSection(),_L("value"),expectedValue);
+	
+	SetTestStepResult(EFail);
+
+	__UHEAP_MARK;
+	CManager *manager = CManager::NewLC();
+
+	result = manager->GetAttribute(attribute, value, iFile, iUniqueId);
+	//expectedResult has priority over the values collected.
+	if(result == iExpectedResult)
+		{
+		if(value == expectedValue)
+			{
+			SetTestStepResult(EPass);
+			INFO_PRINTF1(_L("CManager::GetAttribute()(RFile handle overload) PASSED"));
+			}
+		else
+			{
+			INFO_PRINTF1(_L("CManager::GetAttribute()(RFile handle overload) values don't match expected values"));
+			INFO_PRINTF3(_L("CManager::GetAttribute()(RFile handle overload) Expected value: %d, actual value: %d"), expectedValue, value);	
+			}	
+		}
+	else
+		{
+		INFO_PRINTF1(_L("CManager::GetAttribute()(RFile handle overload) returned unexpected error"));
+		INFO_PRINTF3(_L("CManager::GetAttribute()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result);	
+		}
+	
+	//cleanup manager instance
+	CleanupStack::PopAndDestroy(manager);		
+	//cleanup iFs and iFile instances by closing the handles.
+	CleanupStack::PopAndDestroy(2, &iFs);
+   		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Manager attributeset step by file handle.
+ *
+ */
+
+CCAFManagerAttributeSetByFileHandleStep::~CCAFManagerAttributeSetByFileHandleStep()
+	{
+	}
+
+CCAFManagerAttributeSetByFileHandleStep::CCAFManagerAttributeSetByFileHandleStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerAttributeSetByFileHandleStep);
+	}
+
+TVerdict CCAFManagerAttributeSetByFileHandleStep::doTestStepL()
+	{
+	TInt value1;
+	TInt value2;
+	TInt expectedValue1;
+	TInt expectedValue2;
+	TInt attribute1;
+	TInt attribute2;
+	TInt result = KErrNone;
+
+	//initialisation for testing purposes such as  iUri, iFs, iFile, iExpectedResult and iUniqueId. 
+	InitialiseFileHandleParametersL();
+	GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);
+	GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);
+	GetIntFromConfig(ConfigSection(),_L("value1"),expectedValue1);
+	GetIntFromConfig(ConfigSection(),_L("value2"),expectedValue2);
+
+	SetTestStepResult(EFail);
+
+	__UHEAP_MARK;
+	CManager *manager = CManager::NewLC();
+	
+	RAttributeSet attributeSet;
+	CleanupClosePushL(attributeSet);
+	attributeSet.AddL(attribute1);
+	attributeSet.AddL(attribute2);
+
+	result = manager->GetAttributeSet(attributeSet, iFile, iUniqueId);
+	//expectedResult has priority over the values collected.		
+	if(result == iExpectedResult)
+		{
+		User::LeaveIfError(attributeSet.GetValue(attribute1, value1));
+		User::LeaveIfError(attributeSet.GetValue(attribute2, value2));
+		if(value1 == expectedValue1 && value2 == expectedValue2)
+			{
+			SetTestStepResult(EPass);						
+			INFO_PRINTF1(_L("CManager::GetAttributeSet()(RFile handle overload) PASSED"));	
+			}
+		else
+			{
+			INFO_PRINTF1(_L("CManager::GetAttributeSet()(RFile handle overload) values don't match expected values"));
+			INFO_PRINTF3(_L("CManager::GetAttributeSet()(RFile handle overload) Expected value: %d, actual value: %d"), expectedValue1, value1);	
+			INFO_PRINTF3(_L("CManager::GetAttributeSet()(RFile handle overload) Expected value: %d, actual value: %d"), expectedValue2, value2);	
+			}	
+		}
+	else
+		{
+		INFO_PRINTF1(_L("CManager::GetAttributeSet()(RFile handle overload) returned unexpected error"));
+		INFO_PRINTF3(_L("CManager::GetAttributeSet()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result);	
+		}
+
+	//cleanup manager and attributeSet instances		
+	CleanupStack::PopAndDestroy(2, manager);	
+	//cleanup iFs and iFile instances by closing the handles.
+	CleanupStack::PopAndDestroy(2, &iFs);
+	    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+
+/* 
+ * Manager string attribute step by file handle
+ *
+ */
+
+CCAFManagerStringAttributeByFileHandleStep::~CCAFManagerStringAttributeByFileHandleStep()
+	{
+	}
+
+CCAFManagerStringAttributeByFileHandleStep::CCAFManagerStringAttributeByFileHandleStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerStringAttributeByFileHandleStep);
+	}
+
+TVerdict CCAFManagerStringAttributeByFileHandleStep::doTestStepL()
+	{
+	TInt attribute;
+	TInt result = KErrNone;
+	TPtrC expectedValue;
+	TBuf <200> value;
+	
+	//initialisation for testing purposes such as  iUri, iFs, iFile, iExpectedResult and iUniqueId. 
+	InitialiseFileHandleParametersL();
+	GetIntFromConfig(ConfigSection(),_L("attribute"),attribute);
+	GetStringFromConfig(ConfigSection(),_L("value"),expectedValue);
+	
+	SetTestStepResult(EFail);	
+	
+	__UHEAP_MARK;
+	CManager* manager = CManager::NewLC();
+
+	result = manager->GetStringAttribute(attribute, value, iFile, iUniqueId);
+	//expectedResult has priority over the values collected.		
+	if(result == iExpectedResult)
+		{
+		if (value == expectedValue) 
+			{
+			SetTestStepResult(EPass);
+			INFO_PRINTF1(_L("CManager::GetStringAttribute()(RFile handle overload) PASSED"));
+			}
+		else
+			{
+			INFO_PRINTF1(_L("CManager::GetStringAttribute()(RFile handle overload) values don't match expected values"));
+			INFO_PRINTF3(_L("CManager::GetStringAttribute()(RFile handle overload) Expected value: %S, actual value: %S"), &expectedValue, &value);	
+			}	
+		}
+	else
+		{
+		INFO_PRINTF1(_L("CManager::GetStringAttribute()(RFile handle overload) returned unexpected error"));
+		INFO_PRINTF3(_L("CManager::GetStringAttribute()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result);	
+		}
+
+	//cleanup manager instance		
+	CleanupStack::PopAndDestroy(manager);	
+	//cleanup iFs and iFile instances by closing the handles.
+	CleanupStack::PopAndDestroy(2, &iFs);	
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+/* 
+ * Manager StringAttributeSet step by file handle.
+ *
+ */
+
+CCAFManagerStringAttributeSetByFileHandleStep::~CCAFManagerStringAttributeSetByFileHandleStep()
+	{
+	}
+
+CCAFManagerStringAttributeSetByFileHandleStep::CCAFManagerStringAttributeSetByFileHandleStep(CCAFServer& aParent) : iParent(aParent)
+	{
+	SetTestStepName(KCAFManagerStringAttributeSetByFileHandleStep);
+	}
+
+TVerdict CCAFManagerStringAttributeSetByFileHandleStep::doTestStepL()
+	{
+	TInt attribute1;
+	TInt attribute2;
+	TInt result = KErrNone;
+	TPtrC expectedValue1;
+	TPtrC expectedValue2;
+	TBuf <200> value1;
+	TBuf <200> value2;
+	
+	//initialisation for testing purposes such as  iUri, iFs, iFile, iExpectedResult and iUniqueId. 
+	InitialiseFileHandleParametersL();
+	GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);
+	GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);
+	GetStringFromConfig(ConfigSection(),_L("value1"),expectedValue1);
+	GetStringFromConfig(ConfigSection(),_L("value2"),expectedValue2);
+	
+	SetTestStepResult(EFail);
+
+	__UHEAP_MARK;
+	CManager* manager = CManager::NewLC();
+
+	RStringAttributeSet attributeSet;
+	CleanupClosePushL(attributeSet);
+	attributeSet.AddL(attribute1);
+	attributeSet.AddL(attribute2);
+
+	result = manager->GetStringAttributeSet(attributeSet, iFile, iUniqueId);
+	//expectedResult has priority over the values collected.	
+	if(result == iExpectedResult)
+		{
+		User::LeaveIfError(attributeSet.GetValue(attribute1, value1));
+		User::LeaveIfError(attributeSet.GetValue(attribute2, value2));
+		if (value1 == expectedValue1 && value2 == expectedValue2) 
+			{
+			SetTestStepResult(EPass);						
+			INFO_PRINTF1(_L("CManager::GetStringAttributeSet()(RFile handle overload) PASSED"));
+			}
+		else
+			{
+			INFO_PRINTF1(_L("CManager::GetStringAttributeSet()(RFile handle overload) values don't match expected values"));
+			INFO_PRINTF3(_L("CManager::GetStringAttributeSet()(RFile handle overload) Expected value: %S, actual value: %S"), &expectedValue1, &value1);	
+			INFO_PRINTF3(_L("CManager::GetStringAttributeSet()(RFile handle overload) Expected value: %S, actual value: %S"), &expectedValue2, &value2);				
+			}	
+		}
+	else
+		{
+		INFO_PRINTF1(_L("CManager::GetStringAttributeSet()(RFile handle overload) returned unexpected error"));
+		INFO_PRINTF3(_L("CManager::GetStringAttributeSet()(RFile handle overload) Expected result: %d, actual result: %d"), iExpectedResult, result);	
+		}
+
+	//cleanup manager and attributeSet instances		
+	CleanupStack::PopAndDestroy(2, manager);
+	//cleanup iFs and iFile instances by closing the handles.
+	CleanupStack::PopAndDestroy(2, &iFs);	
+    		
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
+      
+// The following methods test the various manager attribute APIs for WMDRM content.     
+      
+TVerdict CCAFManagerAttributeStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TInt attribVal;     
+    GetIntFromConfig(ConfigSection(),_L("attribute"), attribVal);     
+         
+    TInt expectedValue;     
+    GetIntFromConfig(ConfigSection(),_L("value"), expectedValue);     
+      
+    __UHEAP_MARK;     
+         
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+         
+    TInt value;     
+    CManager *manager = CManager::NewLC();     
+         
+    User::LeaveIfError(manager->GetAttribute(*headerData, attribVal, value));     
+    if(expectedValue == value)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+    else     
+        {     
+        INFO_PRINTF3(_L("CManager::GetAttribute() Expected value: %d, actual value: %d"), expectedValue, value);     
+        }     
+             
+    CleanupStack::PopAndDestroy(2, headerData);          
+                 
+    __UHEAP_MARKEND;     
+    return TestStepResult();     
+    }     
+         
+      
+TVerdict CCAFManagerAttributeSetStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TInt attribute1;     
+    GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);     
+         
+    TInt attribute2;     
+    GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);     
+         
+    TInt expectedValue1;     
+    GetIntFromConfig(ConfigSection(),_L("value1"),expectedValue1);     
+         
+    TInt expectedValue2;     
+    GetIntFromConfig(ConfigSection(),_L("value2"),expectedValue2);     
+      
+__UHEAP_MARK;     
+         
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+                 
+    RAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+    attributeSet.AddL(attribute1);     
+    attributeSet.AddL(attribute2);     
+             
+    CManager *manager = CManager::NewLC();       
+    TInt result = manager->GetAttributeSet(*headerData, attributeSet);     
+    if(result == KErrNone)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+    else     
+        {     
+        INFO_PRINTF1(_L("CManager::GetAttributeSet() failed"));     
+        }     
+             
+    TInt value1;         
+    User::LeaveIfError(attributeSet.GetValue(attribute1, value1));     
+             
+    TInt value2;     
+    User::LeaveIfError(attributeSet.GetValue(attribute2, value2));     
+             
+    if(expectedValue1 == value1 && expectedValue2 == value2 && attributeSet.Count() == 2)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+    else     
+        {     
+        INFO_PRINTF1(_L("CManager::GetAttributeSet() values don't match expected values"));     
+        }     
+             
+    CleanupStack::PopAndDestroy(3, headerData);          
+      
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+      
+      
+TVerdict CCAFManagerStringAttributeStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+         
+    TInt attribVal;     
+    GetIntFromConfig(ConfigSection(),_L("attribute"),attribVal);     
+         
+    TPtrC expectedValue;     
+    GetStringFromConfig(ConfigSection(),_L("value"),expectedValue);     
+         
+    TInt expectedResult;     
+    GetIntFromConfig(ConfigSection(),_L("result"),expectedResult);     
+      
+__UHEAP_MARK;     
+         
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+         
+    CManager* manager = CManager::NewLC();           
+    TBuf <200> value;     
+    TInt result = manager->GetStringAttribute(*headerData, attribVal, value);     
+    if(result == expectedResult && value == expectedValue)     
+        {     
+        SetTestStepResult(EPass);     
+        }     
+    else     
+        {     
+        INFO_PRINTF3(_L("CManager::GetStringAttribute() Expected result: %d, actual result: %d"), expectedResult, result);     
+        INFO_PRINTF3(_L("CManager::GetStringAttribute() Expected value: %S, actual value: %S"), &expectedValue, &value);     
+        }     
+             
+    CleanupStack::PopAndDestroy(2, headerData);          
+         
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+      
+      
+TVerdict CCAFManagerStringAttributeSetStep::doWmdrmTestStepL()     
+    {     
+    SetTestStepResult(EFail);     
+      
+    TInt attribute1;         
+    GetIntFromConfig(ConfigSection(),_L("attribute1"),attribute1);     
+         
+    TInt attribute2;     
+    GetIntFromConfig(ConfigSection(),_L("attribute2"),attribute2);     
+         
+    TPtrC expectedValue1;     
+    GetStringFromConfig(ConfigSection(),_L("value1"),expectedValue1);     
+         
+    TPtrC expectedValue2;     
+    GetStringFromConfig(ConfigSection(),_L("value2"),expectedValue2);     
+         
+__UHEAP_MARK;     
+         
+    TPtrC header;     
+    HBufC8* headerData = NULL;     
+         
+    if(GetStringFromConfig(ConfigSection(),_L("header"), header))     
+        {     
+        headerData = ConvertDes16toHBufC8LC(header);     
+        }     
+    else     
+        {     
+        headerData = CreateWmdrmHeaderLC();      
+        }     
+      
+    RStringAttributeSet attributeSet;     
+    CleanupClosePushL(attributeSet);     
+    attributeSet.AddL(attribute1);     
+    attributeSet.AddL(attribute2);     
+             
+    CManager* manager = CManager::NewLC();       
+    TInt result = manager->GetStringAttributeSet(*headerData, attributeSet);     
+    TBuf <200> value1;     
+    TBuf <200> value2;     
+    if(result == KErrNone)     
+        {     
+        TInt result3 = attributeSet.GetValue(attribute1, value1);     
+        TInt result4 = attributeSet.GetValue(attribute2, value2);     
+                 
+        if(value1 == expectedValue1 && value2 == expectedValue2 && attributeSet.Count() == 2     
+         && result3 == KErrNone && result4 == KErrNone)     
+            {     
+            SetTestStepResult(EPass);     
+            }     
+        else     
+            {     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute1.Expected value: %S, actual value: %S"), &expectedValue1, &value1);     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute2.Expected value: %S, actual value: %S"), &expectedValue2, &value2);     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute1. Expected result: %d, actual result: %d"), 0, result3);     
+            INFO_PRINTF3(_L("RStringAttributeSet::GetValue() for attribute2. Expected result: %d, actual result: %d"), 0, result4);      
+            }     
+            }     
+    else     
+        {     
+        INFO_PRINTF1(_L("CManager::GetStringAttributeSet() failed"));     
+        }        
+         
+    CleanupStack::PopAndDestroy(3, headerData);          
+      
+__UHEAP_MARKEND;     
+      
+    return TestStepResult();     
+    }     
+      
+#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT