messagingapp/msgutils/unidatamodel/unimmsdataplugin/src/UniDrmInfo.cpp
changeset 25 84d9eb65b26f
parent 23 238255e8b033
child 27 e4592d119491
child 37 518b245aa84c
child 79 2981cb3aa489
--- a/messagingapp/msgutils/unidatamodel/unimmsdataplugin/src/UniDrmInfo.cpp	Fri Apr 16 14:56:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,599 +0,0 @@
-/*
-* Copyright (c) 2006-2007 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: 
-*       CUniDrmInfo, Storage for single attachment in presentation.
-*
-*
-*/
-
-
-// ========== INCLUDE FILES ================================
-
-#include <e32def.h>     // for basic types
-#include <eikenv.h>     // for CBase
-#include <coemain.h>    // for CEikonEnv
-#include <mtclbase.h>   // for CBaseMtm
-#include <msvids.h>     // for KMsvTempIndexEntryId
-#include <msvstore.h>
-#include <mmsvattachmentmanager.h>
-#include <mmsvattachmentmanagersync.h>
-#include <cmsvattachment.h>
-
-// Features
-#include <featmgr.h>
-#include <bldvariant.hrh>
-
-// DRM
-#ifndef DRMCOMMONIN_POISTO
-#include <DRMCommon.h>
-#endif
-
-#include <DRMHelper.h>
-
-#include <MsgMediaInfo.h>
-#include <MsgTextInfo.h>
-
-#include "UniModelConst.h"
-#include "UniMimeInfo.h"
-#include "UniDrmInfo.h"
-#include "UniObject.h"
-#include "UniDataUtils.h"
-
-//#include "UniEditorLogging.h"
-#include "fileprotectionresolver.h"
-#include "MsgMimeTypes.h"
-
-// ========== EXTERNAL DATA STRUCTURES =====================
-
-// ========== EXTERNAL FUNCTION PROTOTYPES =================
-
-// ========== CONSTANTS ====================================
-
-// ========== MACROS =======================================
-
-// ========== LOCAL CONSTANTS AND MACROS ===================
-
-// ========== MODULE DATA STRUCTURES =======================
-
-
-// ========== LOCAL FUNCTION PROTOTYPES ====================
-
-// ========== LOCAL FUNCTIONS ==============================
-
-// ========== MEMBER FUNCTIONS =============================
-
-// ---------------------------------------------------------
-// CUniDrmInfo::NewLC
-//
-// Factory method.
-// ---------------------------------------------------------
-//
-CUniDrmInfo* CUniDrmInfo::NewLC( RFs& aFs,
-                                          CBaseMtm& aMtm,
-                                          TMsvAttachmentId& aId,
-                                          CMsgMediaInfo& aMediaInfo )
-    {
-    CUniDrmInfo* self =  new ( ELeave ) CUniDrmInfo( aFs, aMtm, aId, aMediaInfo );
-
-    CleanupStack::PushL( self );
-    self->ConstructL();
-
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CUniDrmInfo::NewL
-//
-// Factory method.
-// ---------------------------------------------------------
-//
-CUniDrmInfo* CUniDrmInfo::NewL( RFs& aFs,
-                                         CBaseMtm& aMtm,
-                                         TMsvAttachmentId& aId,
-                                         CMsgMediaInfo& aMediaInfo )
-    {
-    CUniDrmInfo* self = NewLC( aFs, aMtm, aId, aMediaInfo );
-    CleanupStack::Pop( self );
-
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CUniDrmInfo::CUniDrmInfo
-//
-// Constructor.
-// ---------------------------------------------------------
-//
-CUniDrmInfo::CUniDrmInfo( RFs& aFs,
-                          CBaseMtm& aMtm,
-                          TMsvAttachmentId& aId,
-                          CMsgMediaInfo& aMediaInfo ) :
-    iFs( aFs ),
-    iMtm( aMtm ),
-    iAttachmentId( aId ),
-    iMediaInfo( aMediaInfo ),
-    iDRMConsumeStatus( EUniDRMNone ),
-    iDRMConsumeCount( 0 ),
-    iDRMRightsExist( ETrue ), //Rights ok by default
-    iDRMExpiration( CDRMRights::EValidRights ),
-    iDRMRestriction( CDRMRights::EFullRights ),
-    iDRMConstraintType( CDRMRights::ENoConstraints )
-    {
-    }
-
-// ---------------------------------------------------------
-// CUniDrmInfo::CUniDrmInfo
-//
-// Destructor.
-// ---------------------------------------------------------
-//
-CUniDrmInfo::~CUniDrmInfo()
-    {
-    ReleaseRights();
-    delete iDRMHelper;
-
-#ifdef DRMCOMMONIN_POISTO
-    delete iRightsManager;
-#else
-    delete iDRMCommon;
-#endif
-
-    delete iSendContentUrl;
-    }
-
-// ---------------------------------------------------------
-// CUniDrmInfo::ConstructL
-//
-// 2nd phase constructor.
-// ---------------------------------------------------------
-//
-void CUniDrmInfo::ConstructL()
-    {
-    if ( !iMediaInfo.DRMContentURI()->Length() )
-        {
-        User::Leave( KErrNotSupported );
-        }
-
-    // Get supported features from feature manager.
-/*
-    FeatureManager::InitializeLibL();
-    if ( FeatureManager::FeatureSupported( KFeatureIdDrmFull ) )
-        {
-        iSupportedFeatures |= EUniFeatureDrmFull;
-        }
-    FeatureManager::UnInitializeLib();
-*/
-
-#ifdef DRMCOMMONIN_POISTO
-
-    // Seems pretty heavy. Should be done only once by e.g. Document
-    // and a reference should be passed as an input parameter?
-    CManager* manager = CManager::NewLC();
-
-    RArray<TAgent> agents;
-    manager->ListAgentsL( agents );
-    CleanupClosePushL( agents );
-
-    for ( TInt i = 0; !iRightsManager && i < agents.Count(); i++ )
-        {
-        if ( agents[ i ].Name().Compare( KOmaDrm2AgentName ) == 0 )
-            {
-            iRightsManager = manager->CreateRightsManagerL( agents[ i ] );
-            }
-        }
-
-    CleanupStack::PopAndDestroy( 2, manager ); // agents, manager
-
-    if ( !iRightsManager )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-#else // DRMCOMMONIN_POISTO
-
-    iDRMCommon = DRMCommon::NewL();
-
-#endif // DRMCOMMONIN_POISTO
-
-    iDRMHelper = CDRMHelper::NewL( *CEikonEnv::Static( ), iFs );
-    DoGetRightsInfoL();
-
-    // Check it here that image count is rights.
-    // When image is displayed, use count is already decremented.
-    SetIsDrmWithOnePreviewL();
-
-    TInt drmMethods;
-    CDRMHelper::TDRMHelperOMALevel omaLevel;
-    iDRMHelper->SupportedDRMMethods2( drmMethods, omaLevel );
-    iOma2 = ( omaLevel == CDRMHelper::EOMA_2_0 ? ETrue : EFalse );
-    }
-
-// ---------------------------------------------------------
-// CUniDrmInfo::DoGetRightsInfoL
-// ---------------------------------------------------------
-//
-void CUniDrmInfo::DoGetRightsInfoL( CDRMRights** aRightsObj )
-    {
-/*
-    if ( iSupportedFeatures & EUniFeatureDrmFull )
-        {
-        CDRMRights* rightsObj = NULL;
-        TInt rightSpec = ConsumeIntent();
-
-#ifdef DRMCOMMONIN_POISTO
-
-        MAgentRightsBase* cafRights = NULL;
-        RStreamablePtrArray<CRightsInfo> rights;
-
-        // Copy to 16-bit buffer
-        // TODO: Is this really the correct parameter to give to ListRightsL?!
-        HBufC* temp = HBufC::NewLC( iMediaInfo.DRMContentURI()->Length() );
-        TPtr ptr = temp->Des();
-        ptr.Copy( *iMediaInfo.DRMContentURI() );
-
-        iRightsManager->ListRightsL( rights, *temp );
-
-        CleanupStack::PopAndDestroy( temp );
-        if ( rights.Count() )
-            {
-            // The active RO is the first one in the list
-            //CRightsInfo* rightsInfo = rights[0]->AllocL();
-            CRightsInfo* rightsInfo = rights[ 0 ];
-            cafRights = iRightsManager->GetRightsDataL( *rightsInfo );
-            rightsObj = reinterpret_cast<CDRMRights*>( cafRights );
-            rightsObj->GetRightsInfo(
-                rightSpec,
-                iDRMRestriction,
-                iDRMExpiration,
-                iDRMConstraintType );
-            iDRMRightsExist = ETrue;
-            }
-        else
-            {
-            iDRMRightsExist = EFalse;
-            }
-        rights.ResetAndDestroy();
-
-#else // DRMCOMMONIN_POISTO
-
-        TInt restriction = iDRMCommon->GetActiveRights(
-            *iMediaInfo.DRMContentURI(),
-            rightSpec,
-            rightsObj );
-
-        if ( restriction == CDRMRights::ENoRights ||
-            !rightsObj )
-            {
-            iDRMRightsExist = EFalse;
-            }
-        else
-            {
-            rightsObj->GetRightsInfo(
-                rightSpec,
-                iDRMRestriction,
-                iDRMExpiration,
-                iDRMConstraintType );
-            iDRMRightsExist = ETrue;
-            }
-
-#endif // DRMCOMMONIN_POISTO
-
-        if ( aRightsObj )
-            {
-            (*aRightsObj) = rightsObj;
-            }
-        else
-            {
-            delete rightsObj;
-            }
-        }
-*/
-    }
-
-// ---------------------------------------------------------
-// CUniDrmInfo::ConsumeRights
-// ---------------------------------------------------------
-//
-TInt CUniDrmInfo::ConsumeRights()
-    {
-//    UNILOGGER_ENTERFN( "CUniDrmInfo::ConsumeRights" );
-
-    TInt err( KErrNone );
-    if ( ( iMediaInfo.MediaType() == EMsgMediaAudio ||
-           ( iMediaInfo.MediaType() != EMsgMediaAudio &&
-             iDRMExpiration == CDRMRights::EValidRights ) ) &&
-         iDRMConsumeStatus != EUniDRMConsumed )
-        {
-        if ( iDRMConsumeCount )
-            {
-            //UNILOGGER_WRITE( "Rights freezed" );
-
-            // Already once consumed. Freeze is enough!
-            FreezeRights();
-            }
-        else
-            {
-            if ( iDRMConsumeStatus == EUniDRMFrozen )
-                {
-                //UNILOGGER_WRITE( "Rights released" );
-
-                ReleaseRights();
-                }
-
-            err = iDRMHelper->Consume2( iMediaInfo.DRMContentURI()->Des(),
-                                        ConsumeIntent(),
-                                        CDRMHelper::EStart );
-
-            if ( !err )
-                {
-                //UNILOGGER_WRITE( "Rights consumed" );
-
-                iDRMConsumeStatus = EUniDRMConsumed;
-                iDRMConsumeCount++;
-                }
-            }
-        }
-    // else - never consume for preview
-
-    //UNILOGGER_WRITEF( _L("Result: %d"), err );
-    //UNILOGGER_LEAVEFN( "CUniDrmInfo::ConsumeRights" );
-
-    return err;
-    }
-
-// ---------------------------------------------------------
-// CUniDrmInfo::EvaluateRights
-// ---------------------------------------------------------
-//
-TInt CUniDrmInfo::EvaluateRights( TBool& aConsumed )
-    {
-    //UNILOGGER_ENTERFN( "CUniDrmInfo::EvaluateRights" );
-
-    aConsumed = ( iDRMConsumeStatus == EUniDRMConsumed ||  iDRMConsumeCount );
-
-    TInt err( KErrNone );
-
-    CData* cData = NULL;
-    TRAP_IGNORE( cData = CreateCDataL() );
-
-    if ( cData )
-        {
-        err = cData->EvaluateIntent( ConsumeIntent() );
-        delete cData;
-        }
-
-    //UNILOGGER_WRITEF( _L("Result: %d, aConsumed %d"), err, aConsumed );
-    //UNILOGGER_LEAVEFN( "CUniDrmInfo::EvaluateRights" );
-
-    return err;
-    }
-
-// ---------------------------------------------------------
-// CUniDrmInfo::FreezeRights
-// ---------------------------------------------------------
-//
-TInt CUniDrmInfo::FreezeRights()
-    {
-    //UNILOGGER_ENTERFN( "CUniDrmInfo::FreezeRights" );
-
-    TInt err( KErrNone );
-    if ( ( iMediaInfo.MediaType() == EMsgMediaAudio ||
-           ( iMediaInfo.MediaType() != EMsgMediaAudio &&
-             iDRMExpiration == CDRMRights::EValidRights ) ) &&
-         iDRMConsumeStatus == EUniDRMNone )
-        {
-        err = iDRMHelper->Consume2( iMediaInfo.DRMContentURI()->Des(),
-                                    ContentAccess::EInstall,
-                                    CDRMHelper::EStart );
-
-        if ( !err )
-            {
-            //UNILOGGER_WRITE( "Rights frozen" );
-
-            iDRMConsumeStatus = EUniDRMFrozen;
-            }
-        }
-
-    //UNILOGGER_WRITEF( _L("Result: %d"), err );
-    //UNILOGGER_LEAVEFN( "CUniDrmInfo::FreezeRights" );
-
-    return err;
-    }
-
-// ---------------------------------------------------------
-// CUniDrmInfo::ReleaseRights
-// ---------------------------------------------------------
-//
-TInt CUniDrmInfo::ReleaseRights()
-    {
-    //UNILOGGER_ENTERFN( "CUniDrmInfo::ReleaseRights" );
-
-    TInt err( KErrNone );
-    if ( iDRMConsumeStatus != EUniDRMNone )
-        {
-        TUint32 rightsSpec = ( iDRMConsumeStatus == EUniDRMFrozen )
-            ? ContentAccess::EInstall
-            : ConsumeIntent();
-
-        err = iDRMHelper->Consume2( iMediaInfo.DRMContentURI()->Des(),
-                                    rightsSpec,
-                                    CDRMHelper::EFinish );
-
-        //UNILOGGER_WRITE( "Rights released" );
-
-        // else - never consumed for preview
-        iDRMConsumeStatus = EUniDRMNone;
-        }
-
-    //UNILOGGER_WRITEF( _L("Result: %d"), err );
-    //UNILOGGER_LEAVEFN( "CUniDrmInfo::ReleaseRights" );
-
-    return err;
-    }
-
-// ---------------------------------------------------------
-//  CUniDrmInfo::RightsValidL
-// ---------------------------------------------------------
-//
-TBool CUniDrmInfo::RightsValidL( TBool aUpdate )
-    {
-    //UNILOGGER_ENTERFN( "CUniDrmInfo::RightsValidL" );
-    //UNILOGGER_WRITEF( _L("aUpdate: %d"), aUpdate );
-
-    // By default rights are valid
-    TBool retVal = ETrue;
-    if ( aUpdate )
-        {
-        DoGetRightsInfoL();
-
-        //UNILOGGER_WRITE( "Update done" );
-        }
-
-    if ( iMediaInfo.Protection() &
-        ( EFileProtForwardLocked | EFileProtSuperDistributable ) )
-        {
-        if ( iDRMRightsExist )
-            {
-            if ( iDRMExpiration == CDRMRights::EExpiredRights ||
-                 iDRMExpiration == CDRMRights::EFutureRights )
-                {
-                // Expired or future rights
-                retVal = EFalse;
-                }
-            }
-        else
-            {
-            // No rights
-            retVal = EFalse;
-            }
-        }
-
-    //UNILOGGER_WRITEF( _L("Result: %d"), retVal );
-    //UNILOGGER_LEAVEFN( "CUniDrmInfo::RightsValidL" );
-
-    return retVal;
-    }
-
-// ---------------------------------------------------------
-// CUniDrmInfo::IsDrmWithOnePreview
-// ---------------------------------------------------------
-//
-TBool CUniDrmInfo::IsDrmWithOnePreview()
-    {
-    return iDrmOnePreview;
-    }
-
-// ---------------------------------------------------------
-// CUniDrmInfo::SetIsDrmWithOnePreviewL
-// ---------------------------------------------------------
-//
-void CUniDrmInfo::SetIsDrmWithOnePreviewL()
-    {
-/*
-    iDrmOnePreview = EFalse;
-    if ( !( iSupportedFeatures & EUniFeatureDrmFull ) )
-        {
-        return;
-        }
-
-    // Check only object list. Attachments are left for
-    // dedicated attachment handler's responsibility.
-    CDRMRights* rights = NULL;
-    DoGetRightsInfoL(&rights);
-
-    if ( rights &&
-         iDRMRightsExist &&
-         !( iDRMConstraintType ^ CDRMRights::ECountBased ) &&   // only ECountBased bit set
-         iMediaInfo.Protection() & EFileProtForwardLocked )
-        {
-        // must get count still
-        // no leaving functions in this function
-        CDRMRightsConstraints* constraint = NULL;
-        TMsgMediaType mediaType = iMediaInfo.MediaType();
-
-        if ( mediaType == EMsgMediaImage ||
-             mediaType == EMsgMediaSvg )
-            {
-            rights->GetDisplayRight( constraint );
-            }
-        else if ( mediaType == EMsgMediaAudio ||
-                  mediaType == EMsgMediaVideo )
-            {
-            rights->GetPlayRight( constraint );
-            }
-
-        if ( constraint &&
-             constraint->IsPreview() )
-            {
-            TUint32 origCount = 0;
-            TUint32 nowCount = 0;
-            constraint->GetCounters( nowCount,  origCount);
-
-            if ( nowCount == 1 )
-                {
-                iDrmOnePreview = ETrue;
-                }
-            }
-
-        delete constraint;
-        }
-
-    delete rights;
-*/
-    }
-
-
-// ---------------------------------------------------------
-// CUniDrmInfo::CreateCDataL
-// ---------------------------------------------------------
-//
-CData* CUniDrmInfo::CreateCDataL()
-    {
-    CData* result = NULL;
-
-    if ( iMediaInfo.DRMContentURI() )
-        {
-        // depends on iAttachmentId
-        RFile attachmentFile = CUniDataUtils::GetAttachmentFileL( iMtm, iAttachmentId );
-        CleanupClosePushL( attachmentFile );
-
-        result = CData::NewL( attachmentFile,
-                              KDefaultContentObject,
-                              EPeek );
-
-        CleanupStack::PopAndDestroy( &attachmentFile );
-        }
-
-    return result;
-    }
-
-// ---------------------------------------------------------
-// CUniDrmInfo::HandleDrmErrorL
-// ---------------------------------------------------------
-//
-void CUniDrmInfo::HandleDrmErrorL( TInt aError )
-    {
-    if ( iDRMHelper )
-        {
-        RFile attachmentFile = CUniDataUtils::GetAttachmentFileL( iMtm, iAttachmentId );
-        CleanupClosePushL( attachmentFile );
-
-        iDRMHelper->HandleErrorL(   aError,
-                                    attachmentFile );
-        CleanupStack::PopAndDestroy( &attachmentFile );
-        }
-    }
-
-
-// EOF