--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/omadrm/drmhelper/drmhelperserver/inc/MDRMHelper.h Thu Dec 17 08:52:27 2009 +0200
@@ -0,0 +1,370 @@
+/*
+* Copyright (c) 2003 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:
+*
+*/
+
+
+#ifndef __MDRMHELPER_H__
+#define __MDRMHELPER_H__
+
+// INCLUDES
+// CONSTANTS
+// MACROS
+// DATA TYPES
+// FUNCTION PROTOTYPES
+// FORWARD DECLARATIONS
+class CDRMRightsConstraints;
+class TDataType;
+class CCoeEnv;
+
+// CLASS DECLARATION
+
+class MDRMHelper
+ {
+ public:
+
+ enum TNotificationID
+ {
+ ETActivateTextId = 1,
+ ETCountBasedErrorTextId = 2 ,
+ ETCountUsageReduceId = 3,
+ ETCountUsageReduceMediaId = 4
+ };
+
+ enum TConsumeAction
+ {
+ EStart,
+ EFinish,
+ };
+
+ enum TOMALevel
+ {
+ EOMA_None,
+ EOMA_1_0,
+ EOMA_2_0
+ };
+
+ public: // New functions
+
+ /**
+ * 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
+ */
+ virtual TInt HandleErrorL( TInt aError,
+ const TDesC8& aURI ) = 0;
+
+ /**
+ * Displays appropriate error note depending on error code.
+ * @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
+ */
+ virtual TInt HandleErrorL( TInt aError,
+ const TDesC& aFileName ) = 0;
+
+ /**
+ * Handle the general UI based error notes
+ * @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
+ */
+ virtual TInt ShowDRMUINotificationL( TNotificationID aTextId,
+ const TDesC8& aURI ) = 0;
+
+ /**
+ * Handle the general UI based error notes
+ * @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
+ */
+ virtual TInt ShowDRMUINotificationL( TNotificationID aTextId,
+ const TDesC& aFileName ) = 0;
+
+ /**
+ * Set count limit for CheckRightsAmountL
+ * @param aCounts: new count limit for displaying the note.
+ * @return -
+ */
+ virtual void SetCountLimitL( TUint aCounts ) = 0;
+
+ /**
+ * Set time limit in days for CheckRightsAmountL
+ * @param aDays: new time limit for displaying the note.
+ * @return -
+ */
+ virtual void SetTimeLimitL( TUint aDays ) = 0;
+
+ /**
+ * Set percentage limit for CheckRightsAmountL. Applies to both counts and time.
+ * @param aPercentage: new limit for displaying the note.
+ * @return -
+ */
+ virtual void SetPercentageLimitL( TUint aPercentage ) = 0;
+
+ /**
+ * Launches DRM Rights Manager UI embedded with details view related
+ * to given content.
+ * @param aURI: URI of the file
+ * @return -
+ */
+ virtual void LaunchDetailsViewEmbeddedL(
+ const TDesC8& aURI ) = 0;
+
+ /**
+ * Launches DRM Rights Manager UI embedded with details view related
+ * to given file.
+ * @param aFileName: Full path to file
+ * @return -
+ */
+ virtual void LaunchDetailsViewEmbeddedL(
+ const TDesC& aFileName ) = 0;
+
+ /**
+ * Gets details of rights object associated of given file.
+ * @param aFileName: Full path to file
+ * @param aIntent: bitmask of DRMCommon::EPlay, DRMCommon::EDisplay,
+ * DRMCommon::EExecute and DRMCommon::EPrint
+ * @param aExpired: (out) ETrue if rights are expired
+ * @param aSendingAllowed: (out) ETrue if content can be sent
+ * @param aPlay: (out) play constraints, must be deleted by caller
+ * @param aDisplay: (out) display constraints, must be deleted by caller
+ * @param aExecute: (out) execute constraints, must be deleted by caller
+ * @param aPrint: (out) print constraints, must be deleted by caller
+ * @return -
+ */
+ virtual void GetRightsDetailsL( const TDesC& aFileName,
+ TUint32 aIntent, TBool& aExpired, TBool& aSendingAllowed,
+ CDRMRightsConstraints*& aPlay,
+ CDRMRightsConstraints*& aDisplay,
+ CDRMRightsConstraints*& aExecute,
+ CDRMRightsConstraints*& aPrint ) = 0;
+
+ /**
+ * Checks whether some content can be used as automated content or not.
+ * @param aURI: URI of the file
+ * @param aValue: (out) result of the query
+ * @return KErrnone if everything went ok, else wide scale of Symbian errors
+ */
+ virtual TInt CanSetAutomated( const TDesC8& aURI, TBool& aValue ) = 0;
+
+ /**
+ * Checks whether some content can be used as automated content or not.
+ * @param aFileName: Full path to the file
+ * @param aValue: (out) result of the query
+ * @return KErrnone if everything went ok, else wide scale of Symbian errors
+ */
+ virtual TInt CanSetAutomated( const TDesC& aFilename, TBool& aValue ) = 0;
+
+ /**
+ * Registers some content for automated usage (e.g. default ring tone).
+ * @param aURI: URI of the file
+ * @return KErrnone if everything went ok, else wide scale of Symbian errors
+ */
+ virtual TInt SetAutomated( const TDesC8& aURI ) = 0;
+
+ /**
+ * Registers some content for automated usage (e.g. default ring tone).
+ * @param aFileName: Full path to the file
+ * @return KErrnone if everything went ok, else wide scale of Symbian errors
+ */
+ virtual TInt SetAutomated( const TDesC& aFilename ) = 0;
+
+ /**
+ * Removes automated content. Used to indicated that the given content is
+ * not anymore used automaticallly by the device.
+ * @param aURI: URI of the file
+ * @return KErrnone if everything went ok, else wide scale of Symbian errors
+ */
+ virtual TInt RemoveAutomated( const TDesC8& aURI ) = 0;
+
+ /**
+ * Removes automated content. Used to indicated that the given content is
+ * not anymore used automaticallly by the device.
+ * @param aFileName: Full path to the file
+ * @return KErrnone if everything went ok, else wide scale of Symbian errors
+ */
+ virtual TInt RemoveAutomated( const TDesC& aFilename ) = 0;
+
+ /**
+ * Sends an idle-signal to DRM Helper Server. This indicates
+ * that the device is on idle state to the DRM Helper Server.
+ * @return -
+ */
+ virtual void IndicateIdle() = 0;
+
+ /**
+ * 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.
+ */
+ virtual TInt GetContentURIList(
+ RPointerArray<HBufC8>*& aURIList) = 0;
+
+ /**
+ * 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
+ */
+ virtual TInt DataTypesCount(
+ TInt& aCount) = 0;
+
+ /**
+ * 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
+ */
+
+ virtual TInt SupportedDataType(
+ const TInt aIndex, TDataType& aDataType) = 0;
+
+ /**
+ * RegisterDataType
+ *
+ * Registers a datatype as a supported datatype.
+ *
+ * @since 2.0
+ * @param aDataType: Datatype to register
+ * @return EOk if the datatype has been registered
+ */
+
+ virtual TInt RegisterDataType(
+ const TDataType& aDataType) = 0;
+
+ /**
+ * 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
+ */
+
+ virtual TInt UnRegisterDataType(
+ const TInt aIndex) = 0;
+
+ /**
+ * 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
+ */
+
+ virtual TInt SupportedDRMMethods(
+ TInt& aDRMMethod, TOMALevel& aOMALevel) = 0;
+
+ /**
+ * Consume
+ *
+ * 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 2.5
+ * @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.
+ */
+ virtual TInt Consume(
+ const TDesC8& aContentURI,
+ TUint32 aRightsSpec,
+ TConsumeAction anAction) = 0;
+
+ /**
+ * ConsumeFile
+ *
+ * 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 2.5
+ * @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.
+ */
+ virtual TInt ConsumeFile(
+ const TDesC& aFileName,
+ TUint32 aRightsSpec,
+ TConsumeAction anAction) = 0;
+
+ };
+
+class MDRMHelperFactory
+ {
+public:
+
+ IMPORT_C static MDRMHelper* CreateL(CCoeEnv& aCoeEnv);
+ IMPORT_C static MDRMHelper* CreateLC(CCoeEnv& aCoeEnv);
+
+ IMPORT_C static MDRMHelper* CreateL();
+ IMPORT_C static MDRMHelper* CreateLC();
+
+ };
+
+#endif // MDRMHELPER_H
+
+// End of File