sysstatemgmt/systemstatereferenceplugins/test/tclayer/src/ecomsessionwrapper.cpp
changeset 0 4e1aa6a622a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysstatemgmt/systemstatereferenceplugins/test/tclayer/src/ecomsessionwrapper.cpp	Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,165 @@
+// Copyright (c) 2008-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:
+// Contains wrapper helper functions for test code to control the test wrappers 
+// 
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code 
+*/
+
+#include <ecom/ecom.h>
+#include "startupadaptationwrapper.h"
+
+/**
+ * Holds the fake TLS value
+ * 
+ * @test
+ * @internalComponent
+ */
+static TAny* fakeTls = NULL;
+
+/*
+ * Redefined here as the test .exe is not a DLL so doesn't normally have TLS
+ */
+TInt Dll::SetTls(TAny* aPtr)
+	{
+	fakeTls = aPtr;
+	return KErrNone;
+	}
+
+/*
+ * Redefined here as the test .exe is not a DLL so doesn't normally have TLS
+ */
+TAny* Dll::Tls()
+	{
+	return fakeTls;
+	}
+
+/*
+ * Wraps how to create a CImplementationInformation as this is not exported from ECOM
+ */
+CImplementationInformation* CImplementationInformation::NewL(
+		TUid	aUid, 
+		TInt	aVersion, 
+		HBufC*  aName,
+		HBufC8* aDataType,
+		HBufC8* aOpaqueData,
+		TDriveUnit aDrive,
+		TBool aRomOnly,
+		TBool aRomBased)
+	{
+	return new (ELeave) CImplementationInformation(aUid, aVersion, aName, aDataType, aOpaqueData, aDrive, aRomOnly, aRomBased);
+	} //lint !e1746 Suppress parameters could be made const referenc
+
+/*
+ * Wraps how to create a CImplementationInformation as this is not exported from ECOM
+ */
+CImplementationInformation::CImplementationInformation(
+								TUid aUid, 
+								TInt aVersion, 
+								HBufC*  aName, 
+								HBufC8* aDataType,
+								HBufC8* aOpaqueData,
+								TDriveUnit aDrive,
+								TBool aRomOnly,
+								TBool aRomBased)
+: 	iImplementationUid(aUid),
+	iVersion(aVersion),
+	iDisplayName(aName),
+	iData(aDataType),
+	iOpaqueData(aOpaqueData),
+	iDisabled(EFalse),
+	iDrive(aDrive),
+	iRomOnly(aRomOnly),
+	iRomBased(aRomBased),
+	iVid()
+	{
+	
+	} //lint !e1746 Suppress parameters could be made const referenc
+								
+/*
+ * Wraps how to destroy a CImplementationInformation as this is not exported from ECOM
+ */
+CImplementationInformation::~CImplementationInformation()
+	{
+	delete iDisplayName;
+	delete iData;
+	delete iOpaqueData;
+	}
+
+								
+
+/**
+ * Fake implementation Uid for test
+ * 
+ * @test
+ * @internalComponent
+ */
+static TUid KFakeImplId = {0x12345678};
+
+void REComSession::ListImplementationsL(TUid aInterfaceUid, const TEComResolverParams& /*aResolutionParameters*/, TUid /*aResolverUid*/, RImplInfoPtrArray& aImplInfoArray)
+	{
+	if(aInterfaceUid != KStartupAdaptationIfUid)
+		{
+		// ECom Wrapper used for other use than in the test it is meant to wrap
+		User::Leave(KErrNotSupported);
+		}
+	
+	
+	// Create a fake implementation information
+	CImplementationInformation* fakeimpl = CImplementationInformation::NewL(
+			KFakeImplId, // Fake implementation UID
+			0, // Version 0
+			KNullDesC().AllocL(), // blank name
+			KNullDesC8().AllocL(), // blank data type
+			KNullDesC8().AllocL(), // blank opaque data
+			TDriveUnit(), // z drive based
+			ETrue, // ROM only
+			ETrue); // ROM based
+	// Add it to the implementation information array
+	aImplInfoArray.Append(fakeimpl);
+	} //lint !e1746 Suppress parameter 'aInterfaceUid' could be made const referenc
+
+/**
+ * Fake destructor key
+ * 
+ * @test
+ * @internalComponent
+ */
+static TUid KFakeDtorIDKey = {0x12123434};
+
+TAny* REComSession::CreateImplementationL(TUid aImplementationUid, TUid& aDtorIDKey, TAny* aConstructionParameters)
+	{
+	if(aImplementationUid != KFakeImplId)
+		{
+		// ECom Wrapper used for other use than in the test it is meant to wrap
+		User::Leave(KErrNotSupported);
+		}
+	aDtorIDKey = KFakeDtorIDKey;
+	CStartupAdaptation* startupAdaptation = CStartupAdaptationWrapper::NewStartupAdaptation(aConstructionParameters);
+	return startupAdaptation;
+	} //lint !e1746 Suppress parameter 'aImplementationUid' could be made const referenc
+
+void REComSession::DestroyedImplementation(TUid /*aDtorIDKey*/)
+	{
+	CStartupAdaptationWrapper::DeleteStartupAdaptation();
+	}
+
+void REComSession::FinalClose()
+	{
+	// Nothing to do
+	}