installationservices/swi/test/tuiscriptadaptors/tswisasyncstep.h
changeset 0 ba25891c3a9e
child 25 7333d7932ef7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/test/tuiscriptadaptors/tswisasyncstep.h	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,245 @@
+/*
+* Copyright (c) 2005-2009 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: 
+* SWIS test async step declaration
+*
+*/
+
+
+/**
+ @file
+*/
+
+#ifndef TSWISASYNCSTEP_H
+#define TSWISASYNCSTEP_H
+#include "tswisstep.h"
+#include "tuiscriptadaptors.h"
+
+
+class CAsyncManager;
+class CStepScheduler;
+class CSwisAsyncStep;
+class CWatchdog;
+
+class CSwisAsyncStep : public CSwisTestStep 
+	{
+	
+public:
+	virtual void Stop (TInt aError )=0;
+	virtual TVerdict doTestStepL();
+	virtual ~CSwisAsyncStep();
+	
+protected:
+	void GetCancelDelay();
+	void RunOperation();
+	virtual void doTestStepBodyL()=0;
+
+	CSwisAsyncStep(Swi::Test::TSwiCancelType aCancelTestType);
+	CAsyncManager *iAsyncManager;
+	TFileName iXmlFileName; // name of the file containing dialog data
+	TTimeIntervalMicroSeconds32 iCancelDelay;
+	Swi::Test::TSwiCancelType iCancelTestType;
+	Swi::Test::CUIScriptAdaptor* iUi; // XML script-based UI implementation
+
+};
+
+
+class CSwisAsyncInstallStep : public CSwisAsyncStep
+	{
+public:
+	enum TInstallType { EUseFileHandle, EUseFileName, EUseCAF, EUseOpenFileName};
+
+	CSwisAsyncInstallStep(TInstallType aInstallType, Swi::Test::TSwiCancelType aCancelTestType = Swi::Test::ENoCancel);
+	~CSwisAsyncInstallStep();
+	virtual void Stop(TInt aError);
+	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepPostambleL();
+
+private:
+	TInt DoInstallL(Swi::CInstallPrefs& aInstallPrefs);
+	virtual void doTestStepBodyL();
+private:
+	TFileName iSisFileName; // name of the file to install
+	TInstallType iInstallType; // use file handle to install
+	TPtrC iExpectedHash;
+	TInt iExpectedDialog;
+	TInt iKErrCode;
+	TBool iUseDeviceLanguages;
+	RArray<TInt> iDeviceLanguages;
+	};
+
+
+/**
+ * Asynchronous uninstallation test step class
+ * @test
+ * @internalComponent
+ */
+
+class CSwisAsyncUninstallStep : public CSwisAsyncStep
+	{
+public:
+	enum TAsyncUninstallType { EByUid, EByPackage };
+	
+	CSwisAsyncUninstallStep(TAsyncUninstallType aType, Swi::Test::TSwiCancelType aCancelTestType = Swi::Test::ENoCancel);
+	// virtual ~CSwisAsyncUninstallStep();
+	
+	virtual void Stop(TInt aError);
+	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepPostambleL();
+private:
+	TInt DoUninstallL();
+	virtual void doTestStepBodyL();
+
+private:
+	TUid iUid;
+	TPtrC iVendorName;
+	TPtrC iPackageName;
+	TAsyncUninstallType iType;
+	TBool *iFinished;
+	TInt iExpectedDialog;
+	TInt iKErrCode;
+	};
+
+/**
+ * Manager of installation steps
+ * This class waits for the async install/uninstall Active objects to finish doing something
+ * @test
+ * @internalComponent
+ */
+class CAppSidChecker;
+class CAsyncManager : public CActive
+	{
+public:
+	static CAsyncManager *NewL(CSwisAsyncStep* parent);
+	
+	~CAsyncManager();
+	
+	void DoIt(TTimeIntervalMicroSeconds32 aTimeout, bool aTimeoutIsOk = false);
+	void Stop();
+
+
+	void InstallL(Swi::MUiHandler& aUiHandler,
+				  const TFileName& aFileName, 
+				  const Swi::CInstallPrefs& aInstallPrefs);
+	
+	void InstallL(Swi::MUiHandler& aUiHandler, 
+				  Swi::MSisDataProvider& aDataProvider,
+				  const Swi::CInstallPrefs& aInstallPrefs);
+
+	void InstallL(Swi::MUiHandler& aUiHandler, 
+				  RFile& aFileHandle,
+				  const Swi::CInstallPrefs& aInstallPrefs);
+	
+	void InstallL(Swi::MUiHandler& aUiHandler, const TFileName& aFileName,
+				  const Swi::CInstallPrefs& aInstallPrefs, 
+				  const RArray<TInt> aDeviceSupportedLanguages);
+			
+	void InstallL(Swi::MUiHandler& aUiHandler, RFile& aFileHandle, 
+				  const Swi::CInstallPrefs& aInstallPrefs, 
+				  const RArray<TInt> aDeviceSupportedLanguages);
+				
+	void InstallL(Swi::MUiHandler& aUiHandler, Swi::MSisDataProvider& aDataProvider, 
+				  const Swi::CInstallPrefs& aInstallPrefs, 
+				  const RArray<TInt> aDeviceSupportedLanguages);
+
+	void UninstallL(Swi::MUiHandler& aUiHandler, 
+					const TUid& aUid);
+
+	void UninstallL(Swi::MUiHandler& aUiHandler,
+					const Swi::CSisRegistryPackage& aPackage);
+	
+	void CancelOperation();
+
+
+	// From CActive
+	void RunL();
+	void DoCancel();	
+	TInt RunError(TInt aError);
+
+	
+private:
+	CAsyncManager(const CAsyncManager&); // prevent copy construct
+	const CAsyncManager& operator=(const CAsyncManager&); // prevent assignment
+
+	CAsyncManager(CSwisAsyncStep* aStep);
+	void ConstructL();
+
+	static TInt StaticNotificationCallback(TAny *aAny);
+	TInt NotificationCallback();
+
+	void StopIfDone();
+
+	CSwisAsyncStep* iStep; // Our parent step
+
+	CStepScheduler* iScheduler;
+
+	CWatchdog* iWatchdog;
+
+	Swi::CAsyncLauncher* iAsyncLauncher;
+
+	CAppSidChecker *iSwiSidChecker;
+
+	TInt iNotificationCount;
+	TInt iBootMode;
+	};
+
+
+/**
+ * Scheduler step
+ * This class waits for the async install/uninstall Active objects to finish doing something
+ * @test
+ * @internalComponent
+ */
+class CStepScheduler : public CActiveScheduler
+	{
+public:
+	virtual void Error(TInt aError) const;
+	void SetStep(CSwisAsyncStep* aStep) { iStep = aStep; }
+	
+protected:
+	CSwisAsyncStep* iStep;
+	};
+
+class CWatchdog : public CActive 
+	{
+public:
+	static CWatchdog* NewL();
+	~CWatchdog();
+	void Wait(TTimeIntervalMicroSeconds32 aTimeout, bool aTimeoutIsOk = false);
+	
+	void RunL();
+	void DoCancel();
+protected:
+	CWatchdog();
+	void ConstructL();
+	
+private:
+	RTimer iTimer;
+	TTime iFromTime;
+	bool iTimeoutIsOk;
+	};
+
+
+_LIT(KSwisInstallAsyncStep, "InstallAsyncStep");
+_LIT(KSwisInstallAsyncFHStep, "InstallAsyncFHStep");
+_LIT(KSwisInstallAsyncCAFStep, "InstallAsyncCAFStep");
+_LIT(KSwisInstallAsyncCancelStep, "InstallAsyncCancelStep");
+_LIT(KSwisUninstallAsyncStep, "UninstallAsyncStep");
+_LIT(KSwisUninstallAsyncCancelStep, "UninstallAsyncCancelStep");
+_LIT(KSwisInstallAsyncCancelAfterDialogsStep, "InstallAsyncCancelAfterDialogsStep");
+_LIT(KSwisUninstallAsyncCancelAfterDialogsStep, "UninstallAsyncCancelAfterDialogsStep");
+
+#endif // TSWISASYNCSTEP_H