diff -r 594d59766373 -r 7d48bed6ce0c phoneclientserver/phoneclient/tsrc/public/basic/ut_ussd/rphcltussd_glue.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneclientserver/phoneclient/tsrc/public/basic/ut_ussd/rphcltussd_glue.cpp Tue Aug 31 15:45:17 2010 +0300 @@ -0,0 +1,175 @@ +/* +* Copyright (c) 2002-2004 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: Unit test replacement class for RPhCltUssd +* +*/ + + +// +// This implementation glues USSD client directly to +// USSD Manager class so that the client/server mechanism is +// not used. This is practical in unit test environment. +// + +// INCLUDE FILES +#include +#include "mphsrvussdmessagesentobserver.h" +#include "ut_testenv.h" +#include "cphsrvussdmanager.h" +#include "rphcltussd.h" + + +// ======================================================================== +// GLOBALS +// ======================================================================== + +class TUssdGlueAdapter: public MPhSrvUssdMessageSentObserver + { + public: + void writeAttributes( const TDesC8& aAttributes ) + { + RMobileUssdMessaging::TMobileUssdAttributesV1Pckg pAttributes( + iUssdAttributes ); + pAttributes.Copy( aAttributes ); + } + void Listen( TRequestStatus& aReqStatus ) + { + aReqStatus = KRequestPending; + iPendingStatus = &aReqStatus; + } + void UssdMessageSentObserverHandleResult( TInt aError ) + { + // this causes the pending active object to signalled and run + User::RequestComplete( iPendingStatus, aError ); + } + + RMobileUssdMessaging::TMobileUssdAttributesV1 iUssdAttributes; + TRequestStatus* iPendingStatus; + }; + +TUssdGlueAdapter glueAdapter; + + + +// ============================ MEMBER FUNCTIONS =============================== + + +// ----------------------------------------------------------------------------- +RPhCltUssd::RPhCltUssd() + { + } + +// ----------------------------------------------------------------------------- +TInt RPhCltUssd::Open( RPhCltServer& /*aServer*/ ) + { + return KErrNone; + glueAdapter.iPendingStatus = 0; + } + + +// ----------------------------------------------------------------------------- +void RPhCltUssd::Close() + { + } + + +// ----------------------------------------------------------------------------- +TInt RPhCltUssd::StartUssdEditor() const + { + TRAPD( leave, + TestEnv::env().ussdManager().RequestStartEditingL() ); + return leave; + } + + +// ----------------------------------------------------------------------------- +TInt RPhCltUssd::AppStarting() + { + TestEnv::env().ussdManager().InformUssdApplicationStarting(); + return KErrNone; + } + + +// ----------------------------------------------------------------------------- +TInt RPhCltUssd::AppTerminating( + TPhCltUssdAppExitReason aExitReason ) + { + RMessage2& fakeMessage = TestEnv::env().fakeMessage(); + + TRAPD( leave, + TestEnv::env().ussdManager().InformUssdApplicationTerminatingL( fakeMessage ) ); + + return leave; + } + +// ----------------------------------------------------------------------------- +TBool RPhCltUssd::AppToForeground() + { + return TestEnv::env().ussdManager().InformUssdApplicationToForeground(); + } + +// ----------------------------------------------------------------------------- +TInt RPhCltUssd::AppToBackground() + { + TestEnv::env().ussdManager().InformUssdApplicationToBackground(); + return KErrNone; + } + +// ----------------------------------------------------------------------------- +void RPhCltUssd::SendUssd( + TRequestStatus& aReqStatus, + const TDesC8& aMsgData, + const TDesC8& aMsgAttribute ) + { + glueAdapter.Listen( aReqStatus ); + glueAdapter.writeAttributes( aMsgAttribute ); + + TRAPD( leave, TestEnv::env().ussdManager().SendUssdL( + aMsgData, glueAdapter.iUssdAttributes, glueAdapter ) ); + if ( leave != KErrNone ) + { + glueAdapter.UssdMessageSentObserverHandleResult( leave ); + } + } + +// ----------------------------------------------------------------------------- +void RPhCltUssd::CancelSend() + { + TestEnv::env().ussdManager().SendUssdCancel(); + } + + +// ----------------------------------------------------------------------------- +void RPhCltUssd::StartSAT( + TRequestStatus& aStatus , + TDes& /*aReceiveMessage*/, + TPckg< TUint >& /*aShowNotesAndDcs*/ ) + { + RMessage2& fakeMessage = TestEnv::env().fakeMessage(); + + TestEnv::env().ussdManager().InformStartSAT( fakeMessage ); + + TRequestStatus* reqStatus = &aStatus; + User::RequestComplete( reqStatus, KErrNone ); + } + + +// ----------------------------------------------------------------------------- +void RPhCltUssd::StopSAT() + { + TestEnv::env().ussdManager().InformStopSAT(); + } + + +// End of File