--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceproviders/sapi_applicationmanager/tsrc/testing/tappmgrprovider/src/tappmgrproviderblocks.cpp Fri Jul 03 15:51:24 2009 +0100
@@ -0,0 +1,1629 @@
+/*
+* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: ?Description
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include <LiwServiceHandler.h>
+#include <Liwbufferextension.h>
+#include "tappmgrprovider.h"
+#include "appmanagerservice.h"
+#include "appmanagercommon.h"
+#include <f32file.h>
+#include <e32des16.h>
+#include <e32base.h>
+
+#include "testappobserver.h"
+
+_LIT8(KContent,"Type");
+_LIT8(KDocumentPath,"DocumentPath");
+_LIT8(KMimeType,"MimeType");
+_LIT8(KMode,"Mode");
+_LIT8(KPostion,"Position");
+_LIT8(KHandle,"Handle");
+_LIT8(KDocument,"Document");
+_LIT(KNull,"NULL");
+
+_LIT8(KService, "Service.AppManager");
+_LIT8(KIAppManager,"IAppManager");
+_LIT8(KTransactionID,"TransactionID");
+_LIT8(KCmdLine,"CmdLine");
+
+_LIT8(KApplicationID,"ApplicationID");
+_LIT8(KDocumentName,"DocumentName");
+
+//Supported Operation
+_LIT8(KGetList, "GetList");
+_LIT8(KLaunchApp,"LaunchApp");
+_LIT8(KLaunchDoc,"LaunchDoc");
+_LIT8(KResponse,"ReturnValue");
+_LIT8(KErrorCode,"ErrorCode");
+_LIT8(KOptions,"Options");
+
+// Filter Map
+_LIT8(KFilter,"Filter");
+
+const TInt KDocMaxDigitsInHexString = 8; // 32 bits.
+
+
+// EXTERNAL DATA STRUCTURES
+//extern ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+// ?value_n: ?description_line1
+// ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+ ?arg_type arg, // ?description
+ ?arg_type arg) // ?description
+ {
+
+ ?code // ?comment
+
+ // ?comment
+ ?code
+ }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// Csapi_getheader:Delete
+// Delete here all resources allocated and opened from test methods.
+// Called from destructor.
+// -----------------------------------------------------------------------------
+//
+void CAppManagerTest::Delete()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// Csapi_getheader:RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CAppManagerTest::RunMethodL(
+ CStifItemParser& aItem )
+ {
+
+ static TStifFunctionInfo const KFunctions[] =
+ {
+ ENTRY( "getlisttest", CAppManagerTest::getlisttestL ),
+ ENTRY( "getlistnegativetestL", CAppManagerTest::getlistnegativetestL ),
+ ENTRY( "launchApp", CAppManagerTest::launchAppL ),
+ ENTRY( "launchDoc", CAppManagerTest::launchDocL ),
+ ENTRY( "cancellaunchDoc", CAppManagerTest::CancellaunchDocL ),
+ // ENTRY( "getlistnegativetestL", CAppManagerTest::getlistnegativetestL ),
+ };
+
+ const TInt count = sizeof( KFunctions ) /
+ sizeof( TStifFunctionInfo );
+
+ return RunInternalL( KFunctions, count, aItem );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CAppManagerTest:getlistapplication1_testL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CAppManagerTest::getlisttestL( CStifItemParser& aItem )
+ {
+
+ __UHEAP_MARK;
+ TPtrC16 content;
+ TPtrC16 docname;
+ TPtrC16 mimetype16;
+ TInt expected;
+ TInt noOfmaps;
+ TPtrC16 filename;
+ TInt result =KErrNone ;// KErrGeneral; // 0 means pass and -1 means Fail
+
+ aItem.GetNextString(content);
+ aItem.GetNextString(docname);
+ aItem.GetNextString(mimetype16);
+ aItem.GetNextInt(expected);
+ aItem.GetNextString(filename);
+ aItem.GetNextInt(noOfmaps);
+
+ iLog->Log(_L("read varibale "));
+
+ /*-------------------------------------------------------------------------------------------*/
+
+
+ CLiwServiceHandler* iServiceHandler = CLiwServiceHandler::NewL();
+ CleanupStack::PushL(iServiceHandler);//1
+
+ if ( iServiceHandler )
+ iLog->Log(_L("Got Service Handler "));
+ else
+ iLog->Log(_L("Didn't get service handler"));
+
+ CLiwCriteriaItem* crit = CLiwCriteriaItem::NewL(1,KIAppManager,KService);
+ iLog->Log(_L("Create criterai Item"));
+ crit->SetServiceClass(TUid::Uid(KLiwClassBase));
+ CleanupStack::PushL(crit);//2
+
+
+ RCriteriaArray critArray;
+ iLog->Log(_L("Append in Crit"));
+ critArray.AppendL(crit);
+ CleanupClosePushL(critArray);//3
+
+ iServiceHandler->AttachL(critArray);
+ //critArray.Reset();
+ //critArray.Close();
+
+ iLog->Log(_L("Creating Output"));
+
+ CLiwGenericParamList* output = CLiwGenericParamList::NewL();
+ CleanupStack::PushL(output);//4
+ CLiwGenericParamList* input = CLiwGenericParamList::NewL();
+ CleanupStack::PushL(input);//5
+
+ iLog->Log(_L("call Service cmd L"));
+
+ iServiceHandler->ExecuteServiceCmdL(*crit, *input, *output);
+
+ iLog->Log(_L("Service cmdl is over"));
+
+ // Create the Instance of SAPI class and the Input Param and output Param
+ TInt pos = 0;
+ MLiwInterface* Interface = NULL;
+ output->FindFirst(pos,KIAppManager );
+ if(pos != KErrNotFound)
+ {
+ Interface = (*output)[pos].Value().AsInterface();
+ }
+ output->Reset();
+
+
+
+ CleanupClosePushL(*Interface);//6
+
+
+ iLog->Log(_L("got Interface"));
+
+
+ input->Reset();
+
+ //Inserting content
+ if( 0 != content.CompareF(KNull) )
+ {
+ TLiwVariant dsName;
+ dsName.Set(content);
+ TLiwGenericParam dsNameParam(KContent, content);
+ input->AppendL(dsNameParam);
+ }
+
+
+
+
+
+ CLiwDefaultMap *filterMap = NULL;
+
+ if(docname.CompareF(_L("NULL")) != 0 )
+ {
+ filterMap = CLiwDefaultMap::NewL();
+ //CleanupStack::PushL( filterMap );//7
+ filterMap->InsertL(KDocumentPath,TLiwVariant(docname));
+ TLiwGenericParam iFilterParam(KFilter, TLiwVariant(filterMap));
+ input->AppendL(iFilterParam);
+
+ filterMap->DecRef();
+ }
+
+
+ if(mimetype16.CompareF(_L("NULL")) != 0)
+ {
+ if( !filterMap )
+ {
+ filterMap = CLiwDefaultMap::NewL();
+ //CleanupStack::PushL( filterMap );//7
+ TLiwGenericParam iFilterParam(KFilter, TLiwVariant(filterMap));
+ input->AppendL(iFilterParam);
+ filterMap->DecRef();
+ }
+
+ filterMap->InsertL(KMimeType,TLiwVariant(mimetype16));
+ }
+
+ if( Interface != NULL)
+ {
+ iLog->Log(_L("got Interface"));
+ Interface->ExecuteCmdL(KGetList,*input,*output);
+ iLog->Log(_L("SAPI called"));
+ }
+ else
+ {
+ iLog->Log(_L("Didn't get interface"));
+ return KErrGeneral;
+ }
+
+
+ const TLiwGenericParam* p= NULL;
+ CLiwIterable* iter;
+ TLiwVariant Map;
+ const CLiwMap* infomap;
+ TInt err= 0;
+ pos = 0;
+ TInt retcode;
+ p = output->FindFirst(pos, KErrorCode); // Finding Error Code
+ if(p)
+ {
+
+ err = p->Value().AsTInt32();
+ iLog->Log(_L("Got Error Code "));
+ }
+
+ pos = 0;
+ p = output->FindFirst(pos, KResponse);// Finding out the response of Media Management
+ if(!p)
+ {
+ if( err == KErrNone )
+ err = KErrGeneral;
+ }
+ else
+ {
+ iter = p->Value().AsIterable();// returning Iterator as Response
+ }
+
+
+
+
+ /*---------------------------------------------------------------------------------------------*/
+
+ if(noOfmaps > 0)
+ {
+ RArray<TInt> uidArray;
+ TInt matchedOutput =0;
+ TInt32 appuid;
+ TInt index;
+ TPtrC16 appuidstring;
+ for(TInt i =0 ;i < noOfmaps; i++ )
+ {
+ aItem.GetNextString( appuidstring );
+ ConvertHexStringToInt32(appuidstring,appuid );
+ uidArray.Append(appuid);
+ }
+
+ _LIT8(UidKey,"Uid");// Key In The Map
+ TPtrC KeyValue;// value of that key
+ TLiwVariant val;//just for extracting the value
+
+ while( (uidArray.Count()>0) && iter->NextL(Map) )
+ {
+ infomap = Map.AsMap();
+ infomap->FindL(UidKey, val);
+ val.Get(KeyValue);
+ ConvertHexStringToInt32(KeyValue,appuid );
+
+ if( ( index = uidArray.Find( appuid ) )!= KErrNotFound)
+ {
+ matchedOutput++;
+ uidArray.Remove(index);
+ uidArray.Compress();
+ }
+
+ infomap = NULL;
+ Map.Reset();
+ }
+
+ //iter->Reset(); has to implement by lokesh
+ if( matchedOutput != noOfmaps )
+ {
+ //Test case failed
+ err = KErrGeneral;
+ }
+ uidArray.Reset();
+ uidArray.Close();
+ }
+
+
+ /*------------------------------------Output For Manual Testing ---------------------------------*/
+ RFs fs;
+ TEntry entry;
+ TInt dir_ret=0;
+
+ //Check for directory.
+ User::LeaveIfError(fs.Connect());
+ CleanupClosePushL(fs);
+ dir_ret=fs.Entry(_L("c:\\Data\\AppManager\\"),entry);
+
+
+ //Write the output only if the directory is present.Means Manual testing mode
+ if(KErrNone==dir_ret)
+ {
+ if(filename.CompareF(_L("NULL"))!= 0)
+ {
+
+ // Convert 16 Bit values into 8 bit as SAPI accept 8 bit Des
+ TBuf8<30> content8 ;
+ content8.Copy(content);
+ RFile file;
+ TInt errfile=0;
+
+ /* Show the output
+ //RFs fs;
+
+ //User::LeaveIfError(fs.Connect());
+ //CleanupClosePushL(fs);//8
+
+ TEntry entry;
+ if( fs.Entry(_L("c:\\Data\\AppManager\\"),entry) != KErrNone)
+ {
+ TInt ret = fs.MkDir(_L("c:\\Data\\AppManager\\"));
+ }*/
+
+ TBuf<100> flname(_L("c:\\Data\\AppManager\\"));
+
+ flname.Append(filename);
+ flname.Append(_L(".txt"));
+
+ errfile =file.Replace(fs,flname, EFileWrite | EFileStreamText);
+ CleanupClosePushL(file);//9
+
+ TBuf8<100> filebuf;
+ TInt index =0 ;
+ TBuf8<15> Key;// Key In The Map
+ TPtrC16 KeyValue;// value of that key
+
+ filebuf.Append(_L8("TestCase \n"));
+ filebuf.Append(_L8("Content = "));
+ filebuf.Append(content8);
+ filebuf.Append(_L8(","));
+
+ filebuf.Append(_L8("docname = "));
+ filebuf.Append(docname);
+ filebuf.Append(_L8(","));
+
+ filebuf.Append(_L8("mimetype16 = "));
+ filebuf.Append(mimetype16);
+ filebuf.Append(_L8("\n"));
+
+ file.Write(filebuf);
+ filebuf.Zero();
+
+ TInt count =1;
+ TLiwVariant val;//just for extracting the value
+ while(iter->NextL(Map))
+ {
+ infomap = Map.AsMap();
+ filebuf.Append(_L8(" :- "));
+ filebuf.AppendNum(count);
+ file.Write(content8);
+ file.Write(filebuf);
+ file.Write(_L8("\n"));
+ filebuf.Zero();
+ file.Write(_L8("----------------------------------------------------\n"));
+
+ for(index =0 ;index <infomap->Count(); index++ )
+ {
+ infomap->AtL(index,Key);
+ infomap->FindL(Key, val);
+ val.Get(KeyValue);
+ file.Write(Key);
+ file.Write(_L8("\t"));
+ filebuf.Copy(KeyValue);
+ file.Write(filebuf);
+ file.Write(_L8("\n"));
+ filebuf.Zero();
+ }// Map
+
+ //delete infomap;
+ infomap = NULL;
+ Map.Reset();
+ file.Write(_L8("----------------------------------------------------\n\n"));
+
+ count++;
+ }//Iterator
+
+ CleanupStack::PopAndDestroy();//File 9
+
+
+ }
+ }
+ CleanupStack::PopAndDestroy();//File Session 8
+
+ /*------------------------------------Output For Manual Testing ---------------------------------*/
+
+ iter->DecRef();
+
+
+
+ if(!expected)
+ {
+ //Postive Test Case
+ if(err != KErrNone)
+ {
+ result = KErrGeneral;
+ }
+
+ }
+ else
+ {
+ if (err == KErrNone)
+ {
+ result = KErrGeneral;
+ }
+ //Neagative Test Case
+ }
+
+ output->Reset();
+ input->Reset();
+
+ //if(filterMap)
+ //CleanupStack::PopAndDestroy();//Filter Parameter 7
+
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ //Interface->Close();
+ __UHEAP_MARKEND;
+ return result;
+
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CAppManagerTest:launchAppL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+
+TInt CAppManagerTest::launchAppL( CStifItemParser& aItem )
+ {
+ __UHEAP_MARK;
+
+ CLiwServiceHandler* iServiceHandler = CLiwServiceHandler::NewL();
+ CleanupStack::PushL(iServiceHandler);//1
+
+ CLiwCriteriaItem* crit = CLiwCriteriaItem::NewL(1,KIAppManager,KService);
+ crit->SetServiceClass(TUid::Uid(KLiwClassBase));
+ CleanupStack::PushL(crit);//2
+
+
+ RCriteriaArray critArray;
+ critArray.AppendL(crit);
+ CleanupClosePushL(critArray);//3
+
+ iServiceHandler->AttachL(critArray);
+
+
+
+ CLiwGenericParamList* output = CLiwGenericParamList::NewL();
+ CleanupStack::PushL(output);//4
+ CLiwGenericParamList* input = CLiwGenericParamList::NewL();
+ CleanupStack::PushL(input);//5
+
+ iServiceHandler->ExecuteServiceCmdL(*crit, *input, *output);
+
+
+ // Create the Instance of SAPI class and the Input Param and output Param
+ TInt pos = 0;
+ MLiwInterface* Interface = NULL;
+ output->FindFirst(pos,KIAppManager );
+ if(pos != KErrNotFound)
+ {
+ Interface = (*output)[pos].Value().AsInterface();
+ }
+ output->Reset();
+
+
+
+ //MLiwInterface* Interface = CMgDataSourceInterface::NewL();
+ CleanupClosePushL(*Interface);//6
+
+ /*--------Test Logic Starts-----------*/
+ TOptions options;
+ TInt expected;
+ TPtrC16 temp;
+ TBuf<30> appId;
+ TPtrC16 cmdLine16;
+ TPtrC16 document;
+ TPtrC16 mode;
+ TPtrC16 postion;
+ TPtrC16 callback;
+ TInt err;
+ TInt result =KErrNone ;// KErrGeneral; // 0 means pass and -1 means Fail
+
+ aItem.GetNextString( temp );
+ appId.Append( temp );
+ appId.Append(_L("//"));
+ aItem.GetNextString( temp );
+ appId.Append( temp );
+
+
+ aItem.GetNextString(cmdLine16);
+ aItem.GetNextString(document);
+ aItem.GetNextString(mode);
+ aItem.GetNextString(postion);
+ aItem.GetNextString(callback);
+ aItem.GetNextInt(expected);
+
+ input->Reset();
+
+ //Inserting ApplicationID
+ if( 0 != appId.CompareF(KNull) )
+ {
+ TLiwVariant id;
+ id.Set(appId);
+ TLiwGenericParam idParam(KApplicationID, id);
+ input->AppendL(idParam);
+ }
+
+
+
+
+ //Inserting cmdLine
+ if( 0 != cmdLine16.CompareF(KNull) )
+ {
+ TLiwVariant cmdline;
+ cmdline.Set(cmdLine16);
+ TLiwGenericParam cmdlineParam(KCmdLine, cmdline);
+ input->AppendL(cmdlineParam);
+ }
+
+
+
+
+ CLiwDefaultMap *filterMap = NULL;
+
+ if( document.CompareF(_L("NULL")) != 0 )
+ {
+ filterMap = CLiwDefaultMap::NewL();
+ //CleanupStack::PushL( filterMap );//7
+ filterMap->InsertL(KDocumentPath,TLiwVariant(document));
+ TLiwGenericParam iFilterParam(KOptions, TLiwVariant(filterMap));
+ input->AppendL(iFilterParam);
+ filterMap->DecRef();
+ }
+
+
+ if( mode.CompareF(_L("NULL") ) != 0)
+ {
+ if( !filterMap )
+ {
+ filterMap = CLiwDefaultMap::NewL();
+ CleanupStack::PushL( filterMap );//7
+ TLiwGenericParam iFilterParam(KOptions, TLiwVariant(filterMap));
+ input->AppendL(iFilterParam);
+ filterMap->DecRef();
+ }
+
+ filterMap->InsertL(KMode,TLiwVariant(mode));
+ }
+
+ if( postion.CompareF(_L("NULL") ) != 0)
+ {
+ if( !filterMap )
+ {
+ filterMap = CLiwDefaultMap::NewL();
+ //CleanupStack::PushL( filterMap );//7
+ TLiwGenericParam iFilterParam(KOptions, TLiwVariant(filterMap));
+ input->AppendL(iFilterParam);
+ filterMap->DecRef();
+ }
+
+ filterMap->InsertL(KPostion,TLiwVariant( postion ));
+ }
+
+
+
+
+ if( callback.CompareF(_L("NULL")) != 0 )
+ {
+ //Aysnch Call;
+ CActiveSchedulerWait *wait = new CActiveSchedulerWait();
+ CleanupStack::PushL( wait);
+ CAppObserver* callback = CAppObserver::NewL(wait);
+ CleanupStack::PushL( callback);
+ Interface->ExecuteCmdL(KLaunchApp,*input,*output,KLiwOptASyncronous,callback);
+ const TLiwGenericParam* p= NULL;
+ pos = 0;
+
+ p = output->FindFirst(pos, KErrorCode); // Finding Error Code
+ if(p)
+ {
+ err = p->Value().AsTInt32();
+ }
+ else
+ {
+ err = KErrGeneral;
+ }
+
+ if ( err == KErrNone)
+ {
+ // Asynch request properly accepted
+ wait->Start();
+ err = callback->iErrorReturn;
+ if ( callback->iReason > 0 )
+ {
+ //but we didn't get notifaction
+ //Reason of failure can be either 0 or some negative value which incates
+ //error but it cant be greater than 0
+ err = KErrGeneral;
+ }
+
+ }
+
+ CleanupStack::PopAndDestroy();//Callback
+ CleanupStack::PopAndDestroy();//Active Wait Scheduler
+ }
+ else
+ {
+ //Synch call
+ if( Interface != NULL)
+ {
+ _LIT8(KLaunchApp,"LaunchApp");
+ Interface->ExecuteCmdL(KLaunchApp,*input,*output);
+ }
+ else
+ {
+ //Didn't get the interface
+ return KErrGeneral;
+ }
+
+
+ const TLiwGenericParam* p= NULL;
+ pos = 0;
+ p = output->FindFirst(pos, KErrorCode); // Finding Error Code
+ if(p)
+ {
+ err = p->Value().AsTInt32();
+ }
+ else
+ {
+ err = KErrGeneral;
+ }
+ }
+
+
+ if(!expected)
+ {
+ //Postive Test Case
+ if(err != KErrNone)
+ {
+ result = KErrGeneral;
+ }
+
+ }
+ else
+ {
+ if (err == KErrNone)
+ {
+ result = KErrGeneral;
+ }
+ //Neagative Test Case
+ }
+
+
+ /*--------Test Logic Ends -----------*/
+ if(err == KErrNone)
+ {
+ TBuf<30> uidsearch;
+ TPtrC internaluid;
+
+ //Format it!
+ uidsearch.Append(_L("*["));
+ internaluid.Set(appId.Mid(11)); //Stripping first11 chars.
+ uidsearch.Append(internaluid);
+ uidsearch.Append(_L("]*"));
+
+ killapp(uidsearch);
+ }
+
+ //if(filterMap)
+ //CleanupStack::PopAndDestroy();//Filter Parameter 7
+
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ __UHEAP_MARK;
+ return result;
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CAppManagerTest:launchDocL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+
+TInt CAppManagerTest::launchDocL( CStifItemParser& aItem )
+ {
+
+
+ __UHEAP_MARK;
+
+
+ CLiwServiceHandler* iServiceHandler = CLiwServiceHandler::NewL();
+ CleanupStack::PushL(iServiceHandler);//1
+
+ CLiwCriteriaItem* crit = CLiwCriteriaItem::NewL(1,KIAppManager,KService);
+ crit->SetServiceClass(TUid::Uid(KLiwClassBase));
+ CleanupStack::PushL(crit);//2
+
+
+ RCriteriaArray critArray;
+ critArray.AppendL(crit);
+ CleanupClosePushL(critArray);//3
+
+ iServiceHandler->AttachL(critArray);
+
+
+
+ CLiwGenericParamList* output = CLiwGenericParamList::NewL();
+ CleanupStack::PushL(output);//4
+ CLiwGenericParamList* input = CLiwGenericParamList::NewL();
+ CleanupStack::PushL(input);//5
+
+ iServiceHandler->ExecuteServiceCmdL(*crit, *input, *output);
+
+
+ // Create the Instance of SAPI class and the Input Param and output Param
+ TInt pos = 0;
+ MLiwInterface* Interface = NULL;
+ output->FindFirst(pos,KIAppManager );
+ if(pos != KErrNotFound)
+ {
+ Interface = (*output)[pos].Value().AsInterface();
+ }
+ output->Reset();
+
+
+
+ //MLiwInterface* Interface = CMgDataSourceInterface::NewL();
+ CleanupClosePushL(*Interface);//6
+
+ /*--------Test Logic Starts-----------*/
+ TOptions options;
+ TDocument criteria;
+ TInt expected;
+ TBuf<30> filename;
+ TPtrC16 path;
+ TPtrC16 handle;
+ TPtrC16 mimetype16;
+ TPtrC16 mode;
+ TPtrC16 callback;
+ TInt err;
+ TInt result =KErrNone ;// KErrGeneral; // 0 means pass and -1 means Fail
+
+
+ aItem.GetNextString(path);
+ aItem.GetNextString(handle);
+ aItem.GetNextString(mimetype16);
+ aItem.GetNextString(mode);
+ aItem.GetNextString(callback);
+ aItem.GetNextInt(expected);
+
+ /*------------------------------------------------------------------*/
+
+ input->Reset();
+
+ //Inserting Document
+
+
+ CLiwDefaultMap *documentMap = NULL;
+
+ if( path.CompareF(_L("NULL")) != 0 )
+ {
+ documentMap = CLiwDefaultMap::NewL();
+ documentMap->InsertL(KDocumentPath,TLiwVariant(path));
+ TLiwGenericParam iFilterParam( KDocument, TLiwVariant(documentMap));
+ input->AppendL(iFilterParam);
+ documentMap->DecRef();
+ }
+
+
+ if( handle.CompareF(_L("NULL") ) != 0)
+ {
+ if( !documentMap )
+ {
+ documentMap = CLiwDefaultMap::NewL();
+ TLiwGenericParam iFilterParam(KDocument, TLiwVariant(documentMap));
+ input->AppendL(iFilterParam);
+ documentMap->DecRef();
+ }
+
+ RFs fileSession;
+ User::LeaveIfError(fileSession.Connect());
+ RFile file;
+ User::LeaveIfError(fileSession.ShareProtected());
+ file.Open(fileSession,handle,EFileShareReadersOnly);
+ //CLiwDefaultFileBuffer* filebuffer = CLiwFileBuffer::NewL();
+ documentMap->InsertL(KHandle,TLiwVariant(file));
+ }
+
+
+
+
+ //Inserting MimeType
+ if( 0 != mimetype16.CompareF(KNull) )
+ {
+ TLiwVariant mimetype;
+ mimetype.Set(mimetype16);
+ TLiwGenericParam mimetypeParam(KMimeType, mimetype);
+ input->AppendL(mimetypeParam);
+ }
+
+
+
+
+ if( mode.CompareF(_L("NULL")) != 0 )
+ {
+ CLiwDefaultMap *filterMap = CLiwDefaultMap::NewL();
+ filterMap->InsertL(KMode,TLiwVariant(mode));
+ TLiwGenericParam iFilterParam(KOptions, TLiwVariant(filterMap));
+ input->AppendL(iFilterParam);
+ filterMap->DecRef();
+ }
+
+
+
+ if( callback.CompareF(_L("NULL")) != 0 )
+ {
+ //Aysnch Call;
+ CActiveSchedulerWait *wait = new CActiveSchedulerWait();
+ CleanupStack::PushL( wait);
+ CAppObserver* callback = CAppObserver::NewL(wait);
+ CleanupStack::PushL( callback);
+ Interface->ExecuteCmdL(KLaunchDoc,*input,*output,KLiwOptASyncronous,callback);
+ const TLiwGenericParam* p= NULL;
+ pos = 0;
+
+ p = output->FindFirst(pos, KErrorCode); // Finding Error Code
+ if(p)
+ {
+ err = p->Value().AsTInt32();
+ }
+ else
+ {
+ err = KErrGeneral;
+ }
+
+ if ( err == KErrNone)
+ {
+ // Asynch request properly accepted
+
+ wait->Start();
+ err = callback->iErrorReturn;
+ if ( callback->iReason > 0 )
+ {
+ //but we didn't get notifaction
+ //Reason of failure can be either 0 or some negative value which incates
+ //error but it cant be greater than 0
+ err = KErrGeneral;
+ }
+
+ }
+
+ CleanupStack::PopAndDestroy();//Callback
+ CleanupStack::PopAndDestroy();//Active Wait Scheduler
+ }
+ else
+ {
+ //Synch call
+ if( Interface != NULL)
+ {
+ _LIT8(KLaunchApp,"LaunchApp");
+ Interface->ExecuteCmdL(KLaunchDoc,*input,*output);
+ }
+ else
+ {
+ //Didn't get the interface
+ return KErrGeneral;
+ }
+
+
+ const TLiwGenericParam* p= NULL;
+ pos = 0;
+ p = output->FindFirst(pos, KErrorCode); // Finding Error Code
+ if(p)
+ {
+ err = p->Value().AsTInt32();
+ }
+ else
+ {
+ err = KErrGeneral;
+ }
+
+ p= NULL;
+ pos = 0;
+ p = output->FindFirst(pos, KDocumentName); // Finding Error Code
+ if(p)
+ {
+ TPtrC filname ;
+ p->Value().Get(filname);
+ }
+
+ }
+
+
+ if(!expected)
+ {
+ //Postive Test Case
+ if(err != KErrNone)
+ {
+ result = KErrGeneral;
+ }
+
+ }
+ else
+ {
+ if (err == KErrNone)
+ {
+ result = KErrGeneral;
+ }
+ //Neagative Test Case
+ }
+
+ if (err == KErrNone)
+ {
+ RApaLsSession bdApaLsSession;
+ User::LeaveIfError(bdApaLsSession.Connect());
+
+ TUid anuid;
+ TBuf8<30> mimetype ;
+ mimetype.Copy(mimetype16);
+ TDataType ada(mimetype);
+ bdApaLsSession.AppForDocument(criteria.iPath,anuid, ada);
+ killapp(anuid.Name());
+ bdApaLsSession.Close();
+ }
+
+
+
+ /*--------Test Logic Ends -----------*/
+
+
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ __UHEAP_MARK;
+ return result;
+ }
+
+
+
+
+ // -----------------------------------------------------------------------------
+// CAppManagerTest:launchDocL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+
+TInt CAppManagerTest::CancellaunchDocL( CStifItemParser& aItem )
+ {
+
+
+ __UHEAP_MARK;
+
+
+ CLiwServiceHandler* iServiceHandler = CLiwServiceHandler::NewL();
+ CleanupStack::PushL(iServiceHandler);//1
+
+ CLiwCriteriaItem* crit = CLiwCriteriaItem::NewL(1,KIAppManager,KService);
+ crit->SetServiceClass(TUid::Uid(KLiwClassBase));
+ CleanupStack::PushL(crit);//2
+
+
+ RCriteriaArray critArray;
+ critArray.AppendL(crit);
+ CleanupClosePushL(critArray);//3
+
+ iServiceHandler->AttachL(critArray);
+
+
+
+ CLiwGenericParamList* output = CLiwGenericParamList::NewL();
+ CleanupStack::PushL(output);//4
+ CLiwGenericParamList* input = CLiwGenericParamList::NewL();
+ CleanupStack::PushL(input);//5
+
+ iServiceHandler->ExecuteServiceCmdL(*crit, *input, *output);
+
+
+ // Create the Instance of SAPI class and the Input Param and output Param
+ TInt pos = 0;
+ MLiwInterface* Interface = NULL;
+ output->FindFirst(pos,KIAppManager );
+ if(pos != KErrNotFound)
+ {
+ Interface = (*output)[pos].Value().AsInterface();
+ }
+ output->Reset();
+
+
+
+ //MLiwInterface* Interface = CMgDataSourceInterface::NewL();
+ CleanupClosePushL(*Interface);//6
+
+ /*--------Test Logic Starts-----------*/
+ TOptions options;
+ TDocument criteria;
+ TInt expected;
+ TBuf<30> filename;
+ TPtrC16 path;
+ TPtrC16 handle;
+ TPtrC16 mimetype16;
+ TPtrC16 mode;
+ TPtrC16 callback;
+ TInt err;
+ TInt result =KErrNone ;// KErrGeneral; // 0 means pass and -1 means Fail
+
+
+ aItem.GetNextString(path);
+ aItem.GetNextString(handle);
+ aItem.GetNextString(mimetype16);
+ aItem.GetNextString(mode);
+ aItem.GetNextString(callback);
+ aItem.GetNextInt(expected);
+
+ /*------------------------------------------------------------------*/
+
+
+ //Inserting Document
+ input->Reset();
+
+ CLiwDefaultMap *documentMap = NULL;
+
+ if( path.CompareF(_L("NULL")) != 0 )
+ {
+ documentMap = CLiwDefaultMap::NewL();
+ documentMap->InsertL(KDocumentPath,TLiwVariant(path));
+ TLiwGenericParam iFilterParam( KDocument, TLiwVariant(documentMap));
+ input->AppendL(iFilterParam);
+ documentMap->DecRef();
+ }
+
+
+ if( handle.CompareF(_L("NULL") ) != 0)
+ {
+ if( !documentMap )
+ {
+ documentMap = CLiwDefaultMap::NewL();
+ TLiwGenericParam iFilterParam(KDocument, TLiwVariant(documentMap));
+ input->AppendL(iFilterParam);
+ documentMap->DecRef();
+ }
+
+ RFs fileSession;
+ User::LeaveIfError(fileSession.Connect());
+ RFile file;
+ User::LeaveIfError(fileSession.ShareProtected());
+ file.Open(fileSession,handle,EFileShareReadersOnly);
+ //criteria.iHandle.Duplicate(file);
+ documentMap->InsertL(KHandle,TLiwVariant(file));
+ }
+
+
+
+
+ //Inserting MimeType
+ if( 0 != mimetype16.CompareF(KNull) )
+ {
+ TLiwVariant mimetype;
+ mimetype.Set(mimetype16);
+ TLiwGenericParam mimetypeParam(KMimeType, mimetype);
+ input->AppendL(mimetypeParam);
+ }
+
+
+
+
+ if( mode.CompareF(_L("NULL")) != 0 )
+ {
+ CLiwDefaultMap *filterMap = CLiwDefaultMap::NewL();
+ filterMap->InsertL(KMode,TLiwVariant(mode));
+ TLiwGenericParam iFilterParam(KOptions, TLiwVariant(filterMap));
+ input->AppendL(iFilterParam);
+ filterMap->DecRef();
+ }
+
+
+
+ if( callback.CompareF(_L("NULL")) != 0 )
+ {
+ //Aysnch Call;
+ CActiveSchedulerWait *wait = new CActiveSchedulerWait();
+ CleanupStack::PushL( wait);
+ CAppObserver* callback = CAppObserver::NewL(wait);
+ CleanupStack::PushL( callback);
+ Interface->ExecuteCmdL(KLaunchDoc,*input,*output,KLiwOptASyncronous,callback);
+ const TLiwGenericParam* p= NULL;
+ pos = 0;
+
+ p = output->FindFirst(pos, KErrorCode); // Finding Error Code
+ if(p)
+ {
+ err = p->Value().AsTInt32();
+ }
+ else
+ {
+ err = KErrGeneral;
+ }
+
+ if ( err == KErrNone)
+ {
+ pos = 0;
+ p = output->FindFirst(pos, KTransactionID);
+ input->Reset();
+
+ input->AppendL( TLiwGenericParam (KTransactionID, TLiwVariant ( p->Value().AsTInt32() ) ) );
+ Interface->ExecuteCmdL(_L8("Cancel"),*input,*output,KLiwOptCancel,callback);
+ //wait->Start();
+
+ if(callback->iCancel)
+ {
+ err = KErrNone;
+ }
+ else
+ {
+ err = KErrGeneral;
+ }
+
+ }
+
+ CleanupStack::PopAndDestroy();//Callback
+ CleanupStack::PopAndDestroy();//Active Wait Scheduler
+ }
+ else
+ {
+ //Synch call
+ err = KErrGeneral;
+ }
+
+
+ if(!expected)
+ {
+ //Postive Test Case
+ if(err != KErrNone)
+ {
+ result = KErrGeneral;
+ }
+
+ }
+ else
+ {
+ if (err == KErrNone)
+ {
+ result = KErrGeneral;
+ }
+ //Neagative Test Case
+ }
+
+
+ /*--------Test Logic Ends -----------*/
+
+
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ __UHEAP_MARK;
+ return result;
+ }
+
+
+
+
+// -----------------------------------------------------------------------------
+// CAppManagerTest:getListneagtive Test case
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CAppManagerTest::getlistnegativetestL( CStifItemParser& aItem )
+ {
+ TPtrC16 content;
+ TPtrC16 docname;
+ TPtrC16 mimetype16;
+ TInt expected;
+ TInt ind;
+ TPtrC16 testCaseType;
+ TInt result =KErrNone ;// KErrGeneral; // 0 means pass and -1 means Fail
+
+ aItem.GetNextString(content); // 1
+ aItem.GetNextString(docname); // 2
+ aItem.GetNextString(mimetype16);// 3
+ aItem.GetNextString(testCaseType);//5 TestCaseType
+ aItem.GetNextInt(ind);// 6
+
+ iLog->Log(_L("read varibale "));
+
+ /*-------------------------------------------------------------------------------------------*/
+
+
+ CLiwServiceHandler* iServiceHandler = CLiwServiceHandler::NewL();
+ CleanupStack::PushL(iServiceHandler);//1
+
+ if ( iServiceHandler )
+ iLog->Log(_L("Got Service Handler "));
+ else
+ iLog->Log(_L("Didn't get service handler"));
+
+ CLiwCriteriaItem* crit = CLiwCriteriaItem::NewL(1,KIAppManager,KService);
+ iLog->Log(_L("Create criterai Item"));
+ crit->SetServiceClass(TUid::Uid(KLiwClassBase));
+ CleanupStack::PushL(crit);//2
+
+
+ RCriteriaArray critArray;
+ iLog->Log(_L("Append in Crit"));
+ critArray.AppendL(crit);
+ CleanupClosePushL(critArray);//3
+
+ iServiceHandler->AttachL(critArray);
+ //critArray.Reset();
+ //critArray.Close();
+
+ iLog->Log(_L("Creating Output"));
+
+ CLiwGenericParamList* output = CLiwGenericParamList::NewL();
+ CleanupStack::PushL(output);//4
+ CLiwGenericParamList* input = CLiwGenericParamList::NewL();
+ CleanupStack::PushL(input);//5
+
+ iLog->Log(_L("call Service cmd L"));
+
+ iServiceHandler->ExecuteServiceCmdL(*crit, *input, *output);
+
+ iLog->Log(_L("Service cmdl is over"));
+
+ // Create the Instance of SAPI class and the Input Param and output Param
+ TInt pos = 0;
+ MLiwInterface* Interface = NULL;
+ output->FindFirst(pos,KIAppManager );
+ if(pos != KErrNotFound)
+ {
+ Interface = (*output)[pos].Value().AsInterface();
+ }
+ output->Reset();
+
+
+
+ CleanupClosePushL(*Interface);//6
+
+
+ iLog->Log(_L("got Interface"));
+
+
+ //Inserting content
+ if( 0 != content.CompareF(KNull) )
+ {
+ TLiwVariant dsName;
+ dsName.Set(content);
+ TLiwGenericParam dsNameParam(KContent, content);
+ input->AppendL(dsNameParam);
+ }
+
+
+
+
+
+ CLiwDefaultMap *filterMap = NULL;
+
+ if(docname.CompareF(_L("NULL")) != 0 )
+ {
+ filterMap = CLiwDefaultMap::NewL();
+ //CleanupStack::PushL( filterMap );//7
+ filterMap->InsertL(KDocumentPath,TLiwVariant(docname));
+ TLiwGenericParam iFilterParam(KFilter, TLiwVariant(filterMap));
+ input->AppendL(iFilterParam);
+
+ filterMap->DecRef();
+ }
+
+
+ if(mimetype16.CompareF(_L("NULL")) != 0)
+ {
+ if( !filterMap )
+ {
+ filterMap = CLiwDefaultMap::NewL();
+ //CleanupStack::PushL( filterMap );//7
+ TLiwGenericParam iFilterParam(KFilter, TLiwVariant(filterMap));
+ input->AppendL(iFilterParam);
+ filterMap->DecRef();
+ }
+
+ filterMap->InsertL(KMimeType,TLiwVariant(mimetype16));
+ }
+
+ if( Interface != NULL)
+ {
+ iLog->Log(_L("got Interface"));
+ Interface->ExecuteCmdL(KGetList,*input,*output);
+ iLog->Log(_L("SAPI called"));
+ }
+ else
+ {
+ iLog->Log(_L("Didn't get interface"));
+ return KErrGeneral;
+ }
+
+
+ const TLiwGenericParam* p= NULL;
+ CLiwIterable* iter;
+ TLiwVariant Map;
+ const CLiwMap* infomap;
+ TInt err= 0;
+ pos = 0;
+ TInt retcode;
+ p = output->FindFirst(pos, KErrorCode); // Finding Error Code
+ if(p)
+ {
+
+ err = p->Value().AsTInt32();
+ iLog->Log(_L("Got Error Code "));
+ }
+
+ pos = 0;
+ p = output->FindFirst(pos, KResponse);// Finding out the response of Media Management
+ if(!p)
+ {
+ if( err == KErrNone )
+ err = KErrGeneral;
+ }
+ else
+ {
+ iter = p->Value().AsIterable();// returning Iterator as Response
+ }
+
+
+
+
+ TLiwVariant val;//just for extracting the value
+ TPtrC KeyValue;// value of that key
+ TPtrC FirstKeyValue;// value of that key
+ TBuf8<30> Key;
+ if( testCaseType.CompareF(_L("Index"))==KErrNone )
+ {
+
+ iter->NextL(Map);
+ infomap = Map.AsMap();
+ if (infomap->AtL(ind,Key) == EFalse )
+ result = KErrNone;
+ else
+ result = KErrGeneral ;
+ //delete infomap;
+ infomap = NULL;
+ Map.Reset();
+
+ }
+ else if( testCaseType.CompareF(_L("Key"))==KErrNone )
+ {
+ iter->NextL(Map);
+ infomap = Map.AsMap();
+ if (infomap->FindL(_L8("WrongKey"), val) == EFalse )
+ result = KErrNone;
+ else
+ result = KErrGeneral ;
+
+ //delete infomap;
+ infomap = NULL;
+ Map.Reset();
+
+ }
+
+ else if( testCaseType.CompareF(_L("Reset"))==KErrNone )
+ {
+ TInt count =0 ;
+ while(iter->NextL(Map))
+ {
+ if(count == 0 )
+ {
+ infomap = Map.AsMap();
+ infomap->FindL(_L8("UID"), val);
+ val.Get(FirstKeyValue);
+
+ //delete infomap;
+ infomap = NULL;
+ Map.Reset();
+ count++ ;
+ }
+
+ }
+ iter->Reset();
+ iter->NextL(Map);
+ infomap = Map.AsMap();
+ infomap->FindL(_L8("UID"), val);
+ val.Get(KeyValue);
+
+ if(KeyValue.CompareF(FirstKeyValue)== KErrNone )
+ result = KErrNone;
+ else
+ result = KErrGeneral ;
+ //delete infomap;
+ infomap = NULL;
+ Map.Reset();
+ }
+
+ else
+ {
+ result = KErrGeneral ;
+ }
+
+
+
+
+
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+ CleanupStack::PopAndDestroy( );
+
+
+ return result;
+
+
+
+ }
+
+
+
+
+
+
+
+
+
+//Helper Function
+
+TInt CAppManagerTest::ConvertHexStringToInt32(const TDesC& aHexString,TInt32& aInt32 )
+ {
+ aInt32 = 0;
+
+ TInt pos = aHexString.LocateF( 'x' );
+ if ( pos == KErrNotFound )
+ {
+ pos = 0;
+ }
+ else
+ {
+ pos++;
+ }
+
+ if( ( aHexString.Length() - pos ) > KDocMaxDigitsInHexString )
+ {
+ return KErrArgument; // Error: value too big.
+ }
+ TPtrC aHexStringPtr( aHexString.Mid( pos ) );
+
+ TInt64 value64;
+ if ( TLex( aHexStringPtr ).Val( value64, EHex ) != KErrNone )
+ {
+ return KErrArgument; // Error: conversion failed.
+ }
+ aInt32 = value64;
+
+ return KErrNone;
+ }
+
+void CAppManagerTest::killapp(TBuf<30> appId) //appId in format [101f4d90]
+ {
+
+ RFs FileSession;
+ RFile Applist;
+ TInt ret;
+
+
+ FileSession.Connect();
+ CleanupClosePushL(FileSession);
+
+ TBuf<100> flname(_L("c:\\data\\AppManager\\AppList.txt"));
+ ret=Applist.Open(FileSession, flname,EFileWrite | EFileStreamText);
+ CleanupClosePushL(Applist);
+
+
+ if(ret==KErrNone) //The file is for debug purposes only.Create it if neeeded
+ {
+ TInt SeekPos=0;
+ TBuf8<100> filebuf;
+ Applist.Seek(ESeekEnd,SeekPos);
+
+
+ filebuf.Append(appId);
+ filebuf.Append(_L8("-------- \n "));
+ Applist.Write(SeekPos,filebuf);
+ filebuf.Zero();
+ }
+
+
+ TFindProcess findProcess(appId);
+ TFullName procresult;
+ while (findProcess.Next(procresult) == KErrNone)
+ {
+ RProcess p;
+ CleanupClosePushL(p);
+
+ //filebuf.Append(procresult);
+
+ if (p.Open(findProcess, EOwnerThread) == KErrNone)
+ {
+ p.Kill(0);
+ p.Close();
+ //filebuf.Append(KKill);
+ }
+ CleanupStack::PopAndDestroy();
+ }
+
+ CleanupStack::PopAndDestroy();//File
+ CleanupStack::PopAndDestroy();//File Session
+
+ }
+
+
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+// End of File