diff -r d746aee05493 -r 02ba3f1733c6 supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp --- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp Thu Jul 15 19:06:58 2010 +0300 +++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp Thu Aug 19 10:20:18 2010 +0300 @@ -128,7 +128,7 @@ iEtelRoamingCheck(EFalse), iIapDialogShown(EFalse), iIapDlgTimerExpired(EFalse), - iOMASuplAsnHandlerBaseImpl(aOMASuplAsnHandlerBase) + iOMASuplAsnHandlerBaseImpl(aOMASuplAsnHandlerBase),iWlanOnly(EFalse) { } @@ -316,6 +316,12 @@ delete iDialogTimer; delete iNetworkPrivacy; + + if(iStaleLocationId) + { + delete iStaleLocationId; + iStaleLocationId = NULL; + } if(iTrace) iTrace->Trace(_L("End of ~COMASuplSession::COMASuplSession"), KTraceFileName, __LINE__); @@ -424,7 +430,7 @@ // void COMASuplSession::RunSuplSessionL(TRequestStatus& aStatus, TBool aFirstReq, const TDesC& aHslpAddress, TBool aFallBack, TInt aAllowedCapabilities, - TInt aSessionIdSeed,TInt aRequestID) + TInt aSessionIdSeed,TInt aRequestID,TBool aIsStaleCellId,COMASuplLocationId* aLocationId,TBool aPrompt,TBool aWlanOnly) { iRunRequestStatus = & aStatus; *iRunRequestStatus = KRequestPending; @@ -432,7 +438,32 @@ iRequestID = aRequestID; iTrace->Trace(_L("Start COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__); - + + if(aIsStaleCellId) + { + iTrace->Trace(_L("Start COMASuplSession::RunSuplSession for Stale Cell Id"), KTraceFileName, __LINE__); + iIsStaleLocIdPresent = ETrue; + + + if(iStaleLocationId) + { + delete iStaleLocationId; + iStaleLocationId = NULL; + } + + iStaleLocationId = aLocationId; + iStaleLocIdPrompt = aPrompt; + iWlanOnly = aWlanOnly; //OCC + + iTrace->Trace(_L("Deleting pos requestor as session is for Stale Cell Id"), KTraceFileName, __LINE__); + delete iOMASuplPOSRequestor; + iOMASuplPOSRequestor = NULL; + + // Delete the POS Session + delete iPOSSession; + iPOSSession = NULL; + + } // Log Session Id TBuf<64> id; id.Append(_L("Session Id is ")); @@ -445,23 +476,27 @@ iTrace->Trace(id,KTraceFileName, __LINE__); iSETSessionUniqueId = aSessionIdSeed; - + + iIhaveLaunchedUsagedialog = EFalse; TInt networkMode = 1; networkMode = GetNetworkModeL(); - if ( networkMode == ECoreAppUIsNetworkConnectionNotAllowed ) - { - id.Copy(_L("The device is in OFFLINE mode.")); - iTrace->Trace(id,KTraceFileName, __LINE__); - iSessionObserver.TerminateSession(this, KErrGeneral); - return; - } - else - { - id.Copy(_L("The device is in ON LINE mode.")); - iTrace->Trace(id,KTraceFileName, __LINE__); - } + if(!iWlanOnly) //OCC + { + if ( networkMode == ECoreAppUIsNetworkConnectionNotAllowed ) + { + id.Copy(_L("The device is in OFFLINE mode.")); + iTrace->Trace(id,KTraceFileName, __LINE__); + iSessionObserver.TerminateSession(this, KErrGeneral); + return; + } + else + { + id.Copy(_L("The device is in ON LINE mode.")); + iTrace->Trace(id,KTraceFileName, __LINE__); + } + } //OCC if(aAllowedCapabilities == 0) { @@ -476,17 +511,41 @@ iSuplSessionId->SetSLPSessionID(NULL); iConnRequestor->SetDefaultParametersL(aHslpAddress,aFallBack); - - if (aFirstReq) - CheckForSuplUsageL(); - else - CheckForPreviousResultL(); + + id.Copy(_L("aFallBack value is ")); + id.AppendNum(aFallBack); + iTrace->Trace(id,KTraceFileName, __LINE__); + + if(!iWlanOnly) //OCC + { + iTrace->Trace(_L("iWLANOnly false COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__); + + id.Copy(_L("aFirstReq value is ")); + id.AppendNum(aFirstReq); + iTrace->Trace(id,KTraceFileName, __LINE__); + + if (aFirstReq) + { + iTrace->Trace(_L("start CheckForSuplUsageL COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__); + CheckForSuplUsageL(); + } + else + { + iTrace->Trace(_L("start CheckForPreviousResultL COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__); + CheckForPreviousResultL(); + } + } + else + { + iTrace->Trace(_L("iWLANOnly true COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__); + InitializeL(iRequestID); + } //OCC // Clear Position.... delete iPosition; iPosition = NULL; - + iTrace->Trace(_L("End of COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__); } @@ -505,6 +564,7 @@ TSuplTerminalQop& aQop, TInt aRequestID) { + iIhaveLaunchedUsagedialog = EFalse; iClientQop = aQop; @@ -653,11 +713,18 @@ COMASuplStartState* startSuplState = static_cast (iSuplState); startSuplState->SetQop(iClientQop); } - //SMP Changes - iSuplMsgType = ESUPL_START; - SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating); + if(iIsStaleLocIdPresent) + { + iTrace->Trace(_L("GenerateSuplStartL setting stale location id in supl start"), KTraceFileName, __LINE__); + COMASuplStartState* startSuplState = static_cast (iSuplState); + startSuplState->SetStaleCellIdToUse(iStaleLocationId->CloneL()); + } + iSuplSessionState = ESUPL_GENERATE; + iSuplMsgType = ESUPL_START; TInt err = iSuplState->GenerateMessageL(); - + + + SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating); } @@ -700,6 +767,12 @@ iTrace->Trace(msg, KTraceFileName, __LINE__); iSuplState = COMASuplPosInitState::NewL(iSETCapabilities, iMobilePhone, iUT2_PosInitTimer, iOMASuplPOSRequestor,iAllowedCapabilities,iRequestType, iPosMethod,iOMASuplAsnHandlerBaseImpl); + if(iIsStaleLocIdPresent) + { + iTrace->Trace(_L("COMASuplSession::GenerateSuplPosInitL() Setting Stale Location Id "), KTraceFileName, __LINE__); + COMASuplPosInitState* posInitSuplState = static_cast (iSuplState); + posInitSuplState->SetStaleCellIdToUse(iStaleLocationId->CloneL()); + } } iSuplState->SetMsgStateObserver(this); @@ -815,6 +888,7 @@ // void COMASuplSession::OperationCompleteL(TInt aErrorCode) { + iTrace->Trace(_L("COMASuplSession::OperationCompleteL"), KTraceFileName, __LINE__); TBuf<256> msg; if(KErrNone != aErrorCode) { @@ -827,6 +901,10 @@ HandleSuplErrorL(aErrorCode); return; } + + msg.Copy(_L("iSuplSessionState : ")); + msg.AppendNum(iSuplSessionState); + iTrace->Trace(msg, KTraceFileName, __LINE__); TInt err = KErrNone; @@ -888,7 +966,15 @@ } else //terminal initiated case { - TRAP( err, iConnRequestor->CreateConnectionL() ); + iTrace->Trace(_L("Connection block."), KTraceFileName, __LINE__); + if(iIsStaleLocIdPresent) + { + TRAP( err, iConnRequestor->CreateConnectionL(iStaleLocIdPrompt,iWlanOnly) ); + } + else + { + TRAP( err, iConnRequestor->CreateConnectionL() ); + } } if(KErrNone != err) { @@ -4058,6 +4144,7 @@ iTrace->Trace(msg,KTraceFileName, __LINE__); iPrevUsageResult = aError; + iIhaveLaunchedUsagedialog = EFalse; if (aError == KErrNone) @@ -4218,19 +4305,26 @@ iConnRequestor->UpdateSLPListForHomeUsage(iUsageHomeNW); CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage(); - if (usage == CSuplSettings::ESuplUsageAlwaysAsk) + if (usage == CSuplSettings::ESuplUsageAlwaysAsk || iStaleLocIdPrompt) { TInt err; + if (!iSuplSettings->IsUIActive() ) + { if (!aHomeNw) { iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is roaming"), KTraceFileName, __LINE__); + iIhaveLaunchedUsagedialog = ETrue; err = iProtocolManager.LaunchSuplUsageSettingsUI(this, ETrue); } else { iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is not roaming"), KTraceFileName, __LINE__); + iIhaveLaunchedUsagedialog = ETrue; err = iProtocolManager.LaunchSuplUsageSettingsUI(this, EFalse); } + } + else + err = KErrInUse; if(KErrNone != err && KErrInUse == err) { @@ -4596,6 +4690,12 @@ iTrace->Trace(_L("COMASuplSession::IsEtelRoamingSet"), KTraceFileName, __LINE__); return iEtelRoamingCheck; } + +TBool COMASuplSession::HasMeLaunchedUsageDialog() +{ + return iIhaveLaunchedUsagedialog; +} + // ----------------------------------------------------------------------------- // COMASuplSession::DialogTimerExpiredL