browserutilities/connectionmanager/Src/ConnManActiveConnector.cpp
branchRCL_3
changeset 49 919f36ff910f
parent 48 79859ed3eea9
--- a/browserutilities/connectionmanager/Src/ConnManActiveConnector.cpp	Tue Aug 31 16:17:46 2010 +0300
+++ b/browserutilities/connectionmanager/Src/ConnManActiveConnector.cpp	Wed Sep 01 12:28:30 2010 +0100
@@ -19,12 +19,16 @@
 */
 
 
-
+#include <browser_platform_variant.hrh>
 #include "ConnManActiveConnector.h"
 #include "ConnectionManagerLogger.h"
-
+#include <mconnection.h>
 #include <nifvar.h>
-#include <commdbconnpref.h>
+#include <CommDbConnPref.h>
+
+#ifdef BRDO_OCC_ENABLED_FF
+#include <extendedconnpref.h>
+#endif
 
 //--------------------------------------------------------------------------
 //CConnManActiveConnector::CConnManActiveConnector()
@@ -34,8 +38,10 @@
     : CActive( aPriority )
     , iConnection( aConnection )
 	{
+    
 	CLOG_CREATE;
 	CActiveScheduler::Add( this );//inserting this into the queue
+	occPrefs = EDefault;
 	}
 
 //--------------------------------------------------------------------------
@@ -43,6 +49,7 @@
 //--------------------------------------------------------------------------
 CConnManActiveConnector::~CConnManActiveConnector()
 	{
+    
 	Cancel();//The standard way of destroying an Active object
 	CLOG_CLOSE;
 	}
@@ -51,18 +58,56 @@
 //CConnManActiveConnector::StartConnection()
 //--------------------------------------------------------------------------
 void CConnManActiveConnector::StartConnection( TCommDbConnPref* aSettings, TRequestStatus& aStatus)
-	{
-	CLOG_WRITE( "CConnManActiveConnector:StartConnection is called");
-	iExternalRequestStatus = &aStatus;
-	
+{
+    CLOG_WRITE( "CConnManActiveConnector:StartConnection AlwaysAsk/Ap is called");
+    iExternalRequestStatus = &aStatus;
+
+#ifdef BRDO_OCC_ENABLED_FF
+
+    TExtendedConnPref extPref;
+    CLOG_WRITE( "CConnManActiveConnector:StartConnection Setting OCC parameters");
+
+#ifdef __WINS__ //This is only for emulator testing purpose
+
+    //For emulator
+    CLOG_WRITE( "CConnManActiveConnector:StartConnection Emulator OCC settings " );
+    extPref.SetSnapPurpose(CMManager::ESnapPurposeUnknown);
+    extPref.SetConnSelectionDialog(ETrue);
+    extPref.SetForcedRoaming(EFalse);
+
+#else
+
+    //For hardware
+    TUint32 bookmarkIap = aSettings->IapId();
+    CLOG_WRITE_1( "CConnManActiveConnector:StartConnection Active Bookmark Iap: %d", bookmarkIap );
+    if (bookmarkIap)
+    {
+       CLOG_WRITE( "CConnManActiveConnector:StartConnection Iap is found for this bookmark");
+       extPref.SetSnapPurpose(CMManager::ESnapPurposeUnknown);
+       extPref.SetIapId(bookmarkIap);
+    }
+    else
+    {
+       CLOG_WRITE( "CConnManActiveConnector:StartConnection Popup ap dialog");
+       extPref.SetSnapPurpose(CMManager::ESnapPurposeUnknown);
+       extPref.SetConnSelectionDialog(ETrue);
+    }
+
+#endif //__WINS__   
+
+    extPref.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourDefault);
+    TConnPrefList prefList;
+    TRAP_IGNORE(prefList.AppendL(&extPref));
+#endif //BRDO_OCC_ENABLED_FF
+
     if( aSettings )
-        {
-#ifdef __WINS__
-     //  aSettings->SetDialogPreference( ECommDbDialogPrefPrompt );
-#endif
-
-	    iConnection.Start( *aSettings, iStatus );
-        }
+    {
+      #ifdef BRDO_OCC_ENABLED_FF
+        iConnection.Start( prefList, iStatus );
+      #else
+        iConnection.Start( *aSettings, iStatus );
+      #endif
+    }
     else
         {
         iConnection.Start( iStatus );
@@ -77,14 +122,62 @@
 //CConnManActiveConnector::StartConnection()
 //--------------------------------------------------------------------------
 void CConnManActiveConnector::StartConnection( TConnSnapPref* aSettings, TRequestStatus& aStatus)
-	{
-	CLOG_WRITE( "CConnManActiveConnector:StartConnection is called");
-	iExternalRequestStatus = &aStatus;
-	
+{
+    CLOG_WRITE( "CConnManActiveConnector:StartConnection SNAP is called");
+    iExternalRequestStatus = &aStatus;
+
+#ifdef BRDO_OCC_ENABLED_FF
+
+    CLOG_WRITE( "CConnManActiveConnector:StartConnection Setting OCC parameters");
+    TExtendedConnPref extPref;
+
+#ifdef __WINS__ 
+
+    //For emulator
+    CLOG_WRITE( "CConnManActiveConnector:StartConnection Emulator OCC settings " );
+    extPref.SetSnapPurpose(CMManager::ESnapPurposeUnknown);
+    extPref.SetConnSelectionDialog(ETrue);
+    extPref.SetForcedRoaming(EFalse);
+
+#else
+    
+    //For hardware
+    if( aSettings->Snap() == 0 )
+        {
+        CLOG_WRITE( "CConnManActiveConnector:StartConnection Using Internet Snap");
+        extPref.SetSnapPurpose(CMManager::ESnapPurposeInternet);
+        }
+    else
+        {
+        CLOG_WRITE( "CConnManActiveConnector:StartConnection Using given Snap");
+        extPref.SetSnapId(aSettings->Snap());
+        }
+
+#endif //__WINS__
+
+    extPref.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourDefault);
+    if ( occPrefs == ESilient )
+        {
+        CLOG_WRITE( "CConnManActiveConnector:StartConnection Setting OCC Silent behaviour");
+        extPref.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourConnSilent);
+        }
+    else
+        {
+        CLOG_WRITE( "CConnManActiveConnector:StartConnection Setting OCC Default behaviour");
+        }
+    TConnPrefList prefList;
+    TRAP_IGNORE(prefList.AppendL(&extPref));
+
+#endif
+
     if( aSettings )
-        {
-	    iConnection.Start( *aSettings, iStatus );
-        }
+    {
+      #ifdef BRDO_OCC_ENABLED_FF
+        iConnection.Start( prefList, iStatus );
+      #else
+        iConnection.Start( *aSettings, iStatus );
+      #endif
+    }
     else
         {
         iConnection.Start( iStatus );
@@ -101,8 +194,10 @@
 void CConnManActiveConnector::DoCancel()
 	{
 	CLOG_WRITE( "CConnManActiveConnector: DoCancel called");
-	iConnection.Close();
+    //This is work around fix for bug ESNA-855BUN
+    iConnection.Close();
 	User::RequestComplete( iExternalRequestStatus, KErrCancel );//completing user req
+    
 	CLOG_WRITE( "CConnManActiveConnector: DoCancel returned");
 	}
 
@@ -111,10 +206,17 @@
 //--------------------------------------------------------------------------
 void CConnManActiveConnector::RunL()
 	{
+    
     CLOG_WRITE_1( "CConnManAct::RunL(): %d", iStatus.Int() );
 	User::RequestComplete( iExternalRequestStatus, iStatus.Int() );
 	}
 
+void CConnManActiveConnector::SetOccPreferences(TSetOCCPreferences aOCCPreferences)
+    {
+    CLOG_WRITE_1( "CConnManActiveConnector::SetOccPreferences : %d", aOCCPreferences );
+    occPrefs = aOCCPreferences;
+    }
+
 //------------------------------------------------------ CActiveConnectorSyncWrapper -------------------------
 
 //--------------------------------------------------------------------------
@@ -196,11 +298,10 @@
 	{
     
     iActiveConnector->Cancel();
-	
-	if(iWait.IsStarted())
-	  {
-	   iWait.AsyncStop();	
-	  }
+   	if(iWait.IsStarted())
+	{
+	  iWait.AsyncStop();	
+	}
 	
 	}
 
@@ -222,5 +323,9 @@
 	CActiveScheduler::Add( this );
 	}
 
-
+void CActiveConnectorSyncWrapper::SetOccPreferences(TSetOCCPreferences aOCCPreferences)
+    {
+    if ( iActiveConnector )
+        iActiveConnector->SetOccPreferences(aOCCPreferences);
+    }
 //EOF