--- 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 <centralrepository.h> // link against centralrepository.lib
#include <msvuids.h>
#include <msvids.h>
+#include <downloadmgrclient.h>
#ifdef RD_MULTIPLE_DRIVE
#include <driveinfo.h>
@@ -38,14 +39,16 @@
#include <uri16.h> // TUriParser16
#include <data_caging_path_literals.hrh> // KDC_MTM_RESOURCE_DIR
#include <uriutils.h> // UriUtils and so on
+#include <PushMtmUi.rsg> // for R_PUSHMISC_UNK_SENDER
#include <RoHandler.rsg> // for R_QTN_DRM_MGR_INB_TITLE
#include <sysutil.h> // Disk space checking
+#include <featmgr.h> // 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:
{