diff -r a5a39a295112 -r 8baec10861af contentpublishingsrv/contentpublishingutils/pluginvalidator/src/cpluginvalidator.cpp --- a/contentpublishingsrv/contentpublishingutils/pluginvalidator/src/cpluginvalidator.cpp Wed Sep 01 12:22:09 2010 +0100 +++ b/contentpublishingsrv/contentpublishingutils/pluginvalidator/src/cpluginvalidator.cpp Tue Sep 14 21:55:16 2010 +0300 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: * */ @@ -26,7 +26,7 @@ // // ---------------------------------------------------------------------------- // -EXPORT_C CPluginValidator* CPluginValidator::NewL( TUid aUid, +EXPORT_C CPluginValidator* CPluginValidator::NewL( TUid aUid, TAny *aParameter ) { CPluginValidator* self = CPluginValidator::NewLC( aUid , aParameter ); @@ -41,7 +41,7 @@ EXPORT_C CPluginValidator* CPluginValidator::NewLC( TUid aUid, TAny *aParameter ) { - CPluginValidator* self = new( ELeave ) CPluginValidator( aUid, + CPluginValidator* self = new( ELeave ) CPluginValidator( aUid, aParameter ); CleanupStack::PushL( self ); self->ConstructL(); @@ -56,8 +56,8 @@ { TPluginInfo pluginInfo; pluginInfo.iImplementationUid = aUid; - TInt index = iPluginArray.Find( pluginInfo, - TIdentityRelation< TPluginInfo >(UidMatch) ); + TInt index = iPluginArray.Find( pluginInfo, + TIdentityRelation< TPluginInfo >(UidMatch) ); return GetImplementation( index ); } @@ -67,12 +67,12 @@ // EXPORT_C TAny* CPluginValidator::GetImplementation( TInt aIndex ) { - TAny* ret( NULL ); + TAny* ret( NULL ); if (( aIndex != KErrNotFound ) && ( aIndex < iPluginArray.Count() )) - { - ret= iPluginArray[aIndex].iPlugin; - } - return ret; + { + ret= iPluginArray[aIndex].iPlugin; + } + return ret; } // ---------------------------------------------------------------------------- @@ -98,16 +98,16 @@ } REComSession::FinalClose( ); } - + // ---------------------------------------------------------------------------- // // ---------------------------------------------------------------------------- // void CPluginValidator::RunL() { + iSession->NotifyOnChange( iStatus ); + SetActive(); ManagePluginsL(); - iSession->NotifyOnChange( iStatus ); - SetActive(); } // ---------------------------------------------------------------------------- @@ -131,12 +131,12 @@ // // ---------------------------------------------------------------------------- // -CPluginValidator::CPluginValidator( TUid aUid, TAny* aParameter ): +CPluginValidator::CPluginValidator( TUid aUid, TAny* aParameter ): CActive(EPriorityStandard), iUid( aUid ), iParameter( aParameter ) { - + } // ---------------------------------------------------------------------------- @@ -156,111 +156,110 @@ // // ---------------------------------------------------------------------------- // -TBool CPluginValidator::PresentInArrayL( TPluginInfo aPluginInfo, - const RImplInfoPtrArray& aInfoArray ) - { - TBool result(EFalse); - for ( TInt i = 0; i< aInfoArray.Count(); i++ ) - { - if ( aPluginInfo.iImplementationUid.iUid == - aInfoArray[i]->ImplementationUid().iUid) - { - result = ETrue; - break; - } - } - return result; - } - -// ---------------------------------------------------------------------------- -// -// ---------------------------------------------------------------------------- -// -void CPluginValidator::DestroyPlugin( TInt aIndex ) +TBool CPluginValidator::PresentInArrayL( TPluginInfo aPluginInfo, + const RImplInfoPtrArray& aInfoArray ) { - CBase* plugin = static_cast( iPluginArray[aIndex].iPlugin ); - delete plugin; - REComSession::DestroyedImplementation( - iPluginArray[aIndex].iDtor_ID_Key ); + TBool result( EFalse ); + for( TInt i = 0; i < aInfoArray.Count(); i++ ) + { + if( aPluginInfo.iImplementationUid.iUid + == aInfoArray[i]->ImplementationUid().iUid ) + { + result = ETrue; + break; + } + } + return result; } // ---------------------------------------------------------------------------- // // ---------------------------------------------------------------------------- -// -void CPluginValidator::CleanPluginsTable() +// +void CPluginValidator::DestroyPlugin( TInt aIndex ) { - for ( TInt i = 0; i < iPluginArray.Count(); i++ ) - { - DestroyPlugin( i ); - } + CBase* plugin = static_cast( iPluginArray[aIndex].iPlugin ); + delete plugin; + REComSession::DestroyedImplementation( + iPluginArray[aIndex].iDtor_ID_Key ); + } + +// ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +// +void CPluginValidator::CleanPluginsTable() + { + for( TInt i = 0; i < iPluginArray.Count(); i++ ) + { + DestroyPlugin( i ); + } } // ---------------------------------------------------------------------------- // // ---------------------------------------------------------------------------- // -void CPluginValidator::ManagePluginsL() +void CPluginValidator::ManagePluginsL() { // Read info about all implementations into infoArray RImplInfoPtrArray infoArray; CleanupResetAndDestroyPushL( infoArray ); - + REComSession::ListImplementationsL( iUid , infoArray ); - TPluginInfo pluginInfo; + TPluginInfo pluginInfo; //Load new plugins for ( TInt i = 0; i < infoArray.Count( ); i++ ) { pluginInfo.iImplementationUid = infoArray[i]->ImplementationUid( ); pluginInfo.iVersion = infoArray[i]->Version(); - - TInt index = iPluginArray.Find( pluginInfo, - TIdentityRelation< TPluginInfo >(UidMatch) ); - - if ( index == KErrNotFound ) - { - //plugin wasn't present, we load it now - LoadPluginL( pluginInfo ); - } - else if ( pluginInfo.iVersion > iPluginArray[index].iVersion ) - { - //plugin was present but it is a newer version, - //remove old and load a new one - DestroyPlugin( index ); - iPluginArray.Remove( index ); - LoadPluginL( pluginInfo ); - } + + TInt index = iPluginArray.Find( pluginInfo, + TIdentityRelation< TPluginInfo >(UidMatch) ); + + if( index == KErrNotFound ) + { + //plugin wasn't present, we load it now + LoadPluginL( pluginInfo ); + } + else if( pluginInfo.iVersion > iPluginArray[index].iVersion ) + { + //plugin was present but it is a newer version, + //remove old and load a new one + DestroyPlugin( index ); + iPluginArray.Remove( index ); + LoadPluginL( pluginInfo ); + } } //Remove old plugins - for ( TInt i = iPluginArray.Count() - 1 ; i >= 0; i-- ) - { - pluginInfo = iPluginArray[i]; - if ( !PresentInArrayL( pluginInfo, infoArray ) ) - { - DestroyPlugin( i ); - iPluginArray.Remove( i ); - } - } - CleanupStack::PopAndDestroy( &infoArray ); + for( TInt i = iPluginArray.Count() - 1; i >= 0; i-- ) + { + pluginInfo = iPluginArray[i]; + if ( !PresentInArrayL( pluginInfo, infoArray ) ) + { + DestroyPlugin( i ); + iPluginArray.Remove( i ); + } + } + CleanupStack::PopAndDestroy( &infoArray ); } // ---------------------------------------------------------------------------- // // ---------------------------------------------------------------------------- // -void CPluginValidator::LoadPluginL( TPluginInfo& aPluginInfo ) +void CPluginValidator::LoadPluginL( TPluginInfo& aPluginInfo ) { - TAny* plug ( NULL ); - TInt err( KErrNone ); - TRAP( err, plug = REComSession::CreateImplementationL( - aPluginInfo.iImplementationUid, - aPluginInfo.iDtor_ID_Key, iParameter ) ); - if( err==KErrNone && plug ) - { - CleanupStack::PushL( plug ); - aPluginInfo.iPlugin = plug; - iPluginArray.AppendL( aPluginInfo ); - CleanupStack::Pop( plug ); - } - } - + TAny* plug( NULL ); + TInt err( KErrNone ); + TRAP( err, plug = REComSession::CreateImplementationL( + aPluginInfo.iImplementationUid, + aPluginInfo.iDtor_ID_Key, iParameter ) ); + if( err == KErrNone && plug ) + { + CleanupStack::PushL( plug ); + aPluginInfo.iPlugin = plug; + iPluginArray.AppendL( aPluginInfo ); + CleanupStack::Pop( plug ); + } + }