diff -r 50c53e893c3f -r 1221b68b8a5f commondrm/drmutility/src/drmutilitywmdrmwrapper.cpp --- a/commondrm/drmutility/src/drmutilitywmdrmwrapper.cpp Thu Aug 19 10:12:10 2010 +0300 +++ b/commondrm/drmutility/src/drmutilitywmdrmwrapper.cpp Tue Aug 31 15:29:38 2010 +0300 @@ -31,18 +31,12 @@ #include // access point utils -#include + #include #include #include #include #include -#ifdef __SERIES60_NATIVE_BROWSER -#include -#endif - -#include -#include #include // for WMDRM file details view #include @@ -61,19 +55,12 @@ #include "drmutilitywmdrmutilities.h" #include "wmdrmdlawrapper.h" - -using namespace DRM; +#include "drmuidialogids.h" // CONSTANTS const TInt KMaxUrlLength( 1024 ); const TInt KMaxUrlSanityLength( 102400 ); -#ifndef __SERIES60_NATIVE_BROWSER -const TUid KCRUidBrowser = {0x10008D39}; -const TUint32 KBrowserDefaultAccessPoint = 0x0000000E; -const TUint32 KBrowserAccessPointSelectionMode = 0x0000001E; -#endif - #ifdef _DEBUG // debug panic _LIT( KWmDrmWrapperDebugPanicMessage, "WmDrmWrapperDebugPanic" ); @@ -90,8 +77,7 @@ // DRM::CDrmUtilityWMDrmWrapper::CDrmUtilityWMDrmWrapper() : iCoeEnv( NULL ), - iDrmUtilityUi( NULL ), - iWmDrmDlaSupportOn ( ETrue ) + iDrmUtilityUi( NULL ) { } @@ -103,8 +89,6 @@ void DRM::CDrmUtilityWMDrmWrapper::ConstructL() { User::LeaveIfError( iFs.Connect() ); - TUid u = TUid::Uid( KFeatureIdFfWmdrmDlaSupport ); - TRAPD(err, iWmDrmDlaSupportOn = CFeatureDiscovery::IsFeatureSupportedL( u )); } // ----------------------------------------------------------------------------- @@ -276,7 +260,7 @@ if ( !value ) { - ShowNoRightsNoteL( aContent, reason ); + ShowNoRightsNoteL( aContent, reason, aOperationId, aObserver ); User::LeaveIfError( aContent.GetAttribute( ContentAccess::ECanPlay, value ) ); if ( value ) { @@ -500,7 +484,7 @@ { case DRM::EUHCheckRightsActionDefault: { - ShowNoRightsNoteL( aContent, aReason ); + ShowNoRightsNoteL( aContent, aReason, aOperationId, aObserver ); } break; @@ -558,12 +542,15 @@ // void DRM::CDrmUtilityWMDrmWrapper::ShowNoRightsNoteL( ContentAccess::CData& aContent, - TUint32 /*aReason*/ ) + TUint32 /*aReason*/, + TInt aOperationId, + DRM::MDrmHandleErrorObserver* aObserver ) { + TInt value; TRAPD( err, LoadDlaWrapperL() ); if ( !err ) { - TInt ret( EAknSoftkeyYes ); + TInt ret( EOk ); RFile file; GetRFileFromCDataL( aContent, file ); CleanupClosePushL( file ); @@ -577,18 +564,21 @@ } TFileName fileName; User::LeaveIfError( aContent.GetStringAttribute( DRM::EDrmFileName, fileName ) ); - if(iWmDrmDlaSupportOn) - { - ret = iDrmUtilityUi->DisplayQueryL( R_DRM_QUERY_EXPIRED_OR_NO_RO, fileName ); - } - else - { - ret = iDrmUtilityUi->DisplayMessageQueryL( R_DRMUTILITY_SYNC_WITH_PC, R_DRMUTILITY_HEAD_NO_LICENSE, fileName); - } + // Qt dialog not implemented yet + ret = iDrmUtilityUi->DisplayQueryL( EQueryFileWithNoRightsObj, fileName ); } - if ( !err && ( ret == EAknSoftkeyYes || ret == EAknSoftkeyOk ) && iWmDrmDlaSupportOn) + + if ( !err && ret == EOk ) { TRAP_IGNORE( DlaLicenseAcquisitionL( file ) ); + + // Ask the rights from CAF, same call for both ECanPlay and ECanView + aContent.GetAttribute( ContentAccess::ECanPlay, value ); + // call given HandleErrorObserver + if( value > 0 ) + { + aObserver->RightsAvailable( aOperationId, KErrNone ); + } } CleanupStack::PopAndDestroy( &file ); } @@ -598,7 +588,7 @@ { iDrmUtilityUi = DRM::CDrmUtilityUI::NewL( iCoeEnv ); } - iDrmUtilityUi->DisplayNoteL( R_DRM_INFO_EXPIRED_OR_NO_RO ); + iDrmUtilityUi->DisplayNoteL( EConfLicenceExpired ); } } @@ -777,31 +767,18 @@ void DRM::CDrmUtilityWMDrmWrapper::DlaLicenseAcquisitionL( RFile& aFile ) { - if( iWmDrmDlaSupportOn ) + TInt iapId( 0 ); + HBufC* contentUrl( NULL ); + HBufC* htmlData( NULL ); + LoadDlaWrapperL(); + TRAPD( err, iapId = DefaultAccessPointL() ); + if ( !err ) { - TInt iapId( 0 ); - HBufC* contentUrl( NULL ); - HBufC* htmlData( NULL ); - LoadDlaWrapperL(); - TRAPD( err, iapId = DefaultAccessPointL() ); - if ( !err ) - { - iDlaWrapper->SetIapId( iapId ); - } - iDlaWrapper->AcquireLicenseL( aFile, contentUrl, htmlData ); - delete contentUrl; - delete htmlData; + iDlaWrapper->SetIapId( iapId ); } - else - { - if ( !iDrmUtilityUi ) - { - iDrmUtilityUi = DRM::CDrmUtilityUI::NewL( iCoeEnv ); - } - TFileName aFileName; - TInt err = aFile.Name(aFileName); - iDrmUtilityUi->DisplayNoteL( R_DRMUTILITY_SYNC_WITH_PC , aFileName); - } + iDlaWrapper->AcquireLicenseL( aFile, contentUrl, htmlData ); + delete contentUrl; + delete htmlData; } // ----------------------------------------------------------------------------- @@ -824,56 +801,38 @@ // TInt DRM::CDrmUtilityWMDrmWrapper::DefaultAccessPointL() { - const TInt KDestinationSelectionMode( 2 ); - CRepository* repository( NULL ); - TInt ap( 0 ); - TInt alwaysAsk( 0 ); + //Fetch default connection TUint32 iapd32( 0 ); - TInt defaultSnap( 0 ); + TCmDefConnValue defConn; + RCmManager cmManager; + cmManager.OpenLC(); + cmManager.ReadDefConnL(defConn); + if (defConn.iType == ECmDefConnConnectionMethod) + { + iapd32=defConn.iId; + } + else if (defConn.iType == ECmDefConnDestination) + { + RCmDestination dest( cmManager.DestinationL( defConn.iId ) ); + CleanupClosePushL( dest ); - repository = CRepository::NewL( KCRUidBrowser ); - CleanupStack::PushL( repository ); - repository->Get( KBrowserDefaultAccessPoint, ap ); - repository->Get( KBrowserAccessPointSelectionMode, alwaysAsk ); - repository->Get( KBrowserNGDefaultSnapId, defaultSnap ); - CleanupStack::PopAndDestroy( repository ); + if ( dest.ConnectionMethodCount() <= 0 ) + { + User::Leave( KErrNotFound ); + } - if ( ap <= KErrNotFound && defaultSnap <= KErrNotFound ) - { - alwaysAsk = ETrue; + RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) ); + CleanupClosePushL( cMeth ); + + iapd32 = cMeth.GetIntAttributeL( CMManager::ECmIapId ); + CleanupStack::PopAndDestroy( 2, &dest ); //cMeth, dest } else { - RCmManager cmManager; - cmManager.OpenLC(); - if ( !alwaysAsk ) - { - iapd32 = - cmManager.GetConnectionMethodInfoIntL( ap, - CMManager::ECmIapId ); - } - else if ( alwaysAsk == KDestinationSelectionMode ) - { - RCmDestination dest( cmManager.DestinationL( defaultSnap ) ); - CleanupClosePushL( dest ); - - if ( dest.ConnectionMethodCount() <= 0 ) - { - User::Leave( KErrNotFound ); - } - - RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) ); - CleanupClosePushL( cMeth ); - - iapd32 = cMeth.GetIntAttributeL( CMManager::ECmIapId ); - CleanupStack::PopAndDestroy( 2, &dest ); //cMeth, dest - } - CleanupStack::PopAndDestroy( &cmManager ); - } - if ( alwaysAsk && alwaysAsk != KDestinationSelectionMode ) - { User::Leave( KErrAccessDenied ); } + CleanupStack::PopAndDestroy(&cmManager); + // End of fetch default connection return iapd32; }