--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mds_plat/harvester_framework_api/tsrc/HarvesterPluginTest/src/HarvesterPluginTestBlocks.cpp Mon Jan 18 20:34:07 2010 +0200
@@ -0,0 +1,493 @@
+/*
+* 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 "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:
+*
+*/
+
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestEventInterface.h>
+#include <StifTestInterface.h>
+#include "HarvesterPluginTest.h"
+
+#include "mdsutils.h"
+#include "harvesterblacklist.h"
+#include "mdeobject.h"
+#include "mdeobjecthandler.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTest::Delete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// -----------------------------------------------------------------------------
+//
+void CHarvesterPluginTest::Delete()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTest::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CHarvesterPluginTest::RunMethodL(
+ CStifItemParser& aItem )
+ {
+
+ static TStifFunctionInfo const KFunctions[] =
+ {
+ // Copy this line for every implemented function.
+ // First string is the function name used in TestScripter script file.
+ // Second is the actual implementation member function.
+
+ ENTRY( "BeginTestSession", CHarvesterPluginTest::BeginTestSessionL ),
+ ENTRY( "EndTestSession", CHarvesterPluginTest::EndTestSession ),
+ ENTRY( "LoadPlugins", CHarvesterPluginTest::LoadPluginsL ),
+ ENTRY( "TestFunctions", CHarvesterPluginTest::TestFunctionsL ),
+
+ };
+
+ const TInt count = sizeof( KFunctions ) /
+ sizeof( TStifFunctionInfo );
+
+ return RunInternalL( KFunctions, count, aItem );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTest::HandleSessionOpened
+// -----------------------------------------------------------------------------
+//
+void CHarvesterPluginTest::HandleSessionOpened( CMdESession& /*aClient*/, TInt aError )
+ {
+ _LIT( KMsg, "CallBck HandleSessionOpened - Error code : %d" );
+ TBuf <100> msg;
+ msg.Format(KMsg, aError);
+ iLog->Log( msg );
+ RDebug::Print(msg);
+
+ TRAP_IGNORE( iMdeObjectHandler = CMdeObjectHandler::NewL( *iMdeSession ) );
+
+ // session event
+ TEventIf event( TEventIf::ESetEvent, _L("Session") );
+ TestModuleIf().Event( event );
+ }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTest::HandleSessionError
+// -----------------------------------------------------------------------------
+//
+void CHarvesterPluginTest::HandleSessionError( CMdESession& /*aClient*/, TInt aError )
+ {
+ _LIT( KMsg, "CallBck HandleSessionError - Error code : %d" );
+ TBuf <100> msg;
+ msg.Format(KMsg, aError);
+ iLog->Log( msg );
+ RDebug::Print(msg);
+
+ // session event
+ TEventIf event( TEventIf::ESetEvent, _L("Session") );
+ TestModuleIf().Event( event );
+ }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTest::HarvestingCompleted
+// -----------------------------------------------------------------------------
+//
+void CHarvesterPluginTest::HarvestingCompleted( CHarvesterData* /* aHarvesterData */ )
+ {
+ // harvest event
+ TEventIf event( TEventIf::ESetEvent, _L("Harvest") );
+ TestModuleIf().Event( event );
+ }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTest::BeginTestSessionL
+// -----------------------------------------------------------------------------
+//
+TInt CHarvesterPluginTest::BeginTestSessionL( CStifItemParser& /* aItem */ )
+ {
+ TRAPD( error, iMdeSession = CMdESession::NewL( *this ) );
+
+ iSession = CMdEHarvesterSession::NewL( *iMdeSession );
+
+ iCtxEngine = NULL;
+
+ iBlacklist = CHarvesterBlacklist::NewL();
+
+ _LIT( KMsg, "Exit BeginTestSession - Error code : %d" );
+ TBuf <100> msg;
+ msg.Format(KMsg, error);
+ iLog->Log( msg );
+ RDebug::Print( msg );
+
+ User::LeaveIfError( error );
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTest::EndTestSession
+// -----------------------------------------------------------------------------
+//
+TInt CHarvesterPluginTest::EndTestSession( CStifItemParser& /* aItem */ )
+ {
+ iPluginInfoArray.ResetAndDestroy();
+ iPluginInfoArray.Close();
+
+ REComSession::FinalClose();
+
+ if ( iCtxEngine )
+ {
+ iCtxEngine->ReleaseInstance();
+ iCtxEngine = NULL;
+ }
+
+ if ( iBlacklist )
+ {
+ iBlacklist->CloseDatabase();
+ delete iBlacklist;
+ }
+
+ if ( iSession )
+ {
+ delete iSession;
+ iSession = NULL;
+ }
+
+ if ( iMdeObjectHandler )
+ {
+ delete iMdeObjectHandler;
+ iMdeObjectHandler = NULL;
+ }
+
+ if( iMdeSession )
+ {
+ delete iMdeSession;
+ iMdeSession = NULL;
+ }
+
+ _LIT( KMsg, "Exit EndTestSession" );
+ iLog->Log( KMsg );
+ RDebug::Print(KMsg);
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTest::LoadPluginsL
+// -----------------------------------------------------------------------------
+//
+TInt CHarvesterPluginTest::LoadPluginsL( CStifItemParser& /* aItem */ )
+ {
+ _LIT( KMsg1, "Enter LoadPlugins" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ RImplInfoPtrArray infoArray;
+
+ TCleanupItem cleanupItem( MdsUtils::CleanupEComArray, &infoArray );
+ CleanupStack::PushL( cleanupItem );
+
+ CHarvesterPlugin::ListImplementationsL( infoArray );
+ TInt count( 0 );
+ count = infoArray.Count();
+
+ if( count == 0 )
+ {
+ return KErrNotFound;
+ }
+
+ for ( TInt i=0; i < count; i++ )
+ {
+ // Parse the file extensions and resolve plug-in's uids from infoArray to iDataTypeArray
+ TBufC8<256> type;
+ TBufC8<256> opaque;
+
+ type = infoArray[i]->DataType();
+ opaque = infoArray[i]->OpaqueData();
+ TUid implUID = infoArray[i]->ImplementationUid();
+
+ AddNewPluginL(type, opaque, implUID);
+ }
+
+ CleanupStack::PopAndDestroy( &infoArray ); // infoArray, results in a call to CleanupEComArray
+
+ _LIT( KMsg2, "Exit LoadPlugins" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CHarvesterPluginTest::TestFunctionsL
+// -----------------------------------------------------------------------------
+//
+TInt CHarvesterPluginTest::TestFunctionsL( CStifItemParser& aItem )
+ {
+ _LIT( KMsg1, "Enter TestFunctions" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ TPtrC inputFile;
+ User::LeaveIfError( aItem.GetNextString( inputFile ) );
+
+ iMdeSession->RemoveObjectL( inputFile );
+
+ TBuf<100> aObjectDef;
+
+ GetObjectDef( inputFile, aObjectDef, EFalse );
+
+ // harvesterdata object
+ HBufC* uriBuf = inputFile.AllocLC();
+ CHarvesterData* data = CHarvesterData::NewL( uriBuf );
+ data->SetPluginObserver( *this );
+ CMdEObject* mdeObject = NULL;
+ _LIT( string, "Image" );
+ mdeObject = iMdeObjectHandler->GetMetadataObjectL( *data, string );
+ data->SetMdeObject( mdeObject );
+ CleanupStack::Pop( uriBuf );
+
+ HarvestL( data );
+
+ _LIT( KMsg2, "Exit TestFunctions" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+ }
+
+// ---------------------------------------------------------------------------
+// GetObjectDef
+// ---------------------------------------------------------------------------
+//
+TBool CHarvesterPluginTest::GetObjectDef(const TDesC& aUri, TDes& aObjectDef, TBool aCheck)
+ {
+ CHarvesterPluginInfo* hpi = NULL;
+
+ TRAPD( err, hpi = GetHPIFromFileNameL(aUri) );
+ if ( err != KErrNone )
+ {
+ aObjectDef.Zero();
+ return EFalse;
+ }
+
+ if ( !hpi )
+ {
+ aObjectDef.Zero();
+ }
+ else
+ {
+ if( hpi->iObjectTypes.Count() > 1)
+ {
+ if( aCheck )
+ {
+ aObjectDef.Zero();
+ return ETrue;
+ }
+
+ if ( ! hpi->iPlugin )
+ {
+ TRAPD( error, hpi->iPlugin = CHarvesterPlugin::NewL( hpi->iPluginUid ) );
+ if( error )
+ {
+ aObjectDef.Zero();
+ return EFalse;
+ }
+ else
+ {
+ hpi->iPlugin->SetQueue( hpi->iQueue );
+ }
+ }
+ hpi->iPlugin->GetObjectType( aUri, aObjectDef );
+ }
+ else
+ {
+ aObjectDef.Copy( *(hpi->iObjectTypes[0]) );
+ }
+ }
+
+ return EFalse;
+ }
+
+// ---------------------------------------------------------------------------
+// HarvestL
+// ---------------------------------------------------------------------------
+//
+TInt CHarvesterPluginTest::HarvestL( CHarvesterData* aHD )
+ {
+ _LIT( KMsg1, "Enter HarvestL" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ CHarvesterPluginInfo* hpi = aHD->HarvesterPluginInfo();
+
+ if ( !hpi )
+ {
+ hpi = GetHPIFromFileNameL( aHD->Uri() );
+ }
+
+ if ( hpi )
+ {
+ if ( ! hpi->iPlugin )
+ {
+ hpi->iPlugin = CHarvesterPlugin::NewL( hpi->iPluginUid );
+ hpi->iPlugin->SetQueue( hpi->iQueue );
+ hpi->iPlugin->SetBlacklist( *iBlacklist );
+ }
+
+ if( aHD->ObjectType() == EFastHarvest || aHD->Origin() == MdeConstants::Object::ECamera )
+ {
+ hpi->iQueue.Insert( aHD, 0 );
+ }
+ else
+ {
+ hpi->iQueue.AppendL( aHD );
+ }
+
+ hpi->iPlugin->StartHarvest();
+
+ _LIT( KMsg2, "Exit HarvestL" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+ }
+
+ return KErrNotFound;
+ }
+
+// -----------------------------------------------------------------------------
+// AddNewPluginL
+// -----------------------------------------------------------------------------
+//
+void CHarvesterPluginTest::AddNewPluginL( const TDesC8& aType, const TDesC8& aOpaque, TUid aPluginUid )
+ {
+ CHarvesterPluginInfo* pluginInfo = new (ELeave) CHarvesterPluginInfo;
+ CleanupStack::PushL( pluginInfo );
+
+ // get file extensions
+ TLex8 lex( aOpaque );
+ while ( !lex.Eos() )
+ {
+ /* Tokenizing file extensions using TLex8 */
+ lex.SkipSpaceAndMark();
+
+ TPtrC8 extToken = lex.NextToken();
+
+ HBufC* str = HBufC::NewLC( extToken.Length() );
+ str->Des().Copy( extToken );
+ pluginInfo->iExtensions.AppendL( str );
+ CleanupStack::Pop( str );
+ }
+
+ // get object types
+ TLex8 lexObjectTypes( aType );
+ while ( !lexObjectTypes.Eos() )
+ {
+ /* Tokenizing object types using TLex8 */
+ lexObjectTypes.SkipSpaceAndMark();
+
+ TPtrC8 objectTypeToken = lexObjectTypes.NextToken();
+
+ HBufC* str = HBufC::NewLC( objectTypeToken.Length() );
+ str->Des().Copy( objectTypeToken );
+ pluginInfo->iObjectTypes.AppendL( str );
+ CleanupStack::Pop( str );
+ }
+
+ /* We set plugin as NULL - we only load them when needed */
+ pluginInfo->iPlugin = NULL;
+ pluginInfo->iPluginUid = aPluginUid;
+ iPluginInfoArray.AppendL( pluginInfo );
+ CleanupStack::Pop( pluginInfo );
+ }
+
+// ---------------------------------------------------------------------------
+// GetHPIFromFileNameL
+// ---------------------------------------------------------------------------
+//
+CHarvesterPluginInfo* CHarvesterPluginTest::GetHPIFromFileNameL(const TDesC& aFileName)
+ {
+ _LIT( KMsg1, "Enter GetHPIFromFileNameL" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ TParsePtrC parser( aFileName );
+
+ // without trailing dot "."
+ TPtrC ptr = parser.Ext();
+ if ( ptr.Length() > 1 )
+ {
+ ptr.Set( ptr.Mid( 1 ) );
+ }
+
+ _LIT( KMsg2, "Exit GetHPIFromFileNameL" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return GetFromNormalFileL( ptr );
+ }
+
+// ---------------------------------------------------------------------------
+// GetFromNormalFile
+// ---------------------------------------------------------------------------
+//
+CHarvesterPluginInfo* CHarvesterPluginTest::GetFromNormalFileL( TDesC& aExt )
+ {
+ _LIT( KMsg1, "Enter GetFromNormalFileL" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ CHarvesterPluginInfo* retVal = NULL;
+
+ for ( TInt i = iPluginInfoArray.Count(); --i >= 0; )
+ {
+ CHarvesterPluginInfo* info = iPluginInfoArray[i];
+ TBool found = EFalse;
+
+ for ( TInt k = info->iExtensions.Count(); --k >= 0; )
+ {
+ TDesC* ext = info->iExtensions[k];
+
+ // checking against supported plugin file extensions
+ TInt result = ext->CompareF( aExt );
+ if ( result == 0 )
+ {
+ retVal = info;
+ found = ETrue;
+ break;
+ }
+ }
+ if ( found )
+ {
+ break;
+ }
+ }
+
+ _LIT( KMsg2, "Exit GetFromNormalFileL" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return retVal;
+ }
+
+// [End of File] - Do not remove