diff -r 4baee4f15982 -r 6385c4c93049 pushmtm/Plugins/PushContentHandler/CSLContentHandler.h --- a/pushmtm/Plugins/PushContentHandler/CSLContentHandler.h Thu Aug 19 09:57:56 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,303 +0,0 @@ -/* -* Copyright (c) 2002 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: Declaration of CSLContentHandler. -* -*/ - - - -#ifndef __CSLCONTENTHANDLER_H__ -#define __CSLCONTENTHANDLER_H__ - -// INCLUDE FILES - -#include "CPushContentHandlerBase.h" -#include "PushMtmDef.hrh" -#include "PushContentHandlerDef.hrh" -#include -#include -#include - -// CONSTANTS - -const TUid KUidPushSLContentHandler = { EUidPushSLContentHandler }; -_LIT( KSLContentHandlerData, "text/vnd.wap.sl||application/vnd.wap.slc" ); - -// FORWARD DECLARATIONS - -class CSLPushMsgEntry; -class CPushMtmAutoFetchOperation; - -// CLASS DECLARATION - -/** -* CSLContentHandler Handles Service Loading Content -* -* This handler takes ownership of the SL message and processes it -* according to the Reception rules -* [WAP Service Loading version 31-July-2001] -* and either stores the message or deletes it. -* Also S60 specific requirements are applied. -* -* NB. If __SERIES60_PUSH_SL is not defined, then all SL push messages are -* discarded! -*/ -class CSLContentHandler : public CPushContentHandlerBase - { - public: // Constructors and destructor - - /** - * Two-phased constructor. Leaves on failure. - * @return The constructed object. - */ - static CSLContentHandler* NewL(); - - /** - * D'tor. - */ - virtual ~CSLContentHandler(); - - private: // Constructors - - /** - * Constructor. - */ - CSLContentHandler(); - - /** - * Symbian OS constructor. - */ - void ConstructL(); - - private: // New functions - - /** - * Do Garbage Collection synchronously when a new message arrives. - * @return None. - */ - void CollectGarbageL(); - - - /** - * Parse the Push SL message using XML parser. - * If Push Message is an SLC then convert it first to text using - * CWbxmlConverterUtil class. - * @return None. - */ - void ParsePushMsgL(); - - /** - * Parse an attribute of the sl element. - * @param aAttrHandle The attribute to be parsed. - * @return None. - */ - void ParseSlAttributeL( NW_DOM_AttributeHandle_t& aAttrHandle ); - - /** - * Convert the action string to a representative numeric value to - * facilitate storing the message. - * @param aActionString The attribute value indicating the action level - * eg 'execute-high' - * @return TUint: a value representing the action type. - */ - TUint ConvertActionString( const TDesC8& aActionString ) const; - - /** - * Set SL entry fields prior to storing message. - * @param aSlPushMsgEntry Entry represents message format to use when - * storing it. - * @return None. - */ - void SetSlPushMsgEntryFieldsL( CSLPushMsgEntry& aSlPushMsgEntry ) const; - - /** - * Check if the message has to be discarded due to empty Href or - * there is a message with higher acton value. - * @return None. - */ - void ProcessingPushMsgEntryL(); - - /** - * Handle Service invocation: decide what to do next according to - * action value and push settings. - * @return Next state. - */ - TInt HandleServiceInvocationL() const; - - /** - * Download the indicated content. - * In case of execute-high use the Browser to download the service. - * In case of cache use the fetch operation to download the service - * silently. - * @return None. - */ - void FetchPushMsgEntryL(); - - /** - * Start the Browser and instruct it to download the content - * indicated by the Sl's URI. - * @return None. - */ - void StartBrowserL(); - - /** - * Check the result of the SL-cache downloading. If it fails, save the - * message. If it succeeds, discard the message. - * @return None. - */ - void FetchCompletedL(); - - /** - * Apply reception rules and save the push message. - * If a message already exists with the same URL, - * it is saved only if it has a higher action value. - * @return None. - */ - void SavePushMsgEntryL(); - - /** - * Store the new message to Messaging. - * @param aMatchingEntryId ID of the matching SI entry. - * @return None. - */ - void StoreSLMessageL( TMsvId aMatchingEntryId ); - - // Attribute flags - - /** - * Flag whether message has an action attribute - * @param aAction boolean to set flag to - - * ETrue for action attrib present - * EFalse for no action attrib. - */ - inline void SetActionFlag( TBool aAction ); - - /** - * Check status of action flag to see if message has an action - * attribute. - * @return TBool ETrue - action attribute present in message - * EFalse - no action attribute. - */ - inline TBool ActionFlag() const; - - /** - * Flag whether message has a Href attribute - * @param aHref boolean to set flag to - - * ETrue for Href attrib present - * EFalse for no href attrib - */ - inline void SetHrefFlag( TBool aHref ); - - /** - * Check status of href flag to see if message has an href attribute. - * @return TBool - * ETrue - href attribute present in message - * EFalse - no href attribute - */ - inline TBool HrefFlag() const; - - - private: // Methods from CPushHandlerBase - - /** - * HandleMessage Async. Version. Takes ownership of Push Message and - * sets self active to continue processing message. - * @param aPushMsg CPushMessage to process. - * @param aStatus Request status variable for use in asynchronous - * operations. - * @return None. - */ - void HandleMessageL(CPushMessage* aPushMsg, TRequestStatus& aStatus); - - /** - * HandleMessage Sync. Version. Takes ownership of Push Message and - * sets self active to continue processing message. - * Initial State: Set data members then go to the next state - * @param aPushMsg CPushMessage to process. - */ - void HandleMessageL(CPushMessage* aPushMsg); - - /** - * Same functionality as DoCancel() - */ - void CancelHandleMessage(); - - /** - * Reserved function. - */ - void CPushHandlerBase_Reserved1(); - - /** - * Reserved function. - */ - void CPushHandlerBase_Reserved2(); - - private: // Methods from CActive - - /** - * Terminates any activity. - * @return None. - */ - void DoCancel(); - - /** - * Step through the various representative states for handling a - * message. - * @return None. - */ - void RunL(); - - /** - * This is invoked when RunL Leaves with an error so clean up and - * return. - * @return Error code to scheduler. - */ - TInt RunError( TInt aError ); - - private: // Data - - enum - { - EAction = 0x01, - EHref = 0x02 - }; - - enum TState ///< States of this state machine. - { - EGarbageCollecting, - EFilteringAndParsing, - EProcessing, - EFetching, - EFetchCompleted, - ESavePushMsgEntry, - EDone - }; - - TMsvId iSavedMsgId; ///< ID of the saved message. - TUint32 iAttributes; ///< Attribute indication (set or not). - TInt iPushMsgAction; ///< SL action. - HBufC* iHrefBuf; ///< Href attribute. Has. - - /// Asynchronous fetch operation that downloads the SL-cache. Owned. - CPushMtmAutoFetchOperation* iFetchOp; - - NW_Uint32 iCharEncoding; ///< Char encoding of the current msg. - TBool iSaveAsRead; ///< Mark the message 'read' after saving. - TInt iPushSLEnabled; - }; - -#include "CSLContentHandler.inl" - -#endif // __CSLCONTENTHANDLER_H__ -