--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/authorisation/userpromptservice/test/tups_install/tupsstep.cpp Wed Sep 01 12:40:57 2010 +0100
@@ -0,0 +1,342 @@
+/*
+* Copyright (c) 2008-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:
+* tswisstep.cpp
+* UPS test step implementation
+*
+*/
+
+
+
+
+/**
+ @file
+*/
+
+
+#include <e32std.h>
+#include "tupsstep.h"
+#include "testutilclient.h"
+#include <test/testexecutelog.h>
+#include <swi/launcher.h>
+#include "swi/sisregistryentry.h"
+#include "swi/sisregistrysession.h"
+#include "swi/sisregistrypackage.h"
+#include "cleanuputils.h"
+
+using namespace Swi;
+using namespace Swi::Test;
+
+//
+// CUpsInstallStep
+//
+
+CUpsInstallStep::~CUpsInstallStep()
+ {
+ delete iUi;
+ }
+
+
+CUpsInstallStep::CUpsInstallStep(TInstallType aInstallType)
+ : iInstallType(aInstallType)
+ {
+ // Call base class method to set up the human readable name for logging
+ SetTestStepName(KUpsInstallStep);
+ }
+
+/**
+ * Override of base class virtual. Prepares for the test run of SWIS
+ * @return TVerdict code
+ */
+TVerdict CUpsInstallStep::doTestStepPreambleL()
+ {
+ // get step parameters
+ TPtrC str;
+ if (!GetStringFromConfig(ConfigSection(), _L("sis"), str))
+ {
+ ERR_PRINTF1(_L("Missing SIS file name"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ iSisFileName.Copy(str);
+ if (!GetStringFromConfig(ConfigSection(), _L("script"), str))
+ {
+ ERR_PRINTF1(_L("Missing XML file name"));
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ iXmlFileName.Copy(str);
+ INFO_PRINTF3(_L("Installing '%S' using script '%S'"),
+ &iSisFileName, &iXmlFileName);
+ // create UI handler with default entries
+ iUi = CUIScriptAdaptor::NewL(iXmlFileName, Logger());
+ }
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * Override of base class pure virtual
+ * Demonstrates reading configuration parameters fom an ini file section
+ * @return TVerdict code
+ */
+TVerdict CUpsInstallStep::doTestStepL()
+ {
+ INFO_PRINTF1(KUpsInstallStep);
+
+ // launch the installation
+ CInstallPrefs* prefs = CInstallPrefs::NewLC();
+
+ TInt err = DoInstallL(*prefs);
+ INFO_PRINTF2(_L("DoInstallL returned %d"), err);
+ if (err != KErrNone)
+ {
+ // Can't set error to KErrServerBusy, or Testexecute will retry.
+ SetTestStepResult((err != KErrServerBusy)? static_cast<TVerdict>(err) : EFail);
+ }
+ CleanupStack::PopAndDestroy(prefs);
+ return TestStepResult();
+ }
+
+TInt CUpsInstallStep::DoInstallL(CInstallPrefs& aInstallPrefs)
+ {
+ switch (iInstallType)
+ {
+ case EUseFileName:
+ return Launcher::Install(*iUi, iSisFileName, aInstallPrefs);
+ }
+
+ // Shouldn't get here
+ return KErrGeneral;
+ }
+
+/**
+ * Override of base class virtual
+ * @return TVerdict code
+ */
+TVerdict CUpsInstallStep::doTestStepPostambleL()
+ {
+/* if((TestStepResult() == EPass))
+ {
+ RSisRegistrySession registrySession;
+ User::LeaveIfError(registrySession.Connect());
+ CleanupClosePushL(registrySession);
+
+ RSisRegistryEntry registryEntry;
+ TInt error=registryEntry.Open(registrySession, iUid);
+ if(error != KErrNone)
+ {
+ ERR_PRINTF2(_L("RSisRegistrySession::Open failed error=%d\n"), error);
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ CleanupClosePushL(registryEntry);
+
+ TInt userDrive =0;
+ TRAP(error, userDrive = registryEntry.SelectedDriveL());
+ if((error != KErrNone) || (userDrive != iExpectedUserDrive))
+ {
+ ERR_PRINTF4(_L("SelectedDriveL err=%d, userDrive expected %d got %d\n"),
+ error, iExpectedUserDrive, userDrive);
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("SelectedDriveL userDrive = %d OK\n"), userDrive);
+ }
+
+ CleanupStack::PopAndDestroy(®istryEntry);
+ }
+ CleanupStack::PopAndDestroy(®istrySession);
+ }*/
+
+ return TestStepResult();
+ }
+
+//
+// CSwisUninstallStep
+//
+
+CUpsUninstallStep::~CUpsUninstallStep()
+ {
+ delete iUi;
+ }
+
+CUpsUninstallStep::CUpsUninstallStep(TUninstallType aType)
+ : iType(aType)
+ {
+ // Call base class method to set up the human readable name for logging
+ SetTestStepName(KUpsUnInstallStep);
+ }
+
+
+
+
+/**
+ * Override of base class virtual. Prepares for the test run of SWIS
+ * @return TVerdict code
+ */
+TVerdict CUpsUninstallStep::doTestStepPreambleL()
+ {
+ INFO_PRINTF1(_L("CUpsUninstallStep::doTestStepPreambleL"));
+ // get step parameters
+
+ TPtrC str;
+ if (!GetStringFromConfig(ConfigSection(), _L("script"), str))
+ {
+ ERR_PRINTF1(_L("Missing XML file name"));
+ SetTestStepResult(EFail);
+ return EFail;
+ }
+ iXmlFileName.Copy(str);
+ TInt uid=0;
+
+ if (!GetHexFromConfig(ConfigSection(), _L("uid"), uid))
+ {
+ ERR_PRINTF1(_L("Missing uid"));
+ SetTestStepResult(EFail);
+ return EFail;
+ }
+
+ iUid.iUid=uid;
+
+ if (iType == EByPackage)
+ {
+ TPtrC vendorName;
+ if (!GetStringFromConfig(ConfigSection(), _L("vendorName"), vendorName))
+ {
+ ERR_PRINTF1(_L("Missing Vendor Name"));
+ SetTestStepResult(EFail);
+ return EFail;
+ }
+ iVendorName.Set(vendorName);
+
+ TPtrC packageName;
+ if (!GetStringFromConfig(ConfigSection(), _L("packageName"), packageName))
+ {
+ ERR_PRINTF1(_L("Missing Package Name"));
+ SetTestStepResult(EFail);
+ return EFail;
+ }
+ iPackageName.Set(packageName);
+
+
+ INFO_PRINTF5(_L("Uninstalling %D, %S, %S using script '%S'"),
+ iUid.iUid, &iPackageName, &iVendorName, &iXmlFileName);
+ // create UI handler with default entries
+ iUi = CUIScriptAdaptor::NewL(iXmlFileName, Logger());
+ }
+ else if (iType== EByUid)
+ {
+ INFO_PRINTF3(_L("Uninstalling '%D' using script '%S'"),
+ iUid.iUid, &iXmlFileName);
+ // create UI handler with default entries
+ iUi = CUIScriptAdaptor::NewL(iXmlFileName, Logger());
+ }
+
+ return TestStepResult();
+ }
+
+/**
+ * Override of base class pure virtual
+ * Demonstrates reading configuration parameters fom an ini file section
+ * @return TVerdict code
+ */
+
+TInt CUpsUninstallStep::DoUninstallL()
+ {
+ TInt error = KErrNotFound;
+
+ if (iType == EByUid)
+ {
+ // launch the installation
+ return Launcher::Uninstall(*iUi, iUid);
+ }
+ else if (iType == EByPackage)
+ {
+
+ TInt err = KErrNotFound;
+ // Go through list of packages from base package to get augmentations.
+ CSisRegistryPackage* uninstallPackage=CSisRegistryPackage::NewLC(iUid, iPackageName, iVendorName);
+
+ RSisRegistrySession registrySession;
+ User::LeaveIfError(registrySession.Connect());
+ CleanupClosePushL(registrySession);
+
+ RSisRegistryEntry registryEntry;
+
+ User::LeaveIfError(registryEntry.Open(registrySession, iUid));
+ CleanupClosePushL(registryEntry);
+
+ CSisRegistryPackage* package=registryEntry.PackageL();
+ CleanupStack::PushL(package);
+
+ if (*package == *uninstallPackage)
+ {
+ err = -1;
+ err=Launcher::Uninstall(*iUi, *package);
+ }
+ else
+ {
+ // check augmenations
+ RPointerArray<CSisRegistryPackage> augmentationPackages;
+ CleanupResetAndDestroy<RPointerArray<CSisRegistryPackage> >::PushL(augmentationPackages);
+
+ registryEntry.AugmentationsL(augmentationPackages);
+ for (TInt i=0; i < augmentationPackages.Count(); ++i)
+ {
+ if (*augmentationPackages[i] == *uninstallPackage)
+ {
+ err=User::LeaveIfError(Launcher::Uninstall(*iUi, *augmentationPackages[i]));
+ break;
+ }
+ }
+ CleanupStack::PopAndDestroy(&augmentationPackages);
+ }
+
+ CleanupStack::PopAndDestroy(3, ®istrySession);
+ CleanupStack::PopAndDestroy(uninstallPackage);
+ error = err;
+ }
+ return error;
+ }
+
+TVerdict CUpsUninstallStep::doTestStepL()
+ {
+ INFO_PRINTF1(KUpsUnInstallStep);
+
+ TInt err = DoUninstallL();
+ INFO_PRINTF2(_L("DoUninstallL returned %d"), err);
+ if (err != KErrNone)
+ {
+ // Can't set error to KErrServerBusy, or Testexecute will retry.
+ SetTestStepResult((err != KErrServerBusy)? static_cast<TVerdict>(err) : EFail);
+ }
+ return TestStepResult();
+ }
+
+/**
+ * Override of base class virtual
+ * @return TVerdict code
+ */
+TVerdict CUpsUninstallStep::doTestStepPostambleL()
+ {
+ return TestStepResult();
+ }
+
+// End of file