drm_pub/drm_helper_api/inc/Drmhelper.h
changeset 0 95b198f216e5
child 25 50c53e893c3f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/drm_pub/drm_helper_api/inc/Drmhelper.h	Thu Dec 17 08:52:27 2009 +0200
@@ -0,0 +1,1594 @@
+/*
+* Copyright (c) 2003, 2004 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:  Class to show miscellaneous DRM related error notes and 
+*                details about rights 
+*
+*/
+
+
+
+#ifndef __DRMHELPER_H__
+#define __DRMHELPER_H__
+
+//  INCLUDES
+#include <e32base.h>
+#include <ConeResLoader.h>
+#include <apparc.h>
+#include <rdrmhelper.h>
+#include <aknserverapp.h>
+#include <caf/caf.h>
+#include <caf/content.h>
+#include <caf/data.h>
+#include <eikdialg.h>
+
+using namespace ContentAccess;
+
+// CONSTANTS
+const TInt KDRMHelperDefaultCountThreshold = 3;
+const TInt KDRMHelperDefaultTimeThreshold = 7;
+const TInt KDRMHelperDefaultPercentageThreshold = 10;
+const TInt KDRMHelperNoteMaxSize ( 256 );  
+
+// MACROS
+
+// DATA TYPES
+enum TDRMHelperPreviewMediaType
+        {
+        EPreviewTypeAudio,
+        EPreviewTypeVideo
+        };
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class DRMCommon;
+class CDRMRightsConstraints;
+class CDRMRights;
+class CStringResourceReader;
+class TDataType;
+class CCoeEnv;
+class CConsumeData;
+class CDRMPermission;
+class CDRMConstraint;
+class CAknGlobalNote;
+class CAknWaitDialog;
+class CDRMHelperInfoNoteWrapper;
+class CSchemeHandler;
+class CMediatorEventProvider;
+
+// CLASS DECLARATION
+
+/**
+*  Helper class for wrapping CDRMRightsConstraints.
+*
+*  @lib drmhelper.lib
+*  @since Series 60 2.1
+*/
+class CDRMHelperRightsConstraints : public CBase
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CDRMHelperRightsConstraints* NewL( 
+            CDRMRightsConstraints* aConstraints );
+        static CDRMHelperRightsConstraints* NewLC( 
+            CDRMRightsConstraints* aConstraints );
+        
+        /**
+        * Destructor.
+        */
+        IMPORT_C ~CDRMHelperRightsConstraints();
+
+    public: // New functions
+
+        /**
+        * checks if the object contains any restrictions 
+        * or if usage is unconstrained.        
+        * @return ETrue if usage is unconstrained
+        */
+        IMPORT_C TBool FullRights();
+
+        /**
+        * checks if the object contains only preview rights 
+        * @return ETrue if object contains only preview rights
+        */
+        IMPORT_C TBool IsPreview();
+
+        /**
+        * Gets number of counts left and number of original counts.
+        * Leaves with KErrNotFound if object doesn't have count based rights.
+        * @param aCounter: (out) counts left
+        * @param aOriginalCounter: (out) number of counts when stored to 
+        *                          rights db
+        * @return -
+        */
+        IMPORT_C void GetCountersL( TUint32& aCounter, 
+            TUint32& aOriginalCounter );
+
+        /**
+        * Gets start time of time based rights.
+        * Leaves with KErrNotFound if object doesn't have time based rights.
+        * @param aStartTime: (out) start time
+        * @return -
+        */
+        IMPORT_C void GetStartTimeL( TTime& aStartTime );
+
+        /**
+        * Gets end time of time based rights.
+        * Leaves with KErrNotFound if object doesn't have time based rights.
+        * @param aEndTime: (out) start time
+        * @return -
+        */
+        IMPORT_C void GetEndTimeL( TTime& aEndTime );
+
+        /**
+        * Gets interval time constraint.
+        * Leaves with KErrNotFound if object doesn't have interval constraint.
+        * @param aInterval: (out) interval
+        * @return -
+        */
+        IMPORT_C void GetIntervalL( TTimeIntervalSeconds& aInterval );
+
+        /**
+        * Gets start time of activated interval constraint.
+        * Leaves with KErrNotFound if interval has not been started yet.
+        * @param aStartTime: (out) start time of activated interval
+        * @return -
+        */
+
+        IMPORT_C void GetIntervalStartL( TTime& aStartTime );
+        /**
+        * Gets number of counts left, number of original counts and timer 
+        * value for timed-count constraint.
+        * Leaves with KErrNotFound if object doesn't have timed-count 
+        * constraint.
+        * @param aCounter: (out) counts left
+        * @param aOriginalCounter: Invalid, value returned same as aCounter
+        * @param aTimer: (out) timer value
+        * @return -
+        * @since Series 60 3.0
+        */
+        IMPORT_C void GetTimedCountL( TUint32& aCounter, 
+            TUint32& aOriginalCounter, TTimeIntervalSeconds& aTimer );
+
+        /**
+        * Gets accumulated time left.
+        * Leaves with KErrNotFound if object doesn't have accumulated time 
+        * constraint.
+        * @param aAccumulatedTime: (out) accumulated time left
+        * @return -
+        * @since Series 60 3.0
+        */
+        IMPORT_C void GetAccumulatedTimeL( TTimeIntervalSeconds& aAccumulatedTime );
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CDRMHelperRightsConstraints( CDRMRightsConstraints* aConstrains );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+    private:    // Data
+        // pointer to CDRMRightsConstraints object
+        CDRMRightsConstraints* iConstraints;
+    };
+
+
+/**
+*  Handles some error situations DRM-aware applications may encounter.
+*
+*  @lib drmhelper.lib
+*  @since Series 60 2.1
+*/
+class CDRMHelper : public CBase, public MAknServerAppExitObserver
+    {
+    public:     // Data
+    
+    enum TDRMHelperNotificationID
+        {
+        ETActivateTextId = 1,
+        ETCountBasedErrorTextId = 2 ,
+        ETCountUsageReduceId = 3,
+        ETCountUsageReduceMediaId = 4
+        };
+
+    enum TDRMHelperConsumeAction
+        {
+        EStart,
+        EFinish,
+        EPause, 
+        EContinue
+        };
+
+    enum TDRMHelperOMALevel
+        {
+        EOMA_None, 
+        EOMA_1_0,
+        EOMA_2_0
+        };
+        
+	enum TDRMHelperPreviewType 
+		{
+		ENoPreview, 
+		EEmbeddedPreview,
+		EPreviewRights
+		};
+
+    enum TDRMHelperAutomatedType
+        {
+        EAutomatedTypeRingingTone,
+        EAutomatedTypeMessageAlert,
+        EAutomatedTypeEmailAlert,
+        EAutomatedTypeIMAlert,
+        EAutomatedTypeCalendarAlarm,
+        EAutomatedTypeScreenSaver,
+        EAutomatedTypeWallpaper, 
+        EAutomatedTypeTheme,
+        EAutomatedTypeClockAlarm, 
+        EAutomatedTypeOther = KMaxTUint8
+        };
+
+    enum TDRMHelperDRMMethods
+        {
+        EForwardLock = 0x0001, 
+        ECombinedDelivery = 0x0002, 
+        ESeparateDelivery = 0x0004, 
+        ESuperDistribution = 0x0008
+        };
+
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        IMPORT_C static CDRMHelper* NewL( CCoeEnv& aCoeEnv );
+        IMPORT_C static CDRMHelper* NewLC( CCoeEnv& aCoeEnv );
+
+        /**
+        * Two-phased constructor.
+        * @since Series 60 2.6
+        */
+        IMPORT_C static CDRMHelper* NewL();
+        IMPORT_C static CDRMHelper* NewLC();
+        
+        /**
+        * Two-phased constructor.
+        * @since Series 60 3.0
+        */
+        IMPORT_C static CDRMHelper* NewL( CCoeEnv& aCoeEnv, RFs& aFs );
+        IMPORT_C static CDRMHelper* NewLC( CCoeEnv& aCoeEnv, RFs& aFs );
+
+        /**
+        * Two-phased constructor.
+        * @since Series 60 3.0
+        */
+        IMPORT_C static CDRMHelper* NewL( RFs& aFs );
+        IMPORT_C static CDRMHelper* NewLC( RFs& aFs );
+        
+        /**
+        * Destructor.
+        */
+        IMPORT_C ~CDRMHelper();
+
+       
+    public: 
+
+        /**
+        * Displays appropriate error note depending on error code.
+        * @param aError: error code returned by DRM engine
+        * @param aURI: URI of the file
+        * @return 
+        * - Button code, if user selected "buy rights" or "launch rights 
+        *   manager" in query.
+        * - 0 if user selected "No", "Back" or "Cancel" (or whatever which 
+        *   just dismiss the query)
+        * - 0 if just a simple error note is displayed
+        */
+        IMPORT_C TInt HandleErrorL( TInt aError, 
+            const TDesC8& aURI );
+
+
+        /**
+        * Displays:
+        * Handles error situations 'rights expired', 'no rights' and
+        * 'rights database corrupted'.
+        * @param aError: error code returned by DRM engine
+        * @param aFileName: full path to file
+        * @return 
+        * - Button code, if user selected "buy rights" or "launch rights 
+        *   manager" in query.
+        * - 0 if user selected "No", "Back" or "Cancel" (or whatever which 
+        *   just dismiss the query)
+        * - 0 if just a simple error note is displayed
+        */
+        IMPORT_C TInt HandleErrorL( TInt aError, 
+            const TDesC& aFileName );
+
+
+        /**
+        * Displays:
+        * Handles error situations 'rights expired', 'no rights' and
+        * 'rights database corrupted'.
+        * @param aError: error code returned by DRM engine
+        * @param aFileHandle: file handle to the file
+        * @return 
+        * - Button code, if user selected "buy rights" or "launch rights 
+        *   manager" in query.
+        * - 0 if user selected "No", "Back" or "Cancel" (or anything that 
+        *   just dismisses the query)
+        * - 0 if just a simple error note is displayed
+        * @since  3.0
+        */
+        IMPORT_C TInt HandleErrorL( TInt aError, 
+            RFile& aFileHandle );
+
+       /**
+        * Handles DRM-specific error situations. Should be called instead of 
+        * HandleErrorL if user should be asked to play embedded preview or get 
+        * preview/silent rights if there is no valid rights and either embedded preview or
+        * preview rights are available.
+        * @param aError: error code to be handled.
+        * @param aFile: handle of file for which error was received.
+        * @param aEmbeddedPreviewUri: contain URI of embedded preview part 
+        * upon return if caller should play the embedded preview. If embedded
+        * preview should not be played this is NULL. Must be freed by caller.
+        * @return KErrNone if the content is now usable (e.g. silent rights or preview rights were gotten). If
+        *                  the return code is KErrNone and the aEmbeddedPreviewUri parameter is not NULL,
+        *                  the player should use embedded preview
+        *         KErrCancel if the user cancelled any of the actions within the function
+        *         KErrCANoRights and KErrCANoPermission if after the function call, still no rights exist
+        *         KErrCompletion if the user did launch the browser, but it is not clear whether the content
+        *                  was activated
+        * @since S60 3.1
+        */
+        IMPORT_C TInt HandleErrorOrPreviewL( 
+            TInt aError, 
+            RFile& aFile, 
+            HBufC8*& aEmbeddedPreviewUri );
+
+       /**
+        * Handles DRM specific error situations. Should be called instead of 
+        * HandleErrorL if user should be asked to play embedded preview or get 
+        * preview/silent rights if there is no valid rights and either embedded preview or
+        * preview rights are available.
+        * @param aError: error code to be handled.
+        * @param aFileName: name of file for which error was received.
+        * @param aEmbeddedPreviewUri: contain URI of embedded preview part 
+        * upon return if caller should play the embedded preview. If embedded
+        * preview should not be played this is NULL. Must be freed by caller.
+        * @return KErrNone if the content is now usable (e.g. silent rights or preview rights were gotten). If
+        *                  the return code is KErrNone and the aEmbeddedPreviewUri parameter is not NULL,
+        *                  the player should use embedded preview
+        *         KErrCancel if the user cancelled any of the actions within the function
+        *         KErrCANoRights and KErrCANoPermission if after the function call, still no rights exist
+        *         KErrCompletion if the user did launch the browser, but it is not clear whether the content
+        *                  was activated
+        * @since S60 3.1
+        */
+        IMPORT_C TInt HandleErrorOrPreviewL( 
+            TInt aError, 
+            const TDesC& aFileName, 
+            HBufC8*& aEmbeddedPreviewUri );
+
+        /**
+        * Check rights for the content. If there is less than given amount 
+        * of usage time/count left, appropriate note is displayed
+        * depending on situation.
+        * @param  aURI: URI of the file
+        * @return Button code
+        */
+        // causes conflict with other CheckRightsAmount method, removed for now...
+//        IMPORT_C TInt CheckRightsAmountL( const TDesC8& aURI );
+
+
+        /**
+        * Check rights for the file. If there is less than given amount 
+        * of usage time/count/percentage left, appropriate note is displayed
+        * depending on situation.
+        * @param  aFileName: Full path to file
+        * @return Button code
+        */
+        // causes conflict with other CheckRightsAmount method, removed for now...
+//        IMPORT_C TInt CheckRightsAmountL( const TDesC& aFileName );
+                
+
+        /**
+        * Check rights for the file. If there is less than given amount 
+        * of usage time/count/percentage left, appropriate note is displayed
+        * depending on situation.
+        * @param  aFileHandle: file handle to the file
+        * @return Button code
+        * @since  3.0
+        */
+        // causes conflict with other CheckRightsAmount method, removed for now...
+//        IMPORT_C TInt CheckRightsAmountL( RFile& aFileHandle );
+
+
+        /**
+        * Check rights for the file. If there is less than given amount 
+        * of usage time/count left, one of the following note is displayed
+        * depending on situation:
+        * 'Usage rights about to expire. View details?'
+        * 'Usage rights about to expire. %N days left. View details?'
+        * 'Usage rights about to expire. 1 day left. View details?'
+        * 'Usage rights about to expire. %N counts left. View details?'
+        * 'Usage rights about to expire. 1 count left. View details?'
+        * It also checks that rights are valid and displays appropriate note,
+        * if they are not.
+        * @param  aFileName: Full path to file
+        * @param  aCount: Threshold value for count limit
+        * @param  aDays: Threshold value for time limit in days
+        * @return Button code
+        */
+        IMPORT_C TInt CheckRightsAmountL( const TDesC& aFileName, 
+            TInt aCount = KDRMHelperDefaultCountThreshold, 
+            TInt aDays = KDRMHelperDefaultTimeThreshold );
+
+
+        /**
+        * Check rights for the file. If there is less than given amount 
+        * of usage time/count left, one of the following note is displayed
+        * depending on situation:
+        * 'Usage rights about to expire. View details?'
+        * 'Usage rights about to expire. %N days left. View details?'
+        * 'Usage rights about to expire. 1 day left. View details?'
+        * 'Usage rights about to expire. %N counts left. View details?'
+        * 'Usage rights about to expire. 1 count left. View details?'
+        * It also checks that rights are valid and displays appropriate note,
+        * if they are not.
+        * @param  aFileHandle: file handle to the file
+        * @param  aCount: Threshold value for count limit
+        * @param  aDays: Threshold value for time limit in days
+        * @return Button code
+        * @since  3.0
+        */
+        IMPORT_C TInt CheckRightsAmountL( RFile& aFileHandle, 
+            TInt aCount = KDRMHelperDefaultCountThreshold, 
+            TInt aDays = KDRMHelperDefaultTimeThreshold );
+
+
+        /**
+        * Check rights for the file. If there is less than given amount 
+        * of usage time/count left, one of the following note is displayed
+        * depending on situation:
+        * 'Usage rights about to expire. View details?'
+        * 'Usage rights about to expire. %N days left. View details?'
+        * 'Usage rights about to expire. 1 day left. View details?'
+        * 'Usage rights about to expire. %N counts left. View details?'
+        * 'Usage rights about to expire. 1 count left. View details?'
+        * It also checks that rights are valid and displays appropriate note,
+        * if they are not.
+        * @param  aUri: Content URI
+        * @param  aCount: Threshold value for count limit
+        * @param  aDays: Threshold value for time limit in days
+        * @return Button code
+        */
+        IMPORT_C TInt CheckRightsAmountL( const TDesC8& aUri, 
+            TInt aCount = KDRMHelperDefaultCountThreshold, 
+            TInt aDays = KDRMHelperDefaultTimeThreshold );
+
+
+        /**
+        * Check rights for the file. If there is less than aThreshold percent 
+        * of usage time/count left, one of the following note is displayed
+        * depending on situation:
+        * 'Usage rights about to expire. View details?'
+        * 'Usage rights about to expire. %N days left. View details?'
+        * 'Usage rights about to expire. 1 day left. View details?'
+        * 'Usage rights about to expire. %N counts left. View details?'
+        * 'Usage rights about to expire. 1 count left. View details?'
+        * It also checks that rights are valid and displays appropriate note,
+        * if they are not.
+        * @param  aFileName: Full path to file
+        * @param  aThreshold: Threshold value in percents for displaying the note
+        * @return Button code
+        */
+        IMPORT_C TInt CheckRightsPercentL( const TDesC& aFileName, 
+            TInt aThreshold = KDRMHelperDefaultPercentageThreshold );
+
+
+        /**
+        * Check rights for the file. If there is less than aThreshold percent 
+        * of usage time/count left, one of the following note is displayed
+        * depending on situation:
+        * 'Usage rights about to expire. View details?'
+        * 'Usage rights about to expire. %N days left. View details?'
+        * 'Usage rights about to expire. 1 day left. View details?'
+        * 'Usage rights about to expire. %N counts left. View details?'
+        * 'Usage rights about to expire. 1 count left. View details?'
+        * It also checks that rights are valid and displays appropriate note,
+        * if they are not.
+        * @param  aFileHandle: file handle to the file
+        * @param  aThreshold: Threshold value in percents for displaying the note
+        * @return Button code
+        * @since  3.0
+        */
+        IMPORT_C TInt CheckRightsPercentL( RFile& aFileHandle, 
+            TInt aThreshold = KDRMHelperDefaultPercentageThreshold );
+
+
+        /**
+        * Launches DRM Rights Manager UI embedded with details view related 
+        * to given content.
+        * @param aURI: URI of the file
+        * @return -
+        */
+        IMPORT_C void LaunchDetailsViewEmbeddedL( 
+            const TDesC8& aURI );
+
+		
+        /**
+        * Launches DRM Rights Manager UI embedded with details view related 
+        * to given file.
+        * @param aFileName: Full path to file
+        * @return -
+        */
+        IMPORT_C void LaunchDetailsViewEmbeddedL( 
+            const TDesC& aFileName );
+
+
+        /**
+        * Launches DRM Rights Manager UI embedded with details view related 
+        * to given file.    
+        * @param  aFileHandle: file handle to the file
+        * @return -
+        * @since  3.0
+        */
+        IMPORT_C void LaunchDetailsViewEmbeddedL( 
+            RFile& aFileHandle );
+
+
+        /**
+        * Launches DRM Rights Manager UI embedded with details view related 
+        * to given content.
+        * @param aContentURI: URI of the content
+        * @return -
+        */
+        IMPORT_C void LaunchDetailsViewEmbeddedL( 
+            const HBufC8* aContentURI );
+
+
+        /**
+        * Gets details of rights object associated of given file.
+        *
+        * @param[in]  aFileName Full path to file
+        * @param[in]  aIntent ContentAccess::EPlay, ContentAccess::EView,
+        * ContentAccess::EPrint or ContentAccess::EExecute 
+        * @param[out] aExpired ETrue if rights are not valid. If this is ETrue
+        * and some constraints are returned, rights will become valid in future
+        * @param[out] aSendingAllowed ETrue if content can be sent
+        * @param[out] aPlay play constraints, must be deleted by caller
+        * @param[out] aDisplay display constraints, must be deleted by caller
+        * @param[out] aExecute execute constraints, must be deleted by caller
+        * @param[out] aPrint print constraints, must be deleted by caller
+        *
+        * @leave KErrArgument file is not DRM-protected.
+        * @leave KErrCANoRights no rights
+        * @see caferr.h
+        * @see caftypes.h
+        */
+        IMPORT_C void GetRightsDetailsL( const TDesC& aFileName, 
+            TUint32 aIntent, TBool& aExpired, TBool& aSendingAllowed, 
+            CDRMHelperRightsConstraints*& aPlay, 
+            CDRMHelperRightsConstraints*& aDisplay, 
+            CDRMHelperRightsConstraints*& aExecute, 
+            CDRMHelperRightsConstraints*& aPrint );
+
+
+        /**
+        * Gets details of rights object associated of given file.
+        * 
+        * @param[in]  aFileHandle file handle to the file
+        * @param[in]  aIntent ContentAccess::EPlay, ContentAccess::EView,
+        * ContentAccess::EPrint or ContentAccess::EExecute 
+        * @param[out] aExpired ETrue if rights are not valid. If this is ETrue
+        * and some constraints are returned, rights will become valid in future
+        * @param[out] aSendingAllowed ETrue if content can be sent
+        * @param[out] aPlay play constraints, must be deleted by caller
+        * @param[out] aDisplay display constraints, must be deleted by caller
+        * @param[out] aExecute execute constraints, must be deleted by caller
+        * @param[out] aPrint print constraints, must be deleted by caller
+        *
+        * @leave KErrArgument file is not DRM-protected.
+        * @leave KErrCANoRights no rights
+        * @see caferr.h
+        * @see caftypes.h
+        *
+        * @since  3.0
+        */
+        IMPORT_C void GetRightsDetailsL( RFile& aFileHandle,  
+            TUint32 aIntent, TBool& aExpired, TBool& aSendingAllowed, 
+            CDRMHelperRightsConstraints*& aPlay, 
+            CDRMHelperRightsConstraints*& aDisplay, 
+            CDRMHelperRightsConstraints*& aExecute, 
+            CDRMHelperRightsConstraints*& aPrint );
+
+
+        /**
+        * Gets details of rights object associated of given file.
+        *
+        * @param[in]  aFileName Full path to file
+        * @param[in]  aIntent ContentAccess::EPlay, ContentAccess::EView,
+        * ContentAccess::EPrint or ContentAccess::EExecute 
+        * @param[out] aExpired ETrue if rights are not valid. If this is ETrue
+        * and some constraints are returned, rights will become valid in future
+        * @param[out] aSendingAllowed ETrue if content can be sent
+        * @param[out] aPlay play constraints, must be deleted by caller
+        * @param[out] aDisplay display constraints, must be deleted by caller
+        * @param[out] aExecute execute constraints, must be deleted by caller
+        * @param[out] aPrint print constraints, must be deleted by caller
+        *
+        * @leave KErrArgument file is not DRM-protected.
+        * @leave KErrCANoRights no rights
+        * @see caferr.h
+        * @see caftypes.h
+        */
+        IMPORT_C void GetRightsDetailsL( const TDesC& aFileName, 
+            TUint32 aIntent, TBool& aExpired, TBool& aSendingAllowed, 
+            CDRMRightsConstraints*& aPlay, 
+            CDRMRightsConstraints*& aDisplay, 
+            CDRMRightsConstraints*& aExecute, 
+            CDRMRightsConstraints*& aPrint ); 
+
+
+        /**
+        * Gets details of rights object associated of given file.
+        * 
+        * @param[in]  aFileHandle file handle to the file
+        * @param[in]  aIntent ContentAccess::EPlay, ContentAccess::EView,
+        * ContentAccess::EPrint or ContentAccess::EExecute 
+        * @param[out] aExpired ETrue if rights are not valid. If this is ETrue
+        * and some constraints are returned, rights will become valid in future
+        * @param[out] aSendingAllowed ETrue if content can be sent
+        * @param[out] aPlay play constraints, must be deleted by caller
+        * @param[out] aDisplay display constraints, must be deleted by caller
+        * @param[out] aExecute execute constraints, must be deleted by caller
+        * @param[out] aPrint print constraints, must be deleted by caller
+        *
+        * @leave KErrArgument file is not DRM-protected.
+        * @leave KErrCANoRights no rights
+        * @see caferr.h
+        * @see caftypes.h
+        *
+        * @since  3.0
+        */
+        IMPORT_C void GetRightsDetailsL( RFile& aFileHandle,  
+            TUint32 aIntent, TBool& aExpired, TBool& aSendingAllowed, 
+            CDRMRightsConstraints*& aPlay, 
+            CDRMRightsConstraints*& aDisplay, 
+            CDRMRightsConstraints*& aExecute, 
+            CDRMRightsConstraints*& aPrint ); 
+
+
+        /**
+        * Registers given content to be used as an automated content. This
+        * function is used when registering application listens expiry 
+        * notifications itself
+        * @param  aURI: content URI
+        * @return System wide error code (KErrCancel if user pressed no to 
+        * query).
+        * @since Series 60 2.6
+        */
+        IMPORT_C TInt SetAutomated( const TDesC8& aURI );
+
+
+        /**
+        * Registers given content to be used as an automated content. This
+        * function is used when registering application listens expiry 
+        * notifications itself.
+        * @param  aFileName: Full path to file
+        * @return System wide error code (KErrCancel if user pressed no to 
+        * query).
+        * @since Series 60 2.6
+        */
+        IMPORT_C TInt SetAutomated( const TDesC& aFilename );
+
+
+        /**
+        * Registers given content to be used as an automated content. This
+        * function is used when registering application listens expiry 
+        * @param  aFileHandle: file handle to the file
+        * @return System wide error code (KErrCancel if user pressed no to 
+        * query).
+        * @since  3.0
+        */
+        IMPORT_C TInt SetAutomated( RFile& aFileHandle );
+
+
+        /**
+        * Displays the confirmation query about setting given content as an
+        * automated content. Note that this function does not actually
+        * register content, just displays the note
+        * @param  aURI: content URI
+        * @return System wide error code (KErrCancel if user pressed no to 
+        * query).
+        * @since Series 60 2.6
+        */
+        IMPORT_C TInt ShowAutomatedNote( const TDesC8& aURI );
+
+
+        /**
+        * Displays the confirmation query about setting given content as an
+        * automated content. Note that this function does not actually
+        * register content, just displays the note
+        * @param  aFileName: Full path to file
+        * @return System wide error code (KErrCancel if user pressed no to 
+        * query).
+        * @since Series 60 2.6
+        */
+        IMPORT_C TInt ShowAutomatedNote( const TDesC& aFilename );
+
+
+        /**
+        * Displays the confirmation query about setting given content as an
+        * automated content. Note that this function does not actually
+        * register content, just displays the note
+        * @param  aFileHandle: file handle to the file
+        * @return System wide error code (KErrCancel if user pressed no to 
+        * query).
+        * @since  3.0
+        */
+        IMPORT_C TInt ShowAutomatedNote( RFile& aFileHandle );
+
+
+        /**
+        * Registers given content to be used as an automated content. This
+        * function is used when phone application listens to expiry notifications.
+        * @param  aURI: content URI
+        * @return System wide error code (KErrCancel if user pressed no to 
+        * query).
+        * @since Series 60 2.6
+        */
+        IMPORT_C TInt SetAutomatedPassive( const TDesC8& aURI );
+
+
+        /**
+        * Registers given content to be used as an automated content. This
+        * function is used when phone application listens to expiry notifications.
+        * @param  aFileName: Full path to file
+        * @return System wide error code (KErrCancel if user pressed no to 
+        * query).
+        * @since Series 60 2.6
+        */
+        IMPORT_C TInt SetAutomatedPassive( const TDesC& aFilename );
+
+
+        /**
+        * Registers given content to be used as an automated content. This
+        * function is used when phone application listens to expiry notifications.
+        * @param  aFileHandle: file handle to the file
+        * @return System wide error code (KErrCancel if user pressed no to 
+        * query).
+        * @since  3.0
+        */
+        IMPORT_C TInt SetAutomatedPassive( RFile& aFileHandle );
+
+
+        /**
+        * Registers given content to be used as an automated content without
+        * confirmation query.
+        * @param aURI: content URI
+        * @param aActive: ETrue if registering application itself listens
+        *                 expiry notifications
+        * @return System wide error code (KErrCancel if user pressed no to 
+        * query).
+        * @since Series 60 2.6
+        */
+        IMPORT_C TInt SetAutomatedSilent( const TDesC8& aURI, TBool aActive );
+
+
+        /**
+        * Registers given content to be used as an automated content without
+        * confirmation query.
+        * @param  aFileName: Full path to file
+        * @param  aActive: ETrue if registering application itself listens
+        *                  expiry notifications
+        * @return System wide error code (KErrCancel if user pressed no to 
+        * query).
+        * @since Series 60 2.6
+        */
+        IMPORT_C TInt SetAutomatedSilent( const TDesC& aFilename, 
+            TBool aActive );
+
+
+        /**
+        * Registers given content to be used as an automated content without
+        * confirmation query.
+        * @param  aFileHandle: file handle to the file
+        * @param  aActive: ETrue if registering application itself listens
+        *                  expiry notifications
+        * @return System wide error code (KErrCancel if user pressed no to 
+        * query).
+        * @since  3.0
+        */
+        IMPORT_C TInt SetAutomatedSilent( RFile& aFileHandle,  
+            TBool aActive );
+
+
+        /**
+        * Unregisters given content to be used as an automated content.
+        * @param aURI: content URI
+        * @return System wide error code.
+        * @since Series 60 2.6
+        */
+        IMPORT_C TInt RemoveAutomated( const TDesC8& aURI );
+
+
+        /**
+        * Unregisters given content to be used as an automated content.
+        * @param  aFileName: Full path to file
+        * @return System wide error code.
+        * @since Series 60 2.6
+        */
+        IMPORT_C TInt RemoveAutomated( const TDesC& aFilename );
+
+
+        /**
+        * Unregisters given content to be used as an automated content.
+        * @param  aFileHandle: file handle to the file
+        * @return System wide error code.
+        * @since  3.0
+        */
+        IMPORT_C TInt RemoveAutomated( RFile& aFileHandle );
+
+
+        /**
+        * Unregisters given content to be used as an automated content.
+        * This function must be used when content was registered using 
+        * SetAutomatedPassive.
+        * @param  aURI: content URI
+        * @return System wide error code.
+        * @since Series 60 2.6
+        */
+        IMPORT_C TInt RemoveAutomatedPassive( const TDesC8& aURI );
+
+
+        /**
+        * Unregisters given content to be used as an automated content.
+        * This function must be used when content was registered using 
+        * SetAutomatedPassive.
+        * @param  aFileName: Full path to file
+        * @return System wide error code.
+        * @since Series 60 2.6
+        */
+        IMPORT_C TInt RemoveAutomatedPassive( const TDesC& aFilename );
+
+
+        /**
+        * Unregisters given content to be used as an automated content.
+        * This function must be used when content was registered using 
+        * SetAutomatedPassive.
+        * @param  aFileHandle: file handle to the file
+        * @return System wide error code.
+        * @since  3.0
+        */
+        IMPORT_C TInt RemoveAutomatedPassive( RFile& aFileHandle );
+
+
+        /**
+        * Checks if given content can be set as an automated content.
+        * @param  aURI: content URI
+        * @param  aValue: ETrue if content can be set as automated.
+        * @return System wide or DRM specific error code.
+        * @since Series 60 2.6
+        */
+        IMPORT_C TInt CanSetAutomated( const TDesC8& aURI, 
+            TBool& aValue );
+
+
+        /**
+        * Checks if given content can be set as an automated content.
+        * @param  aFileName: Full path to file
+        * @param  aValue: ETrue if content can be set as automated.
+        * @return System wide or DRM specific error code.
+        * @since Series 60 2.6
+        */
+        IMPORT_C TInt CanSetAutomated( const TDesC& aFilename, 
+            TBool& aValue );
+
+
+        /**
+        * Checks if given content can be set as an automated content.
+        * @param  aFileHandle: file handle to the file
+        * @param  aValue: ETrue if content can be set as automated.
+        * @return System wide or DRM specific error code.
+        * @since  3.0
+        */
+        IMPORT_C TInt CanSetAutomated( RFile& aFileHandle, 
+            TBool& aValue );
+
+
+        /**
+        * Informs DRMHelper that idle-screen has been activated.
+        * @return -
+        * @since Series 60 2.6
+        */
+        IMPORT_C void IndicateIdle();
+
+        /**
+        * Handle the general UI based error notes 
+        * @since  3.0
+        * @param aTextId The code for DRM general notification note.
+        * @param aURI The DRM files URI, that caused the DRM error.
+        * @return KErrnone if everything went ok, else wide scale of Symbian errors
+        */
+        IMPORT_C TInt ShowDRMUINotification2L( TDRMHelperNotificationID aTextId,
+            const TDesC8& aURI );
+
+
+        /**
+        * Handle the general UI based error notes 
+        * @since  3.0
+        * @param aTextId The code for DRM general notification note.
+        * @param aFileName The DRM file's name and path, that caused the DRM error.
+        * @return KErrnone if everything went ok, else wide scale of Symbian errors
+        */
+        IMPORT_C TInt ShowDRMUINotification2L( TDRMHelperNotificationID aTextId,
+            const TDesC& aFileName );
+
+
+        /**
+        * Set count limit for CheckRightsAmountL
+        * @param aCounts: new count limit for displaying the note.
+        * @return -
+        */
+        IMPORT_C void SetCountLimitL( TUint aCounts );
+
+        
+        /**
+        * Set time limit in days for CheckRightsAmountL
+        * @param aDays: new time limit for displaying the note.
+        * @return -
+        */
+        IMPORT_C void SetTimeLimitL( TUint aDays );
+
+
+        /**
+        * Set percentage limit for CheckRightsAmountL. Applies to both counts and time.
+        * @param aPercentage: new limit for displaying the note.
+        * @return -
+        */
+        IMPORT_C void SetPercentageLimitL( TUint aPercentage );
+
+
+        /**
+        * GetContentURIList
+        *
+        * Returns a list of all content URIs that have rights in the rights 
+        * database.
+        *
+        * @since  2.5
+        * @param  aURIList: Out parameter for the URI list.
+        * @return Ok if the URI list could be retreived.
+        */
+        IMPORT_C TInt GetContentURIList(
+            RPointerArray<HBufC8>*& aURIList);
+
+    
+        /**
+        * DataTypesCount
+        *
+        * Returns the number of previously registered datatypes which are
+        * supported by the DRM system and associated applications.
+        *
+        * @since  2.0
+        * @param  aCount: Out parameter for the datatype count
+        * @return EOk if the number of datatypes has been returned correctly
+        */
+        IMPORT_C TInt DataTypesCount(
+            TInt& aCount);
+
+    
+        /**
+        * SupportedDataType
+        *
+        * Returns a specific datatype which has been registered before by giving an index
+        *
+        * @since  2.0
+        * @param  aIndex: Number of the datatype to return
+        * @param  aDataType: Out parameter for the datatype
+        * @return EOk if the datatype was returned correctly
+        */
+        IMPORT_C TInt SupportedDataType(
+            const TInt aIndex, TDataType& aDataType);
+
+    
+        /**
+        * RegisterDataType
+        *
+        * Registers a datatype as a supported datatype.
+        *
+        * @since  2.0
+        * @param  aDataType: Datatype to register
+        * @return EOk if the datatype has been registered
+        */
+        IMPORT_C TInt RegisterDataType(
+            const TDataType& aDataType);
+
+    
+        /**
+        * UnRegisterDataType
+        *
+        * Unregisters a datatype via its index.
+        *
+        * @since  2.5
+        * @param  aIndex: Number of the datatype to unregister
+        * @return EOk if the datatype has been unregistered
+        */
+        IMPORT_C TInt UnRegisterDataType(
+            const TInt aIndex);
+
+
+        /**
+        * SupportedDRMMethods
+        *
+        * Returns the supported DRM protection methods and the OMA compliance
+        * level of the DRM engine
+        *
+        * @since  2.0
+        * @param  aDRMMethod: Out parameter, bit mask containing any 
+        *         combination of EForwardLock, ECombinedDelivery, 
+        *         ESeparateDelivery etc.
+        * @param  aOMALevel: OMA compliance of the DRM engine
+        * @return DRMCommon error code
+        */
+    
+        IMPORT_C TInt SupportedDRMMethods2(
+            TInt& aDRMMethod, TDRMHelperOMALevel& aOMALevel);
+
+    
+        /**
+        * Consume2
+        *
+        * Overrides any rights consumption. This function must only be used by
+        * applications with user interaction and not by intermediate components.
+        * The main use cases are signalling that content is to be installed
+        * (including thumbnail generation), or that content is to be consumed.
+        * They are characterized as calls to this function with the correct
+        * intent (i.e. EPlay or EInstall) and the corresponding action (i.e.
+        * telling whether the indicated intent is started or finished).
+        * Calls to this function must be the result of a user interaction or
+        * otherwise high level event.
+        *
+        * @since  3.0
+        * @param  aContentURI: URI of the content which will be consumed
+        * @param  aRightsSpec: the consumption intent (EPlay, EDisplay, EPrint,
+        *         EExecute or EInstall)
+        * @param  anAction: the consumption action, telling whether the
+        *         content consumption starts or finishes.
+        * @return EOk if consume action was successfully signalled to the engine.
+        */
+        IMPORT_C TInt Consume2(
+		    const TDesC8& aContentURI,
+		    TUint32 aRightsSpec,
+		    TDRMHelperConsumeAction anAction);
+
+
+        /**
+        * ConsumeFile2
+        *
+        * Overrides any rights consumption. This function must only be used by
+        * applications with user interaction and not by intermediate components.
+        * The main use cases are signalling that content is to be installed
+        * (including thumbnail generation), or that content is to be consumed.
+        * They are characterized as calls to this function with the correct
+        * intent (i.e. EPlay or EInstall) and the corresponding action (i.e.
+        * telling whether the indicated intent is started or finished).
+        * Calls to this function must be the result of a user interaction or
+        * otherwise high level event.
+        *
+        * @since  3.0
+        * @param  
+        * @param  aRightsSpec: the consumption intent (EPlay, EDisplay, EPrint,
+        *         EExecute or EInstall)
+        * @param  anAction: the consumption action, telling whether the
+        *         content consumption starts or finishes.
+        * @return EOk if consume action was successfully signalled to the engine.
+        */
+        IMPORT_C TInt ConsumeFile2(
+		    const TDesC& aFileName,
+		    TUint32 aRightsSpec,
+		    TDRMHelperConsumeAction anAction);
+
+
+        /**
+        * ConsumeFile2
+        *
+        * Overrides any rights consumption. This function must only be used by
+        * applications with user interaction and not by intermediate components.
+        * The main use cases are signalling that content is to be installed
+        * (including thumbnail generation), or that content is to be consumed.
+        * They are characterized as calls to this function with the correct
+        * intent (i.e. EPlay or EInstall) and the corresponding action (i.e.
+        * telling whether the indicated intent is started or finished).
+        * Calls to this function must be the result of a user interaction or
+        * otherwise high level event.
+        *
+        * @since  3.0
+        * @param  aFileHandle: file handle to the file
+        * @param  aRightsSpec: the consumption intent (EPlay, EDisplay, EPrint,
+        *         EExecute or EInstall)
+        * @param  anAction: the consumption action, telling whether the
+        *         content consumption starts or finishes.
+        * @return EOk if consume action was successfully signalled to the engine.
+        */
+        IMPORT_C TInt ConsumeFile2(
+		    RFile& aFileHandle, 
+		    TUint32 aRightsSpec,
+		    TDRMHelperConsumeAction anAction);
+
+		/**
+        * Acquires rights for given content if rights have been expired or rights are missing.
+		* If content already has valid or future rights, does nothing.
+		* This function should be called when user selects activate from options menu.
+		* Leaves with system-wide error code in case of error.
+        * @param aContent: Content object
+        */
+		IMPORT_C void ActivateContentL(CData& aContent);
+
+		/**
+        * Acquires rights for given content if rights have been expired or rights are missing.
+		* If content already has valid or future rights, does nothing.
+		* This function should be called when user selects activate from options menu.
+		* Leaves with system-wide error code in case of error.
+        * @param aFileName: Full path to file
+        */
+		IMPORT_C void ActivateContentL(TDesC& aFileName);
+
+		/**
+        * Checks if given content has embedded preview or if it is possible to get preview rights for it.
+		* Leaves with system-wide error code in case of error.
+        * @param aContent: Content object
+		* @param aPreviewUri: Out: URI of the embedded preview or PreviewRights URL. Must be freed by caller
+		* @return preview type
+        */
+		IMPORT_C TDRMHelperPreviewType HasPreviewL(CData& aContent, HBufC8*& aPreviewUri);
+
+		/**
+        * Checks if given content has embedded preview or if it is possible to get preview rights for it.
+		* Leaves with system-wide error code in case of error.
+        * @param aFileName: Full path to file.
+		* @param aPreviewUri: Out: URI of the embedded preview or PreviewRights URL. Must be freed by caller
+		* @return preview type
+        */
+		IMPORT_C TDRMHelperPreviewType HasPreviewL(TDesC& aFileName, HBufC8*& aPreviewUri);
+
+		/**
+        * Acquires preview rights for given content.
+		* Leaves with system-wide error code in case of error.
+        * @param aContent: Content object
+        */
+		IMPORT_C void GetPreviewRightsL(CData& aContent);
+
+		/**
+        * Acquires preview rights for given content.
+		* Leaves with system-wide error code in case of error.
+        * @param aFileName: Full path to file.
+        */
+		IMPORT_C void GetPreviewRightsL(TDesC& aFileName);
+
+		/**
+        * This method should be called after embedded preview has been played.
+		* It asks from user if he/she wants to buy rights and acquires those if user agrees.
+		* Leaves with system-wide error code in case of error.
+        * @param aContent: Content object.
+		* @return ETrue if user selects to buy rights.
+        */
+		IMPORT_C TBool EmbeddedPreviewCompletedL(CData& aContent);
+
+		/**
+        * This method should be called after embedded preview has been played.
+		* It asks from user if he/she wants to buy rights and acquires those if user agrees.
+		* Leaves with system-wide error code in case of error.
+        * @param aFileName: Full path to file.
+		* @return ETrue if user selects to buy rights.
+        */
+		IMPORT_C TBool EmbeddedPreviewCompletedL(TDesC& aFileName);
+
+		/**
+        * Checks if given content has InfoUrl.
+		* Leaves with system-wide error code in case of error.
+        * @param aContent: Content object.
+		* @param aInfoUrl: Out: InfoUrl. Must be freed by caller.
+		* @return ETrue if content has InfoUrl.
+        */
+		IMPORT_C TBool HasInfoUrlL(CData& aContent, HBufC8*& aInfoUrl);
+
+		/**
+        * Checks if given content has InfoUrl.
+		* Leaves with system-wide error code in case of error.
+        * @param aFileName: Full path to file.
+		* @param aInfoUrl: Out: InfoUrl. Must be freed by caller.
+		* @return ETrue if content has InfoUrl.
+        */
+		IMPORT_C TBool HasInfoUrlL(TDesC& aFileName, HBufC8*& aInfoUrl);
+
+		/**
+        * Opens browser with InfoUrl of the content.
+		* Leaves with system-wide error code in case of error.
+        * @param aContent: Content object.
+        */
+		IMPORT_C void OpenInfoUrlL(CData& aContent);
+
+		/**
+        * Opens browser with InfoUrl of the content.
+		* Leaves with system-wide error code in case of error.
+        * @param aFileName: Full path to file.
+        */
+		IMPORT_C void OpenInfoUrlL(TDesC& aFileName);
+
+        /**
+        * Sets the type of automated content to be registered. This method 
+        * should be called before calling any of SetAutomated* methods.
+        * @param  aAutomatedType: type of automated content
+        * @return System wide error code
+        * @since Series 60 3.0
+        */
+        IMPORT_C TInt SetAutomatedType( TDRMHelperAutomatedType aAutomatedType );
+        
+        /**
+        * Sets media type of content for preview. Should be called prior to 
+        * calling HandleErrorOrPreviewL or EmbeddedPreviewCompletedL. 
+        * @param aMediaType: media type of content.
+        * @return System wide error code
+        * @since S60 3.1u
+        */
+        IMPORT_C TInt SetPreviewMediaType( 
+            TDRMHelperPreviewMediaType aMediaType );
+
+    protected:  // New functions
+        
+        /**
+        * ?member_description.
+        * @since ?Series60_version
+        * @param ?arg1 ?description
+        * @return ?description
+        */
+        //?type ?member_function( ?type ?arg1 );
+
+    protected:  // Functions from base classes
+        
+        /**
+        * From ?base_class ?member_description
+        */
+        //?type ?member_function();
+
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CDRMHelper( CCoeEnv& aCoeEnv );
+        CDRMHelper();
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL( RFs* aFs );
+
+        // Prohibit copy constructor if not deriving from CBase.
+        // ?classname( const ?classname& );
+        // Prohibit assigment operator if not deriving from CBase.
+        // ?classname& operator=( const ?classname& );
+
+        /**
+        * Display query dialog
+        */
+        TInt DisplayQueryWithIdL( TInt aTextResourceId, TInt aQueryResourceId );
+        TInt DisplayQueryWithIdValueL( TInt aTextResourceId, TInt aQueryResourceId, 
+                                       const TDesC& aString );
+        TInt DisplayQueryL( TInt aTextResourceId, TInt aValue );
+        TInt DisplayQueryL( TInt aTextResourceId, const TDesC& aString );
+        TInt DisplayQueryL( 
+        	TInt aTextResourceId, 
+        	const TDesC& aString, 
+            TInt aValue,
+        	TInt aStringPos = -1,
+        	TInt aValuePos = -1 );
+        TInt DisplayQueryL( TDesC& aPromptText, TInt aQueryResourceId );
+
+        /**
+        * Display information note
+        */
+        void DisplayInfoNoteL( TInt aTextResourceId );
+        void DisplayInfoNoteL( TInt aTextResourceId, const TDesC& aString );
+        void DisplayInfoNoteL( TInt aTextResourceId, TInt aValue );
+        void DisplayInfoNoteL( TDesC& aPromptText, TInt aResourceId, 
+                               const TDesC& aString = KNullDesC, TInt aValue = -1 );
+
+        /**
+        * Launch browser embedded
+        */
+        void LaunchBrowserL( HBufC8* aUrl );
+        void LaunchBrowserL( HBufC* aUrl );
+
+        /**
+        * Get rights-issuer URI from DCF file
+        */
+        void GetRightsIssuerL( const CData& aContent, HBufC*& aIssuer );
+
+        /**
+        * Get time and count based constraints
+        */
+        TInt GetCounts( CDRMRightsConstraints* aConstraint, 
+            TUint32& aOriginalCount, TTimeIntervalDays& aDuration );
+
+        TInt GetCounts( CDRMRightsConstraints* aConstraint,
+            TUint32& aCountLeft, TTime& aEndTime );
+            
+        TInt GetCounts( CDRMConstraint* aConstraint, 
+            TUint32& aOriginalCount, TTimeIntervalDays& aDuration );
+
+        TInt GetCounts( CDRMConstraint* aConstraint,
+            TUint32& aCountLeft, TTime& aEndTime );
+
+        /**
+        * Launch rights manager UI
+        */
+        void LaunchRightsManagerUiL( const TDesC& aParam16 );
+
+        /**
+        * Form string needed to launch rights manager UI embedded.
+        */
+        void CreateLaunchParamL( TUint32 aLocalId, const HBufC8* aUrl, 
+            HBufC*& aLaunchParam );
+
+        /**
+        * Strip path and extension from given filename.
+        * Caller is responsible for freeing returned buffer
+        */
+        TPtrC StripPathAndExtension( const TDesC& aFileName );
+
+        /**
+        * Get expiration details of file.
+        * Returns DRMCommon::ENoRights if no rights object found or
+        * CDRMRights::TExpiration value
+        */
+        TInt GetExpirationDetails( HBufC8* aContentUri, TInt aIntent, 
+                                   CDRMRights*& aRightsObject );
+
+        /**
+        * Get expiration time of given rights object
+        */
+        TInt CalculateEndTime( CDRMRights* aRights, TInt aIntent, 
+            TTime& aEndTime, TBool& aInactive );
+
+        /**
+        * Get end time of given constraint
+        */
+        TInt GetEndTime( CDRMRightsConstraints* aConstraint, 
+            TTime& aEndTime, TBool& aInactive );
+        
+        /**
+        * Register content as automated
+        */
+        TInt PerformSetAutomatedL( const CData& aContent, TBool aActive );
+        TInt DoSetAutomatedL( const TDesC8& aURI, TBool aActive, 
+            const HBufC* aMimeType );
+
+        /**
+        * Display confirmation query about setting as automated. Does not 
+        * actually register.
+        */
+        TInt PerformShowAutomatedNoteL( const CData& aContent );
+        TInt DoShowAutomatedNoteL( const TDesC8& aURI, 
+            const HBufC* aMimeType );
+
+        /**
+        * Register content as automated without showing any queries
+        */
+        TInt PerformSetAutomatedSilentL( const CData& aContent, TBool aActive );
+        TInt DoSetAutomatedSilent( const TDesC8& aURI, TBool aActive, TInt aIntent );
+
+        /**
+        * Returns default intent for the mimetype
+        */
+        TInt Intent( const HBufC* aMimeType );
+        
+        /**
+        * Checks if content can be used as automated content
+        */
+        TInt PerformCanSetAutomatedL( const CData& aContent,TBool& aValue );
+        TInt DoCanSetAutomated( const TDesC8& aURI, const HBufC* aMimeType, 
+            TBool& aValue );
+        TBool DoCheckSkinCanSetAutomated(CDRMRights* aRights);
+            
+        /**
+        * Gets mimetype based on content URI
+        */
+        HBufC* MimeTypeFromURIL( const TDesC8& aURI );
+        
+        /**
+        * Gets corresponding filename (including full path) based on content 
+        * URI
+        */
+        TInt GetFileHandleFromURIL( const TDesC8& aURI, RFile& aFileHandle );
+
+        /**
+        * Get start time of given rights object
+        */
+        TInt GetStartTime( CDRMRights* aRights, TInt aIntent, 
+            TTime& aStartTime );
+
+        /**
+        * Displays info note of rights that are not yet valid 
+        */
+        TInt ShowFutureNoteL( const HBufC* aMimeType, CDRMRights* aRightsObject );
+
+        /**
+        * Handles error by displaying appropriate note to user.
+        */
+        TInt DoHandleErrorL( TInt aError, HBufC8* aContentUri, HBufC* aMimeType, 
+            HBufC* aRIUrl, HBufC* aDomainRoUrl, HBufC* aEta, HBufC8* aRiId8,
+            HBufC8* aDomainId8, const TDesC& aFileName );
+            
+        /**
+        * Checks if rights are about to expire.
+        */
+        TInt DoCheckRightsPercentL( HBufC8* aContentUri, HBufC* aMimeType, 
+            HBufC* aRIUrl, const TDesC& aFileName, TInt aThreshold );
+
+        TInt DoCheckRightsAmountL( HBufC8* aContentUri, HBufC* aMimeType, 
+            HBufC* aRIUrl, const TDesC& aFileName, TInt aCount, TInt aDays );
+            
+        /**
+        * Gets rights details.
+        */
+        void DoGetRightsDetailsL( HBufC8* aContentUri, TUint32 aIntent,
+            TBool& aExpired, CDRMHelperRightsConstraints*& aPlay,
+            CDRMHelperRightsConstraints*& aDisplay, 
+            CDRMHelperRightsConstraints*& aExecute,
+            CDRMHelperRightsConstraints*& aPrint );
+
+        void DoGetRightsDetailsL( CData* aContent, TUint32 aIntent,
+            TBool& aExpired, TBool& aSendingAllowed, CDRMRightsConstraints*& aPlay,
+            CDRMRightsConstraints*& aDisplay, 
+            CDRMRightsConstraints*& aExecute,
+            CDRMRightsConstraints*& aPrint );
+		
+        /**
+        * Get constraints for given rights
+        */
+        void GetConstraintsL( 
+            CDRMRights& aRights, 
+            CDRMHelperRightsConstraints*& aPlay,
+            CDRMHelperRightsConstraints*& aDisplay,
+            CDRMHelperRightsConstraints*& aExecute,
+            CDRMHelperRightsConstraints*& aPrint );
+
+		/**
+		* Unregisters automated content.
+		*/
+		TInt PerformRemoveAutomatedL( const CData& aContent, TBool aActive );
+		
+		void HandleServerAppExit(TInt aReason);
+
+        void CheckPreviewUriL( 
+            const CData* aContent, 
+            HBufC*& aEmbeddedPreviewUri, 
+            TInt& aPreviewType );
+        
+        TInt DisplayPopupWindowsForPreviewL(TInt aPreviewType);
+
+        /**
+		* Returns correct resource id for automated content notes.
+		* If aExpired is ETrue, aSecondParameter indicates if RI URL exists
+		* If aExpired is EFalse, aSecondParameter indicates if there is one day left
+        * aRejectReason tells the constraints which are invalid.
+		*/
+		TInt AutomatedResIdL( TBool aExpired, TBool aSecondParameter, TUint32 aRejectReason );
+
+        /** 
+        * Returns the correct resource id for expired and no rights notes
+        */		    
+        TInt ErrorResIdL( const TDesC8& aContentUri, TInt aIntent, 
+            TBool aRightsIssuer, TBool aExpired );
+
+        /** 
+        * Returns the constraints which are invalid
+        */		    
+        TUint32 RejectReasonL( TInt aIntent, const TDesC8& aContentUri );
+        
+        /** 
+        * Prepares secondary display for DRM notes
+        */
+        void PrepareSecondaryDisplayL( CEikDialog& aDialog, TInt aResourceId,
+                                       const TDesC& aString = KNullDesC, TInt aValue = -1 ); 
+
+        /** 
+        * Cancels secondary display for DRM notes
+        */
+        void CancelSecondaryDisplayL( TInt aResourceId );
+                
+        /** 
+        * Check whether a file as a silent rights URL which can be used, i.e the URL is valid
+        * and on the white list.
+        */
+        HBufC8* HasSilentRightsUrlL( CData* aContent );
+        
+        /** 
+        * Get rights silently
+        */
+        TInt GetSilentRightsL( const TDesC8& aUrl );
+
+        /** 
+        * Check if the user has allowed silent rights
+        */
+        TBool SilentRightsAllowedL();
+
+        /** 
+        * Check if browser AP has been defined
+        */
+        TBool BrowserAPDefinedL();
+
+    protected:  // Data
+        // ?one_line_short_description_of_data
+        //?data_declaration;
+
+    private:    // Data
+        CCoeEnv*                iCoeEnv;
+
+        // DRM engine
+        DRMCommon*              iDRMCommon;
+
+        // used to make launching rights manager ui synchronous
+        CActiveSchedulerWait    iWait;
+   
+        RDRMHelper              iHelperServer;
+        
+        // is CoeEnv used
+        TBool                   iUseCoeEnv;
+
+        // Used to read resources when CoeEnv is not available
+        CStringResourceReader*  iStringResourceReader;
+        
+        TBool                   iOma2;
+        	
+        RPointerArray<CConsumeData> iConsumeList;
+        
+        TInt                    iAutomatedType;
+   
+        RFs                     iFs;
+        
+        TBool                   iFsOwned;
+        
+        TInt                    iPreviewMediaType;
+        
+        // Used to queue up global notes
+        RPointerArray<CDRMHelperInfoNoteWrapper>      iNoteList;
+        
+        CSchemeHandler*         iSchemeHandler;
+
+        TBool                   iReturnCancel;
+
+        // Used to send cancel events to cover ui
+        CMediatorEventProvider* iEventProvider;
+
+    public:     // Friend classes
+    protected:  // Friend classes
+    private:    // Friend classes
+
+    };
+
+#endif      // __DRMHELPER_H__   
+            
+// End of File
+