diff -r 000000000000 -r 95b198f216e5 wmdrm/camese/wmdrmdladefaulthttpplugin/inc/wmdrmdladefaultplayready.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wmdrm/camese/wmdrmdladefaulthttpplugin/inc/wmdrmdladefaultplayready.h Thu Dec 17 08:52:27 2009 +0200 @@ -0,0 +1,148 @@ +/* +* Copyright (c) 2008 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: WMDRM DLA Default Http PlayReady Implementation +* +*/ + + +#ifndef C_WMDRMDLADEFAULTPLAYREADY_H +#define C_WMDRMDLADEFAULTPLAYREADY_H + +#include "wmdrmdladefaulthttpmanagerobserver.h" + +class CWmDrmDlaDefaultHttpPlugin; +class CWmDrmDlaUiNotifier; +class CWmDrmDlaDefaultHttpManager; +class CHTTPFormEncoder; + +/** + * WMDRM DLA Default Http PlayReady Implementation + * + * @lib wmdrmdladefaulthttpplugin.lib + * @since S60 v9.1 + */ +NONSHARABLE_CLASS( CWmDrmDlaDefaultPlayReady ) + : public CBase, + public MWmDrmDlaDefaltHttpManagerObserver + { + +public: + + static CWmDrmDlaDefaultPlayReady* NewL( + CWmDrmDlaDefaultHttpPlugin* aPlugin ); + ~CWmDrmDlaDefaultPlayReady(); + + /** + * Check if initiator is supported by this plugin + * This method is called only for playready content + * + * @param aInitiator Initiator + * @param aUiNotifer If initiator is supported, contains initialized UI + * Notifier upon completion. Will be deleted by the + * caller. + * @return ETrue if initiator is supported by this plugin + * @leave with standard Symbian error code in case of error + */ + TBool SupportedInitiatorL( const TDesC8& aInitiator, + CWmDrmDlaUiNotifier*& aUiNotifier ); + + /** + * Process the initiator. This method is used only to pass initiator to the + * plugin. The framework does not require the plugin to do anything. + * This method is called only for playready content + * + * @param aInitiator Initiator + * @leave with standard Symbian error code in case of fatal error (the + * framework does not proceed with license acquisition if this method + * leaves) + */ + void ProcessInitiatorL( const TDesC8& aInitiator ); + + /* + * Process join domain challenge. + * This method is called only for playready content + * + * @param aJoinDomainChallenge Join domain challenge + * @param aUrl Url to be used in join domain request + * @param aStatus Request status, will contain error code upon completion + * including but not limited to: + * - KErrCommsBreak if network connection was lost during communication + * with server + * - KErrGeneral if unspecified error happened + */ + void ProcessJoinDomainChallenge( + const TDesC8& aJoinDomainChallenge, + const TDesC& aUrl, + TRequestStatus& aStatus ); + + /* + * Process leave domain challenge. + * This method is called only for playready content + * + * @param aLeaveDomainChallenge Leave domain challenge + * @param aUrl Url to be used in leave domain request + * @param aStatus Request status, will contain error code upon completion + * including but not limited to: + * - KErrCommsBreak if network connection was lost during communication + * with server + * - KErrGeneral if unspecified error happened + */ + void ProcessLeaveDomainChallenge( + const TDesC8& aLeaveDomainChallenge, + const TDesC& aUrl, + TRequestStatus& aStatus ); + + /** + * Sets the IAP to be used in the HTTP transactions + * + * @param aIapId Internet Access Point id + */ + void SetIapId( TInt aIapId ); + +private: // From MWmDrmDlaDefaltHttpManagerObserver + + TBool OnGetUsernamePasswordL( HBufC8*& aUsername, HBufC8*& aPassword ); + void OnResponseHeadersL( const RHTTPResponse& aResponse, + const RHTTPHeaders& aHeaders, + const RStringPool& aStringPool, + TInt aHttpStatus ); + void OnResponseBodyDataL( const TPtrC8 aDataChunk ); + void OnTransactionComplete( TInt aSystemError ); + +private: + + CWmDrmDlaDefaultPlayReady( CWmDrmDlaDefaultHttpPlugin* aPlugin ); + void ConstructL(); + + void CompleteClientRequest( TInt aError ); + +private: // data + + enum TPlayReadyState + { + ENotActive, + }; + + TPlayReadyState iState; + CWmDrmDlaDefaultHttpManager* iHttpManager; + CHTTPFormEncoder* iFormEncoder; + TInt iHttpStatus; + + //Not owned + CWmDrmDlaDefaultHttpPlugin* iPlugin; + TRequestStatus* iClientStatus; + + }; + +#endif // C_WMDRMDLADEFAULTPLAYREADY_H