Revision: 201015
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 03 May 2010 12:46:34 +0300
changeset 29 3bdc3b853094
parent 23 493788a4a8a4
child 31 908beac81e0a
Revision: 201015 Kit: 201018
commondrm/drmrightsmanagerui/inc/DRMRightsMgrAppUi.h
commondrm/drmrightsmanagerui/src/DRMRightsMgrAppUi.cpp
commondrm/drmutility/group/DrmUtilityDmgrWrapper.mmp
commondrm/drmutility/inc/DrmUiHandlingImpl.h
commondrm/drmutility/inc/DrmUtilityDmgrWrapper.h
commondrm/drmutility/inc/drmutilityconnection.h
commondrm/drmutility/src/DrmUiHandlingImpl.cpp
commondrm/drmutility/src/DrmUtilityDmgrWrapper.cpp
commondrm/drmutility/src/DrmUtilityDownloadManager.cpp
commondrm/drmutility/src/drmutilityconnection.cpp
commondrm/drmutility/src/drmutilitywmdrmwrapper.cpp
commondrm/drmutility/traces/OstTraceDefinitions.h
drm_plat/drm_common_api/tsrc/data/mmc/DRM/content.dcf
drm_plat/drm_rights_api/tsrc/data/c/content.dcf
drm_plat/group/bld.inf
drm_plat/wmdrm_ota_access_api/group/bld.inf
drm_plat/wmdrm_ota_access_api/inc/wmdrmotaaccess.h
drm_plat/wmdrm_ota_access_api/inc/wmdrmotaaccessecominterface.h
drm_plat/wmdrm_ota_access_api/inc/wmdrmotaaccessecominterface.inl
drm_plat/wmdrm_ota_access_api/wmdrm_ota_access_api.metaxml
drm_pub/oma_drm_caf_agent_api/tsrc/bc/DRM_CAF/data/content.dcf
inc/DrmUtilityDmgrWrapper.h
inc/buffercontainers.h
inc/buffercontainers.inl
omadrm/drmengine/drmclock/Src/DRMClockClient.cpp
omadrm/drmengine/group/CryptoPrep.flm
omadrm/drmengine/group/ROAPHandler.mmp
omadrm/drmengine/keystorage/src/DrmStdKeyStorage.cpp
omadrm/drmengine/roap/inc/RoapConnection.h
omadrm/drmengine/roap/src/RoapConnection.cpp
omadrm/drmengine/roap/src/RoapEng.cpp
omadrm/drmengine/roap/src/RoapHttpHandler.cpp
omadrm/drmengine/roapstorage/inc/RoapStorageSession.h
omadrm/drmengine/server/inc/DRMActiveDeletion.h
omadrm/drmengine/server/inc/DRMPointerArray.h
omadrm/drmengine/server/src/DRMActiveDeletion.cpp
omadrm/drmengine/server/src/DRMRightsClientStub.cpp
omadrm/drmengine/server/src/DRMServerStarter.cpp
omadrm/drmengine/server/src/drmcrypto.c
omadrm/drmhelper/BMARM/DRMHELPERDMGRWRAPPERU.DEF
omadrm/drmhelper/BMARM/DRMHELPERU.DEF
omadrm/drmhelper/BWINSCW/drmhelperdmgrwrapperU.DEF
omadrm/drmhelper/EABI/drmhelperdmgrwrapperU.DEF
omadrm/drmhelper/group/bld.inf
omadrm/drmhelper/group/drmhelperdmgrwrapper.mmp
omadrm/drmhelper/group/drmhelperdmgrwrapper.rss
omadrm/drmhelper/inc/DRMHelperDMgrWrapper.h
omadrm/drmhelper/inc/DRMHelperDMgrWrapperLogger.h
omadrm/drmhelper/inc/DRMHelperDownloadManager.h
omadrm/drmhelper/src/DRMHelperClient.cpp
omadrm/drmhelper/src/DRMHelperDMgrWrapper.cpp
omadrm/drmhelper/src/DRMHelperDownloadManager.cpp
omadrm/drmhelper/src/drmhelper.cpp
omadrm/drmlicensemanager/src/LMSecurity.cpp
omadrm/drmlicensemanager/src/LMSecurityDecrypt.cpp
omadrm/drmlicensemanager/src/LMSecurityEncrypt.cpp
omadrm/drmplugins/drmrohandler/inc/rohandlerdmgrwrapper.h
omadrm/drmplugins/drmrohandler/src/rohandlerdmgrwrapper.cpp
omadrm/drmplugins/drmudtmodule/bwinscw/DrmUdtModuleU.DEF
omadrm/drmplugins/drmudtmodule/eabi/DrmUdtModuleU.DEF
omadrm/drmplugins/drmudtmodule/group/DrmUdtModule.mmp
omadrm/drmplugins/drmudtmodule/inc/DrmUdtConn.h
omadrm/drmplugins/drmudtmodule/src/DrmUdtConn.cpp
omadrm/drmplugins/drmudtmodule/src/DrmUdtHandler.cpp
omadrm/group/bld.inf
omadrm/rom/DRM5.iby
omadrm/rom/DRMHelper.iby
omadrm/rom/DRMHelperResources.iby
wmdrm/camese/wmdrmdlaapp/src/wmdrmdlabrowsercontainer.cpp
wmdrm/camese/wmdrmdladefaulthttpplugin/src/wmdrmdladefaulthttpmanager.cpp
wmdrm/group/bld.inf
wmdrm/wmdrmengine/wmdrmotaaccess/bwins/wmdrmotaaccessu.def
wmdrm/wmdrmengine/wmdrmotaaccess/eabi/wmdrmotaaccessu.def
wmdrm/wmdrmengine/wmdrmotaaccess/group/bld.inf
wmdrm/wmdrmengine/wmdrmotaaccess/group/wmdrmotaaccess.mmp
wmdrm/wmdrmengine/wmdrmotaaccess/rom/wmdrmotaaccess.iby
wmdrm/wmdrmengine/wmdrmotaaccess/src/wmdrmotaaccess.cpp
--- a/commondrm/drmrightsmanagerui/inc/DRMRightsMgrAppUi.h	Fri Apr 16 15:14:55 2010 +0300
+++ b/commondrm/drmrightsmanagerui/inc/DRMRightsMgrAppUi.h	Mon May 03 12:46:34 2010 +0300
@@ -25,7 +25,9 @@
 #include <AknProgressDialog.h>
 #include <apparc.h>
 #include <DRMRightsClient.h>
+#include <drmconstraint.h>
 
+#include "drmclockclient.h"
 #include "DrmViewItems.h"
 
 #include "DRMRightsManager.hrh"
@@ -173,9 +175,42 @@
         void CheckIndividualConstraint( const TDesC8& aContentURI,
                                         TBool& aIndividualConstraint,
                                         TBool& aUsageAllowed );
-
+        
+        /**
+        * Checks the composition of best rights to be shown in the details view.
+        * Leaves with KErrNotFound if no rights are found.
+        * @param aContentURI            ContentURI for object to be opened when
+        *                               application is launched
+        * @param aRights                Pointer to instance of CDRMRights for
+        *                               storing the rights                                                            
+        */                               
+        void FindBestCompositionRightsL( const TDesC8& aContentURI,
+                                         CDRMRights*& aRights ); 
 
-
+        /**
+        * Compares the permissions in the the permission list one by one and 
+        * constraint by constraint and stores the best constraint to the given 
+        * composition permission. The function should be called only for a list of 
+        * valid permissions. Puts the composition permission to cleanup stack. 
+        * @param aCompositionPermission Permission which includes a composition of best 
+        *                               constraints (or full rights information) from 
+        *                               the given permission list.                                 
+        * @param aPermissionList        List which includes permissions to be checked
+        *                               constraint by constraint in order to create the
+        *                               best composition permission.                                                                                          
+        */                  
+        void CheckBetterPermissionsAndStoreCompositionLC( 
+                CDRMPermission*& aCompositionPermission,
+                RPointerArray<CDRMPermission>& aList );
+        /**
+        * Compares two permissions, and returns ETrue if aNewOne is more suitable
+        * for the usage. Assumes both are valid, i.e. not expired.
+        * @param aNewOne                New constraint to be compared to the old one                             
+        * @param aOldOne                Old constraint to be compared to the new one 
+        */
+        TBool BetterPermission( const CDRMConstraint& aNewOne,
+                                const CDRMConstraint& aOldOne );
+                                                    
     public: // New functions
         /**
         * @param aContentURI    ContentURI for object to be opened when
@@ -390,7 +425,10 @@
         // update the details view when returning to details view from another
         // application
         TBool iForegroundHasBeenActive;
-
+        
+        // Drm clock client
+        RDRMClockClient iClockClient;
+        
     };
 
 // Include inline functions
--- a/commondrm/drmrightsmanagerui/src/DRMRightsMgrAppUi.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/commondrm/drmrightsmanagerui/src/DRMRightsMgrAppUi.cpp	Mon May 03 12:46:34 2010 +0300
@@ -58,7 +58,70 @@
 _LIT8( Kflk, "flk:" );
 _LIT8( Kldf, "ldf:" );
 
-// ================= MEMBER FUNCTIONS =======================
+// ============================= LOCAL FUNCTIONS ===============================
+
+// ----------------------------------------------------------------------------
+// DoResetAndDestroy
+// Does RPointerArray< >->ResetAndDestroy() for the given array aPtr.
+// ----------------------------------------------------------------------------
+//
+LOCAL_C void DoResetAndDestroyPermission( TAny* aPtr )
+    {
+    ( reinterpret_cast< RPointerArray< CDRMPermission >* >( aPtr ) )->
+        ResetAndDestroy();
+    }
+
+// ----------------------------------------------------------------------------
+// PrepareRightsObjectL
+// Creates rights object based on the given permission.
+// ----------------------------------------------------------------------------
+//
+LOCAL_C void PrepareRightsObjectL( CDRMRights*& aRights,
+                                   CDRMPermission* aPermission )
+    {
+    CDRMAsset* asset( NULL );
+    
+    if ( !aPermission )
+        {
+        User::Leave( KErrArgument );
+        }
+    
+    aRights = CDRMRights::NewL();
+    CleanupStack::PushL( aRights );
+    aRights->SetPermissionL( *aPermission );
+                         
+    asset = CDRMAsset::NewLC();
+    aRights->SetAssetL( *asset );
+    CleanupStack::PopAndDestroy( asset );
+    CleanupStack::Pop( aRights );
+                         
+    // Content URI and Local Id are not set
+    }
+
+// ----------------------------------------------------------------------------
+// EndTime
+// Calculate the true end time: pick the smaller one of aTime1 & aTime2,
+// but ignore Time::NullTTime anyhow.
+// ----------------------------------------------------------------------------
+//
+LOCAL_C TTime EndTime( const TTime& aTime1, const TTime& aTime2 )
+    {
+    TTime nullTime = Time::NullTTime();
+
+    if ( aTime1 == nullTime )
+        {
+        return aTime2;
+        }
+
+    if ( aTime2 == nullTime )
+        {
+        return aTime1;
+        }
+
+    return Min( aTime1, aTime2 );
+    }
+       
+// ================= MEMBER FUNCTIONS ==========================================
 //
 // -----------------------------------------------------------------------------
 // CDRMRightsMgrAppUi::CDRMRightsMgrAppUi
@@ -92,6 +155,7 @@
         EAknEnableMSK | EAknSingleClickCompatible  );
 
     User::LeaveIfError( iRightsClient.Connect() );
+    User::LeaveIfError( iClockClient.Connect() );
     iDRMCommon = DRMCommon::NewL();
     if ( !iDRMCommon )
         {
@@ -129,6 +193,8 @@
     delete iDRMCommon;
 
     iRightsClient.Close();
+    
+    iClockClient.Close();
 
     if ( iStartEmbedded && iDoorObserver )
         {
@@ -557,8 +623,8 @@
     // from the background to the foreground.
     if ( iForegroundHasBeenActive && iContentURI )
         {
-        StartOnlyForDetailsL( iContentURI->Des(), iLocalID,
-            iStartEmbedded, iDrmScheme );
+        TRAP_IGNORE( StartOnlyForDetailsL( iContentURI->Des(), iLocalID, 
+            iStartEmbedded, iDrmScheme ) );
         }
     }
 
@@ -739,7 +805,10 @@
     {
     TBool listable( EFalse ), sendable( EFalse );
     TBool individualConstraint( EFalse ), usageAllowed( EFalse );
+    TInt err( KErrNone );
+    
 
+    aStatus = KErrNone;
     CDcfRep* dcfRep = CDcfRep::NewL();
     CleanupStack::PushL( dcfRep );
 
@@ -798,23 +867,32 @@
         {
         aStatus = iDRMCommon->GetSingleRightsObject( aContentURI,
             aLocalID, aRights );
-        if ( aStatus )
-            {
-            aRights = NULL;
-            }
+        CheckIndividualConstraint( aContentURI, individualConstraint, usageAllowed );
+        SetSelectedIndividualConstraint( individualConstraint );
+        SetSelectedUsageAllowed( usageAllowed );
         }
     else
         {
-        aStatus = iDRMCommon->GetActiveRights( aContentURI, 0, aRights );
+        SetSelectedIndividualConstraint( EFalse );
+        SetSelectedUsageAllowed( ETrue );
+        
+        // Get active rights if available
+        err = iDRMCommon->GetActiveRights( aContentURI, 0, aRights );
+        
+        if ( err < 0 )
+            {
+            // Find out the best composition of rights that should be shown in the
+            // details view. Checks also individual constraint.
+            TRAP( aStatus, FindBestCompositionRightsL( aContentURI, aRights ) );
+            }
+        }
+    
+    if ( aStatus )
+        {
+        aRights = NULL;
         }
 
-    CheckIndividualConstraint( aContentURI, individualConstraint, usageAllowed );
-    SetSelectedIndividualConstraint( individualConstraint );
-    SetSelectedUsageAllowed( usageAllowed );
-
     CleanupStack::PopAndDestroy( dcfRep );
-
-    // Do not show the note, show license information in the details view.
     }
 
 // ---------------------------------------------------------
@@ -880,23 +958,18 @@
                                                     TBool& aIndividualConstraint,
                                                     TBool& aUsageAllowed )
     {
+    
+    TTime time;
+    RPointerArray<HBufC8> individuals;
+    
     RPointerArray<CDRMRights>* uriList = NULL;
     TInt r = KErrNone;
     TUint32 retval(0);
+    TInt timeZone(0);
     DRMClock::ESecurityLevel secLevel = DRMClock::KInsecure;
     CDRMRightsConstraints* constraint = NULL;
-    RDRMClockClient client;
-    RDRMRightsClient rclient;
-    TTime time;
-    RPointerArray<HBufC8> individuals;
-
-    r = client.Connect();
-    if ( r == KErrNone )
-        {
-        TTime time;
-        TInt timeZone(0);
-        client.GetSecureTime(time, timeZone, secLevel);
-        }
+    
+    iClockClient.GetSecureTime(time, timeZone, secLevel);
 
     r = iDRMCommon->GetDetailedContentRights(aContentURI, uriList);
     if ( r )
@@ -909,19 +982,13 @@
     if ( !uriList || !uriList->Count() )
         {
         // no rights found
-        client.Close();
         delete uriList;
         uriList = NULL;
         }
     else
         {
         // supported IMSI information is provided by rights client
-        r = rclient.Connect();
-        if( r == KErrNone)
-            {
-            TRAP( r, r = rclient.GetSupportedIndividualsL( individuals ) );
-            rclient.Close();
-            }
+        TRAP( r, r = iRightsClient.GetSupportedIndividualsL( individuals ) );
 
         // Check only the first entry in the list. This is to be expanded to check
         // all the entries in the list.
@@ -959,7 +1026,6 @@
             constraint = NULL;
             }
 
-        client.Close();
         uriList->ResetAndDestroy();
 
         delete uriList;
@@ -969,4 +1035,498 @@
         }
     }
 
+// ---------------------------------------------------------
+// CDRMRightsMgrAppUi::FindBestCompositionRightsL
+// ---------------------------------------------------------
+//
+void CDRMRightsMgrAppUi::FindBestCompositionRightsL( const TDesC8& aContentURI,
+                                                     CDRMRights*& aRights )
+    {
+    TInt i, j, k;
+    RPointerArray<CDRMPermission> permissionList;
+    RPointerArray<CDRMPermission> permissionTempList;
+    RPointerArray<HBufC8> parentUidList;
+    RPointerArray<HBufC8> individuals;
+    
+    TInt count( 0 );
+    TInt status( KErrNone );
+    TTime time( Time::NullTTime() );
+    TInt err( KErrNone );
+    TUint32 reason( EConstraintNone );
+    TBool individualConstraintFound( EFalse );
+    
+    // Composition object of best rights to be shown in the 
+    // details view
+    CDRMPermission* perm( NULL ); 
+    
+    TCleanupItem cleanupPerm( DoResetAndDestroyPermission, &permissionList );
+    CleanupStack::PushL( cleanupPerm );
+    
+    TCleanupItem cleanupPerm2( DoResetAndDestroyPermission, 
+            &permissionTempList );
+    CleanupStack::PushL( cleanupPerm2 );
+    
+    CleanupClosePushL( parentUidList );
+    
+    // First get list of child ROs with the given Content URI
+    iRightsClient.GetDBEntriesL( aContentURI, permissionList );            
+    
+    if ( permissionList.Count() > 0 )
+        {        
+        // Check the UIDs of the possible parent rights objects
+        // and store the found ones to another pointer array for evaluation
+        for ( i = 0; i < permissionList.Count(); i++ )
+            {
+            if ( permissionList[i]->iParentUID )
+                {
+                if ( i == 0 )
+                    {
+                    // No need to check if the parent UID is a duplicate
+                    parentUidList.Append( permissionList[i]->iParentUID );
+                    }
+                else 
+                    {
+                    // Check parent UID list whether we have already stored the
+                    // UID or not
+                    for( j = 0; j < parentUidList.Count(); j++ )
+                        {
+                        if ( parentUidList[j]->Des().Compare(
+                                permissionList[i]->iParentUID->Des() ) != 0 )
+                            {
+                            parentUidList.Append( 
+                                    permissionList[i]->iParentUID );
+                            break;
+                            }
+                        }
+                    }
+                }
+            }
+        
+        // Get the list of parent rights objects based on the parent UID 
+        // and store the pointers from temporary array to the main list 
+        for ( j = 0; j < parentUidList.Count(); j++ )
+            {
+            // We do not want to leave if nothing is found from the database
+            TRAP( status, iRightsClient.GetDBEntriesL( parentUidList[j]->Des(),
+                    permissionTempList ) );
+            
+            if ( status )
+                {
+                continue;
+                }
+                    
+            for ( k = 0; k < permissionTempList.Count(); k++ ) 
+                {
+                // Store the pointer to the main list of permissions
+                permissionList.Append( permissionTempList[k] );
+                }    
+                    
+            // Close the temporary pointer array so that the referenced 
+            // objects of it will not be deleted in the next round of the 
+            // loop because the method for getting database entries deletes 
+            // also the objects (by calling reset and destroy to the given 
+            // pointer array) by default.
+            permissionTempList.Close();
+            }
+        
+        parentUidList.Close();
+        time.HomeTime();
+        
+        // supported IMSI information is provided by rights client
+        TRAP( err, err = iRightsClient.GetSupportedIndividualsL( individuals ) );
+        
+        // Filter expired parent and child rights from the list
+        // Index defines the index of the list to be operated (next)
+        for ( count = permissionList.Count() ; count > 0; count-- )
+            {
+            if ( permissionList[count - 1]->Expired( time ) ) 
+                {
+                permissionList.Remove( count - 1 );
+                }
+            else if ( !( permissionList[count - 1]->Valid( 
+                    time, individuals, reason ) ) )
+                {
+                if ( reason & EConstraintIndividual )
+                    {
+                    individualConstraintFound = ETrue;
+                    permissionList.Remove( count - 1 );
+                    }
+                }
+            }        
+        
+        individuals.ResetAndDestroy();
+        individuals.Close();
+        
+        if ( permissionList.Count() == 0 )
+            {
+            if ( individualConstraintFound )
+                {
+                SetSelectedIndividualConstraint( ETrue );
+                SetSelectedUsageAllowed( EFalse );
+                }
+            User::Leave( KErrNotFound );
+            }
+        else if ( permissionList.Count() == 1  )
+            {
+            // Keep this permission because it is the only valid (left)
+            PrepareRightsObjectL( aRights, permissionList[0] );
+            }
+        else if ( permissionList.Count() > 1 )
+            {    
+            // Compare constraints from successive items of the 
+            // permission list and update the composition permission 
+            // accordingly. 
+            CheckBetterPermissionsAndStoreCompositionLC( perm, permissionList );
+                
+            // Prepare the rights object with the composition permission
+            PrepareRightsObjectL( aRights, perm );
+            CleanupStack::PopAndDestroy( perm );   
+            }     
+        }
+        
+        CleanupStack::PopAndDestroy( 3, &permissionList ); // cleanupPerm, 
+                                                           // cleanupPerm2, 
+                                                           // parentUidList
+    }
+
+// -------------------------------------------------------------------
+// CDRMRightsMgrAppUi::CheckBetterPermissionsAndStoreCompositionLC
+// -------------------------------------------------------------------
+//
+void CDRMRightsMgrAppUi::CheckBetterPermissionsAndStoreCompositionLC( 
+            CDRMPermission*& aCompositionPermission,
+            RPointerArray<CDRMPermission>& aList )
+    {       
+    
+    TBool firstBetter( EFalse );
+    TUint i, j;
+    
+    if ( aList.Count() <= 0 )
+        {
+        User::Leave( KErrArgument );
+        }
+    
+    // create permission if needed and set the first item
+    // in the permission list as the reference permission.
+    if ( !aCompositionPermission )
+        {
+        aCompositionPermission = CDRMPermission::NewL();
+        }
+         
+    CleanupStack::PushL( aCompositionPermission );
+    aCompositionPermission->DuplicateL( *aList[0] );
+    
+    // The double loop goes through the permissions and associated 
+    // constraints beginning from the second entry in the permission list. 
+    for ( i = 1; i < aList.Count(); i++ )
+        {
+        // Enumeration for TIntent from Content Access Framework used
+        for ( j = EPlay; j < EPause; j++ )
+            { 
+            switch ( j )
+                {
+                case EPlay:
+                    {
+                    // The constraint from the permission in the list
+                    // is set to composition permission if it is better
+                    // than the "old" best or reference permission.
+                    firstBetter = BetterPermission( *aList[i]->iPlay,
+                            *aCompositionPermission->iPlay );
+                    if ( firstBetter )
+                        {
+                        aCompositionPermission->iPlay->DuplicateL( 
+                                *aList[i]->iPlay );
+                        }
+                    break;
+                    }
+                case EView:
+                    {
+                    firstBetter = BetterPermission( *aList[i]->iDisplay, 
+                            *aCompositionPermission->iDisplay );
+                    if ( firstBetter )
+                        {
+                        aCompositionPermission->iDisplay->DuplicateL( 
+                                *aList[i]->iDisplay );
+                        }
+                    break;
+                    }
+                case EExecute:
+                    {
+                    firstBetter = BetterPermission( *aList[i]->iExecute,
+                            *aCompositionPermission->iExecute );
+                    if ( firstBetter )
+                        {
+                        aCompositionPermission->iExecute->DuplicateL(
+                                *aList[i]->iExecute );
+                        }
+                    break;
+                    }
+                case EPrint:
+                    {
+                    firstBetter = BetterPermission( *aList[i]->iPrint,
+                            *aCompositionPermission->iPrint );
+                    if ( firstBetter )
+                        {
+                        aCompositionPermission->iPrint->DuplicateL( 
+                                *aList[i]->iPrint );
+                        }
+                    break;
+                    }
+                default:
+                    {
+                    User::Leave( KErrArgument );
+                    }
+                }
+            }
+        }        
+    }                     
+
+// -----------------------------------------------------------------------------
+// CDrmRightsMgrAppUi::BetterPermission
+// -----------------------------------------------------------------------------
+TBool CDRMRightsMgrAppUi::BetterPermission( const CDRMConstraint& aNewOne,
+                                            const CDRMConstraint& aOldOne )
+        {
+        // Check Order:
+        // 1. Full
+        // 2. Start End, closest end time first
+        // 3. Interval, shortest first
+        // 4. Accumulated, shortest first
+        // 5. Timed Counter, least counters first, longest time first
+        // 6. Counter, least counters first or the first one found
+
+        const TTime nullTime = Time::NullTTime();
+        TTime oldTime = nullTime;
+        TTime newTime = nullTime;
+        TTime oldTimePos = nullTime;
+        TTime newTimePos = nullTime;
+        TTime trustedTime = nullTime;
+        
+        // 1. Full
+        // If the old or new one is the ultimate one, don't bother to
+        // check anything else.
+        if ( aOldOne.iActiveConstraints == EConstraintNone )
+            {
+            return EFalse;
+            }
+
+        if ( aNewOne.iActiveConstraints == EConstraintNone )
+            {
+            return ETrue;
+            }
+
+        // 2. Start & End Time
+        // Choose the one with the closest end time first
+        // All RO's to this check are already checked to be valid
+        // ActiveIntervals Also hit this spot
+        
+        trustedTime.HomeTime();
+            
+        // First get the start and end times from the intervals if they are active or inactive:
+        if ( aOldOne.iActiveConstraints & EConstraintInterval )
+            {
+            if( aOldOne.iIntervalStart == nullTime )
+                {
+                oldTimePos = trustedTime;
+                oldTimePos += TTimeIntervalSeconds( aOldOne.iInterval );
+                }
+            else
+                {
+                oldTime = aOldOne.iIntervalStart;
+                oldTime += TTimeIntervalSeconds( aOldOne.iInterval );
+                }
+            }
+
+        if( aNewOne.iActiveConstraints & EConstraintInterval )
+            {
+            if( aNewOne.iIntervalStart == nullTime )
+                {
+                newTimePos = trustedTime;
+                newTimePos += TTimeIntervalSeconds( aNewOne.iInterval );
+                }
+            else
+                {
+                newTime = aNewOne.iIntervalStart;
+                newTime += TTimeIntervalSeconds( aNewOne.iInterval );
+                }
+            }
+
+        if ( aOldOne.iActiveConstraints & EConstraintEndTime || oldTime != nullTime )
+            {
+            oldTime = EndTime( oldTime, aOldOne.iEndTime );
+
+            if ( aNewOne.iActiveConstraints & EConstraintEndTime || newTime != nullTime )
+                {
+                newTime = EndTime( newTime, aNewOne.iEndTime );
+
+                if( newTime != oldTime )
+                    {
+                    return ( newTime < oldTime );
+                    }
+                }
+            else
+                {
+                return EFalse;
+                }
+            }
+        else if ( aNewOne.iActiveConstraints & EConstraintEndTime || newTime != nullTime )
+            {
+            return ETrue;
+            }
+
+        // 3. Inactive Intervals:
+        // Choose the one with the interval ending first:
+        // Continue here if the no SE's exist or SE's are the same
+        if( aOldOne.iActiveConstraints & EConstraintInterval )
+            {
+            if( aNewOne.iActiveConstraints & EConstraintInterval )
+                {
+                oldTimePos = EndTime( oldTime, oldTimePos );
+                newTimePos = EndTime( newTime, newTimePos );
+
+                if( oldTimePos != newTimePos )
+                    {
+                    return ( newTimePos < oldTimePos );
+                    }
+                }
+            else
+                {
+                if( aNewOne.iActiveConstraints & EConstraintAccumulated ||
+                    aNewOne.iActiveConstraints & EConstraintTimedCounter ||
+                    aNewOne.iActiveConstraints & EConstraintCounter )
+                    {
+                    return EFalse;
+                    }
+                else
+                    {
+                    return ETrue;
+                    }
+                }
+            }
+        else if( aNewOne.iActiveConstraints & EConstraintInterval )
+            {
+            if( aOldOne.iActiveConstraints & EConstraintAccumulated ||
+                aOldOne.iActiveConstraints & EConstraintTimedCounter ||
+                aOldOne.iActiveConstraints & EConstraintCounter )
+                {
+                return ETrue;
+                }
+            else
+                {
+                return EFalse;
+                }
+            }
+
+        // 4. Accumulated:
+        // Choose the shortest accumulated first
+        // Continue here if SE's or intervals do not exist or they are the same
+        if( aOldOne.iActiveConstraints & EConstraintAccumulated )
+            {
+            if( aNewOne.iActiveConstraints & EConstraintAccumulated )
+                {
+                if( aNewOne.iAccumulatedTime != aOldOne.iAccumulatedTime )
+                    {
+                    return ( aNewOne.iAccumulatedTime < aOldOne.iAccumulatedTime );
+                    }
+                }
+            else
+                {
+                if( aNewOne.iActiveConstraints & EConstraintTimedCounter ||
+                    aNewOne.iActiveConstraints & EConstraintCounter )
+                    {
+                    return EFalse;
+                    }
+                else
+                    {
+                    return ETrue;
+                    }
+                }
+            }
+        else if( aNewOne.iActiveConstraints & EConstraintAccumulated )
+            {
+            if( aOldOne.iActiveConstraints & EConstraintTimedCounter ||
+                aOldOne.iActiveConstraints & EConstraintCounter )
+                {
+                return ETrue;
+                }
+            else
+                {
+                return EFalse;
+                }
+            }
+
+
+        // 5. Timed Counter
+        // Choose the one with least counters first. If there is an equal number of counters
+        // left, use the one with the longest time
+        // Continue here if SE's or intervals or accumulateds do not exist or they are the same
+        if( aOldOne.iActiveConstraints & EConstraintTimedCounter )
+            {
+            if( aNewOne.iActiveConstraints & EConstraintTimedCounter )
+                {
+                if( aNewOne.iTimedCounter == aOldOne.iTimedCounter )
+                    {
+                    if( aNewOne.iTimedInterval != aOldOne.iTimedInterval )
+                        {
+                        return ( aNewOne.iTimedInterval < aOldOne.iTimedInterval );
+                        }
+                    else
+                        {
+                        if( aNewOne.iActiveConstraints & EConstraintCounter )
+                            {
+
+                            }
+                        }
+                    }
+                else
+                    {
+                    return ( aNewOne.iTimedCounter < aOldOne.iTimedCounter );
+                    }
+
+                }
+            else
+                {
+                if( aNewOne.iActiveConstraints & EConstraintCounter )
+                    {
+                    return EFalse;
+                    }
+                else
+                    {
+                    return ETrue;
+                    }
+                }
+            }
+        else if( aNewOne.iActiveConstraints & EConstraintTimedCounter )
+            {
+            if( aOldOne.iActiveConstraints & EConstraintCounter )
+                {
+                return ETrue;
+                }
+            else
+                {
+                return EFalse;
+                }
+            }
+
+        // 6. Counter
+        // Choose the one with least counters:
+        // if they are the same choose the first one.
+        // Continue here if SE's or intervals or accumulateds or timed counters
+        // do not exist or they are the same
+        if( aOldOne.iActiveConstraints & EConstraintCounter )
+            {
+            if( aNewOne.iActiveConstraints & EConstraintCounter )
+                {
+                return ( aNewOne.iCounter < aOldOne.iCounter );
+                }
+            else
+                {
+                return ETrue;
+                }
+            }
+
+        // If all else fails use the old one:
+        return EFalse;
+        }
+
 // End of File
--- a/commondrm/drmutility/group/DrmUtilityDmgrWrapper.mmp	Fri Apr 16 15:14:55 2010 +0300
+++ b/commondrm/drmutility/group/DrmUtilityDmgrWrapper.mmp	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -28,6 +28,7 @@
 
 #ifdef __DRM
 SOURCE         ../src/DrmUtilityDmgrWrapper.cpp
+SOURCE         ../src/drmutilityconnection.cpp
 #endif
 
 START RESOURCE ../data/DrmUtilityDmgrWrapper.rss
@@ -39,13 +40,14 @@
 USERINCLUDE    ../inc
 USERINCLUDE    ../../../omadrm/drmengine/roap/inc
 USERINCLUDE    ../../../inc   // ADo level inc dir
-
+USERINCLUDE    ../traces      // OST definitions 
 // Default system include paths for middleware layer modules.
-APP_LAYER_SYSTEMINCLUDE
+MW_LAYER_SYSTEMINCLUDE
 
 LIBRARY        euser.lib
-LIBRARY        centralrepository.lib
-LIBRARY        cmmanager.lib
+LIBRARY        cmmanager.lib // RCmManager CCmApplicationSettingsUi
+LIBRARY        esock.lib // RConnection, RSocketServ
+LIBRARY        extendedconnpref.lib netmeta.lib // TExtendedConnPref
 LIBRARY        downloadmgr.lib
 LIBRARY        roaphandler.lib
 LIBRARY        efsrv.lib
--- a/commondrm/drmutility/inc/DrmUiHandlingImpl.h	Fri Apr 16 15:14:55 2010 +0300
+++ b/commondrm/drmutility/inc/DrmUiHandlingImpl.h	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -778,16 +778,6 @@
     TBool SilentRightsAllowedL();
 
     /**
-    * Check if browser AP has been defined
-    */
-    TBool BrowserAPDefinedL();
-
-    /**
-    * Returns the number of access points on phone
-    */
-    TInt APCountL();
-
-    /**
     * Handles exit from service
     * from MAknServerAppExitObserver
     */
--- a/commondrm/drmutility/inc/DrmUtilityDmgrWrapper.h	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,176 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-
-#ifndef CDRMUTILITYDMGRWRAPPER_H
-#define CDRMUTILITYDMGRWRAPPER_H
-
-#include <DownloadMgrClient.h>
-#include <AknProgressDialog.h>
-#include <eikprogi.h>
-
-/**
-* Environment gate function
-*
-* @since S60 v5.0
-* @return pointer to DMgr handler
-*/
-IMPORT_C TAny* GateFunctionDMgr();
-
-class MDrmUtilityDmgrWrapper
-    {
-
-public:
-    virtual void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl ) = 0;
-
-    virtual void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl,
-        CCoeEnv& aCoeEnv ) = 0;
-
-    virtual HBufC8* GetErrorUrlL() = 0;
-
-    };
-
-/**
-*  Class for downloading ROAP triggers
-*
-*  @lib DrmUtilityDmgrWrapper
-*  @since S60 v5.0
-*/
-class CDrmUtilityDmgrWrapper : CBase,
-    public MHttpDownloadMgrObserver,
-    public MDrmUtilityDmgrWrapper,
-    public MProgressDialogCallback
-    {
-
-public:
-
-    static CDrmUtilityDmgrWrapper* NewL();
-
-    static CDrmUtilityDmgrWrapper* NewLC();
-
-    virtual ~CDrmUtilityDmgrWrapper();
-
-    /**
-    * Download a ROAP trigger from URL and handle it
-    *
-    * @param aUrl  URL of ROAP trigger
-    */
-    void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl );
-
-    void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl,
-        CCoeEnv& aCoeEnv );
-
-    HBufC8* GetErrorUrlL();
-
-
-    // from base class MHttpDownloadMgrObserver
-
-    /**
-    * From MHttpDownloadMgrObserver.
-    * Handle download manager events
-    *
-    * @param aDownload the download
-    * @param aEvent the event
-    */
-    void HandleDMgrEventL( RHttpDownload& aDownload, THttpDownloadEvent aEvent );
-
-public: // Call back methods of MAknProgressDialogCallback
-
-    /**
-    * ProgressDialog call back method.
-    * Get's called when a dialog is dismissed.
-    *
-    * @param aButtonId ID of the button pressed
-    */
-    void DialogDismissedL( TInt aButtonId );
-
-protected:
-
-private:
-
-    /**
-    * C++ default constructor.
-    */
-    CDrmUtilityDmgrWrapper();
-
-    void ConstructL();
-
-    /**
-    * Set the browser default access point to be used
-    */
-    void SetDefaultAccessPointL();
-
-    void DoDownloadAndHandleRoapTriggerL( const HBufC8* aUrl );
-
-    void ShowProgressNoteL( );
-
-    void RemoveProgressNoteL( );
-
-    void HandlePostResponseUrlL();
-
-
-private: // data
-
-    /**
-    * Download manager session
-    */
-    RHttpDownloadMgr iDlMgr;
-
-    /**
-    * Used to make downloads synchronous
-    */
-    CActiveSchedulerWait iWait;
-
-    /**
-    * to store information on download
-    */
-    TBool iDownloadSuccess;
-    TBool iConnectionError;
-
-    TBool iDialogDismissed;
-
-    /**
-    * Progess note dialog and progress info
-    */
-    CAknProgressDialog* iProgressNoteDialog;        // owned
-    CEikProgressInfo* iProgressInfo;                // not owned
-    TInt iCurrentProgressValue;                     // owned
-    TInt iProgressIncrement;                        // owned
-
-    /**
-    * Control environment
-    */
-    CCoeEnv* iCoeEnv;
-
-    /**
-    * Is CoeEnv given
-    */
-    TBool iUseCoeEnv;
-
-    /**
-    * Error url for ROAP temporary error
-    */
-    HBufC8* iErrorUrl;
-
-    /**
-    * Post response url for ROAP prUrl
-    */
-    HBufC8* iPostResponseUrl;
-
-    };
-
-#endif // CDRMUTILITYDMGRWRAPPER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmutility/inc/drmutilityconnection.h	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,191 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef   DRMUTILITYCONNECTION_H
+#define   DRMUTILITYCONNECTION_H
+
+#include <e32base.h> // CActive
+#include <es_sock.h> // RConnection, RSocketServ
+
+namespace DRM
+{
+
+ /**
+  *  Utility class for DRMutility dmgr wrapper  related common functions
+  *
+  *  @since S60 v9.2
+  */
+
+
+// CLASS DECLARATION
+// Class for handling internal connectivity logic
+NONSHARABLE_CLASS( CDrmUtilityConnection ): public CActive
+    {
+public:     // Constructors and destructor.
+
+    /**
+    *
+    */
+    static CDrmUtilityConnection * NewL( const TBool aAllowQueries );
+
+    /**
+    *
+    */
+    static CDrmUtilityConnection * NewLC( const TBool aAllowQueries );
+
+    /**
+    * Destructor
+    */
+    ~CDrmUtilityConnection();
+
+public:     // new methods
+
+    /**
+    *
+    */
+    void ConnectL( TRequestStatus* aStatus );
+
+    /**
+    *
+    */
+    void Close();
+
+    /**
+    *
+    */
+    TBool HasMoreConnectionAttempts();
+
+    /**
+    *
+    */
+    TBool IsConnected( TUint32& aIap );
+
+    /**
+    * Check if default connection has been defined
+    * @see RCmManager::ReadDefConnL
+    */
+    static TBool HasDefaultConnectionL();
+
+    /**
+    * Check if system has access points defined
+    */
+    static TBool HasAccessPointsL();
+
+
+
+private: //enumerations
+    enum TConnectionType
+        {
+        EAttachExisting, //0
+        EUsingDefault, //1
+        EUsingPurposeOperator, // 2
+        EUsingPurposeInternet, // 3
+        EUsingQuery, // 4
+        EFail // 5
+        };
+
+    enum TState
+        {
+        EInit, // 0
+        EConnecting, // 1
+        EConnected, // 2
+        EConnectFailed // 3
+        };
+
+private:    // Constructors and destructor.
+
+    /**
+    * Default constructor (for preventing inheritance)
+    */
+    CDrmUtilityConnection( TBool aAllowQueries );
+
+    /**
+    * Second phase constructor
+    */
+    void ConstructL();
+
+private:  // from CActive
+
+    virtual void DoCancel();
+
+    virtual void RunL();
+
+    virtual TInt RunError( TInt aError );
+
+private:    // new methods
+
+    /**
+    *
+    */
+    void DoClose();
+
+    /**
+    *
+    */
+    void Done();
+
+    /**
+    *
+    */
+    void InitL();
+
+    /**
+    *
+    */
+    void AttachExistingConnectionL();
+
+    /**
+    *
+    */
+    void ConnectUsingDefaultL();
+
+    /**
+    *
+    */
+    void ConnectUsingSnapPurposeL( const TUint32 aPurpose );
+
+    /**
+    *
+    */
+    void ConnectUsingQueryL();
+
+    /**
+    *
+    */
+    void UpdateIapIdL();
+
+    /**
+    *
+    */
+    void CompleteSelf( TInt aError );
+
+    /**
+    *
+    */
+    void CompleteParent( TInt aError );
+
+private:    // data
+
+    RSocketServ iSocketServ;
+    RConnection iConnection;
+    TState iState;
+    TConnectionType iType;
+    TRequestStatus* iParentStatus;
+    const TBool iAllowQueries;
+    TUint32 iIapId;
+    };
+}
+#endif /* DRMUTILITYCONNECTION_H */
--- a/commondrm/drmutility/src/DrmUiHandlingImpl.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/commondrm/drmutility/src/DrmUiHandlingImpl.cpp	Mon May 03 12:46:34 2010 +0300
@@ -17,13 +17,6 @@
 
 // INCLUDE FILES
 
-// connection
-#include <cmconnectionmethod.h>
-#include <cmdestination.h>
-#include <cmconnectionmethoddef.h>
-#include <cmmanager.h>
-#include <sacls.h>
-#include <utf.h>
 
 // publish & subscribe
 #include <e32property.h>
@@ -36,11 +29,6 @@
 #include <avkon.hrh>
 #include <aknenv.h>
 
-// browser
-#ifdef __SERIES60_NATIVE_BROWSER
-#include <BrowserUiSDKCRKeys.h>
-#endif
-
 // caf
 #include <caf/data.h>
 #include <caf/caftypes.h>
@@ -71,6 +59,13 @@
 #include <drmasyncobserver.h>
 #include <drmhandleerrorobserver.h>
 
+//connectivity logic
+#include <cmconnectionmethod.h> // RCmConnectionMethod
+#include <cmdestination.h> // RCmDestination
+#include <cmmanager.h> // RCmManager
+
+
+
 #ifdef _DEBUG
 #include <e32debug.h>
 #endif
@@ -104,14 +99,6 @@
 const TInt KCommandHandleUrlData( 8 );
 const TInt KCommandAvailableUrlsFile( 9 );
 const TInt KCommandAvailableUrlsData( 10 );
-// browser
-#ifndef __SERIES60_NATIVE_BROWSER
-const TUid KCRUidBrowser =
-    {0x10008D39};
-const TUint32 KBrowserDefaultAccessPoint = 0x0000000E;
-const TUint32 KBrowserAccessPointSelectionMode = 0x0000001E;
-const TUint32 KBrowserNGDefaultSnapId = 0x00000053;
-#endif
 
 _LIT( KEncryptedRightsIssuerMatchString, "flk*" );
 
@@ -140,6 +127,67 @@
 
 // ============================= LOCAL FUNCTIONS ===============================
 // -----------------------------------------------------------------------------
+// HasDefaultConnectionL
+// Finds default IAP id
+// @return Etrue: valid AP found
+//         EFalse: valid AP not found
+// @leave system wide error codes
+// -----------------------------------------------------------------------------
+//
+LOCAL_C TBool HasDefaultConnectionL()
+    {
+    TBool hasDefault(EFalse);
+    TCmDefConnValue defConn;
+    RCmManager cmManager;
+    cmManager.OpenLC();
+    cmManager.ReadDefConnL(defConn);
+    if (defConn.iType == ECmDefConnConnectionMethod)
+        {
+        cmManager.GetConnectionMethodInfoIntL(defConn.iId,
+                CMManager::ECmIapId);
+        hasDefault = ETrue;
+        }
+    else if (defConn.iType == ECmDefConnDestination)
+        {
+        RCmDestination dest(cmManager.DestinationL(defConn.iId));
+        CleanupClosePushL(dest);
+
+        if (dest.ConnectionMethodCount() <= 0)
+            {
+            User::Leave(KErrNotFound);
+            }
+
+        RCmConnectionMethod cMeth(dest.ConnectionMethodL(0));
+        CleanupClosePushL(cMeth);
+
+        cMeth.GetIntAttributeL(CMManager::ECmIapId);
+        CleanupStack::PopAndDestroy(&cMeth);
+        CleanupStack::PopAndDestroy(&dest);
+        hasDefault = ETrue;
+        }
+    CleanupStack::PopAndDestroy(&cmManager);
+    return hasDefault;
+    }
+
+// -----------------------------------------------------------------------------
+// HasAccessPointsL
+// -----------------------------------------------------------------------------
+//
+LOCAL_C TBool HasAccessPointsL()
+    {
+    TInt apCount(0);
+    RCmManager cmManager;
+    CleanupClosePushL(cmManager);
+    cmManager.OpenL();
+    RArray<TUint32> aps;
+    CleanupClosePushL(aps);
+    cmManager.ConnectionMethodL(aps, EFalse, EFalse, ETrue);
+    apCount = aps.Count();
+    CleanupStack::PopAndDestroy(2, &cmManager); //aps, cmManager
+    return apCount > 0;
+    }
+
+// -----------------------------------------------------------------------------
 // MapToCallError
 // -----------------------------------------------------------------------------
 //
@@ -154,32 +202,19 @@
     }
 
 // -----------------------------------------------------------------------------
-// IapIdOfDefaultSnapL
-// for trapping purposes only
+// HasDefConn
 // -----------------------------------------------------------------------------
 //
-LOCAL_C TUint32 IapIdOfDefaultSnapL(
-    RCmManager& aCmManager,
-    const TUint32 aDefaultSnap )
+inline TBool HasDefConn()
     {
-    RCmDestination dest( aCmManager.DestinationL( aDefaultSnap ) );
-    CleanupClosePushL( dest );
-    TUint32 iapIdOfDest( 0 );
-
-    if ( dest.ConnectionMethodCount() <= 0 )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) );
-    CleanupClosePushL( cMeth );
-
-    iapIdOfDest = cMeth.GetIntAttributeL( CMManager::ECmIapId );
-    CleanupStack::PopAndDestroy( &cMeth );
-    CleanupStack::PopAndDestroy( &dest );
-    return iapIdOfDest;
+    TBool found( EFalse );
+
+    TRAP_IGNORE( found = HasDefaultConnectionL() );
+
+    return found;
     }
 
+
 // ============================ MEMBER FUNCTIONS ===============================
 
 // -----------------------------------------------------------------------------
@@ -3828,21 +3863,8 @@
             KDRMUtilityDebugPanicCode ) );
     _LIT( KMarker, "\x00" );
 
-    RPointerArray<CDRMPermission> uriList;
     TPtr ptr( NULL, 0 );
-
     TInt localId( 0 );
-    TInt err( KErrNone );
-
-        TRAP( err, iOmaClient.GetDBEntriesL( *aUrl, uriList ) );
-
-    if ( uriList.Count() == 1 )
-        {
-        localId = ( uriList[0] )->iUniqueID;
-        }
-
-    uriList.ResetAndDestroy();
-    uriList.Close();
 
     // MaxInt will fit into 10 characters
     HBufC* localIDBuf( HBufC::NewLC( KIntegerMaxLen ) );
@@ -4034,7 +4056,7 @@
                 R_DRMUTILITY_CONFIRMATION_QUERY );
             }
         }
-    else if ( !BrowserAPDefinedL() )
+    else if ( !(HasDefConn()) )
         {
         buttonCode = EAknSoftkeyNo;
         if ( aShowNotes )
@@ -4047,7 +4069,7 @@
 
     if ( buttonCode == EAknSoftkeyYes || buttonCode == EAknSoftkeyOk )
         {
-        TInt APs( APCountL() );
+        TBool APs( HasAccessPointsL() );
         if ( !APs )
             {
             // No AP defined
@@ -4147,68 +4169,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CDrmUiHandlingImpl::BrowserAPDefinedL
-// -----------------------------------------------------------------------------
-//
-TBool DRM::CDrmUiHandlingImpl::BrowserAPDefinedL()
-    {
-    const TInt KDestinationSelectionMode( 2 );
-    TInt err( KErrNone );
-    TInt ap( 0 );
-    TInt alwaysAsk( 0 );
-    TInt defaultSnap( 0 );
-
-    CRepository* repository( CRepository::NewL( KCRUidBrowser ) );
-    repository->Get( KBrowserDefaultAccessPoint, ap );
-    repository->Get( KBrowserAccessPointSelectionMode, alwaysAsk );
-    repository->Get( KBrowserNGDefaultSnapId, defaultSnap );
-    delete repository;
-    if ( ap <= KErrNotFound && defaultSnap <= KErrNotFound )
-        {
-        alwaysAsk = ETrue;
-        }
-    else
-        {
-        RCmManager cmManager;
-        CleanupClosePushL( cmManager );
-        cmManager.OpenL();
-        if ( !alwaysAsk )
-            {
-                TRAP( err, cmManager.GetConnectionMethodInfoIntL(
-                        ap, CMManager::ECmIapId ) );
-            }
-        else if ( alwaysAsk == KDestinationSelectionMode )
-            {
-                TRAP( err, IapIdOfDefaultSnapL( cmManager, defaultSnap ) );
-            }
-        CleanupStack::PopAndDestroy( &cmManager );
-        if ( !err && ( !alwaysAsk || alwaysAsk == KDestinationSelectionMode ) )
-            {
-            return ETrue;
-            }
-        }
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// CDrmUiHandlingImpl::APCountL
-// -----------------------------------------------------------------------------
-//
-TInt DRM::CDrmUiHandlingImpl::APCountL()
-    {
-    TInt apCount( 0 );
-    RCmManager cmManager;
-    CleanupClosePushL( cmManager );
-    cmManager.OpenL();
-    RArray<TUint32> aps;
-    CleanupClosePushL( aps );
-    cmManager.ConnectionMethodL( aps, EFalse, EFalse, ETrue );
-    apCount = aps.Count();
-    CleanupStack::PopAndDestroy( 2, &cmManager ); //aps, cmManager
-    return apCount;
-    }
-
-// -----------------------------------------------------------------------------
 // CDrmUiHandlingImpl::HandleServerAppExit
 // -----------------------------------------------------------------------------
 //
--- a/commondrm/drmutility/src/DrmUtilityDmgrWrapper.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/commondrm/drmutility/src/DrmUtilityDmgrWrapper.cpp	Mon May 03 12:46:34 2010 +0300
@@ -1,68 +1,58 @@
 /*
-* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Dynamically loadable wrapper for Download manager
-*
-*/
-
+ * Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  Dynamically loadable wrapper for Download manager
+ *
+ */
 #include <centralrepository.h>
 #include <cdblen.h>
 #include <cmconnectionmethod.h>
 #include <cmdestination.h>
 #include <cmconnectionmethoddef.h>
 #include <cmmanager.h>
-
-#ifdef __SERIES60_NATIVE_BROWSER
-#include <BrowserUiSDKCRKeys.h>
-#endif
-
 #ifdef RD_MULTIPLE_DRIVE
 #include <driveinfo.h>
 #endif
-
 #include <StringLoader.h>
 #include <data_caging_path_literals.hrh>
 
+#include <downloadmgrclient.h> //download manager
+#include <es_enum.h> // tconnectioninfo
+#include <es_enum_partner.h> // TConnectionInfoV2
+#include <es_sock.h> // rconnection rsocket
+#include <AknProgressDialog.h> // avkon classes
+#include <eikprogi.h>
+
 #include <ConeResLoader.h>
 #include <apparc.h>
 #include <DrmUtilityDmgrWrapper.rsg>
 
-#include "RoapEng.h"
+#include <RoapEng.h>
+#include <RoapDef.h>
+#include <RoapObserver.h>
+
 #include "RoapSyncWrapper.h"
 #include "RoapDef.h"
-
 #include "DrmUtilityDmgrWrapper.h"
 #include "DrmUtilityDmgrWrapperLogger.h"
+#include "drmutilityconnection.h"
+#include "buffercontainers.h" //CnameContainer etc.
+#include "cleanupresetanddestroy.h"
+#include "buffercontainers.h"
 
-// DEBUG macros
-#ifdef _DEBUG
-#define DRMDEBUGLIT( a, b ) \
-_LIT( a , b )
-#define DRMDEBUG( a ) \
-RDebug::Print( a )
-#define DRMDEBUG2( a, b ) \
-RDebug::Print( a, b )
-#else
-#define DRMDEBUGLIT( a, b )
-#define DRMDEBUG( a )
-#define DRMDEBUG2( a, b )
-#endif
-
-// CONSTANTS
-#ifndef __SERIES60_NATIVE_BROWSER
-const TUid KCRUidBrowser = {0x10008D39};
-const TUint32 KBrowserDefaultAccessPoint = 0x0000000E;
-const TUint32 KBrowserAccessPointSelectionMode = 0x0000001E;
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "DrmUtilityDmgrWrapperTraces.h"
 #endif
 
 #ifndef RD_MULTIPLE_DRIVE
@@ -72,52 +62,64 @@
 _LIT( KRomDriveFormatter, "%c:" );
 _LIT( KKDrmUtilityTriggerFilePathFormatter, "%c:\\" );
 #endif
-
 _LIT( KCDrmUtilityDmgrWrapperResFileName,"DrmUtilityDmgrWrapper.rsc" );
-const TInt KProgressInfoFinalValue( 200 );
-const TInt KProgressInfoIncrementSmall( 5 );
-const TInt KProgressInfoIncrementMedium( 10 );
-const TInt KProgressInfoIncrementLarge( 30 );
+const TInt KProgressInfoFinalValue(200);
+const TInt KProgressInfoIncrementSmall(5);
+const TInt KProgressInfoIncrementMedium(10);
+const TInt KProgressInfoIncrementLarge(30);
 
 // ======== LOCAL FUNCTIONS ========
 
 // ---------------------------------------------------------------------------
+// ClearIfNotRoapTemporaryError
+// ---------------------------------------------------------------------------
+//
+void ClearIfNotRoapTemporaryError(TInt aError, HBufC8*& aBuffer)
+    {
+    // ROAP ERROR CODES
+    switch (aError)
+        {
+        case KErrRoapGeneral:
+        case KErrRoapServer:
+        case KErrRoapDomainFull:
+        case KErrRoapNotRegistered:
+            break;
+        default:
+            delete aBuffer;
+            aBuffer = NULL;
+            break;
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
 // DeleteHttpDowload
 // ---------------------------------------------------------------------------
 //
-LOCAL_C void DeleteHttpDowload( TAny* aDownload )
+LOCAL_C void DeleteHttpDowload(TAny* aDownload)
     {
-    reinterpret_cast< RHttpDownload* >( aDownload )->Delete();
+    reinterpret_cast<RHttpDownload*> (aDownload)->Delete();
     }
 
+
 // ---------------------------------------------------------------------------
-// IapIdOfDefaultSnapL
-// for trapping purposes only
+// UpdateBufferL
 // ---------------------------------------------------------------------------
 //
-LOCAL_C TUint32 IapIdOfDefaultSnapL(
-    RCmManager& aCmManager,
-    const TUint32 aDefaultSnap )
+template<typename bufType, typename descType>
+LOCAL_C void UpdateBufferL(bufType*& aTargetBuf, const descType& aSourceBuf)
     {
-    RCmDestination dest( aCmManager.DestinationL( aDefaultSnap ) );
-    CleanupClosePushL( dest );
-    TUint32 iapIdOfDest( 0 );
-
-    if ( dest.ConnectionMethodCount() <= 0 )
+    if (aTargetBuf)
         {
-        User::Leave( KErrNotFound );
+        delete aTargetBuf;
+        aTargetBuf = NULL;
         }
-
-    RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) );
-    CleanupClosePushL( cMeth );
-
-    iapIdOfDest = cMeth.GetIntAttributeL( CMManager::ECmIapId );
-    CleanupStack::PopAndDestroy( &cMeth );
-    CleanupStack::PopAndDestroy( &dest );
-    return iapIdOfDest;
+    if (aSourceBuf.Length())
+        {
+        aTargetBuf = aSourceBuf.AllocL();
+        }
     }
 
-
 // ======== MEMBER FUNCTIONS ========
 
 // ---------------------------------------------------------------------------
@@ -125,8 +127,10 @@
 // ---------------------------------------------------------------------------
 //
 CDrmUtilityDmgrWrapper::CDrmUtilityDmgrWrapper() :
-    iUseCoeEnv( EFalse )
+            CActive(CActive::EPriorityStandard),
+            iUseCoeEnv(EFalse), iIapId(0), iState(EInit)
     {
+    CActiveScheduler::Add(this);
     }
 
 // ---------------------------------------------------------------------------
@@ -137,14 +141,15 @@
     {
     CLOG_WRITE( "DMgrWrapper::ConstructL" );
     const TInt KDrmUtilityDmgrWrapperUid = 0x102830FE;
-    iDlMgr.ConnectL( TUid::Uid(KDrmUtilityDmgrWrapperUid), *this, EFalse );
+    iConnection = DRM::CDrmUtilityConnection::NewL(ETrue);
+    iDlMgr.ConnectL(TUid::Uid(KDrmUtilityDmgrWrapperUid), *this, EFalse);
     iProgressInfo = NULL;
     iProgressNoteDialog = NULL;
     iDialogDismissed = ETrue;
+    User::LeaveIfError(iFs.Connect());
+    User::LeaveIfError(iFs.ShareProtected());
     }
 
-
-
 // ---------------------------------------------------------------------------
 // CDrmUtilityDmgrWrapper::NewL
 // ---------------------------------------------------------------------------
@@ -152,12 +157,11 @@
 CDrmUtilityDmgrWrapper* CDrmUtilityDmgrWrapper::NewL()
     {
     CLOG_WRITE( "DMgrWrapper::NewL" );
-    CDrmUtilityDmgrWrapper* self( CDrmUtilityDmgrWrapper::NewLC() );
-    CleanupStack::Pop( self );
+    CDrmUtilityDmgrWrapper* self(CDrmUtilityDmgrWrapper::NewLC());
+    CleanupStack::Pop(self);
     return self;
     }
 
-
 // ---------------------------------------------------------------------------
 // CDrmUtilityDmgrWrapper::NewLC
 // ---------------------------------------------------------------------------
@@ -165,13 +169,12 @@
 CDrmUtilityDmgrWrapper* CDrmUtilityDmgrWrapper::NewLC()
     {
     CLOG_WRITE( "DMgrWrapper::NewLC" );
-    CDrmUtilityDmgrWrapper* self( new( ELeave ) CDrmUtilityDmgrWrapper() );
-    CleanupStack::PushL( self );
+    CDrmUtilityDmgrWrapper* self(new (ELeave) CDrmUtilityDmgrWrapper());
+    CleanupStack::PushL(self);
     self->ConstructL();
     return self;
     }
 
-
 // ---------------------------------------------------------------------------
 // CDrmUtilityDmgrWrapper::~CDrmUtilityDmgrWrapper
 // ---------------------------------------------------------------------------
@@ -179,22 +182,30 @@
 CDrmUtilityDmgrWrapper::~CDrmUtilityDmgrWrapper()
     {
     CLOG_WRITE( "DMgrWrapper destructor" );
-    if ( iProgressNoteDialog )
-       {
-       // deletes the dialog
-       TRAPD( err, iProgressNoteDialog->ProcessFinishedL() );
-       if ( err )
-           {
-           delete iProgressNoteDialog;
-           }
-       iProgressNoteDialog = NULL;
-       }
+    Cancel();
+    if (iProgressNoteDialog)
+        {
+        // deletes the dialog
+        TRAPD( err, iProgressNoteDialog->ProcessFinishedL() );
+        if (err)
+            {
+            delete iProgressNoteDialog;
+            }
+        iProgressNoteDialog = NULL;
+        }
     delete iErrorUrl;
+
     delete iPostResponseUrl;
+    delete iConnection;
+
+    delete iTriggerUrl;
+    delete iTriggerBuf;
+    delete iFileName;
+    delete iRoapEng;
 
 #ifdef _DEBUG
 
-    if ( iDlMgr.Handle() )
+    if (iDlMgr.Handle())
         {
         iDlMgr.Close();
         }
@@ -204,19 +215,9 @@
     iDlMgr.Close();
 
 #endif
-    }
-
 
-// ---------------------------------------------------------------------------
-// CDrmUtilityDmgrWrapper::DownloadAndHandleRoapTriggerL
-// ---------------------------------------------------------------------------
-//
-void CDrmUtilityDmgrWrapper::DownloadAndHandleRoapTriggerL( const HBufC8* aUrl )
-    {
-    CLOG_WRITE( "DMgrWrapper::DownloadAndHandleRoapTriggerL" );
-    iUseCoeEnv = EFalse;
-    DoDownloadAndHandleRoapTriggerL( aUrl );
-    HandlePostResponseUrlL();
+    iFs.Close();
+
     }
 
 
@@ -224,447 +225,429 @@
 // CDrmUtilityDmgrWrapper::DownloadAndHandleRoapTriggerL
 // ---------------------------------------------------------------------------
 //
+void CDrmUtilityDmgrWrapper::DownloadAndHandleRoapTriggerL(const HBufC8* aUrl)
+    {
+    CLOG_WRITE( "DMgrWrapper::DownloadAndHandleRoapTriggerL" );
+    iUseCoeEnv = EFalse;
+    if (iState != EInit || iWait.IsStarted())
+        {
+        User::Leave(KErrNotReady);
+        }
+
+    UpdateBufferL<HBufC8, TDesC8> (iTriggerUrl, *aUrl);
+    CompleteToState(EInit, KErrNone);
+    iWait.Start();
+    }
+
+// ---------------------------------------------------------------------------
+// CDrmUtilityDmgrWrapper::DownloadAndHandleRoapTriggerL
+// ---------------------------------------------------------------------------
+//
 void CDrmUtilityDmgrWrapper::DownloadAndHandleRoapTriggerL(
-    const HBufC8* aUrl, CCoeEnv& aCoeEnv )
+        const HBufC8* aUrl, CCoeEnv& aCoeEnv)
     {
     CLOG_WRITE( "DMgrWrapper::DownloadAndHandleRoapTriggerL" );
     iCoeEnv = &aCoeEnv;
     iUseCoeEnv = ETrue;
-    DoDownloadAndHandleRoapTriggerL( aUrl );
-    HandlePostResponseUrlL();
-    }
-
-
-// ---------------------------------------------------------------------------
-// CDrmUtilityDmgrWrapper::HandlePostResponseUrlL
-// ---------------------------------------------------------------------------
-//
-void CDrmUtilityDmgrWrapper::HandlePostResponseUrlL()
-    {
-    if ( iPostResponseUrl )
+    if (iState != EInit || iWait.IsStarted())
         {
-        DoDownloadAndHandleRoapTriggerL( iPostResponseUrl );
-        // prevent infinite post response fetches.
-        delete iPostResponseUrl;
-        iPostResponseUrl = NULL;
-
-        // Ensure progress note gets deleted.
-        // It remains open if prUrl initialted ROAP operation has PrUrl
-        // (unsupported chained metering report)
-        RemoveProgressNoteL();
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CDrmUtilityDmgrWrapper::DoDownloadAndHandleRoapTriggerL
-// ---------------------------------------------------------------------------
-//
-void CDrmUtilityDmgrWrapper::DoDownloadAndHandleRoapTriggerL(
-    const HBufC8* aUrl )
-    {
-    RFs fs;
-    RFile roapTrigger;
-    HBufC8* triggerBuf( NULL );
-    TBool result( EFalse );
-    TFileName triggerFileName;
-
-    CLOG_WRITE( "DMgrWrapper::DoDownloadAndHandleRoapTriggerL" );
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL( fs );
-    User::LeaveIfError( fs.ShareProtected() );
-
-#ifndef RD_MULTIPLE_DRIVE
-
-    User::LeaveIfError( roapTrigger.Temp(
-            fs, KDrmUtilityTriggerFilePath, triggerFileName, EFileWrite ) );
-
-#else //RD_MULTIPLE_DRIVE
-
-    TInt driveNumber( -1 );
-    TChar driveLetter;
-    DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRam, driveNumber );
-    fs.DriveToChar( driveNumber, driveLetter );
-
-    TFileName utilityTriggerFilePath;
-
-    utilityTriggerFilePath.Format( KKDrmUtilityTriggerFilePathFormatter,
-        (TUint)driveLetter );
-
-    User::LeaveIfError( roapTrigger.Temp(
-            fs, utilityTriggerFilePath, triggerFileName, EFileWrite ) );
-
-#endif
-
-
-    TPtrC8 KNullPtr8( NULL, 0 );
-    RHttpDownload* downloadPtr( iDlMgr.FindDownload( *aUrl, KNullPtr8 ) );
-    if ( downloadPtr )
-        {
-        // Stale download found.
-        // Remove it, and re-create a new download.
-        downloadPtr->Delete();
-        downloadPtr = NULL;
-        }
-
-    // create and start download
-    RHttpDownload& download = iDlMgr.CreateDownloadL( *aUrl, result );
-    // Put download for proper cleanup.
-    TCleanupItem item( DeleteHttpDowload, &download );
-    CleanupStack::PushL( item );
-
-    CleanupClosePushL( roapTrigger );
-
-    if ( !iPostResponseUrl )
-        {
-        // No post response retieval. Note must be created.
-        ShowProgressNoteL();
+        User::Leave(KErrNotReady);
         }
 
-    if ( result )
-        {
-        const TInt KReadBufSize( 512 );
-        TInt triggerFileSize( 0 );
-
-        CLOG_WRITE(
-            "DMgrWrapper::DoDownloadAndHandleRoapTriggerL: download created" );
-        iDownloadSuccess = EFalse;
-        iConnectionError = EFalse;
-
-        SetDefaultAccessPointL();
-
-        User::LeaveIfError( download.SetFileHandleAttribute( roapTrigger ) );
-        User::LeaveIfError(
-            download.SetBoolAttribute( EDlAttrNoContentTypeCheck, ETrue ) );
-        User::LeaveIfError( download.Start() );
-
-        // wait until download is finished
-        iWait.Start();
-
-        // Check success of download
-        CLOG_WRITE(
-            "DMgrWrapper::DoDownloadAndHandleRoapTriggerL: download finished" );
-
-        CleanupStack::Pop( &roapTrigger );
-        roapTrigger.Close();
-        if ( !iDownloadSuccess )
-            {
-            RemoveProgressNoteL();
-            if ( iConnectionError )
-                {
-                User::Leave( KErrCouldNotConnect );
-                }
-            else
-                {
-                User::Leave( KErrGeneral );
-                }
-            }
-        User::LeaveIfError( roapTrigger.Open( fs,
-                                              triggerFileName,
-                                              EFileShareReadersOrWriters ) );
-        CleanupClosePushL( roapTrigger );
-
-        // Get filehandle of ROAP trigger
-        // Read file to buffer
-        User::LeaveIfError( roapTrigger.Size( triggerFileSize ) );
-        triggerBuf = HBufC8::NewLC( triggerFileSize );
-
-        RBuf8 readBuf;
-        readBuf.CleanupClosePushL();
-        readBuf.CreateL( KReadBufSize );
-
-        User::LeaveIfError( roapTrigger.Read( readBuf, KReadBufSize ) );
-        triggerBuf->Des().Copy( readBuf );
-        while ( readBuf.Length() == KReadBufSize )
-            {
-            User::LeaveIfError( roapTrigger.Read( readBuf, KReadBufSize ) );
-            triggerBuf->Des().Append( readBuf );
-            }
-
-        CleanupStack::PopAndDestroy( &readBuf );
-
-        if ( iUseCoeEnv && iProgressInfo )
-            {
-            iProgressInfo->IncrementAndDraw( KProgressInfoIncrementMedium );
-            }
-
-        // And let ROAP handle it...
-        CRoapSyncWrapper* roapWrapper( CRoapSyncWrapper::NewL() );
-        CleanupStack::PushL( roapWrapper );
-        TRAPD( err, roapWrapper->HandleTriggerL( *triggerBuf ) );
-        if ( err )
-            {
-            TInt errorType( 0 );
-            TRAPD( err2,
-                iErrorUrl = roapWrapper->GetErrorUrlL( err, errorType ) );
-            if ( err2 )
-                {
-                RemoveProgressNoteL();
-                delete iErrorUrl;
-                iErrorUrl = NULL;
-                User::Leave( err2 );
-                }
-            else if ( errorType != KErrRoapTemporary )
-                {
-                RemoveProgressNoteL();
-                delete iErrorUrl;
-                iErrorUrl = NULL;
-                User::Leave( err );
-                }
-            else
-                {
-                RemoveProgressNoteL();
-                User::Leave( err );
-                }
-            }
-        if ( iPostResponseUrl )
-            {
-            delete iPostResponseUrl;
-            iPostResponseUrl = NULL;
-            }
-        iPostResponseUrl = roapWrapper->GetPostResponseUrlL();
-        CleanupStack::PopAndDestroy( 2, triggerBuf );
-
-        if ( iUseCoeEnv && iProgressInfo && !iPostResponseUrl )
-            {
-            // No PrUrl found. Progess is complete.
-            iProgressInfo->SetAndDraw( KProgressInfoFinalValue );
-            }
-        }
-
-    // Trick to keep note open long enough during prUrl retrieval
-    if ( !iPostResponseUrl )
-        {
-        RemoveProgressNoteL();
-        }
-    else
-        {
-        if ( iUseCoeEnv && iProgressInfo )
-            {
-            iProgressInfo->IncrementAndDraw( KProgressInfoIncrementMedium );
-            }
-        }
-
-    CleanupStack::PopAndDestroy( &roapTrigger );
-    CleanupStack::PopAndDestroy( &download );
-
-    fs.Delete( triggerFileName );
-    CleanupStack::PopAndDestroy( &fs );
+    UpdateBufferL<HBufC8, TDesC8> (iTriggerUrl, *aUrl);
+    CompleteToState(EInit, KErrNone);
+    iWait.Start();
     }
 
-
-// ---------------------------------------------------------------------------
-// CDrmUtilityDmgrWrapper::SetDefaultAccessPointL
-// ---------------------------------------------------------------------------
-//
-void CDrmUtilityDmgrWrapper::SetDefaultAccessPointL()
-    {
-    const TInt KDestinationSelectionMode( 2 );
-    CRepository* repository( NULL );
-    TInt ap( 0 );
-    TInt alwaysAsk( 0 );
-    TUint32 iapd32( 0 );
-    TInt defaultSnap( 0 );
-    TInt err( KErrNone );
-
-    CLOG_WRITE( "DMgrWrapper::SetDefaultAccessPointL" );
-    DRMDEBUGLIT( KDuiBrApFormat,
-        "CDrmUtilityDmgrWrapper::SetDefaultAccessPointL %d" );
-    DRMDEBUGLIT( KDuiBrApFormat2, " KBrowserDefaultAccessPoint = %d" );
-    DRMDEBUGLIT( KDuiBrApFormat3, " KBrowserAccessPointSelectionMode = %d" );
-    DRMDEBUGLIT( KDuiBrApFormat4, " KBrowserNGDefaultSnapId = %d" );
-
-    repository = CRepository::NewL( KCRUidBrowser );
-    CleanupStack::PushL( repository );
-    repository->Get( KBrowserDefaultAccessPoint, ap );
-    repository->Get( KBrowserAccessPointSelectionMode, alwaysAsk );
-    repository->Get( KBrowserNGDefaultSnapId, defaultSnap );
-    DRMDEBUG2( KDuiBrApFormat(), __LINE__ );
-    DRMDEBUG2( KDuiBrApFormat2(), ap );
-    DRMDEBUG2( KDuiBrApFormat3(), alwaysAsk );
-    DRMDEBUG2( KDuiBrApFormat4(), defaultSnap );
-
-    if ( ap <= KErrNotFound && defaultSnap <= KErrNotFound )
-        {
-        alwaysAsk = ETrue;
-        }
-    else
-        {
-        RCmManager cmManager;
-        cmManager.OpenLC();
-        if ( !alwaysAsk )
-            {
-            TRAP( err, iapd32 = cmManager.GetConnectionMethodInfoIntL(
-                    ap, CMManager::ECmIapId ) );
-            }
-        else if ( alwaysAsk == KDestinationSelectionMode )
-            {
-            TRAP( err, iapd32 =
-                IapIdOfDefaultSnapL( cmManager, defaultSnap ) );
-            }
-        CleanupStack::PopAndDestroy( &cmManager );
-        }
-    if ( !err && ( !alwaysAsk || alwaysAsk == KDestinationSelectionMode ) )
-        {
-        err = iDlMgr.SetIntAttribute( EDlMgrIap, iapd32 );
-        }
-    CleanupStack::PopAndDestroy( repository );
-    }
-
-
 // ---------------------------------------------------------------------------
 // CDrmUtilityDmgrWrapper::GetErrorUrlL
 // ---------------------------------------------------------------------------
 //
 HBufC8* CDrmUtilityDmgrWrapper::GetErrorUrlL()
     {
-    if( iErrorUrl )
+    if (iErrorUrl)
         {
         return iErrorUrl->AllocL();
         }
     return NULL;
     }
 
+// ---------------------------------------------------------------------------
+// CDrmUtilityDmgrWrapper::DoConnectL
+// ---------------------------------------------------------------------------
+//
+void CDrmUtilityDmgrWrapper::DoConnectL(TDownloadState aNextState)
+    {
+    iConnection->ConnectL(&iStatus);
+    if (iUseCoeEnv && iProgressInfo)
+        {
+        iProgressInfo->SetAndDraw(0);
+        }
+    iState = aNextState;
+    SetActive();
+    }
 
+/////
+// ---------------------------------------------------------------------------
+// CDrmUtilityDmgrWrapper::DoDownloadRoapTriggerL
+// ---------------------------------------------------------------------------
+//
+void CDrmUtilityDmgrWrapper::DoDownloadRoapTriggerL(TDownloadState aNextState)
+    {
+    // Fetch name of opend connection to be used as part of DMGR
+    // initialisation
+    TUint32 iapId(0);
+    if (iConnection->IsConnected(iapId))
+        {
+        iDlMgr.SetIntAttribute( EDlMgrIap, iapId );
+        }
+    RFile roapTrigger;
+    TBool result(EFalse);
+    DRM::CFileNameContainer* triggerFileName(NULL);
+
+    // If no Trigger URL then nothing to download. So finish transaction
+    if (!iTriggerUrl || iTriggerUrl->Length() <= 0)
+        {
+        if (iUseCoeEnv && iProgressInfo)
+            {
+            // No PrUrl found. Progess is complete.
+            iProgressInfo->SetAndDraw(KProgressInfoFinalValue);
+            }
+        CompleteToState(EComplete, KErrNone);
+        return;
+        }
+
+    TPtrC8 KNullPtr8(NULL, 0);
+    RHttpDownload* downloadPtr(iDlMgr.FindDownload(*iTriggerUrl, KNullPtr8));
+    if (downloadPtr)
+        {
+        // Stale download found.
+        // Remove it, and re-create a new download.
+        downloadPtr->Delete();
+        downloadPtr = NULL;
+        if (iFileName)
+            {
+            iFs.Delete(*iFileName);
+            }
+        }
+
+    triggerFileName=DRM::CFileNameContainer::NewLC();
+#ifndef RD_MULTIPLE_DRIVE
+
+    User::LeaveIfError( roapTrigger.Temp(
+                    iFs, KDrmUtilityTriggerFilePath, triggerFileName->iBuffer, EFileWrite ) );
+
+#else //RD_MULTIPLE_DRIVE
+    TInt driveNumber(-1);
+    TChar driveLetter;
+    DriveInfo::GetDefaultDrive(DriveInfo::EDefaultRam, driveNumber);
+    iFs.DriveToChar(driveNumber, driveLetter);
+
+    DRM::CFileNameContainer*
+        utilityTriggerFilePath(DRM::CFileNameContainer::NewLC());
+
+    utilityTriggerFilePath->iBuffer.Format(
+            KKDrmUtilityTriggerFilePathFormatter, (TUint) driveLetter);
+
+    User::LeaveIfError(roapTrigger.Temp(iFs, utilityTriggerFilePath->iBuffer,
+            triggerFileName->iBuffer, EFileWrite));
+    CleanupStack::PopAndDestroy( utilityTriggerFilePath );
+    utilityTriggerFilePath=NULL;
+
+#endif
+    UpdateBufferL<HBufC, TFileName> (iFileName, triggerFileName->iBuffer);
+    CleanupStack::PopAndDestroy( triggerFileName );
+    triggerFileName=NULL;
+
+    // create and start download
+    RHttpDownload& download = iDlMgr.CreateDownloadL(*iTriggerUrl, result);
+    // Put download for proper cleanup.
+    TCleanupItem item(DeleteHttpDowload, &download);
+    CleanupStack::PushL(item);
+
+    CleanupClosePushL(roapTrigger);
+
+    if (result)
+        {
+        iDownloadSuccess = EFalse;
+        iConnectionError = EFalse;
+
+        User::LeaveIfError(download.SetFileHandleAttribute(roapTrigger));
+        User::LeaveIfError(download.SetBoolAttribute(
+                EDlAttrNoContentTypeCheck, ETrue));
+        User::LeaveIfError(download.Start());
+
+        // wait until download is finished
+        iState = aNextState;
+        TRequestStatus* status(&iStatus);
+        *status = KRequestPending;
+        SetActive();
+        }
+    CleanupStack::PopAndDestroy(&roapTrigger);
+    CleanupStack::Pop(&download); // Left open for DoSaveRoapTrigger
+    }
+// ---------------------------------------------------------------------------
+// CDrmUtilityDmgrWrapper::DoSaveRoapTriggerL
+// ---------------------------------------------------------------------------
+//
+void CDrmUtilityDmgrWrapper::DoSaveRoapTriggerL(TDownloadState aNextState)
+    {
+    // Check success of download
+
+    // Fetch download created in DoDownloadRoapTriggerL
+    RHttpDownload* download = iDlMgr.FindDownload(*iTriggerUrl, KNullDesC8());
+    // Delete trigger URL so that it is possible to check
+    // whether or not meteringResponse has PrUrl.
+    delete iTriggerUrl;
+    iTriggerUrl = NULL;
+    iStatus = KRequestPending;
+    // Put download for proper cleanup.
+    TCleanupItem item(DeleteHttpDowload, download);
+    CleanupStack::PushL(item);
+    RFile roapTrigger;
+
+    if (!iDownloadSuccess)
+        {
+        RemoveProgressNoteL();
+        if (iConnectionError)
+            {
+            User::Leave(KErrCouldNotConnect);
+            }
+        else
+            {
+            User::Leave(KErrGeneral);
+            }
+        }
+    User::LeaveIfError(roapTrigger.Open(iFs, *iFileName,
+            EFileShareReadersOrWriters));
+    CleanupClosePushL(roapTrigger);
+    // Get filehandle of ROAP trigger
+    const TInt KReadBufSize = 512;
+
+    RBuf8 readBuf;
+    readBuf.CleanupClosePushL();
+    readBuf.CreateL(KReadBufSize);
+
+    // Read file to buffer
+    TInt triggerFileSize(0);
+    User::LeaveIfError(roapTrigger.Size(triggerFileSize));
+    if (iTriggerBuf)
+        {
+        delete iTriggerBuf;
+        iTriggerBuf = NULL;
+        }
+    iTriggerBuf = HBufC8::NewL(triggerFileSize);
+    User::LeaveIfError(roapTrigger.Read(readBuf, KReadBufSize));
+    iTriggerBuf->Des().Copy(readBuf);
+    while (readBuf.Length() == KReadBufSize)
+        {
+        User::LeaveIfError(roapTrigger.Read(readBuf, KReadBufSize));
+        iTriggerBuf->Des().Append(readBuf);
+        }
+
+    // And let ROAP handle it...
+    CleanupStack::PopAndDestroy(&readBuf);
+    CleanupStack::PopAndDestroy(&roapTrigger);
+    CleanupStack::PopAndDestroy(download);
+
+    iFs.Delete(*iFileName);
+    delete iFileName;
+    iFileName = NULL;
+    if (iUseCoeEnv && iProgressInfo)
+        {
+        iProgressInfo->IncrementAndDraw(KProgressInfoIncrementMedium);
+        }
+
+    CompleteToState(aNextState, KErrNone);
+    }
+
+// ---------------------------------------------------------------------------
+// CDrmUtilityDmgrWrapper::DoHandleRoapTriggerL
+// ---------------------------------------------------------------------------
+//
+void CDrmUtilityDmgrWrapper::DoHandleRoapTriggerL(TDownloadState aNextState)
+    {
+    Roap::TTriggerType triggerType;
+    Roap::TRiContextStatus contextStatus;
+    Roap::TDomainOperation domainOperation;
+
+    RPointerArray<HBufC8> contentIds;
+    CleanupResetAndDestroyPushL( contentIds );
+
+    iRoapEng = Roap::CRoapEng::NewL();
+
+    iRoapEng->SetTriggerL(*iTriggerBuf, NULL, triggerType, contextStatus,
+            domainOperation, contentIds);
+
+    CleanupStack::PopAndDestroy(&contentIds);
+
+    iRoapEng->AcceptL(this, &iStatus);
+    iState = aNextState;
+    SetActive();
+    }
+
+// ---------------------------------------------------------------------------
+// CDrmUtilityDmgrWrapper::CompleteToState
+// ---------------------------------------------------------------------------
+//
+void CDrmUtilityDmgrWrapper::CompleteToState(
+        CDrmUtilityDmgrWrapper::TDownloadState aNextState, TInt aError)
+    {
+    iState = aNextState;
+    TRequestStatus* ownStatus(&iStatus);
+    User::RequestComplete(ownStatus, aError);
+    SetActive();
+    }
+
+// MHttpDownloadMgrObserver methods
 // ---------------------------------------------------------------------------
 // From class MHttpDownloadMgrObserver
 //
 // CDrmUtilityDmgrWrapper::HandleDMgrEventL
 // ---------------------------------------------------------------------------
 //
-void CDrmUtilityDmgrWrapper::HandleDMgrEventL(
-    RHttpDownload& aDownload,
-    THttpDownloadEvent aEvent )
+void CDrmUtilityDmgrWrapper::HandleDMgrEventL(RHttpDownload& aDownload,
+        THttpDownloadEvent aEvent)
     {
     _LIT8( KDrmUtilityMimeTypeROAPTrigger,
-        "application/vnd.oma.drm.roap-trigger+xml" );
+            "application/vnd.oma.drm.roap-trigger+xml" );
+
 
-    CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL" );
-    CLOG_WRITE_FORMAT( "iDownLoadState = %d", aEvent.iDownloadState );
-    CLOG_WRITE_FORMAT( "iProgressState = %d", aEvent.iProgressState );
 
-    if ( aEvent.iProgressState == EHttpContentTypeReceived )
+    if (aEvent.iProgressState == EHttpContentTypeReceived)
         {
         // check received mimetype
         RBuf8 contentType;
         contentType.CleanupClosePushL();
-        contentType.CreateL( KMaxContentTypeLength );
-        User::LeaveIfError(
-            aDownload.GetStringAttribute( EDlAttrContentType, contentType ) );
-        if ( !contentType.FindF( KDrmUtilityMimeTypeROAPTrigger ) )
+        contentType.CreateL(KMaxContentTypeLength);
+        User::LeaveIfError(aDownload.GetStringAttribute(EDlAttrContentType,
+                contentType));
+        if (!contentType.FindF(KDrmUtilityMimeTypeROAPTrigger))
             {
             // ROAP trigger found, continue download
-            User::LeaveIfError( aDownload.Start() );
+            User::LeaveIfError(aDownload.Start());
             }
         else
             {
             // wrong MIME type, so stop download
             iDownloadSuccess = EFalse;
-            User::LeaveIfError( aDownload.Delete() );
+            User::LeaveIfError(aDownload.Delete());
             }
-        CleanupStack::PopAndDestroy( &contentType );
+        CleanupStack::PopAndDestroy(&contentType);
         }
 
-    if ( aEvent.iDownloadState == EHttpDlCreated )
+    if (aEvent.iDownloadState == EHttpDlCreated)
         {
         CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpDlCreated" );
-        if ( iUseCoeEnv )
+        if (iUseCoeEnv && iProgressInfo)
             {
-        iProgressInfo->IncrementAndDraw( KProgressInfoIncrementMedium );
+            iProgressInfo->IncrementAndDraw(KProgressInfoIncrementMedium);
             }
         }
-    else if ( aEvent.iProgressState == EHttpProgDisconnected )
+    else if (aEvent.iProgressState == EHttpProgDisconnected)
         {
         CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpProgDisconnected" );
+        
         // store failure
         iDownloadSuccess = EFalse;
         iConnectionError = ETrue;
         // finished
-        iWait.AsyncStop();
         }
-    else if ( aEvent.iDownloadState == EHttpDlInprogress )
+    else if (aEvent.iDownloadState == EHttpDlInprogress)
         {
         CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpDlInprogress" );
-        if ( iUseCoeEnv )
+        if (iUseCoeEnv)
             {
-        iProgressInfo->IncrementAndDraw( KProgressInfoIncrementSmall );
+            iProgressInfo->IncrementAndDraw(KProgressInfoIncrementSmall);
             }
         }
-    else if ( aEvent.iDownloadState == EHttpDlCompleted )
+    else if (aEvent.iDownloadState == EHttpDlCompleted)
         {
         // store success
         CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpDlCompleted" );
         iDownloadSuccess = ETrue;
-        if ( iUseCoeEnv )
+        iConnectionError = EFalse;
+        if (iUseCoeEnv)
             {
-        iProgressInfo->IncrementAndDraw( KProgressInfoIncrementLarge );
+            iProgressInfo->IncrementAndDraw(KProgressInfoIncrementLarge);
             }
         // finished
-        iWait.AsyncStop();
+        TRequestStatus* status(&iStatus);
+        User::RequestComplete(status, KErrNone);
         }
-    else if ( aEvent.iDownloadState == EHttpDlFailed )
+    else if (aEvent.iDownloadState == EHttpDlFailed)
         {
-        TInt32 err( KErrNone );
+        TInt32 err(KErrNone);
 
         CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpDlFailed" );
         // store failure
         iDownloadSuccess = EFalse;
-        User::LeaveIfError( aDownload.GetIntAttribute( EDlAttrErrorId, err ) );
+        User::LeaveIfError(aDownload.GetIntAttribute(EDlAttrErrorId, err));
         CLOG_WRITE_FORMAT( "EDlAttrErrorId = %d", err );
 
-        if ( err == EConnectionFailed ||
-             err == ETransactionFailed)
+        if (err == EConnectionFailed || err == ETransactionFailed)
             {
             CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EConnectionFailed" );
             iConnectionError = ETrue;
             }
-
+        User::LeaveIfError(aDownload.Delete()); // remove useless download
+        User::LeaveIfError(iDlMgr.Disconnect()); // disconnects Dmgr instantly.
         // finished
-        iWait.AsyncStop();
+        TRequestStatus* status(&iStatus);
+        if ( iConnection->HasMoreConnectionAttempts() )
+            {
+            iState = EInit; // re-try with another conection
+            User::RequestComplete(status, KErrNone);
+            }
+        else
+            {
+            User::RequestComplete(status, KErrCancel);        
+            }
         }
     }
 
-
 // ---------------------------------------------------------------------------
 // CDrmUtilityDmgrWrapper::ShowProgressNoteL
 // ---------------------------------------------------------------------------
 //
 void CDrmUtilityDmgrWrapper::ShowProgressNoteL()
     {
-    TFileName resFileName;
+    DRM::CFileNameContainer* resFileName(NULL);
 
     CLOG_WRITE( "DMgrWrapper::ShowProgressNoteL" );
-    if ( iUseCoeEnv )
+    if (iUseCoeEnv)
         {
         // Initialize the progress note dialog, it's values,
         // and execute it
+        resFileName=DRM::CFileNameContainer::NewLC();
 #ifndef RD_MULTIPLE_DRIVE
 
-        resFileName.Copy( KDriveZ );
+        resFileName->iBuffer.Copy( KDriveZ );
 
 #else //RD_MULTIPLE_DRIVE
-
-        TInt driveNumber( -1 );
+        TInt driveNumber(-1);
         TChar driveLetter;
-        DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRom, driveNumber );
+        DriveInfo::GetDefaultDrive(DriveInfo::EDefaultRom, driveNumber);
 
-        iCoeEnv->FsSession().DriveToChar( driveNumber, driveLetter );
+        iCoeEnv->FsSession().DriveToChar(driveNumber, driveLetter);
 
-        resFileName.Format( KRomDriveFormatter, (TUint)driveLetter );
+        resFileName->iBuffer.Format(KRomDriveFormatter, (TUint) driveLetter);
 
 #endif
 
-        resFileName.Append( KDC_RESOURCE_FILES_DIR );
-        resFileName.Append( KCDrmUtilityDmgrWrapperResFileName );
-        RConeResourceLoader loader( *iCoeEnv );
-        loader.OpenL( resFileName );
+        resFileName->iBuffer.Append(KDC_RESOURCE_FILES_DIR);
+        resFileName->iBuffer.Append(KCDrmUtilityDmgrWrapperResFileName);
+        RConeResourceLoader loader(*iCoeEnv);
+        loader.OpenL(resFileName->iBuffer);
+        CleanupStack::PopAndDestroy( resFileName );
+        resFileName=NULL;
 
         iProgressNoteDialog = new (ELeave) CAknProgressDialog(
-            reinterpret_cast< CEikDialog** >( &iProgressNoteDialog ) );
-        iProgressNoteDialog->PrepareLC( R_SILENT_PROGRESS_NOTE );
-        iProgressNoteDialog->SetCallback( this );
+                reinterpret_cast<CEikDialog**> (&iProgressNoteDialog));
+        iProgressNoteDialog->PrepareLC(R_SILENT_PROGRESS_NOTE);
+        iProgressNoteDialog->SetCallback(this);
         iProgressInfo = iProgressNoteDialog->GetProgressInfoL();
-        iProgressInfo->SetFinalValue( KProgressInfoFinalValue );
+        iProgressInfo->SetFinalValue(KProgressInfoFinalValue);
         iDialogDismissed = EFalse;
         iProgressNoteDialog->RunLD();
 
@@ -673,7 +656,6 @@
 
     }
 
-
 // ---------------------------------------------------------------------------
 // CDrmUtilityDmgrWrapper::RemoveProgressNoteL
 // ---------------------------------------------------------------------------
@@ -681,7 +663,7 @@
 void CDrmUtilityDmgrWrapper::RemoveProgressNoteL()
     {
 
-    if ( iUseCoeEnv )
+    if (iUseCoeEnv)
         {
         if (iProgressNoteDialog && !iDialogDismissed)
             {
@@ -689,22 +671,22 @@
             TRAPD(err, iProgressNoteDialog->ProcessFinishedL());
             if (err != KErrNone)
                 {
+                iProgressNoteDialog->SetCallback(NULL);
                 delete iProgressNoteDialog;
+                iDialogDismissed = ETrue;
                 }
             iProgressNoteDialog = NULL;
             }
         }
-
     }
 
-
 // ---------------------------------------------------------------------------
 // From class MAknProgressDialogCallback
 //
 // CDrmUtilityDmgrWrapper::DialogDismissedL
 // ---------------------------------------------------------------------------
 //
-void CDrmUtilityDmgrWrapper::DialogDismissedL( TInt /*aButtonId*/ )
+void CDrmUtilityDmgrWrapper::DialogDismissedL(TInt aButtonId )
     {
     iDialogDismissed = ETrue;
 
@@ -712,14 +694,193 @@
     iProgressNoteDialog = NULL;
     iProgressInfo = NULL;
 
-    if( iWait.IsStarted() )
+    if (IsActive() && aButtonId == EAknSoftkeyCancel)
+        {
+        if ((iState == EGetMeteringTrigger || iState == EGetPrUrlTrigger))
+            {
+            Cancel();
+            }
+        else
+            {
+            TRequestStatus* status(&iStatus);
+            User::RequestComplete(status, KErrCancel);
+            }
+        }
+    //For avoiding active object deadlock
+    iDlMgr.DeleteAll();
+
+    }
+
+// RoapObserver methods
+
+// ---------------------------------------------------------------------------
+// CDrmUtilityDmgrWrapper::PostResponseUrlL
+// ---------------------------------------------------------------------------
+//
+void CDrmUtilityDmgrWrapper::PostResponseUrlL(const TDesC8& aPostResponseUrl)
+    {
+    UpdateBufferL<HBufC8, TDesC8> (iTriggerUrl, aPostResponseUrl);
+
+    if (iUseCoeEnv && iProgressInfo)
+        {
+        iProgressInfo->IncrementAndDraw(KProgressInfoIncrementMedium);
+        }
+    }
+
+// Trivial RoapObserver methods
+TBool CDrmUtilityDmgrWrapper::ConnectionConfL()
+    {
+    return ETrue;
+    }
+
+TBool CDrmUtilityDmgrWrapper::ContactRiConfL()
+    {
+    return ETrue;
+    }
+
+TBool CDrmUtilityDmgrWrapper::TransIdConfL()
+    {
+    return EFalse;
+    }
+
+void CDrmUtilityDmgrWrapper::RightsObjectDetailsL(const RPointerArray<
+        CDRMRights>& /*aRightsList*/)
+    {
+    // do nothing
+    }
+
+void CDrmUtilityDmgrWrapper::ContentDownloadInfoL(TPath& /*aTempFolder*/,
+        TFileName& /*aContentName*/, TInt& aMaxSize)
+    {
+    aMaxSize = -1;
+    }
+
+void CDrmUtilityDmgrWrapper::ContentDetailsL(const TDesC& /*aPath*/,
+        const TDesC8& /*aType*/, const TUid& /*aAppUid*/)
+    {
+    }
+
+void CDrmUtilityDmgrWrapper::RoapProgressInfoL(const TInt /*aProgressInfo*/)
+    {
+    // do nothing
+    }
+
+void CDrmUtilityDmgrWrapper::ErrorUrlL(const TDesC8& aErrorUrl)
+    {
+    UpdateBufferL<HBufC8, TDesC8> (iErrorUrl, aErrorUrl);
+    }
+
+// CActive methods
+
+// ---------------------------------------------------------------------------
+// CDrmUtilityDmgrWrapper::DoCancel
+// ---------------------------------------------------------------------------
+//
+void CDrmUtilityDmgrWrapper::DoCancel()
+    {
+    delete iRoapEng;
+    iRoapEng = NULL;
+    iConnection->Close();
+    if (iWait.IsStarted())
+        {
+        iWait.AsyncStop();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CDrmUtilityDmgrWrapper::RunL
+// ---------------------------------------------------------------------------
+//
+void CDrmUtilityDmgrWrapper::RunL()
+    {
+    TInt error(iStatus.Int());
+    
+    ClearIfNotRoapTemporaryError(error, iErrorUrl);
+    User::LeaveIfError(error);
+    switch (iState)
+        {
+        case EInit:
+            {
+            if (!iProgressNoteDialog)
+                {
+                ShowProgressNoteL();
+                }
+            DoConnectL(EGetMeteringTrigger);
+            }
+            break;
+        case EGetMeteringTrigger:
+            {
+            DoDownloadRoapTriggerL(ESaveMeteringTrigger);
+            }
+            break;
+        case ESaveMeteringTrigger:
+            {
+            DoSaveRoapTriggerL(EMeteringReportSubmit);
+            }
+            break;
+
+        case EMeteringReportSubmit:
+            {
+            DoHandleRoapTriggerL(EGetPrUrlTrigger);
+            }
+            break;
+        case EGetPrUrlTrigger:
+            {
+            delete iRoapEng;
+            iRoapEng = NULL;
+            DoDownloadRoapTriggerL(ESavePrUrlTrigger);
+            }
+            break;
+        case ESavePrUrlTrigger:
+            {
+            DoSaveRoapTriggerL(EPrRoapRequest);
+            }
+            break;
+        case EPrRoapRequest:
+            {
+            DoHandleRoapTriggerL(EComplete);
+            }
+            break;
+        case EComplete:
+            {
+            RemoveProgressNoteL();
+            delete iRoapEng;
+            iRoapEng = NULL;
+            iWait.AsyncStop();
+            }
+            break;
+
+        default:
+            User::Leave(KErrNotSupported);
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CDrmUtilityDmgrWrapper::RunError
+// ---------------------------------------------------------------------------
+//
+TInt CDrmUtilityDmgrWrapper::RunError(TInt /* aError */)
+    {
+    delete iRoapEng;
+    iRoapEng = NULL;
+    iConnection->Close();
+    if (iWait.IsStarted())
         {
         iWait.AsyncStop();
         }
 
+    if (iUseCoeEnv)
+        {
+        if (iProgressNoteDialog && !iDialogDismissed)
+            {
+            iProgressNoteDialog->SetCallback(NULL);
+            delete iProgressNoteDialog;
+            iDialogDismissed = ETrue;
+            }
+        iProgressNoteDialog = NULL;
+        }
+    return KErrNone;
     }
-
-
 // ======== GLOBAL FUNCTIONS ========
 
 //------------------------------------------------------------------------------
@@ -730,7 +891,7 @@
     {
     CDrmUtilityDmgrWrapper* launcher = NULL;
     TRAPD( err, launcher = CDrmUtilityDmgrWrapper::NewL() );
-    if( err != KErrNone )
+    if (err != KErrNone)
         {
         return NULL;
         }
--- a/commondrm/drmutility/src/DrmUtilityDownloadManager.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/commondrm/drmutility/src/DrmUtilityDownloadManager.cpp	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -21,7 +21,7 @@
 #include "DrmUtilityDmgrWrapper.h"
 
 // CONSTANTS
-_LIT( KDrmUtilityDmgrHandlerName, "\\system\\libs\\DrmUtilityDmgrWrapper.dll" );
+_LIT( KDrmUtilityDmgrHandlerName, "DrmUtilityDmgrWrapper.dll" );
 
 typedef TAny* (*NewDMgrL)();
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmutility/src/drmutilityconnection.cpp	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,562 @@
+/*
+ * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  Connection manager for DRM
+ *
+ */
+
+// INCLUDE FILES
+#include <es_sock.h>
+#include <cmconnectionmethod.h>
+#include <cmdestination.h>
+#include <cmconnectionmethoddef.h>
+#include <cmmanager.h>
+#include <extendedconnpref.h>
+#include <cmapplicationsettingsui.h> // CCmApplicationSettingsUi
+#include <es_enum.h>
+#include <cdbcols.h> // IAP, COMMDB_ID
+#include "drmutilityconnection.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "drmutilityconnectionTraces.h"
+#endif
+
+// ================= MEMBER FUNCTIONS =======================
+
+
+// -----------------------------------------------------------------------------
+// HasDefaultConnectionL
+// Finds default IAP id
+// @return Etrue: valid AP found
+//         EFalse: valid AP not found
+// @leave system wide error codes
+// -----------------------------------------------------------------------------
+//
+TBool DRM::CDrmUtilityConnection::HasDefaultConnectionL()
+    {
+    TBool hasDefault(EFalse);
+    TCmDefConnValue defConn;
+    RCmManager cmManager;
+    cmManager.OpenLC();
+    cmManager.ReadDefConnL(defConn);
+    if (defConn.iType == ECmDefConnConnectionMethod)
+        {
+        cmManager.GetConnectionMethodInfoIntL(defConn.iId,
+                CMManager::ECmIapId);
+        hasDefault = ETrue;
+        }
+    else if (defConn.iType == ECmDefConnDestination)
+        {
+        RCmDestination dest(cmManager.DestinationL(defConn.iId));
+        CleanupClosePushL(dest);
+
+        if (dest.ConnectionMethodCount() <= 0)
+            {
+            User::Leave(KErrNotFound);
+            }
+
+        RCmConnectionMethod cMeth(dest.ConnectionMethodL(0));
+        CleanupClosePushL(cMeth);
+
+        cMeth.GetIntAttributeL(CMManager::ECmIapId);
+        CleanupStack::PopAndDestroy(&cMeth);
+        CleanupStack::PopAndDestroy(&dest);
+        hasDefault = ETrue;
+        }
+    CleanupStack::PopAndDestroy(&cmManager);
+    return hasDefault;
+    }
+
+// -----------------------------------------------------------------------------
+// CDrmUtilityConnection::HasAccessPointsL
+// -----------------------------------------------------------------------------
+//
+TBool DRM::CDrmUtilityConnection::HasAccessPointsL()
+    {
+    TInt apCount(0);
+    RCmManager cmManager;
+    CleanupClosePushL(cmManager);
+    cmManager.OpenL();
+    RArray<TUint32> aps;
+    CleanupClosePushL(aps);
+    cmManager.ConnectionMethodL(aps, EFalse, EFalse, ETrue);
+    apCount = aps.Count();
+    CleanupStack::PopAndDestroy(2, &cmManager); //aps, cmManager
+    return apCount > 0;
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::NewLC
+// ---------------------------------------------------------------------------
+//
+DRM::CDrmUtilityConnection* DRM::CDrmUtilityConnection::NewLC(
+        const TBool aAllowQueries)
+    {
+    CDrmUtilityConnection* conn = new (ELeave) CDrmUtilityConnection(
+            aAllowQueries);
+    CleanupStack::PushL(conn);
+    conn->ConstructL();
+    return conn;
+    }
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::NewL
+// ---------------------------------------------------------------------------
+//
+DRM::CDrmUtilityConnection* DRM::CDrmUtilityConnection::NewL(
+        const TBool aAllowQueries)
+    {
+    CDrmUtilityConnection* conn = CDrmUtilityConnection::NewLC(aAllowQueries);
+    CleanupStack::Pop(conn);
+    return conn;
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::~CDrmUtilityConnection
+// ---------------------------------------------------------------------------
+//
+DRM::CDrmUtilityConnection::~CDrmUtilityConnection()
+    {
+    Cancel();
+    iConnection.Close();
+    iSocketServ.Close();
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::ConnectL
+// ---------------------------------------------------------------------------
+//
+void DRM::CDrmUtilityConnection::ConnectL(TRequestStatus* aStatus)
+    {
+    TInt error(KErrGeneral);
+    iStatus = KRequestPending;
+
+    if (iState == EInit)
+        {
+
+        // Make this part atomic by pushing closes on the stack.
+        error = iSocketServ.Connect();
+        if (!error)
+            {
+            error = iConnection.Open(iSocketServ);
+            }
+        }
+
+    if (iState == EConnected)
+        {
+        error=iConnection.Stop();
+        //error=iConnection.Stop(RConnection::EStopAuthoritative); //just in case still does not work
+        // if autoriative stop does not work then must do something following follow
+        // TNifProgressBuf iJalla;
+        // loop iConnection.ProgressNotification(iJalla,iStatus,KConnProgressDefault); SetActive
+        // at RunL if (iJalla.iStage < KConnectionDown)
+        // reactiveteWaitClose();
+        //iConnection.ProgressNotification(iJalla,iStatus,(KConnectionDown); (should loop till state KConnectionDown seen)
+        iConnection.Close();
+        iState = EInit;
+        error = KErrNone;
+        error = iConnection.Open(iSocketServ);
+        }
+
+    iParentStatus = aStatus;
+    *iParentStatus = KRequestPending;
+
+    CompleteSelf(error);
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::HasMoreConnectionAttempts
+// ---------------------------------------------------------------------------
+//
+TBool DRM::CDrmUtilityConnection::HasMoreConnectionAttempts()
+    {
+    TBool ret(EFalse);
+    switch (iType)
+        {
+        case EUsingPurposeInternet:
+            if (iAllowQueries)
+                {
+                ret = ETrue;
+                }
+            else
+                {
+                ret = EFalse;
+                }
+            break;
+        case EUsingQuery:
+        case EFail:
+            ret = EFalse;
+            break;
+        default:
+            ret = ETrue;
+        }
+    return ret;
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::IsConnected
+// ---------------------------------------------------------------------------
+//
+TBool DRM::CDrmUtilityConnection::IsConnected(TUint32& aIap)
+    {
+    TBool ret(EFalse);
+    
+    if (iState == EConnected)
+        {
+        aIap = iIapId;
+        ret = ETrue;
+        }
+    return ret;
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::Close
+// ---------------------------------------------------------------------------
+//
+void DRM::CDrmUtilityConnection::Close()
+    {
+    //LOGLIT( "CDrmUtilityConnection::Close" )
+
+    Cancel();
+    iConnection.Close();
+    iSocketServ.Close();
+    iState = EInit;
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection:CDrmUtilityConnection:
+// ---------------------------------------------------------------------------
+//
+DRM::CDrmUtilityConnection::CDrmUtilityConnection(const TBool aAllowQueries) :
+    CActive(CActive::EPriorityStandard), iState(EInit),
+            iType(EAttachExisting), iAllowQueries(aAllowQueries)
+    {
+    CActiveScheduler::Add(this);
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::ConstructL
+// ---------------------------------------------------------------------------
+//
+void DRM::CDrmUtilityConnection::ConstructL()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::DoCancel
+// ---------------------------------------------------------------------------
+//
+void DRM::CDrmUtilityConnection::DoCancel()
+    {
+    iConnection.Close();
+    iSocketServ.Close();
+    CompleteParent(KErrCancel);
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::RunL
+// ---------------------------------------------------------------------------
+//
+void DRM::CDrmUtilityConnection::RunL()
+    {
+    TInt error(iStatus.Int());
+    if (iState == EInit)
+        {
+        User::LeaveIfError(error); // Handle errors in RunError().
+        if (iType == EAttachExisting)
+            {
+            AttachExistingConnectionL();
+            }
+        else
+            {
+            iState = EConnecting;
+            error = KErrNotFound;
+            CompleteSelf(error);
+            }
+        }
+    else if (iState == EConnecting)
+        {
+        if (!error)
+            {
+            iState = EConnected;
+            CompleteSelf(error);
+            }
+        else if (error != KErrNotFound)
+            {
+            User::LeaveIfError(error);
+            }
+        else
+            {
+            switch (iType)
+                {
+                case EAttachExisting:
+                    iType = EUsingDefault;
+                    ConnectUsingDefaultL();
+                    break;
+                case EUsingDefault:
+                    iType = EUsingPurposeOperator;
+                    ConnectUsingSnapPurposeL(CMManager::ESnapPurposeOperator);
+                    break;
+                case EUsingPurposeOperator:
+                    iType = EUsingPurposeInternet;
+                    ConnectUsingSnapPurposeL(CMManager::ESnapPurposeInternet);
+                    break;
+                case EUsingPurposeInternet:
+                    iType = EUsingQuery;
+                    if (iAllowQueries)
+                        {
+                        ConnectUsingQueryL();
+                        break;
+                        }
+                case EUsingQuery:
+                    iType = EFail;
+                case EFail:
+                default:
+                    User::Leave(KErrCouldNotConnect);
+                    break;
+                }
+            }
+        }
+    else if (iState == EConnected)
+        {
+        UpdateIapIdL();
+        CompleteParent(iStatus.Int());
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::RunError
+// ---------------------------------------------------------------------------
+//
+TInt DRM::CDrmUtilityConnection::RunError(TInt aError)
+    {
+    //LOGLIT( "CDrmUtilityConnection::RunError" )
+
+    iConnection.Close();
+    iSocketServ.Close();
+
+    CompleteParent(aError);
+    iState = EInit;
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::AttachExistingConnectionL
+// ---------------------------------------------------------------------------
+//
+void DRM::CDrmUtilityConnection::AttachExistingConnectionL()
+    {
+    TConnectionInfoBuf connInfo;
+    TUint count(0);
+    TInt error(KErrNotFound);
+    iStatus = KRequestPending;
+
+    User::LeaveIfError(iConnection.EnumerateConnections(count));
+    if (count)
+        {
+        // Select AP with largest index. (Latest created)
+        User::LeaveIfError(iConnection.GetConnectionInfo(count, connInfo));
+        User::LeaveIfError(iConnection.Attach(connInfo,
+                RConnection::EAttachTypeNormal));
+        iState = EConnected;
+        error = KErrNone;
+        }
+    else
+        {
+        iState = EConnecting;
+        }
+    CompleteSelf(error);
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::ConnectUsingDefaultL
+// ---------------------------------------------------------------------------
+//
+void DRM::CDrmUtilityConnection::ConnectUsingDefaultL()
+    {
+    // Create overrides
+    TConnPrefList prefList;
+    TExtendedConnPref prefs;
+
+    if (!iAllowQueries)
+        {
+        prefs.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourConnSilent);
+        }
+    else
+        {
+        prefs.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourConnDisableQueries);
+        }
+        
+    //Fetch default connection
+    TBool hasDefault(ETrue);
+    TCmDefConnValue defConn;
+    RCmManager cmManager;
+    cmManager.OpenLC();
+    cmManager.ReadDefConnL(defConn);
+    if (defConn.iType == ECmDefConnConnectionMethod)
+        {
+        prefs.SetIapId(defConn.iId);
+        }
+    else if (defConn.iType == ECmDefConnDestination)
+        {
+        prefs.SetSnapId(defConn.iId);
+        }
+    else
+        {
+        hasDefault = EFalse;
+        }
+    // End of fetch default connection
+    CleanupStack::PopAndDestroy(&cmManager);
+    if (hasDefault)
+        {
+        prefList.AppendL(&prefs);
+
+        // Start an Outgoing Connection with overrides
+        iState = EConnecting;
+        iConnection.Start(prefList, iStatus);
+        SetActive();
+        }
+    else
+        {
+        // No default found --> next iteration needed
+        CompleteSelf(KErrNotFound);
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::ConnectUsingSnapOperatorL
+// ---------------------------------------------------------------------------
+//
+void DRM::CDrmUtilityConnection::ConnectUsingSnapPurposeL(
+        const TUint32 aPurpose)
+    {
+    // Create overrides
+    TConnPrefList prefList;
+    TExtendedConnPref prefs;
+    prefs.SetSnapPurpose(static_cast<CMManager::TSnapPurpose> (aPurpose));
+    if (aPurpose != CMManager::ESnapPurposeUnknown)
+        {
+        if (!iAllowQueries)
+            {
+            prefs.SetNoteBehaviour(
+                    TExtendedConnPref::ENoteBehaviourConnSilent);
+            }
+        else
+            {
+            prefs.SetNoteBehaviour(
+                    TExtendedConnPref::ENoteBehaviourConnDisableQueries);
+            }
+        }
+    else
+        {
+        prefs.SetConnSelectionDialog(ETrue);
+        prefs.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourDefault);
+        prefs.SetForcedRoaming(EFalse);
+        prefs.SetBearerSet(TExtendedConnPref::EExtendedConnBearerUnknown);
+        }
+    prefList.AppendL(&prefs);
+    iState = EConnecting;
+
+    // Start an Outgoing Connection with overrides
+    iConnection.Start(prefList, iStatus);
+    SetActive();
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::ConnectUsingQueryL
+// ---------------------------------------------------------------------------
+//
+void DRM::CDrmUtilityConnection::ConnectUsingQueryL()
+    {
+    // Create overrides
+    TConnPrefList prefList;
+    TExtendedConnPref prefs;
+
+    CCmApplicationSettingsUi* ui(CCmApplicationSettingsUi::NewLC());
+    TCmSettingSelection selectedConn;
+
+    TBool selected(ui->RunApplicationSettingsL(selectedConn));
+    CleanupStack::PopAndDestroy(ui);
+    ui=NULL;
+    if (selected)
+        {
+        if (selectedConn.iResult == CMManager::EConnectionMethod)
+            {
+            prefs.SetIapId(selectedConn.iId);
+            }
+        else if (selectedConn.iResult == CMManager::EDestination)
+            {
+            prefs.SetSnapId(selectedConn.iId);
+            }
+        else if (selectedConn.iResult != CMManager::EDefaultConnection)
+            {
+            selected=EFalse;
+            }
+        }
+    if (selected)
+        {
+        if (selectedConn.iResult != CMManager::EDefaultConnection)
+            {
+            prefList.AppendL(&prefs);
+            // For ensuring possibly stale connections get disconnected first;
+            iConnection.Close();
+            iConnection.Open(iSocketServ);
+            
+            iConnection.Start(prefList, iStatus);
+            }
+        else
+            {
+            iConnection.Start(iStatus);
+            }
+        SetActive();
+        }
+    else
+        {
+        CompleteSelf(KErrCancel);
+        }
+    }
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::CompleteSelf
+// ---------------------------------------------------------------------------
+//
+void DRM::CDrmUtilityConnection::CompleteSelf(TInt aError)
+    {
+    TRequestStatus* status(&iStatus);
+    User::RequestComplete(status, aError);
+    SetActive();
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::CompleteParent
+// ---------------------------------------------------------------------------
+//
+void DRM::CDrmUtilityConnection::CompleteParent(TInt aError)
+    {
+    if (iParentStatus)
+        {
+        User::RequestComplete(iParentStatus, aError);
+        iParentStatus = NULL;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// DRM::CDrmUtilityConnection::UpdateIapId
+// ---------------------------------------------------------------------------
+//
+void DRM::CDrmUtilityConnection::UpdateIapIdL()
+    {
+    TBuf<16> query;
+
+    query.Format(_L("%s\\%s"), IAP, COMMDB_ID);
+    User::LeaveIfError(iConnection.GetIntSetting(query, iIapId));
+    
+    }
--- a/commondrm/drmutility/src/drmutilitywmdrmwrapper.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/commondrm/drmutility/src/drmutilitywmdrmwrapper.cpp	Mon May 03 12:46:34 2010 +0300
@@ -31,15 +31,12 @@
 #include <avkon.hrh>
 
 // access point utils
-#include <centralrepository.h>
+
 #include <cdblen.h>
 #include <cmconnectionmethod.h>
 #include <cmdestination.h>
 #include <cmconnectionmethoddef.h>
 #include <cmmanager.h>
-#ifdef __SERIES60_NATIVE_BROWSER
-#include <BrowserUiSDKCRKeys.h>
-#endif
 
 #include    <wmdrmagent.h> // for WMDRM file details view
 #include    <drmutilitytypes.h>
@@ -63,12 +60,6 @@
 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" );
@@ -797,56 +788,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;
     }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commondrm/drmutility/traces/OstTraceDefinitions.h	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,23 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef __OSTTRACEDEFINITIONS_H__
+#define __OSTTRACEDEFINITIONS_H__
+// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
+// REMOVE BEFORE CHECK-IN TO VERSION CONTROL
+// #define OST_TRACE_COMPILER_IN_USE
+#include <OpenSystemTrace.h>
+#endif
--- a/drm_plat/group/bld.inf	Fri Apr 16 15:14:55 2010 +0300
+++ b/drm_plat/group/bld.inf	Mon May 03 12:46:34 2010 +0300
@@ -30,6 +30,7 @@
 #include "../drm_agents_api/group/bld.inf"
 #include "../wmdrm_core_api/group/bld.inf"
 #include "../wmdrm_access_api/group/bld.inf"
+#include "../wmdrm_ota_access_api/group/bld.inf"
 
 #if (defined __WINDOWS_MEDIA_DRM)
 #include "../camese_utility_api/group/bld.inf"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/drm_plat/wmdrm_ota_access_api/group/bld.inf	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* File that exports the files belonging to WMDRM Ota API
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../inc/wmdrmotaaccess.h     MW_LAYER_PLATFORM_EXPORT_PATH(wmdrmotaaccess.h)
+
+../inc/wmdrmotaaccessecominterface.h \
+    MW_LAYER_PLATFORM_EXPORT_PATH(wmdrmotaaccessecominterface.h)
+
+../inc/wmdrmotaaccessecominterface.inl \
+    MW_LAYER_PLATFORM_EXPORT_PATH(wmdrmotaaccessecominterface.inl)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/drm_plat/wmdrm_ota_access_api/inc/wmdrmotaaccess.h	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,118 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*  wmdrmotaaccess.h
+*
+*/
+
+#ifndef _WMDRM_OTA_ACCESS_API_H_
+#define _WMDRM_OTA_ACCESS_API_H_
+
+// Forward declarations
+class CWmDrmOtaAccessEcomInterface;
+
+// Class declaration
+/**
+*  Provides access to WM DRM Over-the-Air
+*  Functionality
+*
+*  @code
+*  // Way to use CWmDrmOtaAccess
+*
+*  CWmDrmOtaAccess* access( CWmDrmOtaAccess::NewL() );
+*  delete access;
+*  @endcode
+*
+*/
+NONSHARABLE_CLASS( CWmDrmOtaAccess ) : public CBase
+    {     
+public:
+    /** Constructors */
+    IMPORT_C static CWmDrmOtaAccess* NewL();
+    IMPORT_C static CWmDrmOtaAccess* NewLC();
+
+    /** Destructor */
+    IMPORT_C virtual ~CWmDrmOtaAccess();
+    
+    /**
+    *  GetLicenseChallengeL
+    *  Syncronous method
+    *
+    *  Get the license challenge that can be sent to the server to fetch
+    *  a license
+    *
+    *  @param   aDrmHeader  IN  The drm header
+    *  @param   aChallenge  OUT Resulting Challenge
+    *  @return  None
+    *  @leave   Symbian OS error codes      
+    */
+    IMPORT_C void GetLicenseChallengeL( const TDesC8& aDrmHeader, 
+                                        HBufC8*& aChallenge );
+
+    /**
+    *  GetLicenseChallengeL
+    *  Asyncronous method
+    *
+    *  Get the license challenge that can be sent to the server to fetch
+    *  a license    
+    *
+    *  @param   aDrmHeader  IN  The drm header
+    *  @param   aChallenge  OUT Resulting Challenge
+    *  @param   aStatus     OUT Asyncronous request status
+    *  @return  None
+    *  @leave   Symbian OS error codes      
+    */
+    IMPORT_C void GetLicenseChallengeL( const TDesC8& aDrmHeader, 
+                                        HBufC8*& aChallenge, 
+                                        TRequestStatus& aStatus );
+    
+    /**
+    *  HandleLicenseResponseL
+    *  Syncronous method
+    *
+    *  Handle the response received from the server in correspondence
+    *  to the license challenge
+    *
+    *  @param   aResponse   IN  The license response
+    *  @return  None
+    *  @leave   Symbian OS error codes        
+    */
+    IMPORT_C void HandleLicenseResponseL( const TDesC8& aResponse );
+
+    /**
+    *  GetLicenseChallengeL
+    *  Asyncronous method
+    *
+    *  Handle the response received from the server in correspondence
+    *  to the license challenge
+    *    
+    *  @param   aResponse   IN  The license response
+    *  @param   aStatus     OUT Asyncronous request status    
+    *  @return  None
+    *  @leave   Symbian OS error codes      
+    */
+    IMPORT_C void HandleLicenseResponseL( const TDesC8& aResponse, 
+                                          TRequestStatus& aStatus );
+
+private:
+    /** Default constructor */
+    CWmDrmOtaAccess();
+    /** Second phase constructor */
+    void ConstructL();
+
+    /** Internal interface to the WM DRM system */
+    CWmDrmOtaAccessEcomInterface* iWmDrmOtaAccessEcomInterface;
+
+    };
+#endif // _WMDRM_OTA_ACCESS_API_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/drm_plat/wmdrm_ota_access_api/inc/wmdrmotaaccessecominterface.h	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*  wmdrmotaaccessecominterface.h
+*
+*/
+
+#ifndef _WMDRMOTAACCESSECOMINTERFACE_H_
+#define _WMDRMOTAACCESSECOMINTERFACE_H_
+
+#include <e32base.h>
+
+// Class declaration
+// CWmDrmAccessEcomInterface
+// ecom plugin interface for WM DRM access implementation
+// @see CWmDrmAccess
+NONSHARABLE_CLASS( CWmDrmOtaAccessEcomInterface ) : public CBase
+    {
+public:
+    // Constructors
+    static CWmDrmOtaAccessEcomInterface* NewL();
+    static CWmDrmOtaAccessEcomInterface* NewLC();
+
+    // Destructor
+    virtual ~CWmDrmOtaAccessEcomInterface();
+
+    /**
+    *  GetLicenseChallengeL
+    *  Syncronous method
+    *
+    *  Get the license challenge that can be sent to the server to fetch
+    *  a license
+    *
+    *  @param   aDrmHeader  IN  The drm header
+    *  @param   aChallenge  OUT Resulting Challenge
+    *  @return  None
+    *  @leave   Symbian OS error codes      
+    */
+    virtual void GetLicenseChallengeL( const TDesC8& aDrmHeader, 
+                               HBufC8*& aChallenge ) = 0;
+
+    /**
+    *  GetLicenseChallengeL
+    *  Asyncronous method
+    *
+    *  Get the license challenge that can be sent to the server to fetch
+    *  a license    
+    *
+    *  @param   aDrmHeader  IN  The drm header
+    *  @param   aChallenge  OUT Resulting Challenge
+    *  @param   aStatus     OUT Asyncronous request status
+    *  @return  None
+    *  @leave   Symbian OS error codes      
+    */
+    virtual void GetLicenseChallengeL( const TDesC8& aDrmHeader, 
+                                       HBufC8*& aChallenge, 
+                                       TRequestStatus& aStatus ) = 0;
+    
+    /**
+    *  HandleLicenseResponseL
+    *  Syncronous method
+    *
+    *  Handle the response received from the server in correspondence
+    *  to the license challenge
+    *
+    *  @param   aResponse   IN  The license response
+    *  @return  None
+    *  @leave   Symbian OS error codes        
+    */
+    virtual void HandleLicenseResponseL( const TDesC8& aResponse ) = 0;
+
+    /**
+    *  GetLicenseChallengeL
+    *  Asyncronous method
+    *
+    *  Handle the response received from the server in correspondence
+    *  to the license challenge
+    *    
+    *  @param   aResponse   IN  The license response
+    *  @param   aStatus     OUT Asyncronous request status    
+    *  @return  None
+    *  @leave   Symbian OS error codes      
+    */
+    virtual void HandleLicenseResponseL( const TDesC8& aResponse, 
+                                         TRequestStatus& aStatus ) = 0;
+
+private:
+    // internal variable used on freeing ecom related resources
+    TUid iDtor_ID_Key;
+    };
+
+#include "wmdrmotaaccessecominterface.inl"
+#endif _WMDRMOTAACCESSECOMINTERFACE_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/drm_plat/wmdrm_ota_access_api/inc/wmdrmotaaccessecominterface.inl	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*  wmdrmotaaccessecominterface.inl
+*
+*/
+
+#include <ecom/ecom.h> // for interface
+
+// ---------------------------------------------------------------------------
+// CWmDrmOtaAccessEcomInterface::NewL
+// ---------------------------------------------------------------------------
+//
+CWmDrmOtaAccessEcomInterface* CWmDrmOtaAccessEcomInterface::NewL()
+    {
+    const TUid KWmdrmOtaAccessEcomInterfaceUid =
+        {
+        0x2002E67D
+        };
+    TAny* theImplementation( NULL );
+
+    TEComResolverParams resolveParams;
+    resolveParams.SetWildcardMatch( ETrue );
+
+    theImplementation = REComSession::CreateImplementationL(
+        KWmdrmOtaAccessEcomInterfaceUid,
+        _FOFF( CWmDrmOtaAccessEcomInterface, iDtor_ID_Key ),
+        resolveParams );
+
+    return reinterpret_cast<CWmDrmOtaAccessEcomInterface*>( theImplementation );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CWmDrmOtaAccessEcomInterface::NewLC
+// ---------------------------------------------------------------------------
+//
+CWmDrmOtaAccessEcomInterface* CWmDrmOtaAccessEcomInterface::NewLC()
+    {
+    CWmDrmOtaAccessEcomInterface* self( CWmDrmOtaAccessEcomInterface::NewL() );
+
+    CleanupStack::PushL( self );
+    return self;
+    }
+
+
+
+// ---------------------------------------------------------------------------
+// CWmDrmOtaAccessEcomInterface::~CWmDrmOtaAccessEcomInterface
+// ---------------------------------------------------------------------------
+//
+CWmDrmOtaAccessEcomInterface::~CWmDrmOtaAccessEcomInterface()
+    {
+    REComSession::DestroyedImplementation( iDtor_ID_Key );
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/drm_plat/wmdrm_ota_access_api/wmdrm_ota_access_api.metaxml	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<api id="49fc416669cd9affd6778815e848f92b" dataversion="2.0">
+  <name>WMDRM Ota Access API</name>
+  <description>Platform API to access WMDRM Ota Interface</description>
+  <type>c++</type>
+  <collection>wmdrm</collection>
+  <libs>
+    <lib name="wmdrmotaaccess.lib"/>
+  </libs>
+  <release category="platform" sinceversion="5.0"/>
+  <attributes>
+    <htmldocprovided>no</htmldocprovided>
+    <adaptation>no</adaptation>
+  </attributes>
+</api>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/DrmUtilityDmgrWrapper.h	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,365 @@
+/*
+* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#ifndef CDRMUTILITYDMGRWRAPPER_H
+#define CDRMUTILITYDMGRWRAPPER_H
+
+#include <f32file.h> // RFs
+#include <DownloadMgrClient.h>
+#include <RoapObserver.h> // Roap::MRoapObserver
+#include <AknProgressDialog.h> // MAknProgressDialogCallback CAknProgressDialog
+
+
+namespace Roap
+    {
+    class CRoapEng;
+    }
+
+namespace DRM
+    {
+    class CDrmUtilityConnection;
+    }
+class CDRMRights;
+class CEikProgressInfo;
+
+
+/**
+* Environment gate function
+*
+* @since S60 v5.0
+* @return pointer to DMgr handler
+*/
+IMPORT_C TAny* GateFunctionDMgr();
+
+class MDrmUtilityDmgrWrapper
+    {
+
+public:
+    virtual void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl ) = 0;
+
+    virtual void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl,
+        CCoeEnv& aCoeEnv ) = 0;
+
+    virtual HBufC8* GetErrorUrlL() = 0;
+
+    };
+
+/**
+*  Class for downloading ROAP triggers
+*
+*  @lib DrmUtilityDmgrWrapper
+*  @since S60 v5.0
+*/
+class CDrmUtilityDmgrWrapper :
+    public CActive,
+    public MHttpDownloadMgrObserver,
+    public Roap::MRoapObserver,
+    public MDrmUtilityDmgrWrapper,
+    public MProgressDialogCallback
+    {
+private:
+
+    enum TDownloadState
+        {
+        EInit,
+        EGetMeteringTrigger,
+        ESaveMeteringTrigger,
+        EMeteringReportSubmit,
+        EGetPrUrlTrigger,
+        ESavePrUrlTrigger,
+        EPrRoapRequest,
+        EComplete
+        };
+public:
+
+    static CDrmUtilityDmgrWrapper* NewL();
+
+    static CDrmUtilityDmgrWrapper* NewLC();
+
+    virtual ~CDrmUtilityDmgrWrapper();
+
+    /**
+    * Download a ROAP trigger from URL and handle it
+    *
+    * @param aUrl  URL of ROAP trigger
+    */
+    void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl );
+
+    void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl,
+        CCoeEnv& aCoeEnv );
+
+    HBufC8* GetErrorUrlL();
+
+
+    // from base class MHttpDownloadMgrObserver
+
+    /**
+    * From MHttpDownloadMgrObserver.
+    * Handle download manager events
+    *
+    * @param aDownload the download
+    * @param aEvent the event
+    */
+    void HandleDMgrEventL( RHttpDownload& aDownload, THttpDownloadEvent aEvent );
+
+// From Roap::MRoapObserver
+    /**
+    * ConnectionConfL
+    * @return ETrue: the network can be establish
+    *         EFalse: the ROAP transaction is canceled
+    *
+    * @leave  System wide error code */
+    TBool ConnectionConfL();
+
+    /**
+    * ContactRiConfL
+    * @return ETrue: the user consent is achieved
+    *         EFalse: the user consent is not achieved
+    *
+    * @leave  System wide error code */
+    TBool ContactRiConfL();
+
+    /**
+    * TransIdConfL
+    * @return ETrue: the user consent is achieved
+    *         EFalse: the user consent is not achieved
+    *
+    * @leave  System wide error code */
+
+    TBool TransIdConfL();
+
+    /**
+    * RightsObjectDetailsL
+    *
+    * The function is called after successful completion of RO acquisition
+    * protocol. The passes information about stored rights objects to the
+    * observer.
+    *
+    * @since  3.0
+    * @param aRightsList: A list of pointers to rights objects.
+    *                     Contents of aRightsList are owend by ROAP engine
+    *
+    * @leave  System wide error code */
+    void RightsObjectDetailsL( const RPointerArray<CDRMRights>& aRightsList );
+
+    /**
+    * ContentDownloadInfoL
+    *
+    * The function is called when the ROAP engine notices that it is about to
+    * receive a multipart content as a ROAP response. The method must return via
+    * out-parameter the path to a temp folder where the content is saved during
+    * download. The name that is used as filename when saving the content to
+    * the appropriate palce and the maximum size of the content (a safety upper limit)
+    * must also be provided via out-parameters.
+    *
+    * @since 3.0
+    * @param aTempFolder: (out-param) The path of the temp folder, or KNullDesC
+    * @param aContentName: (out-param) The name of the content, or KNullDesC (defaut name is used)
+    * @param aMaxSize: (out-param) The maximum size of the content, or -1 if not known
+    *
+    * @leave System wide error code */
+
+    void ContentDownloadInfoL( TPath& aTempFolder,
+            TFileName& aContentName,
+            TInt& aMaxSize );
+
+    /**
+    * ContentDetailsL
+    *
+    * The function is called when the ROAP engine has received a DCF content (together
+    * with a ROAP response) The ROAP engine saves the DCF to the appropriate location
+    * and gives out the information about the saved DCF file by calling this method
+    *
+    * @since 3.0
+    * @param aPath: The path andf the filename of the saved DCF file
+    * @param aType: The plain MIME type of the saved DCF file
+    * @param aAppUid: The handler app UID of the saved DCF file
+    *
+    * @leave System wide error code */
+
+    void ContentDetailsL( const TDesC& aPath,
+            const TDesC8& aType,
+            const TUid& aAppUid );
+
+    /**
+    * RoapProgressInfoL
+    *
+    * The function provides progress information about ROAP processing to the
+    * observer
+    *
+    * @since  3.0
+    * @param aProgressInfo: An integer value representing the state of
+    *                       ROAP processing, counting in bytes
+    *
+    * @leave  System wide error code */
+
+    void RoapProgressInfoL( const TInt aProgressInfo );
+
+    /**
+    * ErrorUrlL
+    *
+    * The function is called in ROAP error case and it provides an error URL
+    * for the caller. The calling entity should send an HTTP GET request to
+    * the URL which should then return an HTML page.
+    *
+    * @since  3.0
+    * @param aErrorUrl: The error URL
+    *
+    *
+    * @leave  System wide error code */
+
+    void ErrorUrlL( const TDesC8& aErrorUrl );
+
+    /**
+    * PostResponseUrlL
+    *
+    * The function is called if handled ROAP metering report response
+    * contains PostResponseURL extension. The calling entity should send
+    * an HTTP GET request to the URL, which should return ROAP trigger,
+    * download descriptor or multipart message containing both
+    * download descriptor and ROAP trigger.
+    *
+    * @since  3.2
+    * @param aPostResponseUrl: The URL to be fetched
+    *                          after handling ROAP metering response
+    *                          with PostResponseURL extension.
+    *
+    *
+    * @leave  System wide error code */
+    void PostResponseUrlL( const TDesC8& aPostResponseUrl );
+
+public: // Call back methods of MAknProgressDialogCallback
+
+    /**
+    * ProgressDialog call back method.
+    * Get's called when a dialog is dismissed.
+    *
+    * @param aButtonId ID of the button pressed
+    */
+    void DialogDismissedL( TInt aButtonId );
+
+protected:
+    //from Cactive
+    virtual void DoCancel();
+
+    virtual void RunL();
+
+    virtual TInt RunError( TInt aError );
+private:
+
+    /**
+    * C++ default constructor.
+    */
+    CDrmUtilityDmgrWrapper();
+
+    void ConstructL();
+
+    /**
+    * Set the browser default access point to be used
+    */
+
+
+    void ShowProgressNoteL( );
+
+    void RemoveProgressNoteL( );
+
+    void DoConnectL( TDownloadState aNextState );
+
+    void DoDownloadRoapTriggerL( TDownloadState aNextState );
+
+    void DoSaveRoapTriggerL( TDownloadState aNextState );
+
+    void DoHandleRoapTriggerL( TDownloadState aNextState );
+
+    void CompleteToState( TDownloadState aNextState, TInt aError );
+
+private: // data
+
+    /**
+    * Download manager session
+    */
+    RHttpDownloadMgr iDlMgr;
+
+    /**
+    * Used to make downloads synchronous
+    */
+    CActiveSchedulerWait iWait;
+
+    /**
+    * to store information on download
+    */
+    TBool iDownloadSuccess;
+    TBool iConnectionError;
+
+    /**
+    * trigger URL
+    */
+    HBufC8* iTriggerUrl;
+
+    /**
+    * trigger buffer
+    */
+    HBufC8* iTriggerBuf;
+
+    TBool iDialogDismissed;
+
+    /**
+    * Progess note dialog and progress info
+    */
+    CAknProgressDialog* iProgressNoteDialog;        // owned
+    CEikProgressInfo* iProgressInfo;                // not owned
+    TInt iCurrentProgressValue;                     // owned
+    TInt iProgressIncrement;                        // owned
+
+    /**
+    * Control environment
+    */
+    CCoeEnv* iCoeEnv;
+
+    /**
+    * Is CoeEnv given
+    */
+    TBool iUseCoeEnv;
+
+    /**
+    * Error url for ROAP temporary error
+    */
+    HBufC8* iErrorUrl;
+
+    /**
+    * Post response url for ROAP prUrl
+    */
+    HBufC8* iPostResponseUrl;
+
+    /**
+    * IAP (from ROAP or from UI)
+    */
+    TUint32 iIapId;
+
+    TDownloadState iState;
+
+    Roap::CRoapEng* iRoapEng;
+
+    RFs iFs;
+
+    HBufC* iFileName;
+
+    DRM::CDrmUtilityConnection* iConnection;
+    };
+
+#endif // CDRMUTILITYDMGRWRAPPER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/buffercontainers.h	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: CBase derived container classes for easening
+*               dynamic memory allocation of TBuf<n> type variables
+*               (TName etc.)
+*/
+#ifndef   BUFFERCONTAINERS_H
+#define   BUFFERCONTAINERS_H
+
+#include <e32std.h>
+namespace DRM
+{
+template <typename T>
+NONSHARABLE_CLASS( CBufferContainer ): public CBase
+    {
+    // Note, this class is not intendend to be part of any API
+    public:
+        inline static CBufferContainer<T>* NewL();
+        inline static CBufferContainer<T>* NewLC();
+
+        inline virtual ~CBufferContainer();
+    private:
+        inline CBufferContainer();
+
+        //data
+    public:
+        // Contained TBuf member
+        T iBuffer;
+    };
+
+//Containers for some TBuf based types defined at e32cmn.h
+typedef CBufferContainer<TName> CNameContainer;
+typedef CBufferContainer<TFullName> CFullNameContainer;
+typedef CBufferContainer<TExitCategoryName> CExitCategoryNameContainer;
+typedef CBufferContainer<TFileName> CFileNameContainer;
+typedef CBufferContainer<TPath> CPathContainer;
+typedef CBufferContainer<TVersionName> CVersionNameContainer;
+typedef CBufferContainer<TUidName> CUidNameContainer;
+}
+
+#include "buffercontainers.inl"
+#endif // BUFFERCONTAINERS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/buffercontainers.inl	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef   BUFFERCONTAINERS_INL
+#define   BUFFERCONTAINERS_INL
+
+// ---------------------------------------------------------------------------
+// DRM::CBufferContainer::NewL
+// ---------------------------------------------------------------------------
+//
+template <typename T>
+inline DRM::CBufferContainer<T>* DRM::CBufferContainer<T>::NewL()
+{
+    CBufferContainer<T>* self( CBufferContainer<T>::NewLC() );
+    CleanupStack::Pop( self );
+    return self;
+}
+
+// ---------------------------------------------------------------------------
+// DRM::CBufferContainer::NewLC
+// ---------------------------------------------------------------------------
+//
+template <typename T>
+inline DRM::CBufferContainer<T>* DRM::CBufferContainer<T>::NewLC()
+{
+    CBufferContainer<T>* self( new (ELeave) CBufferContainer<T>() );
+    CleanupStack::PushL( self );
+    return self;
+}
+
+// ---------------------------------------------------------------------------
+// DRM::CBufferContainer::CBufferContainer
+// ---------------------------------------------------------------------------
+//
+template <typename T>
+inline DRM::CBufferContainer<T>::CBufferContainer()
+{}
+
+// ---------------------------------------------------------------------------
+// DRM::CBufferContainer::~CBufferContainer
+// ---------------------------------------------------------------------------
+//
+template <typename T>
+inline DRM::CBufferContainer<T>::~CBufferContainer()
+{}
+
+
+#endif // BUFFERCONTAINERS_INL
--- a/omadrm/drmengine/drmclock/Src/DRMClockClient.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,174 +0,0 @@
-/*
-* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Client side class implementation
-*
-*/
-
-
-// INCLUDE FILES
-#include "DRMClockClient.h"
-#include "DRMClientServer.h"
-
-#include "DRMLog.h"
-
-// EXTERNAL DATA STRUCTURES
-// EXTERNAL FUNCTION PROTOTYPES  
-
-// CONSTANTS
-// MACROS
-
-// LOCAL CONSTANTS AND MACROS
-// To initialize C/S parameters.
-#define PARAMS TAny* params[ KMaxMessageArguments ]; \
-for ( TUint8 i = 0; i < KMaxMessageArguments; ++i ) { params[ i ] = NULL; }
-#define CLEARPARAM Mem::FillZ( params, \
-KMaxMessageArguments * sizeof( TAny* ) );
-
-// Maximum number of message slots that we use
-const TInt KMaxMessageSlots = 3;
-
-
-// MODULE DATA STRUCTURES
-// LOCAL FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// RDRMClockClient::RDRMClockClient
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RDRMClockClient::RDRMClockClient()
-    {
-    }
-    
-// -----------------------------------------------------------------------------
-// RDRMClockClient::~RDRMClockClient
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RDRMClockClient::~RDRMClockClient()
-    {
-    }    
-
-// -----------------------------------------------------------------------------
-// RDRMClockClient::Connect
-// Opens connection to the server.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMClockClient::Connect()
-    {
-    TInt ret = KErrNone;
-    
-    DRMLOG( _L( "RDRMClockClient::Connect" ) );
-
-    const TVersion requiredVersion( 
-        DRMClock::KServerMajorVersion,
-        DRMClock::KServerMinorVersion,
-        DRMClock::KServerBuildVersion );
-    
-    DRMLOG( _L("RDRMClockClient: Create a new session" ) );
-    ret = CreateSession( DRMClock::KDRMServerName,
-                         requiredVersion, 
-                         KMaxMessageSlots );
-
-    DRMLOG2( _L( "Result: %d") , ret );
-    
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMClockClient::Close
-// Closes the connection to the server.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RDRMClockClient::Close() 
-    {
-    DRMLOG( _L( "RDRMClockClient::Close" ) );
-
-    RHandleBase::Close();
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMClockClient::GetSecureTime
-// Gets the secure time from the DRMClockServer
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMClockClient::GetSecureTime( TTime& aTime, TInt& aTimeZone,
-                                     DRMClock::ESecurityLevel& aSecurityLevel )
-    {
-    TPckg<TTime> package(aTime);
-    TPckg<TInt> package2(aTimeZone);
-    TPckg<DRMClock::ESecurityLevel> package3(aSecurityLevel);
-                    
-    DRMLOG( _L( "RDRMClockClient::GetSecureTime" ) );
-    TInt error = KErrNone;
-    
-    // For C/S communications.
-    PARAMS;
-    
-    // Set the parameters.
-    params[ 0 ] = reinterpret_cast< TAny* >( &package );
-    params[ 1 ] = reinterpret_cast< TAny* >( &package2 );
-    params[ 2 ] = reinterpret_cast< TAny* >( &package3 );
-    
-    // Send the message.
-    error = SendReceive( DRMClock::EGetDRMTime, params );
-    
-    // Reset
-    CLEARPARAM;
-    
-    DRMLOG2( _L( "RDRMClockClient::GetSecureTime: %d" ), error );
-
-    return error;
-    }
-
-
-// -----------------------------------------------------------------------------
-// RDRMClockClient::UpdateSecureTime
-// Updates the secure time on the DRMClockServer
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMClockClient::UpdateSecureTime( const TTime& aTime, const TInt& aTimeZone )
-    {
-    TInt error = KErrNone;
-    TPckg<TTime> package(aTime);
-    TPckg<TInt> package2(aTimeZone);
-    
-    DRMLOG( _L( "RDRMClockClient::UpdateSecureTime" ) );
-    
-    // For C/S communications.
-    PARAMS;
-    
-    params[ 0 ] = reinterpret_cast< TAny* >( &package );
-    params[ 1 ] = reinterpret_cast< TAny* >( &package2 );
-    
-    error = SendReceive( DRMClock::EUpdateDRMTime, params );
-    
-    CLEARPARAM;
-    
-    DRMLOG2( _L( "RDRMClockClient::UpdateSecureTime: " ), error );
-
-    // All done.
-    return error;
-    }
-
-// ========================== OTHER EXPORTED FUNCTIONS =========================
-
-//  End of File  
--- a/omadrm/drmengine/group/CryptoPrep.flm	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmengine/group/CryptoPrep.flm	Mon May 03 12:46:34 2010 +0300
@@ -1,4 +1,4 @@
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
 # under the terms of the License "Eclipse Public License v1.0"
@@ -21,6 +21,11 @@
 
 crypto_files:=$(wildcard $(EXTENSION_ROOT)/../drmengine/drmcrypto/CMLA/*.cpp)
 
+
+GUARD:=done_$(call sanitise,$(CLEANTARGETS))
+ifeq ($($(GUARD)),)
+$(GUARD):=1
+
 BITMAP :: $(CREATABLEPATH)
 
 ifeq ($(crypto_files),)
@@ -29,6 +34,8 @@
 	$(GNUCP) $(CREATABLEPATH)/../CMLA/CmlaCrypto.cpp $(CREATABLEPATH)/cmlacrypto.cpp
 endif
 	$(GNUCP) $(CREATABLEPATH)/../src/OmaCrypto.cpp $(CREATABLEPATH)/omacrypto.cpp
+	$(GNUCHMOD) u+w $(CREATABLEPATH)/cmlacrypto.cpp
+	$(GNUCHMOD) u+w $(CREATABLEPATH)/omacrypto.cpp
 
 # Create dirs
 $(call makepath,$(CREATABLEPATH))
@@ -36,3 +43,11 @@
 ## Clean up
 $(eval $(call GenerateStandardCleanTarget,$(CLEANTARGETS)))
 
+## What
+$(eval $(call whatmacro,$(CLEANTARGETS)))
+
+
+else
+$(info <debug>$(PLATFORM) $(CFG), up-to-date $(CLEANTARGETS)</debug>)
+
+endif
--- a/omadrm/drmengine/group/ROAPHandler.mmp	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmengine/group/ROAPHandler.mmp	Mon May 03 12:46:34 2010 +0300
@@ -113,8 +113,9 @@
 LIBRARY     DcfRep.lib
 LIBRARY     caf.lib                     // Embedding domain ROs
 LIBRARY     cafutils.lib                // Embedding domain ROs
-LIBRARY     centralrepository.lib       // Browser default AP
+LIBRARY     centralrepository.lib       // CRepository
 LIBRARY     cmmanager.lib
+LIBRARY     extendedconnpref.lib netmeta.lib // TExtendedConnPref
 
 LIBRARY     SysUtil.lib
 LIBRARY     HttpFilterCommon.lib
--- a/omadrm/drmengine/keystorage/src/DrmStdKeyStorage.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmengine/keystorage/src/DrmStdKeyStorage.cpp	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -211,7 +211,7 @@
     iFileMan = CFileMan::NewL(iFs);
 
 #ifdef __DRM_OMA2
-    SelectDefaultRootL();
+    TRAP_IGNORE( SelectDefaultRootL() ); // Allow startup anyway.
 #endif
 
     iDeviceSpecificKey.Copy(KDefaultKey);
--- a/omadrm/drmengine/roap/inc/RoapConnection.h	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmengine/roap/inc/RoapConnection.h	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -23,7 +23,6 @@
 
 #include <e32base.h>
 #include <es_sock.h>
-#include <commdbconnpref.h>
 
 namespace Roap
 {
@@ -86,7 +85,6 @@
         RConnection iConnection;
         TState iState;
         TRequestStatus* iParentStatus;
-        TCommDbConnPref iConnPref;
     };
 }
 
--- a/omadrm/drmengine/roap/src/RoapConnection.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmengine/roap/src/RoapConnection.cpp	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -22,54 +22,16 @@
 #include <cmconnectionmethoddef.h>
 #include <cmmanager.h>
 #include <centralrepository.h>
-#include <commdbconnpref.h>
+#include <extendedconnpref.h>
 #include <cdblen.h>
+#include <cdbcols.h> // IAP, COMMDB_ID
 #include <es_enum.h>
-#ifdef __SERIES60_NATIVE_BROWSER
-#include <browseruisdkcrkeys.h>
-#endif
 #include "RoapConnection.h"
 #include "RoapDef.h"
 #include "RoapLog.h"
 
 
 
-#ifndef __SERIES60_NATIVE_BROWSER
-    const TUid KCRUidBrowser   = {0x10008D39};
-    const TUint32 KBrowserDefaultAccessPoint =  0x0000000E;
-    const TUint32 KBrowserAccessPointSelectionMode = 0x0000001E;
-    const TUint32 KBrowserNGDefaultSnapId = 0x00000053;
-#endif
-
-
-// ================= LOCAL FUNCTIONS =========================================
-// ---------------------------------------------------------------------------
-// IapIdOfDefaultSnapL
-// for trapping purposes only
-// ---------------------------------------------------------------------------
-//
-LOCAL_C TUint32 IapIdOfDefaultSnapL(
-    RCmManager& aCmManager,
-    const TUint32 aDefaultSnap )
-    {
-    RCmDestination dest( aCmManager.DestinationL( aDefaultSnap ) );
-    CleanupClosePushL( dest );
-    TUint32 iapIdOfDest( 0 );
-
-    if ( dest.ConnectionMethodCount() <= 0 )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) );
-    CleanupClosePushL( cMeth );
-
-    iapIdOfDest = cMeth.GetIntAttributeL( CMManager::ECmIapId );
-    CleanupStack::PopAndDestroy( &cMeth );
-    CleanupStack::PopAndDestroy( &dest );
-    return iapIdOfDest;
-    }
-
 // ================= MEMBER FUNCTIONS =======================
 
 // ---------------------------------------------------------------------------
@@ -104,8 +66,6 @@
 ( TUint32 aIap, TRequestStatus* aStatus )
     {
     LOGLIT( "CRoapConnection::ConnectL" )
-    const TInt KAlwaysAskSelectionMode( 1 );
-    const TInt KDestinationSelectionMode( 2 );
 
     if ( iState == EInit )
         {
@@ -120,11 +80,9 @@
         CleanupClosePushL<RConnection>( iConnection );
 
         TConnectionInfoBuf connInfo;
-        TInt ap = 0;
-        TInt alwaysAsk = 0;
-        TUint count;
+        TUint count(0);
         User::LeaveIfError( iConnection.EnumerateConnections( count ) );
-        TUint i;
+        TUint i(0);
         if ( count )
             {
             // Select from existing connections. Try to make AP match.
@@ -152,71 +110,44 @@
         else
             {
             // No existing connections, create new one.
-#ifdef __WINS__
-            // WINS connection creation does not work if preferences are given.
-            // Defaults are to be used always.
-            iConnection.Start( iStatus );
-#else
-            // Note: the TCommDbConnPref must NOT be stack variable.
-            // It must persist until completion of RConnection::Start().
-            iConnPref.SetDirection( ECommDbConnectionDirectionOutgoing );
-            //iConnPref.SetDialogPreference( ECommDbDialogPrefWarn )
-            iConnPref.SetBearerSet( ECommDbBearerCSD | ECommDbBearerWcdma );
-            // New connection is always created with user-selected AP
-            // so 0 is used instead of aIap.
+            // Create overrides
+            TConnPrefList prefList;
+            TExtendedConnPref prefs;
+
+            prefs.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourConnSilent);
 
-            TInt defaultSnap( 0 );
-            CRepository* repository( NULL );
-            repository = CRepository::NewL( KCRUidBrowser );
-            CleanupStack::PushL( repository );
-
-            repository->Get( KBrowserDefaultAccessPoint, ap);
-            repository->Get( KBrowserAccessPointSelectionMode, alwaysAsk );
-            repository->Get( KBrowserNGDefaultSnapId, defaultSnap );
-            CleanupStack::PopAndDestroy( repository );
-            repository = NULL;
-
-            TUint32 iapd32 = 0;
-            TInt err = KErrNone;
-
-            if ( ap <= KErrNotFound && defaultSnap <= KErrNotFound )
+            //Fetch default connection
+            TBool hasDefault(ETrue);
+            TCmDefConnValue defConn;
+            RCmManager cmManager;
+            cmManager.OpenLC();
+            cmManager.ReadDefConnL(defConn);
+            if (defConn.iType == ECmDefConnConnectionMethod)
                 {
-                alwaysAsk = KAlwaysAskSelectionMode;
+                prefs.SetIapId(defConn.iId);
+                }
+            else if (defConn.iType == ECmDefConnDestination)
+                {
+                prefs.SetSnapId(defConn.iId);
                 }
             else
                 {
-                RCmManager cmManager;
-                cmManager.OpenLC();
-                if ( !alwaysAsk )
-                    {
-                    TRAP( err, iapd32 = cmManager.GetConnectionMethodInfoIntL(
-                            ap, CMManager::ECmIapId ) );
-                    }
-                else if ( alwaysAsk == KDestinationSelectionMode )
-                    {
-                    TRAP( err, iapd32 = IapIdOfDefaultSnapL(
-                            cmManager, defaultSnap ) );
-                    }
-                CleanupStack::PopAndDestroy( &cmManager );
+                hasDefault = EFalse;
                 }
-
-            if ( err || alwaysAsk == KAlwaysAskSelectionMode )
+            // End of fetch default connection
+            if (hasDefault)
                 {
-                // Always ask
-                LOGLIT( "SetDialogPreference( ECommDbDialogPrefPrompt )" )
-                iConnPref.SetDialogPreference( ECommDbDialogPrefPrompt );
-                iapd32 = 0;
+                prefList.AppendL(&prefs);
+
+                // Start an Outgoing Connection with overrides
+                iConnection.Start(prefList, iStatus);
                 }
             else
                 {
-                // User defined
-                LOGLIT( "SetDialogPreference( ECommDbDialogPrefDoNotPrompt )" )
-                iConnPref.SetDialogPreference( ECommDbDialogPrefDoNotPrompt );
+                // No default found --> trying with query
+                iConnection.Start(iStatus);
                 }
-
-            iConnPref.SetIapId( iapd32 );
-            iConnection.Start( iConnPref, iStatus );
-#endif
+            CleanupStack::PopAndDestroy(&cmManager);
             iState = EConnecting;
             SetActive();    // The only path with a real async request.
             }
--- a/omadrm/drmengine/roap/src/RoapEng.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmengine/roap/src/RoapEng.cpp	Mon May 03 12:46:34 2010 +0300
@@ -80,6 +80,7 @@
 #include "DcfEntry.h"
 #include "Base64.h"
 #include "drmsettingsplugininternalcrkeys.h"
+#include "buffercontainers.h"
 
 
 #define STUB_C_CLASS_IN_NAMESPACE( n, c ) namespace n { class c: public CBase { private: c(); public: virtual ~c(); }; } n::c::c() {} n::c::~c() {}
@@ -2162,7 +2163,7 @@
 #ifndef __WINS__
     TInt numPhone = 0;
     TUint32 caps = 0;
-    TName tsyName;
+    DRM::CNameContainer* tsyName(NULL);
     RMobilePhone phone;
     RTelServer etelServer;
     RTelServer::TPhoneInfo phoneInfo;
@@ -2173,18 +2174,20 @@
     CleanupClosePushL( etelServer );
 
     User::LeaveIfError( etelServer.LoadPhoneModule( KMmTsyModuleName ) );
-    User::LeaveIfError( etelServer.EnumeratePhones( numPhone) );
+    User::LeaveIfError( etelServer.EnumeratePhones( numPhone ) );
 
+    tsyName = DRM::CNameContainer::NewLC();
     for (TInt i(0); i < numPhone; i++)
         {
         User::LeaveIfError( etelServer.GetPhoneInfo( i, phoneInfo ) );
-        User::LeaveIfError( etelServer.GetTsyName( i,tsyName ) );
+        User::LeaveIfError( etelServer.GetTsyName( i,tsyName->iBuffer ) );
 
-        if ( tsyName.CompareF( KMmTsyModuleName ) == 0)
+        if ( !tsyName->iBuffer.CompareF( KMmTsyModuleName ) )
             {
             break;
             }
         }
+    CleanupStack::PopAndDestroy( tsyName );
 
     User::LeaveIfError( phone.Open( etelServer, phoneInfo.iName ) );
     CleanupClosePushL( phone );
--- a/omadrm/drmengine/roap/src/RoapHttpHandler.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmengine/roap/src/RoapHttpHandler.cpp	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -21,15 +21,19 @@
 #include <http/thttphdrval.h>
 #include <httpfiltercommonstringsext.h>
 
+//#include <CookieFilterInterface.h>
+//#include <uaproffilter_interface.h>
+//#include <HttpFilterProxyInterface.h>
+#include <httpfilteriopinterface.h>
+
 #include "RoapHttpHandler.h"
+#include "RoapConnection.h"
+#include "RoapResponse.h"
 #include "RoapObserver.h"
 #include "RoapDef.h"
 #include "RoapLog.h"
 
-//#include <CookieFilterInterface.h>
-//#include <uaproffilter_interface.h>
-//#include <HttpFilterProxyInterface.h>
-#include <httpfilteriopinterface.h>
+#include "buffercontainers.h"
 
 
 using namespace Roap;
@@ -39,12 +43,8 @@
 // The time out value in HTTP, 30 sec
 LOCAL_D const TInt KRoapTimeoutValue = 60000000;
 
-_LIT8( KTestUserName, "iopvf" );
-_LIT8( KTestPassword, "r72005" );
-/*
-_LIT8( KTestUserName, "moria" );
-_LIT8( KTestPassword, "mellon" );
-*/
+_LIT8( KTestUserName, "" );
+_LIT8( KTestPassword, "" );
 
 // ================= MEMBER FUNCTIONS =======================
 
@@ -564,6 +564,7 @@
             {
             LOG( _L("HTTP event ERedirectRequiresConfirmation received") );
             iTransaction.SubmitL();
+            break;
             }
 
         default:
@@ -641,13 +642,13 @@
 
         if ( iResponse->iDataType == TDataType( KMultipartRelatedType ) )
             {
-            TPath tempPath;
-            TFileName fileName;
+            DRM::CPathContainer* tempPath( DRM::CPathContainer::NewLC() );
+            DRM::CFileNameContainer* fileName( DRM::CFileNameContainer::NewLC() );
             TInt maxSize( 0 );
 
             if ( iObserver )
                 {
-                iObserver->ContentDownloadInfoL( tempPath, fileName, maxSize );
+                iObserver->ContentDownloadInfoL( tempPath->iBuffer, fileName->iBuffer, maxSize );
                 }
 
             boundaryStr = srtPool.StringF( HttpFilterCommonStringsExt::EBoundary,
@@ -666,8 +667,10 @@
                 LOG( _L("Error: multipart boundary missing") );
                    User::Leave( KErrRoapGeneral );
                 }
-            iResponse->SetDcfPathL( tempPath );
-            iResponse->SetContentNameL( fileName );
+            iResponse->SetDcfPathL( tempPath->iBuffer );
+            iResponse->SetContentNameL( fileName->iBuffer );
+            CleanupStack::PopAndDestroy( fileName );
+            CleanupStack::PopAndDestroy( tempPath );
             iReportBytes = ETrue;
 
             if ( iObserver )
--- a/omadrm/drmengine/roapstorage/inc/RoapStorageSession.h	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmengine/roapstorage/inc/RoapStorageSession.h	Mon May 03 12:46:34 2010 +0300
@@ -157,8 +157,7 @@
 
     void UpdateDrmTimeL( const RMessage2& aMessage );
 
-    void
-        CRoapStorageSession::VerifyOcspResponsesL( const RMessage2& aMessage );
+    void VerifyOcspResponsesL( const RMessage2& aMessage );
 
     void GetOcspResponderIdL( const RMessage2& aMessage );
 
--- a/omadrm/drmengine/server/inc/DRMActiveDeletion.h	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,140 +0,0 @@
-/*
-* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Active object handling "Delete Expired Permission"
-*
-*/
-
-
-#ifndef DRMACTIVEDELETION_H
-#define DRMACTIVEDELETION_H
-
-// INCLUDES
-
-#include <e32base.h>
-
-// CONSTANTS
-
-// MACROS
-
-// DATA TYPES
-
-// FORWARD DECLARATIONS
-class CDRMRightsDB;
-class CDRMDbSession;                                                         
-
-// FUNCTION PROTOTYPES
-
-// CLASS DECLARATION
-
-/**
-*  CDRMActiveDeletion implements expired rights cleanup callback
-*  for drm rights database
-*
-*  @lib RightsServer.exe
-*  @since 3.0
-*/
-NONSHARABLE_CLASS( CDRMActiveDeletion ) : public CActive
-    {
-    public: // Constructors and destructor
-        
-        /**
-        * NewL
-        *
-        * Creates an instance of the CDRMRightCleaner class and returns a pointer
-        * to it
-        *
-        * @since    3.0
-        * @param    aFs : Open file server session
-        * @param    aDatabase : CDRMRightsDB object
-        * @param    aStatus : The request status to complete when the operation is 
-        *                     fully done
-        * @param    aDatabasePath : full pathname of the database path
-        * @param    aTime : Time to check expiration against 
-        *
-        * @return   Functional CDRMActiveDeletion object, Function leaves if an error
-        *           occurs.
-        */
-        static CDRMActiveDeletion* NewLC( const RMessagePtr2& aMessage,
-                                          CDRMDbSession& aSession );
-          
-        /**
-        * Destructor
-        */
-        virtual ~CDRMActiveDeletion();
-
-    public: // New functions    
-
-        /**
-        * ActivateL
-        * 
-        * Activates the object by adding it to scheduler etc.
-        *
-        * @since    3.0
-        * @return   None
-        *
-        */      
-        void ActivateL( const TTime& aSecureTime,
-                        CDRMRightsDB& aDb );
-         
-    protected:
-    
-        /**
-        * Default Constructor - First phase.
-        */
-        CDRMActiveDeletion( const RMessagePtr2& aMessage,
-                            CDRMDbSession& aSession ); 
-        
-        /**
-        * From CActive: RunL.
-        */
-        void RunL();
-
-        /**
-        * From CActive: DoCancel performs cancel
-        */        
-        void DoCancel();
-      
-        /**
-        * From CActive: RunError checks the errors from RunL.
-        */
-        // void RunError();                        
-                        
-    private:
-        /**
-        * Default Constructor - First phase. Prevented.
-        */
-        CDRMActiveDeletion(); 
-    
-        /**
-        * Assignment operator - Prevented
-        */
-        CDRMActiveDeletion& operator =( const CDRMActiveDeletion& );    
-    
-        /**
-        * Copy constructor - Prevented
-        */
-        CDRMActiveDeletion( const CDRMActiveDeletion& );                
-     
-    private:
-        // The message.
-        const RMessagePtr2& iMessage;
-        CDRMDbSession& iSession;
-    
-        // The instane doing the deletion.
-        CActive* iActiveOperation;
-    };
-
-#endif      // DRMACTIVEDELETION_H   
-            
-// End of File
--- a/omadrm/drmengine/server/inc/DRMPointerArray.h	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmengine/server/inc/DRMPointerArray.h	Mon May 03 12:46:34 2010 +0300
@@ -39,7 +39,7 @@
         TBool iDoResetAndDestroy;
     };
 
-template < class T > NONSHARABLE_CLASS( CDRMPointerArray ) : public CBase, public RDRMPointerArray< class T >
+template < class T > NONSHARABLE_CLASS( CDRMPointerArray ) : public CBase, public RDRMPointerArray< T >
     {
     public:
         static CDRMPointerArray* NewLC( TInt aGranularity );
--- a/omadrm/drmengine/server/src/DRMActiveDeletion.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-/*
-* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of the parent storage for Decision Making Machine
-*
-*/
-
-
-// INCLUDE FILES
-#include "drmactivedeletion.h"
-#include "drmrightsdb.h"
-#include "drmrightscleaner.h"
-#include "drmdbsession.h"
-
-// EXTERNAL DATA STRUCTURES
-
-// EXTERNAL FUNCTION PROTOTYPES  
-
-// CONSTANTS
-
-// MACROS
-
-// LOCAL CONSTANTS AND MACROS
-
-// MODULE DATA STRUCTURES
-
-// LOCAL FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-    
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CDRMActiveDeletion::NewLC
-//
-// Two-phase constructor.
-// -----------------------------------------------------------------------------
-//
-CDRMActiveDeletion* CDRMActiveDeletion::NewLC( const RMessagePtr2& aMessage,
-                                               CDRMDbSession& aSession )
-    {
-    CDRMActiveDeletion* self = new( ELeave ) CDRMActiveDeletion( aMessage,
-                                                                 aSession );
-    CleanupStack::PushL( self );
-    
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CDRMActiveDeletion::~CDRMActiveDeletion
-//
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CDRMActiveDeletion::~CDRMActiveDeletion()
-    {
-    if ( iActiveOperation )
-        {
-        // Construction was successful, but 
-        // something has went wrong.
-
-        iActiveOperation->Cancel(); 
-        iMessage.Complete( KErrCancel );
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CDRMActiveDeletion::ActivateL
-//
-// Activate the thing by issuing a request to the DB and executing it also.
-// -----------------------------------------------------------------------------
-//
-void CDRMActiveDeletion::ActivateL( const TTime& aTime,
-                                    CDRMRightsDB& aDb )
-    {
-    CActiveScheduler::Add( this );
-    
-    CDRMRightsCleaner* cleaner = 
-        aDb.DeleteExpiredPermissionsL( aTime, iStatus );
-    CleanupStack::PushL( cleaner );
-    cleaner->ExecuteCleanupLD();
-    CleanupStack::Pop();
-    
-    SetActive();
-    iActiveOperation = cleaner;    
-    }
-
-// -----------------------------------------------------------------------------
-// CDRMActiveDeletion::RunL
-//
-// Handles the completition of the request.
-// -----------------------------------------------------------------------------
-//
-void CDRMActiveDeletion::RunL()
-    {
-    // All done.
-    iMessage.Complete( iStatus.Int() );
-    
-    // iActiveOperation deletes itself.
-    iActiveOperation = NULL;
-    
-    Deque();
-    
-    iSession.AsyncOperationDone();
-    }
-    
-// -----------------------------------------------------------------------------
-// CDRMActiveDeletion::DoCancel
-//
-// Cancels the operation.
-// -----------------------------------------------------------------------------
-//
-void CDRMActiveDeletion::DoCancel()
-    {
-    iActiveOperation->Cancel();
-    iActiveOperation = NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// CDRMActiveDeletion::CDRMActiveDeletion
-//
-// Constructor.
-// -----------------------------------------------------------------------------
-//
-CDRMActiveDeletion::CDRMActiveDeletion( const RMessagePtr2& aMessage,
-                                        CDRMDbSession& aSession ):
-CActive( EPriorityLow ),
-iMessage( aMessage ),
-iSession( aSession )
-    {
-    // Nothing
-    }
-    
-// End of file
--- a/omadrm/drmengine/server/src/DRMRightsClientStub.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,253 +0,0 @@
-/*
-* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Client side class implementation
-*
-*/
-
-
-// INCLUDE FILES
-#include <s32file.h>
-#include "DRMRightsClient.h"
-#include "DRMClientServer.h"
-#ifdef _DRM_TESTING
-#include "logfile.h"
-#endif
-
-// EXTERNAL DATA STRUCTURES
-// EXTERNAL FUNCTION PROTOTYPES  
-#ifdef CLIENT_STARTS_SERVER
-extern TInt DRMServerStarter();
-#endif
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::RDRMRightsClient
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RDRMRightsClient::RDRMRightsClient() :
-    iPtr( NULL )
-    {
-    }
-    
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::~RDRMRightsClient
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RDRMRightsClient::~RDRMRightsClient()
-    {
-    }    
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::Connect
-// Opens connection to the server.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMRightsClient::Connect()
-    {
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::Close
-// Closes the connection to the server.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RDRMRightsClient::Close() 
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::AddRecord
-// Add a new entry to the rights database.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMRightsClient::AddRecord( const TDesC8& aCEK, // Content encryption key
-                                  // The rights object which is to be added
-                                  const CDRMPermission& aRightsObject, 
-                                  const TDesC8& aCID, // Content-ID 
-                                  TDRMUniqueID& aID ) // Unique ID, out-parameter
-    {
-    return KErrNone;
-    }
-
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::GetDBEntriesL
-// Get a file name from the server. The file contains the rights objects,
-// which are then converted to RPointerArray.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void RDRMRightsClient::GetDBEntriesL( const TDesC8& aId,
-                                      RPointerArray< CDRMPermission >& aRightsList )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::GetDbEntryL
-// Get a single RO from the server.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CDRMPermission* RDRMRightsClient::GetDbEntryL( const TDesC8& aContentID,
-                                                 const TDRMUniqueID& aUniqueID )
-    {
-    CDRMPermission* object = new (ELeave) CDRMPermission;
-    object->iUniqueID = aUniqueID;
-    return object;
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::DeleteDbEntry
-// Deletes all rights objects associated with the given UID.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMRightsClient::DeleteDbEntry( const TDesC8& aContentID )
-    {
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::DeleteDbEntry
-// Delete a single rights object identified by given parameters.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMRightsClient::DeleteDbEntry( const TDesC8& aContentID,
-                                      const TDRMUniqueID& aUniqueID )
-    {
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::ExportContentIDList
-// Overloaded method: requests all content IDs to be put to a file. 
-// Assumes that the given descriptor represents a buffer large enough to
-// contain the file name.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMRightsClient::ExportContentIDList( TDes& aFileName )
-    {
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::ExportContentIDList
-// Overloaded method: requests all content IDs to be put to a file, 
-// and then converts the file into RPointerArray.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMRightsClient::ExportContentIDList( RPointerArray< HBufC8 >& aCIDList )
-    {
-    return KErrNone;
-    }
-
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::GetDecryptionKey
-// Fetches the decryption key from the server.
-// Uses TR mechanisms. Uses asynchronous C/S call.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMRightsClient::GetDecryptionKey( const TInt aIntent,
-                                        const TDesC8& aContentID,
-                                        const TBool aUpdate,
-                                        TDes8& aKey )
-    {
-    aKey.Copy(_L("0000000000000000"));
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::CheckRights
-// Checks if appropriate rights exist for a certain content ID.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMRightsClient::CheckRights( const TInt aIntent,
-                                    const TDesC8& aContentID )
-    {
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::Count
-// Returns the amount of unique content IDs in the database.
-// If an error occurs, a negative value is returned (Symbian OS / DRM 3 specific
-// error code).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMRightsClient::Count()
-    {
-    return 1;
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::DeleteAll
-// Empties the database.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMRightsClient::DeleteAll()
-	{
-	return KErrNone;
-	}
-
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::Consume()
-// Consume the right with specific intent and contentID
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMRightsClient::Consume( const TInt aIntent, const TDesC8& aContentID, const TInt aActionIntent )
-	{
-	return KErrNone;
-	}
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::CalculatePadding
-// Calculate the padding from a data block and a certain content ID.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMRightsClient::CalculatePadding(
-    const TDesC8& aContentID,
-    const TDesC8& aLastTwoDataBlocks)
-    {
-    return 0;
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::FileToListL
-// Converts the given file into an array.
-// -----------------------------------------------------------------------------
-//
-void RDRMRightsClient::FileToListL( RFs& aFs,
-                                   const TDesC& aFileName,
-                                   RPointerArray< CDRMPermission >& aList )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMRightsClient::URIFileToArrayL
-// Converts the given file into an array.
-// -----------------------------------------------------------------------------
-//
-void RDRMRightsClient::URIFileToArrayL( RFs& aFs,
-                                       const TDesC& aFile,
-                                       RPointerArray< HBufC8 >& aList )
-    {
-    }
-
-// ========================== OTHER EXPORTED FUNCTIONS =========================
-
-//  End of File  
--- a/omadrm/drmengine/server/src/DRMServerStarter.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,167 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  This file is used only if RDRMRightsClient starts the
-*                DRM Rights Database server. 
-*
-*/
-
-// INCLUDE FILES
-#include   <e32std.h>
-#include    <e32uid.h>
-#include <f32file.h>
-
-#ifdef RD_MULTIPLE_DRIVE
-#include <DriveInfo.h>
-#endif
-
-#include "drmengineclientserver.h"
-
-// EXTERNAL DATA STRUCTURES
-// EXTERNAL FUNCTION PROTOTYPES  
-// CONSTANTS
-#ifdef __WINS__
-LOCAL_C const TUint KServerMinHeapSize =  0x1000;  
-LOCAL_C const TUint KServerMaxHeapSize = 0x300000; 
-_LIT( KRightsServerFile, "RightsServer" );
-#else
-
-#ifdef RD_MULTIPLE_DRIVE
-_LIT( KRightsServerFile, "%c:\\RightsServer.exe" );
-#else
-_LIT( KRightsServerFile, "e:\\RightsServer.exe" );
-#endif
-#endif
-
-// MACROS
-// LOCAL CONSTANTS AND MACROS
-// MODULE DATA STRUCTURES
-// LOCAL FUNCTION PROTOTYPES
-LOCAL_C TInt CreateServer( void );
-
-// FORWARD DECLARATIONS
-
-// ============================= LOCAL FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CreateServer launches the DRM Rights server [process (THUMB/ARMI)|thread (WINS)]. 
-// Returns: KErrNone: No errors.
-//          <KErrNone: Symbian wide error code.
-// -----------------------------------------------------------------------------
-//
-LOCAL_C TInt CreateServer( void )
-    {
-    TInt error = KErrNone;
-    
-        RProcess server;
-        
-#ifndef RD_MULTIPLE_DRIVE
-    
-        error = server.Create( KRightsServerFile, 
-                               KNullDesC );
-    
-#else //RD_MULTIPLE_DRIVE
-        
-        RFs fs;
-        TInt driveNumber( -1 );
-        TChar driveLetter;
-        DriveInfo::GetDefaultDrive( DriveInfo::EDefaultMassStorage, driveNumber );
-        
-        error = fs.Connect();
-        if( error != KErrNone )
-            {
-            fs.Close();
-            return error;
-            }
-        
-        fs.DriveToChar( driveNumber, driveLetter );
-        fs.Close();
-	
-        TFileName rightsServerFile;
-        rightsServerFile.Format( KRightsServerFile, (TUint)driveLetter );
-    
-        error = server.Create( rightsServerFile, 
-                               KNullDesC );
-    
-#endif
-        
-        if ( !error )
-            {
-            // Give some time to the process to start.
-            User::After( 1000 );
-            
-        // Kick the server up & running.
-        server.Resume();
-            
-        // Local handle not needed anymore.
-        server.Close();
-        }
-        
-    return error;
-    }
-    
-// ============================ MEMBER FUNCTIONS ===============================
-    
-// ========================== OTHER EXPORTED FUNCTIONS =========================
-    
-// -----------------------------------------------------------------------------
-// DRMServerStarter starts the actual server.
-// Returns: KErrNone: All went OK, no errors.
-//          <KErrNone: Symbian wide error code.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt DRMServerStarter()
-    {
-    RSemaphore semaphore;
-    TFindServer server( DRMEngine::KServerName );
-    TFullName name;
-    
-    // Check if the server is already running.
-    TInt error = server.Next( name );
-    
-    if ( !error )
-        {
-        // Yep, it's already running.
-        return KErrNone;
-        }
-
-    error = semaphore.CreateGlobal( DRMEngine::KDRMSemaphore,   // name
-                                    0 ,              // count
-                                    EOwnerThread ); // owner
-    
-    if ( error == KErrAlreadyExists )
-        {
-        error = semaphore.OpenGlobal( DRMEngine::KDRMSemaphore );
-        }
-        
-    if ( !error )
-        {
-        error = CreateServer();
-        if ( !error )
-            {
-            // Wait until server has done all its things.
-            semaphore.Wait();
-            
-            // Signal the (possible) next one waiting in line. Server
-            // only signals the semaphore once but there might be several
-            // clients waiting for this semaphore, in theory.
-            semaphore.Signal();
-            }
-        
-        // Semaphore can be destroyed.
-        semaphore.Close();
-        }
-        
-    return error; 
-    }
-//  End of File
--- a/omadrm/drmengine/server/src/drmcrypto.c	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,687 +0,0 @@
-/*
-* Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  DRM Crypto functionality
-*
-*/
-
-
-
-/*
-
-            DRMCrypto
-            --------------------------
-
-            SW module - ANSI C
-
-Location:           -
-
-Filename:           drmcrypto.c
-
-Document code:      -
-
-/* ------------------------------------------------------------------------- */
-
-/*  1    ABSTRACT
-    1.1    Module type
-    1.2    Functional description
-    1.3    Notes
-
-    2    CONTENTS
-
-    3    GLOSSARY
-
-    4    REFERENCES
-
-    5    EXTERNAL RESOURCES
-    5.1    Mandatory include files
-    5.2    Library include files
-    5.3    Interface include files
-
-    6    LOCAL DEFINITIONS
-    6.1    Local include files
-    6.2    Local constants
-    6.3    Local macros
-    6.3.1    dummy_message_type
-    6.3.2    generate_connection_address
-    6.4    Local data types
-    6.5    Local data structures
-    6.6    Local function prototypes
-
-    7    MODULE CODE
-    7.1     DRMCrypto_Encrypt
-	7.2	    DRMCrypto_Decrypt
-	7.3		DRMCrypto_EncryptRightsDb
-	7.4		DRMCrypto_DecryptRightsVDb
-	7.5		DRMCrypto_AddPadding
-	7.6		DRMCrypto_RemovePadding
-	7.7		DRMCrypto_GenerateKey
-	7.8		DRMCrypto_GenerateIV
-
-
-
-
-
-*/
-
-
-/*  3    GLOSSARY
-		 -
-*/
-
-/*  4    REFERENCES
-
-    Specification reference
-
-    DRM Engine Crypto Interface Specification
-
-
-    Design reference
-
-    -
-
-    Module test specification reference
-
-    -
-*/
-#ifndef C_DRMCRYPTO_CFILE
-#define C_DRMCRYPTO_CFILE
-
-/*  5    EXTERNAL RESOURCES */
-
-/*  5.1    Mandatory include files */
-
-/*  5.2    Library include files */
-
-/*  5.3    Interface include files */
-#include "drmcrypto.h"
-#include "drmenv.h" /* for DRMEnv_GetRandom */
-
-/*  6    LOCAL DEFINITIONS */
-
-/*  6.1    Local include files */
-
-#include "aes_if.h"
-
-/*  6.2    Local constants */
-#define	KEYSEED_NUMBER_OF_INT32		4
-#define KEYSEED_LENGTH				16
-/*  6.3    Local macros */
-
-/*  6.4    Local data types */
-
-/*  6.5    Local data structures */
-
-/*  6.6    Local function prototypes */
-
-/*  7    MODULE CODE */
-
-
-/* ========================================================================= */
-
-/*  7.1 */
-
-/* Functional description
- *
- * Encrypt data using specified algorithm
- *
- *
- * Parameters
- *
- * Cipher type
- *
- cType
- *
- * Pointer to encryption key
- *
- pszKey
- *
- * Encryption key length in bytes
- *
- iKeyLen
- *
- * Pointer to initializer vector of encryption
- *
- pszIV
- *
- * Pointer to data to be encrypted
- *
- pszIn
- *
- * Pointer to encrypted data.
- * It can be same pointer as pszOut.
- *
- pszOut
- *
- * Length in bytes of content to be encrypted.
- *
- iInLen
- *
- * Cipher type(AES encryption modes).
- *		AES_MODE_CBC ... AES_MODE_ECB
- *
- uiParameters
- *
- * Return values
- *
- * If encryption is OK, return DRM_ENG_OK, 
- * otherwize DRM_ENG_ERROR.
- */
-
-/* ---------------------------------------------------------------------- */
-
-#ifdef	ENCRYPT_USED
-uint8 DRMCrypto_Encrypt( 
-		  CipherType				cType, 
-		  uint8*					pszKey, 
-		  uint16					iKeyLen,
-		  uint8*					pszIV,
-		  uint8*					pszIn,
-		  uint8*					pszOut,
-		  uint32					iInLen, 
-		  CipherParamType			uiParameters	)
-	{
-	/* Data structures */
-
-	/* return code
-	 */
-	uint8 ret = 0;
-
-	/* AES encryption mode
-	 */
-	uint8 iMode = 0;
-
-	/*  Code  */
-
-	/* check parameter */
-	if( !pszKey || !pszIV || !pszIn || !pszOut )
-		{
-		return DRM_ENG_INVALID_PARAM;
-		}
-
-	/* Convert uiParameters to inner interface type
-	 */
-	if( uiParameters ==  AES_MODE_CBC)
-		{
-		iMode = AES_CBC;
-		}
-	else if( uiParameters ==  AES_MODE_ECB)
-		{
-		iMode = AES_ECB;
-		}
-	else 
-		{
-		DEBUG("Crypto Error: invalid uiParameters!")
-		return DRM_ENG_ERROR;
-		}
-
-	if( cType == CIPHER_AES )
-		{
-		ret = AESEncrypt( (uint32*)pszKey, (uint16)(iKeyLen*8), (uint32*)pszIV, 
-						  (uint32*)pszIn, (uint32*)pszOut, iInLen, iMode );
-		if( ret==AES_CRYPTO_OK ) 
-			{
-			return DRM_ENG_OK;
-			}
-		else if( ret == AES_CRYPTO_ERR_MEMORY )
-			{
-			return DRM_ENG_MEM_ERROR;
-			}
-		else 
-			{
-			DEBUGD("Crypto Error: AES Encryption Error ", ret)
-			return DRM_ENG_ERROR;
-			}
-		}
-	else
-		{
-		return DRM_ENG_ERROR;
-		}
-	}
-#endif /* #ifdef	ENCRYPT_USED */
-
-
-/*  7.2 */
-
-/* Functional description
- *
- * Decrypt data using specified algorithm.
- *
- *
- * Parameters
- *
- * Cipher type
- *
- cType
- *
- * Pointer to encryption key
- *
- pszKey
- *
- * Encryption key length in bytes
- *
- iKeyLen
- *
- * Pointer to initializer vector of encryption
- *
- pszIV
- *
- * Pointer to encrypted data which is to be decrypted
- *
- pszIn
- *
- * Pointer to decrypted content.
- * It can be same pointer as pszOut.
- *
- pszOut
- *
- * Length in bytes of content to be decrypted.
- *
- iInLen
- *
- * Cipher type(AES encryption modes).
- *		AES_MODE_CBC ... AES_MODE_ECB
- *
- uiParameters
- *
- * Return values
- *
- * If decryption is OK, return DRM_ENG_OK, 
- * otherwize DRM_ENG_ERROR.
- */
-
-/* ---------------------------------------------------------------------- */
-
-
-uint8 DRMCrypto_Decrypt( 
-		  CipherType				cType,
-		  uint8*					pszKey, 
-          uint16					iKeyLen,
-		  uint8*					pszIV,
-		  uint8*					pszIn,
-		  uint8*					pszOut,
-		  uint32					iInLen,
-		  CipherParamType			uiParameters	)
-	{
-	/* Data structures */
-
-	/* return code
-	 */
-	uint8 ret = 0;
-
-	/* AES encryption mode
-	 */
-	uint8 iMode = 0;
-
-	/* Aligned buffer for Key
-	 */
-	/* uint32*			pKeyAligned=NULL; */
-
-	/* Aligned buffer for IV
-	 */
-	/* uint32*			pIVAligned=NULL; */
-
-	/* Aligned buffer for Input data
-	 */
-	/* uint32*			pInAligned=NULL; */
-
-	/* Byte stream pointer
-	 */
-	/* uint8* pBytes = NULL; */
-
-	/*  Code  */
-
-	/* check parameter */
-	if( !pszKey || !pszIV || !pszIn || !pszOut )
-		{
-		return DRM_ENG_INVALID_PARAM;
-		}
-
-	/* Convert uiParameters to inner interface type
-	 */
-	if( uiParameters ==  AES_MODE_CBC)
-		{
-		iMode = AES_CBC;
-		}
-	else if( uiParameters ==  AES_MODE_ECB)
-		{
-		iMode = AES_ECB;
-		}
-	else 
-		{
-		DEBUG("Crypto Error: invalid uiParameters !")
-		return DRM_ENG_ERROR;
-		}
-
-	if( cType == CIPHER_AES )
-		{
-			
-			ret = AESDecrypt( (uint32*)pszKey, (uint16)(iKeyLen*8), (uint32*)pszIV, 
-							  (uint32*)pszIn,  (uint32*)pszOut, iInLen, iMode );
-
-		if( ret==AES_CRYPTO_OK ) 
-			{
-			ret = DRM_ENG_OK;
-			}
-		else if( ret == AES_CRYPTO_ERR_MEMORY )
-			{
-			ret = DRM_ENG_MEM_ERROR;
-			}
-		else 
-			{
-			DEBUGD("Crypto Error: AES Decryption Error ", ret)
-			ret = DRM_ENG_ERROR;
-			}
-		}
-	else
-		{
-		ret = DRM_ENG_ERROR;
-		}
-
-	return ret;
-	}
-
-
-/*  7.5 */
-
-/* Functional description
- *
- * Adds padding bytes at the end of data.
- *
- *
- * Parameters
- *
- * Pointer to pointer to data.
- * IN: points to data before adding padding bytes.
- * OUT: points to data with added padding bytes.
- * Memory used by input data will be freed inside this function.
- * New memory will be allocated for output data.
- *
- ppData
- *
- * Pointer to data length in bytes
- * IN:  pointer to length of data with padding.
- * OUT: points to length of data without padding.
- *
- pDataLen
- *
- * Cipher block size. 
- * Max 256
- *
- CipBlockSize
- *
- * Specifies used padding method.
- *      PADDING_PKCS7
- *
- uiPaddingMethod
- *
- * Return values
- *
- * If operation is OK, return DRM_ENG_OK, 
- * otherwize DRM_ENG_ERROR.
- */
-
-/* ---------------------------------------------------------------------- */
-
-
-uint8 DRMCrypto_AddPadding(
-		  uint8**				ppData, 
-		  uint32*				pDataLen,
-		  uint8					CipBlockSize,
-		  PaddingMethodType		uiPaddingMethod	)
-	{
-	/* Data structures */
-
-	/* Number of bytes to add to data
-	 */
-	uint8	padSize=0;
-
-	/* Address of input data
-	 */
-	uint8	*pDataIn;
-
-	/* Iterator
-	 */
-	uint16	i;
-
-	/* return code */
-	uint8 ret = DRM_ENG_OK;
-
-
-	/*  Code  */
-
-	/* check parameter */
-	if( !ppData || !pDataLen )
-		{
-		return DRM_ENG_INVALID_PARAM;
-		}
-
-	if( uiPaddingMethod == PADDING_PKCS7)
-		{
-		/* calculate padding size
-		 */
-		padSize = (uint8)( CipBlockSize-( *pDataLen % CipBlockSize ) );
-	
-		/* record input data address
-		 */
-		pDataIn = *ppData;
-
-		/* allocate memory
-		 */
-		*ppData = (uint8*)DRM_BLOCK_ALLOC( *pDataLen+padSize ) ;
-		if( !(*ppData) )
-			{
-			return DRM_ENG_MEM_ERROR;
-			}
-
-		/* copy data
-		 */
-		DRM_BLOCK_COPY( *ppData, pDataIn, *pDataLen  );
-
-		/* free memory for input data
-		 */
-		DRM_BLOCK_DEALLOC( pDataIn);
-
-		/* add padding
-		 */
-		for( i=0; i<padSize; i++)
-			*( (uint8*)(*ppData) + *pDataLen +i) = padSize;
-
-		/* calculate new data length:
-		 */
-		*pDataLen = *pDataLen+padSize;
-
-		return	DRM_ENG_OK;
-		}
-	else
-		{
-		DEBUG( "Cypto Error: invalid uiPaddingMethod !" )
-		ret = DRM_ENG_ERROR;
-		}
-
-	return ret;
-	}
-
-
-
-/*  7.6 */
-
-/* Functional description
- *
- * Remove padding bytes from data.
- *
- *
- * Parameters
- *
- * Pointer to pointer to data(with padding bytes).
- * IN: points to data with padding bytes.
- * OUT: points to data without padding bytes.
- *
- ppData
- *
- * Pointer to data length in bytes
- * IN:  points to length of data with padding.
- * OUT: points to length of data without padding.
- *
- pDataLen
- *
- * Specifies used padding method.
- *      PADDING_PKCS7
- *
- uiPaddingMethod
- *
- * Return values
- *
- * If operation is OK, return DRM_ENG_OK, 
- * otherwize DRM_ENG_ERROR.
- */
-
-/* ---------------------------------------------------------------------- */
-
-
-uint8 DRMCrypto_RemovePadding(
-		  uint8**				ppData, 
-		  uint32*				pDataLen,
-		  PaddingMethodType		uiPaddingMethod	)
-	{
-	/* Data structures */
-
-	/* Number of bytes of padding data
-	 */
-	uint8	padSize=0;
-
-		/* return code */
-	uint8 ret = DRM_ENG_OK;
-
-	/*  Code  */
-
-	/* check parameter */
-	if( !ppData || !pDataLen )
-		{
-		return DRM_ENG_INVALID_PARAM;
-		}
-
-	if( uiPaddingMethod == PADDING_PKCS7)
-		{
-		/* calculate padding size
-		 * padding size is equal to last byte value of data
-		 */
-		padSize = *( (*ppData) + (*pDataLen) -1);
-
-		if( padSize<1 || padSize>CRYPTO_BLOCK_SIZE )
-			{
-			DEBUG("Padding Size wrong!")
-			return DRM_ENG_ERROR;
-			}
-
-		/* calculate new data length:
-		 */
-		*pDataLen = *pDataLen-padSize;
-
-		return	DRM_ENG_OK;
-		}
-	else
-		{
-		DEBUG( "Cypto Error: invalid uiPaddingMethod !" )
-		ret = DRM_ENG_ERROR;
-		}
-
-	return ret;
-	}
-
-
-/*  7.8 */
-
-/* Functional description
- *
- * Generates an initialization vector for cipher CBC mode. 
- *
- *
- * Parameters
- *
- * Lenght of the IV to be generated in bits. Must be a value between 1-16.
- *
- ivLen
- *
- *
- * Pointer to pointer to the generated IV.
- *
- ppIV
- *
- *
- * Return values
- *
- * If operation is OK, return DRM_ENG_OK, 
- * otherwize DRM_ENG_ERROR.
- */
-
-/* ---------------------------------------------------------------------- */
-
-uint8 DRMCrypto_GenerateIV(uint32 ivLen, uint8 **ppIV)
-	{
-	/* Data structures */
-
-	/* return code	 */
-	uint8	ret=DRM_ENG_OK;
-
-	/* seed */
-	uint8* pSeed=NULL;
-
-	/*  Code  */
-	
-	/* check parameter */
-	if( ppIV == NULL || ivLen == 0 || ivLen > 16)
-		{
-		return DRM_ENG_INVALID_PARAM;
-		}
-
-	/* allocate memory for IV */
-	*ppIV = DRM_BLOCK_ALLOC( ivLen );
-	
-	if( !(*ppIV) )
-		{
-		return DRM_ENG_MEM_ERROR;
-		}
-
-	/* generate random number as seed */
-	pSeed = DRM_BLOCK_ALLOC( KEYSEED_LENGTH );
-	if( !pSeed )
-		{
-		ret = DRM_ENG_MEM_ERROR;
-		}
-	else
-		{
-		ret = DRMEnv_GetRandom( (uint32*)pSeed, KEYSEED_NUMBER_OF_INT32 );
-		TRANSLATE_ERROR_CODE( ret );
-		}
-
-	/* generate IV by seed */
-	if( ret == DRM_ENG_OK )
-		{
-		/* Just copy the seed as IV. */
-		DRM_BLOCK_COPY(*ppIV, pSeed, ivLen<KEYSEED_LENGTH?ivLen:KEYSEED_LENGTH );
-		}
-	else /* free memory */
-		{
-		DRM_BLOCK_DEALLOC( *ppIV );
-		}
-
-	/* free memory */
-	DRM_BLOCK_DEALLOC( pSeed );
-
-	return ret;
-	}
-
-#endif /* #ifndef C_DRMCRYPTO_CFILE */
-/* End of File */
-
--- a/omadrm/drmhelper/BMARM/DRMHELPERDMGRWRAPPERU.DEF	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-
--- a/omadrm/drmhelper/BMARM/DRMHELPERU.DEF	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-EXPORTS
-	"_._27CDRMHelperRightsConstraints" @ 1 NONAME R3UNUSED ; CDRMHelperRightsConstraints::~CDRMHelperRightsConstraints(void)
-	CanSetAutomated__10CDRMHelperRC7TDesC16Ri @ 2 NONAME R3UNUSED ; CDRMHelper::CanSetAutomated(TDesC16 const &, int &)
-	CheckRightsAmountL__10CDRMHelperRC6TDesC8ii @ 3 NONAME ; CDRMHelper::CheckRightsAmountL(TDesC8 const &, int, int)
-	CheckRightsAmountL__10CDRMHelperRC7TDesC16ii @ 4 NONAME ; CDRMHelper::CheckRightsAmountL(TDesC16 const &, int, int)
-	CheckRightsPercentL__10CDRMHelperRC7TDesC16i @ 5 NONAME R3UNUSED ; CDRMHelper::CheckRightsPercentL(TDesC16 const &, int)
-	ShowAutomatedNote__10CDRMHelperRC6TDesC8 @ 6 NONAME R3UNUSED ; CDRMHelper::ShowAutomatedNote(TDesC8 const &)
-	ShowAutomatedNote__10CDRMHelperRC7TDesC16 @ 7 NONAME R3UNUSED ; CDRMHelper::ShowAutomatedNote(TDesC16 const &)
-	SupportedDataType__10CDRMHelperiR9TDataType @ 8 NONAME R3UNUSED ; CDRMHelper::SupportedDataType(int, TDataType &)
-	UnRegisterDataType__10CDRMHelperi @ 9 NONAME R3UNUSED ; CDRMHelper::UnRegisterDataType(int)
-	"_._10CDRMHelper" @ 10 NONAME R3UNUSED ; CDRMHelper::~CDRMHelper(void)
-	CanSetAutomated__10CDRMHelperRC6TDesC8Ri @ 11 NONAME R3UNUSED ; CDRMHelper::CanSetAutomated(TDesC8 const &, int &)
-	DataTypesCount__10CDRMHelperRi @ 12 NONAME R3UNUSED ; CDRMHelper::DataTypesCount(int &)
-	FullRights__27CDRMHelperRightsConstraints @ 13 NONAME R3UNUSED ; CDRMHelperRightsConstraints::FullRights(void)
-	GetContentURIList__10CDRMHelperRPt13RPointerArray1Z6HBufC8 @ 14 NONAME R3UNUSED ; CDRMHelper::GetContentURIList(RPointerArray<HBufC8> *&)
-	GetCountersL__27CDRMHelperRightsConstraintsRUlT1 @ 15 NONAME R3UNUSED ; CDRMHelperRightsConstraints::GetCountersL(unsigned long &, unsigned long &)
-	GetEndTimeL__27CDRMHelperRightsConstraintsR5TTime @ 16 NONAME R3UNUSED ; CDRMHelperRightsConstraints::GetEndTimeL(TTime &)
-	GetIntervalL__27CDRMHelperRightsConstraintsR20TTimeIntervalSeconds @ 17 NONAME R3UNUSED ; CDRMHelperRightsConstraints::GetIntervalL(TTimeIntervalSeconds &)
-	GetIntervalStartL__27CDRMHelperRightsConstraintsR5TTime @ 18 NONAME R3UNUSED ; CDRMHelperRightsConstraints::GetIntervalStartL(TTime &)
-	GetRightsDetailsL__10CDRMHelperRC7TDesC16UlRiT3RP21CDRMRightsConstraintsN35 @ 19 NONAME ; CDRMHelper::GetRightsDetailsL(TDesC16 const &, unsigned long, int &, int &, CDRMRightsConstraints *&, CDRMRightsConstraints *&, CDRMRightsConstraints *&, CDRMRightsConstraints *&)
-	GetRightsDetailsL__10CDRMHelperRC7TDesC16UlRiT3RP27CDRMHelperRightsConstraintsN35 @ 20 NONAME ; CDRMHelper::GetRightsDetailsL(TDesC16 const &, unsigned long, int &, int &, CDRMHelperRightsConstraints *&, CDRMHelperRightsConstraints *&, CDRMHelperRightsConstraints *&, CDRMHelperRightsConstraints *&)
-	GetStartTimeL__27CDRMHelperRightsConstraintsR5TTime @ 21 NONAME R3UNUSED ; CDRMHelperRightsConstraints::GetStartTimeL(TTime &)
-	HandleErrorL__10CDRMHelperiRC6TDesC8 @ 22 NONAME R3UNUSED ; CDRMHelper::HandleErrorL(int, TDesC8 const &)
-	HandleErrorL__10CDRMHelperiRC7TDesC16 @ 23 NONAME R3UNUSED ; CDRMHelper::HandleErrorL(int, TDesC16 const &)
-	IndicateIdle__10CDRMHelper @ 24 NONAME R3UNUSED ; CDRMHelper::IndicateIdle(void)
-	IsPreview__27CDRMHelperRightsConstraints @ 25 NONAME R3UNUSED ; CDRMHelperRightsConstraints::IsPreview(void)
-	LaunchDetailsViewEmbeddedL__10CDRMHelperPC6HBufC8 @ 26 NONAME R3UNUSED ; CDRMHelper::LaunchDetailsViewEmbeddedL(HBufC8 const *)
-	LaunchDetailsViewEmbeddedL__10CDRMHelperRC6TDesC8 @ 27 NONAME R3UNUSED ; CDRMHelper::LaunchDetailsViewEmbeddedL(TDesC8 const &)
-	LaunchDetailsViewEmbeddedL__10CDRMHelperRC7TDesC16 @ 28 NONAME R3UNUSED ; CDRMHelper::LaunchDetailsViewEmbeddedL(TDesC16 const &)
-	NewLC__10CDRMHelper @ 29 NONAME R3UNUSED ; CDRMHelper::NewLC(void)
-	NewLC__10CDRMHelperR7CCoeEnv @ 30 NONAME R3UNUSED ; CDRMHelper::NewLC(CCoeEnv &)
-	NewL__10CDRMHelper @ 31 NONAME R3UNUSED ; CDRMHelper::NewL(void)
-	NewL__10CDRMHelperR7CCoeEnv @ 32 NONAME R3UNUSED ; CDRMHelper::NewL(CCoeEnv &)
-	RegisterDataType__10CDRMHelperRC9TDataType @ 33 NONAME R3UNUSED ; CDRMHelper::RegisterDataType(TDataType const &)
-	RemoveAutomatedPassive__10CDRMHelperRC6TDesC8 @ 34 NONAME R3UNUSED ; CDRMHelper::RemoveAutomatedPassive(TDesC8 const &)
-	RemoveAutomatedPassive__10CDRMHelperRC7TDesC16 @ 35 NONAME R3UNUSED ; CDRMHelper::RemoveAutomatedPassive(TDesC16 const &)
-	RemoveAutomated__10CDRMHelperRC6TDesC8 @ 36 NONAME R3UNUSED ; CDRMHelper::RemoveAutomated(TDesC8 const &)
-	RemoveAutomated__10CDRMHelperRC7TDesC16 @ 37 NONAME R3UNUSED ; CDRMHelper::RemoveAutomated(TDesC16 const &)
-	SetAutomatedPassive__10CDRMHelperRC6TDesC8 @ 38 NONAME R3UNUSED ; CDRMHelper::SetAutomatedPassive(TDesC8 const &)
-	SetAutomatedPassive__10CDRMHelperRC7TDesC16 @ 39 NONAME R3UNUSED ; CDRMHelper::SetAutomatedPassive(TDesC16 const &)
-	SetAutomatedSilent__10CDRMHelperRC6TDesC8i @ 40 NONAME R3UNUSED ; CDRMHelper::SetAutomatedSilent(TDesC8 const &, int)
-	SetAutomatedSilent__10CDRMHelperRC7TDesC16i @ 41 NONAME R3UNUSED ; CDRMHelper::SetAutomatedSilent(TDesC16 const &, int)
-	SetAutomated__10CDRMHelperRC6TDesC8 @ 42 NONAME R3UNUSED ; CDRMHelper::SetAutomated(TDesC8 const &)
-	SetAutomated__10CDRMHelperRC7TDesC16 @ 43 NONAME R3UNUSED ; CDRMHelper::SetAutomated(TDesC16 const &)
-	SetCountLimitL__10CDRMHelperUi @ 44 NONAME R3UNUSED ; CDRMHelper::SetCountLimitL(unsigned int)
-	SetPercentageLimitL__10CDRMHelperUi @ 45 NONAME R3UNUSED ; CDRMHelper::SetPercentageLimitL(unsigned int)
-	SetTimeLimitL__10CDRMHelperUi @ 46 NONAME R3UNUSED ; CDRMHelper::SetTimeLimitL(unsigned int)
-
--- a/omadrm/drmhelper/BWINSCW/drmhelperdmgrwrapperU.DEF	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-EXPORTS
-	?GateFunctionDMgr@@YAPAXXZ @ 1 NONAME ; void * GateFunctionDMgr(void)
-
--- a/omadrm/drmhelper/EABI/drmhelperdmgrwrapperU.DEF	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-EXPORTS
-	_Z16GateFunctionDMgrv @ 1 NONAME
-	_ZTI21CDRMHelperDMgrWrapper @ 2 NONAME ; #<TI>#
-	_ZTV21CDRMHelperDMgrWrapper @ 3 NONAME ; #<VT>#
-
--- a/omadrm/drmhelper/group/bld.inf	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmhelper/group/bld.inf	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2003 - 2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2003 - 2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -22,7 +22,6 @@
 
 PRJ_MMPFILES
 
-drmhelperdmgrwrapper.mmp
 DRMHelper.mmp
 
 //  End of File
--- a/omadrm/drmhelper/group/drmhelperdmgrwrapper.mmp	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
-* Copyright (c) 2006 - 2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Project definition file for drmhelperdmgrwrapper
-*
-*/
-
-
-#include <data_caging_paths.hrh>
-#include <platform_paths.hrh>
-
-TARGET         drmhelperdmgrwrapper.dll
-TARGETTYPE     dll
-UID            0x1000008D 0x102823D9
-
-CAPABILITY     CAP_GENERAL_DLL
-VENDORID       VID_DEFAULT
-
-SOURCE         ../src/DRMHelperDMgrWrapper.cpp
-
-START RESOURCE drmhelperdmgrwrapper.rss
-HEADER
-TARGETPATH RESOURCE_FILES_DIR
-LANGUAGE_IDS
-END
-
-USERINCLUDE    ../inc
-USERINCLUDE    ../../drmengine/roap/inc
-USERINCLUDE    ../../../inc   // ADo level inc dir
-
-// Default system include paths for middleware layer modules.
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY        euser.lib
-LIBRARY        centralrepository.lib       // Browser default AP
-LIBRARY        cmmanager.lib
-LIBRARY        DownloadMgr.lib
-LIBRARY        RoapHandler.lib
-LIBRARY        efsrv.lib
-LIBRARY        avkon.lib
-LIBRARY        cone.lib
-LIBRARY        commonengine.lib
-LIBRARY        aknnotify.lib
-LIBRARY        eikctl.lib
-LIBRARY        eikcdlg.lib
-
-#ifdef RD_MULTIPLE_DRIVE
-LIBRARY        platformenv.lib
-#endif
-
-DEBUGLIBRARY   flogger.lib
-
-START WINS
-END
-
-START MARM
-END
-
-#if defined(ARMCC)
-deffile ../EABI/
-#elif defined( WINSCW )
-deffile ../BWINSCW/
-#elif defined( WINS )
-deffile ../bwins/
-#else
-deffile ../bmarm/
-#endif
-
-SMPSAFE
--- a/omadrm/drmhelper/group/drmhelperdmgrwrapper.rss	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Resource file for drmhelperdmgrwrapper
-*
-*/
-
-
-//  RESOURCE IDENTIFIER
-NAME    DRMD
-
-//  INCLUDES
-#include <eikon.rh>
-#include <eikon.rsg>
-#include <avkon.rh>
-#include <avkon.rsg>
-#include <avkon.loc>
-#include <avkon.mbg>
-#ifdef __DRM
-#include <drmcommon.loc>
-#endif
-
-//  CONSTANTS  
-
-//  MACROS  
-
-//  RESOURCE DEFINITIONS 
-
-RESOURCE RSS_SIGNATURE { }
-
-RESOURCE TBUF16 { buf="DRMD"; }
-
-// -----------------------------------------------------------------------------
-//   
-// r_silent_progress_note
-// String displayed while getting silent rights 
-// expired.
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE DIALOG r_silent_progress_note
-    {
-    flags = EAknProgressNoteFlags;
-    buttons = R_AVKON_SOFTKEYS_CANCEL;
-    items =
-        {
-        DLG_LINE
-            {
-            type = EAknCtNote;
-            id = EGeneralQuery;
-            control= AVKON_NOTE 
-                { 
-                layout = EProgressLayout;
-                singular_label = qtn_drm_progress_opening;
-                imagefile = AVKON_BITMAP_FILE;
-                imageid = EMbmAvkonQgn_note_progress; 
-                imagemask = EMbmAvkonQgn_note_progress_mask; 
-                };
-          }
-        };
-   }
-   
-//End of File
-
--- a/omadrm/drmhelper/inc/DRMHelperDMgrWrapper.h	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-/*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-
-#ifndef CDRMHELPERDMGRWRAPPER_H
-#define CDRMHELPERDMGRWRAPPER_H
-
-#include <DownloadMgrClient.h>
-#include <AknProgressDialog.h>
-#include <eikprogi.h>
-
-/**
-* Environment gate function
-*
-* @since S60 3.1
-* @return pointer to DMgr handler
-*/
-IMPORT_C TAny* GateFunctionDMgr();
-
-class MDRMHelperDMgrWrapper
-    {
-
-public:
-    virtual void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl ) = 0;
-
-    virtual void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl,
-                                                CCoeEnv& aCoeEnv ) = 0;
-
-    virtual HBufC8* GetErrorUrlL() = 0;
-
-    };
-
-/**
-*  Class for downloading ROAP triggers
-*
-*  @lib DRMHelperDMgrWrapper
-*  @since S60 v3.1
-*/
-class CDRMHelperDMgrWrapper : CBase,
-                              public MHttpDownloadMgrObserver,
-                              public MDRMHelperDMgrWrapper,
-                              public MProgressDialogCallback
-    {
-
-public:
-
-    static CDRMHelperDMgrWrapper* NewL();
-
-    static CDRMHelperDMgrWrapper* NewLC();
-
-    virtual ~CDRMHelperDMgrWrapper();
-
-    /**
-    * Download a ROAP trigger from URL and handle it
-    *
-    * @since S60 3.1
-    * @param aUrl  URL of ROAP trigger
-    */
-    void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl );
-
-    void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl, CCoeEnv& aCoeEnv );
-
-    HBufC8* GetErrorUrlL();
-
-
-// from base class MHttpDownloadMgrObserver
-
-    /**
-    * From MHttpDownloadMgrObserver.
-    * Handle download manager events
-    *
-    * @since S60 3.1
-    * @param aDownload the download
-    * @param aEvent the event
-    */
-    void HandleDMgrEventL( RHttpDownload& aDownload, THttpDownloadEvent aEvent );
-
-public: // Call back methods of MAknProgressDialogCallback
-
-    /**
-    * ProgressDialog call back method.
-    * Get's called when a dialog is dismissed.
-    *
-    * @since S60 3.2
-    * @param aButtonId ID of the button pressed
-    */
-    void DialogDismissedL( TInt aButtonId );
-
-protected:
-
-private:
-
-    /**
-    * C++ default constructor.
-    */
-    CDRMHelperDMgrWrapper();
-
-    void ConstructL();
-
-    /**
-    * Set the browser default access point to be used
-    *
-    * @since S60 3.0
-    */
-    void SetDefaultAccessPointL();
-
-    void DoDownloadAndHandleRoapTriggerL( const HBufC8* aUrl );
-
-    void ShowProgressNoteL( );
-
-    void RemoveProgressNoteL( );
-
-    void HandlePostResponseUrlL();
-
-
-private: // data
-
-    /**
-    * Download manager session
-    */
-    RHttpDownloadMgr iDlMgr;
-
-    /**
-    * Used to make downloads synchronous
-    */
-    CActiveSchedulerWait iWait;
-
-    /**
-    * to store information on download
-    */
-    TBool iDownloadSuccess;
-    TBool iConnectionError;
-
-    TBool iDialogDismissed;
-
-    /**
-    * Progess note dialog and progress info
-    */
-    CAknProgressDialog* iProgressNoteDialog;        // owned
-    CEikProgressInfo* iProgressInfo;                // not owned
-    TInt iCurrentProgressValue;                     // owned
-    TInt iProgressIncrement;                        // owned
-
-    /**
-    * Control environment
-    */
-    CCoeEnv* iCoeEnv;
-
-    /**
-    * Is CoeEnv given
-    */
-    TBool iUseCoeEnv;
-
-    /**
-    * Error url for ROAP temporary error
-    */
-    HBufC8* iErrorUrl;
-
-    /**
-    * Post response url for ROAP prUrl
-    */
-    HBufC8* iPostResponseUrl;
-
-    };
-
-#endif // CDRMHELPERDMGRWRAPPER_H
--- a/omadrm/drmhelper/inc/DRMHelperDMgrWrapperLogger.h	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,216 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Logger utility.
-*
-*/
-
-
-#ifndef DRMUILOGGER_H
-#define DRMUILOGGER_H
-
-
-// INCLUDES
-
-#include <e32std.h>
-#include <e32def.h>
-#include <eikenv.h>
-#include <flogger.h>
-
-
-#ifdef _DEBUG
-#define __TEST_DRM_LOG__
-#endif // _DEBUG
-
-
-#ifdef __TEST_DRM_LOG__
-
-// CONSTANTS
-
-// DRMUI logging directory.
-_LIT( KDRMUILogDir,                   "DRMUI" );
-// DRMUI log file name.
-_LIT( KDRMUILogFile,                  "DMgrWrapper.log" );
-// Format string: enter function.
-_LIT( KDRMUILogEnterFn,               "-> %S" );
-// Format string: leave function.
-_LIT( KDRMUILogLeaveFn,               "<- %S" );
-// Format string: time.
-_LIT( KDRMUILogTimeFormatString,      "%H:%T:%S:%*C2" );
-// Format string: timestamp.
-_LIT( KDRMUILogTimeStampFormatString, "%S %S" );
-//Banner message
-_LIT( KDRMUILogBanner,                "DRMUI 3.2");
-// Message of exit from app
-_LIT( KDRMUILogExit,                  "DRMUI: Application exit");
-
-// DEFINES
-
-// Create the log
-#define CLOG_CREATE                 { FCreate(); }
-
-// Close the log
-#define CLOG_CLOSE                  \
-    {                               \
-    RFileLogger::Write              \
-        (                           \
-        KDRMUILogDir,               \
-        KDRMUILogFile,              \
-        EFileLoggingModeAppend,     \
-        KDRMUILogExit               \
-        );                          \
-    }
-
-// Write log: enter function.
-#define CLOG_ENTERFN( a )           \
-    {                               \
-    _LIT( temp, a );                \
-    RFileLogger::WriteFormat        \
-        (                           \
-        KDRMUILogDir,               \
-        KDRMUILogFile,              \
-        EFileLoggingModeAppend,     \
-        KDRMUILogEnterFn,           \
-        &temp                       \
-        );                          \
-    }
-
-// Write log: leave function.
-#define CLOG_LEAVEFN( a )           \
-    {                               \
-    _LIT( temp, a );                \
-    RFileLogger::WriteFormat        \
-        (                           \
-        KDRMUILogDir,               \
-        KDRMUILogFile,              \
-        EFileLoggingModeAppend,     \
-        KDRMUILogLeaveFn,           \
-        &temp                       \
-        );                          \
-    }
-
-// Write log: string 'a'.
-#define CLOG_WRITE( a )             \
-    {                               \
-    _LIT( temp, a );                \
-    RFileLogger::Write              \
-        (                           \
-        KDRMUILogDir,               \
-        KDRMUILogFile,              \
-        EFileLoggingModeAppend,     \
-        temp                        \
-        );                          \
-    }
-
-// Write log: formatted.
-#define CLOG_WRITE_FORMAT( a, b )   \
-    {                               \
-    _LIT( temp, a );                \
-    RFileLogger::WriteFormat        \
-        (                           \
-        KDRMUILogDir,               \
-        KDRMUILogFile,              \
-        EFileLoggingModeAppend,     \
-        temp,                       \
-        b                           \
-        );                          \
-    }
-
-// Write log: timestamp.
-#define CLOG_WRITE_TIMESTAMP( a )                                   \
-    {                                                               \
-    _LIT( temp, a );                                                \
-    TTime time;                                                     \
-    time.HomeTime();                                                \
-    TBuf<32> timeBuf;                                               \
-    TRAPD( err, time.FormatL( timeBuf, KDRMUILogTimeFormatString ) ); \
-    if ( !err )                                                     \
-        {                                                           \
-        RFileLogger::WriteFormat                                    \
-            (                                                       \
-            KDRMUILogDir,                                           \
-            KDRMUILogFile,                                          \
-            EFileLoggingModeAppend,                                 \
-            KDRMUILogTimeStampFormatString,                         \
-            &temp,                                                  \
-            &timeBuf                                                \
-            );                                                      \
-        }                                                           \
-    }
-
-// Write formatted
-#define CLOG_WRITEF                 FPrint
-
-
-inline void FPrint( const TRefByValue<const TDesC> aFmt, ... )
-    {
-    VA_LIST list;
-    VA_START( list, aFmt );
-    RFileLogger::WriteFormat( KDRMUILogDir, KDRMUILogFile, 
-                              EFileLoggingModeAppend, aFmt, list );
-    }
-
-
-inline void FPrint( const TDesC& aDes )
-    {
-    RFileLogger::WriteFormat( KDRMUILogDir, KDRMUILogFile, 
-                              EFileLoggingModeAppend, aDes );
-    }
-
-
-inline void FCreate()
-    {
-    TFileName path( _L( "c:\\logs\\" ) );
-    path.Append( KDRMUILogDir );
-    path.Append( _L( "\\" ) );
-    RFs& fs = CEikonEnv::Static()->FsSession();
-    fs.MkDirAll( path );
-    RFileLogger::WriteFormat( KDRMUILogDir, KDRMUILogFile, 
-                              EFileLoggingModeOverwrite, KDRMUILogBanner );
-    }
-
-
-#else // not defined __TEST_DRM_LOG__
-
-inline void FPrint( const TRefByValue<const TDesC> /*aFmt*/, ... ) {};
-
-
-// DEFINES
-
-// Empty definition (disable log).
-#define CLOG_CREATE
-
-// Empty definition (disable log).
-#define CLOG_CLOSE
-
-// Empty definition (disable log).
-#define CLOG_ENTERFN( a )
-
-// Empty definition (disable log).
-#define CLOG_LEAVEFN( a )
-
-// Empty definition (disable log).
-#define CLOG_WRITE( a )
-
-// Empty definition (disable log).
-#define CLOG_WRITE_FORMAT( a, b )
-
-// Empty definition (disable log).
-#define CLOG_WRITE_TIMESTAMP( a )
-
-// Empty definition (disable log).
-#define CCDLGLOGGER_WRITEF   1 ? ((void)0) : FPrint
-
-#endif // __TEST_DRM_LOG__
-
-#endif // DRMUILOGGER_H
--- a/omadrm/drmhelper/inc/DRMHelperDownloadManager.h	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmhelper/inc/DRMHelperDownloadManager.h	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -22,7 +22,7 @@
 #include <e32base.h>
 #include <ConeResLoader.h>
 
-class CDRMHelperDMgrWrapper;
+class CDrmUtilityDmgrWrapper;
 
 /**
  *  This class encapsulates Download manager functionality.
@@ -33,7 +33,7 @@
 NONSHARABLE_CLASS(CDrmHelperDownloadManager) : public CBase
     {
 public:
-    
+
     static CDrmHelperDownloadManager* NewL();
     virtual ~CDrmHelperDownloadManager();
 
@@ -46,12 +46,12 @@
     void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl, CCoeEnv& aCoeEnv );
 
     void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl );
-    
+
     HBufC8* GetErrorUrlL();
 
 
 protected:
-            
+
 private:
 
     CDrmHelperDownloadManager();
@@ -60,10 +60,10 @@
 private:
 
     /**
-	 * Download manager handler
-	 */
+     * Download manager handler
+     */
     RLibrary iDMgrDll;
-    CDRMHelperDMgrWrapper* iDMgrHandler;
+    CDrmUtilityDmgrWrapper* iDMgrHandler;
     };
 
-#endif      // CDRMHELPERDOWNLOADMANAGER_H   
+#endif      // CDRMHELPERDOWNLOADMANAGER_H
--- a/omadrm/drmhelper/src/DRMHelperClient.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,613 +0,0 @@
-/*
-* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of the Helper Client session functionality 
-*
-*/
-
-
-// INCLUDE FILES
-#include <e32std.h>
-#include <e32math.h>
-#include <drmcommon.h>
-#include "DRMHelperCommon.h"
-#include "DRMHelperClient.h"
-
-
-// LOCAL CONSTANTS AND MACROS
-// Number of message slots to reserve for this client server session.
-// Since we only communicate synchronously here, we never have any
-// outstanding asynchronous requests.
-LOCAL_C const TUint KDefaultMessageSlots = 0;
-LOCAL_C const TUid KServerUid3 = {0x101F6DC5};
-
-#ifdef __WINS__
-LOCAL_C const TUint KServerMinHeapSize =  0x1000;  //  4K
-LOCAL_C const TUint KServerMaxHeapSize = 0x10000;  // 64K
-#endif
-
-// ============================ LOCAL FUNCTIONS ===============================
-#ifdef _DRM_TESTING
-LOCAL_C void WriteLogL( const TDesC8& text , RFs &aFs );
-LOCAL_C void WriteFileL( const TDesC8& text , RFs &aFs , const TDesC& aName );
-LOCAL_C void CreateLogL();
-LOCAL_C void WriteL( const TDesC& aText );
-LOCAL_C void WriteL( const TDesC8& aText );
-LOCAL_C void WriteCurrentTimeL();
-#endif
-
-
-LOCAL_C TInt FromFileNameToUri(const TDesC16& aFileName , HBufC8*& aContentUri );
-LOCAL_C TInt CheckExpiration( const TDesC8& aUri , TTime& aEndTime , TInt& aCountLeft );
-LOCAL_C TInt StartServer();
-LOCAL_C TInt CreateServerProcess();
-
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// RDRMHelperClient::RDRMHelperClient
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RDRMHelperClient::RDRMHelperClient()
-:   RSessionBase()
-    {
-    // No implementation required
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMHelperClient::Connect
-// 
-// Connect to the server session
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMHelperClient::Connect()
-    {
-#ifdef _DRM_TESTING
-    TRAPD( err , CreateLogL() );
-    if (err)
-        {
-        return err;
-        }
-    TRAP( err , WriteL(_L("Connect")) );
-    if (err)
-        {
-        return err;
-        }
-    TRAP( err , WriteCurrentTimeL() );
-    if (err)
-        {
-        return err;
-        }
-#endif
-    TInt error = StartServer();
-
-    if (KErrNone == error)
-        {
-
-        error = CreateSession(KDRMHelperServerName,
-                              Version(),
-                              KDefaultMessageSlots);
-        }
-    return error;
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMHelperClient::Version
-// 
-// return server version
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TVersion RDRMHelperClient::Version() const
-    {
-    return(TVersion(KDRMHSMajorVersionNumber,
-                    KDRMHSMinorVersionNumber,
-                    KDRMHSBuildVersionNumber));
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMHelperClient::SetAutomated
-// 
-// Register one content uri to the helper server
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMHelperClient::SetAutomated( const TDesC8& aUri , const TInt& aType ) const
-    {
-    TInt temp = aType;
-    TPtrC8 descriptor(aUri);
-
-    // This call waits for the server to complete the request before 
-    // proceeding. 
-    return SendReceive(ERegister, TIpcArgs( &descriptor, temp ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMHelperClient::SetAutomated
-// 
-// Register one file to the helper server
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMHelperClient::SetAutomated( const TDesC16& aFileName , const TInt& aType ) const
-    {
-    TInt temp = aType;
-    TPtrC8 descriptor( NULL , 0 );
-   
-    descriptor.Set( reinterpret_cast<const TUint8*>( aFileName.Ptr() ), aFileName.Length()*2);
-
-    // This call waits for the server to complete the request before 
-    // proceeding. 
-    return SendReceive(ERegisterFile, TIpcArgs( &descriptor, temp ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMHelperClient::RemoveAutomated
-// 
-// Register one content uri to the helper server
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMHelperClient::RemoveAutomated( const TDesC8& aUri , const TInt& aType ) const
-    {
-    TInt temp = aType;
-    TPtrC8 descriptor(aUri);
-
-    // This call waits for the server to complete the request before 
-    // proceeding.
-    return SendReceive(ERemove, TIpcArgs( &descriptor, temp ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMHelperClient::RemoveAutomated
-// 
-// Register one file to the helper server
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMHelperClient::RemoveAutomated( const TDesC16& aFileName , const TInt& aType ) const
-    {
-    TInt temp = aType;
-    TPtrC8 descriptor( NULL , 0 );
-
-    descriptor.Set( reinterpret_cast<const TUint8*>( aFileName.Ptr() ), aFileName.Length()*2);
-
-    // This call waits for the server to complete the request before 
-    // proceeding. 
-    return SendReceive(ERemoveFile, TIpcArgs( &descriptor ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMHelperClient::IndicateIdle
-// 
-// Register one file to the helper server
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMHelperClient::IndicateIdle() const
-    {
-    return SendReceive(EIndicateIdle, TIpcArgs());
-    }
-
-
-// -----------------------------------------------------------------------------
-// RDRMHelperClient::CanSetAutomated
-// 
-// Register one content uri to the helper server
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMHelperClient::CanSetAutomated( const TDesC8& aUri , TBool& aValue ) const
-    {
-    TTime endTime;
-    TTime temp;
-    TInt countsLeft = 0;
-    TInt err = 0;
-    temp.Set( KNullDate );
-    endTime.Set( KNullDate );
-
-    err = CheckExpiration( aUri , endTime , countsLeft );
-    if ( endTime != temp )
-        {
-        aValue = ETrue;
-        }
-    else
-        {
-        aValue = EFalse;
-        }
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMHelperClient::CanSetAutomated
-// 
-// Register one file to the helper server
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMHelperClient::CanSetAutomated( const TDesC16& aFileName , TBool& aValue ) const
-    {
-    HBufC8* contentUri = NULL;
-    TInt err = 0;
-    err = FromFileNameToUri( aFileName , contentUri );
-    if (err)
-        {
-        return err;
-        }
-    err = CanSetAutomated( contentUri->Des() , aValue );
-    delete contentUri;
-    return err;
-    }
-
-
-// -----------------------------------------------------------------------------
-// RDRMHelperClient::IsAutomated
-// 
-// Register one content uri to the helper server
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMHelperClient::IsAutomated( const TDesC8& aUri , TInt& aType , TBool& aIs ) 
-    {
-    TPtr8 type( reinterpret_cast< TUint8* >( &aType ),
-               0, 
-               sizeof( TInt ) );
-    TPtr8 flag( reinterpret_cast< TUint8* >( &aIs ),
-               0, 
-               sizeof( TInt ) );
-
-    TPtrC8 descriptor(aUri);
-
-    // This call waits for the server to complete the request before 
-    // proceeding. 
-    return SendReceive(EIsRegistered, TIpcArgs( &type, &descriptor, &flag ) );
-    }
-
-// -----------------------------------------------------------------------------
-// RDRMHelperClient::IsAutomated
-// 
-// Register one file to the helper server
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt RDRMHelperClient::IsAutomated( const TDesC16& aFileName , TInt& aType , TBool& aIs ) 
-    {
-    TPtr8 type( reinterpret_cast< TUint8* >( &aType ),
-               0, 
-               sizeof( TInt ) );
-    TPtr8 flag( reinterpret_cast< TUint8* >( &aIs ),
-               0, 
-               sizeof( TInt ) );
-
-    TPtrC8 descriptor( NULL , 0 );
-
-    
-    descriptor.Set( reinterpret_cast<const TUint8*>( aFileName.Ptr() ), aFileName.Length()*2);
-
-    // This call waits for the server to complete the request before 
-    // proceeding. 
-    return SendReceive(EIsRegisteredFile, TIpcArgs( &type, &descriptor, &flag ) );
-
-    }
-
-
-
-// ============================= LOCAL FUNCTIONS ===============================
-// -----------------------------------------------------------------------------
-// StartServer
-// 
-// Start the helper server
-// -----------------------------------------------------------------------------
-//
-LOCAL_C TInt StartServer()
-    {
-
-#ifdef _DRM_TESTING
-    TRAPD( err , WriteL(_L("StartServer")) );
-    if (err)
-        {
-        return err;
-        }
-    TRAP( err , WriteCurrentTimeL() );
-    if (err)
-        {
-        return err;
-        }
-#endif
-    TInt result = 0;
-
-    TFindServer findHelperServer(KDRMHelperServerName);
-    TFullName name;
-
-    result = findHelperServer.Next(name);
-    if (result == KErrNone)
-        {
-        // Server already running
-        return KErrNone;
-        }
-
-    RSemaphore semaphore;       
-    result = semaphore.CreateGlobal(KDRMHelperServerSemaphoreName, 0);
-    if (result != KErrNone)
-        {
-        return  result;
-        }
-
-    result = CreateServerProcess();
-    if (result != KErrNone)
-        {
-        semaphore.Close(); 
-        return  result;
-        }
-
-    semaphore.Wait();
-    semaphore.Close();       
-
-    return  KErrNone;
-    }
-
-LOCAL_C TInt CreateServerProcess()
-    {
-#ifdef _DRM_TESTING
-    TRAPD( err , WriteL(_L("CreateServerProcess")) );
-    if (err)
-        {
-        return err;
-        }
-    TRAP( err , WriteCurrentTimeL() );
-    if (err)
-        {
-        return err;
-        }
-#endif
-    TInt result;
-
-    const TUidType serverUid(KNullUid, KNullUid, KServerUid3);
-
-#ifdef __WINS__
-
-    RLibrary lib;
-    result = lib.Load( KDRMHSServerFileName , serverUid );
-    if (result != KErrNone)
-        {
-        return  result;
-        }
-
-#ifdef _DRM_TESTING
-    TRAP( err , WriteL(_L("library is loaded")) );
-    if (err)
-        {
-        return err;
-        }
-    TRAP( err , WriteCurrentTimeL() );
-    if (err)
-        {
-        return err;
-        }
-#endif
-
-    //  Get the WinsMain function
-    TLibraryFunction functionWinsMain = lib.Lookup(1);
-
-    //  Call it and cast the result to a thread function
-    TThreadFunction serverThreadFunction = reinterpret_cast<TThreadFunction>(functionWinsMain());
-
-    TName threadName(KDRMHelperServerName);
-
-    // Append a random number to make it unique
-    threadName.AppendNum(Math::Random(), EHex);
-
-    RThread server;
-
-    result = server.Create(threadName,   // create new server thread
-                             serverThreadFunction, // thread's main function
-                             KDefaultStackSize,
-                             NULL,
-                             &lib,
-                             NULL,
-                             KServerMinHeapSize,
-                             KServerMaxHeapSize,
-                             EOwnerProcess);
-
-
-
-    lib.Close();    // if successful, server thread has handle to library now
-
-    if (result != KErrNone)
-        {
-        return  result;
-        }
-#ifdef _DRM_TESTING
-    TRAP( err , WriteL(_L("server thread is created")) );
-    if (err)
-        {
-        return err;
-        }
-    TRAP( err , WriteCurrentTimeL() );
-    if (err)
-        {
-        return err;
-        }
-#endif
-    server.SetPriority(EPriorityMore);
-
-
-#else
-
-    RProcess server;
-    result = server.Create( KDRMHSServerFileName, KNullDesC, serverUid);
-    if (result != KErrNone)
-        {
-        return  result;
-        }
-#ifdef _DRM_TESTING
-    TRAP( err , WriteL(_L("server thread is created")) );
-    if (err)
-        {
-        return err;
-        }
-    TRAP( err , WriteCurrentTimeL() );
-    if (err)
-        {
-        return err;
-        }
-#endif
-
-#endif
-
-    server.Resume();
-    server.Close();
-
-    return  KErrNone;
-    }
-
-LOCAL_C TInt FromFileNameToUri(const TDesC16& aFileName , HBufC8*& aContentUri )
-    {
-    DRMAuthenticated* c = NULL;
-    DRMCommon::TContentProtection protection;
-    HBufC8* mimeType = NULL;
-    TUint dataLen = 0;
-    TRAPD(err , c = DRMAuthenticated::NewL());
-    if (err)
-        {
-        return err;
-        }
-    err = c->GetFileInfo(
-        aFileName,
-        protection,
-        mimeType,
-        aContentUri,
-        dataLen);
-    delete mimeType;
-    if (err)
-        {
-        delete aContentUri;
-        aContentUri = NULL;
-        }
-    return err;
-    }
-
-
-LOCAL_C TInt CheckExpiration( const TDesC8& aUri , TTime& aEndTime , TInt& aCountLeft )
-    {
-    DRMAuthenticated* c = NULL;
-    CDRMRights* right = NULL;
-    TRAPD( err  , c = DRMAuthenticated::NewL() );
-    if (err)
-        {
-        return err;
-        }
-    err = c->GetActiveRights( aUri , 
-        DRMCommon::EPlay | DRMCommon::EExecute | DRMCommon::EPrint | DRMCommon::EDisplay , 
-        right );
-    if (!err)
-        {
-        err = right->GetExpirationDetails(
-            DRMCommon::EPlay | DRMCommon::EExecute | DRMCommon::EPrint | DRMCommon::EDisplay,
-            aEndTime,
-            aCountLeft);
-        }
-    delete right;
-    delete c;
-    return err;
-    }
-
-#ifdef _DRM_TESTING
-
-LOCAL_C void WriteLogL( const TDesC8& text , RFs &aFs )
-    {
-    _LIT( KLogFile , "c:\\HSClientLog.txt" );
-    WriteFileL( text , aFs , KLogFile );
-    }
-
-LOCAL_C void WriteFileL( const TDesC8& text , RFs &aFs , const TDesC& aName )
-    {
-    RFile file;
-    TInt size;
-    User::LeaveIfError( file.Open( aFs, aName , EFileWrite ) );
-    CleanupClosePushL( file );
-    User::LeaveIfError( file.Size( size ) );
-    User::LeaveIfError( file.Write( size, text ) );
-    CleanupStack::PopAndDestroy(); //file
-    }
-
-LOCAL_C void CreateLogL()
-    {
-    RFs fs;
-    User::LeaveIfError(fs.Connect());
-    CleanupClosePushL(fs);
-    RFile file;
-    User::LeaveIfError( file.Replace( fs , _L("c:\\HSClientLog.txt") , EFileWrite ) );
-    file.Close();
-    CleanupStack::PopAndDestroy(); //fs
-    }
-
-LOCAL_C void WriteL( const TDesC& aText )
-    {
-    RFs fs;
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL(fs);
-    HBufC8* text = HBufC8::NewLC(1000);
-    TPtr8 textptr(text->Des() );
-    textptr.Append( aText );
-    textptr.Append( _L("\r\n") );
-    WriteLogL(textptr , fs);
-    CleanupStack::PopAndDestroy(text);
-    CleanupStack::PopAndDestroy(); //fs
-    }
-
-LOCAL_C void WriteL( const TDesC8& aText )
-    {
-    RFs fs;
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL(fs);
-    HBufC8* text = HBufC8::NewLC(1000);
-    TPtr8 textptr(text->Des() );
-    textptr.Append( aText );
-    textptr.Append( _L8("\r\n") );
-    WriteLogL(textptr , fs);
-    CleanupStack::PopAndDestroy(text);
-    CleanupStack::PopAndDestroy(); //fs
-    }
-
-
-LOCAL_C void WriteCurrentTimeL()
-    {
-    RFs fs;
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL(fs);
-    HBufC8* text = HBufC8::NewLC(100);
-    TPtr8 textptr(text->Des() );
-// Date and Time display
-    TTime time;
-    time.HomeTime();
-    TBuf<256> dateString;
-    _LIT(KDate,"%*E%*D%X%*N%*Y %1 %2 '%3");
-    time.FormatL(dateString,KDate);
-    textptr.Append(_L( "\r\n\t\tData:\t" ) );
-    textptr.Append( dateString );
-    _LIT(KTime,"%-B%:0%J%:1%T%:2%S%:3%+B");
-    time.FormatL(dateString,KTime);
-    textptr.Append(_L( "\r\n\t\tTime:\t" ) );
-    textptr.Append( dateString );
-    textptr.Append(_L( "\r\n" ) );
-    textptr.Append(_L( "\r\n" ) );
-    WriteLogL(textptr , fs);
-    CleanupStack::PopAndDestroy(text);
-    CleanupStack::PopAndDestroy(); //fs
-    }
-#endif
-
-// ========================== OTHER EXPORTED FUNCTIONS =========================
-
-// Epoc DLL entry point, return that everything is ok
-GLDEF_C TInt E32Dll(TDllReason)
-    {
-    return KErrNone;
-    }
-
-//  End of File
--- a/omadrm/drmhelper/src/DRMHelperDMgrWrapper.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,723 +0,0 @@
-/*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Dynamically loadable wrapper for Download manager
-*
-*/
-
-#include <centralrepository.h>
-#include <cdblen.h>
-
-#include <cmconnectionmethod.h>
-#include <cmdestination.h>
-#include <cmconnectionmethoddef.h>
-#include <cmmanager.h>
-
-#ifdef __SERIES60_NATIVE_BROWSER
-#include <BrowserUiSDKCRKeys.h>
-#endif
-
-#ifdef RD_MULTIPLE_DRIVE
-#include <driveinfo.h>
-#endif
-
-#include <StringLoader.h>
-#include <data_caging_path_literals.hrh>
-
-#include <ConeResLoader.h>
-#include <apparc.h>
-
-#include <drmhelperdmgrwrapper.rsg>
-
-#include "RoapEng.h"
-#include "RoapSyncWrapper.h"
-#include "RoapDef.h"
-#include "DRMHelperDMgrWrapper.h"
-#include "DRMHelperDMgrWrapperLogger.h"
-
-// DEBUG macros
-#ifdef _DEBUG
-#define DRMDEBUGLIT( a, b ) \
-_LIT( a , b )
-#define DRMDEBUG( a ) \
-RDebug::Print( a )
-#define DRMDEBUG2( a, b ) \
-RDebug::Print( a, b )
-#else
-#define DRMDEBUGLIT( a, b )
-#define DRMDEBUG( a )
-#define DRMDEBUG2( a, b )
-#endif
-
-// CONSTANTS
-#ifndef __SERIES60_NATIVE_BROWSER
-const TUid KCRUidBrowser = {0x10008D39};
-const TUint32 KBrowserDefaultAccessPoint = 0x0000000E;
-const TUint32 KBrowserAccessPointSelectionMode = 0x0000001E;
-#endif
-
-// CONSTANTS
-#ifndef RD_MULTIPLE_DRIVE
-_LIT( KDriveZ, "z:" );
-_LIT( KHelperTriggerFilePath, "d:\\" );
-#endif
-
-_LIT( KCDRMHelperDMgrWrapperResFileName,"DRMHelperDMgrWrapper.rsc" );
-const TInt KProgressInfoFinalValue( 200 );
-const TInt KProgressInfoIncrementSmall( 5 );
-const TInt KProgressInfoIncrementMedium( 10 );
-const TInt KProgressInfoIncrementLarge( 30 );
-
-// ======== LOCAL FUNCTIONS ========
-LOCAL_C void DeleteHttpDowload( TAny* aDownload )
-    {
-    reinterpret_cast< RHttpDownload* >( aDownload )->Delete();
-    }
-
-// ---------------------------------------------------------------------------
-// IapIdOfDefaultSnapL
-// for trapping purposes only
-// ---------------------------------------------------------------------------
-//
-LOCAL_C TUint32 IapIdOfDefaultSnapL(
-    RCmManager& aCmManager,
-    const TUint32 aDefaultSnap )
-    {
-    RCmDestination dest( aCmManager.DestinationL( aDefaultSnap ) );
-    CleanupClosePushL( dest );
-    TUint32 iapIdOfDest( 0 );
-
-    if ( dest.ConnectionMethodCount() <= 0 )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) );
-    CleanupClosePushL( cMeth );
-
-    iapIdOfDest = cMeth.GetIntAttributeL( CMManager::ECmIapId );
-    CleanupStack::PopAndDestroy( &cMeth );
-    CleanupStack::PopAndDestroy( &dest );
-    return iapIdOfDest;
-    }
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CDRMHelperDMgrWrapper::CDRMHelperDMgrWrapper
-// ---------------------------------------------------------------------------
-//
-CDRMHelperDMgrWrapper::CDRMHelperDMgrWrapper() :
-    iUseCoeEnv( EFalse )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CDRMHelperDMgrWrapper::ConstructL
-// ---------------------------------------------------------------------------
-//
-void CDRMHelperDMgrWrapper::ConstructL()
-    {
-    CLOG_WRITE( "DMgrWrapper::ConstructL" );
-    const TInt KDrmHelperDMgrWrapperUid = 0x102823D9;
-    iDlMgr.ConnectL( TUid::Uid(KDrmHelperDMgrWrapperUid), *this, EFalse );
-    iProgressInfo = NULL;
-    iProgressNoteDialog = NULL;
-    iDialogDismissed = ETrue;
-    }
-
-
-
-// ---------------------------------------------------------------------------
-// CDRMHelperDMgrWrapper::NewL
-// ---------------------------------------------------------------------------
-//
-CDRMHelperDMgrWrapper* CDRMHelperDMgrWrapper::NewL()
-    {
-    CLOG_WRITE( "DMgrWrapper::NewL" );
-    CDRMHelperDMgrWrapper* self( CDRMHelperDMgrWrapper::NewLC() );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CDRMHelperDMgrWrapper::NewLC
-// ---------------------------------------------------------------------------
-//
-CDRMHelperDMgrWrapper* CDRMHelperDMgrWrapper::NewLC()
-    {
-    CLOG_WRITE( "DMgrWrapper::NewLC" );
-    CDRMHelperDMgrWrapper* self( new( ELeave ) CDRMHelperDMgrWrapper() );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CDRMHelperDMgrWrapper::~CDRMHelperDMgrWrapper
-// ---------------------------------------------------------------------------
-//
-CDRMHelperDMgrWrapper::~CDRMHelperDMgrWrapper()
-    {
-    CLOG_WRITE( "DMgrWrapper destructor" );
-    if ( iProgressNoteDialog )
-       {
-       // deletes the dialog
-       TRAPD( err, iProgressNoteDialog->ProcessFinishedL() );
-       if ( err )
-           {
-           delete iProgressNoteDialog;
-           }
-       iProgressNoteDialog = NULL;
-       }
-    delete iErrorUrl;
-    delete iPostResponseUrl;
-
-#ifdef _DEBUG
-
-    if ( iDlMgr.Handle() )
-        {
-        iDlMgr.Close();
-        }
-
-#else
-
-    iDlMgr.Close();
-
-#endif
-
-    }
-
-
-// ---------------------------------------------------------------------------
-// CDRMHelperDMgrWrapper::DownloadAndHandleRoapTriggerL
-// ---------------------------------------------------------------------------
-//
-void CDRMHelperDMgrWrapper::DownloadAndHandleRoapTriggerL( const HBufC8* aUrl )
-    {
-    CLOG_WRITE( "DMgrWrapper::DownloadAndHandleRoapTriggerL" );
-    iUseCoeEnv = EFalse;
-    DoDownloadAndHandleRoapTriggerL( aUrl );
-    HandlePostResponseUrlL();
-    }
-
-
-// ---------------------------------------------------------------------------
-// CDRMHelperDMgrWrapper::DownloadAndHandleRoapTriggerL
-// ---------------------------------------------------------------------------
-//
-void CDRMHelperDMgrWrapper::DownloadAndHandleRoapTriggerL(
-    const HBufC8* aUrl, CCoeEnv& aCoeEnv )
-    {
-    CLOG_WRITE( "DMgrWrapper::DownloadAndHandleRoapTriggerL" );
-    iCoeEnv = &aCoeEnv;
-    iUseCoeEnv = ETrue;
-    DoDownloadAndHandleRoapTriggerL( aUrl );
-    HandlePostResponseUrlL();
-    }
-
-
-// ---------------------------------------------------------------------------
-// CDRMHelperDMgrWrapper::HandlePostResponseUrlL
-// ---------------------------------------------------------------------------
-//
-void CDRMHelperDMgrWrapper::HandlePostResponseUrlL()
-    {
-    if ( iPostResponseUrl )
-        {
-        DoDownloadAndHandleRoapTriggerL( iPostResponseUrl );
-        // prevent infinite post response fetches.
-        delete iPostResponseUrl;
-        iPostResponseUrl = NULL;
-
-        // Ensure progress note gets deleted.
-        // It remains open if prUrl initialted ROAP operation has PrUrl
-        // (unsupported chained metering report)
-        RemoveProgressNoteL();
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CDRMHelperDMgrWrapper::DoDownloadAndHandleRoapTriggerL
-// ---------------------------------------------------------------------------
-//
-void CDRMHelperDMgrWrapper::DoDownloadAndHandleRoapTriggerL(
-    const HBufC8* aUrl )
-    {
-    RFs fs;
-    RFile roapTrigger;
-    HBufC8* triggerBuf( NULL );
-    TBool result( EFalse );
-    TFileName triggerFileName;
-
-    CLOG_WRITE( "DMgrWrapper::DoDownloadAndHandleRoapTriggerL" );
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL( fs );
-    User::LeaveIfError( fs.ShareProtected() );
-
-
-#ifndef RD_MULTIPLE_DRIVE
-
-    User::LeaveIfError( roapTrigger.Temp(
-            fs, KHelperTriggerFilePath, triggerFileName, EFileWrite ) );
-
-#else //RD_MULTIPLE_DRIVE
-
-    _LIT( KDrive, "%c:\\");
-    TInt driveNumber( -1 );
-    TChar driveLetter;
-    DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRam, driveNumber );
-    fs.DriveToChar( driveNumber, driveLetter );
-
-    TFileName helperTriggerFilePath;
-
-    helperTriggerFilePath.Format( KDrive, (TUint)driveLetter );
-
-    User::LeaveIfError( roapTrigger.Temp(
-            fs, helperTriggerFilePath, triggerFileName, EFileWrite ) );
-
-#endif
-
-    TPtrC8 KNullPtr8( NULL, 0 );
-    RHttpDownload* downloadPtr( iDlMgr.FindDownload( *aUrl, KNullPtr8 ) );
-    if ( downloadPtr )
-        {
-        // Stale download found.
-        // Remove it, and re-create a new download.
-        downloadPtr->Delete();
-        downloadPtr = NULL;
-        }
-
-    // create and start download
-    RHttpDownload& download = iDlMgr.CreateDownloadL( *aUrl, result );
-    // Put download for proper cleanup.
-    TCleanupItem item( DeleteHttpDowload, &download );
-    CleanupStack::PushL( item );
-
-    CleanupClosePushL( roapTrigger );
-
-    if ( !iPostResponseUrl )
-        {
-        // No post response retieval. Note must be created.
-        ShowProgressNoteL();
-        }
-
-    if ( result )
-        {
-        const TInt KReadBufSize( 512 );
-        TInt triggerFileSize( 0 );
-
-        CLOG_WRITE(
-            "DMgrWrapper::DoDownloadAndHandleRoapTriggerL: download created" );
-        iDownloadSuccess = EFalse;
-        iConnectionError = EFalse;
-
-        SetDefaultAccessPointL();
-
-        User::LeaveIfError( download.SetFileHandleAttribute( roapTrigger ) );
-        User::LeaveIfError(
-            download.SetBoolAttribute( EDlAttrNoContentTypeCheck, ETrue ) );
-        User::LeaveIfError( download.Start() );
-
-        // wait until download is finished
-        iWait.Start();
-
-        // Check success of download
-        CLOG_WRITE(
-            "DMgrWrapper::DoDownloadAndHandleRoapTriggerL: download finished" );
-
-        CleanupStack::Pop( &roapTrigger );
-        roapTrigger.Close();
-        if ( !iDownloadSuccess )
-            {
-            RemoveProgressNoteL();
-            if ( iConnectionError )
-                {
-                User::Leave( KErrCouldNotConnect );
-                }
-            else
-                {
-                User::Leave( KErrGeneral );
-                }
-            }
-        User::LeaveIfError( roapTrigger.Open( fs,
-                                              triggerFileName,
-                                              EFileShareReadersOrWriters ) );
-        CleanupClosePushL( roapTrigger );
-
-        // Get filehandle of ROAP trigger
-        // Read file to buffer
-        User::LeaveIfError( roapTrigger.Size( triggerFileSize ) );
-        triggerBuf = HBufC8::NewLC( triggerFileSize );
-
-        RBuf8 readBuf;
-        readBuf.CleanupClosePushL();
-        readBuf.CreateL( KReadBufSize );
-
-        User::LeaveIfError( roapTrigger.Read( readBuf, KReadBufSize ) );
-        triggerBuf->Des().Copy( readBuf );
-        while ( readBuf.Length() == KReadBufSize )
-            {
-            User::LeaveIfError( roapTrigger.Read( readBuf, KReadBufSize ) );
-            triggerBuf->Des().Append( readBuf );
-            }
-
-        CleanupStack::PopAndDestroy( &readBuf );
-
-        if ( iUseCoeEnv && iProgressInfo )
-            {
-            iProgressInfo->IncrementAndDraw( KProgressInfoIncrementMedium );
-            }
-
-        // And let ROAP handle it...
-        CRoapSyncWrapper* roapWrapper( CRoapSyncWrapper::NewL() );
-        CleanupStack::PushL( roapWrapper );
-        TRAPD( err, roapWrapper->HandleTriggerL( *triggerBuf ) );
-        if ( err )
-            {
-            TInt errorType( 0 );
-            TRAPD( err2, iErrorUrl =
-                roapWrapper->GetErrorUrlL( err, errorType ) );
-            if ( err2 )
-                {
-                RemoveProgressNoteL();
-                delete iErrorUrl;
-                iErrorUrl = NULL;
-                User::Leave( err2 );
-                }
-            else if ( errorType != KErrRoapTemporary )
-                {
-                RemoveProgressNoteL();
-                delete iErrorUrl;
-                iErrorUrl = NULL;
-                User::Leave( err );
-                }
-            else
-                {
-                RemoveProgressNoteL();
-                User::Leave( err );
-                }
-            }
-        if ( iPostResponseUrl )
-            {
-            delete iPostResponseUrl;
-            iPostResponseUrl = NULL;
-            }
-        iPostResponseUrl = roapWrapper->GetPostResponseUrlL();
-        CleanupStack::PopAndDestroy( 2, triggerBuf );
-
-        if ( iUseCoeEnv && iProgressInfo && !iPostResponseUrl )
-            {
-            // No PrUrl found. Progess is complete.
-            iProgressInfo->SetAndDraw( KProgressInfoFinalValue );
-            }
-        }
-
-    // Trick to keep note open long enough during prUrl retrieval
-    if ( !iPostResponseUrl )
-        {
-        RemoveProgressNoteL();
-        }
-    else
-        {
-        if ( iUseCoeEnv && iProgressInfo )
-            {
-            iProgressInfo->IncrementAndDraw( KProgressInfoIncrementMedium );
-            }
-        }
-
-    CleanupStack::PopAndDestroy( &roapTrigger );
-    CleanupStack::PopAndDestroy( &download );
-
-    fs.Delete(triggerFileName);
-    CleanupStack::PopAndDestroy(&fs);
-    }
-
-
-// ---------------------------------------------------------------------------
-// CDRMHelperDMgrWrapper::SetDefaultAccessPointL
-// ---------------------------------------------------------------------------
-//
-void CDRMHelperDMgrWrapper::SetDefaultAccessPointL()
-    {
-    const TInt KDestinationSelectionMode( 2 );
-    CRepository* repository( NULL );
-    TInt ap( 0 );
-    TInt alwaysAsk( 0 );
-    TUint32 iapd32( 0 );
-    TInt defaultSnap( 0 );
-    TInt err( KErrNone );
-
-    CLOG_WRITE( "DMgrWrapper::SetDefaultAccessPointL" );
-    repository = CRepository::NewL( KCRUidBrowser );
-    CleanupStack::PushL( repository );
-    repository->Get( KBrowserDefaultAccessPoint, ap );
-    repository->Get( KBrowserAccessPointSelectionMode, alwaysAsk );
-    repository->Get( KBrowserNGDefaultSnapId, defaultSnap );
-
-    if ( ap <= KErrNotFound && defaultSnap <= KErrNotFound )
-        {
-        alwaysAsk = ETrue;
-        }
-    else
-        {
-        RCmManager cmManager;
-        cmManager.OpenLC();
-        if ( !alwaysAsk )
-            {
-            TRAP( err, iapd32 = cmManager.GetConnectionMethodInfoIntL(
-                    ap, CMManager::ECmIapId ) );
-            }
-        else if ( alwaysAsk == KDestinationSelectionMode )
-            {
-            TRAP( err, iapd32 =
-                IapIdOfDefaultSnapL( cmManager, defaultSnap ) );
-            }
-        CleanupStack::PopAndDestroy( &cmManager );
-        }
-    if ( !err && ( !alwaysAsk || alwaysAsk == KDestinationSelectionMode ) )
-        {
-        err = iDlMgr.SetIntAttribute( EDlMgrIap, iapd32 );
-        }
-    CleanupStack::PopAndDestroy( repository );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CDRMHelperDMgrWrapper::GetErrorUrlL
-// ---------------------------------------------------------------------------
-//
-HBufC8* CDRMHelperDMgrWrapper::GetErrorUrlL()
-    {
-    if( iErrorUrl )
-        {
-        return iErrorUrl->AllocL();
-        }
-    return NULL;
-    }
-
-
-// ---------------------------------------------------------------------------
-// From class MHttpDownloadMgrObserver
-// ---------------------------------------------------------------------------
-//
-void CDRMHelperDMgrWrapper::HandleDMgrEventL(
-    RHttpDownload& aDownload,
-    THttpDownloadEvent aEvent )
-    {
-    _LIT8( KDRMHelperMimeTypeROAPTrigger,
-        "application/vnd.oma.drm.roap-trigger+xml" );
-
-    CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL" );
-    CLOG_WRITE_FORMAT( "iDownLoadState = %d", aEvent.iDownloadState );
-    CLOG_WRITE_FORMAT( "iProgressState = %d", aEvent.iProgressState );
-
-    if ( aEvent.iProgressState == EHttpContentTypeReceived )
-        {
-        // check received mimetype
-        RBuf8 contentType;
-        contentType.CleanupClosePushL();
-        contentType.CreateL( KMaxContentTypeLength );
-        User::LeaveIfError(
-            aDownload.GetStringAttribute( EDlAttrContentType, contentType ) );
-        if ( !contentType.FindF( KDRMHelperMimeTypeROAPTrigger ) )
-            {
-            // ROAP trigger found, continue download
-            User::LeaveIfError( aDownload.Start() );
-            }
-        else
-            {
-            // wrong MIME type, so stop download
-            iDownloadSuccess = EFalse;
-            User::LeaveIfError( aDownload.Delete() );
-            }
-        CleanupStack::PopAndDestroy( &contentType );
-        }
-
-    if ( aEvent.iDownloadState == EHttpDlCreated )
-        {
-        CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpDlCreated" );
-        if ( iUseCoeEnv )
-            {
-        iProgressInfo->IncrementAndDraw( KProgressInfoIncrementMedium );
-            }
-        }
-    else if ( aEvent.iProgressState == EHttpProgDisconnected )
-        {
-        CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpProgDisconnected" );
-        // store failure
-        iDownloadSuccess = EFalse;
-        iConnectionError = ETrue;
-        // finished
-        iWait.AsyncStop();
-        }
-    else if ( aEvent.iDownloadState == EHttpDlInprogress )
-        {
-        CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpDlInprogress" );
-        if ( iUseCoeEnv )
-            {
-        iProgressInfo->IncrementAndDraw( KProgressInfoIncrementSmall );
-            }
-        }
-    else if ( aEvent.iDownloadState == EHttpDlCompleted )
-        {
-        // store success
-        CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpDlCompleted" );
-        iDownloadSuccess = ETrue;
-        if ( iUseCoeEnv )
-            {
-        iProgressInfo->IncrementAndDraw( KProgressInfoIncrementLarge );
-            }
-        // finished
-        iWait.AsyncStop();
-        }
-    else if ( aEvent.iDownloadState == EHttpDlFailed )
-        {
-        TInt32 err( KErrNone );
-
-        CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EHttpDlFailed" );
-        // store failure
-        iDownloadSuccess = EFalse;
-        User::LeaveIfError( aDownload.GetIntAttribute( EDlAttrErrorId, err ) );
-        CLOG_WRITE_FORMAT( "EDlAttrErrorId = %d", err );
-
-        if ( err == EConnectionFailed ||
-             err == ETransactionFailed)
-            {
-            CLOG_WRITE( "DMgrWrapper::HandleDMgrEventL: EConnectionFailed" );
-            iConnectionError = ETrue;
-            }
-
-        // finished
-        iWait.AsyncStop();
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CDRMHelperDMgrWrapper::ShowProgressNoteL
-// ---------------------------------------------------------------------------
-//
-void CDRMHelperDMgrWrapper::ShowProgressNoteL( )
-    {
-    TFileName resFileName;
-
-    CLOG_WRITE( "DMgrWrapper::ShowProgressNoteL" );
-    if ( iUseCoeEnv )
-        {
-        // Initialize the progress note dialog, it's values,
-        // and execute it
-
-#ifndef RD_MULTIPLE_DRIVE
-
-        resFileName.Copy( KDriveZ );
-
-#else //RD_MULTIPLE_DRIVE
-
-        _LIT( KDrive, "%c:");
-        TInt driveNumber( -1 );
-        TChar driveLetter;
-        DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRom, driveNumber );
-
-        iCoeEnv->FsSession().DriveToChar( driveNumber, driveLetter );
-
-        resFileName.Format( KDrive, (TUint)driveLetter );
-
-#endif
-
-        resFileName.Append( KDC_RESOURCE_FILES_DIR );
-        resFileName.Append( KCDRMHelperDMgrWrapperResFileName );
-        RConeResourceLoader loader( *iCoeEnv );
-        loader.OpenL( resFileName );
-
-        iProgressNoteDialog = new (ELeave) CAknProgressDialog(
-            reinterpret_cast< CEikDialog** >( &iProgressNoteDialog ) );
-        iProgressNoteDialog->PrepareLC( R_SILENT_PROGRESS_NOTE );
-        iProgressNoteDialog->SetCallback( this );
-        iProgressInfo = iProgressNoteDialog->GetProgressInfoL();
-        iProgressInfo->SetFinalValue( KProgressInfoFinalValue );
-        iDialogDismissed = EFalse;
-        iProgressNoteDialog->RunLD();
-
-        loader.Close();
-        }
-
-    }
-
-
-// ---------------------------------------------------------------------------
-// CDRMHelperDMgrWrapper::RemoveProgressNoteL
-// ---------------------------------------------------------------------------
-//
-void CDRMHelperDMgrWrapper::RemoveProgressNoteL( )
-    {
-
-    if ( iUseCoeEnv )
-        {
-        if (iProgressNoteDialog && !iDialogDismissed)
-            {
-            // deletes the dialog
-            TRAPD(err, iProgressNoteDialog->ProcessFinishedL());
-            if (err != KErrNone)
-                {
-                delete iProgressNoteDialog;
-                }
-            iProgressNoteDialog = NULL;
-            }
-        }
-
-    }
-
-
-// ---------------------------------------------------------------------------
-// From class MAknProgressDialogCallback
-// ---------------------------------------------------------------------------
-//
-void CDRMHelperDMgrWrapper::DialogDismissedL( TInt /*aButtonId*/ )
-    {
-    iDialogDismissed = ETrue;
-
-    // Already freed, just set to NULL
-    iProgressNoteDialog = NULL;
-    iProgressInfo = NULL;
-
-    if( iWait.IsStarted() )
-        {
-        iWait.AsyncStop();
-        }
-
-    }
-
-
-// ======== GLOBAL FUNCTIONS ========
-
-//------------------------------------------------------------------------------
-// GateFunctionDRM
-// DRM gate function
-//------------------------------------------------------------------------------
-EXPORT_C TAny* GateFunctionDMgr()
-    {
-    CDRMHelperDMgrWrapper* launcher = NULL;
-    TRAPD( err, launcher = CDRMHelperDMgrWrapper::NewL() );
-    if( err != KErrNone )
-        {
-        return NULL;
-        }
-
-    return launcher;
-    }
-
--- a/omadrm/drmhelper/src/DRMHelperDownloadManager.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmhelper/src/DRMHelperDownloadManager.cpp	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -18,10 +18,10 @@
 
 // INCLUDE FILES
 #include "DRMHelperDownloadManager.h"
-#include "DRMHelperDMgrWrapper.h"
+#include "DrmUtilityDmgrWrapper.h"
 
 // CONSTANTS
-_LIT( KDRMHelperDMgrHandlerName, "\\system\\libs\\drmhelperdmgrwrapper.dll" );
+_LIT( KDrmUtilityDmgrHandlerName, "DrmUtilityDmgrWrapper.dll" );
 
 typedef TAny* (*NewDMgrL)();
 
@@ -35,14 +35,14 @@
 
 void CDrmHelperDownloadManager::ConstructL()
     {
-    User::LeaveIfError( iDMgrDll.Load( KDRMHelperDMgrHandlerName ) );
+    User::LeaveIfError( iDMgrDll.Load( KDrmUtilityDmgrHandlerName ) );
     NewDMgrL createDMgr = (NewDMgrL) iDMgrDll.Lookup( KFirstFunction );
     if ( !createDMgr )
         {
         User::Leave( KErrGeneral );
         }
     // Create the class, leaves in case of failure
-    iDMgrHandler = (CDRMHelperDMgrWrapper*) (*createDMgr)();
+    iDMgrHandler = reinterpret_cast<CDrmUtilityDmgrWrapper*>( (*createDMgr)() );
     }
 
 CDrmHelperDownloadManager* CDrmHelperDownloadManager::NewL()
--- a/omadrm/drmhelper/src/drmhelper.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmhelper/src/drmhelper.cpp	Mon May 03 12:46:34 2010 +0300
@@ -25,7 +25,6 @@
 #include "DcfCommon.h"
 #include "DRMHelperDownloadManager.h"
 
-#include <sacls.h>
 #include <Drmhelper.rsg>
 #include <AknQueryDialog.h>
 #include <DRMCommon.h>
@@ -60,7 +59,7 @@
 
 #include <utf.h>
 
-#include <SchemeHandler.h> // for handling URLs
+#include <schemehandler.h> // for handling URLs
 #include "DRMHelperServer.h"
 #include "ConsumeData.h"
 #include "DRMTypes.h"
@@ -83,25 +82,15 @@
 #include "DRMRIContext.h"
 #include "DRMDomainContext.h"
 
-#include <cmconnectionmethod.h>
-#include <cmdestination.h>
-#include <cmconnectionmethoddef.h>
-#include <cmmanager.h>
-
 // publish & subrscibe
 #include <e32property.h>
 #include <PSVariables.h>
 
-#ifdef __SERIES60_NATIVE_BROWSER
-#include <BrowserUiSDKCRKeys.h>
-#endif
-
-#ifndef __SERIES60_NATIVE_BROWSER
-const TUid KCRUidBrowser   = {0x10008D39};
-const TUint32 KBrowserDefaultAccessPoint =  0x0000000E;
-const TUint32 KBrowserAccessPointSelectionMode = 0x0000001E;
-#endif
-
+
+//connectivity logic
+#include <cmconnectionmethod.h> // RCmConnectionMethod
+#include <cmdestination.h> // RCmDestination
+#include <cmmanager.h> // RCmManager
 
 // EXTERNAL DATA STRUCTURES
 
@@ -169,32 +158,65 @@
     };
 
 // ============================= LOCAL FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// IapIdOfDefaultSnapL
-// for trapping purposes only
+// -----------------------------------------------------------------------------
+// HasDefaultConnectionL
+// Finds default IAP id
+// @return Etrue: valid AP found
+//         EFalse: valid AP not found
+// @leave system wide error codes
 // -----------------------------------------------------------------------------
 //
-LOCAL_C TUint32 IapIdOfDefaultSnapL(
-    RCmManager& aCmManager,
-    const TUint32 aDefaultSnap )
-    {
-    RCmDestination dest( aCmManager.DestinationL( aDefaultSnap ) );
-    CleanupClosePushL( dest );
-    TUint32 iapIdOfDest( 0 );
-
-    if ( dest.ConnectionMethodCount() <= 0 )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) );
-    CleanupClosePushL( cMeth );
-
-    iapIdOfDest = cMeth.GetIntAttributeL( CMManager::ECmIapId );
-    CleanupStack::PopAndDestroy( &cMeth );
-    CleanupStack::PopAndDestroy( &dest );
-    return iapIdOfDest;
+LOCAL_C TBool HasDefaultConnectionL()
+    {
+    TBool hasDefault(EFalse);
+    TCmDefConnValue defConn;
+    RCmManager cmManager;
+    cmManager.OpenLC();
+    cmManager.ReadDefConnL(defConn);
+    if (defConn.iType == ECmDefConnConnectionMethod)
+        {
+        cmManager.GetConnectionMethodInfoIntL(defConn.iId,
+                CMManager::ECmIapId);
+        hasDefault = ETrue;
+        }
+    else if (defConn.iType == ECmDefConnDestination)
+        {
+        RCmDestination dest(cmManager.DestinationL(defConn.iId));
+        CleanupClosePushL(dest);
+
+        if (dest.ConnectionMethodCount() <= 0)
+            {
+            User::Leave(KErrNotFound);
+            }
+
+        RCmConnectionMethod cMeth(dest.ConnectionMethodL(0));
+        CleanupClosePushL(cMeth);
+
+        cMeth.GetIntAttributeL(CMManager::ECmIapId);
+        CleanupStack::PopAndDestroy(&cMeth);
+        CleanupStack::PopAndDestroy(&dest);
+        hasDefault = ETrue;
+        }
+    CleanupStack::PopAndDestroy(&cmManager);
+    return hasDefault;
+    }
+
+// -----------------------------------------------------------------------------
+// HasAccessPointsL
+// -----------------------------------------------------------------------------
+//
+LOCAL_C TBool HasAccessPointsL()
+    {
+    TInt apCount(0);
+    RCmManager cmManager;
+    CleanupClosePushL(cmManager);
+    cmManager.OpenL();
+    RArray<TUint32> aps;
+    CleanupClosePushL(aps);
+    cmManager.ConnectionMethodL(aps, EFalse, EFalse, ETrue);
+    apCount = aps.Count();
+    CleanupStack::PopAndDestroy(2, &cmManager); //aps, cmManager
+    return apCount > 0;
     }
 
 // -----------------------------------------------------------------------------
@@ -2339,13 +2361,7 @@
     if ( buttonCode == EAknSoftkeyYes )
         {
         // check if there are any APs defined
-        RCmManager cmManager;
-        cmManager.OpenLC();
-        RArray<TUint32> aps;
-        CleanupClosePushL( aps );
-        cmManager.ConnectionMethodL( aps, EFalse, EFalse, ETrue );
-        TUint32 APs( aps.Count() );
-        CleanupStack::PopAndDestroy( 2, &cmManager ); //aps, cmManager
+        TBool APs( HasAccessPointsL() );
         if ( !APs )
             {
             // No AP defined
@@ -2430,43 +2446,17 @@
     }
 
 
+// -----------------------------------------------------------------------------
+// CDRMHelper::CheckRightsPercentL
+// Note: obsolete function name kept only
+// to avoid SC break on Helper selection logic
+// -----------------------------------------------------------------------------
+//
 TBool CDRMHelper::BrowserAPDefinedL()
     {
-    const TInt KDestinationSelectionMode( 2 );
-    TInt err( KErrNone );
-    TInt ap( 0 );
-    TInt alwaysAsk( 0 );
-    TInt defaultSnap( 0 );
-
-    CRepository* repository( CRepository::NewL( KCRUidBrowser ) );
-    repository->Get( KBrowserDefaultAccessPoint, ap );
-    repository->Get( KBrowserAccessPointSelectionMode, alwaysAsk );
-    repository->Get( KBrowserNGDefaultSnapId, defaultSnap );
-    delete repository;
-    if ( ap <= KErrNotFound && defaultSnap <= KErrNotFound )
-        {
-        alwaysAsk = ETrue;
-        }
-    else
-        {
-        RCmManager cmManager;
-        cmManager.OpenLC();
-        if ( !alwaysAsk )
-            {
-            TRAP( err, cmManager.GetConnectionMethodInfoIntL(
-                    ap, CMManager::ECmIapId ) );
-            }
-        else if ( alwaysAsk == KDestinationSelectionMode )
-            {
-            TRAP( err, IapIdOfDefaultSnapL( cmManager, defaultSnap ) );
-            }
-        CleanupStack::PopAndDestroy( &cmManager );
-        if ( !err && ( !alwaysAsk || alwaysAsk == KDestinationSelectionMode ) )
-            {
-            return ETrue;
-            }
-        }
-    return EFalse;
+    TBool apFound( EFalse );
+    TRAP_IGNORE( apFound = HasDefaultConnectionL() );
+    return apFound;
     }
 
 
--- a/omadrm/drmlicensemanager/src/LMSecurity.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,104 +0,0 @@
-/*
-* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Encryption/Decryption support functions
-*
-*/
-
-
-// INCLUDE FILES
-#include <e32std.h>
-#include <e32base.h>
-#include <e32math.h>
-#include <s32buf.h>
-#include <s32crypt.h>
-
-#include "LMSecurity.h"
-#include "LMSecurityEncrypt.h"
-#include "LMSecurityDecrypt.h"
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CLMSecurity::NewEncryptL
-// Return a new encryptor
-// -----------------------------------------------------------------------------
-//
-CSecurityEncryptBase* CLMSecurity::NewEncryptL(
-    const TDesC8& init) const
-    {
-    return new CLMSecurityEncrypt(init);
-    };
-
-// -----------------------------------------------------------------------------
-// CLMSecurity::NewDecryptL
-// Return a new decryptor
-// -----------------------------------------------------------------------------
-//
-CSecurityDecryptBase* CLMSecurity::NewDecryptL(
-    const TDesC8& init) const
-    {
-    return new CLMSecurityDecrypt(init);
-    };
-
-// -----------------------------------------------------------------------------
-// CLMSecurity::SetL
-// Password functions not supported (handled via the encrypt/decrypt classes)
-// -----------------------------------------------------------------------------
-//
-void CLMSecurity::SetL(
-    const TDesC& /* aOldPassword */,
-    const TDesC& /* aNewPassword */)
-    {
-    };
-
-// -----------------------------------------------------------------------------
-// CLMSecurity::SecurityData
-// Password functions not supported (handled via the encrypt/decrypt classes)
-// -----------------------------------------------------------------------------
-//
-TPtrC8 CLMSecurity::SecurityData() const
-    {
-    return TPtrC8(0, 0);
-    };
-
-// -----------------------------------------------------------------------------
-// CLMSecurity::PrepareL
-// Password functions not supported (handled via the encrypt/decrypt classes)
-// -----------------------------------------------------------------------------
-//
-void CLMSecurity::PrepareL(
-    const TDesC& /* aPassword */)
-    {
-    };
-
-// -----------------------------------------------------------------------------
-// CLMSecurity::IsEnabled
-// Password functions not supported (handled via the encrypt/decrypt classes)
-// -----------------------------------------------------------------------------
-//
-TInt CLMSecurity::IsEnabled() const
-    {
-    return ETrue;
-    };
-
-// -----------------------------------------------------------------------------
-// CLMSecurity::SetEnabledL
-// Password functions not supported (handled via the encrypt/decrypt classes)
-// -----------------------------------------------------------------------------
-//
-void CLMSecurity::SetEnabledL(
-    const TDesC& /* aPassword */,
-    TBool /* aIsEnabled */)
-    {
-    };
--- a/omadrm/drmlicensemanager/src/LMSecurityDecrypt.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
-* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Encryption/Decryption support functions
-*
-*/
-
-
-// INCLUDE FILES
-#include <e32std.h>
-#include <e32base.h>
-#include <e32math.h>
-#include <s32buf.h>
-#include <s32crypt.h>
-
-#include "LMSecurity.h"
-#include "LMSecurityDecrypt.h"
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// ?classname::?member_function
-// ?implementation_description
-// -----------------------------------------------------------------------------
-//
-CLMSecurityDecrypt::CLMSecurityDecrypt(
-    const TDesC8& init)
-    {
-    TPckg<TUint> p(0);
-
-    p.Copy(init);
-    iKey = p();
-    Math::Rand(iKey);
-    }
-
-// -----------------------------------------------------------------------------
-// ?classname::?member_function
-// ?implementation_description
-// -----------------------------------------------------------------------------
-//
-TInt CLMSecurityDecrypt::DecryptL(
-    TDes8& aOutput,
-    const TDesC8& aInput)
-    {
-    TInt i;
-    TUint8* ptr;
-
-    ptr = const_cast<TUint8*>(aOutput.Ptr());
-    for (i = 0; i < aInput.Size(); i++)
-        {
-        ptr[i] = static_cast<TUint8>(aInput[i] ^ Math::Rand(iKey));
-        }
-    aOutput.SetLength(aInput.Size());
-    return aInput.Size();
-    }
--- a/omadrm/drmlicensemanager/src/LMSecurityEncrypt.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
-* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Encryption/Decryption support functions
-*
-*/
-
-
-// INCLUDE FILES
-#include <e32std.h>
-#include <e32base.h>
-#include <e32math.h>
-#include <s32buf.h>
-#include <s32crypt.h>
-
-#include "LMSecurity.h"
-#include "LMSecurityEncrypt.h"
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CLMSecurityEncrypt::CLMSecurityEncrypt
-// Initialize the random key stream from a constant
-// -----------------------------------------------------------------------------
-//
-CLMSecurityEncrypt::CLMSecurityEncrypt(
-    const TDesC8& init)
-    {
-    TPckg<TUint> p(0);
-
-    p.Copy(init);
-    iKey = p();
-    Math::Rand(iKey);
-    }
-
-// -----------------------------------------------------------------------------
-// CLMSecurityEncrypt::EncryptL
-// Encrypt using the key stream
-// -----------------------------------------------------------------------------
-//
-TInt CLMSecurityEncrypt::EncryptL(
-    TDes8& aOutput,
-    const TDesC8& aInput)
-    {
-    TInt i;
-    TUint8* ptr;
-
-    ptr = const_cast<TUint8*>(aOutput.Ptr());
-    for (i = 0; i < aInput.Size(); i++)
-        {
-        ptr[i] = static_cast<TUint8>(aInput[i] ^ Math::Rand(iKey));
-        }
-    aOutput.SetLength(aInput.Size());
-    return aInput.Size();
-    }
-
-// -----------------------------------------------------------------------------
-// CLMSecurityEncrypt::CompleteL
-// Final encryption
-// -----------------------------------------------------------------------------
-//
-TInt CLMSecurityEncrypt::CompleteL(
-    TDes8& aOutput,
-    const TDesC8& aInput)
-    {
-    return EncryptL(aOutput, aInput);
-    }
--- a/omadrm/drmplugins/drmrohandler/inc/rohandlerdmgrwrapper.h	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmplugins/drmrohandler/inc/rohandlerdmgrwrapper.h	Mon May 03 12:46:34 2010 +0300
@@ -30,14 +30,8 @@
 
 class MRoHandlerDMgrWrapper
     {
-
 public:
     virtual void HandleRoapTriggerL( const TDesC8& aTrigger ) = 0;
-
-    virtual void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl ) = 0;
-
-    virtual void DownloadAndHandleRoapTriggerFromPrUrlL( const HBufC8* aUrl ) = 0;
-
     };
 
 /**
@@ -78,10 +72,6 @@
     */
     void HandleRoapTriggerL( const TDesC8& aTrigger );
 
-    void DownloadAndHandleRoapTriggerL( const HBufC8* aUrl );
-
-    void DownloadAndHandleRoapTriggerFromPrUrlL( const HBufC8* aUrl );
-
 
 // from base class MHttpDownloadMgrObserver
 
--- a/omadrm/drmplugins/drmrohandler/src/rohandlerdmgrwrapper.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/drmplugins/drmrohandler/src/rohandlerdmgrwrapper.cpp	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008 - 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008 - 2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -21,10 +21,6 @@
 #include <centralrepository.h>
 #include <cdblen.h>
 
-#ifdef __SERIES60_NATIVE_BROWSER
-#include <BrowserUiSDKCRKeys.h>
-#endif
-
 #include <cmconnectionmethod.h>
 #include <cmdestination.h>
 #include <cmconnectionmethoddef.h>
@@ -46,6 +42,8 @@
 #include "RoapSyncWrapper.h"
 
 #include "rohandlerdmgrwrapper.h"
+#include "cleanupresetanddestroy.h"
+#include "buffercontainers.h"
 
 #ifdef _DEBUG
 #define DRMDEBUG( a ) RDebug::Print( a )
@@ -93,9 +91,6 @@
     _LIT( KMethConstructL, "ConstructL" );
     _LIT( KMethNewL, "NewL" );
     _LIT( KMethNewLC, "NewLC" );
-    _LIT( KMethDownloadAndHandleRoapTriggerL, "DownloadAndHandleRoapTriggerL" );
-    _LIT( KMethDownloadAndHandleRoapTriggerFromPrUrlL,
-        "DownloadAndHandleRoapTriggerFromPrUrlL" );
     _LIT( KMethDoDownloadAndHandleRoapTriggerL,
         "DoDownloadAndHandleRoapTriggerL" );
     _LIT( KFormatDoDlHdlRoapTrigL, "DoDownloadAndHandleRoapTriggerL: %S" );
@@ -103,7 +98,6 @@
     _LIT( KStrDlFinished, "download finished" );
 
     _LIT( KMethSetDefaultAccessPointL, "SetDefaultAccessPointL" );
-    _LIT( KMiIapId, "iIapId" );
 
     _LIT( KMethHandleDMgrEventL, "HandleDMgrEventL" );
     _LIT( KFormatMethHandleDMgrEventL, "HandleDMgrEventL %S" );
@@ -135,14 +129,6 @@
 //#define LOG2( a, b )
 #endif
 
-#ifndef __SERIES60_NATIVE_BROWSER
-const TUid KCRUidBrowser =
-    {0x10008D39};
-const TUint32 KBrowserDefaultAccessPoint = 0x0000000E;
-const TUint32 KBrowserAccessPointSelectionMode = 0x0000001E;
-const TUint32 KBrowserNGDefaultSnapId = 0x00000053;
-#endif
-
 // CONSTANTS
 #ifndef RD_MULTIPLE_DRIVE
 _LIT( KHelperTriggerFilePath, "d:\\" );
@@ -151,18 +137,6 @@
 // ============================== LOCAL FUNCTIONS ==============================
 
 // ---------------------------------------------------------------------------
-// DoResetAndDestroy
-// Does RPointerArray< typename >->ResetAndDestroy() for the given array aPtr.
-// ---------------------------------------------------------------------------
-//
-template< typename elemType >
-LOCAL_C void DoResetAndDestroy( TAny* aPtr )
-    {
-    ( reinterpret_cast< RPointerArray< elemType >* >( aPtr ) )->
-        ResetAndDestroy();
-    }
-
-// ---------------------------------------------------------------------------
 // DeleteHttpDowload
 // ---------------------------------------------------------------------------
 //
@@ -189,34 +163,6 @@
         }
     }
 
-// ---------------------------------------------------------------------------
-// IapIdOfDefaultSnapL
-// for trapping purposes only
-// ---------------------------------------------------------------------------
-//
-LOCAL_C TUint32 IapIdOfDefaultSnapL(
-    RCmManager& aCmManager,
-    const TUint32 aDefaultSnap )
-    {
-    RCmDestination dest( aCmManager.DestinationL( aDefaultSnap ) );
-    CleanupClosePushL( dest );
-    TUint32 iapIdOfDest( 0 );
-
-    if ( dest.ConnectionMethodCount() <= 0 )
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    RCmConnectionMethod cMeth( dest.ConnectionMethodL( 0 ) );
-    CleanupClosePushL( cMeth );
-
-    iapIdOfDest = cMeth.GetIntAttributeL( CMManager::ECmIapId );
-    CleanupStack::PopAndDestroy( &cMeth );
-    CleanupStack::PopAndDestroy( &dest );
-    return iapIdOfDest;
-    }
-
-
 // ============================= MEMBER FUNCTIONS ==============================
 
 // ---------------------------------------------------------------------------
@@ -301,7 +247,7 @@
     }
 
 // ---------------------------------------------------------------------------
-// CRoHandlerDMgrWrapper::DownloadAndHandleRoapTriggerL
+// CRoHandlerDMgrWrapper::HandleRoapTriggerL
 // ---------------------------------------------------------------------------
 //
 void CRoHandlerDMgrWrapper::HandleRoapTriggerL( const TDesC8& aTrigger )
@@ -317,42 +263,6 @@
     }
 
 // ---------------------------------------------------------------------------
-// CRoHandlerDMgrWrapper::DownloadAndHandleRoapTriggerL
-// ---------------------------------------------------------------------------
-//
-void CRoHandlerDMgrWrapper::DownloadAndHandleRoapTriggerL( const HBufC8* aUrl )
-    {
-    DRMDEBUGMETHOD(
-        RoHdlrDMgrWrDebugLiterals::KMethDownloadAndHandleRoapTriggerL() );
-    if ( iState != EInit || iWait.IsStarted() )
-        {
-        User::Leave( KErrNotReady );
-        }
-
-    UpdateBufferL< HBufC8, TDesC8 >( iTriggerUrl, *aUrl );
-    Continue( EGetMeteringTrigger, KErrNone );
-    iWait.Start();
-    }
-
-// ---------------------------------------------------------------------------
-// CRoHandlerDMgrWrapper::DownloadAndHandleRoapTriggerFromPrUrlL
-// ---------------------------------------------------------------------------
-//
-void CRoHandlerDMgrWrapper::DownloadAndHandleRoapTriggerFromPrUrlL(
-        const HBufC8* aUrl )
-    {
-    DRMDEBUGMETHOD( RoHdlrDMgrWrDebugLiterals::KMethDownloadAndHandleRoapTriggerFromPrUrlL() );
-    if ( iState != EInit || iWait.IsStarted() )
-        {
-        User::Leave( KErrNotReady );
-        }
-
-    UpdateBufferL< HBufC8, TDesC8 >( iTriggerUrl, *aUrl );
-    Continue( EGetPrUrlTrigger, KErrNone );
-    iWait.Start();
-    }
-
-// ---------------------------------------------------------------------------
 // CRoHandlerDMgrWrapper::DoDownloadRoapTriggerL
 // ---------------------------------------------------------------------------
 //
@@ -360,7 +270,7 @@
     {
     RFile roapTrigger;
     TBool result( EFalse );
-    TFileName triggerFileName;
+    DRM::CFileNameContainer* triggerFileName(NULL);
 
     DRMDEBUGMETHOD( RoHdlrDMgrWrDebugLiterals::KMethDoDownloadAndHandleRoapTriggerL() );
     // If no Trigger URL then nothing to download. So finish transaction
@@ -370,10 +280,11 @@
         return;
         }
 
+    triggerFileName=DRM::CFileNameContainer::NewLC();
 #ifndef RD_MULTIPLE_DRIVE
 
     User::LeaveIfError( roapTrigger.Temp(
-            iFs, KHelperTriggerFilePath, triggerFileName, EFileWrite ) );
+            iFs, KHelperTriggerFilePath, triggerFileName->iBuffer, EFileWrite ) );
 
 #else //RD_MULTIPLE_DRIVE
     _LIT( KDrive, "%c:\\" );
@@ -382,15 +293,20 @@
     DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRam, driveNumber );
     iFs.DriveToChar( driveNumber, driveLetter );
 
-    TFileName helperTriggerFilePath;
+    DRM::CFileNameContainer*
+        helperTriggerFilePath( DRM::CFileNameContainer::NewLC() );
+
+    helperTriggerFilePath->iBuffer.Format( KDrive, ( TUint )driveLetter );
 
-    helperTriggerFilePath.Format( KDrive, ( TUint )driveLetter );
-
-    User::LeaveIfError( roapTrigger.Temp( iFs, helperTriggerFilePath,
-            triggerFileName, EFileWrite ) );
+    User::LeaveIfError( roapTrigger.Temp( iFs, helperTriggerFilePath->iBuffer,
+                triggerFileName->iBuffer, EFileWrite ) );
+    CleanupStack::PopAndDestroy( helperTriggerFilePath );
+    helperTriggerFilePath=NULL;
 
 #endif
-    UpdateBufferL< HBufC, TFileName >( iFileName, triggerFileName );
+    UpdateBufferL< HBufC, TFileName >( iFileName, triggerFileName->iBuffer );
+    CleanupStack::PopAndDestroy( triggerFileName );
+    triggerFileName=NULL;
 
     // create and start download
     RHttpDownload& download = iDlMgr.CreateDownloadL( *iTriggerUrl, result );
@@ -504,9 +420,7 @@
     Roap::TDomainOperation domainOperation;
 
     RPointerArray< HBufC8 > contentIds;
-
-    TCleanupItem cleanup( DoResetAndDestroy< HBufC8 >, &contentIds );
-    CleanupStack::PushL( cleanup );
+    CleanupResetAndDestroyPushL( contentIds );
 
     iRoapEng = Roap::CRoapEng::NewL();
 
@@ -535,55 +449,11 @@
 //
 void CRoHandlerDMgrWrapper::SetDefaultAccessPointL()
     {
-    const TInt KDestinationSelectionMode( 2 );
-    CRepository* repository( NULL );
-    TInt ap( 0 );
-    TInt alwaysAsk( 0 );
-    TUint32 iapd32( 0 );
-    TInt defaultSnap( 0 );
-    TInt err( KErrNone );
-
     DRMDEBUGMETHOD( RoHdlrDMgrWrDebugLiterals::KMethSetDefaultAccessPointL() );
 
-    if ( !iIapId )
+    if ( iIapId )
         {
-        repository = CRepository::NewL( KCRUidBrowser );
-        CleanupStack::PushL( repository );
-        repository->Get( KBrowserDefaultAccessPoint, ap );
-        repository->Get( KBrowserAccessPointSelectionMode, alwaysAsk );
-        repository->Get( KBrowserNGDefaultSnapId, defaultSnap );
-        if ( ap <= KErrNotFound && defaultSnap <= KErrNotFound )
-            {
-            alwaysAsk = ETrue;
-            }
-        else
-            {
-            RCmManager cmManager;
-            cmManager.OpenLC();
-            if ( !alwaysAsk )
-                {
-                TRAP( err, iapd32 = cmManager.GetConnectionMethodInfoIntL(
-                        ap, CMManager::ECmIapId ) );
-                }
-            else if ( alwaysAsk == KDestinationSelectionMode )
-                {
-                TRAP( err, iapd32 = IapIdOfDefaultSnapL(
-                        cmManager, defaultSnap ) );
-                }
-            CleanupStack::PopAndDestroy( &cmManager );
-            }
-        if ( !err && ( !alwaysAsk || alwaysAsk == KDestinationSelectionMode ) )
-            {
-            iIapId = iapd32;
-            DRMDEBUG3( RoHdlrDMgrWrDebugLiterals::KFormatMembValInt(),
-                &RoHdlrDMgrWrDebugLiterals::KMiIapId(), iIapId );
-            err = iDlMgr.SetIntAttribute( EDlMgrIap, iapd32 );
-            }
-        CleanupStack::PopAndDestroy( repository );
-        }
-    else
-        {
-        err = iDlMgr.SetIntAttribute( EDlMgrIap, iIapId );
+        iDlMgr.SetIntAttribute( EDlMgrIap, iIapId );
         }
     }
 
--- a/omadrm/drmplugins/drmudtmodule/bwinscw/DrmUdtModuleU.DEF	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-EXPORTS
-	??1CDrmUdtHandler@@UAE@XZ @ 1 NONAME ; CDrmUdtHandler::~CDrmUdtHandler(void)
-	?DoUserDataTransferL@CDrmUdtHandler@@QAEXABVTDesC8@@0PAVMDrmUdtObserver@@AAVTRequestStatus@@@Z @ 2 NONAME ; void CDrmUdtHandler::DoUserDataTransferL(class TDesC8 const &, class TDesC8 const &, class MDrmUdtObserver *, class TRequestStatus &)
-	?NewL@CDrmUdtHandler@@SAPAV1@XZ @ 3 NONAME ; class CDrmUdtHandler * CDrmUdtHandler::NewL(void)
-	?SetPreferredIap@CDrmUdtHandler@@QAEXK@Z @ 4 NONAME ; void CDrmUdtHandler::SetPreferredIap(unsigned long)
-
--- a/omadrm/drmplugins/drmudtmodule/eabi/DrmUdtModuleU.DEF	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-EXPORTS
-	_ZN14CDrmUdtHandler15SetPreferredIapEm @ 1 NONAME
-	_ZN14CDrmUdtHandler19DoUserDataTransferLERK6TDesC8S2_P15MDrmUdtObserverR14TRequestStatus @ 2 NONAME
-	_ZN14CDrmUdtHandler4NewLEv @ 3 NONAME
-	_ZTI11CDrmUdtConn @ 4 NONAME ; #<TI>#
-	_ZTI14CDrmUdtHandler @ 5 NONAME ; #<TI>#
-	_ZTV11CDrmUdtConn @ 6 NONAME ; #<VT>#
-	_ZTV14CDrmUdtHandler @ 7 NONAME ; #<VT>#
-
--- a/omadrm/drmplugins/drmudtmodule/group/DrmUdtModule.mmp	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
-* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  ?Description
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-TARGET      DrmUdtModule.dll
-TARGETTYPE  DLL
-UID         0x1000008D 0x10205CAB
-CAPABILITY  CAP_GENERAL_DLL DRM
-VENDORID    VID_DEFAULT
-
-SOURCEPATH  ../src 
-SOURCE      DrmUdtHandler.cpp
-SOURCE      DrmUdtConn.cpp
-
-USERINCLUDE     ../inc
-USERINCLUDE     ../../../../omadrm/drmengine/RoapStorage/inc
-USERINCLUDE     ../../../../omadrm/drmengine/Utils/inc
-USERINCLUDE	    ../../../../inc   // ADo level inc dir
-
-// Default system include paths for middleware layer modules.
-MW_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE /epoc32/include/http
-SYSTEMINCLUDE /epoc32/include/ecom
-
-LIBRARY     euser.lib
-LIBRARY     estor.lib
-LIBRARY     efsrv.lib    
-LIBRARY     commdb.lib
-LIBRARY     bafl.lib 
-LIBRARY     esock.lib
-LIBRARY     http.lib     
-LIBRARY     inetprotutil.lib
-LIBRARY	    apmime.lib
-LIBRARY     random.lib
-LIBRARY     hash.lib
-LIBRARY     etel.lib
-LIBRARY	    etelmm.lib
-LIBRARY     flogger.lib
-LIBRARY     DrmServerInterfaces.lib
-
-#if defined(ARMCC)
-deffile ../eabi/ 
-#elif defined( WINSCW )
-deffile ../bwinscw/ 
-#elif defined( WINS )
-deffile ../bwins/ 
-#else
-deffile ../bmarm/ 
-#endif
-
-SMPSAFE
--- a/omadrm/drmplugins/drmudtmodule/inc/DrmUdtConn.h	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
-* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  ?Description
-*
-*/
-
-
-#ifndef DRM_UDT_CONN_H
-#define DRM_UDT_CONN_H
-
-// INCLUDES
-
-#include <e32base.h>
-#include <es_sock.h>
-#include <CommDbConnPref.h>
-
-
-// FORWARD DECLARATIONS
-class MDrmUdtObserver;
-
-// CLASS DECLARATION
-
-class CDrmUdtConn : public CActive
-    {
-    public:     // Constructors and destructor.
-
-        static CDrmUdtConn* NewL();
-
-        CDrmUdtConn();
-
-        ~CDrmUdtConn();
-
-    public:     // new methods
-
-        void ConnectL( TUint32 aIap,
-                       MDrmUdtObserver* aObserver,
-                       TRequestStatus* aStatus );
-
-        void Close();
-
-        TBool IsConnected( TUint32& aIap );
-
-        RSocketServ& SocketServ();
-
-        RConnection& Conn();
-
-    private:
-
-        enum TState
-            {
-            EInit,
-            EConnecting,
-            EConnected
-            };
-
-    private:    // Constructors and destructor.
-
-        void ConstructL();
-
-    private:  // from CActive
-
-        virtual void DoCancel();
-
-        virtual void RunL();
-
-        virtual TInt RunError( TInt aError );
-
-    private:    // new methods
-
-        void DoClose();
-
-        void Done();
-
-    private:    // data
-
-        RSocketServ iSocketServ;
-        RConnection iConnection;
-        TState iState;
-        TRequestStatus* iParentStatus;
-        TCommDbConnPref iConnPref;
-        MDrmUdtObserver* iObserver;
-    };
-
-#endif /* def CONNECTION_H */
--- a/omadrm/drmplugins/drmudtmodule/src/DrmUdtConn.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,311 +0,0 @@
-/*
-* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  ?Description
-*
-*/
-
-
-// INCLUDE FILES
-
-#include "DrmUdtConn.h"
-#include "DrmUdtObserver.h"
-
-#include <CommDbConnPref.h>
-#include <commdb.h>
-#include <cdblen.h>
-#include <es_enum.h>
-
-// #include <ApSelect.h> // for checking APs
-
-#ifdef _DEBUG
-#define LOGGING
-#endif
-
-#define LOGGING
-
-#ifdef LOGGING
-_LIT(KLogDir, "DRM");
-_LIT(KLogName, "UDT.log");
-#include "flogger.h"
-#define LOG(string) \
-	RFileLogger::Write(KLogDir, KLogName, \
-		EFileLoggingModeAppend, string);
-#define LOGHEX(buffer) \
-	RFileLogger::HexDump(KLogDir, KLogName, \
-		EFileLoggingModeAppend, _S(""), _S(""), \
-		buffer.Ptr(), buffer.Length());
-#else
-#define LOG
-#define LOGHEX        
-#endif
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CDrmUdtConn::NewL()
-// ---------------------------------------------------------
-//
-CDrmUdtConn* CDrmUdtConn::NewL()
-    {
-    LOG( _L("CDrmUdtConn::NewL") );
-    CDrmUdtConn* conn = new (ELeave) CDrmUdtConn();
-    CleanupStack::PushL( conn );
-    conn->ConstructL();
-    CleanupStack::Pop( conn );
-    return conn;
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtConn::~CDrmUdtConn()
-// ---------------------------------------------------------
-//
-CDrmUdtConn::~CDrmUdtConn()
-    {
-    LOG( _L("CDrmUdtConn::~CDrmUdtConn") );
-    Cancel();
-    iConnection.Close();
-    iSocketServ.Close();
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtConn::ConnectL()
-// ---------------------------------------------------------
-//
-void CDrmUdtConn::ConnectL( TUint32 aIap,
-                            MDrmUdtObserver* aObserver,
-                            TRequestStatus* aStatus )
-    { 
-    LOG( _L("CDrmUdtConn::ConnectL") );
-    
-    iObserver = aObserver;
-    
-    if ( iState == EInit )
-        {
-        // Not connected. Attach to existing connection, or create new one if
-        // allowed.
-        iStatus = KErrGeneral;
-
-        // Make this part atomic by pushing closes on the stack.
-        User::LeaveIfError( iSocketServ.Connect() );
-        CleanupClosePushL<RSocketServ>( iSocketServ );
-        User::LeaveIfError( iConnection.Open( iSocketServ ) );
-        CleanupClosePushL<RConnection>( iConnection );
-                
-        TConnectionInfoBuf connInfo;
-        TUint count;
-        User::LeaveIfError( iConnection.EnumerateConnections( count ) );
-        TUint i;
-        if ( count )
-            {
-            // Select from existing connections. Try to make AP match.
-            for ( i = count; i; i-- )
-                {
-                // Note: GetConnectionInfo expects 1-based index.
-                User::LeaveIfError( iConnection.GetConnectionInfo( i, connInfo ) );
-                if ( aIap == 0 || connInfo().iIapId == aIap )
-                    {
-                    // "Accept any" or AP match. Attach to this one.
-                    break;
-                    }
-                }
-            if ( !i )
-                {
-                // No AP match, select AP with largest index.
-                User::LeaveIfError
-                    ( iConnection.GetConnectionInfo( count, connInfo ) );
-                }
-            User::LeaveIfError
-                ( iConnection.Attach( connInfo, RConnection::EAttachTypeNormal ) );
-            iState = EConnected;
-            iStatus = KErrNone;
-            }
-        else
-            {
-            // No existing connections, create new one.
-#ifdef __WINS__
-            // WINS connection creation does not work if preferences are given.
-            // Defaults are to be used always.
-            iConnection.Start( iStatus );
-#else
-            // Note: the TCommDbConnPref must NOT be stack variable.
-            // It must persist until completion of RConnection::Start().
-            iConnPref.SetDirection( ECommDbConnectionDirectionOutgoing );
-            iConnPref.SetDialogPreference( ECommDbDialogPrefPrompt );
-            iConnPref.SetBearerSet( ECommDbBearerCSD | ECommDbBearerWcdma );
-            // New connection is always created with user-selected AP;
-            // so 0 is used instead of aIap.
-            iConnPref.SetIapId( 0 );
-            iConnection.Start( iConnPref, iStatus );
-#endif
-            if ( iObserver )
-                {
-                iObserver->ConnectionStartedL();
-                }
-
-            iState = EConnecting;
-            SetActive();    // The only path with a real async request.
-            }
-        CleanupStack::Pop( 2 ); // closing iConn and iSockServ
-        // End of atomic part.
-        }
-    else
-        {
-        // Not expecting this to be called in other states.
-        }
-
-    iParentStatus = aStatus;
-    *iParentStatus = KRequestPending;
-
-    if ( !IsActive() )
-        {
-        // Unless we have an outstanding connect request (iConn.Start),
-        // we are done.
-        User::RequestComplete( iParentStatus, iStatus.Int() );
-        iParentStatus = NULL;
-        }
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtConn::Close()
-// ---------------------------------------------------------
-//
-void CDrmUdtConn::Close()
-    {
-    LOG( _L("CDrmUdtConn::Close") );
-    Cancel();
-    iConnection.Close();
-    iSocketServ.Close();
-    iState = EInit;
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtConn::IsConnected()
-// ---------------------------------------------------------
-//
-TBool CDrmUdtConn::IsConnected( TUint32& aIap )
-    {
-    LOG( _L("CDrmUdtConn::IsConnected") );
-    TBool connected( EFalse );
-    if( iState == EConnected )
-        {
-        TBuf<KCommsDbSvrMaxColumnNameLength * 2 + 1> iapId;
-        _LIT( KFormatIapId, "%S\\%S" );
-        TPtrC iap( IAP );
-        TPtrC id( COMMDB_ID );
-        iapId.Format( KFormatIapId, &iap, &id );
-        TInt err = iConnection.GetIntSetting( iapId, aIap );
-        connected = err ? EFalse : ETrue;
-        }
-    return connected;
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtConn::CConnection()
-// ---------------------------------------------------------
-//
-CDrmUdtConn::CDrmUdtConn()
-: CActive( CActive::EPriorityStandard ),
-  iState( EInit )
-    {
-    LOG( _L("CDrmUdtConn::CDrmUdtConn") );
-    CActiveScheduler::Add( this );
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtConn::ConstructL()
-// ---------------------------------------------------------
-//
-void CDrmUdtConn::ConstructL()
-    {
-    LOG( _L("CDrmUdtConn::ConstructL") );
-    /*
-    TUint32 APs( 0 );
-    CCommsDatabase* commsdb = CCommsDatabase::NewL( EDatabaseTypeIAP );
-    CleanupStack::PushL( commsdb );
-    CApSelect* apSel = CApSelect::NewLC (
-        *commsdb,
-        KEApIspTypeAll,
-        EApBearerTypeAll,
-        KEApSortUidAscending );
-    APs = apSel->Count();
-    CleanupStack::PopAndDestroy( 2 );
-    if ( !APs )
-        {
-        // No AP defined
-        User::Leave( KErrRoapGeneral );
-        }
-     */
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtConn::DoCancel()
-// ---------------------------------------------------------
-//
-void CDrmUdtConn::DoCancel()
-    {
-    LOG( _L("CDrmUdtConn::DoCancel") );
-    iConnection.Close();
-    iSocketServ.Close();
-    User::RequestComplete( iParentStatus, KErrCancel );
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtConn::RunL()
-// ---------------------------------------------------------
-//
-void CDrmUdtConn::RunL()
-    {
-    LOG( _L("CDrmUdtConn::RunL") );
-    User::LeaveIfError( iStatus.Int() );    // Handle errors in RunError().
-
-    iState = EConnected;
-    User::RequestComplete( iParentStatus, iStatus.Int() );
-    iParentStatus = NULL;
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtConn::RunError()
-// ---------------------------------------------------------
-//
-TInt CDrmUdtConn::RunError( TInt  /*aError*/ )
-    {
-    LOG( _L("CDrmUdtConn::RunError") );
-    iConnection.Close();
-    iSocketServ.Close();
-    iState = EInit;
-    User::RequestComplete( iParentStatus, iStatus.Int() );
-    iParentStatus = NULL;
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------
-// CRoapConnection::Conn()
-// ---------------------------------------------------------
-//
-RSocketServ& CDrmUdtConn::SocketServ()
-    {
-    LOG( _L("CDrmUdtConn::SocketServ") );
-    return iSocketServ;
-    }
-
-// ---------------------------------------------------------
-// CRoapConnection::Conn()
-// ---------------------------------------------------------
-//
-RConnection& CDrmUdtConn::Conn()
-    {
-    LOG( _L("CDrmUdtConn::Conn") );
-    return iConnection;
-    }
-
--- a/omadrm/drmplugins/drmudtmodule/src/DrmUdtHandler.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1228 +0,0 @@
-/*
-* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of the User Data Transfer module
-*
-*/
-
-
-// INCLUDE FILES
-#include "DrmUdtHandler.h"
-#include "DrmUdtConn.h"
-#include "RoapStorageClient.h"
-#include "DrmRightsClient.h"
-#include "DrmUdtObserver.h"
-
-#include <hash.h>
-#include <stringpool.h>
-#include <http/thttphdrval.h>
-#include <etelmm.h> 
-#include <mmtsy_names.h>
-
-#ifdef _DEBUG
-#define LOGGING
-#endif
-
-#define LOGGING
-
-#ifdef LOGGING
-_LIT(KLogDir, "DRM");
-_LIT(KLogName, "UDT.log");
-#include "flogger.h"
-#define LOG(string) \
-	RFileLogger::Write(KLogDir, KLogName, \
-		EFileLoggingModeAppend, string);
-#define LOGINT(string, val) \
-	RFileLogger::WriteFormat(KLogDir, KLogName, \
-		EFileLoggingModeAppend, string, val);
-#define LOGHEX(buffer) \
-	RFileLogger::HexDump(KLogDir, KLogName, \
-		EFileLoggingModeAppend, _S(""), _S(""), \
-		buffer.Ptr(), buffer.Length());
-#else
-#define LOG
-#define LOGHEX        
-#endif
-
-using namespace Roap;
-
-// ================= CONSTANTS ======================
-
-// The time out value in HTTP, 30 sec
-LOCAL_D const TInt KUdtTimeoutValue = 30000000;
-
-LOCAL_D const TInt KMaxSerNumLength = 64;
-LOCAL_D const TInt KRdbKeyLength = 256;
-LOCAL_D const TInt KVersionSize = 1;
-LOCAL_D const TInt KMessageIdSize = 1;
-LOCAL_D const TInt KLengthSize = 4;
-LOCAL_D const TInt KSignatureLength = 128;
-
-LOCAL_D const TInt KVersion = 0;
-
-LOCAL_D const TInt KPadding255 = 1;
-
-_LIT8( KUdtContentType, "application/binary" );
-
-// UDT message identifiers
-LOCAL_D const TUint8 KUdtRequestId = 0;
-LOCAL_D const TUint8 KUdtResponseId = 1;
-LOCAL_D const TUint8 KStatusResponseId = 3;
-LOCAL_D const TUint8 KErrorResponseId = 4;
-LOCAL_D const TUint8 KServerErrorValue = 0;
-LOCAL_D const TUint8 KClientErrorValue = 1;
-
-
-LOCAL_D const TInt KUdtResponseSize = 129;
-
-NONSHARABLE_STRUCT( TUnloadModule )
-    {
-    RTelServer* iServer;
-    const TDesC* iName;
-    };
-
-// ================= LOCAL FUNCTIONS =========================
-
-LOCAL_C void WriteIntToBlock( TInt aValue, TDes8& aBlock, TInt aOffset )
-    {
-    aBlock.SetLength(4);
-    aBlock[aOffset] =     (aValue & 0xff000000) >> 24;
-    aBlock[aOffset + 1] = (aValue & 0x00ff0000) >> 16;
-    aBlock[aOffset + 2] = (aValue & 0x0000ff00) >> 8;
-    aBlock[aOffset + 3] = (aValue & 0x000000ff);
-    }
-
-template<class S>
-void PointerArrayResetDestroyAndClose(TAny* aPtr)
-    {
-    (reinterpret_cast<RPointerArray<S>*>(aPtr))->ResetAndDestroy();
-    (reinterpret_cast<RPointerArray<S>*>(aPtr))->Close();
-    }
-    
-LOCAL_C void DoUnloadPhoneModule( TAny* aAny )
-    {
-    __ASSERT_DEBUG( aAny, User::Invariant() );
-    TUnloadModule* module = ( TUnloadModule* ) aAny;
-    module->iServer->UnloadPhoneModule( *( module->iName ) );
-    } 
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::NewL()
-// ---------------------------------------------------------
-//
-EXPORT_C CDrmUdtHandler* CDrmUdtHandler::NewL( )
-    {
-    LOG( _L("CDrmUdtHandler:NewL:") );
-    CDrmUdtHandler* handler = new( ELeave ) CDrmUdtHandler();
-    CleanupStack::PushL( handler );
-    handler->ConstructL();
-    CleanupStack::Pop( handler );
-    return handler;
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::~CDrmUdtModule()
-// ---------------------------------------------------------
-//
-CDrmUdtHandler::~CDrmUdtHandler()
-    {
-    LOG( _L("CDrmUdtHandler::~CDrmUdtHandler") );
-    Cancel();
-	iSession.Close();
-	delete iConnection;
-	delete iUri;
-	delete iTimeout;
-    delete iOneTimePassword;
-    delete iUdtRequest;
-    delete iUdtResponse;
-    }
-    
-// ---------------------------------------------------------
-// CDrmUdtHandler::ConstructL()
-// ---------------------------------------------------------
-//
-void CDrmUdtHandler::ConstructL() 
-    {
-    LOG( _L("CDrmUdtHandler::ConstructL") );
-    iConnection = CDrmUdtConn::NewL();
-    iTimeout = CPeriodic::NewL( CActive::EPriorityUserInput );
-    iRequestType = EUdtRequest;
-    iUdtError = EUdtOk;
-    iStateInfo.iState = TUdtStateInfo::EUdtNotStarted;
-    iStateInfo.iProgress = 0;
-    iStateInfo.iError = EUdtOk;
-    }
-    
-// -----------------------------------------------------------------------------
-// CDrmUdtHandler::DoUserDataTransferL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CDrmUdtHandler::DoUserDataTransferL( const TDesC8& aOneTimePassword,
-                                                   const TDesC8& aServiceUrl,
-                                                   MDrmUdtObserver* aObserver,
-                                                   TRequestStatus& aStatus )
-    {
-    LOG( _L("CDrmUdtHandler::DoUserDataTransferL") );
-    __ASSERT_ALWAYS( iState == EInit, User::Invariant() );
-    
-    /*
-    1. fetch original RDB data from the rights client (serial number and key)
-    2. create UDT package with the original RDB data, the one time password,
-       our serial number and our certificate
-    3. open a connection to the service URL
-    4. do a POST to the service URL, sending our UDT package
-    5. receive the anwser with the re-encrypted RDB key
-    6. tell the rights client to do a restore, using the re-encrypted RDB key
-    7. do a POST to the service URL, sendind a success or error notification
-    */
-
-    iOneTimePassword = aOneTimePassword.AllocLC();
-    iUri = aServiceUrl.AllocL();
-    iObserver = aObserver;
-    
-    LOG( _L8("Password: ") );
-    LOG( aOneTimePassword );
-    LOG( _L8("URL: ") );
-    LOG( aServiceUrl );
-    
-    iParentStatus = &aStatus;    
-    *iParentStatus = KRequestPending;
-    iState = EStart;
-    TRequestStatus* ownStatus = &iStatus;    
-    *ownStatus = KRequestPending;
-    iRequestType = EUdtRequest;
-    
-    SetActive();
-    User::RequestComplete( ownStatus, KErrNone );      
-    CleanupStack::Pop(); // iOneTimePassword    
-    }
-    
-// ---------------------------------------------------------
-// CDrmUdtHandler::SetPreferredIap()
-// ---------------------------------------------------------
-EXPORT_C void CDrmUdtHandler::SetPreferredIap( TUint32 aPreferredIap )
-    {
-    LOG( _L("CDrmUdtHandler::SetPreferredIap") );
-    iPreferredIap = aPreferredIap;
-    }    
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::DoCancel()
-// ---------------------------------------------------------
-//
-void CDrmUdtHandler::DoCancel()
-    {
-    LOG( _L("CDrmUdtHandler::DoCancel") );
-    switch ( iState )
-        {
-        case EStart:
-        case EConnect:
-            {
-            iConnection->Cancel();
-            break;
-            }
-        case EResponseReceived:
-            {
-            iTransaction.Close();
-            SelfComplete( iError );
-            break;
-            }
-        default:
-            {
-            break;
-            }
-        }
-	iError = KErrCancel;
-	Complete();
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::RunL()
-// ---------------------------------------------------------
-//
-void CDrmUdtHandler::RunL()
-    {
-    LOG( _L("CDrmUdtHandler::RunL") );
-    User::LeaveIfError( iStatus.Int() );
-
-    switch ( iState )
-        {
-        case EStart:
-            {
-            ConnectL();
-            break;
-            }        
-        case EConnect:
-            {
-            CreateSessionL();
-            break;
-            }
-        case ESendMessage:
-            {
-            SendUdtMessageL();
-            break;
-            }
-        case EResponseReceived:
-            {
-            ResponseReceivedL();
-            break;
-            }
-        case EComplete:
-            {
-            iState = EInit;
-    		Complete();
-            break;
-            }
-        case EInit:
-        default:
-            {
-            break;
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::RunError()
-// ---------------------------------------------------------
-//
-TInt CDrmUdtHandler::RunError( TInt aError )
-    {
-    LOG( _L("CDrmUdtHandler::RunError") );
-    iError = aError;
-    iState = EInit;
-    Complete();
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::ConnectL()
-// ---------------------------------------------------------
-//
-void CDrmUdtHandler::ConnectL()
-    {
-    LOG( _L("CDrmUdtHandler::ConnectL") );
-    __ASSERT_ALWAYS( iState == EStart, User::Invariant() );
-    
-    iConnection->ConnectL( iPreferredIap, iObserver, &iStatus );
-    iState = EConnect;
-    iError = EUdtOk;
-    SetActive();
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::CreateSessionL()
-// ---------------------------------------------------------
-//
-void CDrmUdtHandler::CreateSessionL()
-    {
-    LOG( _L("CDrmUdtHandler::CreateSessionL") );
-    __ASSERT_ALWAYS( iState == EConnect, User::Invariant() );
-    
-    TUint32 ap;
-
-    if( !iConnection->IsConnected( ap ) )
-        {
-        User::Leave( KErrGeneral );
-        }
-    
-    iSession.Close();
-    iSession.OpenL();
-
-    RStringPool strPool = iSession.StringPool();
-
-    // Remove first session properties just in case.
-    RHTTPConnectionInfo connInfo = iSession.ConnectionInfo();
-    
-    // Clear RConnection and Socket Server instances
-    connInfo.RemoveProperty(strPool.StringF(HTTP::EHttpSocketServ,RHTTPSession::GetTable()));
-    connInfo.RemoveProperty(strPool.StringF(HTTP::EHttpSocketConnection,RHTTPSession::GetTable()));
-    
-#ifdef __WINS__    
-    // Clear the proxy settings
-    RStringF proxy;
-    proxy = strPool.OpenFStringL(_L8("172.22.168.15"));
-    connInfo.SetPropertyL
-        ( 
-        strPool.StringF( HTTP::EProxyAddress, RHTTPSession::GetTable() ), 
-        THTTPHdrVal( proxy ) 
-        );
-    proxy.Close();
-    connInfo.SetPropertyL
-        ( 
-        strPool.StringF( HTTP::EProxyUsage, RHTTPSession::GetTable() ), 
-        THTTPHdrVal( strPool.StringF(HTTP::EUseProxy, RHTTPSession::GetTable() ) )
-        );
-
-#else
-    THTTPHdrVal proxyUsage(strPool.StringF(HTTP::EUseProxy,RHTTPSession::GetTable()));
-    connInfo.RemoveProperty(strPool.StringF(HTTP::EProxyUsage,RHTTPSession::GetTable()));
-    connInfo.RemoveProperty(strPool.StringF(HTTP::EProxyAddress,RHTTPSession::GetTable()));
-#endif
-
-    connInfo.SetPropertyL
-        (
-        strPool.StringF( HTTP::EHttpSocketServ, RHTTPSession::GetTable() ),
-        THTTPHdrVal( iConnection->SocketServ().Handle() )
-        );
-
-    connInfo.SetPropertyL
-        ( 
-        strPool.StringF( HTTP::EHttpSocketConnection, RHTTPSession::GetTable() ), 
-        THTTPHdrVal( REINTERPRET_CAST( TInt, &iConnection->Conn() ) )
-        );
-
-    InstallHttpFiltersL();
-
-    // Complete requests
-    TRequestStatus* ownStatus = &iStatus;    
-    *ownStatus = KRequestPending;
-    iState = ESendMessage;
-    SetActive();
-    User::RequestComplete( ownStatus, KErrNone );
-    }
-
-
-// ---------------------------------------------------------
-// CDrmUdtModule::InstallHttpFilters()
-// ---------------------------------------------------------
-//
-void CDrmUdtHandler::InstallHttpFiltersL()
-    {
-    LOG( _L("CDrmUdtHandler::InstallHttpFiltersL") );
- // CHttpUAProfFilterInterface::InstallFilterL( iSession );
- // CHttpCookieFilter::InstallFilterL( iSession );
- // InstallAuthenticationL( iSession );
- // CHttpFilterProxyInterface::InstallFilterL( iSession );
-    }
-
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::SendUdtMessageL()
-// ---------------------------------------------------------
-//
-void CDrmUdtHandler::SendUdtMessageL()
-    {
-    LOG( _L("CDrmUdtHandler::SendUdtMessageL") );
-    __ASSERT_ALWAYS( iState == ESendMessage, User::Invariant() );
-    
-    TUriParser8 uri;
-    
-    if ( iRequestType == EUdtRequest )
-        {
-        CreateUdtRequestL();
-        }
-    else if( iRequestType == EStatusNotification )
-        {
-        CreateStatusNotificationL();
-        }
-    
-    User::LeaveIfError( uri.Parse( *iUri ) );
-    RStringF POST;
-    POST = iSession.StringPool().StringF( HTTP::EPOST, RHTTPSession::GetTable() );
-    iTransaction = iSession.OpenTransactionL( uri, *this, POST );
-
-    // Set required headers
-    RHTTPHeaders hdrs = iTransaction.Request().GetHeaderCollection();
-    
-    SetHeaderL(hdrs, HTTP::EAccept, KUdtContentType() );
-    
-    SetHeaderL(hdrs, HTTP::EContentType, KUdtContentType() );
-    
-    // Add request body
-    MHTTPDataSupplier* ds = this;
-    iTransaction.Request().SetBody(*ds);
-    
-    iTransaction.SubmitL();
-
-    iState = EResponseReceived;
-    iStatus = KRequestPending;
-    SetActive();
-
-    iTimeout->Cancel();
-    iTimeout->Start( KUdtTimeoutValue,
-    				 KUdtTimeoutValue,
-    				 TCallBack( StaticTimeOut,this ) );
-    }
-    
-    
-// ---------------------------------------------------------
-// CDrmUdtHandler::CreateUdtRequestL()
-// ---------------------------------------------------------
-//    
-void CDrmUdtHandler::CreateUdtRequestL()
-    {
-    RRoapStorageClient client;
-    RPointerArray< HBufC8 > certChain;
-    TCleanupItem listCleanup( PointerArrayResetDestroyAndClose< HBufC8 >,
-        &certChain );
-    HBufC8* certBlock;
-    TInt i;
-    TInt n;
-    TPtr8 ptr( NULL, 0 );
-    TBuf8< sizeof ( TUint32 ) > intBuf;
-    TBuf8< KMaxSerNumLength > targetSer;
-    TBuf8< KRdbKeyLength > rdb_data;
-    TBuf8< KSignatureLength > hash;
-    HBufC8* signature = NULL;
-    TInt udtVersion;
-    CSHA1* hasher = NULL;
-    
-    LOG( _L("CDrmUdtHandler::CreateUdtRequestL") );
-    delete iUdtRequest;
-    
-    if ( iObserver )
-        {
-        iStateInfo.iState = TUdtStateInfo::EUdtReguest;
-        iStateInfo.iProgress = 0;
-        iObserver->UdtProgressInfoL( iStateInfo );
-        }
-    
-    hasher = CSHA1::NewL();
-    CleanupStack::PushL( hasher );
-    User::LeaveIfError( client.Connect() );
-    CleanupClosePushL( client );
-    client.SelectTrustedRootL( KNullDesC8 );
-
-    LOG( _L("  Getting cert chain") );
-    User::LeaveIfError( client.GetDeviceCertificateChainL( certChain ) );
-    CleanupStack::PushL( listCleanup );
-
-    LOG( _L("  Getting UDT data") );
-    ReadUdtDataL( targetSer, udtVersion, rdb_data );
-
-    LOG(_L8("RDB data:"));    
-    LOGHEX(rdb_data)
-    
-    n = 0;
-    for ( i = 0; i < certChain.Count(); i++ )
-        {
-        n = n + KLengthSize + certChain[i]->Size();
-        }
-    certBlock = HBufC8::NewL( n );
-    CleanupStack::PushL( certBlock );
-    ptr.Set( certBlock->Des() );
-    for ( i = 0; i < certChain.Count(); i++ )
-        {
-        WriteIntToBlock( certChain[i]->Size(), intBuf, 0 );
-        ptr.Append( intBuf );
-        ptr.Append( *certChain[i] );
-        }
-
-    n = KVersionSize + 
-        KMessageIdSize + 
-        KLengthSize + 
-        iOneTimePassword->Size() + 
-        KLengthSize +
-        certBlock->Size() + 
-        KLengthSize +
-        targetSer.Size() +
-        rdb_data.Size() + 
-        KLengthSize + 
-        KSignatureLength;
-        
-    iUdtRequest = HBufC8::NewL( n );
-    ptr.Set( iUdtRequest->Des() );
-    WriteIntToBlock( n - (KVersionSize + KMessageIdSize + 
-                     KLengthSize + KSignatureLength), intBuf, 0 );
-    
-    ptr.Append( KVersion );             // 1. version
-    ptr.Append( KUdtRequestId );        // 2. request id
-    ptr.Append( intBuf );               // 3. request length
-    ptr.Append( *iOneTimePassword );    // 4. password
-    WriteIntToBlock( certBlock->Size(), intBuf, 0 );
-    ptr.Append( intBuf );               // 5. ceritificate block length
-    ptr.Append( *certBlock );           // 6. ceritificate block
-    WriteIntToBlock( targetSer.Size(), intBuf, 0 );
-    ptr.Append( intBuf );               // 7. serial number length
-    ptr.Append( targetSer );            // 8. original serial number
-    ptr.Append( rdb_data );             // 9. RDB data
-    WriteIntToBlock( udtVersion, intBuf, 0 );
-    ptr.Append( intBuf );               // 10. UDT key version
-    
-    hasher->Update( ptr );
-    hash.Append( 0 );
-    hash.Append( KPadding255 );
-    for ( i = 2; i < KSignatureLength - SHA1_HASH - 1; i++ )
-        {
-        hash.Append( 255 );
-        }
-    hash.Append( 0 );
-    hash.Append( hasher->Final() );
-    LOG(_L8("Hash:"));
-    LOGHEX(hash);
-    client.RsaSignL( hash, signature );
-    CleanupStack::PushL(signature);
-    ptr.Append( *signature );           // 11. signature
-    LOG(_L8("Signature:"));
-    LOGHEX((*signature));
-    
-    CleanupStack::PopAndDestroy( 5 );   // certBlock, listCleanup,
-                                        // client, hasher, signature
-    if ( iObserver )
-        {
-        iStateInfo.iState = TUdtStateInfo::EUdtReguest;
-        iStateInfo.iProgress += 20;
-        iObserver->UdtProgressInfoL( iStateInfo );
-        }
-        
-    LOG(_L8("Request:"));
-    LOGHEX((*iUdtRequest));
-    }
-    
-    
-// ---------------------------------------------------------
-// CDrmUdtHandler::CreateStatusNotificationL()
-// ---------------------------------------------------------
-//    
-void CDrmUdtHandler::CreateStatusNotificationL()
-    {
-    LOG( _L("CDrmUdtHandler::CreateStatusNotificationL") );
-    
-    if ( iObserver )
-        {
-        iStateInfo.iState = TUdtStateInfo::EUdtStatusNotification;
-        iStateInfo.iProgress += 20;
-        iObserver->UdtProgressInfoL( iStateInfo );
-        }
-    
-    delete iUdtRequest;
-    iUdtRequest = NULL;
-    iUdtRequest = HBufC8::NewL(64);
-    TPtr8 ptr = iUdtRequest->Des();
-    ptr.Append(0);
-    ptr.Append(2);
-    ptr.Append(*iOneTimePassword);
-    iUdtError == EUdtOk ? ptr.Append(1) : ptr.Append(0);
-    }
-    
-    
-// ---------------------------------------------------------
-// CDrmUdtHandler::ResponseReceivedL()
-// ---------------------------------------------------------
-//    
-void CDrmUdtHandler::ResponseReceivedL()
-    {
-    LOG( _L("CDrmUdtHandler::ResponseReceivedL") );
-    __ASSERT_ALWAYS( iState == EResponseReceived, User::Invariant() );
-    __ASSERT_ALWAYS( iUdtResponse, User::Invariant() );
-    
-    TPtrC8 udtRespPtr( *iUdtResponse );
-    HBufC8* origDBKey = NULL;
-    TPtrC8 origDBKeyPtr( KNullDesC8 );
-    RDRMRightsClient rightsClient;
-    TInt error = EUdtOk;
-        
-    LOGHEX((*iUdtResponse));
-    
-    // check response type
-    switch ( udtRespPtr[1] )
-        {
-        case KUdtResponseId:
-            {
-            if ( iObserver )
-                {
-                iStateInfo.iState = TUdtStateInfo::EUdtKeyRestore;
-                iStateInfo.iProgress += 20;
-                iObserver->UdtProgressInfoL( iStateInfo );
-                }
-            
-            if ( udtRespPtr.Length() < KUdtResponseSize )
-                {
-                User::Leave( KErrCorrupt );
-                }
-            origDBKeyPtr.Set( udtRespPtr.Mid( 2 ) );
-            origDBKey = origDBKeyPtr.AllocLC();
-            
-            iUdtError = rightsClient.Connect();
-            CleanupClosePushL( rightsClient );
-            
-            if ( !iUdtError )
-                {
-                iUdtError = rightsClient.InitiateUdt( origDBKeyPtr );
-                }
-         
-            CleanupStack::PopAndDestroy( 2 ); // origDBKey, rightsClient
-            
-            iRequestType = EStatusNotification;
-            iState = ESendMessage;
-            iStatus = KRequestPending;
-            SetActive();
-            SelfComplete( KErrNone );
-            break;
-            }
-        case KStatusResponseId:
-            {
-            if ( iObserver )
-                {
-                iStateInfo.iState = TUdtStateInfo::EUdtStatusNotification;
-                iStateInfo.iProgress += 20;
-                iObserver->UdtProgressInfoL( iStateInfo );
-                }
-            
-            iState = EComplete;
-            iStatus = KRequestPending;
-            SetActive();
-            
-            if ( iUdtError )
-                {
-                error = EUdtKeyRestoreFailed;
-                iUdtError = EUdtOk;
-                }
-            SelfComplete( error );
-            break;
-            }
-        case KErrorResponseId:
-            {
-            if ( udtRespPtr.Length() >= 3 && udtRespPtr[2] == KClientErrorValue )
-                {
-                error = EUdtClientError;
-                }
-            else
-                {
-                error = EUdtServerError;
-                }
-            
-            iState = EComplete;
-            iStatus = KRequestPending;            
-            SetActive();
-            SelfComplete( error );
-            break;
-            }
-        default:
-            {
-            User::Leave( KErrNotSupported );
-            }
-        }  
-    }
-    
-// ---------------------------------------------------------
-// CDrmUdtHandler::SetHeaderL()
-// ---------------------------------------------------------
-//
-void CDrmUdtHandler::SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField, const TDesC8& aHdrValue)
-	{
-    LOG( _L("CDrmUdtHandler::SetHeaderL") );
-    RStringF valStr = iSession.StringPool().OpenFStringL(aHdrValue);
-    THTTPHdrVal val(valStr);
-    aHeaders.SetFieldL(iSession.StringPool().StringF(aHdrField,RHTTPSession::GetTable()), val);
-    valStr.Close();
-	}
-    
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::Complete()
-// ---------------------------------------------------------
-//
-void CDrmUdtHandler::Complete()
-    {
-    LOG( _L("CDrmUdtHandler::Complete") );
-    
-    delete iUri;
-    iUri = NULL;
-    delete iUdtResponse;
-    iUdtResponse = NULL;
-    delete iUdtRequest;
-    iUdtRequest = NULL;
-    delete iOneTimePassword;
-    iOneTimePassword = NULL;
-    
-    if( iTimeout )
-    	{
-    	iTimeout->Cancel();
-    	}
-    	
-    if ( iObserver )
-        {
-        iStateInfo.iState = TUdtStateInfo::EUdtComplete;
-        iStateInfo.iProgress = 100;
-        iStateInfo.iError = iError;
-        TRAPD(ignore, iObserver->UdtProgressInfoL( iStateInfo ));
-        }  
-    
-    User::RequestComplete( iParentStatus, iError );
-    iParentStatus = NULL;
-    }
-
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::CDrmUdtModule()
-// ---------------------------------------------------------
-//
-CDrmUdtHandler::CDrmUdtHandler(): CActive( CActive::EPriorityStandard )
-    {
-    LOG( _L("CDrmUdtHandler::CDrmUdtHandler") );
-    CActiveScheduler::Add( this );
-    }
-
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::SelfComplete()
-// ---------------------------------------------------------
-//
-void CDrmUdtHandler::SelfComplete( TInt aResult )
-    {
-    LOG( _L("CDrmUdtHandler::SelfComplete") );
-    if ( iStatus == KRequestPending )
-        {
-        TRequestStatus* ownStatus = &iStatus;
-        User::RequestComplete( ownStatus, aResult );
-        }
-    else
-        {
-        if ( aResult != KErrNone )
-            {
-            iStatus = aResult;
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::MHFRunL()
-// ---------------------------------------------------------
-//
-void CDrmUdtHandler::MHFRunL( RHTTPTransaction  /*aTransaction */, 
-								const THTTPEvent& aEvent )
-    {
-    LOGINT( _L("CDrmUdtHandler::MHFRunL: %d"), aEvent.iStatus );
-    iTimeout->Cancel();
-    iTimeout->Start( KUdtTimeoutValue,
-    				 KUdtTimeoutValue, 
-    				 TCallBack( StaticTimeOut,this ) );    				 
-
-    switch ( aEvent.iStatus )
-        {
-        case THTTPEvent::EGotResponseHeaders:
-            {
-            HandleResponseHeadersL( iTransaction.Response() );
-            break;
-            }
-
-        case THTTPEvent::EGotResponseBodyData:
-            {
-            TInt ret( KErrNone );
-            MHTTPDataSupplier* body = iTransaction.Response().Body();
-            TPtrC8 ptr;
-            body->GetNextDataPart( ptr );
-			ret = AppendResponseData( ptr );
-            body->ReleaseData();
-            User::LeaveIfError( ret );
-            break;
-            }
-
-        case THTTPEvent::EFailed:
-            {
-            if ( iError == KErrNone )
-                {
-                iError = EUdtServerError;
-                }
-        	iTransaction.Close();
-            SelfComplete( iError );
-            break;
-            }
-
-        case THTTPEvent::ESucceeded:
-            {        
-            iTransaction.Close();
-            SelfComplete( iError );
-            break;
-            }
-
-        case THTTPEvent::ERedirectRequiresConfirmation:
-            {
-            iTransaction.SubmitL();
-            }
-
-        default:
-            {
-            if( aEvent.iStatus == KErrHttpRedirectUseProxy )
-                {
-                }
-            else
-                {                
-                User::LeaveIfError( aEvent.iStatus );
-                }
-            break;
-            }
-        }
-
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::MHFRunError()
-// ---------------------------------------------------------
-//
-TInt CDrmUdtHandler::MHFRunError (
-        TInt aError,
-        RHTTPTransaction /* aTransaction */,
-        const THTTPEvent& /* aEvent */
-        )
-    {
-    LOG( _L("CDrmUdtHandler::MHFRunError") );
-    iTransaction.Close();
-    iError = aError;
-    SelfComplete( iError );
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::HandleResponseHeadersL()
-// ---------------------------------------------------------
-//
-void CDrmUdtHandler::HandleResponseHeadersL( RHTTPResponse aHttpResponse )
-    {
-    LOG( _L("CDrmUdtHandler::HandleResponseHeadersL") );
-    RHTTPHeaders headers = aHttpResponse.GetHeaderCollection();
-    
-    TInt httpCode = aHttpResponse.StatusCode();
-    TBool status;
-    
-    status = CheckHttpCode( httpCode );
-    
-    if ( status )
-    	{
-        RStringF contentTypeStr;
-        THTTPHdrVal contentTypeVal;
-        TPtrC8 ptrContentType(KNullDesC8);
-		RStringPool srtPool;
-		srtPool = iSession.StringPool();
-        
-        contentTypeStr = srtPool.StringF( HTTP::EContentType, RHTTPSession::GetTable() );										
-    	User::LeaveIfError( headers.GetField( contentTypeStr, 0, contentTypeVal ) );
-    	
-    	if ( contentTypeVal.StrF().DesC().CompareF( KUdtContentType() ) != KErrNone )
-    	    {
-			User::Leave( KErrNotSupported );
-    	    }
-       
-    	}
-    if ( aHttpResponse.HasBody() )
-        {
-        TInt dataSize = aHttpResponse.Body()->OverallDataSize();
-        if ( dataSize >= 0 )
-            {
-            HBufC8* buf = HBufC8::NewL( dataSize );
-            delete iUdtResponse;
-            iUdtResponse = buf;
-            }
-        }
-    }
-     
-// ---------------------------------------------------------
-// CDrmUdtHandler::CheckHttpCode()
-// ---------------------------------------------------------
-//
-TBool CDrmUdtHandler::CheckHttpCode( TInt aHttpStatus )
-	{
-	LOGINT(_L("CDrmUdtHandler::CheckHttpCode: %d"), aHttpStatus);
-    if ( HTTPStatus::IsInformational( aHttpStatus ) )
-        {
-        // 1xx
-        // Informational messages.
-        iError = EUdtServerError;
-        return EFalse;  
-        }
-    else if ( aHttpStatus == HTTPStatus::EOk ||
-              aHttpStatus == HTTPStatus::ENonAuthoritativeInfo )
-        {
-        // 200 OK
-        // 203 Non-Authoritative Information
-        iError = EUdtOk;
-        return ETrue;        
-        }
-    else if ( HTTPStatus::IsSuccessful( aHttpStatus ) )
-        {
-        // 2xx
-        // Success codes without an usable body.
-        iError = EUdtServerError;
-        return EFalse; 
-        }
-    else if ( aHttpStatus == HTTPStatus::EUnauthorized ||
-              aHttpStatus == HTTPStatus::EProxyAuthenticationRequired )
-        {
-        // 401 Unauthorized
-        // 407 Proxy authentication required
-        iError = EUdtInvalidServerAddress;
-        return EFalse; 
-        }
-    else if ( aHttpStatus == HTTPStatus::ENotFound ||
-              aHttpStatus == HTTPStatus::EGone )
-        {
-        // 404 Not found
-        // 410 Gone
-        iError = EUdtInvalidServerAddress;
-        return EFalse; 
-        }
-    else if ( HTTPStatus::IsClientError( aHttpStatus ) )
-        {
-        // 4xx
-        iError = EUdtInvalidServerAddress;
-        return EFalse; 
-        }
-    else if ( aHttpStatus == HTTPStatus::EHTTPVersionNotSupported )
-        {
-        // 505 HTTP Version Not Supported
-        iError = EUdtServerError;
-        return EFalse; 
-        }
-    else if ( HTTPStatus::IsServerError( aHttpStatus ) )
-        {
-        // 5xx
-        iError = EUdtServerError;
-        return EFalse; 
-        }
-    else 
-        {
-        // Everything else.
-        iError = EUdtServerError;
-        }
-    return EFalse; 
-	}
-
-
-// ---------------------------------------------------------
-// CDrmUdtModule::AppendResponseData()
-// ---------------------------------------------------------
-//
-TInt CDrmUdtHandler::AppendResponseData( const TDesC8& aDataChunk )
-    {
-    LOG( _L("CDrmUdtHandler::AppendResponseData") );
-    TInt needed = iUdtResponse->Des().Length() + aDataChunk.Length();
-    if ( iUdtResponse->Des().MaxLength() < needed )
-        {
-        HBufC8* buf = iUdtResponse->ReAlloc( needed );
-        if ( buf )
-            {
-            iUdtResponse = buf;
-            }
-        else
-            {
-            return KErrNoMemory;
-            }
-        }
-    iUdtResponse->Des().Append( aDataChunk );
-    return KErrNone;
-    }
-    
-// -----------------------------------------------------------------------------
-// CDrmUdtHandler::StaticTimeOut()
-// -----------------------------------------------------------------------------
-//
-TInt CDrmUdtHandler::StaticTimeOut( TAny* aPointer )
-    {  
-    LOG( _L("CDrmUdtHandler::StaticTimeOut") );
-    CDrmUdtHandler* itself = STATIC_CAST(CDrmUdtHandler*, aPointer);
-    if(itself)
-        {
-        itself->TimeOut();
-        }
-    return KErrNone;
-    }
- 
-    
-// -----------------------------------------------------------------------------
-// CDrmUdtHandler::TimeOut()
-// -----------------------------------------------------------------------------
-//
-void CDrmUdtHandler::TimeOut()
-    {
-    LOG( _L("CDrmUdtHandler::TimeOut") );
-    iTransaction.Close();
-    iError = KErrTimedOut;
-    SelfComplete( iError );
-    }
-
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::GetNextDataPart()
-// ---------------------------------------------------------
-//
-TBool CDrmUdtHandler::GetNextDataPart( TPtrC8& aDataPart )
-    {
-    LOG( _L("CDrmUdtHandler::GetNextDataPart") );
-    aDataPart.Set( iUdtRequest->Des() );
-    return ETrue;
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::ReleaseData()
-// ---------------------------------------------------------
-//
-void CDrmUdtHandler::ReleaseData()
-    {
-    LOG( _L("CDrmUdtHandler::ReleaseData") );
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::OverallDataSize()
-// ---------------------------------------------------------
-//
-TInt CDrmUdtHandler::OverallDataSize()
-    {
-    LOG( _L("CDrmUdtHandler::OverallDataSize") );
-    return iUdtRequest->Des().Size();
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::Reset()
-// ---------------------------------------------------------
-//
-TInt CDrmUdtHandler::Reset()
-    {
-    LOG( _L("CDrmUdtHandler::Reset") );
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------
-// CDrmUdtHandler::ReadUdtDataL
-//
-// ---------------------------------------------------------
-//
-void CDrmUdtHandler::ReadUdtDataL(
-    TDes8& aTargetSerialNumber,
-    TInt& aUdtKeyVersion,
-    TDes8& aEncryptedRdbData )
-    {
-    RDRMRightsClient rightsClient;
-    HBufC* serialNum = NULL;
-
-    LOG( _L("CDrmUdtHandler::ReadUdtDataL") );
-    User::LeaveIfError( rightsClient.Connect() );
-    CleanupClosePushL( rightsClient );
-    serialNum = SerialNumberL();
-    
-    aTargetSerialNumber.Copy( *serialNum );
-
-    aUdtKeyVersion = 0;
-    User::LeaveIfError( rightsClient.GetUdtData( aEncryptedRdbData ) );
-    if( !aEncryptedRdbData.Length() )
-        {
-        User::Leave( KErrNotFound );
-        }
-    CleanupStack::PopAndDestroy(); // rightsClient
-    }
-    
-// ---------------------------------------------------------
-// CDrmUdtHandler::ReadUdtDataL
-//
-// ---------------------------------------------------------
-//    
-HBufC* CDrmUdtHandler::SerialNumberL()
-    {
-    TInt error( KErrNone );
-    TInt count( 0 );
-    TInt count2( 0 );
-    TUint32 caps( 0 );
-    HBufC* imei = NULL;
-
-#ifndef __WINS__
-    LOG( _L("CDrmUdtHandler::SerialNumberL") );
-
-    RTelServer etelServer;
-    RMobilePhone phone;
-    
-    for ( TUint8 i = 0; i < 3; ++i )
-        {
-        error = etelServer.Connect();
-        if ( error )
-            {
-            User::After( TTimeIntervalMicroSeconds32( 100000 ) );
-            }
-        }
-    
-    User::LeaveIfError( error );
-    CleanupClosePushL( etelServer );
-
-    LOG( _L("  Connected to ETEL") );
-    
-    User::LeaveIfError( etelServer.LoadPhoneModule( KMmTsyModuleName ) );
-    
-    LOG( _L("  Phone Module loaded") );
-
-    TUnloadModule unload;
-    unload.iServer = &etelServer;
-    unload.iName = &KMmTsyModuleName;
-    
-    TCleanupItem item( DoUnloadPhoneModule, &unload );
-    CleanupStack::PushL( item );
-    
-    User::LeaveIfError( etelServer.EnumeratePhones( count ) );
-    
-    LOG( _L("  Phones enumerated") );
-
-    for ( count2 = 0; count2 < count; ++count2 )
-        {
-        RTelServer::TPhoneInfo phoneInfo;
-        User::LeaveIfError( etelServer.GetTsyName( count2, phoneInfo.iName ) );
-        
-        LOG( _L("    Got TSY module") );
-        LOG( phoneInfo.iName );
-        if ( phoneInfo.iName.CompareF( KMmTsyModuleName ) == 0 )
-            {
-            User::LeaveIfError( etelServer.GetPhoneInfo( count2, phoneInfo ) );
-            LOG( _L("    Got phone info") );
-            User::LeaveIfError( phone.Open( etelServer, phoneInfo.iName ) );
-            LOG( _L("    Opened phone") );
-            CleanupClosePushL( phone );
-            break;
-            }
-        }
-        
-    if ( count2 == count )
-        {
-        // Not found.
-        LOG( _L("  No phone found") );
-        User::Leave( KErrNotFound );
-        }
-    
-    LOG( _L("  Got phone") );
-
-    User::LeaveIfError( phone.GetIdentityCaps( caps ) );
-
-    LOG( _L("  Got Caps") );
-
-    if ( caps & RMobilePhone::KCapsGetSerialNumber )
-        {
-        RMobilePhone::TMobilePhoneIdentityV1 id;
-        TRequestStatus status;
-        
-        phone.GetPhoneId( status, id );
-        User::WaitForRequest( status );
-        
-        User::LeaveIfError( status.Int() );
-        
-        imei = id.iSerialNumber.AllocL();
-        
-        LOG( _L("  Got serial number") );
-
-        CleanupStack::PopAndDestroy( 3 ); // phone, item, etelServer
-        
-        return imei;
-        }
-    
-    User::Leave( KErrNotFound );
-    
-    // Never happens...
-    return imei;
-
-#else
-    _LIT( KDefaultSerialNumber, "123456789123456789" );
-    imei = KDefaultSerialNumber().AllocL();
-        
-    return imei;
-#endif
-    }
- 
-
--- a/omadrm/group/bld.inf	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/group/bld.inf	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -31,7 +31,7 @@
 ../conf/drmutility_20022D51.crml        MW_LAYER_CRML(drmutility_20022D51.crml)
 ../drmengine/group/CryptoPrep.flm       /epoc32/tools/makefile_templates/s60/CryptoPrep.flm
 ../drmengine/group/CryptoPrep.xml       /epoc32/tools/makefile_templates/s60/CryptoPrep.xml
-../drmengine/server/data/101F51F2.exc		/epoc32/data/Z/private/102073ea/excludes/101F51F2.exc
+../drmengine/server/data/101F51F2.exc   /epoc32/data/Z/private/102073ea/excludes/101F51F2.exc
 
 //Loc files
 // Ro Handler (only used if OMA DRM 1.0 Full is enabled)
@@ -41,37 +41,6 @@
 ../drmplugins/drmromtm/loc/RoMtmUi.loc MW_LAYER_LOC_EXPORT_PATH( romtmui.loc )
 
 
-// CMLA RnD keys
-../drmengine/keystorage/data/CMLA/DevicePrivateKey.der /epoc32/winscw/c/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/DevicePrivateKey.der
-../drmengine/keystorage/data/CMLA/DeviceCert.der /epoc32/winscw/c/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/DeviceCert.der
-../drmengine/keystorage/data/CMLA/SigningCert00.der /epoc32/winscw/c/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/SigningCert00.der
-../drmengine/keystorage/data/CMLA/SigningCert01.der /epoc32/winscw/c/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/SigningCert01.der
-
-../drmengine/keystorage/data/CMLA/DevicePrivateKey.der /epoc32/release/winscw/udeb/z/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/DevicePrivateKey.der
-../drmengine/keystorage/data/CMLA/DeviceCert.der /epoc32/release/winscw/udeb/z/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/DeviceCert.der
-../drmengine/keystorage/data/CMLA/SigningCert00.der /epoc32/release/winscw/udeb/z/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/SigningCert00.der
-../drmengine/keystorage/data/CMLA/SigningCert01.der /epoc32/release/winscw/udeb/z/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/SigningCert01.der
-
-../drmengine/keystorage/data/CMLA/DevicePrivateKey.der /epoc32/release/winscw/urel/z/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/DevicePrivateKey.der
-../drmengine/keystorage/data/CMLA/DeviceCert.der /epoc32/release/winscw/urel/z/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/DeviceCert.der
-../drmengine/keystorage/data/CMLA/SigningCert00.der /epoc32/release/winscw/urel/z/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/SigningCert00.der
-../drmengine/keystorage/data/CMLA/SigningCert01.der /epoc32/release/winscw/urel/z/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/SigningCert01.der
-
-../drmengine/keystorage/data/CMLA/DevicePrivateKey.der /epoc32/data/z/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/DevicePrivateKey.der
-../drmengine/keystorage/data/CMLA/DeviceCert.der /epoc32/data/z/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/DeviceCert.der
-../drmengine/keystorage/data/CMLA/SigningCert00.der /epoc32/data/z/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/SigningCert00.der
-../drmengine/keystorage/data/CMLA/SigningCert01.der /epoc32/data/z/private/101F51F2/PKI/96b7db19a4d05a4bc8e3a51c885088e679354469/SigningCert01.der
-
-// Default UDT Key
-#ifdef __DRM_USER_DATA_TRANSFER
-../drmengine/keystorage/data/UdtCertificate.der /epoc32/winscw/c/private/101F51F2/PKI/UdtCertificate.der
-
-../drmengine/keystorage/data/UdtCertificate.der /epoc32/release/winscw/udeb/z/private/101F51F2/PKI/UdtCertificate.der
-../drmengine/keystorage/data/UdtCertificate.der /epoc32/release/winscw/urel/z/private/101F51F2/PKI/UdtCertificate.der
-
-../drmengine/keystorage/data/UdtCertificate.der /epoc32/data/z/private/101F51F2/PKI/UdtCertificate.der
-#endif
-
 // backup_registration.xml
 ../drmengine/group/backup_registration.xml /epoc32/winscw/c/private/101F51F2/backup_registration.xml
 ../drmengine/group/backup_registration.xml /epoc32/data/z/private/101F51F2/backup_registration.xml
@@ -127,10 +96,6 @@
 ../drmengine/group/DcfRepSrv.mmp
 ../drmengine/group/ROAPHandler.mmp
 
-#ifdef __DRM_USER_DATA_TRANSFER
-../drmplugins/drmudtmodule/group/DrmUdtModule.mmp
-#endif
-
 
 // DRMService API
 ../drmengine/group/DrmServiceAPI.mmp
@@ -156,7 +121,6 @@
 
 // DRMHelper
 ../drmhelper/group/Drmhelper.mmp
-../drmhelper/group/drmhelperdmgrwrapper.mmp
 
 #ifdef SBSV2
 PRJ_EXTENSIONS
--- a/omadrm/rom/DRM5.iby	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/rom/DRM5.iby	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -57,17 +57,12 @@
 file=ABI_DIR\BUILD_DIR\DrmServerInterfaces.DLL      SHARED_LIB_DIR\DrmServerInterfaces.DLL
 file=ABI_DIR\BUILD_DIR\DrmParsers.DLL               SHARED_LIB_DIR\DrmParsers.DLL
 
-// DRM Rights server 
+// DRM Rights server
 file=ABI_DIR\BUILD_DIR\RightsServer.EXE             PROGRAMS_DIR\RightsServer.EXE
 
 // DRM Service API
 file=ABI_DIR\BUILD_DIR\DrmServiceAPI.dll            SHARED_LIB_DIR\DrmServiceAPI.dll
 
-// DRM UDT Module
-#ifdef __DRM_USER_DATA_TRANSFER
-file=ABI_DIR\BUILD_DIR\DRMUDTMODULE.DLL                SHARED_LIB_DIR\DRMUDTMODULE.DLL
-#endif
-
 // DRM recognizer for protected contents
 #ifdef __DRM
 //S60_INTEGRATION file=ABI_DIR\BUILD_DIR\RECDRM.DLL         RECOGNISERS_DIR\RECDRM.DLL
@@ -76,7 +71,7 @@
 ECOM_PLUGIN(RECDRM.DLL,101F51F4.RSC)
 
 // RFS exclude list
-data=DATAZ_\private\102073ea\excludes\101F51F2.exc	private\102073ea\excludes\101F51F2.exc
+data=DATAZ_\private\102073ea\excludes\101F51F2.exc      private\102073ea\excludes\101F51F2.exc
 
 #endif
 
@@ -142,23 +137,11 @@
 // #include <DRMEncryptor.iby>
 // #include <DRMEncryptorResources.iby>
 
-// Default CMLA RnD Test Keys
-
-data=ZPRIVATE\101F51F2\PKI\96b7db19a4d05a4bc8e3a51c885088e679354469\DevicePrivateKey.der PRIVATE\101F51F2\PKI\96b7db19a4d05a4bc8e3a51c885088e679354469\DevicePrivateKey.der
-data=ZPRIVATE\101F51F2\PKI\96b7db19a4d05a4bc8e3a51c885088e679354469\DeviceCert.der PRIVATE\101F51F2\PKI\96b7db19a4d05a4bc8e3a51c885088e679354469\DeviceCert.der
-data=ZPRIVATE\101F51F2\PKI\96b7db19a4d05a4bc8e3a51c885088e679354469\SigningCert00.der PRIVATE\101F51F2\PKI\96b7db19a4d05a4bc8e3a51c885088e679354469\SigningCert00.der
-data=ZPRIVATE\101F51F2\PKI\96b7db19a4d05a4bc8e3a51c885088e679354469\SigningCert01.der PRIVATE\101F51F2\PKI\96b7db19a4d05a4bc8e3a51c885088e679354469\SigningCert01.der
+// Backup registration
+data=ZPRIVATE\101F51F2\backup_registration.xml  PRIVATE\101F51F2\backup_registration.xml
 
-// Default UDT key
-#ifdef __DRM_USER_DATA_TRANSFER
-data=ZPRIVATE\101F51F2\PKI\UdtCertificate.der	PRIVATE\101F51F2\PKI\UdtCertificate.der
-#endif
-
-// Backup registration
-data=ZPRIVATE\101F51F2\backup_registration.xml	PRIVATE\101F51F2\backup_registration.xml
-
-// SIS stub for agent upgrades	
-data=ZSYSTEM\Install\OmaDrm_Stub.SIS			\system\install\OmaDrm_Stub.SIS
+// SIS stub for agent upgrades
+data=ZSYSTEM\Install\OmaDrm_Stub.SIS                    \system\install\OmaDrm_Stub.SIS
 
 #endif // DRM
 #endif // __DRM5_IBY__
--- a/omadrm/rom/DRMHelper.iby	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/rom/DRMHelper.iby	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -19,7 +19,6 @@
 #ifndef __DRMHELPER_IBY__
 #define __DRMHELPER_IBY__
 
-file=ABI_DIR\BUILD_DIR\DRMHelperDMgrWrapper.dll SHARED_LIB_DIR\DRMHelperDMgrWrapper.dll
 file=ABI_DIR\BUILD_DIR\DRMHelper.dll            SHARED_LIB_DIR\DRMHelper.dll
 
 #endif
--- a/omadrm/rom/DRMHelperResources.iby	Fri Apr 16 15:14:55 2010 +0300
+++ b/omadrm/rom/DRMHelperResources.iby	Mon May 03 12:46:34 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -19,7 +19,6 @@
 #ifndef __DRMHELPER_RESOURCES_IBY__
 #define __DRMHELPER_RESOURCES_IBY__
 
-data=DATAZ_\RESOURCE_FILES_DIR\drmhelper.rsc		        RESOURCE_FILES_DIR\drmhelper.rsc
-data=DATAZ_\RESOURCE_FILES_DIR\drmhelperdmgrwrapper.rsc		RESOURCE_FILES_DIR\drmhelperdmgrwrapper.rsc
+data=DATAZ_\RESOURCE_FILES_DIR\drmhelper.rsc  RESOURCE_FILES_DIR\drmhelper.rsc
 
-#endif
\ No newline at end of file
+#endif
--- a/wmdrm/camese/wmdrmdlaapp/src/wmdrmdlabrowsercontainer.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/wmdrm/camese/wmdrmdlaapp/src/wmdrmdlabrowsercontainer.cpp	Mon May 03 12:46:34 2010 +0300
@@ -34,8 +34,7 @@
     {
     CreateWindowL();
     SetRect( iView->ClientRect() );
-    ActivateL();
-
+    
     iBrCtlInterface = CreateBrowserControlL(
             this,                                      // parent control
             iView->ClientRect(),                       // client rect
@@ -59,6 +58,7 @@
                                          ETrue );
     iBrCtlInterface->SetBrowserSettingL( TBrCtlDefs::ESettingsEmbedded,
                                          ETrue );
+    ActivateL();
     }
 
 // ---------------------------------------------------------------------------
--- a/wmdrm/camese/wmdrmdladefaulthttpplugin/src/wmdrmdladefaulthttpmanager.cpp	Fri Apr 16 15:14:55 2010 +0300
+++ b/wmdrm/camese/wmdrmdladefaulthttpplugin/src/wmdrmdladefaulthttpmanager.cpp	Mon May 03 12:46:34 2010 +0300
@@ -660,9 +660,9 @@
     if ( (iState == EOpen) && iKeepAlive )
         {
         TConnectionInfo connectionInfo;
-        GetConnectionInfoL(connectionInfo);
-        if ( connectionInfo.iIapId != iIapNumber &&
-             iIapNumber != 0 && connectionInfo.iIapId != 0 )
+        TRAPD(err, GetConnectionInfoL(connectionInfo) );
+        if ( err || ( connectionInfo.iIapId != iIapNumber &&
+             iIapNumber != 0 && connectionInfo.iIapId != 0 ) )
             {
             CleanupConnection();
             iState = EStart;
--- a/wmdrm/group/bld.inf	Fri Apr 16 15:14:55 2010 +0300
+++ b/wmdrm/group/bld.inf	Mon May 03 12:46:34 2010 +0300
@@ -69,3 +69,5 @@
 #endif // __WINDOWS_MEDIA_DRM
 
 #include "../wmdrmengine/wmdrmaccess/group/bld.inf"
+
+#include "../wmdrmengine/wmdrmotaaccess/group/bld.inf"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wmdrm/wmdrmengine/wmdrmotaaccess/bwins/wmdrmotaaccessu.def	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,9 @@
+EXPORTS
+	??1CWmDrmOtaAccess@@UAE@XZ @ 1 NONAME ; CWmDrmOtaAccess::~CWmDrmOtaAccess(void)
+	?NewL@CWmDrmOtaAccess@@SAPAV1@XZ @ 2 NONAME ; class CWmDrmOtaAccess * CWmDrmOtaAccess::NewL(void)
+	?NewLC@CWmDrmOtaAccess@@SAPAV1@XZ @ 3 NONAME ; class CWmDrmOtaAccess * CWmDrmOtaAccess::NewLC(void)
+	?HandleLicenseResponseL@CWmDrmOtaAccess@@QAEXABVTDesC8@@@Z @ 4 NONAME ; void CWmDrmOtaAccess::HandleLicenseResponseL(class TDesC8 const &)
+	?GetLicenseChallengeL@CWmDrmOtaAccess@@QAEXABVTDesC8@@AAPAVHBufC8@@AAVTRequestStatus@@@Z @ 5 NONAME ; void CWmDrmOtaAccess::GetLicenseChallengeL(class TDesC8 const &, class HBufC8 * &, class TRequestStatus &)
+	?HandleLicenseResponseL@CWmDrmOtaAccess@@QAEXABVTDesC8@@AAVTRequestStatus@@@Z @ 6 NONAME ; void CWmDrmOtaAccess::HandleLicenseResponseL(class TDesC8 const &, class TRequestStatus &)
+	?GetLicenseChallengeL@CWmDrmOtaAccess@@QAEXABVTDesC8@@AAPAVHBufC8@@@Z @ 7 NONAME ; void CWmDrmOtaAccess::GetLicenseChallengeL(class TDesC8 const &, class HBufC8 * &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wmdrm/wmdrmengine/wmdrmotaaccess/eabi/wmdrmotaaccessu.def	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,11 @@
+EXPORTS
+	_ZN15CWmDrmOtaAccess4NewLEv @ 1 NONAME
+	_ZN15CWmDrmOtaAccess5NewLCEv @ 2 NONAME
+	_ZN15CWmDrmOtaAccessD0Ev @ 3 NONAME
+	_ZN15CWmDrmOtaAccessD1Ev @ 4 NONAME
+	_ZN15CWmDrmOtaAccessD2Ev @ 5 NONAME
+	_ZN15CWmDrmOtaAccess20GetLicenseChallengeLERK6TDesC8RP6HBufC8 @ 6 NONAME
+	_ZN15CWmDrmOtaAccess20GetLicenseChallengeLERK6TDesC8RP6HBufC8R14TRequestStatus @ 7 NONAME
+	_ZN15CWmDrmOtaAccess22HandleLicenseResponseLERK6TDesC8 @ 8 NONAME
+	_ZN15CWmDrmOtaAccess22HandleLicenseResponseLERK6TDesC8R14TRequestStatus @ 9 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wmdrm/wmdrmengine/wmdrmotaaccess/group/bld.inf	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*  bld.inf
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_EXPORTS
+../rom/wmdrmotaaccess.iby      CORE_MW_LAYER_IBY_EXPORT_PATH( wmdrmotaaccess.iby )
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_MMPFILES
+wmdrmotaaccess.mmp
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wmdrm/wmdrmengine/wmdrmotaaccess/group/wmdrmotaaccess.mmp	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*  wmdrmotaaccess.mmp
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET          wmdrmotaaccess.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x2002E680
+
+CAPABILITY      ALL -TCB
+
+DEFFILE         wmdrmotaaccess.def
+
+SOURCEPATH      ../src
+SOURCE          wmdrmotaaccess.cpp
+
+MW_LAYER_SYSTEMINCLUDE
+
+USERINCLUDE     ../inc
+
+LIBRARY         euser.lib
+LIBRARY         ecom.lib
+
+LANG            SC
+
+SMPSAFE
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wmdrm/wmdrmengine/wmdrmotaaccess/rom/wmdrmotaaccess.iby	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*  wmdrmotaaccess.iby
+*
+*/
+
+#ifndef _WMDRMOTAACCESS_IBY_
+#define _WMDRMOTAACCESS_IBY_
+#include <data_caging_paths_for_iby.hrh>
+
+#if (defined __WINDOWS_MEDIA_DRM)
+file=ABI_DIR\BUILD_DIR\wmdrmotaaccess.dll          PROGRAMS_DIR\wmdrmotaaccess.dll
+#endif // __WINDOWS_MEDIA_DRM
+
+#endif // _WMDRMACCESS_IBY_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wmdrm/wmdrmengine/wmdrmotaaccess/src/wmdrmotaaccess.cpp	Mon May 03 12:46:34 2010 +0300
@@ -0,0 +1,143 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*  wmdrmotaaccess.cpp
+*
+*/
+
+#include <e32base.h>
+#include <ecom/ecom.h>
+
+#include <wmdrmotaaccess.h>
+#include <wmdrmotaaccessecominterface.h>
+
+// ---------------------------------------------------------------------------
+// CWmDrmOtaAccess::NewL
+// ---------------------------------------------------------------------------
+EXPORT_C CWmDrmOtaAccess* CWmDrmOtaAccess::NewL()
+    {
+    CWmDrmOtaAccess* self(CWmDrmOtaAccess::NewLC());
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CWmDrmOtaAccess::NewLC
+// ---------------------------------------------------------------------------
+EXPORT_C CWmDrmOtaAccess* CWmDrmOtaAccess::NewLC()
+    {
+    CWmDrmOtaAccess* self(new (ELeave) CWmDrmOtaAccess);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CWmDrmOtaAccess::ConstructL
+// ---------------------------------------------------------------------------
+void CWmDrmOtaAccess::ConstructL()
+    {
+    iWmDrmOtaAccessEcomInterface = CWmDrmOtaAccessEcomInterface::NewL();
+    }
+
+
+// ---------------------------------------------------------------------------
+// CWmDrmOtaAccess::CWmDrmOtaAccess
+// ---------------------------------------------------------------------------
+CWmDrmOtaAccess::CWmDrmOtaAccess()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmOtaAccess::~CWmDrmOtaAccess
+// ---------------------------------------------------------------------------
+EXPORT_C CWmDrmOtaAccess::~CWmDrmOtaAccess()
+    {
+    if (iWmDrmOtaAccessEcomInterface)
+        {
+        delete iWmDrmOtaAccessEcomInterface;
+        }
+    REComSession::FinalClose();
+    }
+
+
+// ---------------------------------------------------------------------------
+// CWmDrmOtaAccess::GetLicenseChallengeL
+// ---------------------------------------------------------------------------
+EXPORT_C void CWmDrmOtaAccess::GetLicenseChallengeL( const TDesC8& aDrmHeader, 
+                                                     HBufC8*& aChallenge )
+    {
+    // Ecom interface not available    
+    if( !iWmDrmOtaAccessEcomInterface )
+        {
+        User::Leave( KErrNotReady );    
+        }   
+    
+    iWmDrmOtaAccessEcomInterface->GetLicenseChallengeL( aDrmHeader, 
+                                                        aChallenge );                                 
+    }
+
+// ---------------------------------------------------------------------------
+// CWmDrmOtaAccess::GetLicenseChallengeL
+// ---------------------------------------------------------------------------
+EXPORT_C void CWmDrmOtaAccess::GetLicenseChallengeL( const TDesC8& aDrmHeader, 
+                                                     HBufC8*& aChallenge, 
+                                                     TRequestStatus& aStatus )
+    {
+    // Ecom interface not available    
+    if( !iWmDrmOtaAccessEcomInterface )
+        {
+        User::Leave( KErrNotReady );    
+        }   
+    
+    iWmDrmOtaAccessEcomInterface->GetLicenseChallengeL( aDrmHeader, 
+                                                        aChallenge,
+                                                        aStatus );                                 
+    }                                                     
+    
+// ---------------------------------------------------------------------------
+// CWmDrmOtaAccess::HandleLicenseResponseL
+// ---------------------------------------------------------------------------
+EXPORT_C void CWmDrmOtaAccess::HandleLicenseResponseL( const TDesC8& aResponse )
+    {
+    // Ecom interface not available    
+    if( !iWmDrmOtaAccessEcomInterface )
+        {
+        User::Leave( KErrNotReady );    
+        }   
+    
+    iWmDrmOtaAccessEcomInterface->HandleLicenseResponseL( aResponse );                                
+    }    
+// ---------------------------------------------------------------------------
+// CWmDrmOtaAccess::HandleLicenseResponseL
+// ---------------------------------------------------------------------------
+EXPORT_C void CWmDrmOtaAccess::HandleLicenseResponseL( const TDesC8& aResponse, 
+                                                       TRequestStatus& aStatus )
+    {
+    // Ecom interface not available    
+    if( !iWmDrmOtaAccessEcomInterface )
+        {
+        User::Leave( KErrNotReady );    
+        }   
+    
+    iWmDrmOtaAccessEcomInterface->HandleLicenseResponseL( aResponse,
+                                                          aStatus );                                 
+    }                                                           
+
+
+
+    
+// End of file