# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1268649795 -7200 # Node ID 9e9792ae22e37db7a0de9f7ef4dd09728c3e3317 # Parent 06f47423eceed027707b21cdc4716531d3e8b930 Revision: 201009 Kit: 201010 diff -r 06f47423ecee -r 9e9792ae22e3 fotaapplication/fotaserver/FotaEngine/SRC/fotaengstream.cpp --- a/fotaapplication/fotaserver/FotaEngine/SRC/fotaengstream.cpp Fri Mar 12 15:46:48 2010 +0200 +++ b/fotaapplication/fotaserver/FotaEngine/SRC/fotaengstream.cpp Mon Mar 15 12:43:15 2010 +0200 @@ -99,6 +99,9 @@ // Define write area TUint8* p1 = iMyWriteStream->iFotaEngineSession->iChunk.Base(); TUint8* p2; + p2 = p1 + chunksize; + + /* // dead code if ( limitedwritearea == -1 ) { p2 = p1 + chunksize; @@ -107,6 +110,7 @@ { p2 = p1 + limitedwritearea; } + */ SetBuf (a,p1 , p2 ); FLOG(_L("TDP2StreamBuf::ResetL() <<" )); } diff -r 06f47423ecee -r 9e9792ae22e3 fotaapplication/fotaserver/FotaServer/data/fotaserver.rss --- a/fotaapplication/fotaserver/FotaServer/data/fotaserver.rss Fri Mar 12 15:46:48 2010 +0200 +++ b/fotaapplication/fotaserver/FotaServer/data/fotaserver.rss Mon Mar 15 12:43:15 2010 +0200 @@ -143,9 +143,9 @@ RESOURCE TBUF r_apps_fota_restarting { buf = qtn_fota_restarting_phone;} RESOURCE TBUF r_qtn_dm_title_settings_dialog { buf=qtn_apps_dm_title; } RESOURCE TBUF r_fota_radio_dialog_1hour_remainder { buf=qtn_fota_reminder_1_hour;} -RESOURCE TBUF r_fota_radio_dialog_4hours_remainder { buf=qtn_fota_reminder_4_hours; } +//RESOURCE TBUF r_fota_radio_dialog_4hours_remainder { buf=qtn_fota_reminder_4_hours; } RESOURCE TBUF r_fota_radio_dialog_1day_remainder { buf=qtn_fota_reminder_1_day; } -RESOURCE TBUF r_fota_radio_dialog_3days_remainder { buf=qtn_fota_reminder_3_days; } +//RESOURCE TBUF r_fota_radio_dialog_3days_remainder { buf=qtn_fota_reminder_3_days; } RESOURCE TBUF r_fota_radio_dialog_no_remainder { buf=qtn_fota_no_reminder;} RESOURCE TBUF r_qtn_fota_reminder_1_minute { buf=qtn_fota_reminder_1_minute; } RESOURCE TBUF r_qtn_fota_reminder_minutes { buf=qtn_fota_reminder_minutes ; } diff -r 06f47423ecee -r 9e9792ae22e3 fotaapplication/fotaserver/FotaServer/loc/fotaserver.loc --- a/fotaapplication/fotaserver/FotaServer/loc/fotaserver.loc Fri Mar 12 15:46:48 2010 +0200 +++ b/fotaapplication/fotaserver/FotaServer/loc/fotaserver.loc Mon Mar 15 12:43:15 2010 +0200 @@ -55,24 +55,12 @@ //r:3.2 #define qtn_fota_reminder_1_hour "1 hour" -//d:radio button item to display 4 hour -//l:list_set_graphic_pane_t1 -//w: -//r:3.2 -#define qtn_fota_reminder_4_hours "4 hours" - //d:radio button item to display 1 day //l:list_set_graphic_pane_t1 //w: //r:3.2 #define qtn_fota_reminder_1_day "1 day" -//d:radio button item to display 3 days -//l:list_set_graphic_pane_t1 -//w: -//r:3.2 -#define qtn_fota_reminder_3_days "3 days" - //d:radio button item to display no remainder //l:list_set_graphic_pane_t1 //w: diff -r 06f47423ecee -r 9e9792ae22e3 fotaapplication/fotaserver/FotaServer/src/FotaServer.cpp --- a/fotaapplication/fotaserver/FotaServer/src/FotaServer.cpp Fri Mar 12 15:46:48 2010 +0200 +++ b/fotaapplication/fotaserver/FotaServer/src/FotaServer.cpp Mon Mar 15 12:43:15 2010 +0200 @@ -766,7 +766,9 @@ StoragePluginL()->DeleteUpdatePackageL ( iDownloader->iDLState.iPkgId ); // Download not to be restarted, delete - if ( iDownloader->iRestartCounter<=0 ) + if ( iDownloader ) + { + if ( iDownloader->iRestartCounter<=0 ) { // Set downloader's ending state to DB iDatabase->OpenDBL(); @@ -814,6 +816,7 @@ err = RProperty::Set(TUid::Uid(KOmaDMAppUid), KFotaDMRefresh, EFalse ); FLOG(_L("RProperty KFotaDMRefresh EFalse, err = %d"), err); } + } // Download to be restarted else { diff -r 06f47423ecee -r 9e9792ae22e3 fotaapplication/fotaserver/FotaStorage/src/fotaDiskStorage.cpp --- a/fotaapplication/fotaserver/FotaStorage/src/fotaDiskStorage.cpp Fri Mar 12 15:46:48 2010 +0200 +++ b/fotaapplication/fotaserver/FotaStorage/src/fotaDiskStorage.cpp Mon Mar 15 12:43:15 2010 +0200 @@ -159,9 +159,12 @@ isavailable = CFotaStorage::EFitsToFileSystem; } } + TInt fitstodummy = isavailable==CFotaStorage::EFitsToReservation?1:0 ; + TInt fitstoFS = isavailable==CFotaStorage::EFitsToFileSystem?1:0 ; + TInt DoesntFitToFS = isavailable==CFotaStorage::EDoesntFitToFileSystem?1:0 ; + FLOG(_L("CFotaDiskStorage::IsPackageStoreSizeAvailableL %d<%d (sz vs dummy) => fitstodummy:%d fitstoFS:%d DoesntFitToFS:%d") - ,aSize,dummySize,isavailable==CFotaStorage::EFitsToReservation?1:0,isavailable==CFotaStorage::EFitsToFileSystem?1:0,isavailable==CFotaStorage::EDoesntFitToFileSystem?1:0 - ); + ,aSize,dummySize,fitstodummy,fitstoFS,DoesntFitToFS ); return isavailable; } diff -r 06f47423ecee -r 9e9792ae22e3 remotemgmt_plat/data_synchronization_notification_api/inc/DataSyncInternalPSKeys.h --- a/remotemgmt_plat/data_synchronization_notification_api/inc/DataSyncInternalPSKeys.h Fri Mar 12 15:46:48 2010 +0200 +++ b/remotemgmt_plat/data_synchronization_notification_api/inc/DataSyncInternalPSKeys.h Mon Mar 15 12:43:15 2010 +0200 @@ -19,6 +19,15 @@ #ifndef SYNCML_DATASYNC_INTERNAL_PS_KEYS_H #define SYNCML_DATASYNC_INTERNAL_PS_KEYS_H +/** +*Device manager key UID +*/ +const TUid KPSUidNSmlDSSyncApp = {0x101F6DE4}; + +/** +*PubSub key used for handling Sync Cancel operation. +*/ +const TUint32 KDsJobCancel = 0x00000001; /** * SyncML Data Synchronization Internal P&S Keys UID diff -r 06f47423ecee -r 9e9792ae22e3 syncmlfw/dm/callbackServer/src/nsmldmcallbackserver.cpp --- a/syncmlfw/dm/callbackServer/src/nsmldmcallbackserver.cpp Fri Mar 12 15:46:48 2010 +0200 +++ b/syncmlfw/dm/callbackServer/src/nsmldmcallbackserver.cpp Mon Mar 15 12:43:15 2010 +0200 @@ -175,7 +175,10 @@ ) { _LIT_SECURITY_POLICY_S0 ( mySidPolicy, KNSmlSOSServerSecureID ); - mySidPolicy().CheckPolicy ( aMessage ); + if(!mySidPolicy().CheckPolicy ( aMessage )) + { + User::Leave(KErrAccessDenied); + } } return CNSmlDmCallbackSession::NewL( (CNSmlDmCallbackServer&)*this ); diff -r 06f47423ecee -r 9e9792ae22e3 syncmlfw/dm/dmutils/src/nsmldmtreedtd.cpp --- a/syncmlfw/dm/dmutils/src/nsmldmtreedtd.cpp Fri Mar 12 15:46:48 2010 +0200 +++ b/syncmlfw/dm/dmutils/src/nsmldmtreedtd.cpp Mon Mar 15 12:43:15 2010 +0200 @@ -46,7 +46,7 @@ // --------------------------------------------------------------------------- void CNSmlDmPcdata::FreeContent() { - delete iContent; + User::Free(iContent); iContent = 0; } diff -r 06f47423ecee -r 9e9792ae22e3 syncmlfw/dm/syncagent/src/nsmldmagent.cpp --- a/syncmlfw/dm/syncagent/src/nsmldmagent.cpp Fri Mar 12 15:46:48 2010 +0200 +++ b/syncmlfw/dm/syncagent/src/nsmldmagent.cpp Mon Mar 15 12:43:15 2010 +0200 @@ -1843,6 +1843,7 @@ iItem->iMetaMark = ((*aItemList)[i].iMetaMark)->AllocL(); iItem->iData = ((*aItemList)[i].iData)->AllocL(); iDataItem->AppendL(*iItem); + delete iItem; } } diff -r 06f47423ecee -r 9e9792ae22e3 syncmlfw/ds/hostserver/dshostserverbase/bld/nsmldshostserver.mmp --- a/syncmlfw/ds/hostserver/dshostserverbase/bld/nsmldshostserver.mmp Fri Mar 12 15:46:48 2010 +0200 +++ b/syncmlfw/ds/hostserver/dshostserverbase/bld/nsmldshostserver.mmp Mon Mar 15 12:43:15 2010 +0200 @@ -52,6 +52,7 @@ SOURCE Nsmldsasyncrequesthandler.cpp SOURCE Nsmldsasynccallback.cpp SOURCE NsmldschangedItemsFetcher.cpp +SOURCE nsmldshostsessioncancel.cpp LIBRARY euser.lib ecom.lib efsrv.lib edbms.lib estor.lib bafl.lib smlstoreformat.lib LIBRARY nsmldebug.lib smldataprovider.lib nsmldshostclient.lib NSmlAdapterLog.lib diff -r 06f47423ecee -r 9e9792ae22e3 syncmlfw/ds/hostserver/dshostserverbase/inc/Nsmldshostsession.h --- a/syncmlfw/ds/hostserver/dshostserverbase/inc/Nsmldshostsession.h Fri Mar 12 15:46:48 2010 +0200 +++ b/syncmlfw/ds/hostserver/dshostserverbase/inc/Nsmldshostsession.h Mon Mar 15 12:43:15 2010 +0200 @@ -32,7 +32,8 @@ #include "nsmldsitemmodificationset.h" #include "Nsmldsasyncrequesthandler.h" #include "Nsmldsdataproviderarray.h" - +#include "Nsmldshostsessioncanceleventhandler.h" +#include "Nsmldshostsessioncancel.h" // ------------------------------------------------------------------------------------------------ // Class forwards // ------------------------------------------------------------------------------------------------ @@ -48,7 +49,8 @@ // // @lib nsmldshostserver.lib // ------------------------------------------------------------------------------------------------ -class CNSmlDSHostSession : public CSession2 +class CNSmlDSHostSession : public CSession2, + public MNSmlDsHostSessionCancelEventHandler { private: //DATA TYPES and INNER CLASSES typedef CNSmlDSAsyncCallBack::TCallBackOperation TCallBackOperation; @@ -252,7 +254,11 @@ public: //Functions from base classes. void ServiceL( const RMessage2 &aMessage ); - + /** + * Called when user canceled the operation + * @none. + */ + void HandleCancelEventL(); private: // New methods /** @@ -689,12 +695,22 @@ */ void StreamBufferToChunkL( TMemPtr& aMemPtr, TStreamBuffers* aSb ); + /** + * Called when DeleteAll request is finished + * @param aDSAO. pointer to asynchronous request handler + * @param aOperation. callback operation. + */ + TInt DeleteAllFinishedL( CNSmlDSAsyncCallBack* aDSAO, TCallBackOperation aOperation ); + private: //Data TMemPtr iMemPtr; CNSmlDSHostServer& iServer; RNSmlDSDataProviderArray iDataProviders; RStringPool iStringPool; + CNSmlHostSessionCancel* iCancelEventHandler; + CNSmlDSAsyncCallBack* iDsoDeleteAll; + }; #include "Nsmldshostsession.inl" diff -r 06f47423ecee -r 9e9792ae22e3 syncmlfw/ds/hostserver/dshostserverbase/inc/Nsmldshostsessioncancel.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/ds/hostserver/dshostserverbase/inc/Nsmldshostsessioncancel.h Mon Mar 15 12:43:15 2010 +0200 @@ -0,0 +1,69 @@ +/* +* ============================================================================== +* Name : nsmldshostsessioncancel.h +* Part of : Nokia SyncML / Host Server +* Interface : None +* Description : +* Version : $Revision: 54 $ $Modtime: 2.11.05 8:53 $ +* +* Copyright © 2002-2005 Nokia. All rights reserved. +* This material, including documentation and any related +* computer programs, is protected by copyright controlled by +* Nokia Corporation. All rights are reserved. Copying, +* including reproducing, storing, adapting or translating, any +* or all of this material requires the prior written consent of +* Nokia Corporation. This material also contains confidential +* information which may not be disclosed to others without the +* prior written consent of Nokia Corporation. +* ============================================================================== +*/ + +#ifndef __NSMLDSHOSTSESSIONCANCEL_H__ +#define __NSMLDSHOSTSESSIONCANCEL_H__ + + +// -------------------------------------------------------------------------- +// Includes +// -------------------------------------------------------------------------- +#include +#include +#include +#include + + +// ------------------------------------------------------------------------------------------------ +// Class forwards +// ------------------------------------------------------------------------------------------------ +class MNSmlDsHostSessionCancelEventHandler; + +/** +* An active class to handle user initiated cancel. +* This class informs session to cancel the outgoing session. +* +* @since +*/ +class CNSmlHostSessionCancel : public CActive + { +public: + static CNSmlHostSessionCancel* NewL( MNSmlDsHostSessionCancelEventHandler* aHandler ); + //Destructure + ~CNSmlHostSessionCancel(); + //Subscribe for the property "Cancel Operation". + void Subscribe(); + +private: + //Contructure + CNSmlHostSessionCancel( MNSmlDsHostSessionCancelEventHandler* aHandler ); + //Second phase construction. + void ConstructL(); + //From CActive class + void RunL(); + void DoCancel(); + +private: + MNSmlDsHostSessionCancelEventHandler* iHandler; + RProperty iProperty; + }; + + +#endif // __NSMLDSHOSTSESSIONCANCEL_H__ diff -r 06f47423ecee -r 9e9792ae22e3 syncmlfw/ds/hostserver/dshostserverbase/inc/Nsmldshostsessioncanceleventhandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/ds/hostserver/dshostserverbase/inc/Nsmldshostsessioncanceleventhandler.h Mon Mar 15 12:43:15 2010 +0200 @@ -0,0 +1,48 @@ +/* +* ============================================================================== +* Name : Nsmldshostsessioncanceleventhandler.h +* Part of : Nokia SyncML / Host Server +* Description : Header file for MNSmlDsHostSessionCancelEventHandler +* Version : +* +* Copyright © 2002-2005 Nokia Corporation. +* This material, including documentation and any related +* computer programs, is protected by copyright controlled by +* Nokia Corporation. All rights are reserved. Copying, +* including reproducing, storing, adapting or translating, any +* or all of this material requires the prior written consent of +* Nokia Corporation. This material also contains confidential +* information which may not be disclosed to others without the +* prior written consent of Nokia Corporation. +* ============================================================================== +*/ + +#ifndef NSMLDSHOSTSESSIONCANCELEVENTHANDLER_H +#define NSMLDSHOSTSESSIONCANCELEVENTHANDLER_H + +#include +# +// CLASS DECLARATION + + +/** +* Interface class to handle database events +* +*/ +class MNSmlDsHostSessionCancelEventHandler + { + + public: + /** + * CNSmlHostSessionCancel calls this to inform that host session that user has + * canceled the opeartion. + * @return None. + */ + virtual void HandleCancelEventL() = 0; + }; + + + +#endif // NSMLDSHOSTSESSIONCANCELEVENTHANDLER_H + +// End of File diff -r 06f47423ecee -r 9e9792ae22e3 syncmlfw/ds/hostserver/dshostserverbase/src/Nsmldsasynccallback.cpp --- a/syncmlfw/ds/hostserver/dshostserverbase/src/Nsmldsasynccallback.cpp Fri Mar 12 15:46:48 2010 +0200 +++ b/syncmlfw/ds/hostserver/dshostserverbase/src/Nsmldsasynccallback.cpp Mon Mar 15 12:43:15 2010 +0200 @@ -88,6 +88,7 @@ if ( iReqFinishedFunc != NULL ) { ( *iSession.*iReqFinishedFunc )( this, ECanceled ); + iMessage.Complete( KErrCancel); } } diff -r 06f47423ecee -r 9e9792ae22e3 syncmlfw/ds/hostserver/dshostserverbase/src/Nsmldshostsession.cpp --- a/syncmlfw/ds/hostserver/dshostserverbase/src/Nsmldshostsession.cpp Fri Mar 12 15:46:48 2010 +0200 +++ b/syncmlfw/ds/hostserver/dshostserverbase/src/Nsmldshostsession.cpp Mon Mar 15 12:43:15 2010 +0200 @@ -30,6 +30,8 @@ #include "NSmlAdapterLog.h" #include "nsmldshostconstants.h" #include "Nsmldshostserver.h" +#include "nsmldshostsessioncanceleventhandler.h" +#include "Nsmldshostsessioncancel.h" #include "Nsmldshostsession.h" #include "nsmldsdpinformation.h" #include "Nsmldsdataproviderarray.h" @@ -174,6 +176,16 @@ iMemPtr.iChunk.Close(); iDataProviders.ResetAndDestroy(); iStringPool.Close(); + if(iDsoDeleteAll) + { + delete iDsoDeleteAll; + iDsoDeleteAll = NULL; + } + if(iCancelEventHandler) + { + delete iCancelEventHandler; + iCancelEventHandler = NULL; + } REComSession::FinalClose(); iServer.DecSessionCount(); _DBG_FILE( "CNSmlDSHostSession::~CNSmlDSHostSession(): end" ); @@ -410,6 +422,8 @@ { _DBG_FILE( "CNSmlDSHostSession::ConstructL(): begin" ); iStringPool.OpenL(); + iDsoDeleteAll = NULL; + iCancelEventHandler = NULL; _DBG_FILE( "CNSmlDSHostSession::ConstructL(): end" ); } @@ -1486,11 +1500,14 @@ // ------------------------------------------------------------------------------------------------ void CNSmlDSHostSession::DeleteAllItemsL( const RMessage2& aMessage ) { + //Create cancel event handler + iCancelEventHandler = CNSmlHostSessionCancel::NewL(this); TNSmlDSDataStoreElement* dsi = DataStoreItemL( aMessage ); - CNSmlDSAsyncCallBack* dsao = new ( ELeave ) CNSmlDSAsyncCallBack( this, dsi, aMessage ); + CNSmlDSAsyncCallBack* dsao = new ( ELeave ) CNSmlDSAsyncCallBack( this, dsi, aMessage, DeleteAllFinishedL ); CleanupStack::PushL( dsao ); - dsao->CallDSAsyncLC().DeleteAllItemsL( dsao->iStatus ); + dsao->CallDSAsyncLC().DeleteAllItemsL( dsao->iStatus ); CleanupStack::Pop(2); //CallDSAsyncLC(), dsao + iDsoDeleteAll = dsao; } // ------------------------------------------------------------------------------------------------ @@ -1891,4 +1908,46 @@ CleanupStack::PopAndDestroy(); //wStream } +// ------------------------------------------------------------------------------------------------ +// CNSmlDSHostSession::HandleCancelEventL +// called when user canceled the operation +// ------------------------------------------------------------------------------------------------ +void CNSmlDSHostSession::HandleCancelEventL() + { + if(iCancelEventHandler) + { + iDsoDeleteAll->Cancel(); + } + } + +// ------------------------------------------------------------------------------------------------ +// CNSmlDSHostSession::DeleteAllFinishedL +// called when DeleteAll request is finished. +// Note! when aOperation is CNSmlDSAsyncCallBack::ECanceled or CNSmlDSAsyncCallBack::EFree, +// aDSAO->iDSItem might be NULL. +// ------------------------------------------------------------------------------------------------ +TInt CNSmlDSHostSession::DeleteAllFinishedL( CNSmlDSAsyncCallBack* aDSAO, TCallBackOperation aOperation ) + { + TInt err( aDSAO->iStatus.Int() ); + + switch( aOperation ) + { + case CNSmlDSAsyncCallBack::EFinished: + case CNSmlDSAsyncCallBack::ECanceled: + case CNSmlDSAsyncCallBack::EFree: + { + if(iCancelEventHandler) + { + delete iCancelEventHandler; + iCancelEventHandler = NULL; + iDsoDeleteAll = NULL; + } + break; + } + default: + User::Leave( KErrUnknown ); + }; + + return err; + } // End of File diff -r 06f47423ecee -r 9e9792ae22e3 syncmlfw/ds/hostserver/dshostserverbase/src/Nsmldshostsessioncancel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/ds/hostserver/dshostserverbase/src/Nsmldshostsessioncancel.cpp Mon Mar 15 12:43:15 2010 +0200 @@ -0,0 +1,117 @@ +/* +* ============================================================================== +* Name : Nsmldshostsessioncancel.cpp +* Part of : Nokia SyncML / DS Loader Framework +* Description : Handling Session cancel for DS host server. +* Version : $Revision: 41 $ $Modtime: 09.02.10 8:05 $ +* +* Copyright © 2005 Nokia Corporation. +* This material, including documentation and any related +* computer programs, is protected by copyright controlled by +* Nokia Corporation. All rights are reserved. Copying, +* including reproducing, storing, adapting or translating, any +* or all of this material requires the prior written consent of +* Nokia Corporation. This material also contains confidential +* information which may not be disclosed to others without the +* prior written consent of Nokia Corporation. +* ============================================================================== +*/ +//#include +#include +#include +#include +#include "nsmldshostsessioncanceleventhandler.h" +#include "nsmldshostsessioncancel.h" +// -------------------------------------------------------------------------- +// CNSmlHostSessionCancel* CNSmlHostSessionCancel::NewL( MNSmlDsHostSessionCancelEventHandler* aHandler ) +// -------------------------------------------------------------------------- +// +CNSmlHostSessionCancel* CNSmlHostSessionCancel::NewL( MNSmlDsHostSessionCancelEventHandler* aHandler ) + { + CNSmlHostSessionCancel* self = new (ELeave) CNSmlHostSessionCancel( aHandler ); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); // self + return self; + } + +// -------------------------------------------------------------------------- +// CNSmlHostSessionCancel::CNSmlHostSessionCancel( MNSmlDsHostSessionCancelEventHandler* aHandler ) +// -------------------------------------------------------------------------- +// +CNSmlHostSessionCancel::CNSmlHostSessionCancel( MNSmlDsHostSessionCancelEventHandler* aHandler ) : + CActive( EPriorityNormal ), + iHandler( aHandler ) + { + CActiveScheduler::Add(this); + } + +// -------------------------------------------------------------------------- +// void CNSmlHostSessionCancel::Subscribe() +// -------------------------------------------------------------------------- +// +void CNSmlHostSessionCancel::Subscribe() + { + if ( !IsActive() ) + { + iProperty.Subscribe( iStatus ); + SetActive(); + } + } + +// -------------------------------------------------------------------------- +// void CNSmlHostSessionCancel::ConstructL() +// -------------------------------------------------------------------------- +// +void CNSmlHostSessionCancel::ConstructL() + { + iProperty.Attach( KPSUidNSmlDSSyncApp, KDsJobCancel ); + Subscribe(); + } + +// -------------------------------------------------------------------------- +// CNSmlHostSessionCancel::~CNSmlHostSessionCancel() +// -------------------------------------------------------------------------- +// +CNSmlHostSessionCancel::~CNSmlHostSessionCancel() + { + Cancel(); + iProperty.Close(); + } + +// -------------------------------------------------------------------------- +// void CNSmlHostSessionCancel::RunL() +// -------------------------------------------------------------------------- +// +void CNSmlHostSessionCancel::RunL() + { + _DBG_FILE("CNSmlHostSessionCancel::RunL() : Begin"); + + TInt value(0); + iProperty.Get( value ); + + if( value == KErrCancel) + { + _DBG_FILE("CNSmlHostSessionCancel::RunL() :: user has canceled the operation"); + + //user has canceled the opeartion inform session + iHandler->HandleCancelEventL(); + } + else + { + Subscribe(); + } + + _DBG_FILE("CNSmlHostSessionCancel::RunL() : End"); + } + +// -------------------------------------------------------------------------- +// void CNSmlHostSessionCancel::DoCancel() +// -------------------------------------------------------------------------- +// +void CNSmlHostSessionCancel::DoCancel() + { + iProperty.Cancel(); + } + +// End of File diff -r 06f47423ecee -r 9e9792ae22e3 syncmlfw/ds/syncagent/src/nsmldscontent.cpp --- a/syncmlfw/ds/syncagent/src/nsmldscontent.cpp Fri Mar 12 15:46:48 2010 +0200 +++ b/syncmlfw/ds/syncagent/src/nsmldscontent.cpp Mon Mar 15 12:43:15 2010 +0200 @@ -120,7 +120,7 @@ // TBool CNSmlDSContent::ContentIndexIsSet() const { - if ( iIndex == -1 ) + if ( ( iIndex < 0 ) || ( iIndex >= iStores.Count() ) ) { return EFalse; } diff -r 06f47423ecee -r 9e9792ae22e3 syncmlfw/syncmlnotifier/src/SyncMLTimedInputTextQuery.cpp --- a/syncmlfw/syncmlnotifier/src/SyncMLTimedInputTextQuery.cpp Fri Mar 12 15:46:48 2010 +0200 +++ b/syncmlfw/syncmlnotifier/src/SyncMLTimedInputTextQuery.cpp Mon Mar 15 12:43:15 2010 +0200 @@ -155,17 +155,17 @@ // TBool CSyncMLTimedInputTextQuery::HandleQueryEditorStateEventL(CAknQueryControl* aQueryControl, TQueryControlEvent aEventType, TQueryValidationStatus aStatus) { - - if( EPhoneLayout == aQueryControl->QueryType() ) - { - if (aEventType == EEmergencyCallAttempted) + if ( aQueryControl ) + { + if( EPhoneLayout == aQueryControl->QueryType() ) + { + if (aEventType == EEmergencyCallAttempted) { TryExitL(EEikBidCancel); } else { - if ( aQueryControl ) - { + TBuf PhoneNo; aQueryControl->GetText( PhoneNo ); TInt posplus = PhoneNo.LocateReverse('+'); @@ -177,10 +177,9 @@ { MakeLeftSoftkeyVisible(EFalse); } - } - - } + } } + } else //For all other layouts { CAknQueryDialog::HandleQueryEditorStateEventL(aQueryControl,aEventType,aStatus); diff -r 06f47423ecee -r 9e9792ae22e3 terminalsecurity/SCP/SCPServer/inc/SCPLockNotificationEventHandler.h --- a/terminalsecurity/SCP/SCPServer/inc/SCPLockNotificationEventHandler.h Fri Mar 12 15:46:48 2010 +0200 +++ b/terminalsecurity/SCP/SCPServer/inc/SCPLockNotificationEventHandler.h Mon Mar 15 12:43:15 2010 +0200 @@ -22,6 +22,8 @@ #include #include "SCPLockEventHandler.h" +// FORWARD DECLARATIONS +class CSCPSession; // CLASS DECLARATION /** @@ -36,18 +38,20 @@ /** * Static constructor. */ - static CSCPLockNotificationEventHandler* NewL( CSCPServer* aServer ); + static CSCPLockNotificationEventHandler* NewL( CSCPServer* aServer, CSCPSession* aSession ); /** * Static constructor, that leaves the pointer to the cleanup stack. */ - static CSCPLockNotificationEventHandler* NewLC( CSCPServer* aServer ); + static CSCPLockNotificationEventHandler* NewLC( CSCPServer* aServer, CSCPSession* aSession ); /** * Destructor. */ virtual ~CSCPLockNotificationEventHandler(); + // Ack from session after queryadmincmd + void AckReceived(); protected: // Methods // Methods from base classes @@ -67,13 +71,16 @@ * From CActive The active object request cancellation method. */ void DoCancel(); + + // send passcode to ISA + void VerifyPass(); private: //Methods /** * C++ default constructor. */ - CSCPLockNotificationEventHandler( CSCPServer* aServer ); + CSCPLockNotificationEventHandler( CSCPServer* aServer, CSCPSession* aSession ); /** * By default Symbian 2nd phase constructor is private. @@ -86,13 +93,18 @@ enum TSCPLNQueryState { ESCPLNQueryStateNotification, - ESCPLNQueryStateVerification + ESCPLNQueryStateVerification, + ESCPLNQueryStateQueryAdmin }; /** The current processing state. */ TSCPLNQueryState iQueryState; /** A placeholder for the event received from the TSY */ RMobilePhone::TMobilePhoneSecurityEvent iEvent; + // Ack from queryadmin + TBool iAckReceived; + /** The parent session pointer */ + CSCPSession* iSession; }; #endif // SCPLOCKNOTIFICATIONEVENTHANDLER_H diff -r 06f47423ecee -r 9e9792ae22e3 terminalsecurity/SCP/SCPServer/inc/SCPLockSettingEventHandler.h --- a/terminalsecurity/SCP/SCPServer/inc/SCPLockSettingEventHandler.h Fri Mar 12 15:46:48 2010 +0200 +++ b/terminalsecurity/SCP/SCPServer/inc/SCPLockSettingEventHandler.h Mon Mar 15 12:43:15 2010 +0200 @@ -63,14 +63,6 @@ * Destructor. */ virtual ~CSCPLockSettingEventHandler(); - - // New methods - /** - * Informs the object that an acknowledgement was received - * This method will be used, if the acknowledgement comes in - * before the wait is started. - */ - void AckReceived(); /** * Starts the lock/unlock operation. Must be called for the object @@ -125,10 +117,6 @@ TBool iState; /** Should Autolock be activated/deactivated on success */ TBool iAutolock; - /** Is the AO waiting for an acknowledgement to the lock setting call*/ - TBool iWaitingForAck; - /** Has the AO received an acknowledgement already*/ - TBool iAckReceived; /** Has an unlock-message to Autolock been sent*/ TBool iUnlockSent; /** The return status for the message*/ diff -r 06f47423ecee -r 9e9792ae22e3 terminalsecurity/SCP/SCPServer/src/SCPLockNotificationEventHandler.cpp --- a/terminalsecurity/SCP/SCPServer/src/SCPLockNotificationEventHandler.cpp Fri Mar 12 15:46:48 2010 +0200 +++ b/terminalsecurity/SCP/SCPServer/src/SCPLockNotificationEventHandler.cpp Mon Mar 15 12:43:15 2010 +0200 @@ -33,6 +33,7 @@ #include "SCPLockNotificationEventHandler.h" #include "SCPServer.h" +#include "SCPSession.h" // ================= MEMBER FUNCTIONS ======================= @@ -40,10 +41,13 @@ // might leave. // CSCPLockNotificationEventHandler::CSCPLockNotificationEventHandler( - CSCPServer* aServer + CSCPServer* aServer, + CSCPSession* aSession ) : CSCPLockEventHandler( aServer ), - iQueryState(ESCPLNQueryStateNotification) + iQueryState(ESCPLNQueryStateNotification), + iSession (aSession), + iAckReceived (EFalse) { Dprint( (_L("--> CSCPLockNotificationEventHandler::\ CSCPLockNotificationEventHandler()") )); @@ -68,13 +72,14 @@ // Static constructor. CSCPLockNotificationEventHandler* CSCPLockNotificationEventHandler::NewL( - CSCPServer* aServer + CSCPServer* aServer, + CSCPSession* aSession ) { Dprint( (_L("--> CSCPLockNotificationEventHandler::NewL()") )); CSCPLockNotificationEventHandler* self = - CSCPLockNotificationEventHandler::NewLC( aServer ); + CSCPLockNotificationEventHandler::NewLC( aServer, aSession ); CleanupStack::Pop( self ); @@ -85,13 +90,14 @@ // Static constructor, leaves object pointer to the cleanup stack. CSCPLockNotificationEventHandler* CSCPLockNotificationEventHandler::NewLC( - CSCPServer* aServer + CSCPServer* aServer, + CSCPSession* aSession ) { Dprint( (_L("--> CSCPLockNotificationEventHandler::NewLC()") )); CSCPLockNotificationEventHandler* self = - new (ELeave) CSCPLockNotificationEventHandler( aServer ); + new (ELeave) CSCPLockNotificationEventHandler( aServer, aSession ); CleanupStack::PushL( self ); self->ConstructL(); @@ -149,6 +155,48 @@ } // --------------------------------------------------------- +// void CSCPLockNotificationEventHandler::AckReceived() +// Sets the ackReceived member to indicate that the call has +// already been acknowledged. +// +// Status : Approved +// --------------------------------------------------------- + +void CSCPLockNotificationEventHandler::AckReceived() + { + Dprint( (_L("--> CSCPLockNotificationEventHandler::AckReceived()") )); + iAckReceived = ETrue; + } + +// --------------------------------------------------------- +// void CSCPLockNotificationEventHandler::VerifyPass() +// Verify password to the ISA +// +// Status : Approved +// --------------------------------------------------------- +void CSCPLockNotificationEventHandler::VerifyPass() + { + Dprint( (_L("CSCPLockNotificationEventHandler::VerifyPass():\ + EPhonePasswordRequired event received") )); + + RMobilePhone::TMobilePhoneSecurityCode secCodeType = + RMobilePhone::ESecurityCodePhonePassword; + + RMobilePhone::TMobilePassword password; + RMobilePhone::TMobilePassword required_fourth; + required_fourth.Zero(); + iServer->GetCode( password ); + + iPhone->VerifySecurityCode(iStatus, secCodeType, + password, required_fourth); + + // Start waiting for verification response + iQueryState = ESCPLNQueryStateVerification; + SetActive(); + Dprint( (_L("<-- CSCPLockNotificationEventHandler::VerifyPass()") )); + } + +// --------------------------------------------------------- // void CSCPLockNotificationEventHandler::RunL() // When the correct security event is received, the code query is // verified via VerifySecurityCode. This method also handles the @@ -165,35 +213,32 @@ { case ( ESCPLNQueryStateNotification ): { - // Event received - if ( iEvent == RMobilePhone::EPhonePasswordRequired ) - { - Dprint( (_L("CSCPLockNotificationEventHandler::RunL():\ - EPhonePasswordRequired event received") )); - - RMobilePhone::TMobilePhoneSecurityCode secCodeType = - RMobilePhone::ESecurityCodePhonePassword; - - RMobilePhone::TMobilePassword password; - RMobilePhone::TMobilePassword required_fourth; - required_fourth.Zero(); - iServer->GetCode( password ); - - iPhone->VerifySecurityCode(iStatus, secCodeType, - password, required_fourth); - - // Start waiting for verification response - iQueryState = ESCPLNQueryStateVerification; - SetActive(); - } - else - { - Dprint( (_L("CSCPLockNotificationEventHandler::RunL():\ - Invalid event received") )); - // Re-run registration, this event is not the one we're waiting for - RegisterListener(); - } - + // Event received from Session, queryAdminCmd + if (iAckReceived) + { + VerifyPass(); + } + else if ( iEvent == RMobilePhone::EPhonePasswordRequired ) + { + Dprint( (_L("--> CSCPLockNotificationEventHandler::EPhonePasswordRequired") )); + iQueryState = ESCPLNQueryStateQueryAdmin; + iSession->LockOperationPending( ESCPCommandLockPhone, &iStatus ); + SetActive(); + } + else + { + Dprint( (_L("CSCPLockNotificationEventHandler::RunL():\ + Invalid event received") )); + // Re-run registration, this event is not the one we're waiting for + RegisterListener(); + } + break; + } + // Event received from Session for LockOpPending, queryAdminCmd + case (ESCPLNQueryStateQueryAdmin): + { + Dprint( (_L("--> CSCPLockNotificationEventHandler::ESCPLNQueryStateQueryAdmin") )); + VerifyPass(); break; } diff -r 06f47423ecee -r 9e9792ae22e3 terminalsecurity/SCP/SCPServer/src/SCPLockSettingEventHandler.cpp --- a/terminalsecurity/SCP/SCPServer/src/SCPLockSettingEventHandler.cpp Fri Mar 12 15:46:48 2010 +0200 +++ b/terminalsecurity/SCP/SCPServer/src/SCPLockSettingEventHandler.cpp Mon Mar 15 12:43:15 2010 +0200 @@ -59,8 +59,6 @@ iSession( aSession ), iState( aState ), iAutolock( aAutolock ), - iWaitingForAck( EFalse ), - iAckReceived( EFalse ), iUnlockSent( EFalse ), iMessageStatus( KErrNone ) { @@ -258,19 +256,6 @@ // --------------------------------------------------------- -// void CSCPLockSettingEventHandler::AckReceived() -// Sets the ackReceived member to indicate that the call has -// already been acknowledged. -// -// Status : Approved -// --------------------------------------------------------- - -void CSCPLockSettingEventHandler::AckReceived() - { - iAckReceived = ETrue; - } - -// --------------------------------------------------------- // void CSCPLockSettingEventHandler::SetAutolockStateL( TBool aActive ) // Activates Autolock by signalling the SA/PubSub event, or // deactivates it by sending it the deactivation message. @@ -387,7 +372,7 @@ iMessageStatus = ret; } } - else if ( iWaitingForAck ) // Received an acknowledgement for the set lock setting call + else // Received an acknowledgement for the set lock setting call { if ( ret == KErrNone ) { @@ -402,42 +387,24 @@ iMessageStatus = ret; } } - else // SetLockSetting completed - { - // Save the status of the lock setting call - iMessageStatus = ret; - - Dprint( (_L("CSCPLockSettingEventHandler::RunL():\ - SetLockSetting returned: %d"), ret )); - - if ( iAckReceived ) - { - Dprint( (_L("CSCPLockSettingEventHandler::RunL(): Ack already received") )); - startFinalPhase = ETrue; - } - else - { - iSession->LockOperationPending( ESCPCommandLockPhone, &iStatus ); - iWaitingForAck = ETrue; - finalCall = EFalse; - SetActive(); // Wait for the session-class to complete this call - } - } if ( ( startFinalPhase ) && ( iAutolock ) ) { + Dprint( (_L("--> CSCPLockSettingEventHandler::RunL-startFinalPhase") )); // Autolock activation/deactivation was requested TRAPD( err, SetAutolockStateL( iState ) ); if ( err != KErrNone ) { // If the call failed, send the result as the message status + Dprint( (_L("--> CSCPLockSettingEventHandler::RunL-err!=Kerrnone") )); iMessageStatus = err; } else if ( !iState ) { // Inform the session-class that an unlock-message has been sent // (the server won't respond to Autolock until the handler finishes) + Dprint( (_L("--> CSCPLockSettingEventHandler::RunL-!iState") )); iSession->LockOperationPending( ESCPCommandUnlockPhone, &iStatus ); iUnlockSent = ETrue; finalCall = EFalse; @@ -469,10 +436,7 @@ { Dprint( (_L("--> CSCPLockSettingEventHandler::DoCancel()") )); - if ( !iWaitingForAck ) - { - iPhone->CancelAsyncRequest( EMobilePhoneSetLockSetting ); - } + iPhone->CancelAsyncRequest( EMobilePhoneSetLockSetting ); iLockMessage.Complete( KErrCancel ); iSession->LockOperationCompleted(); diff -r 06f47423ecee -r 9e9792ae22e3 terminalsecurity/SCP/SCPServer/src/SCPSession.cpp --- a/terminalsecurity/SCP/SCPServer/src/SCPSession.cpp Fri Mar 12 15:46:48 2010 +0200 +++ b/terminalsecurity/SCP/SCPServer/src/SCPSession.cpp Mon Mar 15 12:43:15 2010 +0200 @@ -181,7 +181,7 @@ Dprint( (_L("CSCPSession::AcknowledgeOperation( %d ): \ Lock-op acknowledged"), aCommand )); iLockCommandState = ESCPLockCmdStateInProgressAcknowledged; - iSettingHandler->AckReceived(); + iNotificationHandler->AckReceived(); ret = ETrue; break; @@ -435,7 +435,7 @@ // (because DOS lock won't be disabled) if ( ( aLocked ) || ( ( !IsSMSLockActiveL() ) && ( !IsAutolockActive() ) ) ) { - iNotificationHandler = CSCPLockNotificationEventHandler::NewL( &iServer ); + iNotificationHandler = CSCPLockNotificationEventHandler::NewL( &iServer, this ); } #endif // WINS