diff -r 7d48bed6ce0c -r 987c9837762f phoneclientserver/phoneserver/Inc/Ussd/CUssdExtensionInterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneclientserver/phoneserver/Inc/Ussd/CUssdExtensionInterface.h Wed Sep 01 12:15:03 2010 +0100 @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2002-2005 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: Extends the ussd functionality. + * + */ +#ifndef __CUSSDEXTENSIONINTERFACE_H__ +#define __CUSSDEXTENSIONINTERFACE_H__ + +// INCLUDES + +#include +#include +#include +// FORWARD DECLARATIONS + +// CONSTANTS +const TUid KUssdExtensionInterfaceUid = + { + KUssdExtensionInterfaceUidValue + }; + +// CLASS DECLARATION + +/** + * Base class for Ussd Extension Plugin. + * + * This API allows customizing the USSD sending feature of the S60 Telephony + * applications at runtime. + * + * The API defines two roles: + * 1) Validates the USSD string while sending. if it is unauthorized + * in the context shall terminate the request. + * 2) Validates the USSD string while receiving, the extension will get the first chance to consume the reply if needed + * + * + * Note: + * The customizer needs only one plug-in implementation for a variant, and so supports only rom-only plug-in. + */ +class CUssdExtensionInterface : public CBase + { +public: + // Constructors and destructor + /** + * NewL + * Wraps ECom object instantitation. Will return the + * default interface implementation, which matches to + * given aOperationName. + */ + static CUssdExtensionInterface* NewL(); + + /** + * NewL + * Wraps ECom object instantitation. Will search for + * interface implementation, which matches to given + * aOperationName. + * @param aOperationName name of requested implementation. + * Implementations advertise their "name" as specified + * in their resource file field + * IMPLEMENTATION_INFO::default_data. + */ + static CUssdExtensionInterface* NewL(const TDesC8& aMatch); + +public: + // API to be implemented by ECOM plug-in + + /** + * Validate/Authenticate the Ussd string Before Sending from + * the USSD Send handler + * When Ussd Extention plugin return true, then ussd manager will continue sending of the ussd + * Otherwise the transaction will be terminated with KErrAccessDenined + * + * @param aMessageData + * @param aMessageAttributes . + */ + virtual TBool + ValidateUssdMsgSending( + const TDesC8& aMessageData, + const RMobileUssdMessaging::TMobileUssdAttributesV1& aMsgAttribute) = 0; + /** + * Validate/Authenticate the Ussd response received by the + * USSD receive handler + * + * @param aMessageData + * @return true implies that the ussd response is valid for the extension. + * otherwise pass it to the observer. . + */ + virtual TBool ValidateUssdResponse(const TDesC8& aMessage) = 0; + /** + * if ValidateUssdResponse returns true, then the extension plugin is waiting for the response + * so invoke the interface to deligate to the plugin. + * Example: + * ... + * TBool isValidForExtension = iUssdExtnInterface->ValidateUssdResponse(aMsgData); + * TInt errfromextension = KErrNone; + * if (isValidForExtension) + * { + * TRAPD(err, iUssdExtnInterface->ProcessReceivedUssdL(iDecodedMessage, errfromextension)); + * ... + * + * @param aMessageData + * @return error code + * @leave On typical leave level problems. + */ + virtual void + ProcessReceivedUssdL(const TDesC& aMessageData, TInt aError) = 0; + + /** + * Notify the any network error to the extension, so that it can handle the internal states if required + * @param aError + */ + virtual void NotifyNWError(TInt aError)=0; + +public: + /** + * ~CUssdExtensionInterface + * + * Cleans up resources, specifically notify ECOM server that this + * instance is being deleted. + */ + virtual ~CUssdExtensionInterface(); + +private: + TUid iDtor_ID_Key; // Identification on cleanup + }; +#include "CUssdExtensionInterface.inl" +#endif // __CUSSDEXTENSIONINTERFACE_H__