28 #include <RoapEngBase.h> |
28 #include <RoapEngBase.h> |
29 #include <RoapObserver.h> |
29 #include <RoapObserver.h> |
30 #include <centralrepository.h> // link against centralrepository.lib |
30 #include <centralrepository.h> // link against centralrepository.lib |
31 #include <msvuids.h> |
31 #include <msvuids.h> |
32 #include <msvids.h> |
32 #include <msvids.h> |
33 #include <downloadmgrclient.h> |
|
34 |
33 |
35 #ifdef RD_MULTIPLE_DRIVE |
34 #ifdef RD_MULTIPLE_DRIVE |
36 #include <driveinfo.h> |
35 #include <driveinfo.h> |
37 #endif |
36 #endif |
38 |
37 |
39 #include <uri16.h> // TUriParser16 |
38 #include <uri16.h> // TUriParser16 |
40 #include <data_caging_path_literals.hrh> // KDC_MTM_RESOURCE_DIR |
39 #include <data_caging_path_literals.hrh> // KDC_MTM_RESOURCE_DIR |
41 #include <uriutils.h> // UriUtils and so on |
40 #include <uriutils.h> // UriUtils and so on |
42 #include <PushMtmUi.rsg> // for R_PUSHMISC_UNK_SENDER |
|
43 #include <RoHandler.rsg> // for R_QTN_DRM_MGR_INB_TITLE |
41 #include <RoHandler.rsg> // for R_QTN_DRM_MGR_INB_TITLE |
44 #include <sysutil.h> // Disk space checking |
42 #include <sysutil.h> // Disk space checking |
45 #include <featmgr.h> // Feature Manager |
|
46 |
43 |
47 #include "CRoHandler.h" |
44 #include "CRoHandler.h" |
48 #include "RoMtmCli.h" // for CRightsObjectMtmClient |
45 #include "RoMtmCli.h" // for CRightsObjectMtmClient |
49 #include "RoapSyncWrapper.h" |
46 #include "RoapSyncWrapper.h" |
50 |
47 |
51 #include "StringResourceReader.h" |
48 #include "RoHandlerStringResourceReader.h" |
52 #include "rohandlerdmgrwrapper.h" |
49 #include "rohandlerdmgrwrapper.h" |
53 #include "rohandlerinternalcrkeys.h" |
50 #include "rohandlerinternalcrkeys.h" |
54 |
51 |
55 #ifdef _DEBUG |
52 #ifdef _DEBUG |
56 #define DRMDEBUGLIT( a, b ) _LIT( a, b ) |
53 #define DRMDEBUGLIT( a, b ) _LIT( a, b ) |
99 #else |
96 #else |
100 _LIT( KDriveZ, "z:" ); |
97 _LIT( KDriveZ, "z:" ); |
101 _LIT( KRoHandlerTriggerFilePath, "c:\\system\\data\\" ); |
98 _LIT( KRoHandlerTriggerFilePath, "c:\\system\\data\\" ); |
102 #endif |
99 #endif |
103 |
100 |
104 _LIT( KPushMtmRes, "PushMtmUi.rsc" ); |
|
105 _LIT( KRoHandlerResourceFile, "RoHandler.rsc" ); |
101 _LIT( KRoHandlerResourceFile, "RoHandler.rsc" ); |
106 |
102 |
107 _LIT8( KRoapTriggerElement, "roapTrigger" ); |
103 _LIT8( KRoapTriggerElement, "roapTrigger" ); |
108 _LIT8( KWbxmlRoapTriggerElement, "\x03\x13j" ); |
104 _LIT8( KWbxmlRoapTriggerElement, "\x03\x13j" ); |
109 _LIT8( KRoapTriggerRoAcquisition, "roAcquisition" ); |
105 _LIT8( KRoapTriggerRoAcquisition, "roAcquisition" ); |
113 _LIT( KFalse, "false" ); |
109 _LIT( KFalse, "false" ); |
114 _LIT( KZero, "0" ); |
110 _LIT( KZero, "0" ); |
115 |
111 |
116 _LIT( KRoAcquisitionPrefix, "ROA:" ); |
112 _LIT( KRoAcquisitionPrefix, "ROA:" ); |
117 _LIT( KTriggerPrefix, "TRI:" ); |
113 _LIT( KTriggerPrefix, "TRI:" ); |
|
114 |
|
115 _LIT( KEmpty, " " ); |
118 |
116 |
119 // MODULE DATA STRUCTURES |
117 // MODULE DATA STRUCTURES |
120 |
118 |
121 // Helper class for deleting file with given filename on cleanupstack |
119 // Helper class for deleting file with given filename on cleanupstack |
122 // Note does not own its members |
120 // Note does not own its members |
397 ( |
395 ( |
398 //None. |
396 //None. |
399 ) |
397 ) |
400 : CPushHandlerBase(), |
398 : CPushHandlerBase(), |
401 iFirstTime( ETrue ), iPushMsg( NULL ), iMsvId( NULL ), |
399 iFirstTime( ETrue ), iPushMsg( NULL ), iMsvId( NULL ), |
402 iPutRightsToInbox( ETrue ), iFeatureManagerFound( EFalse ) |
400 iPutRightsToInbox( ETrue ) |
403 { |
401 { |
404 } |
402 } |
405 |
403 |
406 /* |
404 /* |
407 ----------------------------------------------------------------------------- |
405 ----------------------------------------------------------------------------- |
427 TRAPD( r, WriteL( _L8( "ConstructL" ) ) ); |
425 TRAPD( r, WriteL( _L8( "ConstructL" ) ) ); |
428 #endif |
426 #endif |
429 |
427 |
430 CRepository* repository( NULL ); |
428 CRepository* repository( NULL ); |
431 TInt err( KErrNone ); |
429 TInt err( KErrNone ); |
432 TInt ret( KErrNone ); |
430 |
433 |
|
434 TRAP( ret, FeatureManager::InitializeLibL() ); |
|
435 if ( !ret ) |
|
436 { |
|
437 iFeatureManagerFound = ETrue; |
|
438 } |
|
439 |
|
440 User::LeaveIfError( iFs.Connect() ); |
431 User::LeaveIfError( iFs.Connect() ); |
441 |
432 |
442 // create drm |
433 // create drm |
443 iMessageParser = CDRMMessageParser::NewL(); |
434 iMessageParser = CDRMMessageParser::NewL(); |
444 |
435 |
668 iMsgType = CheckMessageTypeL(); |
654 iMsgType = CheckMessageTypeL(); |
669 switch( iMsgType ) |
655 switch( iMsgType ) |
670 { |
656 { |
671 case EOma1Ro: |
657 case EOma1Ro: |
672 { |
658 { |
673 if ( iFeatureManagerFound && FeatureManager::FeatureSupported( |
659 HandleRightsMessageL(); |
674 KFeatureIdFfOmadrm1FullSupport ) ) |
|
675 { |
|
676 HandleRightsMessageL(); |
|
677 } |
|
678 break; |
660 break; |
679 } |
661 } |
680 #ifdef __DRM_OMA2 |
662 #ifdef __DRM_OMA2 |
681 case EOma2RoapTrigger: |
663 case EOma2RoapTrigger: |
682 case EOma2RoapTriggerRoAcquisition: |
664 case EOma2RoapTriggerRoAcquisition: |
683 if ( iFeatureManagerFound && FeatureManager::FeatureSupported( |
665 { |
684 KFeatureIdFfOmadrm2Support ) ) |
666 HandleRoapTriggerL(); |
685 { |
667 break; |
686 HandleRoapTriggerL(); |
668 } |
687 } |
|
688 break; |
|
689 case EOma2RoapTriggerMetering: |
669 case EOma2RoapTriggerMetering: |
690 if ( iFeatureManagerFound && FeatureManager::FeatureSupported( |
670 { |
691 KFeatureIdFfOmadrm2Support ) ) |
671 HandleMeteringTriggerSilentlyL(); |
692 { |
|
693 HandleMeteringTriggerSilentlyL(); |
|
694 } |
|
695 break; |
672 break; |
|
673 } |
696 case EOma2RoapPdu: |
674 case EOma2RoapPdu: |
697 if ( iFeatureManagerFound && FeatureManager::FeatureSupported( |
675 { |
698 KFeatureIdFfOmadrm2Support ) ) |
676 HandleRoapPduL(); |
699 { |
|
700 HandleRoapPduL(); |
|
701 } |
|
702 break; |
677 break; |
|
678 } |
703 #endif |
679 #endif |
704 default: |
680 default: |
705 { |
681 { |
706 User::Leave( KErrNotSupported ); |
682 User::Leave( KErrNotSupported ); |
707 } |
683 } |
801 ptrToMz.Append( KMarker ); |
777 ptrToMz.Append( KMarker ); |
802 ptrToMz.Append( ptr ); // add localID |
778 ptrToMz.Append( ptr ); // add localID |
803 ptrToMz.Append( KMarker ); |
779 ptrToMz.Append( KMarker ); |
804 ptrToMz.Append( uri16 ); //add uri16 |
780 ptrToMz.Append( uri16 ); //add uri16 |
805 ptrToMz.Append( KMarker ); |
781 ptrToMz.Append( KMarker ); |
806 |
782 |
807 CleanupStack::PopAndDestroy( number ); |
783 CleanupStack::PopAndDestroy( number ); |
808 CleanupStack::PopAndDestroy( buffer ); |
784 CleanupStack::PopAndDestroy( buffer ); |
809 CleanupStack::PushL( messageContent ); |
785 CleanupStack::PushL( messageContent ); |
810 |
786 |
811 // create empty sms |
787 // create empty sms |
1208 User::LeaveIfError( fs.Connect() ); |
1184 User::LeaveIfError( fs.Connect() ); |
1209 #ifdef _DRM_TESTING |
1185 #ifdef _DRM_TESTING |
1210 TRAP( r, WriteL( _L8( "ReadFromResourceLC-fs.Connect" ) ) ); |
1186 TRAP( r, WriteL( _L8( "ReadFromResourceLC-fs.Connect" ) ) ); |
1211 #endif |
1187 #endif |
1212 CleanupClosePushL( fs ); |
1188 CleanupClosePushL( fs ); |
1213 CStringResourceReader* reader( |
1189 CRoHandlerStringResourceReader* reader( |
1214 new ( ELeave ) CStringResourceReader( fs, aFile ) ); |
1190 new ( ELeave ) CRoHandlerStringResourceReader( fs, aFile ) ); |
1215 #ifdef _DRM_TESTING |
1191 #ifdef _DRM_TESTING |
1216 TRAP( r, WriteL( _L8( "ReadFromResourceLC-CStringResourceReader" ) ) ); |
1192 TRAP( r, WriteL( _L8( "ReadFromResourceLC-CRoHandlerStringResourceReader" ) ) ); |
1217 #endif |
1193 #endif |
1218 CleanupStack::PushL( reader ); |
1194 CleanupStack::PushL( reader ); |
1219 aBuf = reader->AllocReadResourceL( aIndex ); |
1195 aBuf = reader->AllocReadResourceL( aIndex ); |
1220 #ifdef _DRM_TESTING |
1196 #ifdef _DRM_TESTING |
1221 TRAP( r, WriteL( _L8( "ReadFromResourceLC-AllocReadResourceL" ) ) ); |
1197 TRAP( r, WriteL( _L8( "ReadFromResourceLC-AllocReadResourceL" ) ) ); |
1240 HBufC* result( NULL ); |
1216 HBufC* result( NULL ); |
1241 |
1217 |
1242 // First line in Inbox: TMsvEntry::iDetails. |
1218 // First line in Inbox: TMsvEntry::iDetails. |
1243 if ( !flag || srvAddress.Length() == 0 ) |
1219 if ( !flag || srvAddress.Length() == 0 ) |
1244 { |
1220 { |
1245 // Read from resource. |
1221 result = KEmpty().AllocL(); |
1246 |
|
1247 #ifndef RD_MULTIPLE_DRIVE |
|
1248 |
|
1249 TFileName resourceFile( KDriveZ ); |
|
1250 |
|
1251 #else //RD_MULTIPLE_DRIVE |
|
1252 |
|
1253 _LIT( KDriveRoot, "%c:" ); |
|
1254 TInt driveNumber( -1 ); |
|
1255 TChar driveLetter; |
|
1256 DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRom, driveNumber ); |
|
1257 iFs.DriveToChar( driveNumber, driveLetter ); |
|
1258 |
|
1259 TFileName resourceFile; |
|
1260 resourceFile.Format( KDriveRoot, (TUint )driveLetter ); |
|
1261 |
|
1262 #endif |
|
1263 |
|
1264 resourceFile.Append( KDC_MTM_RESOURCE_DIR ); |
|
1265 resourceFile.Append( KPushMtmRes ); |
|
1266 ReadFromResourceLC( resourceFile, R_PUSHMISC_UNK_SENDER, result ); |
|
1267 } |
1222 } |
1268 else |
1223 else |
1269 { |
1224 { |
1270 // Convert the "From" information to the format required by the UI |
1225 // Convert the "From" information to the format required by the UI |
1271 // spec and then decode it. |
1226 // spec and then decode it. |
1421 } |
1376 } |
1422 |
1377 |
1423 switch( iMsgType ) |
1378 switch( iMsgType ) |
1424 { |
1379 { |
1425 case EOma1Ro: |
1380 case EOma1Ro: |
1426 { |
1381 { |
1427 if ( iFeatureManagerFound && FeatureManager::FeatureSupported( |
1382 HandleRightsMessageL(); |
1428 KFeatureIdFfOmadrm1FullSupport ) ) |
|
1429 { |
|
1430 HandleRightsMessageL(); |
|
1431 } |
|
1432 break; |
1383 break; |
1433 } |
1384 } |
1434 #ifdef __DRM_OMA2 |
1385 #ifdef __DRM_OMA2 |
1435 case EOma2RoapTrigger: |
1386 case EOma2RoapTrigger: |
1436 case EOma2RoapTriggerRoAcquisition: |
1387 case EOma2RoapTriggerRoAcquisition: |
1437 if ( iFeatureManagerFound && FeatureManager::FeatureSupported( |
1388 { |
1438 KFeatureIdFfOmadrm2Support ) ) |
1389 HandleRoapTriggerL(); |
1439 { |
|
1440 HandleRoapTriggerL(); |
|
1441 } |
|
1442 break; |
1390 break; |
|
1391 } |
1443 case EOma2RoapPdu: |
1392 case EOma2RoapPdu: |
1444 if ( iFeatureManagerFound && FeatureManager::FeatureSupported( |
1393 { |
1445 KFeatureIdFfOmadrm2Support ) ) |
1394 HandleRoapPduL(); |
1446 { |
|
1447 HandleRoapPduL(); |
|
1448 } |
|
1449 break; |
1395 break; |
|
1396 } |
1450 #endif |
1397 #endif |
1451 default: |
1398 default: |
1452 { |
1399 { |
1453 User::Leave( KErrNotSupported ); |
1400 User::Leave( KErrNotSupported ); |
1454 } |
1401 } |