pushmtm/Plugins/PushContentHandler/CUnknownContentHandler.cpp
changeset 51 48e827313edd
parent 37 481242ead638
child 53 f427d27b98d8
--- a/pushmtm/Plugins/PushContentHandler/CUnknownContentHandler.cpp	Tue Feb 02 00:12:41 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,694 +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:  Implementation of CUnknownContentHandler.
-*
-*/
-
-
-
-// INCLUDE FILES
-
-#include "CUnknownContentHandler.h"
-#include "PushMtmUtil.h"
-#include "PushMtmLog.h"
-#include "PushContentHandlerPanic.h"
-#include "StringResourceReader.h"
-#include <msvids.h>
-#ifdef __SERIES60_PUSH_SP 
-#include <CUnknownPushMsgEntry.h>
-#include <BioDB.h>        // BIO Message Database and message query methods
-#include <gsmubuf.h>    // CSmsBuffer class
-#include <gsmumsg.h>    // CSmsMessage class
-#include <smuthdr.h>    // CSmsHeader class
-#include <smut.h>        // TSmsUtilities class
-#include <txtrich.h>    // CRichText class
-#include <biouids.h>    // KUidBioMessageTypeMtm const
-#include <apgcli.h>
-#include <apmrec.h>
-#include <DocumentHandler.h>
-#include <Uri16.h>
-#include <UriUtils.h>
-#include <msvuids.h>    // KUidMsvMessageEntry const
-#include <PushMtmUi.rsg>
-
-// SMUT Unbranch
-#include <csmsgetdetdescinterface.h>
-
-#endif // __SERIES60_PUSH_SP 
-
-// CONSTANTS
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::NewL
-// ---------------------------------------------------------
-//
-CUnknownContentHandler* CUnknownContentHandler::NewL()
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::NewL")
-
-    CUnknownContentHandler* self = new (ELeave) CUnknownContentHandler; 
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    PUSHLOG_LEAVEFN("CUnknownContentHandler::NewL")
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::~CUnknownContentHandler
-// ---------------------------------------------------------
-//
-CUnknownContentHandler::~CUnknownContentHandler()
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::~CUnknownContentHandler")
-
-    Cancel();
-
-    PUSHLOG_LEAVEFN("CUnknownContentHandler::~CUnknownContentHandler")
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::CUnknownContentHandler
-// ---------------------------------------------------------
-//
-CUnknownContentHandler::CUnknownContentHandler()
-:   CPushContentHandlerBase(), 
-    iSavedMsgId( KMsvNullIndexEntryId )
-    {
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::ConstructL
-// ---------------------------------------------------------
-//
-void CUnknownContentHandler::ConstructL()
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::ConstructL")
-
-    CPushContentHandlerBase::ConstructL();
-    // Added to Active Scheduler.
-
-    PUSHLOG_LEAVEFN("CUnknownContentHandler::ConstructL")
-    }
-
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::CollectGarbageL
-// ---------------------------------------------------------
-//
-void CUnknownContentHandler::CollectGarbageL()
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::CollectGarbageL")
-
-    DoCollectGarbageL();
-
-#ifdef __SERIES60_PUSH_SP
-    iState = EFilteringAndProcessing;
-#else // __SERIES60_PUSH_SP
-    // Do nothing - message is discarded.
-    iState = EDone;
-#endif // __SERIES60_PUSH_SP
-    IdleComplete();
-
-    PUSHLOG_LEAVEFN("CUnknownContentHandler::CollectGarbageL")
-    }
-
-#ifdef __SERIES60_PUSH_SP
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::ProcessingPushMsgEntryL
-// ---------------------------------------------------------
-//
-void CUnknownContentHandler::ProcessingPushMsgEntryL()
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::ProcessingPushMsgEntryL")
-
-    const TBool bioMsg( BioMessageTypeL() );
-    if ( bioMsg )
-        {
-        PUSHLOG_WRITE(" BIO message");
-        // convert to bio format & save
-        SaveBioMessageEntryL();
-        }
-    else
-        {
-        PUSHLOG_WRITE(" Not BIO message");
-
-        // Check if the received content is supported.
-        RApaLsSession apaLs;
-        User::LeaveIfError( apaLs.Connect() );
-        CleanupClosePushL<RApaLsSession>( apaLs );
-
-        // Try to find out the data type.
-        TPtrC contentTypePtr;
-        iMessage->GetContentType( contentTypePtr );
-        HBufC8* contentT8 = HBufC8::NewMaxLC( contentTypePtr.Length() );
-        contentT8->Des().Copy( contentTypePtr );
-        TDataRecognitionResult result;
-        User::LeaveIfError( apaLs.RecognizeData( KNullDesC(), 
-                                                 *contentT8, 
-                                                 result ) );
-        CleanupStack::PopAndDestroy( contentT8 ); // contentT8
-
-        CDocumentHandler* docHandler = CDocumentHandler::NewLC( NULL );
-        TBool supported = docHandler->CanOpenL( result.iDataType );
-
-        CleanupStack::PopAndDestroy( 2, &apaLs ); // docHandler, apaLs
-
-        // Save only supported msg.
-        if ( supported )
-            {
-                // create unknown push message entry and save
-                SaveUnknownPushMsgEntryL();
-            }
-        }
-
-    iState = EDone;
-    IdleComplete();
-
-    PUSHLOG_LEAVEFN("CUnknownContentHandler::ProcessingPushMsgEntryL")
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::BioMessageTypeL
-// ---------------------------------------------------------
-//
-TBool CUnknownContentHandler::BioMessageTypeL()
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::BioMessageTypeL")
-
-    // need to create local RFs for BIO otherwise raises exception
-    RFs localFS;
-    CleanupClosePushL( localFS );
-    User::LeaveIfError( localFS.Connect() );
-    CBIODatabase* bioDB = CBIODatabase::NewLC( localFS );
-
-    TPtrC contentTypePtr;
-    iMessage->GetContentType( contentTypePtr );
-
-    iBioMsgUID = KNullUid;
-    TBool isBio = EFalse;
-    // IsBioMessageL returns KErrNone if found or KErrNotFound if not found 
-    if ( bioDB->IsBioMessageL( EBioMsgIdIana, 
-                           contentTypePtr, 
-                           NULL, 
-                           iBioMsgUID ) == KErrNone )
-        {
-        isBio = ETrue;
-        }
-
-    CleanupStack::PopAndDestroy( 2 ); // bioDB, localFS
-
-    PUSHLOG_LEAVEFN("CUnknownContentHandler::BioMessageTypeL")
-    return isBio;
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::SaveBioMessageEntryL
-// ---------------------------------------------------------
-//
-void CUnknownContentHandler::SaveBioMessageEntryL()
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::SaveBioMessageEntryL")
-
-    // create sms message from CPushMessage and then save message
-    RFs fileSession;
-    User::LeaveIfError(fileSession.Connect());
-    CleanupClosePushL(fileSession);
-    CSmsBuffer* smsBuffer = CSmsBuffer::NewL();
-    CleanupStack::PushL(smsBuffer);
-
-    CSmsMessage* smsMessage = CSmsMessage::NewL( fileSession, 
-                                                 CSmsPDU::ESmsDeliver, 
-                                                 smsBuffer );
-    CleanupStack::PushL( smsMessage );
-
-    smsMessage->SmsPDU().SetAlphabet( TSmsDataCodingScheme::ESmsAlphabet8Bit );
-
-    TPtrC8 fieldValue;
-
-    if ( iMessage->GetBinaryHeaderField( EHttpFrom, fieldValue ) ||
-     iMessage->GetBinaryHeaderField( EHttpXWapInitiatorURI, fieldValue ) ||
-     iMessage->GetBinaryHeaderField( EHttpContentLocation, fieldValue ) )
-        {
-        // Convert 8 bit to 16 bit
-        HBufC* tempAddr = HBufC::NewLC( fieldValue.Length() );
-        tempAddr->Des().Copy( fieldValue );
-
-        smsMessage->SmsPDU().SetToFromAddressL( *tempAddr );
-        CleanupStack::PopAndDestroy( tempAddr );
-        }
-
-    if ( iMessage->GetMessageBody( fieldValue ) )
-        {
-        HBufC* tempBody = HBufC::NewLC( fieldValue.Length() );
-        tempBody->Des().Copy( fieldValue );
-
-        smsBuffer->InsertL( 0, *tempBody );
-        CleanupStack::PopAndDestroy( tempBody );
-        }
-
-    CleanupStack::Pop( 2 ); //smsBuffer, smsMessage
-
-    StoreMsgL( smsMessage ); // destroys CSmsMessage (contains smsBuffer)
-    CleanupStack::PopAndDestroy( &fileSession );
-
-    PUSHLOG_LEAVEFN("CUnknownContentHandler::SaveBioMessageEntryL")
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::StoreMsgL
-// ---------------------------------------------------------
-//
-void CUnknownContentHandler::StoreMsgL( CSmsMessage* aSmsMsg )
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::StoreMsgL")
-
-    CleanupStack::PushL( aSmsMsg );
-
-    // Create a CSmsHeader based on this message. smsHdr takes ownership of aSmsMsg
-    CSmsHeader* smsHdr = CSmsHeader::NewL( aSmsMsg );
-    CleanupStack::Pop( aSmsMsg );
-    CleanupStack::PushL( smsHdr );
-
-    // get root entry
-    CMsvEntry* msvEntry = iMsvSession->GetEntryL( KMsvRootIndexEntryId );
-    CleanupStack::PushL( msvEntry );
-
-    // create an invisible blank entry 
-    TMsvEntry entry;
-    entry.iType = KUidMsvMessageEntry;
-    entry.SetVisible( EFalse );
-    entry.SetInPreparation( ETrue );
-    entry.SetReadOnly( EFalse );
-    entry.SetUnread( ETrue );
-
-    TMsvId serviceId = SetBioServiceIdL();
-    TBuf<KSmsDescriptionLength> description;    
-
-// SMUT Unbranch
-    CSmsGetDetDescInterface* smsPlugin = CSmsGetDetDescInterface::NewL();
-    CleanupStack::PushL( smsPlugin );
-
-    if ( iBioMsgUID != KNullUid )
-        {
-        // sets entry with values passed in
-        TSmsUtilities::PopulateMsgEntry( entry, 
-                                         *aSmsMsg, 
-                                         serviceId, 
-                                         KUidBIOMessageTypeMtm );
-        entry.iBioType = iBioMsgUID.iUid;
-
-        // Look up and set the description
-        TInt index;
-        CBIODatabase* bioDB = CBIODatabase::NewLC( msvEntry->Session().FileSession() );
-        bioDB->GetBioIndexWithMsgIDL( iBioMsgUID, index );
-        description.Copy( bioDB->BifReader(index).Description() );
-        entry.iDescription.Set( description );
-        CleanupStack::PopAndDestroy(); // bioDB
-        }
-    else
-        {
-        // sets entry with values passed in
-        TSmsUtilities::PopulateMsgEntry( entry, *aSmsMsg, serviceId );
-
-        // Look up and set the description
-// SMUT Unbranch
-        smsPlugin->GetDescription( *aSmsMsg, description );
-        entry.iDescription.Set( description );
-        }
-    
-    // Set the details
-    TBuf<KSmsDetailsLength> details;    
-    TInt err = smsPlugin->GetDetails( msvEntry->Session().FileSession(), 
-                                          *aSmsMsg, 
-                                          details );
-    if ( !err )
-        {
-        entry.iDetails.Set( details );
-        }
-
-// SMUT Unbranch
-    CleanupStack::PopAndDestroy( smsPlugin );
-
-    // Store entry in inbox
-    msvEntry->SetEntryL( KMsvGlobalInBoxIndexEntryId );
-    msvEntry->CreateL( entry );
-    msvEntry->Session().CleanupEntryPushL( entry.Id() );
-    msvEntry->SetEntryL( entry.Id() );
-
-    // Save the message
-    CMsvStore* store = msvEntry->EditStoreL();
-    CleanupStack::PushL( store );
-
-    // Save off the CSmsHdr
-    smsHdr->StoreL( *store );
-
-    // Save the body
-    
-    // Create and fill a CRichText object to save to store..
-    CParaFormatLayer* paraFormatLayer = CParaFormatLayer::NewL();
-    CleanupStack::PushL( paraFormatLayer );
-    CCharFormatLayer* charFormatLayer = CCharFormatLayer::NewL();
-    CleanupStack::PushL( charFormatLayer );
-    CRichText* richText = CRichText::NewL( paraFormatLayer, charFormatLayer );
-    CleanupStack::PushL( richText );
-    HBufC* bufBody=HBufC::NewLC( aSmsMsg->Buffer().Length() );
-    TPtr bufBodyPtr = bufBody->Des();
-    aSmsMsg->Buffer().Extract( bufBodyPtr, 0, aSmsMsg->Buffer().Length() );
-    richText->InsertL( 0, bufBodyPtr ); 
-    store->StoreBodyTextL( *richText );
-    CleanupStack::PopAndDestroy( 4 ); //bufBody, richText, charFormatLayer, paraFormatLayer
-    
-    store->CommitL();
-    entry.SetReadOnly( ETrue );
-    entry.SetVisible( ETrue );
-    entry.SetInPreparation( EFalse );
-    msvEntry->ChangeL( entry );
-
-    CleanupStack::PopAndDestroy(); //store
-    msvEntry->Session().CleanupEntryPop(); //entry
-    CleanupStack::PopAndDestroy( 2 ); //msvEntry, smsHdr
-
-    PUSHLOG_LEAVEFN("CUnknownContentHandler::StoreMsgL")
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::SetBioServiceIdL
-// ---------------------------------------------------------
-//
-TMsvId CUnknownContentHandler::SetBioServiceIdL()
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::SetBioServiceIdL")
-
-    CMsvEntry* msvEntry = iMsvSession->GetEntryL( KMsvRootIndexEntryId );
-
-    CleanupStack::PushL( msvEntry );
-    
-    TMsvId serviceId = KMsvNullIndexEntryId; 
-    TRAPD( err, TSmsUtilities::ServiceIdL( *msvEntry, 
-                                           serviceId, 
-                                           KUidBIOMessageTypeMtm ) );
-    if ( err == KErrNotFound )
-        {
-        serviceId = KMsvLocalServiceIndexEntryId;
-        err = KErrNone;
-        }
-    
-    CleanupStack::PopAndDestroy(); //msvEntry
-    User::LeaveIfError( err );
-
-    PUSHLOG_LEAVEFN("CUnknownContentHandler::SetBioServiceIdL")
-    return serviceId;
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::SaveUnknownPushMsgEntryL
-// ---------------------------------------------------------
-//
-void CUnknownContentHandler::SaveUnknownPushMsgEntryL()
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::SaveUnknownPushMsgEntryL")
-
-    CUnknownPushMsgEntry* unknownPushMsgEntry = 
-                          CUnknownPushMsgEntry::NewL();
-    CleanupStack::PushL( unknownPushMsgEntry );
-
-    SetUnknownPushMsgEntryFieldsL( *unknownPushMsgEntry );
-
-    iSavedMsgId = unknownPushMsgEntry->SaveL( *iMsvSession, 
-                                              KMsvGlobalInBoxIndexEntryId );
-
-    CleanupStack::PopAndDestroy( unknownPushMsgEntry ); // unknownPushMsgEntry
-
-    PUSHLOG_LEAVEFN("CUnknownContentHandler::SaveUnknownPushMsgEntryL")
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::SetUnknownPushMsgEntryFieldsL
-// ---------------------------------------------------------
-//
-void CUnknownContentHandler::SetUnknownPushMsgEntryFieldsL
-                             ( CUnknownPushMsgEntry& aUnknownPushMsgEntry )
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::SetUnknownPushMsgEntryFieldsL")
-
-    // Set all the relevant fields
-
-    // Get server address.
-    TPtrC8 srvAddress;
-    if ( iMessage->GetServerAddress( srvAddress ) )
-        {
-        aUnknownPushMsgEntry.SetFromL( srvAddress );
-        }
-
-    TPtrC contentTypePtr;
-    iMessage->GetContentType( contentTypePtr );
-    aUnknownPushMsgEntry.SetContentTypeL( contentTypePtr );
-
-    TPtrC8 msgBodyPtr;
-    iMessage->GetMessageBody( msgBodyPtr );
-    aUnknownPushMsgEntry.SetMessageDataL( msgBodyPtr );
-
-    // First line in Inbox: TMsvEntry::iDetails.
-    if ( srvAddress.Length() == 0 )
-        {
-        // Read from resource.
-        HBufC* details = 
-            iStrRscReader->AllocReadResourceLC( R_PUSHMISC_UNK_SENDER );
-        aUnknownPushMsgEntry.SetMsgDetailsL( *details );
-        CleanupStack::PopAndDestroy( details );
-        }
-    else
-        {
-        // Convert the "From" information to the format required by the UI 
-        // spec and then decode it.
-        HBufC* details = iWapPushUtils->ConvertDetailsL( srvAddress );
-        CleanupStack::PushL( details );
-        HBufC* convertedFrom = 
-            CPushMtmUtil::ConvertUriToDisplayFormL( *details );
-        CleanupStack::PushL( convertedFrom );
-        //
-        aUnknownPushMsgEntry.SetMsgDetailsL( *convertedFrom );
-        //
-        CleanupStack::PopAndDestroy( 2, details ); // convertedFrom, details
-        }
-
-    // Second line in Inbox: TMsvEntry::iDescription.
-    TPtrC8 contentUriPtr;
-    iMessage->GetBinaryHeaderField( EHttpXWapContentURI, contentUriPtr );
-    // Copy the 8-bit descriptor into a unicode one.
-    HBufC* contentUri = HBufC::NewMaxLC( contentUriPtr.Length() );
-    contentUri->Des().Copy( contentUriPtr );
-    // Extract file name from X-wap-content-uri.
-    HBufC* fileName = FileNameFromUriL( *contentUri );
-    CleanupStack::PopAndDestroy( contentUri ); // contentUri
-    CleanupStack::PushL( fileName );
-
-    if ( fileName->Length() == 0 )
-        {
-        // TODO: Read from resource.
-        //"Unknown content type" qtn_wap_push_msg_content_not_supported
-        }
-    else
-        {
-        aUnknownPushMsgEntry.SetMsgDescriptionL( *fileName );
-        }
-
-    CleanupStack::PopAndDestroy( fileName ); // fileName
-
-    PUSHLOG_LEAVEFN("CUnknownContentHandler::SetUnknownPushMsgEntryFieldsL")
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::FileNameFromUriL
-// ---------------------------------------------------------
-//
-HBufC* CUnknownContentHandler::FileNameFromUriL( const TDesC& aUri ) const
-    {
-    TUriParser pars;
-    User::LeaveIfError( pars.Parse( aUri ) );
-
-    HBufC* res = NULL;
-    if ( pars.IsPresent( EUriPath ) )
-        {
-        TPtrC path = pars.Extract( EUriPath );
-        // Extract the remaining text after the last slash character.
-        // If the path contains a file name, then it has to contain 
-        // a slash also, so if there is no slash then it's sure that there 
-        // is no file name in it.
-        TInt index = path.LocateReverse( TChar('/') );
-        if ( index < 0 )
-            {
-            // No file name.
-            }
-        else if ( ++index < path.Length() ) // If not at the end...
-            {
-            // Last slash found. Extract the text after the slash.
-            res = path.Mid( index ).AllocL();
-            }
-        }
-
-    if ( !res )
-        {
-        res = KNullDesC().AllocL();
-        }
-
-    return res;
-    }
-
-#endif // __SERIES60_PUSH_SP
-
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::HandleMessageL
-// ---------------------------------------------------------
-//
-void CUnknownContentHandler::HandleMessageL( CPushMessage* aPushMsg, 
-                                             TRequestStatus& aStatus )
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::HandleMessageL")
-
-    __ASSERT_DEBUG( aPushMsg != NULL, 
-                    ContHandPanic( EPushContHandPanMsgNull ) );
-
-    iMessage = aPushMsg;
-    iAcknowledge = ETrue;
-    SetConfirmationStatus( aStatus );
-    iState = EGarbageCollecting;
-    IdleComplete();
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::HandleMessageL
-// ---------------------------------------------------------
-//
-void CUnknownContentHandler::HandleMessageL( CPushMessage* aPushMsg )
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::HandleMessageL")
-
-    __ASSERT_DEBUG( aPushMsg != NULL, 
-                    ContHandPanic( EPushContHandPanMsgNull ) );
-
-    iAcknowledge = EFalse;
-    iMessage = aPushMsg;
-    iState = EGarbageCollecting;
-    IdleComplete();
-
-    PUSHLOG_LEAVEFN("CUnknownContentHandler::HandleMessageL")
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::CancelHandleMessage
-// ---------------------------------------------------------
-//
-void CUnknownContentHandler::CancelHandleMessage()
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::CancelHandleMessage")
-    Cancel();
-    PUSHLOG_LEAVEFN("CUnknownContentHandler::CancelHandleMessage")
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::CPushHandlerBase_Reserved1
-// ---------------------------------------------------------
-//
-void CUnknownContentHandler::CPushHandlerBase_Reserved1()
-    {
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::CPushHandlerBase_Reserved2
-// ---------------------------------------------------------
-//
-void CUnknownContentHandler::CPushHandlerBase_Reserved2()
-    {
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::DoCancel
-// ---------------------------------------------------------
-//
-void CUnknownContentHandler::DoCancel()
-    {
-    PUSHLOG_ENTERFN("CUnknownContentHandler::DoCancel")
-    Complete( KErrCancel );
-    PUSHLOG_LEAVEFN("CUnknownContentHandler::DoCancel")
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::RunL
-// ---------------------------------------------------------
-//
-void CUnknownContentHandler::RunL()
-    {
-    // Handle errors in RunError().
-    PUSHLOG_WRITE_FORMAT("iStatus.Int(): %d",iStatus.Int())
-    User::LeaveIfError( iStatus.Int() );
-
-    // use active state machine routine to manage activites:
-    switch ( iState )
-        {
-        case EGarbageCollecting:
-            {
-            CollectGarbageL();
-            break;
-            }
-
-#ifdef __SERIES60_PUSH_SP
-
-        case EFilteringAndProcessing:
-            {
-            if ( !FilterPushMsgL() )
-                {
-                // It did not pass the filter. Done.
-                iState = EDone;
-                IdleComplete();
-                }
-            else
-                {
-                // Continue.
-                ProcessingPushMsgEntryL();
-                }
-            break;
-            }
-        
-#endif // __SERIES60_PUSH_SP
-
-        default:
-            {
-            PUSHLOG_WRITE("CUnknownContentHandler default EDone")
-            Complete( KErrNone );
-            break;
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// CUnknownContentHandler::RunError
-// ---------------------------------------------------------
-//
-TInt CUnknownContentHandler::RunError( TInt aError )
-    {
-    PUSHLOG_WRITE_FORMAT("CUnknownContentHandler::RunError: %d",aError)
-
-    iState = EDone;
-    Complete( aError );
-    return KErrNone;
-    }
-