diff -r 1221b68b8a5f -r 1481bf457703 omadrm/drmplugins/drmrohandler/src/CRoHandler.cpp --- a/omadrm/drmplugins/drmrohandler/src/CRoHandler.cpp Tue Aug 31 15:29:38 2010 +0300 +++ b/omadrm/drmplugins/drmrohandler/src/CRoHandler.cpp Wed Sep 01 12:21:16 2010 +0100 @@ -30,6 +30,7 @@ #include // link against centralrepository.lib #include #include +#include #ifdef RD_MULTIPLE_DRIVE #include @@ -38,14 +39,16 @@ #include // TUriParser16 #include // KDC_MTM_RESOURCE_DIR #include // UriUtils and so on +#include // for R_PUSHMISC_UNK_SENDER #include // for R_QTN_DRM_MGR_INB_TITLE #include // Disk space checking +#include // Feature Manager #include "CRoHandler.h" #include "RoMtmCli.h" // for CRightsObjectMtmClient #include "RoapSyncWrapper.h" -#include "RoHandlerStringResourceReader.h" +#include "StringResourceReader.h" #include "rohandlerdmgrwrapper.h" #include "rohandlerinternalcrkeys.h" @@ -98,6 +101,7 @@ _LIT( KRoHandlerTriggerFilePath, "c:\\system\\data\\" ); #endif +_LIT( KPushMtmRes, "PushMtmUi.rsc" ); _LIT( KRoHandlerResourceFile, "RoHandler.rsc" ); _LIT8( KRoapTriggerElement, "roapTrigger" ); @@ -112,8 +116,6 @@ _LIT( KRoAcquisitionPrefix, "ROA:" ); _LIT( KTriggerPrefix, "TRI:" ); -_LIT( KEmpty, " " ); - // MODULE DATA STRUCTURES // Helper class for deleting file with given filename on cleanupstack @@ -397,7 +399,7 @@ ) : CPushHandlerBase(), iFirstTime( ETrue ), iPushMsg( NULL ), iMsvId( NULL ), - iPutRightsToInbox( ETrue ) + iPutRightsToInbox( ETrue ), iFeatureManagerFound( EFalse ) { } @@ -427,7 +429,14 @@ CRepository* repository( NULL ); TInt err( KErrNone ); + TInt ret( KErrNone ); + TRAP( ret, FeatureManager::InitializeLibL() ); + if ( !ret ) + { + iFeatureManagerFound = ETrue; + } + User::LeaveIfError( iFs.Connect() ); // create drm @@ -509,7 +518,12 @@ // session must be deleted last (and constructed first) delete iSession; - + + if ( iFeatureManagerFound ) + { + FeatureManager::UnInitializeLib(); + } + #ifdef _DRM_TESTING TRAP( r, WriteL( _L8( "~CRoHandler-End" ) ) ); #endif @@ -656,26 +670,36 @@ { case EOma1Ro: { - HandleRightsMessageL(); + if ( iFeatureManagerFound && FeatureManager::FeatureSupported( + KFeatureIdFfOmadrm1FullSupport ) ) + { + HandleRightsMessageL(); + } break; } #ifdef __DRM_OMA2 case EOma2RoapTrigger: case EOma2RoapTriggerRoAcquisition: - { - HandleRoapTriggerL(); - break; - } + if ( iFeatureManagerFound && FeatureManager::FeatureSupported( + KFeatureIdFfOmadrm2Support ) ) + { + HandleRoapTriggerL(); + } + break; case EOma2RoapTriggerMetering: - { - HandleMeteringTriggerSilentlyL(); + if ( iFeatureManagerFound && FeatureManager::FeatureSupported( + KFeatureIdFfOmadrm2Support ) ) + { + HandleMeteringTriggerSilentlyL(); + } break; - } case EOma2RoapPdu: - { - HandleRoapPduL(); + if ( iFeatureManagerFound && FeatureManager::FeatureSupported( + KFeatureIdFfOmadrm2Support ) ) + { + HandleRoapPduL(); + } break; - } #endif default: { @@ -779,7 +803,7 @@ ptrToMz.Append( KMarker ); ptrToMz.Append( uri16 ); //add uri16 ptrToMz.Append( KMarker ); - + CleanupStack::PopAndDestroy( number ); CleanupStack::PopAndDestroy( buffer ); CleanupStack::PushL( messageContent ); @@ -1186,10 +1210,10 @@ TRAP( r, WriteL( _L8( "ReadFromResourceLC-fs.Connect" ) ) ); #endif CleanupClosePushL( fs ); - CRoHandlerStringResourceReader* reader( - new ( ELeave ) CRoHandlerStringResourceReader( fs, aFile ) ); + CStringResourceReader* reader( + new ( ELeave ) CStringResourceReader( fs, aFile ) ); #ifdef _DRM_TESTING - TRAP( r, WriteL( _L8( "ReadFromResourceLC-CRoHandlerStringResourceReader" ) ) ); + TRAP( r, WriteL( _L8( "ReadFromResourceLC-CStringResourceReader" ) ) ); #endif CleanupStack::PushL( reader ); aBuf = reader->AllocReadResourceL( aIndex ); @@ -1218,7 +1242,28 @@ // First line in Inbox: TMsvEntry::iDetails. if ( !flag || srvAddress.Length() == 0 ) { - result = KEmpty().AllocL(); + // Read from resource. + +#ifndef RD_MULTIPLE_DRIVE + + TFileName resourceFile( KDriveZ ); + +#else //RD_MULTIPLE_DRIVE + + _LIT( KDriveRoot, "%c:" ); + TInt driveNumber( -1 ); + TChar driveLetter; + DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRom, driveNumber ); + iFs.DriveToChar( driveNumber, driveLetter ); + + TFileName resourceFile; + resourceFile.Format( KDriveRoot, (TUint )driveLetter ); + +#endif + + resourceFile.Append( KDC_MTM_RESOURCE_DIR ); + resourceFile.Append( KPushMtmRes ); + ReadFromResourceLC( resourceFile, R_PUSHMISC_UNK_SENDER, result ); } else { @@ -1378,22 +1423,30 @@ switch( iMsgType ) { case EOma1Ro: - { - HandleRightsMessageL(); + { + if ( iFeatureManagerFound && FeatureManager::FeatureSupported( + KFeatureIdFfOmadrm1FullSupport ) ) + { + HandleRightsMessageL(); + } break; } #ifdef __DRM_OMA2 case EOma2RoapTrigger: case EOma2RoapTriggerRoAcquisition: - { - HandleRoapTriggerL(); + if ( iFeatureManagerFound && FeatureManager::FeatureSupported( + KFeatureIdFfOmadrm2Support ) ) + { + HandleRoapTriggerL(); + } break; - } case EOma2RoapPdu: - { - HandleRoapPduL(); + if ( iFeatureManagerFound && FeatureManager::FeatureSupported( + KFeatureIdFfOmadrm2Support ) ) + { + HandleRoapPduL(); + } break; - } #endif default: {