fotaapplication/fotaserver/FotaServer/src/fotadownload.cpp
branchRCL_3
changeset 61 b183ec05bd8c
parent 59 13d7c31c74e0
child 62 19bba8228ff0
--- a/fotaapplication/fotaserver/FotaServer/src/fotadownload.cpp	Thu Aug 19 10:44:50 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1979 +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:   downloads upd pkg
-*
-*/
-
-
-
-// INCLUDES
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <es_enum_internal.h>
-#endif
-#include <centralrepository.h>
-#include <f32file.h>
-#include <AknWaitDialog.h>
-#include <fotaserver.rsg>
-#include <eikprogi.h>
-#include <eikenv.h>
-#include <apgtask.h>
-#include <apgwgnam.h>
-#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <es_sock.h>
-#else
-#include <es_sock.h>
-#include <es_sock_partner.h>
-#endif
-#include <es_enum.h>
-#include <NSmlDMSync.rsg>	//OMA DM UI for reading resource
-#include <bautils.h>
-#include <StringLoader.h>
-#include <DevManInternalCRKeys.h> //for reading san feature
-#include <e32property.h>
-#include "fotastorage.h"
-#include "FotaSrvApp.h"
-#include "fotadownload.h"
-#include "fotaserverPrivatePSKeys.h"
-#include "FotaNetworkRegStatus.h"
-#include <startupdomainpskeys.h>	//globalrfsstates
-#include <uri8.h>
-#define __LEAVE_IF_ERROR(x) if(KErrNone!=x) {FLOG(_L("LEAVE in %s: %d"), __FILE__, __LINE__); User::Leave(x); }
-#define __LEAVE(x) {FLOG(_L("LEAVE in %s: %d"), __FILE__, __LINE__); User::Leave(x); }
-
-
-// --------------------------------------------------------------------------
-// CFotaDownload::NewL 
-// --------------------------------------------------------------------------
-CFotaDownload* CFotaDownload::NewL (CFotaServer* aServer)
-	{
-	__ASSERT_ALWAYS( aServer, User::Panic(KFotaPanic, KErrArgument) );
-	CFotaDownload* ao = new (ELeave) CFotaDownload();
-	ao->iFotaServer = aServer;
-	return ao;
-	}
-
-
-// --------------------------------------------------------------------------
-// CFotaDownload::RunL
-// Do operations started in HandleDmgrEvent
-// --------------------------------------------------------------------------
-void CFotaDownload::RunL()
-	{
-	FLOG(_L( "[FotaServer] CFotaDownload::RunL() >>"));
-	CancelDownload( ETrue );
-	CreateDownloadL();
-	FLOG(_L( "[FotaServer] CFotaDownload::RunL() <<" ) );
-	}
-
-
-// --------------------------------------------------------------------------
-// CFotaDownload::DoCancel()
-// Cancel notifier request
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::DoCancel()
-	{
-	FLOG(_L("CFotaDownload::DoCancel() >>"));
-	FLOG(_L("CFotaDownload::DoCancel() <<"));
-	}
-
-
-// --------------------------------------------------------------------------
-// CFotaDownload::RunError(TInt aError)
-// Handle active object run error.
-// --------------------------------------------------------------------------
-//
-TInt CFotaDownload::RunError(TInt aError)
-	{
-	if(aError)
-		{
-		FLOG(_L(" CFotaDownload::RunError err %d"), aError );
-		}
-	return KErrNone;
-	}
-
-
-// --------------------------------------------------------------------------
-// CFotaDownload::CFotaDownload()
-// --------------------------------------------------------------------------
-//
-CFotaDownload::CFotaDownload() : CActive(EPriorityNormal)
-		, iUpdateAfterDownload (EFalse), iUrl( NULL ),
-		iDownload (NULL),
-		iDownloadedContentSize(0),
-		iPreviousContentSize ( 0 ), iShowOMACDUI(EFalse), iShowDLPrgUI(EFalse),
-		iDownloadResumable (EFalse),				
-		iFMSEnabled (EFalse),
-		iDownloadActive (EFalse),
-		iFreshDL(ETrue),
-		iUserInitiatedResume(EFalse),		
-		iSanValue(KErrNotFound),
-		iDownloadFinalized(EFalse)		
-	{
-	CActiveScheduler::Add( this ); 
-	FLOG(_L("CFotaDownload::CFotaDownload()"));
-	}
-
-
-// --------------------------------------------------------------------------
-// CFotaDownload::~CFotaDownload()
-// --------------------------------------------------------------------------
-//
-CFotaDownload::~CFotaDownload()
-	{
-	FLOG(_L("CFotaDownload::~CFotaDownload() >>"));
-	Cancel();
-	
-	//Sets download state inactive if accidently closed. This is anyhow taken care in FinalizeDownload in Server.
-	SetDownloadActive(EFalse);
-	CancelDownload( ETrue );
-	if ( iUrl )
-		{
-		delete iUrl; iUrl=NULL;
-		}
-/*	if ( iNotifHandler ) Deleted at server
-		{
-		iNotifHandler->Cancel();
-		delete iNotifHandler;        
-		}*/
-	if ( iDLProgressDlg )
-		{
-		delete iDLProgressDlg; iDLProgressDlg=NULL;
-		}
-
-	if (iDownloadMgr.Handle())
-		iDownloadMgr.Close();
-	//don't delete iFotaServer as it doesn't belong here.
-	
-	FLOG(_L("CFotaDownload::~CFotaDownload() <<"));
-}
-
-
-// --------------------------------------------------------------------------
-// CFotaDownload::CancelDownload
-// Cancel download
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::CancelDownload( const TBool aCancelProgressBar )
-	{
-	FLOG(_L("CFotaDownload::CancelDownload() >>"));
-	
-	if( iDownloadMgr.Handle() )
-		{
-		iDownloadMgr.Close();
-		}
-
-	if ( aCancelProgressBar  && iDLProgressDlg )
-		{
-		TRAPD(err, iDLProgressDlg->ProcessFinishedL() ) ;// deletes
-		if(err); // remove compiler warning
-		delete iDLProgressDlg;
-		iDLProgressDlg = NULL;
-		}
-	FLOG(_L("CFotaDownload::CancelDownload() <<"));
-	}
-
-// --------------------------------------------------------------------------
-// CFotaDownload::CreateDownloadL
-// Create  download
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::CreateDownloadL()
-	{
-	FLOG(_L("CFotaDownload::CreateDownloadL() >>") );
-	__ASSERT_ALWAYS( iDownloadMgr.Handle()==0, User::Leave(KErrAlreadyExists) );
-	RHttpDownload*  d(NULL);
-	iDLNeedsReset = EFalse;
-	TBool       created;
-	iDownloadMgr.ConnectL( TUid::Uid(KFotaServerUid) , *this, EFalse); 
-	FLOG(_L("CFotaDownload::CreateDownloadL, Stage 1") );
-	iDownloadMgr.DeleteAll();
-
-	TRAPD(err, d = &iDownloadMgr.CreateDownloadL( *iUrl, created ) );
-	RFs fs;	
-	if(fs.Connect() == KErrNone)
-	    {
-	    RFile file;    
-	    CleanupClosePushL( fs );
-	    CleanupClosePushL( file );
-	    err=fs.MkDir(KDDDirPath);
-	    FLOG(_L("creating directory err as %d"),err);
-	    err=fs.SetSessionPath(KDDDirPath);
-	    FLOG(_L("setting session path err as %d"),err);
-	    err=fs.ShareProtected();
-	    FLOG(_L("ShareProtected err as %d"),err);
-	    err = file.Replace(fs,KDDFilename, EFileWrite|EFileShareAny);	
-	    FLOG(_L("creating rfile err as %d"),err);	
-	    err = d->SetFileHandleAttribute(file);
-	    FLOG(_L("setting dlmgr destfile attrib err as %d"),err);
-	    CleanupStack::PopAndDestroy( &file );
-	    CleanupStack::PopAndDestroy( &fs );
-	    }	
-	FLOG(_L("CFotaDownload::CreateDownloadL, Stage 2. err %d"),err);
-	if ( err  == KErrArgument ) User::Leave( KErrNotFound );
-	else if( err !=KErrNone)    User::Leave( err );
-
-	if ( iDLState.iIapId > KErrNotFound )
-		{
-		FLOG(_L("   Using internet access point iapid: %d"), iDLState.iIapId);
-		err = iDownloadMgr.SetIntAttribute( EDlMgrIap, iDLState.iIapId); // IAP id
-		User::LeaveIfError( err );        
-		//At this point the iIapId used in the SyncML Session is presumed working. Hence
-		//the same is stored in database for use during download.
-		FLOG(_L("Setting IAPID=%d is FotaState"),iDLState.iIapId);
-		iFotaServer->iDatabase->OpenDBL();
-		iFotaServer->iDatabase->SetStateL(iDLState,KNullDesC8, EFDBIapId );
-		iFotaServer->iDatabase->CloseAndCommitDB();
-		}
-	FLOG(_L("CFotaDownload::CreateDownloadL, Stage 3") );
-	User::LeaveIfError( d->SetIntAttribute(EDlAttrFotaPckgId ,iDLState.iPkgId) );
-	FLOG(_L("CFotaDownload::CreateDownloadL, Stage 4") );
-	User::LeaveIfError( d->SetBoolAttribute(EDlAttrNoContentTypeCheck,ETrue) );
-
-	// If ui hidden or download restarting, do not show descriptor
-	if ( !iShowOMACDUI || iRestartCounter > 0 )
-		{
-		FLOG(_L("setting DD to hidden"));
-		User::LeaveIfError(iDownloadMgr.SetBoolAttribute( EDlMgrSilentMode,ETrue )) ;
-		}
-	//It's a fresh download
-	iFreshDL = ETrue;
-
-	// Start download 
-	User::LeaveIfError(iDownloadMgr.StartAll()); 
-	FLOG(_L("CFotaDownload::CreateDownloadL, Stage 5") );
-	iDLProgress = EStarted;
-
-	//This P&S Key is used to notify DM UI on any download event. key=0 for idle and key=1 for download
-	err = RProperty::Set( TUid::Uid(KOmaDMAppUid),
-			KFotaDMRefresh,
-			ETrue );
-	FLOG(_L("RProperty KFotaDMRefresh Set Etrue, err = %d"), err);
-
-	SetDownloadActive(ETrue);
-
-	User::LeaveIfError(err);
-	FLOG(_L("[FotaServer]  CFotaDownload::CreateDownloadL <<"));
-}
-
-	// --------------------------------------------------------------------------
-	// CFotaDownload::DownloadL
-	// Start download of swupd package.
-	// --------------------------------------------------------------------------
-	//
-void CFotaDownload::DownloadL(TDownloadIPCParams aParams,const TDesC8& aPkgURL
-		,TBool aUpdateAfterDownload,const TInt aIapid,const TInt aRestartDownload)
-	{
-	FLOG(_L("[FotaServer]  CFotaDownload::DownloadL >> restart %d"),aRestartDownload);
-
-	TInt err = RProperty::Define( TUid::Uid(KOmaDMAppUid),
-			KFotaDMRefresh,
-			RProperty::EInt,KReadPolicy,KWritePolicy);
-	FLOG(_L("RProperty KFotaDMRefresh Define, err = %d"), err);        
-	if (err != KErrAlreadyExists )
-		{
-		User::LeaveIfError(err);
-
-		err = RProperty::Set( TUid::Uid(KOmaDMAppUid),
-				KFotaDMRefresh,
-				KErrNotFound );
-
-		FLOG(_L("RProperty KFotaDMRefresh Set KErrNotFound, err = %d"), err);
-		User::LeaveIfError(err);
-		}
-
-	if ( iUrl ) {delete iUrl; iUrl=NULL;}
-	iUrl = aPkgURL.Alloc();
-	
-	iRestartCounter = aRestartDownload;
-
-	iDLState        = aParams;
-	FLOG(_L("CFotaDownload::DownloadL, Stage 1") );
-
-	// Set state -------------------------------------------------------------
-	iDLState.iState = RFotaEngineSession::EStartingDownload;
-
-	iDLState.iResult = KErrNotFound;
-	iDLState.iUpdateLtr = aUpdateAfterDownload;
-	iFotaServer->iDatabase->OpenDBL();
-	iFotaServer->iDatabase->SetStateL( iDLState, *iUrl,EFDBState|EFDBResult
-			| EFDBProfileId|EFDBPkgUrl|EFDBPkgName|EFDBVersion|EFDBUpdateLtr);
-	iFotaServer->iDatabase->CloseAndCommitDB();
-	FLOG(_L("CFotaDownload::DownloadL, Stage 2, pkgid:%d"),iDLState.iPkgId);
-
-	// 2. Get Iap Id to use for download. This would be set in iDLState.iIapId.
-	SetIapToUseL(aParams, aIapid);
-
-
-	if ( iDLState.iIapId > KErrNotFound )
-		{
-		iFotaServer->iDatabase->OpenDBL();
-		iFotaServer->iDatabase->SetStateL(iDLState,KNullDesC8, EFDBIapId );
-		iFotaServer->iDatabase->CloseAndCommitDB();
-		}
-		
-	/*
-	TBuf8<100> test;
-	//_LIT8( KNSmlDMFotaNode,"http://2IND02230.noe.nokia.com8080/myspace/ddv1.dd" );
-	_LIT8( KNSmlDMFotaNode,"http://fdsqa.nokia.com/fdp/interface?fid=A0A19HMCUHWRU" );
-	test.Copy(KNSmlDMFotaNode);
-	
-	
-    TUriParser8 parser;
-
-    if (!parser.Parse(test) && !parser.IsSchemeValid()) */ 
-		
-	TUriParser8 parser;
-	
-	
-
-    if((parser.Parse(aPkgURL) == KErrNone) && !parser.IsSchemeValid() )
-	
-	{
-        FLOG(_L("URL is malformed.. finalizing download"));
-        iDLState.iResult = RFotaEngineSession::EResMalformedOrBadURL;
-        iDLState.iState  = RFotaEngineSession::EDownloadFailed;
-        iFotaServer->iDatabase->OpenDBL();
-        iFotaServer->iDatabase->SetStateL(iDLState, KNullDesC8, EFDBState | EFDBResult);
-        iFotaServer->iDatabase->CloseAndCommitDB();
-        iFotaServer->FinalizeDownloadL(iDLState);
-        LaunchNotifierL(ESyncMLFwUpdErrorNote, KErrGeneralNoResume, EFalse );
-        return;
-	}
-	iUpdateAfterDownload = aUpdateAfterDownload;
-
-	// 3. Determine whether download should be visible or not
-	// Autoaccepted profile?
-
-	SetDownloadUiBehavior(ETrue);
-
-	CancelDownload( ETrue );
-
-	FLOG(_L("Setting SessionType=%d in FotaState"),iDLState.iSessionType);
-	iFotaServer->iDatabase->OpenDBL();
-	iFotaServer->iDatabase->SetStateL(iDLState,KNullDesC8, EFDBSessionType );
-	iFotaServer->iDatabase->CloseAndCommitDB();
-	FLOG(_L("CFotaDownload::DownloadL, Stage 3") );
-	//Called to read the download variations in Fota (resume support & FMS)
-	CheckDownloadVariations();
-
-	//Create the download
-	CreateDownloadL( );
-	FLOG(_L("[FotaServer]  CFotaDownload::DownloadL <<"));
-	}
-
-// ---------------------------------------------------------------------------
-// CFotaDownload::HandleDLProgressDialogExitL
-// Handle canceling of download
-// ---------------------------------------------------------------------------
-TBool CFotaDownload::HandleDLProgressDialogExitL( TInt aButtonId ) 
-	{
-	FLOG(_L("CFotaDownload::HandleDLProgressDialogExitL %d, note = %d >>"),aButtonId, iDLProgressDlg->iNoteType);
-	// Cancel clicked during download
-	if ( aButtonId == KErrNotFound )
-		{
-		iRestartCounter = -1;
-		FLOG(_L("[FotaServer]  CFotaDownload::HandleDLProgressDialogExitL Hiding UI"));
-		iFotaServer->iParentApp->SetUIVisibleL ( EFalse, ETrue );
-		iUpdateAfterDownload = EFalse;
-
-		iDLState.iResult = RFotaEngineSession::EResUserCancelled;
-
-		if (iDLProgressDlg->iNoteType == EConnectingNote)
-			{
-			iDLState.iState = RFotaEngineSession::EDownloadProgressingWithResume;
-
-			TInt active (KErrNotFound);
-			RProperty::Get( TUid::Uid(KFotaServerUid), KFotaDownloadActive, active );
-			FLOG(_L("active = %d"),active);
-			
-			if (active) //Resume operation has just begun and download request is submitted to dlmgr. Hence need to suspend.
-				{
-				RunDownloadSuspendL(RFotaEngineSession::EResUserCancelled, ETrue);
-				}
-			else //Resume operation has just begun, but download request is not submitted to dlmgr
-				{
-				LaunchNotifierL( ESyncMLFwUpdOmaDLPostponed, EFalse, EFalse );
-				iFotaServer->FinalizeDownloadL( iDLState );
-				}
-			}
-		else if (iDLProgressDlg->iNoteType == EDownloadingNote)
-			{
-			if (iDownloadResumable)
-				{
-				//Resume is supported. Query user whether to postpone or cancel download.
-				FLOG(_L("User pressed cancel. Resume is supported; hence pause download and query user if download has to be postponed or cancelled permanently."));
-				RunDownloadSuspendL(RFotaEngineSession::EResUserCancelled);
-				}
-			else
-				{
-				//Resume is not supported. Download is cancelled
-				FLOG(_L("User pressed cancel. Resume is not supported & hence download has to be cancelled"));
-				RunDownloadCancelL(RFotaEngineSession::EResUserCancelled);
-				}
-			}
-		}
-	FLOG(_L("CFotaDownload::HandleDLProgressDialogExitL <<"));
-	return ETrue;
-	}
-
-
-// --------------------------------------------------------------------------
-// CFotaDownload::DoHandleDMgrEventL
-// Handles download events. Updates package state accordingly
-// --------------------------------------------------------------------------
-void CFotaDownload::DoHandleDMgrEventL( RHttpDownload* aDownload
-		, THttpDownloadEvent aEvent )
-	{
-	__ASSERT_ALWAYS( aDownload, User::Panic(KFotaPanic, KErrArgument) );
-	TInt32                      sysErrorId( KErrNone );
-	TInt32                      contentsize;
-	TInt32                      downloadedsize;
-
-	TInt32                      tmp;
-	THttpDownloadMgrError       dlErrorId;
-	iDownload = aDownload;
-	// If DL is in final state (complete/fail), there's an error id available.
-	User::LeaveIfError( aDownload->GetIntAttribute( EDlAttrGlobalErrorId
-			,sysErrorId ) );
-	User::LeaveIfError( aDownload->GetIntAttribute( EDlAttrDownloadedSize
-			,downloadedsize ) );
-	User::LeaveIfError( aDownload->GetIntAttribute( EDlAttrLength
-			,contentsize ) );
-	User::LeaveIfError( aDownload->GetIntAttribute( EDlAttrErrorId
-			,tmp ) );
-	dlErrorId = (THttpDownloadMgrError)tmp;
-
-
-	// Update progress dlg progress
-	if ( !iDLProgressDlg && iRestartCounter>0)
-		{
-		FLOG(_L("reshowing progress..."));
-		iDLProgressDlg = new(ELeave) CFotaDLProgressDlg((CEikDialog** ) &iDLProgressDlg , EFalse, this, EDownloadingNote );
-		iDLProgressDlg->PrepareLC( R_FOTASERVER_DL_PROGRESS_DIALOG );
-		iDLProgressDlg->RunLD();
-		}
-	if (iDLProgressDlg)
-		{
-		CEikProgressInfo* progressInfo = iDLProgressDlg->GetProgressInfoL();
-		__ASSERT_ALWAYS( progressInfo, User::Panic(KFotaPanic, KErrBadHandle) );
-		if ( iPreviousContentSize!=contentsize )
-			{
-			iPreviousContentSize = contentsize;
-			if ( contentsize > 0 )
-				{
-				progressInfo->SetFinalValue( contentsize );
-				}
-			}
-		TInt incr = downloadedsize - iDownloadedContentSize;
-		if (incr<=0) incr=0; //Protection
-		progressInfo->IncrementAndDraw(incr);
-		iDownloadedContentSize = downloadedsize;
-		}
-	FLOG(_L("CFotaDownload::HandleDMgrEventL() >>   DLstate:%d  ProgressSt:%d\
-	globErr: %d DLError: %d (%d/%d)"),aEvent.iDownloadState
-	,aEvent.iProgressState,sysErrorId,dlErrorId,downloadedsize,contentsize );
-
-	if ( sysErrorId <= -25000)  { FLOG(_L("  error %d interpreted as http \
-	error %d") , sysErrorId, sysErrorId + 25000 ); }
-
-	switch ( aEvent.iDownloadState )
-	{
-	case EHttpDlCreated:		// 1
-		{
-		FLOG(_L("Download State: EHttpDlCreated"));
-		}
-		break;
-	case EHttpDlInprogress:     // 2
-		{
-		FLOG(_L("Download State: EHttpDlProgress"));
-
-
-		if (aEvent.iProgressState == EHttpProgCodDescriptorDownloaded)
-			{
-			if (iShowOMACDUI || iShowDLPrgUI)
-				{
-				iFotaServer->iParentApp->SetUIVisibleL ( ETrue, EFalse);
-				}
-			}
-
-		// Is ECodLoadEnd optimized out?
-		if ( aEvent.iProgressState == EHttpProgCodLoadEnd ) // 2503
-			{
-			TInt    err;
-			err = aDownload->Start();  // PPAR-6FRHFY fixed
-			if(err)
-				{
-				FLOG(_L(" ERROR when restarting DL %d"),err);
-				User::Leave(err);
-				}
-			FLOG( _L("          DL restarted") );
-			}
-
-		// Should tell user to free disk space. But how do we know that disk space is about be exceeded?
-
-		if ( iDLNeedsReset )
-			{
-			FLOG(_L("aDownload->Reset();"));
-			iDLNeedsReset = EFalse;
-			iStatus = KRequestPending;
-			SetActive();
-			TRequestStatus* status = &iStatus;
-			User::RequestComplete( status, KErrNone );
-			User::LeaveIfError( aDownload->Reset() );
-			}
-
-		// Body data of descriptor or payload pkg
-		if ( aEvent.iProgressState == EHttpProgResponseBodyReceived && iDLProgress==EDescriptorDownloaded/*2500*/)
-			{
-			// Now pkg size can be retrieved. must check size.
-			iDLState.iPkgSize = contentsize;
-			FLOG(_L("Setting PkgSize=%d in FotaState"),contentsize);
-			iFotaServer->iDatabase->OpenDBL();
-			iFotaServer->iDatabase->SetStateL(iDLState,KNullDesC8, EFDBPkgSize );
-			iFotaServer->iDatabase->CloseAndCommitDB();
-			
-
-			TInt contentsize2 = contentsize;
-			
-			TInt dlsize (KErrNone);
-			TInt tlsize (KErrNone);
-
-			TRAPD(err, iFotaServer->GetDownloadUpdatePackageSizeL(iDLState.iPkgId, dlsize,tlsize));
-			if(err); // remove compiler warning
-			contentsize2 -= dlsize;
-			FLOG(_L("check pkg size = %d"),contentsize2 );
-
-			CFotaStorage::TFreeSpace avail = iFotaServer->StoragePluginL()->IsPackageStoreSizeAvailableL(contentsize2);
-
-			iDLProgress = ESizeChecked;
-
-			if ( avail==CFotaStorage::EDoesntFitToFileSystem )
-				{
-				FLOG(_L("CFotaStorage::EDoesntFitToFileSystem"));
-				if (iFreshDL)
-					{
-					if ( iShowDLPrgUI )
-						{
-						FLOG(_L("iDLNeedsReset = ETrue;"));
-						iDLNeedsReset = ETrue;
-						LaunchNotifierL( ESyncMLFwUpdOmaDLNotEnoughMemory, KErrDiskFull,contentsize2 );
-						}
-					else
-						{
-						iDLState.iResult = RFotaEngineSession::EResDLFailDueToDeviceOOM;
-						iDLState.iState  = RFotaEngineSession::EDownloadFailed;
-						iUpdateAfterDownload = EFalse;
-						LaunchNotifierL( ESyncMLFwUpdErrorNote, KErrGeneral, contentsize2,ETrue );
-						}
-					}
-				else //resuming download
-					{
-					FLOG(_L("Memory need in order to resume. Notify user..."));
-					LaunchNotifierL( ESyncMLFwUpdOmaDLNotEnoughMemory, KErrDiskFull,contentsize2 );
-					RunDownloadSuspendL(RFotaEngineSession::EResDLFailDueToDeviceOOM);
-					}
-					
-				}
-			}
-
-		// OMA DD download completed , must hide progress
-		if ( aEvent.iProgressState == EHttpProgContentTypeChanged ) // 2055
-			{
-			if ( iDLProgressDlg )
-				{
-				iDLProgressDlg->ProcessFinishedL(); // deletes itself
-				delete iDLProgressDlg;
-				iDLProgressDlg = NULL;
-				}
-			}
-		// OMA DD accepted,show progress
-		if ( aEvent.iProgressState == EHttpProgCodDescriptorAccepted ) // 2502
-
-			{
-			iDLProgress = EDescriptorDownloaded;
-			if ( iShowDLPrgUI )
-				{
-				FLOG(_L("SHOW PROGRESS"));
-				if ( iDLProgressDlg )
-					{
-					FLOG(_L("Removing Connecting progress note..."));
-					iDLProgressDlg->ProcessFinishedL();
-					delete iDLProgressDlg;
-					iDLProgressDlg = NULL;
-					}
-				if (!iDLProgressDlg)
-					{
-					
-					FLOG(_L("Creating iDLProgressDlg"));
-					iDLProgressDlg = new(ELeave) CFotaDLProgressDlg((CEikDialog** ) &iDLProgressDlg , EFalse, this, EDownloadingNote );
-					iDLProgressDlg->PrepareLC( R_FOTASERVER_DL_PROGRESS_DIALOG );
-					iDLProgressDlg->RunLD();
-					}
-				CEikProgressInfo* progressInfo = iDLProgressDlg->GetProgressInfoL();
-				progressInfo->SetFinalValue( 500 );
-				iPreviousContentSize = -1;
-				iDownloadedContentSize = 0;
-				iFotaServer->iParentApp->SetUIVisibleL ( ETrue , EFalse );
-				}
-			if (iDownloadResumable)
-				{
-				FLOG(_L("Setting download as resumable"));
-				iDLState.iState = RFotaEngineSession::EDownloadProgressingWithResume;
-		    	iFotaServer->SetStartupReason(EFotaDownloadInterrupted);
-				}
-			else
-				{
-				FLOG(_L("Setting download as non resumable"));
-				iDLState.iState = RFotaEngineSession::EDownloadProgressing;
-				iFotaServer->SetStartupReason(EFotaPendingGenAlert);
-				}
-			iFotaServer->iDatabase->OpenDBL();
-			iFotaServer->iDatabase->SetStateL(iDLState,KNullDesC8, EFDBState );
-			iFotaServer->iDatabase->CloseAndCommitDB();
-
-
-			if (iDLState.iIapId <= 0) //Read the IAP ID when not known, and set it into db.
-				{
-				TInt32 usedapid (KErrNotFound);
-				TInt er = iDownloadMgr.GetIntAttribute( EDlMgrIap, usedapid);
-				iDLState.iIapId = usedapid;
-				FLOG(_L("Setting IAPID=%d is FotaState"),iDLState.iIapId);
-				iFotaServer->iDatabase->OpenDBL();
-				iFotaServer->iDatabase->SetStateL(iDLState,KNullDesC8, EFDBIapId );
-				iFotaServer->iDatabase->CloseAndCommitDB();
-				}
-			}
-		}
-		break;
-	case EHttpDlCompleted:      // 4
-		{
-		FLOG(_L("Download State: EHttpDlCompleted"));
-
-		iRestartCounter = -1;
-		if ( iDLProgressDlg )
-			{
-			iDLProgressDlg->ProcessFinishedL(); // deletes itself
-			delete iDLProgressDlg;
-			iDLProgressDlg = NULL;
-			}
-		iDLState.iState     = RFotaEngineSession::EDownloadComplete;
-
-		if (iUpdateAfterDownload)
-			iDLState.iResult = KErrNotFound;
-		else
-			iDLState.iResult    = RFotaEngineSession::EResSuccessful;
-		iFotaServer->FinalizeDownloadL( iDLState );
-		}
-		break;
-	case EHttpDlPaused: //Event thrown for any resumable download
-	case EHttpDlFailed: //Event thrown for any non-resumable download or critical error on resumable download
-		{
-		
-		if (aEvent.iProgressState != EHttpProgNone) //Accepting only events from COD
-			return;
-
-		if (aEvent.iDownloadState == EHttpDlPaused)
-			{
-			FLOG(_L("Download State: EHttpDlPaused"));
-			if (iDownloadResumable)
-				{
-				iDLState.iState     = RFotaEngineSession::EDownloadProgressingWithResume;
-				}
-			else 
-				{
-				// iDownloadResumable remains 0 even for resumable download.
-				iDLState.iState     = RFotaEngineSession::EDownloadFailed;
-				}
-			}
-		else //aEvent.iDownloadState = EHttpDlFailed
-			{
-			FLOG(_L("Download State: EHttpDlFailed"));
-			iDLState.iState     = RFotaEngineSession::EDownloadFailed;
-			iDownloadResumable = EFalse;
-			}
-		//Remove the download progress bar
-		if ( iDLProgressDlg && (iDLState.iResult != RFotaEngineSession::EResUserCancelled ))
-			{
-			FLOG(_L("Shd not come in EResUserCancelled"));
-			iDLProgressDlg->ProcessFinishedL(); // deletes itself
-			delete iDLProgressDlg;
-			iDLProgressDlg = NULL;
-			}
-		// This is restarted download => decrement counter
-		if ( iRestartCounter > 0 )
-			{
-			--iRestartCounter;
-			if ( iRestartCounter <=0 ) iRestartCounter = -1;
-			FLOG(_L("   iRestartCounter to %d"),iRestartCounter );
-			}
-		/*****************************/
-		//Handling all errors now...//
-		/****************************/
-		TInt notifType (KErrNotFound);
-		TInt notifParam (KErrNotFound);
-		//Handling User Cancel of Download Descriptor
-		if ( dlErrorId == EGeneral && (sysErrorId == KErrAbort || sysErrorId == KErrCancel ))
-			{
-			FLOG(_L("Reason: User cancelled download descriptor"));
-			//LaunchNotifierL(ESyncMLFwUpdOmaDLCancelled, EFalse, EFalse);
-			iRestartCounter = -1;
-			iDLState.iResult = RFotaEngineSession::EResUserCancelled;
-			notifType = ESyncMLFwUpdOmaDLCancelled;
-			notifParam = KErrNone;
-			}
-		//Handling User Cancel
-		else if ( iDLState.iResult == RFotaEngineSession::EResUserCancelled ) //This variable is set in RunDownloadCancelL or RunDownloadSuspendL
-			{
-			iRestartCounter = -1;
-			//If initial pause is successful, query user if he wants to postpone or cancel permanently.
-			iFotaServer->iDatabase->OpenDBL();
-			iFotaServer->iDatabase->SetStateL(iDLState,KNullDesC8, EFDBState);
-			iFotaServer->iDatabase->CloseAndCommitDB();
-
-			if (iDownloadResumable)
-				{
-				if (!iSilentOpn)
-					{
-					FLOG(_L("Download has been paused successful. Query user if he wants to postpone or cancel permanently"));
-					LaunchNotifierL(ESyncMLFwUpdOmaDLUserCancel, KErrNone, KErrNone);
-					break;
-					}
-				else
-					{
-					notifType = ESyncMLFwUpdOmaDLPostponed;
-					notifParam = KErrNone;
-					}
-				}
-			else 
-				{
-				FLOG(_L("Error while initial pausing...%d Hence download has to be cancelled permanently!"));
-				RunDownloadCancelL(RFotaEngineSession::EResUserCancelled);
-        notifType = ESyncMLFwUpdOmaDLCancelled;
-        notifParam = KErrNone;
-				}
-			}
-		else if ( iDLState.iResult == RFotaEngineSession::EResDLFailDueToDeviceOOM )
-			{
-			FLOG(_L("Reason: Not enough memory to perform resume"));
-			iRestartCounter = -1;
-
-			if (iDownloadResumable)
-				iDLState.iState = RFotaEngineSession::EDownloadProgressingWithResume;
-			else
-				iDLState.iState = RFotaEngineSession::EDownloadFailed;
-			}
-		//Handling user cancel IAP selection popup
-		else if ( dlErrorId == EConnectionFailed && sysErrorId == KErrCancel)
-			{
-			FLOG(_L("Reason: User canceled IAP selection popup"));
-			iDLState.iResult = RFotaEngineSession::EResUserCancelled;
-			iRestartCounter = -1;
-
-			notifType = ESyncMLFwUpdOmaDLPostponed;
-			notifParam = KErrNone;
-			}
-		//Handling temproary network timeout. This may either try resume or restart based on download.
-/*		else if ( dlErrorId == EGeneral && sysErrorId == KErrTimedOut )
-			{
-			FLOG(_L("Reason: Network timeout"));
-			// No restart issued yet, this is 1st download attempt
-			if ( iRestartCounter == 0 )
-				{
-				iRestartCounter = KFotaDownloadTimeoutRestartCount;
-				iDLState.iState     = RFotaEngineSession::EIdle;
-				FLOG(_L("Trying to restart download (iRestartCounter=%d)"),iRestartCounter );
-				}
-			
-			}*/
-		//Handling all Network interrupts
-		else if ( (dlErrorId == EConnectionFailed && sysErrorId == KErrCommsLineFail)|| 
-				  dlErrorId == ETransactionFailed || 
-				  (dlErrorId == KErrCodWapConnectionDropped && sysErrorId == KErrGeneral) ||
-				  (dlErrorId == EGeneral && sysErrorId == KErrTimedOut) ||
-				  (dlErrorId == EConnectionFailed && sysErrorId == KErrGprsServicesNotAllowed ) ||
-				  (dlErrorId == EConnectionFailed && sysErrorId == KErrGsmMMNetworkFailure ) ||
-				  (dlErrorId == EConnectionFailed && sysErrorId == KErrWlanNetworkNotFound )
-				  )
-			{
-			FLOG(_L("Reason: Network breakage"));
-			iRestartCounter = -1;
-			notifType = ESyncMLFwUpdErrorNote;
-			if (iDownloadResumable)
-				{
-				notifParam = KErrCommsLineFail2;
-				iDLState.iState = RFotaEngineSession::EDownloadProgressingWithResume;
-				iDLState.iResult = RFotaEngineSession::EResDLFailDueToNWIssues;
-				}
-			else
-				{
-				notifParam = KErrCommsLineFail;
-				iDLState.iState = RFotaEngineSession::EDownloadFailed;
-				iDLState.iResult = RFotaEngineSession::EResDLFailDueToNWIssues;
-				}
-			}
-		//Handling Out Of Memory interrupt
-		else if ((dlErrorId == EGeneral && sysErrorId == KErrDiskFull ) || sysErrorId == KErrCodInsufficientSpace)
-			{
-			FLOG(_L("Reason: Disk full"));
-			iRestartCounter = -1;
-			notifType = KErrNotFound;
-			notifParam = KErrNotFound; // don't show anything
-			iDLState.iResult = RFotaEngineSession::EResDLFailDueToDeviceOOM;
-			}
-		//Handle unclassified (general) interrupts
-		else
-			{
-			iRestartCounter = -1;
-
-			
-			RProperty prop;
-			TInt val = KErrNone;
-		
-			TInt err = prop.Get(KPSUidStartup, KPSGlobalSystemState, val);
-			if (err==KErrNone && val!=ESwStateShuttingDown)
-				{
-				notifType = ESyncMLFwUpdErrorNote;				
-				}
-			else
-				{
-				FLOG(_L("Phone is powering down..."));
-				}
-
-			if (iDownloadResumable)
-				{
-				notifParam = KErrGeneralResume;
-				iDLState.iState = RFotaEngineSession::EDownloadProgressingWithResume;
-				}
-			else
-				{
-				notifParam = KErrGeneralNoResume;
-				iDLState.iState = RFotaEngineSession::EDownloadFailed;
-				}
-
-
-        SetDLResultdlErrorId(dlErrorId ,sysErrorId  );
-			
-
-			}
-		if ( iRestartCounter <= 0)
-			{
-			iUpdateAfterDownload = EFalse;
-			SetDownloadActive(EFalse);
-			if ( iDLState.iSessionType!= ESanSilent && notifType!=KErrNotFound )
-				{
-				if ( iShowDLPrgUI )
-					LaunchNotifierL( (TSyncMLFwUpdNoteTypes)notifType, notifParam,0 );
-				else
-					LaunchNotifierL( (TSyncMLFwUpdNoteTypes)notifType, notifParam,0, ETrue);
-				}
-			FLOG(_L("Should  come here for nonpausable "));	
-			iDownloadFinalized = ETrue;
-			iFotaServer->FinalizeDownloadL( iDLState );
-			}
-		else
-			{
-			if (iDownloadResumable)
-				{
-				FLOG(_L("Resuming download..."));
-				iDownload->Start();
-				}
-			else
-				{
-				FLOG(_L("Restarting download..."));
-				iFotaServer->FinalizeDownloadL( iDLState );
-				}
-			}
-		}
-		break;
-
-	case EHttpDlPausable:
-		{
-		FLOG(_L("Download State: EHttpDlPausable"));
-		if (iDownloadResumable) //This is initially set by IsDownloadSuspendResumeSupported()
-			{
-			FLOG(_L("Download Suspend/Resume is supported!"));       				
-			}
-		else
-			{
-			FLOG(_L("Download Server support Suspend/Resume, but Fota doesn't!"));
-			//retain the state iDownloadResumable = EOmaDLResumeNotSupported;
-			}
-		}
-		break;
-
-	case EHttpDlNonPausable:
-		{
-		FLOG(_L("Download State: EHttpDlNonPausable"));
-		if (iDownloadResumable) //This is initially set by CheckDownloadVariations()
-			{
-			FLOG(_L("Download Server doesn't support Suspend/Resume, but Fota does!"));
-			//Reset the state to not supported.
-			iDownloadResumable = EFalse;
-			}
-		else
-			{
-			FLOG(_L("Download Server doesn't support Suspend/Resume, neither does Fota!"));
-			}
-		}
-		break;
-	case EHttpDlDeleting:	//13
-		{
-		FLOG(_L("Download State: EHttpDlDeleting"));
-		}
-		break;
-	case EHttpDlDeleted:	//11
-		{
-		FLOG(_L("Download State: EHttpDlDeleted"));
-		}
-		break;
-	default:
-		{
-		FLOG(_L("Default. No action performed for this Download State"));
-		}
-		break;
-	}
-	FLOG(_L("CFotaDownload::HandleDMgrEventL()  <<"));
-	}
-
-
-
-// --------------------------------------------------------------------------
-// CFotaDownload::SetDLResultdlErrorId
-// Sets the appropriate error
-// --------------------------------------------------------------------------
-//
-
-void CFotaDownload::SetDLResultdlErrorId( THttpDownloadMgrError adlErrorId, TInt32 asysErrorId)
-{
-      if ( adlErrorId == EInternal)
-				{
-				FLOG(_L("Reason:   error EInternal"));
-				iDLState.iResult = RFotaEngineSession::EResUndefinedError;
-				}
-			else if ( adlErrorId == EContentFileIntegrity)
-				{
-				FLOG(_L("Reason:   error EContentFileIntegrity"));
-				iDLState.iResult = RFotaEngineSession::EResUndefinedError;
-				}
-			else if ( adlErrorId == EMMCRemoved)
-				{
-				FLOG(_L("Reason:   error EMMCRemoved,"));
-				iDLState.iResult = RFotaEngineSession::EResUndefinedError;
-				}
-			else if ( adlErrorId == EBadUrl) 
-				{
-				FLOG(_L("Reason:   error EBadUrl"));
-				iDLState.iResult = RFotaEngineSession::EResMalformedOrBadURL;
-				}
-			else if ( adlErrorId == EHttpUnhandled)
-				{
-				FLOG(_L("Reason:   error EHttpUnhandled, check global error id!"));
-				iDLState.iResult = RFotaEngineSession::EResUndefinedError;
-				}
-			else if ( adlErrorId == EHttpAuthenticationFailed)
-				{
-				FLOG(_L("Reason:   error EHttpAuthenticationFailed"));
-				iDLState.iResult = RFotaEngineSession::EResUndefinedError;
-				}
-			else if ( adlErrorId == EObjectNotFound)
-				{
-				FLOG(_L("Reason:   error EObjectNotFound"));
-				iDLState.iResult = RFotaEngineSession::EResAlternateDLServerUnavailable;
-				}
-			else if ( adlErrorId == EPartialContentModified)
-				{
-				FLOG(_L("Reason:   error EPartialContentModified"));
-				iDLState.iResult = RFotaEngineSession::EResUndefinedError;
-				}
-			else if ( adlErrorId == EContentExpired)
-				{
-				FLOG(_L("Reason:   error EContentExpired"));
-				iDLState.iResult = RFotaEngineSession::EResUndefinedError;
-				}
-			else if ( adlErrorId == EHttpRestartFailed)
-				{
-				FLOG(_L("Reason:   error EHttpRestartFailed"));
-				iDLState.iResult = RFotaEngineSession::EResUndefinedError;
-				}
-			else if ( asysErrorId == KErrCodInvalidDescriptor )
-				{
-				FLOG(_L("Reason:   error KErrCodInvalidDescriptor"));
-				iDLState.iResult  = RFotaEngineSession::EResMalformedOrBadURL;
-				}
-			else
-				{
-				FLOG(_L("Reason: unknown, check dlError!"));
-				iDLState.iResult = RFotaEngineSession::EResUndefinedError;
-				}
-
-}
-
-// --------------------------------------------------------------------------
-// CFotaDownload::HandleDMgrEventL
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::HandleDMgrEventL( RHttpDownload& aDownload
-		, THttpDownloadEvent aEvent )
-	{   
-	DoHandleDMgrEventL(&aDownload,aEvent);
-	}
-
-
-// --------------------------------------------------------------------------
-// CFotaDownload::LaunchNotifierL
-// Launches notifier. This method is also used to finalize erronous DL
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::LaunchNotifierL( const TSyncMLFwUpdNoteTypes aNotetype
-		,const TInt aIntParam
-		,const TInt aMemoryNeeded
-		,TBool aFinishOnly )
-	{
-	if ( iNotifHandler ) iNotifHandler->Cancel();
-	else				 iNotifHandler = CFotaDownloadNotifHandler::NewL(this);
-	iNotifHandler->LaunchNotifierL( aNotetype,aIntParam,aMemoryNeeded
-			,aFinishOnly );
-	}
-
-// --------------------------------------------------------------------------
-// CFotaDownload::CheckDownloadVariations
-// Reads download variations - fota suspend & resume bahavior & FMS from cenrep keys
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::CheckDownloadVariations()
-	{
-	FLOG(_L("CFotaDownload::CheckDownloadVariations >>"));
-
-	CRepository* centrep( NULL);
-	TRAPD(err, centrep = CRepository::NewL( KCRUidFotaServer ) );
-	if (err) FLOG(_L("Error reading FotaServer cenrep... %d"),err);
-	TInt supported(KErrNone);
-	if (centrep ) 
-		{
-		err = centrep->Get( KSuspendResumeFeatureSupported, supported );
-		if (err) FLOG(_L("Error reading cenrep key... %d"),err);
-		iDownloadResumable = (supported==1)? ETrue:EFalse;
-
-		supported = KErrNone;
-		centrep->Get( KFotaMonitoryServiceEnabled, supported );
-		if (err) FLOG(_L("Error reading cenrep key... %d"),err);
-		iFMSEnabled = (supported > 0)? ETrue:EFalse;
-
-		delete centrep;
-		centrep = NULL;
-		}
-
-	FLOG(_L("Susp&Resume feature supported = %d, FMS feature supported = %d"),iDownloadResumable,iFMSEnabled);
-	FLOG(_L("CFotaDownload::CheckDownloadVariations <<"));
-	}
-
-// --------------------------------------------------------------------------
-// CFotaDownload::RunDownloadCancelL
-// Starts to cancel the download operation
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::RunDownloadCancelL(const TInt aReason, TBool aSilent)
-	{
-	FLOG(_L("CFotaDownload::RunDownloadCancelL, reason = %d, silent = %d >>"), aReason, aSilent);
-
-	iDLState.iState     = RFotaEngineSession::EDownloadFailed;
-	iDLState.iResult    = aReason;
-	iSilentOpn = aSilent;
-	
-	iRestartCounter = -1;
-	iUpdateAfterDownload = EFalse;
-	
-	if (!iDownload)
-		{
-		//iDownload is null when user cancels the download permanently when prompted to resume.
-		//hence retrieve the download object first 
-		iDownload = RetrieveDownloadL();
-		}
-	TInt err = iDownload->Delete(); //or Cancel or Reset?
-	FLOG(_L("Error = %d"),err);
-	
-	if(iDownloadFinalized == EFalse)
-	{
-	iFotaServer->FinalizeDownloadL( iDLState );
-	FLOG(_L("Should not come here fro nopausable "));
-	if (aReason == RFotaEngineSession::EResUserCancelled)
-		LaunchNotifierL(ESyncMLFwUpdOmaDLCancelled, EFalse, EFalse);
-	else if (aReason == RFotaEngineSession::EResUndefinedError)
-		LaunchNotifierL(ESyncMLFwUpdErrorNote, KErrGeneralNoResume, EFalse );
-  }
-	FLOG(_L("CFotaDownload::RunDownloadCancelL <<"));
-	}
-
-// --------------------------------------------------------------------------
-// CFotaDownload::RunDownloadSuspendL
-// Starts to suspend the download operation
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::RunDownloadSuspendL(const TInt aReason, TBool aSilent)
-	{
-	FLOG(_L("CFotaDownload::RunDownloadSuspendL, reason = %d, silent = %d >>"), aReason, aSilent);
-
-	iDLState.iState     = RFotaEngineSession::EDownloadProgressingWithResume;
-	iDLState.iResult    = aReason;
-	iSilentOpn = aSilent;
-	//First pause download, and later ask for user action.
-	TInt err = iDownload->Pause();
-
-	if (err)
-	{
-	//initial pausing becomes a problem.
-	FLOG(_L("Error while initial pausing...%d Hence download has to be cancelled permanently!"),err);
-	RunDownloadCancelL(aReason);
-	}
-
-	FLOG(_L("CFotaDownload::RunDownloadSuspendL <<"));
-	}
-
-// --------------------------------------------------------------------------
-// CFotaDownload::TryResumeDownloadL
-// Tries to resume the download operation
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::TryResumeDownloadL(TBool aUserInitiated)
-	{
-	FLOG(_L("CFotaDownload::TryResumeDownloadL >>"));
-
-	iUserInitiatedResume = aUserInitiated;
-	TInt err = RProperty::Define( TUid::Uid(KOmaDMAppUid),
-			KFotaDMRefresh,
-			RProperty::EInt,KReadPolicy,KWritePolicy);
-	FLOG(_L("RProperty KFotaDMRefresh Define, err = %d"), err);        
-	if (err != KErrAlreadyExists )
-		{
-		User::LeaveIfError(err);
-		}
-	//This P&S Key is used to notify DM UI on any download event. key=0 for idle and key=1 for download
-	err = RProperty::Set( TUid::Uid(KOmaDMAppUid),
-			KFotaDMRefresh,
-			ETrue );
-	FLOG(_L("RProperty KFotaDMRefresh Set ETrue, err = %d"), err);    
-
-	//Called to read the download variations in Fota (resume support & FMS)
-	CheckDownloadVariations();	
-	if (IsFMSEnabled() && iUserInitiatedResume)
-		iFotaServer->CancelFmsL();
-
-	//Query based on the type of DM session used earlier.
-	if (iUserInitiatedResume || iDLState.iSessionType != ESanSilent)
-		{
-		//Query user for resume
-		FLOG(_L("Quering user for resume..."));
-		if (iFotaServer->iNotifHandler)
-			{
-			iFotaServer->iNotifHandler->Cancel();
-			delete iFotaServer->iNotifHandler;
-			iFotaServer->iNotifHandler = NULL;
-			}
-		iNotifHandler = CFotaDownloadNotifHandler::NewL(this);
-
-		iNotifHandler->LaunchNotifierL(ESyncMLFwUpdOmaDLResume, EFalse, EFalse);
-		}
-	else //Only FMS initiated Silent Session download
-		{
-		//Resume directly
-		FLOG(_L("Resuming automatically..."));
-		ResumeDownloadL();
-		}
-	FLOG(_L("CFotaDownload::TryResumeDownloadL <<"));
-	}
-
-// --------------------------------------------------------------------------
-// CFotaDownload::ResumeDownloadL
-// Resume the download operation
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::ResumeDownloadL()
-	{
-	FLOG(_L("CFotaDownload::ResumeDownloadL >>"));
-	TBool toresetdl (EFalse);
-	TBool downloadiapvalid (ETrue);
-	//Find the download ui behavior from fota cenrep
-	TInt behavior(KErrNotFound);
-	CRepository* centrep = NULL;
-	TRAPD(err, centrep = CRepository::NewL( KCRUidFotaServer ) );
-	if (( centrep ) && ( err == KErrNone))
-	    {
-	    centrep->Get( KSilentOmaDlUIBehavior, behavior );
-	    delete centrep;
-	    }
-	centrep = NULL;
-
-	if (iUserInitiatedResume || 
-	        (behavior == EOmacdOffdlprgOn || behavior == EOmacdOndlprgOn))
-		{
-		FLOG(_L("Showing Connecting progress note..."));
-		iFotaServer->iParentApp->SetUIVisibleL ( ETrue , EFalse );
-		
-		if ( !iDLProgressDlg )
-			{
-			iDLProgressDlg = new(ELeave) CFotaDLProgressDlg((CEikDialog** ) &iDLProgressDlg , EFalse, this, EConnectingNote );
-			iDLProgressDlg->PrepareLC( R_CONNECTION_NOTE );
-			}
-		// Load the resource files
-	    TInt err = KErrNone;
-	       
-	    // Localize the file name, and load the SCP resources
-	    TFileName resFile;
-	    resFile.Copy( KDriveZ );
-	    resFile.Append( KSCPResourceFilename );
-    	    
-	    BaflUtils::NearestLanguageFile( CCoeEnv::Static()->FsSession(), resFile );    
-
-	    TInt Res1(KErrNone);
-	    TRAP( err, Res1 =CCoeEnv::Static()->AddResourceFileL( resFile ) );        
-
-	    HBufC* buf = StringLoader::LoadLC(R_SYNCSTATUS_SYNC_CONN);
-	
-	    if( Res1 )
-	    	{
-	        iFotaServer->GetEikEnv()->DeleteResourceFile( Res1 );
-	    	}
-	    FLOG(_L("Reading txt as: %S"), &buf->Des());
-		iDLProgressDlg->SetTextL(buf->Des());
-		CleanupStack::PopAndDestroy(buf);
-	
-		iDLProgressDlg->RunLD();
-		}
-	FLOG(_L("CFotaDownload::ResumeDownloadL, Stage 1"));
-	
-	iDownload = RetrieveDownloadL();
-	if (iDownload)
-		{
-		FLOG(_L("CFotaDownload::ResumeDownloadL, Stage 2: Successfully retrieved download object >>"));
-
-		SetIapToUseL(iDLState, iDLState.iIapId);
-
-		FLOG(_L("CFotaDownload::ResumeDownloadL, Stage 3: Using iapid %d for resume..."), iDLState.iIapId);
-		downloadiapvalid = iFotaServer->CheckIapExistsL(iDLState.iIapId);
-		if (iDLState.iIapId > 0 && downloadiapvalid)
-			{
-			if (!iMonitor)
-				{
-				iMonitor = CFotaNetworkRegStatus::NewL (iFotaServer);
-				}
-			TBool val = iMonitor->IsConnectionPossibleL(iDLState.iIapId);
-			FLOG(_L("CFotaDownload::ResumeDownloadL, Stage 4"));
-			delete iMonitor; iMonitor = NULL;
-			
-#if defined(__WINS__)
-			val =ETrue;
-#endif
-			if (!val)
-				{
-				FLOG(_L("CFotaDownload::ResumeDownloadL, Stage 5.1: Disallowing resume operation as connection not possible"));
-				
-				if ( !iShowDLPrgUI && iDLProgressDlg )
-					{
-					FLOG(_L("Removing Connecting progress note..."));
-
-					iDLProgressDlg->ProcessFinishedL();
-					delete iDLProgressDlg;
-					iDLProgressDlg = NULL;
-					}
-				if (iUserInitiatedResume || iDLState.iSessionType!=ESanSilent)
-					LaunchNotifierL(ESyncMLFwUpdErrorNote, KErrCommsLineFail2,0);
-				iDLState.iState = RFotaEngineSession::EDownloadProgressingWithResume;
-				iDLState.iResult = RFotaEngineSession::EResDLFailDueToNWIssues;
-				iUpdateAfterDownload = EFalse;
-				iFotaServer->FinalizeDownloadL(iDLState);
-				return;
-				}
-			}
-
-		if (iDLState.iIapId == KErrNotFound || !downloadiapvalid )
-		    {
-		    iDLState.iIapId = KErrNotFound;
-			User::LeaveIfError( iDownloadMgr.SetIntAttribute( EDlMgrIap, 0)); // Download mgr interprets 0 for Always Ask
-		    }
-		else
-			User::LeaveIfError( iDownloadMgr.SetIntAttribute( EDlMgrIap, iDLState.iIapId)); // IAP id
-
-		FLOG(_L("CFotaDownload::ResumeDownloadL, Stage 5.2"));
-		SetDownloadUiBehavior(EFalse);		
-
-		if ( !iShowDLPrgUI && iDLProgressDlg )
-			{
-			FLOG(_L("Removing Connecting progress note..."));
-
-			iDLProgressDlg->ProcessFinishedL();
-			delete iDLProgressDlg;
-			iDLProgressDlg = NULL;
-			}
-		TInt dlsize, tlsize;
-		FLOG(_L("CFotaDownload::ResumeDownloadL, Stage 6"));
-		iFotaServer->GetDownloadUpdatePackageSizeL(iDLState.iPkgId, dlsize,tlsize);
-		iDownloadedContentSize = dlsize; //for progress bar update only
-		iUpdateAfterDownload = iDLState.iUpdateLtr; //should update after reboot?
-		iRestartCounter = 0;
-		
-		//Set right states in fota db
-		iDLState.iState = RFotaEngineSession::EDownloadProgressingWithResume;
-		iDLState.iResult = KErrNotFound;
-		
-		iFotaServer->iDatabase->OpenDBL();
-		iFotaServer->iDatabase->SetStateL( iDLState, KNullDesC8, EFDBState|EFDBResult);
-		iFotaServer->iDatabase->CloseAndCommitDB();
-		iFreshDL = EFalse;
-		FLOG(_L("CFotaDownload::ResumeDownloadL, Stage 6: Starting to resume download now..."));
-		TInt err = iDownload->Start();
-		if (err == KErrNone)
-			{
-			//Set the P&S Key to active...
-			FLOG(_L("Resume operation is success!"));
-			SetDownloadActive(ETrue);
-			}
-		else
-			{
-			FLOG(_L("An error occured during resume, err = %d"),err);
-			toresetdl = ETrue;
-			}
-		}
-	else
-		{
-		FLOG(_L("Failed to get the paused download object"));
-		if ( iDLProgressDlg )
-			{
-			FLOG(_L("Removing Connecting progress note..."));
-			iDLProgressDlg->ProcessFinishedL(); // deletes itself
-			delete iDLProgressDlg;
-			iDLProgressDlg = NULL;
-			}
-		toresetdl = ETrue;
-		}
-      ReSetDownloadL(	toresetdl);
-	
-	FLOG(_L("CFotaDownload::ResumeDownloadL <<"));
-	}
-// --------------------------------------------------------------------------
-// CFotaDownload::ReSetDownloadL
-// Sets the download state to failed
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::ReSetDownloadL(TBool atoresetdl)
-{
-if (atoresetdl)
-		{
-		FLOG(_L("Resetting fota download !!!"));
-		if (iUserInitiatedResume || iDLState.iSessionType!=ESanSilent)
-			LaunchNotifierL(ESyncMLFwUpdErrorNote, KErrGeneralNoResume,0);
-		iDLState.iState = RFotaEngineSession::EDownloadFailed;
-		iDLState.iResult = RFotaEngineSession::EResUndefinedError;
-		iUpdateAfterDownload = EFalse;
-		iFotaServer->FinalizeDownloadL(iDLState);
-		}
-}
-
-
-
-// --------------------------------------------------------------------------
-// CFotaDownload::IsFMSEnabled
-// Returns FMS enabled state
-// --------------------------------------------------------------------------
-//
-TBool CFotaDownload::IsFMSEnabled()
-	{
-	FLOG(_L("CFotaDownload::IsFMSEnabled, iFMSEnabled = %d <<"), iFMSEnabled);
-	return iFMSEnabled;
-	}
-
-// --------------------------------------------------------------------------
-// CFotaDownload::IsDownloadResumable
-// Returns whether the download is resumable or not.
-// --------------------------------------------------------------------------
-//
-TBool CFotaDownload::IsDownloadResumable()
-	{
-	FLOG(_L("CFotaDownload::IsDownloadResumable, iDownloadResumable = %d <<"), iDownloadResumable);
-	return iDownloadResumable;
-	}
-
-// --------------------------------------------------------------------------
-// CFotaDownload::SetIapToUseL
-// Sets the IAP ID to use. This menthod is used in fresh and resume download.
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::SetIapToUseL(TPackageState aParams, const TInt aIapid)
-	{
-	FLOG(_L("CFotaDownload::SetIapToUseL >>"));
-
-	RSyncMLSession sml;
-	TInt profIapid( KErrNotFound );
-	TInt sockIapid( KErrNotFound );
-	TSmlServerAlertedAction saa(ESmlConfirmSync);
-
-	CleanupClosePushL( sml );
-	sml.OpenL();
-	iFotaServer->GetProfileDataL(&sml,aParams.iProfileId, profIapid, saa
-			,iIsjobStartedFromUI, iSanValue );
-	CleanupStack::PopAndDestroy( &sml );
-
-	// 2/3 GET IAP FROM ESOCK ----------------------------------------------
-	// resolve which accespoint is used for current DM session
-	if ( (profIapid == KErrNotFound || profIapid == KErrGeneral)  
-			&& aIapid==KErrNotFound)
-		{
-		RSocketServ serv;
-		CleanupClosePushL( serv );
-		User::LeaveIfError( serv.Connect() );
-
-		RConnection conn;
-		CleanupClosePushL( conn );
-		User::LeaveIfError( conn.Open( serv ) );
-
-		TUint count( 0 );
-		User::LeaveIfError( conn.EnumerateConnections ( count ) );
-		// enumerate connections
-		for( TUint idx=1; idx<=count; ++idx )
-			{
-			TConnectionInfo connectionInfo;
-			TConnectionInfoBuf connInfo( connectionInfo );
-
-			TInt err = conn.GetConnectionInfo( idx, connInfo ); // iapid
-			if( err != KErrNone )
-				{
-				CleanupStack::PopAndDestroy( 2 ); // conn, serv
-				User::Leave( err );
-				}
-			// enumerate connectionclients
-			TConnectionEnumArg	conArg;
-			conArg.iIndex = idx;
-			TConnEnumArgBuf conArgBuf(conArg);
-			err=conn.Control(KCOLConnection,KCoEnumerateConnectionClients
-					,conArgBuf);
-			if( err != KErrNone )
-				{
-				CleanupStack::PopAndDestroy( 2 ); // conn, serv
-				User::Leave( err );
-				}
-			TInt cliCount = conArgBuf().iCount;
-			for ( TUint j=1; j<=cliCount ;++j )
-				{
-				TConnectionGetClientInfoArg conCliInfo;
-				conCliInfo.iIndex = j;
-				TConnGetClientInfoArgBuf conCliInfoBuf(conCliInfo);
-				err=conn.Control(KCOLConnection, KCoGetConnectionClientInfo
-						, conCliInfoBuf);
-
-				if( err != KErrNone )
-					{
-					CleanupStack::PopAndDestroy( 2 ); // conn, serv
-					User::Leave( err );
-					}				
-				TConnectionClientInfo conCliInf = conCliInfoBuf().iClientInfo;
-				TUid uid = conCliInf.iUid;
-				if ( uid == TUid::Uid(KSosServerUid) )
-					{
-					sockIapid = connInfo().iIapId;
-					FLOG(_L("[FotaServer]  IAP found %x"),sockIapid);
-					}
-
-				FLOG(_L("[FotaServer]  CFotaDownload::DownloadL uid %x")
-						,uid.iUid);
-				}
-			}
-		CleanupStack::PopAndDestroy( 2 ); // conn, serv		
-		}
-	TInt newIapid( KErrNotFound );
-	if ( sockIapid!=KErrNotFound  ) newIapid = sockIapid;
-	if ( profIapid!=KErrNotFound && profIapid != KErrGeneral ) newIapid = profIapid;
-	if ( aIapid   !=KErrNotFound ) newIapid = aIapid;
-
-	//Do some intelligent work during resume
-	/* Some rules..
-	 * 1. If IAP is always ask in DM profile, use the earlier set during FMS trigger
-	 * 2. If IAP is always ask in DM profile, query user for IAP during user trigger
-	 * 3. If IAP has changed in DM profile after suspend, use the newer one during resume
-	 * 4. 
-	 */
-	TInt active (KErrNotFound);
-	RProperty::Get(TUid::Uid(KFotaServerUid), KFotaDownloadActive, active );
-	FLOG(_L("active = %d"),active);
-	if (active==EFalse && iDLState.iState == RFotaEngineSession::EDownloadProgressingWithResume)
-		{
-		//Actual resume only
-		if (!iUserInitiatedResume && (profIapid == KErrNotFound || profIapid == KErrGeneral  ) )
-			{
-			//FMS triggered resume, apply Rule 1
-			newIapid = iDLState.iIapId;
-			}
-		else if (profIapid == KErrNotFound || profIapid == KErrGeneral )
-			{
-			//User triggered resume, apply Rule 2
-			newIapid = KErrNotFound;
-			}
-		else if (profIapid != iDLState.iIapId && profIapid > KErrNone)
-			{
-			//IAP has changed in DM profile, apply Rule 3
-			newIapid = profIapid;
-			}
-		}
-	iDLState.iIapId = newIapid;
-
-
-	FLOG(_L("CFotaDownload::SetIapToUseL, iap = %d <<"), iDLState.iIapId);
-	}
-
-// --------------------------------------------------------------------------
-// CFotaDownload::SetDownloadUiBehavior
-// Sets Download UI behavior. ex: DD display and Progress note
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::SetDownloadUiBehavior(TBool aFreshDL)
-	{
-	FLOG(_L("CFotaDownload::SetDownloadUiBehavior, aFreshDL = %d >>"),aFreshDL);
-
-	if (aFreshDL) //Fresh download
-		{
-		iDLState.iSessionType = iSanValue;
-		}
-	else //resuming download
-		{
-		iSanValue = iDLState.iSessionType;
-		}
-
-	if ( !iIsjobStartedFromUI &&  iRestartCounter==0 ) //iRestartCounter to ensure that the UI behavior is read only once.
-		{
-		TInt behavior(KErrNotFound);
-		TInt sansupported(KErrNone);
-
-		//Find whether SAN is supported or not
-	    CRepository* centrep = NULL;
-
-	    TRAPD( err, centrep = CRepository::NewL( KCRUidDeviceManagementInternalKeys) );    
-	    if( centrep ) centrep->Get( KDevManSANUIBitVariation, sansupported );
-	    delete centrep; centrep = NULL;
-	    FLOG(_L("...1..."));
-	    if (sansupported != 1) sansupported = 0;
-	    
-		//Find the download ui behavior from fota cenrep
-		TRAP(err, centrep = CRepository::NewL( KCRUidFotaServer ) );
-		if ( centrep ) 	centrep->Get( KSilentOmaDlUIBehavior, behavior );
-		delete centrep; centrep = NULL;
-
-		FLOG(_L("Values are... SAN enabled: %d, session type: %d, downloadbehavior: %d"),sansupported, iDLState.iSessionType,behavior);
-
-		if (sansupported) //SAN is supported
-			{
-				
-			DetermineUISANON(behavior)	;
-			
-			}
-		else //SAN not supported
-			{
-				DetermineUISANOFF(behavior);
-		
-			}
-		}
-	else// if (iRestartCounter==0) //Started from DM UI, but not retry
-		{
-		iShowOMACDUI = ETrue;
-		iShowDLPrgUI = ETrue;
-		if (aFreshDL)
-			iDLState.iSessionType = KErrNotFound;
-		}
-
-TInt value (EFotaUpdateDM);
-TInt err = RProperty::Get( KPSUidNSmlDMSyncApp, KNSmlCurrentFotaUpdateAppName, value );
-if (!err && ((value == EFotaUpdateNSC) || (value == EFotaUpdateNSCBg)))
-{
-			iShowOMACDUI = EFalse;		
-			iShowDLPrgUI = ETrue;
-			FLOG(_L("CFotaDownload::DownloadL UI will not be shown!"));
-}
-	FLOG(_L("UI Behavior: OMA DD Display = %d, Download Progress = %d"),iShowOMACDUI,iShowDLPrgUI);
-
-	FLOG(_L("CFotaDownload::SetDownloadUiBehavior <<"));
-	}
-
-
-// --------------------------------------------------------------------------
-// CFotaDownload::DetermineUISANON
-// Determine UI when SAN is ON
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::DetermineUISANON(TInt aBehavior)
-{
-				switch (aBehavior)
-					{
-					case EOmacdOffdlprgOff: //0
-						{
-						iShowOMACDUI = EFalse;
-						iShowDLPrgUI = EFalse;
-						}
-						break;
-					case EOmacdOffdlprgOn: //1
-						{
-						iShowOMACDUI = EFalse;
-						iShowDLPrgUI = ETrue;
-						}
-						break;
-					case EOmacdOndlprgOff: //2
-						{
-						iShowOMACDUI = ETrue;
-						iShowDLPrgUI = EFalse;
-						}
-						break;
-					case EOmacdOndlprgOn: //3
-						{
-						iShowOMACDUI = ETrue;
-						iShowDLPrgUI = ETrue;
-						}
-						break;
-					default: //includes EChooseFromSan
-						{
-						if(iSanValue == ESanSilent)
-							{
-							iShowOMACDUI = EFalse;
-							iShowDLPrgUI = EFalse;
-							}
-						else if (iSanValue == ESanInformative)
-							{
-							iShowOMACDUI = EFalse;
-							iShowDLPrgUI = ETrue;
-							}
-						else //includes ESanInteractive, ESanNotSpecified
-							{
-							iShowOMACDUI = ETrue;
-							iShowDLPrgUI = ETrue;
-							}
-						}
-						break;
-					}
-	
-	
-}
-
-// --------------------------------------------------------------------------
-// CFotaDownload::DetermineUISANOFF
-// Determine UI when SAN is OFF
-// --------------------------------------------------------------------------
-//
-
-void CFotaDownload::DetermineUISANOFF(TInt aBehavior)
-{
-			if (iSanValue==EAcceptedYes) //Accepted is Yes in Profile
-				{
-				switch (aBehavior)
-					{
-					case EOmacdOffdlprgOff: //0
-						{
-						iShowOMACDUI = EFalse;
-						iShowDLPrgUI = EFalse;
-						}
-						break;
-					case EOmacdOffdlprgOn: //1
-						{
-						iShowOMACDUI = EFalse;
-						iShowDLPrgUI = ETrue;
-						}
-						break;
-					case EOmacdOndlprgOff: //2
-						{
-						iShowOMACDUI = ETrue;
-						iShowDLPrgUI = EFalse;
-						}
-						break;
-					default: //includes EOmacdOndlprgOn
-						{
-						iShowOMACDUI = ETrue;
-						iShowDLPrgUI = ETrue;
-						}
-						break;
-					}
-				}
-			else // includes iSanValue = EAcceptedNo (Accepted is No in profile)
-				{
-				iShowOMACDUI = ETrue;
-				iShowDLPrgUI = ETrue;
-				}
-}
-
-
-
-
-
-
-
-// --------------------------------------------------------------------------
-// CFotaDownload::RetrieveDownloadL
-// Retrieves the RHttpDownload object from download manager during resume
-// --------------------------------------------------------------------------
-//
-RHttpDownload* CFotaDownload::RetrieveDownloadL()
-	{
-	FLOG(_L("CFotaDownload::RetrieveDownloadL >>"));
-	//Retrieve RHttpDownload object for the suspended download from Download Mgr.
-	if (!iDownloadMgr.Handle())
-		iDownloadMgr.ConnectL( TUid::Uid(KFotaServerUid) , *this, EFalse);
-	const CDownloadArray& downloads = iDownloadMgr.CurrentDownloads();
-	
-	TBuf8<KMaxPath> url8;
-	TInt32 val (KErrNone);
-	
-	RHttpDownload* aDownload (NULL);
-	for (TInt i = 0; i < downloads.Count(); i++ )
-		{
-		User::LeaveIfError( downloads[i]->GetStringAttribute( EDlAttrCurrentUrl, url8 ));
-		User::LeaveIfError( downloads[i]->GetIntAttribute( EDlAttrFotaPckgId, val));
-	
-		FLOG(_L("Current download(s) as per download mgr: %d, url = %S, pkgid = %d"), i+1, &url8, val);
-	
-		if (iDLState.iPkgId ==  val)
-			{
-			FLOG(_L("Successfully found the paused download object"));
-			aDownload = downloads[i];
-			if ( iUrl ) {delete iUrl; iUrl=NULL;}
-			iUrl = url8.Alloc();
-	
-			}
-		}
-	FLOG(_L("CFotaDownload::RetrieveDownloadL <<"));
-	return aDownload;
-	}
-
-// --------------------------------------------------------------------------
-// CFotaDownload::SetDownloadActive
-// Sets the download activity state P&S key
-// --------------------------------------------------------------------------
-//
-void CFotaDownload::SetDownloadActive(TBool aValue)
-	{
-	FLOG(_L("CFotaDownload::SetDownloadActive, aValue = %d"),aValue);
-	iDownloadActive = aValue;
-	TBool val (EFalse);
-	TInt err = RProperty::Get(TUid::Uid(KFotaServerUid), KFotaDownloadActive, val );
-
-	if (err == KErrNone && val != aValue)
-		{
-		err = RProperty::Set(TUid::Uid(KFotaServerUid), KFotaDownloadActive, aValue );
-		FLOG(_L("RProperty KFotaDownloadActive Set %d, err = %d"), aValue, err);
-		}
-	
-	FLOG(_L("CFotaDownload::SetDownloadActive <<"));
-	}
-
-// --------------------------------------------------------------------------
-// IsDownloadActive
-// Returns the activeness of the download
-// --------------------------------------------------------------------------
-//
-
-TBool CFotaDownload::IsDownloadActive()
-	{
-	FLOG(_L("CFotaDownload::IsDownloadActive, value = %d"),iDownloadActive);
-	return iDownloadActive;
-	}
-
-
-// --------------------------------------------------------------------------
-// CFotaDownloadNotifHandler::NewL 
-// --------------------------------------------------------------------------
-//
-CFotaDownloadNotifHandler* CFotaDownloadNotifHandler::NewL (CFotaDownload* aDownload)
-	{
-	FLOG(_L("CFotaDownloadNotifHandler::NewL"));
-	__ASSERT_ALWAYS( aDownload, User::Panic(KFotaPanic, KErrArgument) );	
-	CFotaDownloadNotifHandler* h=new (ELeave)CFotaDownloadNotifHandler;
-	h->iDownload = aDownload;
-	h->iDownload->iFotaServer->iNotifHandler = h;
-	return h;
-	}
-
-// --------------------------------------------------------------------------
-CFotaDownloadNotifHandler::CFotaDownloadNotifHandler() : CActive(EPriorityNormal)
-	{
-	FLOG(_L("CFotaDownloadNotifHandler::CFotaDownloadNotifHandler()"));
-	CActiveScheduler::Add( this ); 
-	}
-
-// --------------------------------------------------------------------------
-CFotaDownloadNotifHandler::~CFotaDownloadNotifHandler()
-	{
-	FLOG(_L("CFotaDownloadNotifHandler::~CFotaDownloadNotifHandler >>"));
-	iNotifier.Close();
-	Cancel();
-	FLOG(_L("CFotaDownloadNotifHandler::~CFotaDownloadNotifHandler <<"));
-	}
-
-// --------------------------------------------------------------------------
-void CFotaDownloadNotifHandler::RunL()
-	{
-	FLOG(_L("CFotaDownloadNotifHandler::RunL() note:%d, param:%d" ),iNotifParams.iNoteType, iNotifParams.iIntParam);
-
-	TBool reset (ETrue);
-
-	iNotifier.Close();
-
-	iDownload->SetDownloadActive(EFalse);
-	if ( iNotifParams.iNoteType == ESyncMLFwUpdErrorNote  ) // 1 
-		{
-		//do nothing here
-		}
-	if ( iNotifParams.iNoteType == ESyncMLFwUpdOmaDLNotEnoughMemory ) // 7
-		{
-		//To be active as Flexible mem is in action.
-		if (iDownload->iFreshDL)
-			iDownload->SetDownloadActive(ETrue);
-		}
-	if ( iNotifParams.iNoteType == ESyncMLFwUpdOmaDLUserCancel )
-		{
-		//At this point Download Mgr has already paused the download successfully.
-		if (iStatus.Int() == KErrCancel) //RSK Press
-			{
-			//User wants to cancel download permanently.
-			FLOG(_L("User choose to cancel download permanently!"));
-			iDownload->RunDownloadCancelL(RFotaEngineSession::EResUserCancelled);
-			}
-		else
-			{
-			//Other keys pressed, like LSK or Call termination key
-			FLOG(_L("User choose to resume download later, key press = %d"),iStatus.Int());
-			iDownload->iFotaServer->FinalizeDownloadL( iDownload->iDLState );
-			if (iStatus.Int() == KErrNone) //RSK is pressed
-				{
-				LaunchNotifierL(ESyncMLFwUpdOmaDLPostponed, EFalse, EFalse);
-				reset = EFalse;
-				}
-			else
-				iDownload->iFotaServer->ShutApp();
-			}
-		}
-
-	if ( iNotifParams.iNoteType == ESyncMLFwUpdOmaDLPostponed )
-		{
-		//Nothing to do
-		}
-
-	if ( iNotifParams.iNoteType == ESyncMLFwUpdOmaDLCancelled )
-		{
-		//Nothing to do
-		}
-
-	if ( iNotifParams.iNoteType == ESyncMLFwUpdOmaDLResume )
-		{
-		if (iStatus.Int() == KErrNone) // LSK Press
-			{
-			FLOG(_L("User choose to continue download now."));
-			iNotifParams.iNoteType = ESyncMLFwUpdUnknown;
-			iNotifParams.iIntParam = 0;
-			iDownload->ResumeDownloadL();
-			reset = EFalse;
-			}
-		else	//RSK or any other key
-			{
-			FLOG(_L("User cancelled to continue download now, key press = %d."),iStatus.Int());
-			if (iStatus.Int() == KErrCancel) //RSK is pressed
-				{
-				iDownload->iDLState.iResult = RFotaEngineSession::EResUserCancelled;
-				LaunchNotifierL(ESyncMLFwUpdOmaDLUserCancel, EFalse, EFalse);
-				reset = EFalse;
-				}
-			else
-				iDownload->iFotaServer->ShutApp();
-			}
-		}
-
-	if (reset)
-		{
-		iNotifParams.iNoteType = ESyncMLFwUpdUnknown;
-		iNotifParams.iIntParam = 0;
-		}
-	}
-
-// --------------------------------------------------------------------------
-TInt CFotaDownloadNotifHandler::RunError(TInt aError)
-	{	
-	FLOG(_L("CFotaDownloadNotifHandler::RunError %d"),aError);
-	return aError;
-	}
-
-// --------------------------------------------------------------------------
-void CFotaDownloadNotifHandler::DoCancel()
-	{
-	FLOG(_L("CFotaDownloadNotifHandler::DoCancel >>"));
-	if (iNotifier.Handle())
-		{
-		iNotifier.CancelNotifier( KSyncMLFwUpdNotifierUid );
-		iNotifier.Close();
-		}
-		FLOG(_L("CFotaDownloadNotifHandler::DoCancel <<"));
-	}
-
-// --------------------------------------------------------------------------
-void CFotaDownloadNotifHandler::LaunchNotifierL( const TSyncMLFwUpdNoteTypes aNotetype
-		,const TInt aIntParam
-		, const TInt aMemoryNeeded
-		,TBool aFinishOnly)
-	{
-	FLOG(_L("CFotaDownloadNotifHandler::LaunchNotifierL, aNoteType=%d, aParam=%d, aMemoryNeeded=%d aFinishOnly=%d >>  "), aNotetype, aIntParam, aMemoryNeeded, aFinishOnly?1:0);
-	
-	__ASSERT_ALWAYS( iNotifier.Handle()==0, User::Leave(KErrAlreadyExists) );
-	__ASSERT_ALWAYS( aMemoryNeeded>=0, User::Leave(KErrArgument) );
-
-
-	// Launch notifier
-	TSyncMLFwUpdNotifParams         params;
-	FLOG(_L("           1"));
-	params.iNoteType        = aNotetype;
-	params.iIntParam        = aIntParam;
-
-	TInt rem = 0;
-	rem = aMemoryNeeded % 1024 ;
-	if (rem)
-		{
-		params.iMemoryNeeded = (aMemoryNeeded /1024) + 1;   	
-		}
-	else
-		{  
-		params.iMemoryNeeded = (aMemoryNeeded /1024) ;
-		}
-
-	//    #endif    
-	TSyncMLFwUpdNotifParamsPckg     pckg(params);
-	iNotifParams.iNoteType  = params.iNoteType;
-	iNotifParams.iIntParam  = params.iIntParam;
-
-	iNotifParams.iMemoryNeeded = params.iMemoryNeeded;
-
-	iDummyResponsePckg = TSyncMLFwUpdNotifRetValPckg();
-	FLOG(_L("           2"));
-	if ( !aFinishOnly )
-		{
-		User::LeaveIfError( iNotifier.Connect() );
-		iNotifier.StartNotifierAndGetResponse( iStatus, KSyncMLFwUpdNotifierUid
-				, pckg, iDummyResponsePckg );
-		SetActive();
-		}
-	else
-		{
-		iStatus = KRequestPending;
-		SetActive();
-		TRequestStatus* status = &iStatus;
-		User::RequestComplete( status, KErrNone );
-		}
-	FLOG(_L("           3  %d"),iStatus.Int());
-	FLOG(_L("CFotaDownloadNotifHandler::LaunchNotifierL() <<"));	
-	}
-
-TBool CFotaDownloadNotifHandler::IsOpen()
-	{
-	FLOG(_L("Handle = %d"), iNotifier.Handle());
-	return (iNotifier.Handle())? ETrue:EFalse;
-	}