diff -r 5cc91383ab1e -r 7333d7932ef7 appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginactiveimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/appinstaller/AppinstUi/sisxsifplugin/inc/sisxsifpluginactiveimpl.h Tue Aug 31 15:21:33 2010 +0300 @@ -0,0 +1,148 @@ +/* +* 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 "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: CSisxSifPluginActiveImpl implements active object that +* handles installation operations requested via +* CSisxSifPlugin interface. +* +*/ + +#ifndef C_SISXSIFPLUGINIMPL_H +#define C_SISXSIFPLUGINIMPL_H + +#include // CActive +#include // MUiHandler +#include // TSecurityContext, COpaqueNamedParams +#include // TErrorCategory +#include // RFs, RFile +#include // RResourceFile + +namespace Swi +{ + class CAsyncLauncher; + class CInstallPrefs; +} + +namespace Usif +{ + class CComponentEntry; + class CSisxSifPluginUiHandlerBase; + class CSisxSifPluginInstallParams; + class CSisxSifPluginErrorHandler; + + /** + * SISX SIF plugin active implementation + * Universal Software Install Framework (USIF) plugin for native SISX + * installation. CSisxSifPluginActiveImpl is active object that takes + * care of SISX installation operations. + */ + class CSisxSifPluginActiveImpl : public CActive + { + public: // constructors and destructor + static CSisxSifPluginActiveImpl* NewL(); + ~CSisxSifPluginActiveImpl(); + + public: // from CActive + void DoCancel(); + void RunL(); + TInt RunError( TInt aError ); + + public: // new functions + 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& aArguments, COpaqueNamedParams& aResults, + TRequestStatus& aStatus ); + void Install( RFile& aFileHandle, const TSecurityContext& aSecurityContext, + const COpaqueNamedParams& aArguments, COpaqueNamedParams& aResults, + TRequestStatus& aStatus ); + void Uninstall( TComponentId aComponentId, const TSecurityContext& aSecurityContext, + const COpaqueNamedParams& aArguments, COpaqueNamedParams& aResults, + TRequestStatus& aStatus ); + void Activate( TComponentId aComponentId, const TSecurityContext& aSecurityContext, + TRequestStatus& aStatus ); + void Deactivate( TComponentId aComponentId, const TSecurityContext& aSecurityContext, + TRequestStatus& aStatus ); + + private: // new functions + CSisxSifPluginActiveImpl(); + void ConstructL(); + void CommonRequestPreambleL( TRequestStatus& aStatus ); + void CommonRequestPreambleL( const COpaqueNamedParams& aInputParams, + COpaqueNamedParams& aOutputParams, TRequestStatus& aStatus ); + void CompleteSelf( TInt aResult ); + void CreateUiHandlerL(); + TBool IsSilentMode(); + void CompleteClientRequest( TInt aResult ); + void DoGetComponentInfoL( CComponentInfo& aComponentInfo, TRequestStatus& aStatus ); + void DoInstallL( const TSecurityContext& aSecurityContext, + const COpaqueNamedParams& aInputParams, COpaqueNamedParams& aOutputParams, + TRequestStatus& aStatus ); + void DoUninstallL( TComponentId aComponentId, const COpaqueNamedParams& aInputParams, + COpaqueNamedParams& aOutputParams, TRequestStatus& aStatus ); + void DoActivateL( TComponentId aComponentId, TRequestStatus& aStatus ); + void DoDeactivateL( TComponentId aComponentId, TRequestStatus& aStatus ); + void DoHandleErrorL( TInt aError ); + void SetFileL( const TDesC& aFileName ); + void SetFile( RFile& aFileHandle ); + TComponentId GetLastInstalledComponentIdL(); + void GetComponentAndUidL( TComponentId aComponentId, CComponentEntry& aEntry, TUid& aUid ) const; + TBool RequiresUserCapabilityL( const CComponentInfo::CNode& aRootNode ); + void SetInstallPrefsRevocationServerUriL( const TDesC& aUri ); + void UpdateInstallPrefsForPerformingOcspL(); + void StartInstallingL(); + void StartSilentInstallingL(); + void StartSilentUninstallingL(); + void FinalizeInstallationL(); + void UpdateStartupListL(); + void FillDeviceSupportedLanguagesL(); + + private: // data + RFs iFs; + Swi::CAsyncLauncher* iAsyncLauncher; + CSisxSifPluginUiHandlerBase* iUiHandler; + Swi::CInstallPrefs* iInstallPrefs; + TRequestStatus* iClientStatus; + const COpaqueNamedParams* iInputParams; // not owned + COpaqueNamedParams* iOutputParams; // not owned + CSisxSifPluginInstallParams* iInstallParams; + CSisxSifPluginErrorHandler* iErrorHandler; + CComponentInfo* iComponentInfo; + TBool iHasAllFilesCapability; + HBufC* iFileName; + RFile* iFileHandle; // not owned + enum TOperationType + { + ENoOperation, + EGetComponentInfo, + EInstall, + EUninstall, + EActivate, + EDeactivate + } iOperation; + enum TPhase + { + ENotActive, + EPreprocessing, + ERunningOperation, + EPostprocessing + } iPhase; + RArray iDeviceSupportedLanguages; + }; + +} // namespace Usif + +#endif // C_SISXSIFPLUGINIMPL_H +