diff -r 5cc91383ab1e -r 7333d7932ef7 installationservices/swinstallationfw/inc/sifplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/installationservices/swinstallationfw/inc/sifplugin.h Tue Aug 31 15:21:33 2010 +0300 @@ -0,0 +1,179 @@ +/* +* 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: +* This file defines a SIF plug-in interface. +* +*/ + + +/** + @file + @publishedAll + @released +*/ + +#ifndef SIFPLUGIN_H +#define SIFPLUGIN_H + +#include +#include +#include + +#include +#include + +namespace Usif + { + /** ECOM SIF plug-in Uid */ + const TUid PluginEcomUid = {0x10285BC2}; + + /** + An abstract SIF plug-in interface. It implements the SIF software management + services interfaces for a particular software type. + + The SIF Server uses a SIF plug-in when a package of a type it supports + is to be processed. + + Each method in this interface provides a security context. An installer may + use it in order to verify client's identity and capabilities. For example, a Java + installer may require the ECapabilityWriteUserData capability to activate or + deactivate a MIDlet. + + Complex installers that need to be implemented as stand-alone servers may use + the SIF Transport library in order to simplify sending/receiving SIF requests + across a process boundary. + */ + class CSifPlugin : public CBase + { + public: + + /** + A derived class must provide an implementation that returns details of a component + to be installed by file name. + + @param aFileName Component's file name + @param aSecurityContext this param allows the plug-in to verify client's identity + @param aComponentInfo On return, contains component's details + @param aStatus Asynchronous completion status + */ + virtual void GetComponentInfo(const TDesC& aFileName, const TSecurityContext& aSecurityContext, + CComponentInfo& aComponentInfo, TRequestStatus& aStatus) = 0; + + /** + A derived class must provide an implementation that returns details of a component + to be installed by file handle. + + @param aFileHandle Component's file name + @param aSecurityContext this param allows the plug-in to verify client's identity + @param aComponentInfo On return, contains component's details + @param aStatus Asynchronous completion status + */ + virtual void GetComponentInfo(RFile& aFileHandle, const TSecurityContext& aSecurityContext, + CComponentInfo& aComponentInfo, TRequestStatus& aStatus) = 0; + + /** + A derived class must provide an implementation that installs a component by file name. + + @param aFileName Component's file name + @param aSecurityContext this param allows the plug-in to verify client's identity + @param aArguments The array of opaque params for the plug-in. An empty + array may be passed. The following param is defined for the "SCOMO Install + Inactive" operation: + Name: InstallInactive, Type: Int, Value: ETrue + If a plug-in receives this param, it must install a component normally but the SCOMO + State should remain EDeactivated. + @param aResults The array of opaque params returned from the plug-in. + The following return param is defined for the id of an installed component: + Name: ComponentId, Type: Int + Each plug-in must add this param to aResults after a successful installation. + For packages containing embedded components, the returned param contains + the id of the last/most embedded component. + @param aStatus Asynchronous completion status + */ + virtual void Install(const TDesC& aFileName, const TSecurityContext& aSecurityContext, + const COpaqueNamedParams& aArguments, COpaqueNamedParams& aResults, + TRequestStatus& aStatus) = 0; + + /** + A derived class must provide an implementation that installs a component by file handle. + + @param aFileHandle Component's file handle + @param aSecurityContext this param allows the plug-in to verify client's identity + @param aArguments The array of opaque params for the plug-in. An empty + array may be passed. The following param is defined for the "SCOMO Install + Inactive" operation: + Name: InstallInactive, Type: Int, Value: ETrue + If a plug-in receives this param, it must install a component normally but the SCOMO + State should remain EDeactivated. + @param aResults The array of opaque params returned from the plug-in. + The following return param is defined for the id of an installed component: + Name: ComponentId, Type: Int + Each plug-in must add this param to aResults after a successful installation. + For packages containing embedded components, the returned param contains + the id of the last/most embedded component. + @param aStatus Asynchronous completion status + */ + virtual void Install(RFile& aFileHandle, const TSecurityContext& aSecurityContext, + const COpaqueNamedParams& aArguments, COpaqueNamedParams& aResults, + TRequestStatus& aStatus) = 0; + + /** + A derived class must provide an implementation that uninstalls a component. + + @param aComponentId The id of a component to be uninstalled + @param aSecurityContext this param allows the plug-in to verify client's identity + @param aArguments The array of opaque params for the plug-in. An empty + array may be passed. + @param aResults The array of opaque results returned from the plug-in. + @param aStatus The request status. KErrNone, if successful, otherwise + one of the other system-wide or SIF error codes defined in usiferror.h. + */ + virtual void Uninstall(TComponentId aComponentId, const TSecurityContext& aSecurityContext, + const COpaqueNamedParams& aArguments, COpaqueNamedParams& aResults, + TRequestStatus& aStatus) = 0; + + /** + A derived class must provide an implementation that activates a component. + + @param aComponentId The id of a component to be activated + @param aSecurityContext this param allows the plug-in to verify client's identity + @param aStatus The request status. KErrNone, if successful, otherwise + one of the other system-wide or SIF error codes defined in usiferror.h. + */ + virtual void Activate(TComponentId aComponentId, const TSecurityContext& aSecurityContext, + TRequestStatus& aStatus) = 0; + + /** + A derived class must provide an implementation that deactivates a component. + + @param aComponentId The id of a component to be deactivated + @param aSecurityContext this param allows the plug-in to verify client's identity + @param aStatus The request status. KErrNone, if successful, otherwise + one of the other system-wide or SIF error codes defined in usiferror.h. + */ + virtual void Deactivate(TComponentId aComponentId, const TSecurityContext& aSecurityContext, + TRequestStatus& aStatus) = 0; + + /** + A derived class must provide an implementation that cancels an ongoing asynchronous request. + + This is a synchronous call. When it returns the original asynchronous call is completed. + */ + virtual void CancelOperation() = 0; + + virtual ~CSifPlugin() {} + }; + } // namespace Usif + +#endif // SIFPLUGIN_H