omadrm/drmplugins/drmrohandler/src/rohandlerdmgrwrapper.cpp
changeset 29 3bdc3b853094
parent 23 493788a4a8a4
child 49 69d8e75812b7
--- 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 );
         }
     }