authorisation/userpromptservice/policies/inc/policyevaluator.h
author andy simpson <andrews@symbian.org>
Fri, 08 Jan 2010 16:25:14 +0000
changeset 32 ba2bce746d00
parent 8 35751d3474b7
permissions -rw-r--r--
Added tag PDK_3.0.e for changeset c0e7917aa107

/*
* Copyright (c) 2007-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: 
* Interface definition for UPS policy evaluator ECOM plug-in.
*
*/


/**
 @file
 @publishedPartner
 @released
*/

#ifndef POLICYEVALUATOR_H
#define POLICYEVALUATOR_H

#include <e32base.h>
#include <e32cmn.h>
#include <ups/ups.hrh>
#include <ups/cliententity.h>
#include <ups/fingerprint.h>
#include <ups/policy.h>
#include <ups/policyevaluator.h>
#include <ups/promptrequest.h>


namespace UserPromptService
	{
	class CClientEntity;
	class CFingerprint;
	class CPolicy;
	class CPromptRequest;
	class CDecisionRecord;
		
	/**
	Abstract base class for a policy evaluator ECOM plug-in.
	Policy evaluators are primarily	responsible for generating the fingerprints
	used to locate previous decision records related to the current request.
	*/
	class CPolicyEvaluator : public CActive
		{
	public:
		IMPORT_C static CPolicyEvaluator* NewL(const TUid& aPolicyEvaluatormplementationId);
		
		/**
		 Asynchronously generates an ordered list the fingerprints used to locate 
		 decision records related to the request.\n
		 A fingerprint is typically a hash created from the Destination 
		 and OpaqueData values in the request structure e.g. Hash(phone number).
		 
		 - Fingerprints should be ordered most-specific to least-specific.		 
		 - Fingerprints are not required to be a hash or a fixed length.		 
		 - The policy evaluator may also specify the entity within the client process to which
		 a decision applies e.g. the id of the script or midlet.		  
		 - The policy evaluator may also generate an opaque data structure for use by the 
		 dialog creator object. 

		 @param aRequest				The parameters supplied by the system server.
		 @param aPolicy					The policy being evaluated.
		 @param aFingerprints			An ordered set of fingerprints to match against decision records.
										This is only required if the result is ECheckDatabase\n
										(OUT parameter)
		 @param aClientEntity			Optionally, identifies an entity within the client process e.g. a script.
										This is only used if the result is ECheckDatabase.\n
										Ownership is NOT transferred to the caller.\n
										(OUT parameter)
		 @param aDialogCreatorParams	Optional opaque data to pass to the dialog creator if a prompt is displayed.
										Ownership is NOT transferred to the caller.\n
										(OUT parameter)
		 @param aStatus					The request object to complete once the fingerprints have been generated.
		 */
		virtual void GenerateFingerprints(
			const CPromptRequest& aRequest, const CPolicy& aPolicy,
			RPointerArray<CFingerprint>& aFingerprints, const CClientEntity*& aClientEntity, 
			const TAny*& aDialogCreatorParams,
			TRequestStatus& aStatus) = 0;
			
		IMPORT_C virtual TBool ForcePromptL(const CDecisionRecord& aDecision, TUint& aNewEvaluatorInfo);
		IMPORT_C TInt GetExtension(TUint aExtensionId, TAny*& a0, TAny* a1);		
		IMPORT_C ~CPolicyEvaluator();
	protected:
		IMPORT_C CPolicyEvaluator();
		IMPORT_C virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1);
	private:
		TAny* iReserved;
		TUid iDtor_ID_Key;		// Required by ECOM
		};
	}

#endif // POLICYEVALUATOR_H