diff -r 000000000000 -r 99ef825efeca serviceapifw_plat/rtsecuritymanager_utility_api/inc/rtsecmgrpermission.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/serviceapifw_plat/rtsecuritymanager_utility_api/inc/rtsecmgrpermission.h Mon Mar 30 12:51:20 2009 +0300 @@ -0,0 +1,272 @@ +/* +* Copyright (c) 2007-2008 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: Defines permission data structure + * +*/ + + + + + + + +#ifndef _C_PERMISSION_H_ +#define _C_PERMISSION_H_ + +#include +#include +#include +#include + +typedef TUint32 TPermissionData; +const TPermissionData LOWBIT = 0x0001; + +/** + * Represents permission data structure. + * + * A permission data is modelled as 32 bit unsigned integer type + * with the following layout : + * + * - With leftmost 20 bits representing one of symbian native capability value + * - Bits 25 to 28 represent various user prompt conditions like oneshot, + * session or blanket + * - Bits 29-32 represent default condition value + * - Bits 21-24 are reserved + * + * Various accessor and modifier methods are provided to access underlying + * native capability value, the default condition and the conditions set + * for this permission data. + * + * @lib rtsecmgrutil.lib + */ +NONSHARABLE_CLASS(CPermission) : public CBase + { +public: + /** + * Default constructor + * + */ + IMPORT_C static CPermission* NewL(); + + /** + * destructor + * + */ + IMPORT_C ~CPermission(); + + /** + * Default constructor + * + */ + IMPORT_C static CPermission* NewLC(); + + + /** + * Copy constructor + * + * @param aPermission TPermission permission source from which copy is made + */ + IMPORT_C static CPermission* NewL(const CPermission& aPermission); + + /** + * Copy constructor + * + * @param aPermission TPermission permission source from which copy is made + */ + IMPORT_C static CPermission* NewLC(const CPermission& aPermission); + + /** + * Overloaded constructor taking capability + * + * @param aCapability TCapability capability to be set + */ + IMPORT_C static CPermission* NewL(const RCapabilityArray& aCapabilities); + + /** + * Overloaded constructor taking capability + * + * @param aCapability TCapability capability to be set + */ + IMPORT_C static CPermission* NewLC(const RCapabilityArray& aCapabilities); + + /** + * Overloaded constructor taking capability and default condition + * + * @param aCapability TCapability capability to be set + * @param aDefaultOption TUserPromptOption Default user prompt option to be set + */ + IMPORT_C static CPermission* NewL(const RCapabilityArray& aCapabilities, TUserPromptOption aDefOpt); + + /** + * Overloaded constructor taking capability and default condition + * + * @param aCapability TCapability capability to be set + * @param aDefaultOption TUserPromptOption Default user prompt option to be set + */ + IMPORT_C static CPermission* NewLC(const RCapabilityArray& aCapabilities, TUserPromptOption aDefOpt); + + /** + * Overloaded constructor taking capability, default condition and conditions of + * permission + * + * @param aCapability TCapability capability to be set + * @param aDefaultOption TUserPromptOption Default user prompt option to be set + * @param aCondition TUserPromptOption Conditions to be set + */ + IMPORT_C static CPermission* NewL(const RCapabilityArray& aCapabilities, TUserPromptOption aDefOpt, + TUserPromptOption aCondition); + + /** + * Overloaded constructor taking capability, default condition and conditions of + * permission + * + * @param aCapability TCapability capability to be set + * @param aDefaultOption TUserPromptOption Default user prompt option to be set + * @param aCondition TUserPromptOption Conditions to be set + */ + IMPORT_C static CPermission* NewLC(const RCapabilityArray& aCapabilities, TUserPromptOption aDefOpt, + TUserPromptOption aCondition); + + /** + * Returns default prompt option + * + * @return TUserPromptOption default condition + */ + IMPORT_C TUserPromptOption Default() const; + + /** + * Returns condition + * + * @return TUserPromptOption condition + */ + IMPORT_C TUserPromptOption Condition() const; + + /** + * Returns capability value + * + * @return TCapability capability value + */ + IMPORT_C TCapability Capability() const; + + /** + * Returns capability of the permission + * + * @param aCapabilities RCapabilityArray& contains the capabilities + */ + IMPORT_C void Capabilitilites(RCapabilityArray& aCapabilities) const; + + /** + * Sets default condition value + * + * @param aDefaultOption TUserPromptOption default condition value + */ + IMPORT_C void SetDefault(TUserPromptOption aDefaultOption); + + /** + * Sets condition value + * + * @param aCondition TUserPromptOption condition value + */ + IMPORT_C void SetCondition(TUserPromptOption aCondition); + + /** + * Sets the name of the permission + * + * @param aName const TDesC& value + */ + IMPORT_C void SetPermName(const TDesC& aName); + + /** + * Returns Name of the permission + * + * @return const TDesC& + */ + IMPORT_C const TDesC& PermName() const; + + /** + * Returns iPermissionData of the permission + * + * @return TPermission iPermissionData value + */ + IMPORT_C TPermissionData PermissionData() const; + + // --------------------------------------------------------------------------- + // Adds a capability to permission data + // --------------------------------------------------------------------------- + // + IMPORT_C void AppendCapPermData(TCapability aCap); + + // --------------------------------------------------------------------------- + // Adds an unconditional capability + // --------------------------------------------------------------------------- + // + IMPORT_C void SetPermissionData(TPermissionData aPermData); + + /** + * Internalizes permission data from stream + * + * @param aInStream RReadStream input source stream + */ + IMPORT_C void InternalizeL(RReadStream& aInStream); + + /** + * Externalizes permission data to stream + * + * @param aOutStream RWriteStream output stream + */ + IMPORT_C void ExternalizeL(RWriteStream& aOutStream) const; + +private: + /* + * Default private constructor + */ + inline CPermission() : iPermName(NULL), iPermissionData(0) + {} + + /* + * private copy constructor + */ + CPermission(const CPermission& aPermission); + + + CPermission(const RCapabilityArray& aCapabilities); + + CPermission(const RCapabilityArray& aCapabilities, TUserPromptOption aDefOpt); + + CPermission(const RCapabilityArray& aCapabilities, TUserPromptOption aDefOpt,TUserPromptOption aCondition); + +private: + //layout of TPermissionData + //__________________________________________________________________________ + //| | | | | + //| Default | Condition | RESERVED | CAPABILITY BITS | + //|_________________|______________|_______________|________________________| + // + // 32,31,30,29, 28,27,26,25, 24,23,22,21, 20,19,18,...4,3,2,1 + // + //underlying permission data structure + + + TPermissionData iPermissionData; + + + /* + * alias group name + */ + HBufC* iPermName; + + }; + +#endif //_T_PERMISSION_H_ +