simpledatamodeladapter/src/presencepluginauthorization.cpp
branchRCL_3
changeset 34 2669f8761a99
parent 31 2580314736af
child 35 fbd2e7cec7ef
--- a/simpledatamodeladapter/src/presencepluginauthorization.cpp	Thu Aug 19 10:19:02 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1350 +0,0 @@
-/*
-* Copyright (c) 2006-2010 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:  IETF SIMPLE Protocol implementation for XIMP Framework
-*
-*/
-
-#include <e32std.h>
-#include <s32strm.h>
-#include <utf.h>
-#include <ximpdatasubscriptionstate.h>
-#include <protocolpresenceauthorizationdatahost.h>
-#include <ximpobjectfactory.h>
-#include <presenceobjectfactory.h>
-#include <ximpstatus.h>
-#include <ximpidentity.h>
-#include <presencegrantrequestinfo.h>
-#include <ximpobjectcollection.h>
-#include <presenceblockinfo.h>
-#include <presenceinfofilter.h>
-#include <msimplewinfo.h>
-#include <msimpleelement.h>
-
-#include <presenceinfo.h>
-#include <presenceinfofieldcollection.h>
-#include <personpresenceinfo.h>
-#include <presenceinfofield.h>
-#include <presenceinfofieldvalueenum.h>
-#include <avabilitytext.h>
-
-#include "presencepluginauthorization.h"
-#include "presencepluginwinfo.h"
-#include "presenceplugincommon.h"
-#include "presencepluginxdmutils.h"
-#include "presencepluginwatcher.h"
-#include "presenceplugindata.h"
-#include "presencepluginutility.h"
-#include "presenceplugingroup.h"
-#include "presencepluginvirtualgroup.h"
-#include "presenceplugincontacts.h"
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::CPresencePluginAuthorization()
-// ---------------------------------------------------------------------------
-//
-CPresencePluginAuthorization::CPresencePluginAuthorization(
-    MPresencePluginConnectionObs& aObs,
-    CPresencePluginData* aPresenceData )
-    : CActive( CActive::EPriorityStandard ),
-    iConnObs(aObs), iSubscribed( EFalse ),
-    iOperation( ENoOperation ), iXdmOk( EFalse ),
-    iComplete( EFalse ), iPresenceData( aPresenceData ),
-    iContactIsStored( ETrue )
-    {
-    CActiveScheduler::Add(this);
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::NewL()
-// ---------------------------------------------------------------------------
-//
-CPresencePluginAuthorization* CPresencePluginAuthorization::NewL(
-    MPresencePluginConnectionObs& aObs,
-    CPresencePluginData* aPresenceData )
-    {
-    DP_SDA("CPresencePluginAuthorization::NewL ");
-    CPresencePluginAuthorization* self =
-        new( ELeave ) CPresencePluginAuthorization( aObs, aPresenceData );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::ConstructL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::ConstructL()
-    {
-    HBufC* serviceName =
-        iPresenceData->ServiceNameLC( iPresenceData->ServiceId() );
-    iContacts = CPresencePluginContacts::NewL(
-        iPresenceData->ServiceId(), *serviceName, *this );
-    CleanupStack::PopAndDestroy( serviceName );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::~CPresencePluginAuthorization()
-// ---------------------------------------------------------------------------
-//
-CPresencePluginAuthorization::~CPresencePluginAuthorization()
-    {
-    delete iPresIdentity;
-    delete iContacts;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::SetDataHost()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::SetDataHost( 
-    MProtocolPresenceAuthorizationDataHost& aDataHost )
-    {
-    DP_SDA("CPresencePluginAuthorization::SetDataHost ");
-    iDataHost = &aDataHost;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::WinfoTerminatedL()
-// ---------------------------------------------------------------------------
-// 
-void CPresencePluginAuthorization::WinfoTerminatedL( TInt aReason )
-    {
-    DP_SDA("CPresencePluginAuthorization::WinfoTerminatedL ");
-    
-    if ( iSubscribed )
-        {
-        MXIMPDataSubscriptionState* myState =
-            iConnObs.ObjectFactory().NewDataSubscriptionStateLC();
-        MXIMPStatus* myStatus = iConnObs.ObjectFactory().NewStatusLC();
-        myStatus->SetResultCode( aReason ? aReason : KErrCompletion );
-        myState->SetSubscriptionStateL( 
-            MXIMPDataSubscriptionState::ESubscriptionInactive );
-        
-        // parameters' OWNERSHIP is taken   
-        iDataHost->SetPresenceGrantRequestDataSubscriptionStateL( 
-            myState,  
-            myStatus );
-        
-        CleanupStack::Pop( /*myStatus*/ );
-        CleanupStack::Pop( /*myState*/ );
-        }
-    
-    DP_SDA("CPresencePluginAuthorization::WinfoTerminatedL end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoSubscribePresenceGrantRequestListL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoSubscribePresenceGrantRequestListL(
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("DoSubscribePresenceGrantRequestListL ");
-    iConnObs.WinfoHandlerL()->SubscribeWinfoListL( aReqId );
-    iSubscribed = ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoUnsubscribePresenceGrantRequestListL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoUnsubscribePresenceGrantRequestListL(
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("DoUnsubscribePresenceGrantRequestListL ");
-    iConnObs.WinfoHandlerL()->UnsubscribeWinfoListL( aReqId );
-    iSubscribed = EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoGrantPresenceForPresentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoGrantPresenceForPresentityL(
-    const MXIMPIdentity& aPresentityId,
-    const MPresenceInfoFilter& /*aPif*/,  // notice: pif support
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("CPresencePluginAuthorization::DoGrantPresenceForPresentityL ");
-    
-    // Workaround for clients that can only grant when accepting buddy request.
-    // SIMPLE also requires grant + subscribe so do both here even though
-    // it is agains ximp api definitions.
-    
-    _LIT( KDefaultBuddyList, "buddylist" );
-    
-    iAuthState = EStateAcceptBuddyRequest;
-    MXIMPIdentity* buddyList = iConnObs.ObjectFactory().NewIdentityLC(); 
-    buddyList->SetIdentityL( KDefaultBuddyList() ); 
-    
-    iConnObs.GroupsL().DoAddPresentityGroupMemberL( *buddyList, aPresentityId,
-        KNullDesC(), aReqId );
-    CleanupStack::PopAndDestroy( 1 ); // buddyList 
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoPerformGrantPresenceForPresentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoPerformGrantPresenceForPresentityL(
-    const MXIMPIdentity& aPresentityId,
-    TRequestStatus& aClientStatus )
-    {
-    DP_SDA("CPresencePluginAuthorization::DoPerformGrantPresenceForPresentityL");
-    StartXdmOperationL( aPresentityId, 
-        EGrantPresenceForPresentity, aClientStatus );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoUpdatePresenceGrantPifForPresentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoUpdatePresenceGrantPifForPresentityL(
-    const MXIMPIdentity& /*aPresentityId*/,
-    const MPresenceInfoFilter& /*aPif*/,
-    TXIMPRequestId /*aReqId*/ )
-    {
-    // Notice: later
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoWithdrawPresenceGrantFromPresentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoWithdrawPresenceGrantFromPresentityL(
-    const MXIMPIdentity& aPresentityId,
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("CPresencePluginAuth::DoWithdrawPresenceGrantFromPresentityL ");
-    StartXdmOperationL( aPresentityId, aReqId, EWithdrawFromPresentity );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoPerformWithdrawPresGrantFromPresentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoPerformWithdrawPresGrantFromPresentityL(
-    const MXIMPIdentity& aPresentityId,
-    TRequestStatus& aClientStatus )
-    {
-    DP_SDA("CPresencePluginAuthorization");
-    DP_SDA(" -> DoPerformWithdrawPresGrantFromPresentityL");
-    StartXdmOperationL( aPresentityId,
-        EWithdrawFromPresentity, aClientStatus );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoGrantPresenceForPresentityGroupMembersL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoGrantPresenceForPresentityGroupMembersL(
-    const MXIMPIdentity& /*aGroupId*/,
-    const MPresenceInfoFilter& /*aPif*/,
-    TXIMPRequestId /*aReqId*/ )
-    {
-    DP_SDA("CPresencePluginAuthorization::DoGrantPresenceForPresentityGroupMembersL -not supported");
-    
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::
-// DoUpdatePresenceGrantPifForPresentityGroupMembersL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::
-    DoUpdatePresenceGrantPifForPresentityGroupMembersL(
-    const MXIMPIdentity& /*aGroupId*/,
-    const MPresenceInfoFilter& /*aPif*/,
-    TXIMPRequestId /*aReqId*/ )
-    {
-    DP_SDA("CPresencePluginAuthorization::DoUpdatePresenceGrantPifForPresentityGroupMembersL -not supported");
-    
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::
-// DoWithdrawPresenceGrantFromPresentityGroupMembersL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::
-    DoWithdrawPresenceGrantFromPresentityGroupMembersL(
-    const MXIMPIdentity& /*aGroupId*/,
-    TXIMPRequestId /*aReqId*/ )
-    {
-    DP_SDA("CPresencePluginAuthorization::DoWithdrawPresenceGrantFromPresentityGroupMembersL -not supported");
-    
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoGrantPresenceForEveryoneL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoGrantPresenceForEveryoneL(
-    const MPresenceInfoFilter& /*aPif*/,
-    TXIMPRequestId /*aReqId*/ )
-    {
-    DP_SDA("CPresencePluginAuthorization::DoGrantPresenceForEveryoneL -not supported");
-    
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoUpdatePresenceGrantPifForEveryoneL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoUpdatePresenceGrantPifForEveryoneL(
-    const MPresenceInfoFilter& /*aPif*/,
-    TXIMPRequestId /*aReqId*/ )
-    {
-    DP_SDA("CPresencePluginAuthorization::DoUpdatePresenceGrantPifForEveryoneL -not supported");
-    
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoWithdrawPresenceGrantFromEveryoneL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoWithdrawPresenceGrantFromEveryoneL(
-    TXIMPRequestId /*aReqId*/ )
-    {
-    DP_SDA("CPresencePluginAuthorization::DoWithdrawPresenceGrantFromEveryoneL -not supported");
-    
-    User::Leave( KErrNotSupported );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoSubscribePresenceBlockListL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoSubscribePresenceBlockListL(
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("CPresencePluginAuthorization::DoSubscribePresenceBlockListL ");
-    MXIMPIdentity* nobody = iConnObs.ObjectFactory().NewIdentityLC(); 
-    StartXdmOperationL( *nobody, aReqId, ESubscribeBlockList );
-    // Cannot PopAndDestroy by name
-    CleanupStack::PopAndDestroy( );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoUnsubscribePresenceBlockListL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoUnsubscribePresenceBlockListL(
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("CPresencePluginAuthorization::DoUnsubscribePresenceBlockListL ");
-    MXIMPIdentity* nobody = iConnObs.ObjectFactory().NewIdentityLC();
-    StartXdmOperationL( *nobody, aReqId, EUnsubscribeBlockList );
-    // Cannot PopAndDestroy by name
-    CleanupStack::PopAndDestroy();
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoBlockPresenceForPresentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoBlockPresenceForPresentityL(
-    const MXIMPIdentity& aPresentityId,
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA("CPresencePluginAuthorization::DoBlockPresenceForPresentityL ");
-    StartXdmOperationL( aPresentityId, aReqId, EBlockPresentity );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoPerformBlockPresenceForPresentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoPerformBlockPresenceForPresentityL(
-    const MXIMPIdentity& aPresentityId,
-    TRequestStatus& aClientStatus )
-    {
-    DP_SDA(
-        "CPresencePluginAuthorization::DoPerformBlockPresenceForPresentityL");
-    StartXdmOperationL( aPresentityId, EBlockPresentity, aClientStatus );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoCancelPresenceBlockFromPresentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoCancelPresenceBlockFromPresentityL(
-    const MXIMPIdentity& aPresentityId,
-    TXIMPRequestId aReqId )
-    {
-    DP_SDA(" DoCancelPresenceBlockFromPresentityL ");
-    StartXdmOperationL( aPresentityId, aReqId, EUnblockPresentity );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoPerformCancelPresenceBlockFromPresentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoPerformCancelPresenceBlockFromPresentityL(
-    const MXIMPIdentity& aPresentityId,
-    TRequestStatus& aClientStatus )
-    {
-    DP_SDA(" DoPerformCancelPresenceBlockFromPresentityL (list)");
-    StartXdmOperationL( aPresentityId, EUnblockPresentity, aClientStatus );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::DoCancel()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::DoCancel(  )
-    {
-    iXdmUtils->Cancel();
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::RunL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::RunL(  )
-    {
-    TInt myStatus = iStatus.Int();
-    
-    DP_SDA2( "CPresencePluginAuthorization::RunL mystatus %d ", myStatus );
-    DP_SDA2( "CPresencePluginAuthorization::RunL state %d ",iOperation );
-    
-    if ( !iXdmOk && !myStatus )
-        {
-        DP_SDA( "CPresencePluginAuthorization::RunL !iXdmOk && !myStatus" );
-        iXdmOk = ETrue;
-        CallActualXdmOperationL();
-        }
-    else if ( iClientStatus )
-        {
-        DP_SDA( "CPresencePluginAuthorization::RunL - complete client" );
-        TRequestStatus* s = iClientStatus;
-        User::RequestComplete( s, myStatus );
-        iClientStatus = NULL;
-        DP_SDA( "CPresencePluginAuthorization::RunL - complete client ok" );
-        }
-    else if ( !myStatus )
-        {
-        switch ( iAuthState )
-            {
-            case EStateDoBlock:
-                {
-                DP_SDA( "CPresencePluginAuthorization::RunL - Block presentity" );
-                BlockPresentityL();
-                iAuthState = EStateRemovePresentityFromGranted;
-                }
-                break;
-                
-            case EStateRemovePresentityFromGranted:
-                {
-                DP_SDA( "CPresencePluginAuthorization::RunL - Remove presentity from granted" );
-                WithdrawFromPresentityL();
-                iAuthState = EStateBlocked;
-                }
-                break;
-            
-            case EStateBlocked:
-                {
-                DP_SDA( "CPresencePluginAuthorization::RunL - Blocked" );
-                SetPresentityBlockedToXIMPL();
-                iAuthState = EStateIdle;
-                CompleteXIMPReq( myStatus );
-                }
-                break;
-
-            case EStateIsContactBlockedBuddyRequest:
-                {
-                DP_SDA( "CPresencePluginAuthorization::RunL - Resolve contact type" );
-                // resolve is contact blocked friend request
-                HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *iPresIdentity );
-                IsBlockedContactFriendRequestL( *withoutPrefix, *this, iStatus );
-                CleanupStack::PopAndDestroy( withoutPrefix );
-                SetActive();
-                iAuthState = EStateDoUnBlock;
-                }
-                break;
-                
-            case EStateDoUnBlock:
-                {
-                if ( iContactIsStored )
-                    {
-                    DP_SDA( "CPresencePluginAuthorization::RunL - Grant presence for presentity" );
-                    GrantPresenceForPresentityL();
-                    iAuthState = EStatePresenceGranted;
-                    }
-                else
-                    {
-                    DP_SDA( "CPresencePluginAuthorization::RunL - Complete unblock" );
-                    iAuthState = EStateIdle;
-                    CompleteXIMPReq( myStatus );
-                    }
-                }
-                break;
-            
-            case EStatePresenceGranted:
-                {
-                DP_SDA( "CPresencePluginAuthorization::RunL -Subscribe presentity presence" );  
-                MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC();
-                identity->SetIdentityL( iPresIdentity->Des() ); 
-                iConnObs.WatcherHandlerL()->DoPerformSubscribePresentityPresenceL( *identity, iStatus );
-                CleanupStack::PopAndDestroy( ); //identity 
-                iAuthState = EStateSubscribe;
-                SetActive();
-                }
-                break;
-                
-            case EStateSubscribe:
-                {
-                DP_SDA( "CPresencePluginAuthorization::RunL -UnBlock completed" ); 
-                HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *iPresIdentity );
-                iPresenceData->WriteStatusToCacheL( *withoutPrefix, 
-                    MPresenceBuddyInfo2::ENotAvailable,
-                    KInvisibleState(),
-                    KNullDesC() );
-                CleanupStack::PopAndDestroy( withoutPrefix );
-                iAuthState = EStateIdle;
-                CompleteXIMPReq( myStatus );
-                }
-                break;
-                
-            default:
-                {
-                DP_SDA( "CPresencePluginAuthorization::RunL - default case" );
-                CompleteXIMPReq( myStatus );
-                }
-                break;
-            }
-        }
-    else if ( KErrNotFound == myStatus && EStateDoBlock == iAuthState )
-        {
-        // When blocking friend request, watcher was not found but request
-        // has to be blocked anyways.
-        DP_SDA( "CPresencePluginAuthorization::RunL - Block presentity" );
-        BlockPresentityL();
-        iAuthState = EStateBlocked;
-        }
-    else
-        {
-        DP_SDA( "CPresencePluginAuthorization::RunL -error" );
-        CompleteXIMPReq( myStatus );
-        }
-        
-    if ( EStateAcceptBuddyRequest == iAuthState && EGrantPresenceForPresentity == iOperation )
-        {
-        iAuthState = EStateIdle;
-        HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *iPresIdentity );
-        CallHandlePresenceGrantRequestObsoletedL( *withoutPrefix );
-        iConnObs.SubscribedContacts()->HandlePresentityGroupMemberAddedL( *withoutPrefix );
-        CleanupStack::PopAndDestroy( withoutPrefix );
-        }
-    
-    DP_SDA( "CPresencePluginAuthorization::RunL - exit" );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::CallActualXdmOperationL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::CallActualXdmOperationL()
-    {
-    DP_SDA("CPresencePluginAuthorization::CallActualXdmOperationL ");
-    DP_SDA2("CallActualXdmOperationL operation %d", iOperation );
-    iComplete = EFalse;
-    switch ( iOperation )
-        {
-        case EGrantPresenceForPresentity:
-            {
-            DP_SDA("CallActualXdmOperationL EGrantPresenceForPresentity");
-            GrantPresenceForPresentityL();
-            }
-            break;
-            
-        case EWithdrawFromPresentity:
-            {
-            DP_SDA("CallActualXdmOperationL EWithdrawFromPresentity");
-            WithdrawFromPresentityL();
-            }
-            break;
-            
-        case ESubscribeBlockList:
-            {
-            SubscribeBlockListL( );
-            }
-            break;
-            
-        case EUnsubscribeBlockList:
-            {
-            UnSubscribeBlockListL();
-            }
-            break;
-            
-        case EBlockPresentity:
-            {
-            DP_SDA( "CallActualXdmOperationL EBlockPresentity" );
-            
-            TRAPD( error, UnsubscribePresentityPresenceL() );
-            
-            if( error )
-                {
-                DP_SDA2( "Unsubscribe presentity FAIL, error = %d" , error );
-                
-                if ( KErrNotFound != error  )
-                    {
-                    User::Leave( error );
-                    }
-                BlockPresentityL();
-                iAuthState = EStateBlocked;
-                }
-            else
-                {
-                iAuthState = EStateDoBlock;
-                }
-            }
-            break;
-            
-        case EUnblockPresentity:
-            {
-            DP_SDA("CallActualXdmOperationL EUnblockPresentity"); 
-            UnblockPresentityL();
-            }
-            break;
-            
-        default:
-            User::Leave( KErrNotSupported );
-            break;
-        }
-    DP_SDA("CPresencePluginAuthorization::CallActualXdmOperationL end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::RunError()
-// ---------------------------------------------------------------------------
-//
-TInt CPresencePluginAuthorization::RunError( TInt aError )
-    {
-    // complete the open request
-    CompleteXIMPReq( aError );
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::GetInterface()
-// ---------------------------------------------------------------------------
-//
-TAny* CPresencePluginAuthorization::GetInterface(
-    TInt32 aInterfaceId,
-    TIfGetOps aOptions )
-    {
-    if ( aInterfaceId == GetInterfaceId() )
-        {
-        // caller wants this interface
-        return this;
-        }
-    if ( aOptions == MXIMPBase::EPanicIfUnknown )
-        {
-        User::Panic( KPluginName, KErrExtensionNotSupported );
-        }  
-    return NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::GetInterface() const
-// ---------------------------------------------------------------------------
-//
-const TAny* CPresencePluginAuthorization::GetInterface(
-    TInt32 aInterfaceId,
-    TIfGetOps aOptions ) const
-    {
-    if ( aInterfaceId == GetInterfaceId() )
-        {
-        // caller wants this interface
-        return const_cast<CPresencePluginAuthorization*>(this);
-        }
-    if ( aOptions == MXIMPBase::EPanicIfUnknown )
-        {
-        User::Panic( KPluginName, KErrExtensionNotSupported );
-        }  
-    return NULL;
-    }
-    
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::GetInterfaceId()
-// ---------------------------------------------------------------------------
-//
-TInt32 CPresencePluginAuthorization::GetInterfaceId() const
-    {
-    return MProtocolPresenceAuthorization::KInterfaceId;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::SetPresIdentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::SetPresIdentityL(
-    const MXIMPIdentity& aPresentityId,
-    TBool aFormatUri )
-    {  
-    DP_SDA2("CPresencePluginAuthorization::SetPresIdentityL: %S",
-        &aPresentityId.Identity() );
-    
-    delete iPresIdentity;
-    iPresIdentity = NULL;
-    
-    if ( aFormatUri )
-        {
-        DP_SDA("CPresencePluginAuthorization::SetPresIdentityL, add prefix");
-        
-        HBufC8* identityCopy = HBufC8::NewLC( KBufSize255 );
-        TPtr8 identityCopyPtr( identityCopy->Des() );
-        identityCopyPtr.Copy( aPresentityId.Identity() );
-        
-        HBufC8* prefixUri = iPresenceData->CreatePresenceUri8LC( 
-            identityCopyPtr );
-        
-        HBufC* prefixUri16 = HBufC::NewLC( KBufSize255 );
-        TPtr prefixUri16Ptr( prefixUri16->Des() );
-        prefixUri16Ptr.Copy( *prefixUri );
-        
-        iPresIdentity = prefixUri16;
-        CleanupStack::Pop( prefixUri16 );
-        CleanupStack::PopAndDestroy( prefixUri );
-        CleanupStack::PopAndDestroy( identityCopy );
-        }
-    else
-        {
-        DP_SDA(" SetPresIdentityL, use as it is");
-        iPresIdentity = aPresentityId.Identity().AllocL();
-        }
-    DP_SDA( "CPresencePluginAuthorization::SetPresIdentityL -exit" );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::WinfoNotificationL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::WinfoNotificationL(
-    MSimpleWinfo& aWinfo )
-    {
-    DP_SDA("CPresencePluginAuthorization::WinfoNotificationL");
-    // Ignore notification if not subscribed
-    using namespace NPresencePlugin::NPresence;
-    
-    RPointerArray<MSimpleElement> elems;
-    CleanupClosePushL( elems );
-    TInt err = aWinfo.SimpleElementsL( elems );
-    User::LeaveIfError( err );
-    TInt count = elems.Count();
-    
-    DP_SDA2("CPresencePluginAuthorization::WinfoNotificationL count %d",
-        count);
-    
-    if ( !count ) 
-        { 
-        // stop parsing empty notification 
-        DP_SDA("CPresencePluginAuthorization::WinfoNotificationL LEAVE");
-        User::Leave( KErrArgument ); 
-        } 
-    
-    const TDesC8* stateVal = aWinfo.AttrValue( KPresenceState8 ); 
-    if ( stateVal && !stateVal->CompareF( KPresenceFull8 )) 
-        { 
-        // Call full list method
-        DP_SDA("CPresencePluginAuthorization::WinfoNotificationL FULL winfo");
-        HandleFullWinfoNotificationL( aWinfo ); 
-        } 
-    else 
-        { 
-        // Indicate changes in WINFO list one by one.
-        DP_SDA("CPresencePluginAuthorization::WinfoNotificationLPARTIAL winfo");
-        HandlePartialWinfoNotificationL( aWinfo );
-        } 
-    CleanupStack::PopAndDestroy( &elems );
-    DP_SDA("CPresencePluginAuthorization::WinfoNotificationL end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::StartXdmOperationL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::StartXdmOperationL(
-    const MXIMPIdentity& aId,
-    TXIMPRequestId aReqId,
-    TPluginAuthOperation aOperation )
-    {
-    __ASSERT_DEBUG( !IsActive(), User::Leave( KErrNotReady ) );
-    DP_SDA("CPresencePluginAuthorization::StartXdmOperationL 2");
-    SetPresIdentityL( aId, ETrue );
-    
-    iXIMPId = aReqId;
-    iOperation = aOperation;
-    if ( !iXdmUtils )
-        {
-        DP_SDA("StartXdmOperationL !iXdmUtils");
-        iXdmUtils = iConnObs.XdmUtilsL();
-        }
-    if ( iXdmUtils->CheckXdmDoc() )
-        {
-        DP_SDA("StartXdmOperationL iXdmOk");
-        iXdmOk = ETrue;
-        CallActualXdmOperationL();
-        }
-    else
-        {
-        DP_SDA("StartXdmOperationL else");
-        iXdmUtils->InitializeXdmL( iStatus );
-        SetActive();
-        }
-    DP_SDA("CPresencePluginAuthorization::StartXdmOperationL end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::StartXdmOperationL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::StartXdmOperationL(
-    const MXIMPIdentity& aId,
-    TPluginAuthOperation aOperation,
-    TRequestStatus& aClientStatus )
-    {
-    __ASSERT_DEBUG( !IsActive(), User::Leave( KErrNotReady ) );
-    DP_SDA("CPresencePluginAuthorization::StartXdmOperationL 3 (list)");
-    
-    SetPresIdentityL( aId, EFalse );
-    
-    iClientStatus = &aClientStatus;
-    *iClientStatus = KRequestPending;
-    
-    iOperation = aOperation;
-    
-    if ( !iXdmUtils )
-        {
-        DP_SDA("StartXdmOperationL !iXdmUtils");
-        iXdmUtils = iConnObs.XdmUtilsL();
-        }
-    if ( iXdmUtils->CheckXdmDoc() )
-        {
-        DP_SDA("StartXdmOperationL iXdmOk");
-        iXdmOk = ETrue;
-        CallActualXdmOperationL();
-        }
-    else
-        {
-        DP_SDA("StartXdmOperationL else");
-        iXdmUtils->InitializeXdmL( iStatus );
-        SetActive();
-        }
-    DP_SDA("CPresencePluginAuthorization::StartXdmOperationL end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::CompleteXIMPReq()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::CompleteXIMPReq( TInt aStatus )
-    {
-    DP_SDA("CPresencePluginAuthorization::CompleteXIMPReq");
-    iOperation = ENoOperation;
-    iConnObs.CompleteReq( iXIMPId, aStatus );
-    iXIMPId = TXIMPRequestId();
-    DP_SDA("CPresencePluginAuthorization::CompleteXIMPReq end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::SubscribeBlockListL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::SubscribeBlockListL()
-    {
-    DP_SDA("CPresencePluginAuthorization::SubscribeBlockList");
-    
-    RPointerArray<MXIMPIdentity> blocked;
-    CleanupStack::PushL( TCleanupItem(
-        TPresencePluginUtility::ResetAndDestroyIdentities,
-        &blocked ) );
-    
-    iXdmUtils->SubscribeBlockListL( blocked );
-    MXIMPObjectCollection* coll =
-        iConnObs.ObjectFactory().NewObjectCollectionLC(); // << coll
-    
-    TInt count = blocked.Count();
-    for ( TInt i = 0; i < count; i++ )
-        {
-        MXIMPIdentity* currId = blocked[i];
-        HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( currId->Identity() );
-        currId->SetIdentityL( *withoutPrefix );
-        CleanupStack::PopAndDestroy( withoutPrefix );
-        MPresenceBlockInfo* bInfo =
-            iConnObs.PresenceObjectFactoryOwn().NewPresenceBlockInfoLC();
-        bInfo->SetBlockedEntityIdL( currId ); // ownership is taken
-        blocked.Remove( i ); // remove currId from blocked
-        blocked.InsertL( NULL, i );
-        bInfo->SetBlockedEntityDisplayNameL( currId->Identity() );
-        coll->AddObjectL( bInfo );// ownership is taken
-        CleanupStack::Pop();// >> bInfo
-        }
-    
-    DP_SDA("SubscribeBlockList complete request");
-    CompleteXIMPReq( KErrNone );
-    
-    MXIMPDataSubscriptionState* myState =
-       iConnObs.ObjectFactory().NewDataSubscriptionStateLC();
-    
-    MXIMPStatus* myStatus = iConnObs.ObjectFactory().NewStatusLC();
-    
-    // Notice: consider XIMP error codes
-    myStatus->SetResultCode( KErrNone );
-    myState->SetSubscriptionStateL(
-        MXIMPDataSubscriptionState::ESubscriptionInactive );
-    
-    iDataHost->SetPresenceBlockDataSubscriptionStateL(
-        myState, myStatus );
-    
-    iDataHost->HandlePresenceBlockListL( coll );
-    //Callback for subscription result
-    CleanupStack::Pop( 3 ); // >> myState, myStatus, coll
-    CleanupStack::PopAndDestroy( &blocked );
-    DP_SDA("CPresencePluginAuthorization::SubscribeBlockList end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::UnSubscribeBlockListL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::UnSubscribeBlockListL()
-    {
-    DP_SDA("CPresencePluginAuthorization::UnSubscribeBlockListL");
-    
-    MXIMPObjectCollection* coll =
-        iConnObs.ObjectFactory().NewObjectCollectionLC();
-    
-    MXIMPDataSubscriptionState* myState =
-        iConnObs.ObjectFactory().NewDataSubscriptionStateLC();
-    
-    MXIMPStatus* myStatus = iConnObs.ObjectFactory().NewStatusLC();
-    
-    myStatus->SetResultCode( KErrNone );
-    myState->SetSubscriptionStateL(
-        MXIMPDataSubscriptionState::ESubscriptionInactive );
-    
-    iDataHost->SetPresenceBlockDataSubscriptionStateL(
-        myState, myStatus );
-    
-    iDataHost->HandlePresenceBlockListL( coll );
-    
-    CleanupStack::Pop( 3 );
-    
-    CompleteXIMPReq( KErrNone );
-    
-    DP_SDA("CPresencePluginAuthorization::UnSubscribeBlockListL end");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::ReturnListSubsState()
-// ---------------------------------------------------------------------------
-//
-TBool CPresencePluginAuthorization::ReturnListSubsState()
-    {
-    return iSubscribed;
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::PluginData()
-// ---------------------------------------------------------------------------
-//
-CPresencePluginData& CPresencePluginAuthorization::PluginData()
-    {
-    return *iPresenceData;
-    }
-
-// --------------------------------------------------------------------------- 
-// CPresencePluginAuthorization::HandleFullWinfoNotificationL 
-// --------------------------------------------------------------------------- 
-// 
-void CPresencePluginAuthorization::HandleFullWinfoNotificationL( 
-    MSimpleWinfo& aWinfo )
-    {
-    using namespace NPresencePlugin::NPresence;
-    
-    RPointerArray<MSimpleElement> elems;
-    CleanupClosePushL( elems );
-    TInt err = aWinfo.SimpleElementsL( elems );
-    User::LeaveIfError( err );
-    TInt count = elems.Count();
-    
-    MSimpleElement* elem = elems[0];
-    TPtrC8 p8 = elem->LocalName();
-    err = p8.CompareF( KPresenceWatcherList8 ); //watcher-list
-    DP_SDA2("HandleFullWinfoNotificationL leave if watcherlist error %d", err);
-    User::LeaveIfError( err );
-    
-    err = elem->SimpleElementsL( elems );
-    DP_SDA2("HandleFullWinfoNotificationL error %d", err);
-    User::LeaveIfError( err );
-    
-    count = elems.Count();
-    DP_SDA("HandleFullWinfoNotificationL watcher list is valid");
-    
-    // Search watchers who are pending (status = pending)
-    HBufC* nodeContent = NULL;
-    MXIMPObjectCollection *pendings =
-        iConnObs.ObjectFactory().NewObjectCollectionLC();
-    
-    TBool pendingFound(EFalse);
-    
-    for ( TInt i = 0; i < count; i++ )
-        {
-        elem = elems[i];
-        p8.Set( elem->LocalName());
-        if (!( p8.CompareF( KPresenceWatcher8 )))
-            {
-            const TDesC8* pp8 = elem->AttrValue( KPresenceStatus8 );
-            if ( pp8 && !pp8->CompareF( KPresencePending8 ))
-                {
-                DP_SDA("HandleFullWinfoNotificationL least one pending");
-                // Build collection of grant requests
-                // Find the child node containing the SIP entity
-                nodeContent = elem->ContentUnicodeL();
-                CleanupStack::PushL( nodeContent );
-                // create the collection entry here 
-                MPresenceGrantRequestInfo* grInfo =
-                   iConnObs.PresenceObjectFactoryOwn().
-                       NewPresenceGrantRequestInfoLC();
-                MXIMPIdentity* identity =
-                    iConnObs.ObjectFactory().NewIdentityLC();
-                
-                // Remove prefix to keep client side protocol agnostic
-                HBufC16* withoutPrefix = iPresenceData->RemovePrefixLC( 
-                    *nodeContent );
-                identity->SetIdentityL( *withoutPrefix );
-                CleanupStack::PopAndDestroy( withoutPrefix );
-                
-                grInfo->SetRequestorIdL( identity ); // ownership is taken
-                
-                pendings->AddObjectL( grInfo ); // ownership is taken
-                pendingFound = ETrue;
-                CleanupStack::Pop( 2 ); //grInfo, identity
-                CleanupStack::PopAndDestroy( nodeContent );
-                }
-            }
-        }
-    
-    if ( pendingFound )
-        {
-        DP_SDA("HandleFullWinfoNotificationL send pending");
-        iXIMPIdOwn = iDataHost->HandlePresenceGrantRequestListL( pendings );
-        CleanupStack::Pop();    // >> pendings
-        }
-    else
-        {
-        DP_SDA("HandleFullWinfoNotificationL pop pending");
-        CleanupStack::PopAndDestroy( ); // >> pendings
-        }
-    
-    CleanupStack::PopAndDestroy( &elems );
-    DP_SDA("CPresencePluginAuthorization::HandleFullWinfoNotificationL END");
-    } 
- 
-// --------------------------------------------------------------------------- 
-// CPresencePluginAuthorization::HandlePartialWinfoNotificationL 
-// --------------------------------------------------------------------------- 
-// 
-void CPresencePluginAuthorization::HandlePartialWinfoNotificationL( 
-    MSimpleWinfo& aWinfo )
-    {
-    DP_SDA("CPresencePluginAuthorization::HandlePartialWinfoNotificationL");
-    using namespace NPresencePlugin::NPresence;
-    
-    RPointerArray<MSimpleElement> elems;
-    CleanupClosePushL( elems );
-    TInt err = aWinfo.SimpleElementsL( elems );
-    User::LeaveIfError( err );
-    TInt count = elems.Count();
-    
-    MSimpleElement* elem = elems[0];
-    TPtrC8 p8 = elem->LocalName();
-    err = p8.CompareF( KPresenceWatcherList8 );
-    User::LeaveIfError( err );
-    
-    err = elem->SimpleElementsL( elems );
-    User::LeaveIfError( err );
-    count = elems.Count();
-    
-    HBufC* nodeContent = NULL;
-    
-    for ( TInt i = 0; i < count; i++ )
-        {
-        elem = elems[i]; 
-        p8.Set( elem->LocalName());
-        if (!( p8.CompareF( KPresenceWatcher8 )))
-            { 
-            const TDesC8* pp8 = elem->AttrValue( KPresenceStatus8 );
-            if ( pp8 && !pp8->CompareF( KPresencePending8 ))
-                {
-                nodeContent = elem->ContentUnicodeL();
-                CleanupStack::PushL( nodeContent );
-                
-                // Remove prefix to keep client side protocol agnostic
-                HBufC16* withoutPrefix = iPresenceData->RemovePrefixLC( 
-                    *nodeContent );
-                CallHandlePresenceGrantRequestReceivedL( *withoutPrefix ); 
-                CleanupStack::PopAndDestroy( withoutPrefix );
-                CleanupStack::PopAndDestroy( nodeContent ); 
-                } 
-            else if ( pp8 && !pp8->CompareF( KPresenceTerminated8 )) 
-                {
-                nodeContent = elem->ContentUnicodeL(); 
-                CleanupStack::PushL( nodeContent ); 
-
-                // Remove prefix to keep client side protocol agnostic
-                HBufC16* withoutPrefix = iPresenceData->RemovePrefixLC( 
-                    *nodeContent );
-                CallHandlePresenceGrantRequestObsoletedL( *withoutPrefix ); 
-                CleanupStack::PopAndDestroy( withoutPrefix );
-                CleanupStack::PopAndDestroy( nodeContent ); 
-                }
-            else if ( pp8 && !pp8->CompareF( KPresenceActive8 ))
-                {
-                DP_SDA( "CPresencePluginAuthorization::HandlePartialWinfoNotificationL presence active" );
-                
-                nodeContent = elem->ContentUnicodeL();
-                CleanupStack::PushL( nodeContent );
-                TInt pos( 0 );
-                if ( iConnObs.SubscribedContacts()->
-                    GetVirtualIdentityArray()->Find( *nodeContent, pos ) == 0  )
-                    {
-                    HBufC8* buffer = HBufC8::NewLC( nodeContent->Length() );
-                    buffer->Des().Copy( *nodeContent );
-                    if ( !iConnObs.WatcherHandlerL()->MatchWatcherId( *buffer ) )
-                        {
-                        DP_SDA( "CPresencePluginAuthorization::HandlePartialWinfoNotificationL -subscribe presence" );
-                        iConnObs.WatcherHandlerL()->SubscribeL( *nodeContent );
-                        }
-                    CleanupStack::PopAndDestroy( buffer );
-                    }
-                CleanupStack::PopAndDestroy( nodeContent );
-                }
-            }
-        }
-    CleanupStack::PopAndDestroy( &elems );
-    DP_SDA("CPresencePluginAuthorization::HandlePartialWinfoNotificationL END");
-    } 
-
-// --------------------------------------------------------------------------- 
-// CPresencePluginAuthorization::CallHandlePresenceGrantRequestReceivedL 
-// --------------------------------------------------------------------------- 
-// 
-void CPresencePluginAuthorization::CallHandlePresenceGrantRequestReceivedL(
-    const TDesC& aUserId ) 
-    {
-    DP_SDA("PluginAuthorization::CallHandlePresenceGrantRequestReceivedL");
-    // create the collection entry here 
-    MPresenceGrantRequestInfo* grInfo = 
-        iConnObs.PresenceObjectFactoryOwn().NewPresenceGrantRequestInfoLC();
-    MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC();
-    identity->SetIdentityL( aUserId ); 
-    grInfo->SetRequestorIdL( identity ); // ownership is taken
-    CleanupStack::Pop( ); // -identity 
-    
-    iDataHost->HandlePresenceGrantRequestReceivedL( grInfo );//ownership taken 
-    CleanupStack::Pop( );           // -grInfo
-    DP_SDA("PluginAuthorization::CallHandlePresenceGrantRequestReceivedL END");
-    } 
-
-// --------------------------------------------------------------------------- 
-// CPresencePluginAuthorization::CallHandlePresenceGrantRequestObsoletedL 
-// --------------------------------------------------------------------------- 
-// 
-void CPresencePluginAuthorization::CallHandlePresenceGrantRequestObsoletedL(
-    const TDesC& aUserId )
-    {
-    DP_SDA("PluginAuthorization::CallHandlePresenceGrantRequestObsoletedL");
-    MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC(); 
-    identity->SetIdentityL( aUserId ); 
-    iDataHost->HandlePresenceGrantRequestObsoletedL( identity );//taken 
-    CleanupStack::Pop( );// >> identity
-    DP_SDA("PluginAuthorization::CallHandlePresenceGrantRequestObsoletedL END");
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::GrantPresenceForPresentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::GrantPresenceForPresentityL()
-    {
-    iXdmUtils->AddEntityToGrantedL( 
-        iPresIdentity->Des(), iStatus );
-    SetActive();
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::WithdrawFromPresentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::WithdrawFromPresentityL()
-    {
-    iXdmUtils->RemoveEntityFromGrantedL( 
-        iPresIdentity->Des(),iStatus );
-    SetActive();
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::UnsubscribePresentityPresenceL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::UnsubscribePresentityPresenceL()
-    {
-    DP_SDA( "CPresencePluginAuthorization::UnsubscribePresentityPresence" );
-    
-    MXIMPIdentity* identity =
-        iConnObs.ObjectFactory().NewIdentityLC();
-    identity->SetIdentityL( iPresIdentity->Des() );
-    iConnObs.WatcherHandlerL()->
-        DoPerformUnsubscribePresentityPresenceL( *identity, iStatus );
-    CleanupStack::PopAndDestroy(); // identity
-    SetActive();
-    
-    DP_SDA( "CPresencePluginAuthorization::UnsubscribePresentityPresence -Exit" );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::BlockPresentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::BlockPresentityL()
-    {
-    DP_SDA( "CPresencePluginAuthorization::BlockPresentityL" );
-    // add entity to block list
-    iXdmUtils->AddEntityToBlockedL( 
-        iPresIdentity->Des(), iStatus );
-    SetActive();
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::BlockPresentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::SetPresentityBlockedToXIMPL()
-    {
-    DP_SDA( "CPresencePluginAuthorization::SetPresentityBlockedToXIMPL" );
-    
-    MPresenceBlockInfo* bInfo =
-        iConnObs.PresenceObjectFactoryOwn().NewPresenceBlockInfoLC();
-    MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC();
-    HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *iPresIdentity );
-    identity->SetIdentityL( *withoutPrefix ); 
-    bInfo->SetBlockedEntityIdL( identity ); // ownership is taken
-    // Write blocked state into the presence cache
-    TBuf<20> buf;
-    buf.Copy( KBlockedExtensionValue );
-    iPresenceData->WriteStatusToCacheL(
-        *withoutPrefix, 
-        MPresenceBuddyInfo2::EUnknownAvailability,
-        buf,
-        KNullDesC() );
-    CleanupStack::PopAndDestroy( withoutPrefix );
-    iDataHost->HandlePresenceBlockedL( bInfo );
-    CleanupStack::Pop();// >> identity
-    CleanupStack::Pop();// >> bInfo
-    
-    DP_SDA( "CPresencePluginAuthorization::SetPresentityBlockedToXIMPL -Exit" );
-    }
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::UnblockPresentityL()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::UnblockPresentityL()
-    {
-    DP_SDA( "CPresencePluginAuthorization::UnblockPresentityL" );
-     
-    //remove entity from blocked list 
-    iXdmUtils->RemoveEntityFromBlockedL( 
-        iPresIdentity->Des(), iStatus );
-    //remove enity from ximp blocked too
-    MXIMPIdentity* identity = iConnObs.ObjectFactory().NewIdentityLC();
-    HBufC* withoutPrefix = iPresenceData->RemovePrefixLC( *iPresIdentity );
-    identity->SetIdentityL( *withoutPrefix );
-    CleanupStack::PopAndDestroy( withoutPrefix );
-    iDataHost->HandlePresenceBlockCanceledL( identity );
-    CleanupStack::Pop();// >> identity
-    iAuthState = EStateIsContactBlockedBuddyRequest;
-    SetActive();
-    
-    DP_SDA( "CPresencePluginAuthorization::UnblockPresentityL -Exit" );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CPresencePluginAuthorization::IsBlockedContactFriendRequest()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::IsBlockedContactFriendRequestL(
-    const TDesC& aPresenceId,
-    MPresencePluginContactsObs& aObserver,
-    TRequestStatus& aStatus )
-    {
-    DP_SDA( "CPresencePluginAuthorization::IsBlockedContactFriendRequest" );
-
-    delete iContacts;
-    iContacts = NULL;
-
-    HBufC* serviceName =
-        iPresenceData->ServiceNameLC( iPresenceData->ServiceId() );
-
-    iContacts = CPresencePluginContacts::NewL(
-        iPresenceData->ServiceId(), *serviceName, aObserver );
-
-    CleanupStack::PopAndDestroy( serviceName );
-
-    iContacts->IsPresenceIdStoredL( aPresenceId, aStatus );
-
-    DP_SDA( "CPresencePluginAuthorization::IsBlockedContactFriendRequest -exit" );
-    }
-
-
-// ---------------------------------------------------------------------------
-// From base class MPresencePluginContactsObs
-// CPresencePluginAuthorization::RequestComplete()
-// ---------------------------------------------------------------------------
-//
-void CPresencePluginAuthorization::RequestComplete( TAny* aResult,
-    TPresenceContactsOperation aOperation, TInt aError )
-    {
-    DP_SDA( "CPresencePluginAuthorization::RequestComplete" );
-    
-    switch( aOperation )
-        {
-        case EOperationIsPresenceStoredToContacts:
-            if ( aResult != NULL && KErrNone == aError  )
-                {
-                iContactIsStored = *static_cast<TBool*>( aResult );
-                }
-            break;
-        default:
-            break;
-        }
-    DP_SDA2( "CPresencePluginAuthorization::RequestComplete - iContactIsStored = %d", iContactIsStored );
-    }
-
-// End of file