--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/inc/sisregistrywritablesession.h Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,214 @@
+/*
+* Copyright (c) 2004-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:
+* RSisRegistryWritableSession - restricted client registry session interface
+*
+*/
+
+
+/**
+ @file
+ @internalTechnology
+ @released
+*/
+
+#ifndef __SISREGISTRYWRITABLESESSION_H__
+#define __SISREGISTRYWRITABLESESSION_H__
+
+#include <e32std.h>
+#include "sisregistrysession.h"
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+#include <usif/usifcommon.h>
+#endif
+namespace Swi
+{
+class CApplication;
+class CSisRegistryPackage;
+
+namespace Sis
+ {
+ class CController;
+ }
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+using Usif::TComponentId;
+using Usif::TScomoState;
+
+class CSoftwareTypeRegInfo;
+#endif
+
+class RSisRegistryWritableSession : public RSisRegistrySession
+ {
+public:
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+ /**
+ * Starts a transaction with SCR for the mutable operations of this session.
+ * The APIs that this transaction covers are AddEntryL, UpdateEntryL and DeleteEntryL.
+ * Note that this transaction has no relation with the transaction ID (aTransactionID)
+ * parameter being supplied to the mutable APIs.
+ */
+ IMPORT_C void CreateTransactionL();
+
+ /**
+ * Commits the changes performed in the SCR after the call to BeginTransactionL.
+ */
+ IMPORT_C void CommitTransactionL();
+
+ /**
+ * Discards the changes performed in the SCR after the call to BeginTransactionL.
+ */
+ IMPORT_C void RollbackTransactionL();
+#endif
+
+ /**
+ * Adds a registry entry representing this package
+ *
+ * @param aApplication The application description provided by Swi
+ * @param aController The controller in a buffer
+ * @param aTransactionID The TransactionID for IntegrityServices provided
+ * by Swis of TInt64 type
+ *
+ */
+ IMPORT_C void AddEntryL(const CApplication& aApplication, const TDesC8& aController, TInt64 aTransactionID);
+
+ /**
+ * Updates the registry entry representing this package
+ *
+ * @param aApplication The application description provided by Swi
+ * @param aController The controller in a buffer
+ * @param aTransactionID The TransactionID for IntegrityServices provided
+ * by Swis of TInt64 type
+ *
+ */
+ IMPORT_C void UpdateEntryL(const CApplication& aApplication, const TDesC8& aController, TInt64 aTransactionID);
+
+ /**
+ * Deletes the entry from the registry represented by the given package
+ *
+ * @param aPackage The package to search for
+ * @param aTransactionID The TransactionID for IntegrityServices provided
+ * by Swis of TInt64 type
+ *
+ */
+ IMPORT_C void DeleteEntryL(const CSisRegistryPackage& aPackage, TInt64 aTransactionID);
+
+ /**
+ * Notification to registry that a drive has been mounted
+ *
+ * @param aDrive Drive number;
+ *
+ * @note valid value are between 0 and KMaxDrives - 1 inclusive
+ * 0 stands for A drive and KMaxDrives - 1 for Z
+ *
+ */
+ IMPORT_C void AddDriveL(const TInt aDrive);
+
+#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+ /**
+ * Notification to registry that a drive has been dismounted
+ *
+ * @param aDrive Drive as a number;
+ *
+ * @note valid value are between 0 and KMaxDrives - 1 inclusive
+ * 0 stands for A drive and KMaxDrives - 1 for Z
+ *
+ */
+ IMPORT_C void RemoveDriveL(const TInt aDrive);
+
+ /**
+ * Notification to the registry that Software Installation has been rolled
+ * back and the cache needs to be regenerated from the contents on disk.
+ */
+ IMPORT_C void RegenerateCacheL();
+#endif
+
+ /**
+ * Returns ETrue if any ROM stub in the filesystem has the package uid specified
+ * in aPackageId
+ * With the addition of SA upgrades to ROM, a package may be both in ROM, upgraded
+ * on another drive and this method can be used to check for the presence
+ * of an upgraded ROM package.
+ *
+ *
+ * @param aPackageId Package Id to be searched in the ROM stub files.
+ *
+ * @return ETrue if it can find the aPackageId in any of the ROM stub SIS.
+ * EFalse otherwise
+ */
+ IMPORT_C TBool PackageExistsInRomL(const TUid& aPackageId);
+
+
+
+ /**
+ * Gets all the eclipsable file's entries from the ROM stub file of a ROM based package.
+ *
+ * @param aUid Package UId to identify the right stub file.
+ *
+ * @param aFiles A pointer array of file names to be populated.
+ *
+ */
+ IMPORT_C void GetFilesForRomApplicationL(const TUid& aPackageId, RPointerArray<HBufC>& aFiles);
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+ /**
+ * Activates the component identified by the supplied parameter.
+ *
+ * @param aComponentId Identifies the installed component, which is to be activated.
+ *
+ */
+ IMPORT_C void ActivateComponentL(TComponentId aComponentId);
+
+ /**
+ * Deactivates the component identified by the supplied parameter.
+ *
+ * @param aComponentId Identifies the installed component, which is to be deactivated.
+ *
+ */
+ IMPORT_C void DeactivateComponentL(TComponentId aComponentId);
+
+ /**
+ * Adds a registry entry representing a package containing a Layered Execution Environment
+ *
+ * @param aApplication The application description provided by Swi
+ * @param aController The controller in a buffer
+ * @param aSwTypeRegInfoArray The array of the software types to be registered
+ * @param aTransactionID The TransactionID for IntegrityServices provided by Swis of TInt64 type
+ *
+ */
+ IMPORT_C void AddEntryL(const CApplication& aApplication, const TDesC8& aController, const RPointerArray<CSoftwareTypeRegInfo>& aSwTypeRegInfoArray, TInt64 aTransactionID);
+
+ /**
+ * Updates the registry entry representing a package containing a Layered Execution Environment.
+ * The SISRegistryServer checks if the registration info passed in aSwTypeRegInfoArray matches
+ * the data passed during the installation of the base package. If they differ the installation terinates.
+ * Hence, this upgrade package may upgarde the LEE but cannot change its registration data.
+ *
+ * @param aApplication The application description provided by Swi
+ * @param aController The controller in a buffer
+ * @param aSwTypeRegInfoArray The array of the software types to be verified against the already registered base package
+ * @param aTransactionID The TransactionID for IntegrityServices provided by Swis of TInt64 type
+ *
+ */
+ IMPORT_C void UpdateEntryL(const CApplication& aApplication, const TDesC8& aController, const RPointerArray<CSoftwareTypeRegInfo>& aSwTypeRegInfoArray, TInt64 aTransactionID);
+
+private:
+ void SetComponentStateL(TComponentId aComponentId, TScomoState aState);
+#endif
+ void AddEntryImplL(TInt aMessage, const CApplication& aApplication, const TDesC8& aController, TInt64 aTransactionID, TIpcArgs& aIpcArgs);
+ void UpdateEntryImplL(TInt aMessage, const CApplication& aApplication, const TDesC8& aController, TInt64 aTransactionID, TIpcArgs& aIpcArgs);
+ };
+
+} // namespace
+#endif