diff -r 000000000000 -r 8e480a14352b messagingfw/wappushfw/SISLContentHandlers/inc/CSIContentHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/wappushfw/SISLContentHandlers/inc/CSIContentHandler.h Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,187 @@ +// Copyright (c) 2001-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: +// + +#ifndef __CSICONTENTHANDLER_H__ +#define __CSICONTENTHANDLER_H__ + +// System includes +// +#include + +// Local includes +// +#include +#include "CMsgParser.h" + +// Constants +// +const TUid KUidPushSIContentHandler = { 0x101F3E61 }; +_LIT(KSIContentHandlerData,"text/vnd.wap.si||application/vnd.wap.sic"); + +// Forward class declarations +// +class CSIPushMsgEntry; +class CSISLPushMsgUtils; + +/** + * CSIContentHandler handles Service Indication content + * + * This handler takes ownership of the SI message and processes it + * according to the Reception rules + * [WAP Service Indication version 08-Nov-1999 section 7.2] + * and either stores the message or deletes it. + * + * OVERVIEW: + * The main body of this class and its functionality lies within + * HandleMessage (asynchonous). This : + * 1. takes ownership of the push message + * 2. validates the message and generates a parsed document tree + * 3. extracts the message attribute values from document tree + * 4. processes the received message + * 5. finishes + * + * Step 4: is an algorithmic implementation of 7.2 Reception rules + * from WAP Service Indication 08-Nov-1999 with the exception + * that the final step (step 5: handling of information specified + * in the info element) has not been implemented as this is a UI + * feature. + * + * NB: a received message with no creation date will be stored (unless + * its action is set to delete or the expiry condition is met). This + * means that the si-id in the message store will not be unique. + */ +//##ModelId=3B659DB10116 +class CSIContentHandler : public CContentHandlerBase, public MWAPElementHandler +/** +@internalComponent +@released +*/ + { +public: // Methods + + static CSIContentHandler* NewL(); + + virtual ~CSIContentHandler(); + +private: // Methods from CPushHandlerBase + + virtual void HandleMessageL(CPushMessage* aPushMsg, TRequestStatus& aStatus); + + virtual void HandleMessageL(CPushMessage* aPushMsg); + + virtual void CancelHandleMessage(); + + virtual void CPushHandlerBase_Reserved1(); + + virtual void CPushHandlerBase_Reserved2(); + +private: + // From MWAPElementHandler + void HandleElementL ( const RString& aTag, const RString& aAttributeName, const RString& aAttributeValue ); + void HandleContentL ( const TDesC8& aBytes ); + +private: // Methods from CActive + + virtual void DoCancel(); + + virtual void RunL(); + + virtual TInt RunError(TInt aError); + +private: // Methods + + CSIContentHandler(); + + void ConstructL(); + + void ParsePushMsgL(); + + void SetSIPushMsgEntryFieldsL(CSIPushMsgEntry& aSIPushMsgEntry); + + void ProcessingPushMsgEntryL(); + + void StoreSIMessageL(); + + TBool HandleMsgOrderReceptionL(); + + // conversion utilities + + TBool ConvertDateTimeL(const TDesC& aDateTime, TTime &aConvertedDate); + + TBool IsValidUTCTime(TDes& aDateTime); + + HBufC16* FormatDateStringL(const TDesC& aData); + + TUint ConvertActionString(const RString& aActionString); + + CSIPushMsgEntry* GetSiEntryL(); + + TBool ValidateDateTime(TDes& aDateTime); + + // Attribute flags + inline void SetActionFlag(TBool aAction); + + inline void SetCreatedFlag(TBool aCreated); + + inline void SetHrefFlag(TBool aHref); + + inline void SetExpiresFlag(TBool aExpires); + + inline void SetSiIdFlag(TBool aSiId); + + inline void SetDataFlag(TBool aData); + + inline TBool ActionFlag() const; + + inline TBool CreatedFlag() const; + + inline TBool HrefFlag() const; + + inline TBool ExpiresFlag() const; + + inline TBool SiIdFlag() const; + + inline TBool DataFlag() const; + +private: // Attributes + + CSISLPushMsgUtils* iWapPushUtils; + + TUint32 iAttributes; + + enum { EAction=0x01, ECreated=0x02, EHref=0x04, EExpires=0x08, ESiId=0x10, EData=0x20 }; + + enum TState { EParsing, EProcessing, EDone }; + + TInt iPushMsgAction; + + HBufC* iHrefBuf; + + HBufC* iSiIdBuf; + + TTime iExpiresTime; + + TTime iCreatedTime; + + HBufC* iData; + + TBool iIndicationTagFound; + + TBool iValidDate; + }; + +#include "CSIContentHandler.inl" + +#endif // __CSICONTENTHANDLER_H__