diff -r 0818dd463d41 -r 924385140d98 appfw/apparchitecture/tef/refnativeplugin/refnativeplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/appfw/apparchitecture/tef/refnativeplugin/refnativeplugin.h Tue Aug 31 15:24:25 2010 +0300 @@ -0,0 +1,173 @@ +/* +* Copyright (c) 2010 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: +* This class implements a test SIF plugin for native software +* +*/ + + +/** + @file + @internalComponent +*/ + +#ifndef REFNATIVEPLUGIN_H +#define REFNATIVEPLUGIN_H + +#include +#include +#include +#include +#include + +namespace Swi +{ + class CAsyncLauncher; + class CInstallPrefs; +} + +namespace Usif + { + + _LIT(KDeclineOperationOptionName, "SwiDeclineOperation"); + // ECOM objects and CActive do not interact well - especially since SIFPlugin inherits from CBase + // and double C-inheritance is impossible. So, a separate class is used to drive the asynchronous interaction + // to the CAsyncLauncher + NONSHARABLE_CLASS(CRefNativePluginActiveImpl) : public CActive, public Swi::MUiHandler + { + public: + static CRefNativePluginActiveImpl* NewL(); + ~CRefNativePluginActiveImpl(); + + // CActive interface + void RunL(); + void DoCancel(); + + void Install(const TDesC& aFileName, const TSecurityContext& aSecurityContext, + const COpaqueNamedParams& aInputParams, COpaqueNamedParams& aOutputParams, + TRequestStatus& aStatus); + + void Install(RFile& aFileHandle, const TSecurityContext& aSecurityContext, + const COpaqueNamedParams& aInputParams, COpaqueNamedParams& aOutputParams, + TRequestStatus& aStatus); + + void GetComponentInfo(const TDesC& aFileName, CComponentInfo& aComponentInfo, TRequestStatus& aStatus); + + void GetComponentInfo(RFile& aFileHandle, CComponentInfo& aComponentInfo, TRequestStatus& aStatus); + + void Uninstall(TComponentId aComponentId, const TSecurityContext& aSecurityContext, + const COpaqueNamedParams& aInputParams, COpaqueNamedParams& aOutputParams, + TRequestStatus& aStatus); + + void Activate(TComponentId aComponentId, const TSecurityContext& aSecurityContext, + TRequestStatus& aStatus); + + void Deactivate(TComponentId aComponentId, const TSecurityContext& aSecurityContext, + TRequestStatus& aStatus); + + // Swi::MUiHandler interface + TInt DisplayLanguageL(const Swi::CAppInfo& aAppInfo,const RArray& aLanguages); + TInt DisplayDriveL(const Swi::CAppInfo& aAppInfo,TInt64 aSize, const RArray& aDriveLetters,const RArray& aDriveSpaces); + TBool DisplayUninstallL(const Swi::CAppInfo& aAppInfo); + TBool DisplayTextL(const Swi::CAppInfo& aAppInfo,Swi::TFileTextOption aOption,const TDesC& aText); + TBool DisplayDependencyBreakL(const Swi::CAppInfo& aAppInfo, const RPointerArray& aComponents); + TBool DisplayApplicationsInUseL(const Swi::CAppInfo& aAppInfo, const RPointerArray& aAppNames); + TBool DisplayQuestionL(const Swi::CAppInfo& aAppInfo, Swi::TQuestionDialog aQuestion, const TDesC& aDes); + TBool DisplayInstallL(const Swi::CAppInfo& aAppInfo,const CApaMaskedBitmap* aLogo, const RPointerArray& aCertificates); + TBool DisplayGrantCapabilitiesL(const Swi::CAppInfo& aAppInfo, const TCapabilitySet& aCapabilitySet); + TBool DisplayUpgradeL(const Swi::CAppInfo& aAppInfo, const Swi::CAppInfo& aExistingAppInfo); + TBool DisplayOptionsL(const Swi::CAppInfo& aAppInfo, const RPointerArray& aOptions,RArray& aSelections); + TBool DisplaySecurityWarningL(const Swi::CAppInfo& aAppInfo, Swi::TSignatureValidationResult aSigValidationResult, + RPointerArray& aPkixResults, RPointerArray& aCertificates,TBool aInstallAnyway); + TBool DisplayOcspResultL(const Swi::CAppInfo& aAppInfo, Swi::TRevocationDialogMessage aMessage,RPointerArray& aOutcomes, + RPointerArray& aCertificates,TBool aWarningOnly); + TBool DisplayMissingDependencyL(const Swi::CAppInfo& aAppInfo, const TDesC& aDependencyName,TVersion aWantedVersionFrom, + TVersion aWantedVersionTo,TVersion aInstalledVersion); + TBool HandleInstallEventL(const Swi::CAppInfo& aAppInfo, Swi::TInstallEvent aEvent,TInt aValue = 0,const TDesC& aDes = KNullDesC); + void HandleCancellableInstallEventL(const Swi::CAppInfo& aAppInfo, Swi::TInstallCancellableEvent aEvent,Swi::MCancelHandler& aCancelHandler, + TInt aValue = 0,const TDesC& aDes=KNullDesC); + void DisplayCannotOverwriteFileL(const Swi::CAppInfo& aAppInfo, const Swi::CAppInfo& aInstalledAppInfo,const TDesC& aFileName); + void DisplayErrorL(const Swi::CAppInfo& aAppInfo,Swi::TErrorDialog aType,const TDesC& aParam); + private: + CRefNativePluginActiveImpl() : CActive(EPriorityStandard) {} + CRefNativePluginActiveImpl(const CRefNativePluginActiveImpl &); + CRefNativePluginActiveImpl & operator =(const CRefNativePluginActiveImpl &); + void ConstructL(); + void CommonRequestPreamble(const TSecurityContext& aSecurityContext, const COpaqueNamedParams& aInputParams, + COpaqueNamedParams& aOutputParams, TRequestStatus& aStatus); + void UninstallL(TComponentId aComponentId, const TSecurityContext& aSecurityContext, + const COpaqueNamedParams& aInputParams, COpaqueNamedParams& aOutputParams, + TRequestStatus& aStatus); + + TComponentId GetLastInstalledComponentIdL(); + TBool NeedUserCapabilityL(); + void ProcessSilentInstallL(); + private: + Swi::CAsyncLauncher* iAsyncLauncher; + Swi::CInstallPrefs* iInstallPrefs; + TRequestStatus* iClientStatus; + const COpaqueNamedParams* iInputParams; + COpaqueNamedParams* iOutputParams; + CComponentInfo* iComponentInfo; + TFileName iFileName; + RFile* iFileHandle; // FileHandle is not owned by the plug-in + TBool iDeclineOperation; // Used for plugin options - optionally specifies that the operation will not be confirmed at the first callback + TBool iInstallRequest; // Used to identify the type of the current requst in RunL() so we know if the id of an installed component should be sent + TBool iSilentInstall; // Used to identify a silent install + }; + + + NONSHARABLE_CLASS(CRefNativePlugin) : public CSifPlugin + { + public: + static CRefNativePlugin* NewL(); + ~CRefNativePlugin(); + + // MSIFPlugin interface + void GetComponentInfo(const TDesC& aFileName, const TSecurityContext& aSecurityContext, + CComponentInfo& aComponentInfo, TRequestStatus& aStatus); + + void GetComponentInfo(RFile& aFileHandle, const TSecurityContext& aSecurityContext, + CComponentInfo& aComponentInfo, TRequestStatus& aStatus); + + void Install(const TDesC& aFileName, const TSecurityContext& aSecurityContext, + const COpaqueNamedParams& aInputParams, COpaqueNamedParams& aOutputParams, + TRequestStatus& aStatus); + + void Install(RFile& aFileHandle, const TSecurityContext& aSecurityContext, + const COpaqueNamedParams& aInputParams, COpaqueNamedParams& aOutputParams, + TRequestStatus& aStatus); + + virtual void Uninstall(TComponentId aComponentId, const TSecurityContext& aSecurityContext, + const COpaqueNamedParams& aInputParams, COpaqueNamedParams& aOutputParams, + TRequestStatus& aStatus); + + virtual void Activate(TComponentId aComponentId, const TSecurityContext& aSecurityContext, + TRequestStatus& aStatus); + + virtual void Deactivate(TComponentId aComponentId, const TSecurityContext& aSecurityContext, + TRequestStatus& aStatus); + + void CancelOperation(); + private: + CRefNativePlugin() {} + void ConstructL(); + CRefNativePlugin(const CRefNativePlugin &); + CRefNativePlugin & operator =(const CRefNativePlugin &); + private: + CRefNativePluginActiveImpl *iImpl; + }; + } // end namespace Usif + +#endif // REFNATIVEPLUGIN_H