uiservicetab/vimpstengine/src/cvimpstenginesessioncntxtobserver.cpp
branchRCL_3
changeset 9 9fdee5e1da30
parent 0 5e5d6b214f4f
equal deleted inserted replaced
8:796276a1bdcc 9:9fdee5e1da30
    50 #include <searchelement.h>
    50 #include <searchelement.h>
    51 #include <searchkeysevent.h>
    51 #include <searchkeysevent.h>
    52 #include <searchkeyinfo.h>
    52 #include <searchkeyinfo.h>
    53 #include <ximpfeatureinfo.h>
    53 #include <ximpfeatureinfo.h>
    54 
    54 
    55 #include "vimpstdebugtrace.h"
    55 #include "uiservicetabtracer.h"
    56 
    56 
    57 //xmppsettings
    57 //xmppsettings
    58 #include "xmppparams.h"
    58 #include "xmppparams.h"
    59 #include "xmppservicesettingsapi.h"
    59 #include "xmppservicesettingsapi.h"
    60 
    60 
    65 // CVIMPSTEngineSessionCntxtObserver::NewL
    65 // CVIMPSTEngineSessionCntxtObserver::NewL
    66 // two phase construction
    66 // two phase construction
    67 // ---------------------------------------------------------
    67 // ---------------------------------------------------------
    68 CVIMPSTEngineSessionCntxtObserver* CVIMPSTEngineSessionCntxtObserver::NewL( TUint32 aServiceId )
    68 CVIMPSTEngineSessionCntxtObserver* CVIMPSTEngineSessionCntxtObserver::NewL( TUint32 aServiceId )
    69     {
    69     {
       
    70 	TRACER_AUTO;
    70     CVIMPSTEngineSessionCntxtObserver* self = 
    71     CVIMPSTEngineSessionCntxtObserver* self = 
    71     					CVIMPSTEngineSessionCntxtObserver::NewLC( aServiceId);
    72     					CVIMPSTEngineSessionCntxtObserver::NewLC( aServiceId);
    72     CleanupStack::Pop( self );
    73     CleanupStack::Pop( self );
    73     return self;
    74     return self;
    74     }
    75     }
    77 // CVIMPSTEngineSessionCntxtObserver::NewLC
    78 // CVIMPSTEngineSessionCntxtObserver::NewLC
    78 // two phase construction
    79 // two phase construction
    79 // ---------------------------------------------------------
    80 // ---------------------------------------------------------
    80 CVIMPSTEngineSessionCntxtObserver* CVIMPSTEngineSessionCntxtObserver::NewLC(TUint32 aServiceId)
    81 CVIMPSTEngineSessionCntxtObserver* CVIMPSTEngineSessionCntxtObserver::NewLC(TUint32 aServiceId)
    81     {
    82     {
       
    83 	TRACER_AUTO;
    82     CVIMPSTEngineSessionCntxtObserver* self = new 
    84     CVIMPSTEngineSessionCntxtObserver* self = new 
    83     					(ELeave) CVIMPSTEngineSessionCntxtObserver( aServiceId);
    85     					(ELeave) CVIMPSTEngineSessionCntxtObserver( aServiceId);
    84     CleanupStack::PushL( self );
    86     CleanupStack::PushL( self );
    85     self->ConstructL();
    87     self->ConstructL();
    86     return self;
    88     return self;
    90 // CVIMPSTEngineSessionCntxtObserver::ConstructL
    92 // CVIMPSTEngineSessionCntxtObserver::ConstructL
    91 // two phase construction
    93 // two phase construction
    92 // ---------------------------------------------------------    
    94 // ---------------------------------------------------------    
    93 void CVIMPSTEngineSessionCntxtObserver::ConstructL()
    95 void CVIMPSTEngineSessionCntxtObserver::ConstructL()
    94 	{
    96 	{
       
    97 	TRACER_AUTO;
    95 	iRequestMapper = CVIMPSTEngineRequestMapper::NewL();	
    98 	iRequestMapper = CVIMPSTEngineRequestMapper::NewL();	
    96 	iReqResult = KErrNone;
    99 	iReqResult = KErrNone;
    97 	iClient = MXIMPClient::NewClientL();               
   100 	iClient = MXIMPClient::NewClientL();               
    98     //Create new sink to receive ximp context events
   101     //Create new sink to receive ximp context events
    99 	iPresenceCtx = iClient->NewPresenceContextLC();
   102 	iPresenceCtx = iClient->NewPresenceContextLC();
   123 // CVIMPSTEngineSessionCntxtObserver::~CVIMPSTEngineSessionCntxtObserver
   126 // CVIMPSTEngineSessionCntxtObserver::~CVIMPSTEngineSessionCntxtObserver
   124 // destructor
   127 // destructor
   125 // ---------------------------------------------------------
   128 // ---------------------------------------------------------
   126 CVIMPSTEngineSessionCntxtObserver::~CVIMPSTEngineSessionCntxtObserver()
   129 CVIMPSTEngineSessionCntxtObserver::~CVIMPSTEngineSessionCntxtObserver()
   127     {
   130     {
   128     
   131 	TRACER_AUTO;
   129     iObserverArray.Reset();
   132     iObserverArray.Reset();
   130     iObserverArray.Close();
   133     iObserverArray.Close();
   131     
   134     
   132     iAcceptedEventTypes.Reset();
   135     iAcceptedEventTypes.Reset();
   133     iAcceptedEventTypes.Close();
   136     iAcceptedEventTypes.Close();
   161 // ---------------------------------------------------------
   164 // ---------------------------------------------------------
   162 void CVIMPSTEngineSessionCntxtObserver::HandlePresenceContextEvent( 
   165 void CVIMPSTEngineSessionCntxtObserver::HandlePresenceContextEvent( 
   163     const MXIMPContext& aContext,
   166     const MXIMPContext& aContext,
   164     const MXIMPBase& aEvent )
   167     const MXIMPBase& aEvent )
   165     {
   168     {
   166     TRACE( T_LIT("InsideCallback::HandlePresenceContextEvent start"));
   169 	TRACER_AUTO;
   167     TRAP_IGNORE(DoHandlePresenceContextEventL( aContext, aEvent ));
   170     TRAP_IGNORE(DoHandlePresenceContextEventL( aContext, aEvent ));
   168    	TRACE( T_LIT("InsideCallback::HandlePresenceContextEvent end"));	
       
   169     }    
   171     }    
   170 
   172 
   171 	
   173 	
   172 // ---------------------------------------------------------
   174 // ---------------------------------------------------------
   173 // CVIMPSTEngineSessionCntxtObserver::GetCompletedReqResult
   175 // CVIMPSTEngineSessionCntxtObserver::GetCompletedReqResult
   201 // CVIMPSTEngineSessionCntxtObserver::ServerBindL
   203 // CVIMPSTEngineSessionCntxtObserver::ServerBindL
   202 // ---------------------------------------------------------------------------
   204 // ---------------------------------------------------------------------------
   203 //
   205 //
   204 TInt CVIMPSTEngineSessionCntxtObserver::ServerBindL(TUid aProtocolUid)
   206 TInt CVIMPSTEngineSessionCntxtObserver::ServerBindL(TUid aProtocolUid)
   205     {
   207     {
   206     TRACE( T_LIT("CVIMPSTEngineSessionCntxtObserver::ServerBindL start"));
   208 	TRACER_AUTO;
   207     TInt err = KErrNotFound;
   209     TInt err = KErrNotFound;
   208     //Bind context to desired presence service
   210     //Bind context to desired presence service
   209     if ( TVIMPSTEnums::EVIMPSTBindDone != iBindStatus )
   211     if ( TVIMPSTEnums::EVIMPSTBindDone != iBindStatus )
   210         {  
   212         {  
   211         TXIMPRequestId operationId = TXIMPRequestId::Null();
   213         TXIMPRequestId operationId = TXIMPRequestId::Null();
   218             // with KErrAlreadyExists. Client side is not ideal place to 
   220             // with KErrAlreadyExists. Client side is not ideal place to 
   219             // handle this type of logic so to work around this problem, this 
   221             // handle this type of logic so to work around this problem, this 
   220             // case is flagged here. When unbind completes, rebind is done. 
   222             // case is flagged here. When unbind completes, rebind is done. 
   221             // If unbind is called between these operations, flag is set 
   223             // If unbind is called between these operations, flag is set 
   222             // ESVCEPresenceBindNotDone to avoid bind if service was disabled
   224             // ESVCEPresenceBindNotDone to avoid bind if service was disabled
   223             TRACE( T_LIT("CVIMPSTEngineSessionCntxtObserver::ServerBindL err: %d"), err);
   225             TRACE( "err: %d", err);
   224             iBindStatus = TVIMPSTEnums::EVIMPSTBindFailureMode;
   226             iBindStatus = TVIMPSTEnums::EVIMPSTBindFailureMode;
   225             }
   227             }
   226         else
   228         else
   227             {
   229             {
   228             //create the requestmapper for the corresponidng reuqest id.
   230             //create the requestmapper for the corresponidng reuqest id.
   234         }
   236         }
   235     else
   237     else
   236         {
   238         {
   237         err = KErrNone;
   239         err = KErrNone;
   238         }
   240         }
   239     TRACE( T_LIT("CVIMPSTEngineSessionCntxtObserver::ServerBindL end"));
       
   240     return err;
   241     return err;
   241     }
   242     }
   242 // ---------------------------------------------------------------------------
   243 // ---------------------------------------------------------------------------
   243 // CVIMPSTEngineVoIPPrecenseHandler::ServerUnBindL
   244 // CVIMPSTEngineVoIPPrecenseHandler::ServerUnBindL
   244 // ---------------------------------------------------------------------------
   245 // ---------------------------------------------------------------------------
   245 //
   246 //
   246 TInt CVIMPSTEngineSessionCntxtObserver::ServerUnBindL( 
   247 TInt CVIMPSTEngineSessionCntxtObserver::ServerUnBindL( 
   247     TBool aDoUnsubscribe )
   248     TBool aDoUnsubscribe )
   248     {
   249     {
   249 	TRACE( T_LIT("CVIMPSTEngineSessionCntxtObserver::ServerUnBind start"));
   250 	TRACER_AUTO;
   250 	TInt err = KErrNotFound;
   251 	TInt err = KErrNotFound;
   251 	if ( TVIMPSTEnums::EVIMPSTBindDone == iBindStatus )
   252 	if ( TVIMPSTEnums::EVIMPSTBindDone == iBindStatus )
   252 		{
   253 		{
   253 		if ( aDoUnsubscribe )
   254 		if ( aDoUnsubscribe )
   254 			{
   255 			{
   255 			iBindStatus = TVIMPSTEnums::EVIMPSTUnBinding;
   256 			iBindStatus = TVIMPSTEnums::EVIMPSTUnBinding;
   256 			}
   257 			}
   257 		
   258 		
   258     TRACE( T_LIT("CVIMPSTEngineSessionCntxtObserver::ServerUnBind - do unbind"));
   259         TRACE( " do unbind");
   259 		TXIMPRequestId operationId = TXIMPRequestId::Null(); 
   260 		TXIMPRequestId operationId = TXIMPRequestId::Null(); 
   260 		TRAP( err, operationId = iPresenceCtx->UnbindL());
   261 		TRAP( err, operationId = iPresenceCtx->UnbindL());
   261 		iBindStatus = TVIMPSTEnums::EVIMPSTUnBindWaiting;
   262 		iBindStatus = TVIMPSTEnums::EVIMPSTUnBindWaiting;
   262 		iRequestMapper->CreateRequestL(operationId,EFalse,EVIMPSTXimpOperationUnBind) ;
   263 		iRequestMapper->CreateRequestL(operationId,EFalse,EVIMPSTXimpOperationUnBind) ;
   263 		iBindStatus = TVIMPSTEnums::EVIMPSTBindNotDone;
   264 		iBindStatus = TVIMPSTEnums::EVIMPSTBindNotDone;
   267 		{
   268 		{
   268 		// Disable flag here. If service is really disabled, we must not
   269 		// Disable flag here. If service is really disabled, we must not
   269 		// rebind when unbind completes.
   270 		// rebind when unbind completes.
   270 		iBindStatus = TVIMPSTEnums::EVIMPSTBindNotDone;
   271 		iBindStatus = TVIMPSTEnums::EVIMPSTBindNotDone;
   271 		}
   272 		}
   272 	TRACE( T_LIT("CVIMPSTEngineSessionCntxtObserver::ServerUnBind end"));
       
   273 	return err;
   273 	return err;
   274     } 
   274     } 
   275 
   275 
   276 
   276 
   277 // ---------------------------------------------------------------------------
   277 // ---------------------------------------------------------------------------
   278 // CVIMPSTEngineSessionCntxtObserver::UriFromXimpOperationLC
   278 // CVIMPSTEngineSessionCntxtObserver::UriFromXimpOperationLC
   279 // ---------------------------------------------------------------------------
   279 // ---------------------------------------------------------------------------
   280 //
   280 //
   281 HBufC* CVIMPSTEngineSessionCntxtObserver::UriFromXimpOperationLC(const MXIMPBase& aEvent )
   281 HBufC* CVIMPSTEngineSessionCntxtObserver::UriFromXimpOperationLC(const MXIMPBase& aEvent )
   282     {
   282     {
   283     TRACE( T_LIT("CVIMPSTEngineSessionCntxtObserver::UriFromXimpOperationLC start"));
   283 	TRACER_AUTO;
   284     const MPresentityPresenceEvent& event =
   284     const MPresentityPresenceEvent& event =
   285             *TXIMPGetInterface< const MPresentityPresenceEvent >::From( 
   285             *TXIMPGetInterface< const MPresentityPresenceEvent >::From( 
   286                 aEvent, MXIMPBase::EPanicIfUnknown );  
   286                 aEvent, MXIMPBase::EPanicIfUnknown );  
   287     HBufC* retValue = NULL;
   287     HBufC* retValue = NULL;
   288     retValue = event.PresentityId().Identity().AllocLC();
   288     retValue = event.PresentityId().Identity().AllocLC();
   289     if(!retValue)
   289     if(!retValue)
   290         {
   290         {
   291         retValue = KNullDesC().AllocLC();
   291         retValue = KNullDesC().AllocLC();
   292         }
   292         }
   293     TRACE( T_LIT("CVIMPSTEngineSessionCntxtObserver::UriFromXimpOperationLC end"));
       
   294     return retValue;    
   293     return retValue;    
   295     }
   294     }
   296 
   295 
   297 // ---------------------------------------------------------------------------
   296 // ---------------------------------------------------------------------------
   298 // CVIMPSTEngineSessionCntxtObserver::DoHandlePresenceContextEventL
   297 // CVIMPSTEngineSessionCntxtObserver::DoHandlePresenceContextEventL
   300 //
   299 //
   301 void CVIMPSTEngineSessionCntxtObserver::DoHandlePresenceContextEventL(
   300 void CVIMPSTEngineSessionCntxtObserver::DoHandlePresenceContextEventL(
   302     const MXIMPContext& aContext,
   301     const MXIMPContext& aContext,
   303     const MXIMPBase& aEvent )
   302     const MXIMPBase& aEvent )
   304     {
   303     {
   305     TRACE( T_LIT("CVIMPSTEngineSessionCntxtObserver::DoHandlePresenceContextEventL start"));
   304 	TRACER_AUTO;
   306     const TInt32 eventId = aEvent.GetInterfaceId();
   305     const TInt32 eventId = aEvent.GetInterfaceId();
   307         
   306         
   308         switch( aEvent.GetInterfaceId() )
   307         switch( aEvent.GetInterfaceId() )
   309             {
   308             {
   310             case MXIMPRequestCompleteEvent::KInterfaceId:
   309             case MXIMPRequestCompleteEvent::KInterfaceId:
   311                 {
   310                 {
   312                 
   311                 
   313                 TRACE( T_LIT("InsideCallbackswitch::MXIMPRequestCompleteEvent start"));
   312                 TRACE( "InsideCallbackswitch::MXIMPRequestCompleteEvent start");
   314                 const MXIMPRequestCompleteEvent* event =
   313                 const MXIMPRequestCompleteEvent* event =
   315                     TXIMPGetInterface< const MXIMPRequestCompleteEvent >::From( 
   314                     TXIMPGetInterface< const MXIMPRequestCompleteEvent >::From( 
   316                         aEvent, MXIMPBase::EPanicIfUnknown );
   315                         aEvent, MXIMPBase::EPanicIfUnknown );
   317                 
   316                 
   318                 iReqResult = event->CompletionResult().ResultCode();
   317                 iReqResult = event->CompletionResult().ResultCode();
   343 	                    iObserverArray[i]->HandleSessionContextEventL(aContext,
   342 	                    iObserverArray[i]->HandleSessionContextEventL(aContext,
   344 	                    						aEvent,
   343 	                    						aEvent,
   345 	                    						operation);
   344 	                    						operation);
   346 	                    }
   345 	                    }
   347                     }
   346                     }
   348                 TRACE( T_LIT("InsideCallbackswitch::MXIMPRequestCompleteEvent end"));    
   347                 TRACE("InsideCallbackswitch::MXIMPRequestCompleteEvent end"); 
   349                 break;
   348                 break;
   350                 }
   349                 }
   351 
   350 
   352             case MXIMPContextStateEvent::KInterfaceId:
   351             case MXIMPContextStateEvent::KInterfaceId:
   353                 {
   352                 {
   354                 TRACE( T_LIT("InsideCallbackswitch::MXIMPContextStateEvent"));                
   353                 TRACE( "InsideCallbackswitch::MXIMPContextStateEvent");  
   355                 break;
   354                 break;
   356                 }
   355                 }
   357             case MPresentityPresenceEvent::KInterfaceId:
   356             case MPresentityPresenceEvent::KInterfaceId:
   358                 {
   357                 {
   359                 TRACE( T_LIT("InsideCallbackswitch::::MPresentityPresenceEvent start"));
   358                 TRACE( "InsideCallbackswitch::::MPresentityPresenceEvent start");
   360                 TInt count = iObserverArray.Count();
   359                 TInt count = iObserverArray.Count();
   361                 for(TInt i = 0; i < count; i++)
   360                 for(TInt i = 0; i < count; i++)
   362                     {
   361                     {
   363                     iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
   362                     iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
   364                     }
   363                     }
   365                 TRACE( T_LIT("InsideCallbackswitch::::MPresentityPresenceEvent end"));
   364                 TRACE( "InsideCallbackswitch::::MPresentityPresenceEvent end");
   366                 break;
   365                 break;
   367                 }
   366                 }
   368             case MPresentityGroupContentEvent::KInterfaceId:
   367             case MPresentityGroupContentEvent::KInterfaceId:
   369                {
   368                {
   370                TRACE( T_LIT("InsideCallbackswitch::::MPresentityGroupContentEvent start"));
   369                TRACE( "InsideCallbackswitch::::MPresentityGroupContentEvent start");
   371                TInt count = iObserverArray.Count();
   370                TInt count = iObserverArray.Count();
   372                for(TInt i = 0; i < count; i++)
   371                for(TInt i = 0; i < count; i++)
   373                   {
   372                   {
   374                   iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
   373                   iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
   375                   }
   374                   }
   376                TRACE( T_LIT("InsideCallbackswitch::::MPresentityGroupContentEvent end"));
   375                TRACE( "InsideCallbackswitch::::MPresentityGroupContentEvent end");
   377                break;  
   376                break;  
   378                }
   377                }
   379             case MPresenceGrantRequestListEvent::KInterfaceId:
   378             case MPresenceGrantRequestListEvent::KInterfaceId:
   380                {
   379                {
   381                TRACE( T_LIT("InsideCallbackswitch::::MPresentityGroupContentEvent start"));
   380                TRACE("InsideCallbackswitch::::MPresenceGrantRequestListEvent start");
   382                TInt count = iObserverArray.Count();
   381                TInt count = iObserverArray.Count();
   383                for(TInt i = 0; i < count; i++)
   382                for(TInt i = 0; i < count; i++)
   384                   {
   383                   {
   385                   iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
   384                   iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
   386                   }               
   385                   }               
   387                TRACE( T_LIT("InsideCallbackswitch::::MPresentityGroupContentEvent end"));
   386                TRACE( "InsideCallbackswitch::::MPresenceGrantRequestListEvent end");
   388                break;
   387                break;
   389                }
   388                }
   390            
   389            
   391             case MSearchEvent::KInterfaceId:
   390             case MSearchEvent::KInterfaceId:
   392                 {
   391                 {
   393                 TRACE( T_LIT("InsideCallbackswitch::::MSearchEvent start"));
   392                 TRACE( "InsideCallbackswitch::::MSearchEvent start");
   394 
   393 
   395                 TInt count = iObserverArray.Count();
   394                 TInt count = iObserverArray.Count();
   396                 for(TInt i = 0; i < count; i++)
   395                 for(TInt i = 0; i < count; i++)
   397                    {
   396                    {
   398                    iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
   397                    iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
   399                    } 
   398                    } 
   400                 TRACE( T_LIT("InsideCallbackswitch::::MSearchEvent end"));
   399                 TRACE( "InsideCallbackswitch::::MSearchEvent end");
   401 
   400 
   402                 break;
   401                 break;
   403                 }
   402                 }
   404             case MSearchKeysEvent::KInterfaceId:
   403             case MSearchKeysEvent::KInterfaceId:
   405                 {
   404                 {
   406                 TRACE( T_LIT("InsideCallbackswitch::::MSearchKeysEvent start"));
   405                 TRACE( "InsideCallbackswitch::::MSearchKeysEvent start");
   407                 TInt count = iObserverArray.Count();
   406                 TInt count = iObserverArray.Count();
   408                 for(TInt i = 0; i < count; i++)
   407                 for(TInt i = 0; i < count; i++)
   409                    {
   408                    {
   410                    iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
   409                    iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
   411                    } 
   410                    } 
   412                 TRACE( T_LIT("InsideCallbackswitch::::MSearchKeysEvent end"));
   411                 TRACE( "InsideCallbackswitch::::MSearchKeysEvent end");
   413 
   412 
   414                 break;
   413                 break;
   415                 }
   414                 }
   416             case MPresenceBlockListEvent::KInterfaceId:
   415             case MPresenceBlockListEvent::KInterfaceId:
   417                {
   416                {
   418                TRACE( T_LIT("InsideCallbackswitch::::MPresenceBlockListEvent start"));
   417                TRACE( "InsideCallbackswitch::::MPresenceBlockListEvent start");
   419                TInt count = iObserverArray.Count();
   418                TInt count = iObserverArray.Count();
   420                for(TInt i = 0; i < count; i++)
   419                for(TInt i = 0; i < count; i++)
   421                   {
   420                   {
   422                   iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
   421                   iObserverArray[i]->HandleSessionContextEventL(aContext,aEvent);
   423                   } 
   422                   } 
   424                TRACE( T_LIT("InsideCallbackswitch::::MPresenceBlockListEvent end"));
   423                TRACE( "InsideCallbackswitch::::MPresenceBlockListEvent end");
   425                break;
   424                break;
   426                }
   425                }
   427               
   426               
   428             default:
   427             default:
   429                 {
   428                 {
   430                 break;
   429                 break;
   431                 }
   430                 }
   432             }
   431             }
   433     TRACE( T_LIT("CVIMPSTEngineSessionCntxtObserver::DoHandlePresenceContextEventL end"));
       
   434     }
   432     }
   435 // ---------------------------------------------------------------------------
   433 // ---------------------------------------------------------------------------
   436 // CVIMPSTEngineSessionCntxtObserver::XimpAuthorizationL
   434 // CVIMPSTEngineSessionCntxtObserver::XimpAuthorizationL
   437 // ---------------------------------------------------------------------------
   435 // ---------------------------------------------------------------------------
   438 // 
   436 // 
   439 MPresenceAuthorization& 
   437 MPresenceAuthorization& 
   440 CVIMPSTEngineSessionCntxtObserver::XimpAuthorizationL()
   438 CVIMPSTEngineSessionCntxtObserver::XimpAuthorizationL()
   441     {
   439     {
       
   440 	TRACER_AUTO;
   442     __ASSERT_ALWAYS( iFeatures, User::Leave( KErrNotSupported ));
   441     __ASSERT_ALWAYS( iFeatures, User::Leave( KErrNotSupported ));
   443     __ASSERT_ALWAYS( &iFeatures->PresenceAuthorization(), 
   442     __ASSERT_ALWAYS( &iFeatures->PresenceAuthorization(), 
   444         User::Leave( KErrNotSupported ));
   443         User::Leave( KErrNotSupported ));
   445     return iFeatures->PresenceAuthorization();
   444     return iFeatures->PresenceAuthorization();
   446     }
   445     }
   520 // CVIMPSTEngineSessionCntxtObserver::RegisterObserver
   519 // CVIMPSTEngineSessionCntxtObserver::RegisterObserver
   521 // ---------------------------------------------------------------------------
   520 // ---------------------------------------------------------------------------
   522 //
   521 //
   523 void CVIMPSTEngineSessionCntxtObserver::RegisterObserver(MVIMPSTEngineSessionCntxtObserver* aObserver)
   522 void CVIMPSTEngineSessionCntxtObserver::RegisterObserver(MVIMPSTEngineSessionCntxtObserver* aObserver)
   524     {
   523     {
       
   524 	TRACER_AUTO;
   525     if (aObserver)
   525     if (aObserver)
   526 	    {    	
   526 	    {    	
   527 	    
   527 	    
   528 	    TInt index = iObserverArray.Find(aObserver);
   528 	    TInt index = iObserverArray.Find(aObserver);
   529         if( index == KErrNotFound )
   529         if( index == KErrNotFound )
   537 // CVIMPSTEngineSessionCntxtObserver::UnRegisterObserver
   537 // CVIMPSTEngineSessionCntxtObserver::UnRegisterObserver
   538 // ---------------------------------------------------------------------------
   538 // ---------------------------------------------------------------------------
   539 //
   539 //
   540 void CVIMPSTEngineSessionCntxtObserver::UnRegisterObserver(MVIMPSTEngineSessionCntxtObserver* aObserver)
   540 void CVIMPSTEngineSessionCntxtObserver::UnRegisterObserver(MVIMPSTEngineSessionCntxtObserver* aObserver)
   541     {
   541     {
       
   542 	TRACER_AUTO;
   542     if (aObserver)
   543     if (aObserver)
   543 	    {    
   544 	    {    
   544 	    TInt index = iObserverArray.Find(aObserver);
   545 	    TInt index = iObserverArray.Find(aObserver);
   545 	        
   546 	        
   546 	    if( index >=0 )
   547 	    if( index >=0 )
   555 // CVIMPSTEngineSessionCntxtObserver::IdentifySupportedFeaturesL
   556 // CVIMPSTEngineSessionCntxtObserver::IdentifySupportedFeaturesL
   556 // ---------------------------------------------------------------------------
   557 // ---------------------------------------------------------------------------
   557 //
   558 //
   558 void CVIMPSTEngineSessionCntxtObserver::IdentifySupportedFeaturesL()
   559 void CVIMPSTEngineSessionCntxtObserver::IdentifySupportedFeaturesL()
   559     {
   560     {
   560     TRACE( T_LIT("CVIMPSTEngineSessionCntxtObserver::IdentifySupportedFeaturesL start"));
   561 	TRACER_AUTO;
   561     using namespace NXIMPFeature::Presence;
   562     using namespace NXIMPFeature::Presence;
   562     using namespace NXIMPFeature::InstantMessage;
   563     using namespace NXIMPFeature::InstantMessage;
   563     using namespace NXIMPFeature::Search;
   564     using namespace NXIMPFeature::Search;
   564     using namespace NXIMPFeature::PresentityGroups;
   565     using namespace NXIMPFeature::PresentityGroups;
   565     
   566     
   644 			    }			      
   645 			    }			      
   645     
   646     
   646 		    }
   647 		    }
   647     
   648     
   648     	delete ximpCtxFeats;
   649     	delete ximpCtxFeats;
   649         }
   650         }				    
   650     TRACE( T_LIT("CVIMPSTEngineSessionCntxtObserver::IdentifySupportedFeaturesL end"));
       
   651     }
   651     }
   652 
   652 
   653 
   653 
   654 // ---------------------------------------------------------------------------
   654 // ---------------------------------------------------------------------------
   655 // CVIMPSTEngineSessionCntxtObserver::GetSupportedFeatures
   655 // CVIMPSTEngineSessionCntxtObserver::GetSupportedFeatures