diff -r 000000000000 -r 7f656887cf89 commands/swi/swi.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commands/swi/swi.h Wed Jun 23 15:52:26 2010 +0100 @@ -0,0 +1,221 @@ +// swi.h +// +// Copyright (c) 2008 - 2010 Accenture. All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the "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: +// Accenture - Initial contribution +// + +#ifndef _SWI_CMD_ +#define _SWI_CMD_ + +#include +#include +#include +#include +#include +#include + +#ifndef SYMBIAN_JAVA_NOT_INCLUDED + #include + #include + #include + #include + #include + #include + #include + #include +#endif // SYMBIAN_JAVA_NOT_INCLUDED + +using namespace IoUtils; +using namespace Swi; + +// +// MCmdSwiParent +// +class MCmdSwiParent + { +public: + virtual RIoConsoleReadHandle& Input() = 0; + virtual RIoConsoleWriteHandle& Output(TInt aError = KErrNone) = 0; + virtual void Finished(const TInt aError) = 0; + virtual TBool GetAnswer() = 0; + }; + +#ifndef SYMBIAN_JAVA_NOT_INCLUDED + // + // CSwiMidletInstallerAO + // active object managing the actual installation/uninstallation of jar/jad files + // + class CSwiMidletInstallerAO : public CActive, public MJavaInstallerUI, public MJarDownloaderUI, public MJavaRemoverUI + { + public: + static CSwiMidletInstallerAO* NewL(MCmdSwiParent& aParent, RFs& aFs, TBool aVerbose, TBool aQuiet); + ~CSwiMidletInstallerAO(); + + void InstallL(TFileName& aInstallFile); + void UninstallL(const TUid& aPackageUid); + void ListInstalledAppsL(TUid aAppUid, const TDesC& aMatchString); + TBool IsJad(TDes& aMidlet); + TBool IsJar(TDes& aMidlet); + + // java UI handlers + virtual TBool StartInstallL(const CMIDletSuiteAttributes& aMIDlet); + virtual TBool SelectDriveL(const CMIDletSuiteAttributes& aMIDlet, TInt aSpaceRequired, TChar& aDrive, TBool& aSufficientSpace); + virtual TBool ReplaceExistingMIDletL(const CMIDletSuiteAttributes& aMIDlet, const TAppVersion& aOldVersion); + virtual TBool UpgradeRMSL(const CMIDletSuiteAttributes& aMIDlet, const TAppVersion& aOldVersion); + virtual TBool MIDletUntrustedL(const CMIDletSuiteAttributes& aMIDlet); + virtual void CertificateHasNoRootL(const CMIDletSuiteAttributes& aMIDlet, const CPKIXCertChain& aCertChain, const CPKIXValidationResult& aValidationResult); + virtual void BadSignatureL(const CMIDletSuiteAttributes& aMIDlet, const CPKIXCertChain& aCertChain, const CPKIXValidationResult& aValidationResult); + virtual TBool PerformRevocationCheckL(TBool& aDoCheck); + virtual void StartRevocationCheckL(); + virtual void FinishedRevocationCheckL(); + virtual void StartIconConversionL(); + virtual void FinishedIconConversionL(); + virtual TBool OCSPWarningL(const CMIDletSuiteAttributes& aMIDlet, TRevocationMsg aRevocationMsg, const TOCSPOutcome* aOCSPOutcome); + virtual void OCSPErrorL(const CMIDletSuiteAttributes& aMIDlet, TRevocationMsg aRevocationMsg, const TOCSPOutcome* aOCSPOutcome); + virtual TBool MIDletInUseL(const CMIDletSuiteAttributes& aMIDlet); + virtual void OTAReportResponseL(TInt aOTAResponseCode, const TDesC& aReportBody); + virtual TInt CopyStarted(TInt aSize); + virtual TInt DownloadStarted(TInt aSize); + virtual TInt UpdateProgress(TInt aSize); + virtual TBool GetUsernamePasswordL(HBufC8*& aUsername, HBufC8*& aPassword); + virtual TBool ConfirmRemovalL(const TDesC& aRemovalMessage); + virtual void InitialiseProgressBarL(TInt aMaximumLength); + virtual void UpdateProgressBarL(TInt aUnits); + virtual TBool MIDletInUseL(); + virtual TBool FileInUseL(const TDesC& aFileName); + private: + CSwiMidletInstallerAO(MCmdSwiParent& aParent, RFs& aFs, TBool aVerbose, TBool aQuiet); + void ConstructL(); + void DisplayPackageL(MJavaRegistryMIDletEntry& aPackage); + + inline RIoConsoleReadHandle& Stdin(){return iParent.Input();} + inline RIoConsoleWriteHandle& Stdout(){return iParent.Output();} + inline RIoConsoleWriteHandle& Stderr(){return iParent.Output(KErrGeneral);} + + // from CActive + void DoCancel(); + void RunL(); + private: + MCmdSwiParent& iParent; + RFs& iFs; + TBool iVerbose; + TBool iQuiet; + CJavaInstaller* iInstaller; + CJavaFileHandle* iJadHandle; + CJavaFileHandle* iJarHandle; + CMIDPInstallationLaunchInfo* iInfo; + CJavaRemover* iRemover; + }; +#endif // SYMBIAN_JAVA_NOT_INCLUDED + +// +// CSwiSisInstallerAO +// active object managing the actual installation/uninstallation of sis files +// +class CSwiSisInstallerAO : public CActive, public Swi::MUiHandler + { +public: + static CSwiSisInstallerAO* NewL(MCmdSwiParent& aParent, RFs& aFs, TBool aVerbose, TBool aQuiet); + ~CSwiSisInstallerAO(); + + // user commands + void InstallL(TFileName& aInstallFile); + void UninstallL(const TUid& aPackageUid); + void ListInstalledAppsL(const TUid& aAppUid, const TDesC& aMatchString); + + // Swi UI handlers + virtual TBool DisplayTextL(const Swi::CAppInfo& aAppInfo, Swi::TFileTextOption aOption, const TDesC& aText); + virtual void DisplayErrorL(const Swi::CAppInfo& aAppInfo, Swi::TErrorDialog aType, const TDesC& aParam); + virtual TBool DisplayDependencyBreakL(const Swi::CAppInfo& aAppInfo, const RPointerArray& aComponents); + virtual TBool DisplayApplicationsInUseL(const Swi::CAppInfo& aAppInfo, const RPointerArray& aAppNames); + virtual TBool DisplayQuestionL(const Swi::CAppInfo& aAppInfo, Swi::TQuestionDialog aQuestion, const TDesC& aDes=KNullDesC); + virtual TBool DisplayInstallL(const Swi::CAppInfo& aAppInfo, const CApaMaskedBitmap* aLogo, const RPointerArray& aCertificates); + virtual TBool DisplayGrantCapabilitiesL(const Swi::CAppInfo& aAppInfo, const TCapabilitySet& aCapabilitySet); + virtual TInt DisplayLanguageL(const Swi::CAppInfo& aAppInfo, const RArray& aLanguages); + virtual TInt DisplayDriveL(const Swi::CAppInfo& aAppInfo, TInt64 aSize, const RArray& aDriveLetters, const RArray& aDriveSpaces); + virtual TBool DisplayUpgradeL(const Swi::CAppInfo& aAppInfo, const Swi::CAppInfo& aExistingAppInfo); + virtual TBool DisplayOptionsL(const Swi::CAppInfo& aAppInfo, const RPointerArray& aOptions, RArray& aSelections); + virtual TBool HandleInstallEventL(const Swi::CAppInfo& aAppInfo, Swi::TInstallEvent aEvent, TInt aValue=0, const TDesC& aDes=KNullDesC); + virtual void HandleCancellableInstallEventL(const Swi::CAppInfo& aAppInfo, Swi::TInstallCancellableEvent aEvent, Swi::MCancelHandler& aCancelHandler, TInt aValue=0, const TDesC& aDes=KNullDesC); + virtual TBool DisplaySecurityWarningL(const Swi::CAppInfo& aAppInfo, Swi::TSignatureValidationResult aSigValidationResult, RPointerArray& aPkixResults, RPointerArray& aCertificates, TBool aInstallAnyway); + virtual TBool DisplayOcspResultL(const Swi::CAppInfo& aAppInfo, Swi::TRevocationDialogMessage aMessage, RPointerArray& aOutcomes, RPointerArray& aCertificates, TBool aWarningOnly); + virtual void DisplayCannotOverwriteFileL(const Swi::CAppInfo& aAppInfo, const Swi::CAppInfo& aInstalledAppInfo, const TDesC& aFileName); + virtual TBool DisplayMissingDependencyL(const Swi::CAppInfo& aAppInfo, const TDesC& aDependencyName, TVersion aWantedVersionFrom, TVersion aWantedVersionTo, TVersion aInstalledVersion); + virtual TBool DisplayUninstallL(const Swi::CAppInfo& aAppInfo); +private: + CSwiSisInstallerAO(MCmdSwiParent& aParent, RFs& aFs, TBool aVerbose, TBool aQuiet); + void ConstructL(); + + void PrintDetails(Swi::CSisRegistryPackage& aPackage); + void DisplayPackageL(const TUid& aPackageUid); + Swi::CSisRegistryPackage* GetSisRegistryPackageL(const TUid& aPackageUid); + + inline RIoConsoleReadHandle& Stdin(){return iParent.Input();} + inline RIoConsoleWriteHandle& Stdout(){return iParent.Output();} + inline RIoConsoleWriteHandle& Stderr(){return iParent.Output(KErrGeneral);} + + // from CActive + void DoCancel(); + void RunL(); +private: + MCmdSwiParent& iParent; + TBool iVerbose; + TBool iQuiet; + CAsyncLauncher* iLauncher; + Swi::RSisRegistrySession iRegistrySession; + Swi::CInstallPrefs* iPrefs; + Swi::CSisRegistryPackage* iRegPackage; + TChar iCurrentDrive; + }; + +// +// CCmdSwi +// Fshell-console based class handling swi related functionality +// +class CCmdSwi : public CCommandBase, public MCmdSwiParent + { +public: + static CCommandBase* NewLC(); + ~CCmdSwi(); +private: + CCmdSwi(); + + // utilities + TBool IsMidlet(); + + // fshell hooks + virtual const TDesC& Name() const; + virtual void DoRunL(); + virtual void ArgumentsL(RCommandArgumentList& aArguments); + virtual void OptionsL(RCommandOptionList& aOptions); + + // MCmdSwiParent hooks + virtual RIoConsoleReadHandle& Input(); + virtual RIoConsoleWriteHandle& Output(TInt aError); + virtual void Finished(const TInt aError); + virtual TBool GetAnswer(); +private: +#ifndef SYMBIAN_JAVA_NOT_INCLUDED + CSwiMidletInstallerAO* iMidletHandler; +#endif + CSwiSisInstallerAO* iSisHandler; + TFileName2 iSisFile; + enum + { + EList, + EInstall, + EUninstall, + } iCommand; + TUid iUid; + HBufC* iMatch; + TBool iVerbose; + TBool iQuiet; + }; + +#endif // _SWI_CMD_