omadrm/drmengine/drmclock/Src/DRMClockSession.cpp
changeset 23 493788a4a8a4
parent 0 95b198f216e5
equal deleted inserted replaced
5:79d62d1d7957 23:493788a4a8a4
    17 
    17 
    18 
    18 
    19 // INCLUDE FILES
    19 // INCLUDE FILES
    20 #include <s32file.h>
    20 #include <s32file.h>
    21 #include <f32file.h>
    21 #include <f32file.h>
    22 #include "drmcommon.h"
    22 #include "DRMCommon.h"
    23 #include "DRMClockSession.h"
    23 #include "DRMClockSession.h"
    24 #include "drmclockclientserver.h"
    24 #include "drmclockclientserver.h"
    25 #include "DRMClockServer.h"
    25 #include "DRMClockServer.h"
    26 #include <DrmTypes.h>
    26 #include <DRMTypes.h>
    27 
    27 
    28 #include <e32test.h>
    28 #include <e32test.h>
    29 
    29 
    30 #include "drmlog.h"
    30 #include "drmlog.h"
    31 
    31 
    32 // NAMESPACES
    32 // NAMESPACES
    33 using namespace DRMClock;
    33 using namespace DRMClock;
    34 
    34 
    35 // EXTERNAL DATA STRUCTURES
    35 // EXTERNAL DATA STRUCTURES
    36 // EXTERNAL FUNCTION PROTOTYPES  
    36 // EXTERNAL FUNCTION PROTOTYPES
    37 // CONSTANTS
    37 // CONSTANTS
    38 
    38 
    39 
    39 
    40 // MACROS
    40 // MACROS
    41 
    41 
    56 // -----------------------------------------------------------------------------
    56 // -----------------------------------------------------------------------------
    57 // CDRMClockSession::NewL
    57 // CDRMClockSession::NewL
    58 // Two-phased constructor.
    58 // Two-phased constructor.
    59 // -----------------------------------------------------------------------------
    59 // -----------------------------------------------------------------------------
    60 //
    60 //
    61 CDRMClockSession* CDRMClockSession::NewL( CDRMClock* aClock) 
    61 CDRMClockSession* CDRMClockSession::NewL( CDRMClock* aClock)
    62     {
    62     {
    63     CDRMClockSession* self = new( ELeave ) CDRMClockSession( aClock );
    63     CDRMClockSession* self = new( ELeave ) CDRMClockSession( aClock );
    64     CleanupStack::PushL( self );
    64     CleanupStack::PushL( self );
    65     self->ConstructL();
    65     self->ConstructL();
    66     CleanupStack::Pop(); // self
    66     CleanupStack::Pop(); // self
    86 //
    86 //
    87 void CDRMClockSession::ServiceL( const RMessage2& aMessage )
    87 void CDRMClockSession::ServiceL( const RMessage2& aMessage )
    88     {
    88     {
    89     DRMLOG(  _L( "CDRMClockSession::ServiceL called" ) );
    89     DRMLOG(  _L( "CDRMClockSession::ServiceL called" ) );
    90     // Trap possible errors...
    90     // Trap possible errors...
    91     
    91 
    92     TRAPD( error, DispatchL( aMessage ) );
    92     TRAPD( error, DispatchL( aMessage ) );
    93     
    93 
    94     if ( error )
    94     if ( error )
    95         {
    95         {
    96         DRMLOG2(  _L( "CDRMClockSession::DispatcL threw an exception %d" ), error );
    96         DRMLOG2(  _L( "CDRMClockSession::DispatcL threw an exception %d" ), error );
    97         // ...and complete the request in case of an error.
    97         // ...and complete the request in case of an error.
    98         aMessage.Complete( error );
    98         aMessage.Complete( error );
   106 // -----------------------------------------------------------------------------
   106 // -----------------------------------------------------------------------------
   107 // CDRMClockSession::CDRMClockSession
   107 // CDRMClockSession::CDRMClockSession
   108 // Default constructor.
   108 // Default constructor.
   109 // -----------------------------------------------------------------------------
   109 // -----------------------------------------------------------------------------
   110 //
   110 //
   111 CDRMClockSession::CDRMClockSession( CDRMClock* aClock ) : 
   111 CDRMClockSession::CDRMClockSession( CDRMClock* aClock ) :
   112     // Base class' constructor is called first.
   112     // Base class' constructor is called first.
   113     iDRMClock( aClock )
   113     iDRMClock( aClock )
   114     {
   114     {
   115     // Nothing.
   115     // Nothing.
   116     }
   116     }
   117     
   117 
   118 // -----------------------------------------------------------------------------
   118 // -----------------------------------------------------------------------------
   119 // CDRMClockSession::ConstructL
   119 // CDRMClockSession::ConstructL
   120 // Second phase constructor. Initializes the log tool in DRM internal testing.
   120 // Second phase constructor. Initializes the log tool in DRM internal testing.
   121 // -----------------------------------------------------------------------------
   121 // -----------------------------------------------------------------------------
   122 //
   122 //
   124     {
   124     {
   125     }
   125     }
   126 
   126 
   127 // -----------------------------------------------------------------------------
   127 // -----------------------------------------------------------------------------
   128 // CDRMClockSession::DispatchL
   128 // CDRMClockSession::DispatchL
   129 // Checks which command the user requested, and forwards the request to 
   129 // Checks which command the user requested, and forwards the request to
   130 // appropriate private method. This helps to keep the code more readable.
   130 // appropriate private method. This helps to keep the code more readable.
   131 // -----------------------------------------------------------------------------
   131 // -----------------------------------------------------------------------------
   132 //
   132 //
   133 void CDRMClockSession::DispatchL( const RMessage2& aMessage ) 
   133 void CDRMClockSession::DispatchL( const RMessage2& aMessage )
   134     {
   134     {
   135     switch ( aMessage.Function() )
   135     switch ( aMessage.Function() )
   136         {
   136         {
   137         case EGetDRMTime:
   137         case EGetDRMTime:
   138             GetDRMTimeL( aMessage );
   138             GetDRMTimeL( aMessage );
   154     {
   154     {
   155     DRMLOG(  _L( "CDRMClockSession::GetDRMTimeL" ) );
   155     DRMLOG(  _L( "CDRMClockSession::GetDRMTimeL" ) );
   156     TTime drmTime;
   156     TTime drmTime;
   157     TInt timeZone;
   157     TInt timeZone;
   158     DRMClock::ESecurityLevel level;
   158     DRMClock::ESecurityLevel level;
   159     
   159 
   160     iDRMClock->GetSecureTime( drmTime, timeZone, level );
   160     iDRMClock->GetSecureTime( drmTime, timeZone, level );
   161 
   161 
   162     TPckg<TTime> package(drmTime);
   162     TPckg<TTime> package(drmTime);
   163     TPckg<TInt> package2(timeZone);    
   163     TPckg<TInt> package2(timeZone);
   164     TPckg<DRMClock::ESecurityLevel> package3(level);
   164     TPckg<DRMClock::ESecurityLevel> package3(level);
   165     
   165 
   166     IPCWRITE0L( package );
   166     IPCWRITE0L( package );
   167     IPCWRITE1L( package2 );
   167     IPCWRITE1L( package2 );
   168     IPCWRITE2L( package3 );
   168     IPCWRITE2L( package3 );
   169 
   169 
   170     aMessage.Complete( KErrNone );
   170     aMessage.Complete( KErrNone );
   176 //
   176 //
   177 void CDRMClockSession::UpdateDRMTimeL( const RMessage2& aMessage )
   177 void CDRMClockSession::UpdateDRMTimeL( const RMessage2& aMessage )
   178     {
   178     {
   179     DRMLOG(  _L( "CDRMClockSession::UpdateDRMTimeL" ) );
   179     DRMLOG(  _L( "CDRMClockSession::UpdateDRMTimeL" ) );
   180     TInt error = KErrNone;
   180     TInt error = KErrNone;
   181     TTime drmTime;    
   181     TTime drmTime;
   182     TInt timeZone;
   182     TInt timeZone;
   183     TPckg<TTime> package( drmTime );
   183     TPckg<TTime> package( drmTime );
   184     TPckg<TInt> package2( timeZone );
   184     TPckg<TInt> package2( timeZone );
   185     TInt r = KErrAccessDenied;
   185     TInt r = KErrAccessDenied;
   186     
   186 
   187     // Add a check for the vendor id
   187     // Add a check for the vendor id
   188 	_LIT_SECURITY_POLICY_V0(vidCheck, VID_DEFAULT); // Check Default VID    
   188     _LIT_SECURITY_POLICY_V0(vidCheck, VID_DEFAULT); // Check Default VID
   189 	_LIT_SECURITY_POLICY_C1(drmCheck, ECapabilityDRM);
   189     _LIT_SECURITY_POLICY_C1(drmCheck, ECapabilityDRM);
   190     RThread client;
   190     RThread client;
   191     
   191 
   192     aMessage.ClientL( client );    
   192     aMessage.ClientL( client );
   193     
   193 
   194     if( vidCheck.CheckPolicy( client ) || drmCheck().CheckPolicy(client) )
   194     if( vidCheck.CheckPolicy( client ) || drmCheck().CheckPolicy(client) )
   195         {
   195         {
   196         r = KErrNone;
   196         r = KErrNone;
   197         }
   197         }
   198 
   198 
   199     client.Close();
   199     client.Close();
   200     User::LeaveIfError( r );
   200     User::LeaveIfError( r );
   201     
   201 
   202     IPCREAD0L( package );
   202     IPCREAD0L( package );
   203     IPCREAD1L( package2 );
   203     IPCREAD1L( package2 );
   204 
   204 
   205     TRAP( error, iDRMClock->ResetSecureTimeL( drmTime, timeZone ) );
   205     TRAP( error, iDRMClock->ResetSecureTimeL( drmTime, timeZone ) );
   206 
   206