diff -r f5050f1da672 -r 04becd199f91 javamanager/javainstaller/javasifplugin/inc/javasifplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javainstaller/javasifplugin/inc/javasifplugin.h Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,239 @@ +/* +* Copyright (c) 2009 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: Java Sif plugin, ECom implementation of KUidSifPlugin. +* Starts Java Installer to handle install, uninstall, get component info +* requests. +*/ + + + +#ifndef JAVASIFPLUGIN_H +#define JAVASIFPLUGIN_H + +#include +#include + +#include "f32file.h" +#include "resultsserver.h" + +using namespace Usif; + +/** + * The messages known by JavaSifPlugin. + */ + +const int INSTALLER_CANCEL_MESSAGE_ID = 603; +const int INSTALLER_CANCEL_RESPONSE_MESSAGE_ID = 604; + +namespace Java +{ +namespace Installer +{ + +/** + * This class implements the ECom KUidSifPlugin interface for midlet + * installation for OMJ. + */ +NONSHARABLE_CLASS(CJavaSifPlugin) : public Usif::CSifPlugin +{ +public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CJavaSifPlugin* NewL(); + + /** + * Destructor. + */ + virtual ~CJavaSifPlugin(); + +public: // From base classes + + // From base class CSifPlugin + + /** + * 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); + + /** + * 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); + + /** + * 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); + + /** + * 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); + + /** + * 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); + + /** + * 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); + + /** + * 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); + + /** + * Cancels an ongoing asynchronous request. + * + * This is a synchronous call. When it returns the original asynchronous call is completed. + */ + virtual void CancelOperation(); + + +private: + + /** + * Constructor. + */ + CJavaSifPlugin(); + + /** + * 2nd phase constructor. + */ + void ConstructL(); + + /** + * Java Installer does not have AllFiles capability. + * So if the .jad/.jar file is in the private data cage of + * some other process, it must be copied + * to the private data cage of Java Installer in this + * plugin which is executed in a prorcess which hopefully has + * AllFiles capability. + * + * @param[in][out] aFileName The file to installed. The file + * will be copied to tmp directory in Java Installer data cage + * if needed. In this case aFileName is changed also. + */ + void CopyFilesIfNeededL(TFileName &aFileName); + + +private: // Data + + TRequestStatus* iStatus; + RFs iRFs; + RArray iHandlesToClose; + ResultsServer* iResultsServer; + + COpaqueNamedParams* iDummyResults; + CComponentInfo* iDummyInfo; +}; + +} // Installer +} // Java + +#endif // JAVASIFPLUGIN_H