wmdrm/camese/wmdrmdladefaulthttpplugin/src/wmdrmdladefaulthttpplugin.cpp
changeset 0 95b198f216e5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wmdrm/camese/wmdrmdladefaulthttpplugin/src/wmdrmdladefaulthttpplugin.cpp	Thu Dec 17 08:52:27 2009 +0200
@@ -0,0 +1,394 @@
+/*
+* 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 Plugin
+*
+*/
+
+
+#include <gulicon.h>
+#include <wmdrmdlauinotifier.h>
+#include "wmdrmdladefaulthttpplugin.h"
+#include "wmdrmdladefaultlicacq.h"
+#include "wmdrmdladefaultmetering.h"
+#include "wmdrmdladefaultplayready.h"
+
+#define _LOGGING_FILE L"wmdrmdladefaulthttpplugin.txt"
+#include "logfn.h"
+
+// CONSTANTS
+const TUid KWmDrmDlaDefaultUiPluginUid = { 0x20019575 };
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::ConstructL()
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::ConstructL" );
+    iLicenseAcquisition = CWmDrmDlaDefaultLicAcq::NewL( this );
+    iMetering = CWmDrmDlaDefaultMetering::NewL( this );
+    iPlayReady = CWmDrmDlaDefaultPlayReady::NewL( this );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::CWmDrmDlaDefaultHttpPlugin
+// ---------------------------------------------------------------------------
+//
+CWmDrmDlaDefaultHttpPlugin::CWmDrmDlaDefaultHttpPlugin()
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::CWmDrmDlaDefaultHttpPlugin" );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::NewL
+// ---------------------------------------------------------------------------
+//
+CWmDrmDlaDefaultHttpPlugin* CWmDrmDlaDefaultHttpPlugin::NewL()
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::NewL" );
+    CWmDrmDlaDefaultHttpPlugin* self = 
+        new( ELeave ) CWmDrmDlaDefaultHttpPlugin;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::~CWmDrmDlaDefaultHttpPlugin
+// ---------------------------------------------------------------------------
+//
+CWmDrmDlaDefaultHttpPlugin::~CWmDrmDlaDefaultHttpPlugin()
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::~CWmDrmDlaDefaultHttpPlugin" );
+    delete iLicenseAcquisition;
+    delete iMetering;
+    delete iPlayReady;
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::ServiceIcon
+// ---------------------------------------------------------------------------
+//
+CGulIcon* CWmDrmDlaDefaultHttpPlugin::ServiceIcon()
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::ServiceIcon" );
+    return NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::SupportedFileL
+// ---------------------------------------------------------------------------
+//
+TBool CWmDrmDlaDefaultHttpPlugin::SupportedFileL( 
+    const RFile& aFile,
+    CWmDrmDlaUiNotifier*& aUiNotifier)
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::SupportedFileL" );
+    return iLicenseAcquisition->SupportedFileL( aFile, aUiNotifier );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::SupportedDrmHeaderL
+// ---------------------------------------------------------------------------
+//
+TBool CWmDrmDlaDefaultHttpPlugin::SupportedDrmHeaderL( 
+    const TDesC8& aHeader,
+    CWmDrmDlaUiNotifier*& aUiNotifier )
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::SupportedDrmHeaderL" );
+    return iLicenseAcquisition->SupportedDrmHeaderL( aHeader, aUiNotifier );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::SupportedMeteringCertificateL
+// ---------------------------------------------------------------------------
+//
+TBool CWmDrmDlaDefaultHttpPlugin::SupportedMeteringCertificateL( 
+    const TDesC8& aCertificate,
+    CWmDrmDlaUiNotifier*& aUiNotifier )
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::SupportedMeteringCertificateL" );
+    return iMetering->SupportedMeteringCertificateL( aCertificate, 
+                                                     aUiNotifier );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::SupportedInitiatorL
+// ---------------------------------------------------------------------------
+//
+TBool CWmDrmDlaDefaultHttpPlugin::SupportedInitiatorL( 
+    const TDesC8& aInitiator, 
+    CWmDrmDlaUiNotifier*& aUiNotifier )
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::SupportedInitiatorL" );
+    return iPlayReady->SupportedInitiatorL( aInitiator, aUiNotifier );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::SilentL
+// ---------------------------------------------------------------------------
+//
+TBool CWmDrmDlaDefaultHttpPlugin::SilentL( 
+    const RFile& aFile )
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::SilentL" );
+    return iLicenseAcquisition->SilentL( aFile );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::ProcessDrmHeaderL
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::ProcessDrmHeaderL( 
+    const TDesC8& aDrmHeader )
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::ProcessDrmHeaderL" );
+    iLicenseAcquisition->ProcessDrmHeaderL( aDrmHeader );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::ProcessInitiatorL
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::ProcessInitiatorL( 
+    const TDesC8& aInitiator )
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::ProcessInitiatorL" );
+    iPlayReady->ProcessInitiatorL( aInitiator );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::AcquireLicense
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::AcquireLicense( 
+    const TDesC8& aLicenseChallenge,
+    HBufC* aLicenseServerUrl,
+    TRequestStatus& aStatus )
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::AcquireLicense" );
+    iLicenseAcquisition->AcquireLicense( aLicenseChallenge, 
+                                         aLicenseServerUrl, 
+                                         aStatus );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::GetLicenseResponseL
+// ---------------------------------------------------------------------------
+//
+HBufC8* CWmDrmDlaDefaultHttpPlugin::GetLicenseResponseL()
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::GetLicenseResponseL" );
+    return iLicenseAcquisition->GetLicenseResponseL();
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::SendLicenseStorageStatus
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::SendLicenseStorageStatus( 
+    HBufC8* aTid,
+    const TDesC& aUrl,
+    TInt aError, 
+    TRequestStatus& aStatus )
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::SendLicenseStorageStatus" );
+    iLicenseAcquisition->SendLicenseStorageStatus( aTid, 
+                                                   aUrl, 
+                                                   aError, 
+                                                   aStatus );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::SendDrmHeaderError
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::SendDrmHeaderError( 
+    const TDesC& aErrorUrl, 
+    TInt aError, 
+    TRequestStatus& aStatus )
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::SendDrmHeaderError" );
+    iLicenseAcquisition->SendDrmHeaderError( aErrorUrl, aError, aStatus );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::GetContentUrlL
+// ---------------------------------------------------------------------------
+//
+HBufC* CWmDrmDlaDefaultHttpPlugin::GetContentUrlL()
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::GetContentUrlL" );
+    return iLicenseAcquisition->GetContentUrlL();
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::GetHtmlDataL
+// ---------------------------------------------------------------------------
+//
+HBufC* CWmDrmDlaDefaultHttpPlugin::GetHtmlDataL()
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::GetHtmlDataL" );
+    return iLicenseAcquisition->GetHtmlDataL();
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::CancelLicenseAcquisition
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::CancelLicenseAcquisition()
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::CancelLicenseAcquisition" );
+    iLicenseAcquisition->CancelLicenseAcquisition();
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::ProcessMeteringChallenge
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::ProcessMeteringChallenge( 
+    const TDesC8& aMeteringChallenge, 
+    const TDesC& aUrl, 
+    TRequestStatus& aStatus )
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::ProcessMeteringChallenge" );
+    iMetering->ProcessMeteringChallenge( aMeteringChallenge, aUrl, aStatus );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::GetMeteringResponse
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::GetMeteringResponse( 
+    HBufC8*& aResponse, 
+    TRequestStatus& aStatus )
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::GetMeteringResponse" );
+    iMetering->GetMeteringResponse( aResponse, aStatus );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::MeteringFinished
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::MeteringFinished()
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::MeteringFinished" );
+    iMetering->MeteringFinished();
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::CancelMetering
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::CancelMetering()
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::CancelMetering" );
+    iMetering->CancelMetering();
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::ProcessJoinDomainChallenge
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::ProcessJoinDomainChallenge( 
+    const TDesC8& aJoinDomainChallenge, 
+    const TDesC& aUrl, 
+    TRequestStatus& aStatus )
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::ProcessJoinDomainChallenge" );
+    iPlayReady->ProcessJoinDomainChallenge( aJoinDomainChallenge, 
+                                            aUrl, 
+                                            aStatus );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::ProcessLeaveDomainChallenge
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::ProcessLeaveDomainChallenge( 
+    const TDesC8& aLeaveDomainChallenge, 
+    const TDesC& aUrl, 
+    TRequestStatus& aStatus )
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::ProcessLeaveDomainChallenge" );
+    iPlayReady->ProcessLeaveDomainChallenge( aLeaveDomainChallenge, 
+                                             aUrl, 
+                                             aStatus );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::SetIapId
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::SetIapId( TInt aIapId )
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::SetIapId" );
+    iLicenseAcquisition->SetIapId( aIapId );
+    iMetering->SetIapId( aIapId );
+    iPlayReady->SetIapId( aIapId );
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::InitializeUiNotifierL
+// ---------------------------------------------------------------------------
+//
+void CWmDrmDlaDefaultHttpPlugin::InitializeUiNotifierL()
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::InitializeUiNotifierL" );
+    //Tries to initialize UiNotifier. If UiNotifier can't be created or
+    //initialization fails, then leaves with error code, won't take ownership
+    //of the notifier
+    iUiNotifier = NULL;
+    iUiNotifier = CWmDrmDlaUiNotifier::NewL();
+    TRAPD( err, iUiNotifier->InitializeL( KWmDrmDlaDefaultUiPluginUid ) );
+    if ( err )
+        {
+        delete iUiNotifier;
+        iUiNotifier = NULL;
+        User::Leave( err );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::UiNotifier
+// ---------------------------------------------------------------------------
+//
+CWmDrmDlaUiNotifier* CWmDrmDlaDefaultHttpPlugin::UiNotifier()
+    {
+    return iUiNotifier;
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmDlaDefaultHttpPlugin::Supported
+// ---------------------------------------------------------------------------
+//
+TBool CWmDrmDlaDefaultHttpPlugin::Supported( 
+    const TDesC8& aString,
+    const TDesC8& aIdentifier)
+    {
+    LOGFN( "CWmDrmDlaDefaultHttpPlugin::Supported" );
+    TBool supported( EFalse );
+    if ( aString.FindF( aIdentifier ) != KErrNotFound )
+        {
+        supported = ETrue;
+        }
+    LOG2( "supported: %d", supported );
+    return supported;
+    }