Revision: 201012 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 31 Mar 2010 21:35:49 +0300
branchRCL_3
changeset 35 5c11946e75b3
parent 34 5dedbccec665
child 36 c9249d037530
Revision: 201012 Kit: 201013
browserplugins/browseraudiovideoplugin/inc/BavpControllerVideo.h
browserplugins/browseraudiovideoplugin/src/BavpControllerVideo.cpp
browserplugins/browseraudiovideoplugin/src/BavpPlugin.cpp
browserui/browser/BrowserAppInc/BrowserAppUi.h
browserui/browser/BrowserAppSrc/BrowserAppUi.cpp
browserui/browser/BrowserAppSrc/BrowserGotoPane.cpp
browserui/browser/BrowserAppSrc/BrowserPreferences.cpp
browserui/browser/BrowserAppSrc/BrowserSpecialLoadObserver.cpp
browserui/browser/FavouritesSrc/BrowserBookmarksView.cpp
browserui/browser/FeedsInc/FeedsEditFeedDialog.h
browserui/browser/FeedsSrc/FeedsEditFeedDialog.cpp
browserui/browser/Group/BrowserNG.mmp
browserui/browser/SettingsSrc/SettingsContainer.cpp
browserui/browser/SrcData/Browser.rss
browserui/browser/help/data/xhtml.zip
browserui/browser/help/inc/browser.hlp.hrh
browserui/browser/loc/WmlBrowser.loc
package_definition.xml
pushmtm/Group/PushMtmUi.mmp
pushmtm/MtmUiInc/PushMessageInfoDialog.h
pushmtm/MtmUiInc/PushMtmUi.h
pushmtm/MtmUiInc/PushSettingsDialog.h
pushmtm/MtmUiSrc/PushMessageInfoDialog.cpp
pushmtm/MtmUiSrc/PushMtmUi.cpp
pushmtm/MtmUiSrc/PushSettingsDialog.cpp
pushmtm/MtmUtilInc/PushMtmPrivateCRKeys.h
pushmtm/Plugins/Group/Bld.inf
pushmtm/Plugins/Group/PushContentHandlerClean.mk
pushmtm/Plugins/Group/PushMtmPushContentHandler.mmp
pushmtm/Plugins/PushContentHandler/CSLContentHandler.cpp
pushmtm/Plugins/PushContentHandler/CSLContentHandler.h
pushmtm/Plugins/PushContentHandler/CSLContentHandler.inl
pushmtm/conf/pushmtm.confml
pushmtm/conf/pushmtm_10008D42.crml
--- a/browserplugins/browseraudiovideoplugin/inc/BavpControllerVideo.h	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserplugins/browseraudiovideoplugin/inc/BavpControllerVideo.h	Wed Mar 31 21:35:49 2010 +0300
@@ -20,7 +20,13 @@
 #define BAVPCONTROLLERVIDEO_H
 
 // INCLUDES
+#include <browser_platform_variant.hrh>
+
+#ifdef BRDO_VIDEOPLAYER2_ENABLED_FF
+#include <VideoPlayer2.h>
+#else 
 #include <VideoPlayer.h>
+#endif
 #include "BavpController.h"
 
 // FORWARD DECLARATIONS
@@ -385,19 +391,39 @@
 
     TBool NoScreenSaverMode();
     void SetDefaultAspectRatioL();
+#ifdef BRDO_VIDEOPLAYER2_ENABLED_FF
+    /**
+    * Handles a window rect update timer event where the timer completes the KWindowChangeUpdateTimeout 
+    * with the system clock
+    * @since S60 v5.2
+    * @param none
+    * @return void
+    */
+    void UpdateWindowSize();
+#endif
     private:      // Data
     
         // Used to call MMF for video functionality
-        CVideoPlayerUtility* iVideoPlayer;
-
-        // Active object for display update
-        CIdle* iDisplayUpdater;
-
-        // The full screen view
-        CBavpViewFullScreen* iBavpViewFullScreen;
-      //heart beat progress
-      CHeartbeat* iBackLightUpdater;
-      TRect   iNormalScreenRect;
+#ifdef BRDO_VIDEOPLAYER2_ENABLED_FF
+    /** 
+     * MMF Client API has updated with new methods to control video display
+     *windows and video picture positioning to produce a new version of the API, 
+     *CVideoPlayerUtility2. The new API is the preferred way to play video on graphics 
+     *surfaces, and will support new features such as more flexible window positioning.  
+     */
+	CVideoPlayerUtility2*   iVideoPlayer;
+#else   
+	CVideoPlayerUtility*    iVideoPlayer;
+#endif
+    // Active object for display update
+    CIdle*                  iDisplayUpdater;
+    
+    // The full screen view
+    CBavpViewFullScreen*    iBavpViewFullScreen;
+    //heart beat progress
+    CHeartbeat*             iBackLightUpdater;
+    TRect                   iNormalScreenRect;
+    RWindow*                iActiveWindow; 
     };
 
 #endif      // CBAVPCONTROLLERVIDEO_H
--- a/browserplugins/browseraudiovideoplugin/src/BavpControllerVideo.cpp	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserplugins/browseraudiovideoplugin/src/BavpControllerVideo.cpp	Wed Mar 31 21:35:49 2010 +0300
@@ -74,6 +74,9 @@
     if ( iVideoPlayer )
         {
         iVideoPlayer->Close();
+#ifdef BRDO_VIDEOPLAYER2_ENABLED_FF
+        iVideoPlayer->RemoveDisplayWindow(iBavpView->WindowInst());
+#endif
         delete iVideoPlayer;
         }
 
@@ -101,7 +104,7 @@
 // might leave.
 // -----------------------------------------------------------------------------
 CBavpControllerVideo::CBavpControllerVideo( MBavpView* aView, TUint aAccessPtId )
-    : CBavpController( aView, aAccessPtId )
+    : CBavpController( aView, aAccessPtId ), iActiveWindow(NULL)
     {
     }
 
@@ -187,6 +190,27 @@
         {
         iVideoPlayer->SetPositionL( iClipInfo->iPosition );
         }
+#ifdef BRDO_VIDEOPLAYER2_ENABLED_FF
+	TRect rect( iBavpView->CoeControl().Rect() );
+    CEikonEnv* eikon = CEikonEnv::Static();
+    RWsSession& ws = eikon->WsSession();
+    CWsScreenDevice* screenDevice = eikon->ScreenDevice();
+    // Clip rect manipulation.
+    // Calculate the rect for display, including title and status pane
+    TRect clipRect = GetClipRect( rect );
+    TRAPD(errAdd, iVideoPlayer->AddDisplayWindowL(CCoeEnv::Static()->WsSession(),
+                                                    *screenDevice,
+                                                    iBavpView->WindowInst(),
+                                                            rect,
+                                                            clipRect));
+    TRAPD(errScale, iVideoPlayer->SetAutoScaleL(iBavpView->WindowInst(), EAutoScaleBestFit));
+    if( ( errAdd != KErrNone ) && (iActiveWindow != &iBavpView->WindowInst()) )
+        {
+        iActiveWindow = &iBavpView->WindowInst();
+        }
+    Log( EFalse, _L("CBavpControllerVideo::InitVideoPlayerL() AddDisplayWindowL %d"), errAdd );
+    Log( EFalse, _L("CBavpControllerVideo::InitVideoPlayerL() SetAutoScaleL %d"), errScale );
+#endif
     }
 
 // -----------------------------------------------------------------------------
@@ -211,6 +235,9 @@
     if ( iVideoPlayer )
         {
         iVideoPlayer->Close();
+#ifdef BRDO_VIDEOPLAYER2_ENABLED_FF
+        iVideoPlayer->RemoveDisplayWindow(iBavpView->WindowInst());
+#endif
         delete iVideoPlayer;
         iVideoPlayer = NULL;
         }
@@ -231,11 +258,16 @@
     Log( EFalse, _L("InitVideoPlayerL() - calling CVideoPlayerUtility::NewL") );
 
     // Initialize the videoplayer
+#ifdef BRDO_VIDEOPLAYER2_ENABLED_FF
+	iVideoPlayer = CVideoPlayerUtility2::NewL( *this, EMdaPriorityNormal,
+                                              EMdaPriorityPreferenceNone);
+#else
     iVideoPlayer = CVideoPlayerUtility::NewL( *this, EMdaPriorityNormal,
                                               EMdaPriorityPreferenceNone,
                                               ws, *screenDevice,
                                               iBavpView->WindowInst(), rect,
                                               clipRect);
+#endif
 
     // Register for loading notification
     iVideoPlayer->RegisterForVideoLoadingNotification( *this );
@@ -276,6 +308,9 @@
     if ( iVideoPlayer )
         {
         iVideoPlayer->Close();
+#ifdef BRDO_VIDEOPLAYER2_ENABLED_FF
+        iVideoPlayer->RemoveDisplayWindow(iBavpView->WindowInst());
+#endif
         delete iVideoPlayer;
         iVideoPlayer = NULL;
         }
@@ -297,7 +332,12 @@
     // Rotate only if screen rect height is greater than its width
     if ( screenRect.Height() > screenRect.Width() )
         {
-        TRAP_IGNORE( iVideoPlayer->SetRotationL( EVideoRotationClockwise90 ) );
+#ifdef BRDO_VIDEOPLAYER2_ENABLED_FF
+		TRAP_IGNORE( iVideoPlayer->SetRotationL(iBavpView->WindowInst(), EVideoRotationClockwise90 ) );
+#else
+		TRAP_IGNORE( iVideoPlayer->SetRotationL( EVideoRotationClockwise90 ) );
+#endif
+
         }
     }
 
@@ -310,8 +350,13 @@
     Log( EFalse, _L("CBavpControllerVideo::RevertToFullScreenL()"));
     CBavpPluginEcomMain* npm = (CBavpPluginEcomMain*)Dll::Tls();
     bool fullscreen = true;
-    
-    iVideoPlayer->StopDirectScreenAccessL();
+
+    //This method is not supported when using CVideoPlayerUtility2, and will 
+    //always leave with KErrNotSupported. instead of variating for new player 
+    //we are ignoring the Leave
+	TRAP_IGNORE( iVideoPlayer->StopDirectScreenAccessL() );
+
+
     iClipInfo->iInFullScreenMode = ETrue;
 
     npm->Funcs()->setvalue(iBavpView->bavPlugin()->getNPP(), 
@@ -331,12 +376,21 @@
     CCoeControl* parentView = iBavpView->CoeControl().Parent();
     parentView->SetRect(screenRect);
     iBavpView->CoeControl().SetExtent(TPoint(0,0), screenRect.Size());
-    
-    iVideoPlayer->SetDisplayWindowL( ws, *screenDevice,
+
+#ifdef BRDO_VIDEOPLAYER2_ENABLED_FF
+
+    iVideoPlayer->RemoveDisplayWindow(iBavpView->WindowInst());
+    TRAPD(errAdd, iVideoPlayer->AddDisplayWindowL(ws,*screenDevice,iBavpView->WindowInst(), screenRect, screenRect));
+    TRAPD(errScale, iVideoPlayer->SetAutoScaleL(iBavpView->WindowInst(), EAutoScaleBestFit));
+    Log( EFalse, _L("CBavpControllerVideo::RevertToFullScreenL() errAdd %d"), errAdd);
+    Log( EFalse, _L("CBavpControllerVideo::RevertToFullScreenL() errScale %d"), errScale);
+#else
+	iVideoPlayer->SetDisplayWindowL( ws, *screenDevice,
                                      iBavpView->WindowInst(),
                                      screenRect, screenRect );
                                          
     RotateScreen90();
+#endif
     }
 
 // -----------------------------------------------------------------------------
@@ -352,7 +406,10 @@
     CBavpPluginEcomMain* npm = (CBavpPluginEcomMain*)Dll::Tls();
     bool fullscreen = false;
     
-    iVideoPlayer->StopDirectScreenAccessL();
+    //This method is not supported when using CVideoPlayerUtility2, and will 
+    //always leave with KErrNotSupported. instead of variating for new player 
+    //we are ignoring the Leave
+    TRAP_IGNORE( iVideoPlayer->StopDirectScreenAccessL() );
     
     npm->Funcs()->setvalue(iBavpView->bavPlugin()->getNPP(), 
                                NPPVpluginFullScreenBool, 
@@ -364,7 +421,12 @@
 
     iClipInfo->iInFullScreenMode = EFalse;
     RefreshRectCoordinatesL();
-    iVideoPlayer->SetRotationL( EVideoRotationNone );
+#ifdef BRDO_VIDEOPLAYER2_ENABLED_FF
+	iVideoPlayer->SetRotationL(iBavpView->WindowInst(), EVideoRotationNone );
+#else
+	iVideoPlayer->SetRotationL( EVideoRotationNone );
+#endif
+
     iBavpView->ControllerStateChangedL();
     }
 
@@ -397,21 +459,24 @@
     }
     if ( iVideoPlayer )
         {
+
+#ifdef BRDO_VIDEOPLAYER2_ENABLED_FF
+        UpdateWindowSize();
+#else
         TRect rect( iBavpView->CoeControl().Rect() );
 
         TRect wr(iBavpView->WindowRect()); //can have negative coordinates 
                                            //if video scrolled out of viewport
-        // Windows' absolute position, relative to the current screen
+        CEikonEnv* eikon = CEikonEnv::Static();
+        RWsSession& ws = eikon->WsSession();
+        CWsScreenDevice* screenDevice = eikon->ScreenDevice();
+
+		// Windows' absolute position, relative to the current screen
         TPoint pt = iBavpView->WindowInst().AbsPosition();
         rect.Move( pt.iX, pt.iY );
         wr.Move( pt.iX, pt.iY );
 
-
-        CEikonEnv* eikon = CEikonEnv::Static();
-        RWsSession& ws = eikon->WsSession();
-        CWsScreenDevice* screenDevice = eikon->ScreenDevice();
-
-        // Reset clipRect
+	 	// Reset clipRect
         TRect clipRect = rect;
         clipRect = GetClipRect( rect );
 
@@ -427,11 +492,14 @@
             							     iBavpView->WindowInst(),
             							     wr, clipRect );
 		    );
-    if( iCurrentState == EBavpPaused || iCurrentState == EBavpStopped || iCurrentState == EBavpPlayComplete )
-        {
-        iVideoPlayer->RefreshFrameL();
-        }
-        }
+
+#endif
+        if( iCurrentState == EBavpPaused || iCurrentState == EBavpStopped || iCurrentState == EBavpPlayComplete )
+            {
+            iVideoPlayer->RefreshFrameL();
+            }
+
+        } //end of iVideoPlayer
     }
 
 // -----------------------------------------------------------------------------
@@ -1373,4 +1441,47 @@
         }
     return ret;
 }
+#ifdef BRDO_VIDEOPLAYER2_ENABLED_FF
+// -----------------------------------------------------------------------------
+// CBavpControllerVideo::UpdateWindowSize
+// Refreshing the window co-ordinates.
+// -----------------------------------------------------------------------------
+/*
+ * MMF Client API has updated with new methods to control video display 
+ * Windows and video picture positioning to produce a new version of the API, 
+ * CVideoPlayerUtility2. The new API is the preferred way to play video on graphics
+ * surfaces, and will support new features such as more flexible window positioning.
+ * Updatewindow has made in separate method so that in future, timer can be 
+ * implemented for redusing the call to update window. 
+ */
+void CBavpControllerVideo::UpdateWindowSize()
+    {
+    TRect rect( iBavpView->CoeControl().Rect() );
+    TRect wr(iBavpView->WindowRect()); //can have negative coordinates
+    //if video scrolled out of viewport
+    CEikonEnv* eikon = CEikonEnv::Static();
+    RWsSession& ws = eikon->WsSession();
+    CWsScreenDevice* screenDevice = eikon->ScreenDevice();
+    // Reset clipRect
+    TRect clipRect = rect;
+    clipRect = GetClipRect( rect );
+    if( ( iActiveWindow != &iBavpView->WindowInst() ) && ( iActiveWindow != NULL ) )
+        {
+        //Remove the active window and add the new window
+        iVideoPlayer->RemoveDisplayWindow(iBavpView->WindowInst());
+        TRAPD(errAdd, iVideoPlayer->AddDisplayWindowL(ws,*screenDevice,iBavpView->WindowInst(), wr, clipRect));
+        TRAP_IGNORE(iVideoPlayer->SetAutoScaleL(iBavpView->WindowInst(), EAutoScaleBestFit));
+        if( errAdd == KErrNone )
+            iActiveWindow = &iBavpView->WindowInst();
+        }
+    else
+        {
+        //window is already active, only needs the window size changed or position change
+        TRAPD(err1,iVideoPlayer->SetVideoExtentL(iBavpView->WindowInst(),wr));
+        TRAPD(err2,iVideoPlayer->SetWindowClipRectL(iBavpView->WindowInst(),clipRect));
+        Log( EFalse, _L("SetVideoExtent err1 = %d"), err1 );
+        Log( EFalse, _L("SetVideoExtent err2 = %d"), err2 );
+        }
+    }
+#endif
 //  End of File
--- a/browserplugins/browseraudiovideoplugin/src/BavpPlugin.cpp	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserplugins/browseraudiovideoplugin/src/BavpPlugin.cpp	Wed Mar 31 21:35:49 2010 +0300
@@ -405,6 +405,11 @@
                            }
                        }
                 } 
+            else if(iBavpController  && iPauseState && (iBavpController->State() == EBavpPaused) && (iIsForeGround))
+                { 
+                iPauseState = EFalse; 
+                iBavpController->PlayL(); 
+                }
 				break; 
         default:
             // Not implemented
--- a/browserui/browser/BrowserAppInc/BrowserAppUi.h	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserui/browser/BrowserAppInc/BrowserAppUi.h	Wed Mar 31 21:35:49 2010 +0300
@@ -33,7 +33,9 @@
 #include <downloadedcontenthandler.h>
 #include "WindowInfoProvider.h"
 #include <browseroverriddensettings.h>
-
+#ifdef BRDO_IAD_UPDATE_ENABLED_FF
+#include <iaupdateobserver.h>
+#endif
 // FORWARD DECLARATIONS
 class CBrowserViewBase;
 class MCommsModel;
@@ -74,7 +76,10 @@
 
 
 class CBrowserPushMtmObserver;
-
+#ifdef BRDO_IAD_UPDATE_ENABLED_FF
+class CIAUpdate; 
+class CIAUpdateParameters;
+#endif
 // CLASS DECLARATION
 
 /**
@@ -88,6 +93,9 @@
                       public MConnectionStageObserver,
                       public MDownloadedContentHandler,
                       public MWindowInfoProvider
+					#ifdef BRDO_IAD_UPDATE_ENABLED_FF
+                     ,public MIAUpdateObserver
+					#endif
     {
     public:     // Constructors and destructor
         /**
@@ -709,6 +717,12 @@
     public:
         void StopConnectionObserving();
 
+#ifdef BRDO_OCC_ENABLED_FF
+        //Retry flags
+        void SetRetryFlag(TBool flag);
+        TBool GetRetryFlag();
+#endif
+
 	private:    
 	
         /**
@@ -783,8 +797,85 @@
         * @param none
         */		
 		void StartFetchHomePageL();		
+		
+#ifdef BRDO_OCC_ENABLED_FF
+        //For Call back for reconnectivity
+        static TInt RetryConnectivity(TAny* aCBrowserAppUi);
+        TInt RetryInternetConnection();		
+#endif
 
-		
+#ifdef BRDO_IAD_UPDATE_ENABLED_FF
+		/**
+        * Check updates
+        */
+        void CheckUpdatesL(); 
+
+        /**
+        * Clean IAD update parameters
+        */
+        void CleanUpdateParams(); 
+
+        /**
+        * This callback function is called when the update checking operation has completed.
+        *
+        * @param aErrorCode The error code of the observed update operation.
+        *                   KErrNone for successful completion,
+        *                   otherwise a system wide error code.
+        * @param aAvailableUpdates Number of the updates that were found available.
+        */
+        void CheckUpdatesComplete( TInt aErrorCode, TInt aAvailableUpdates );
+
+        /**
+        * This callback function is called when an update operation has completed.
+        *
+        * @param aErrorCode The error code of the completed update operation.
+        *                   KErrNone for successful completion,
+        *                   otherwise a system wide error code.
+        * @param aResult Details about the completed update operation.
+        *                Ownership is transferred.
+        */
+        void UpdateComplete( TInt aErrorCode, CIAUpdateResult* aResultDetails );
+
+		/**
+        * This callback function is called when an update query operation has completed.
+        *
+        * @param aErrorCode The error code of the observed query operation.
+        *                   KErrNone for successful completion,
+        *                   otherwise a system wide error code.
+        * @param aUpdateNow ETrue informs that an update operation should be started.
+        *                   EFalse informs that there is no need to start an update
+        *                   operation.
+        */
+        void UpdateQueryComplete( TInt aErrorCode, TBool aUpdateNow ){return;}
+
+        /**
+        * This function is checking the existence of the file containing last update time
+        * @param None
+        * @return TBool.
+        */
+        TBool CheckUpdateFileAvailable();
+        
+        /**
+        * This function is deleting of the file(if exist) containing last update time
+        * @param None
+        * @return None.
+        */
+        void DeleteUpdateFile();
+        
+        /**
+        * This function is will write the current time in file
+        * @param None
+        * @return None.
+        */
+        void WriteUpdateFile();
+        
+        /**
+        * This function will read the content of the file if it exists
+        * @param None
+        * @return TBool.
+        */
+        TInt64 ReadUpdateFile();
+#endif		    
 	protected:
 
         /**
@@ -984,6 +1075,17 @@
 		
 		TBool iBrowserAlreadyRunning; 
 		
+#ifdef BRDO_OCC_ENABLED_FF
+        CPeriodic *iRetryConnectivity;
+        TBool reConnectivityFlag;
+#endif		
+
+#ifdef BRDO_IAD_UPDATE_ENABLED_FF		
+        CIAUpdate* iUpdate;  
+        CIAUpdateParameters* iParameters; 
+        RFs iFs;
+#endif        
+        
 	protected:
 
 		CBrowserCommsModel* iCommsModel;
--- a/browserui/browser/BrowserAppSrc/BrowserAppUi.cpp	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserui/browser/BrowserAppSrc/BrowserAppUi.cpp	Wed Mar 31 21:35:49 2010 +0300
@@ -107,6 +107,12 @@
 
 #include "BrowserPushMtmObserver.h"
 
+#ifdef BRDO_IAD_UPDATE_ENABLED_FF
+#include <iaupdate.h>
+#include <iaupdateparameters.h>
+#include <iaupdateresult.h>
+#endif
+
 //CONSTANTS
 const TUint KBookmarkId = 1;
 const TUint KUrlId = 4;
@@ -124,6 +130,14 @@
 
 const TInt KMinimumCDriveDiskSpace = 512 * 1024;
 
+const TInt KRetryConnectivityTimeout( 2*1000*1000 ); // 2 seconds
+
+#ifdef BRDO_IAD_UPDATE_ENABLED_FF
+const TUint KBrowser8xUID = 0x200267CC;
+_LIT( KUpdateFileName, "lastupdatechecked.txt" );
+const TInt64 KMaxTimeToPostponeUpdate = 604800000000;
+#endif
+
 // ================= MEMBER FUNCTIONS =======================
 
 // -----------------------------------------------------------------------------
@@ -158,6 +172,10 @@
     {
     LOG_ENTERFN("CBrowserAppUi::~CBrowserAppUi");
 
+#ifdef BRDO_IAD_UPDATE_ENABLED_FF
+    iFs.Close();
+#endif
+    
     SetExitInProgress( ETrue );
     if(iBrowserAsyncExit)
     	{
@@ -234,6 +252,9 @@
 
     iFavouritesSess.Close();
     LOG_WRITE( " iFavouritesSess.Close() deleted" );
+#ifdef BRDO_IAD_UPDATE_ENABLED_FF
+    CleanUpdateParams(); 
+#endif
     }
 
 // -----------------------------------------------------------------------------
@@ -264,11 +285,159 @@
 		iStartedUp = EFalse;
 		LOG_WRITE( "Browser started embedded" );
 		}
-
+#ifdef BRDO_IAD_UPDATE_ENABLED_FF
+    User::LeaveIfError(iFs.Connect());
+    // Check updates from IAD, continue UI launching even if something fails there  
+    TRAP_IGNORE( CheckUpdatesL() );
+#endif
+        
 PERFLOG_STOP_WRITE("BrowserUI::ConstructL");
 
     }
-
+#ifdef BRDO_IAD_UPDATE_ENABLED_FF
+// ---------------------------------------------------------
+// CBrowserAppUi::CheckUpdatesL
+// ---------------------------------------------------------
+void CBrowserAppUi::CheckUpdatesL()
+    {
+    LOG_ENTERFN("CBrowserAppUi::CheckUpdatesL");
+    LOG_WRITE( "CBrowserAppUi::CheckUpdatesL() entering" );
+    if ( FeatureManager::FeatureSupported( KFeatureIdIAUpdate ) )
+        {
+        LOG_WRITE( "CBrowserAppUi::CheckUpdatesL() IAD Update supported" );
+        TRAP_IGNORE( iUpdate = CIAUpdate::NewL( *this ) );
+        LOG_WRITE( "CBrowserAppUi::CheckUpdatesL() IAD Update Client Created" );
+        if ( iUpdate )
+            {
+            LOG_WRITE( "CBrowserAppUi::CheckUpdatesL() creating IAD Update paramentes" );
+            iParameters = CIAUpdateParameters::NewL();
+            // Search for updates using SIS package UID
+            iParameters->SetUid( TUid::Uid( KBrowser8xUID ) );
+            //check the updates
+            iUpdate->CheckUpdates( *iParameters );
+            }
+        }
+    LOG_WRITE( "CBrowserAppUi::CheckUpdatesL() exiting" );
+    }
+
+// ---------------------------------------------------------
+// CBrowserAppUi::CheckUpdatesComplete
+// rest of the details commented in the header
+// ---------------------------------------------------------
+//
+void CBrowserAppUi::CheckUpdatesComplete( TInt aErrorCode, TInt aAvailableUpdates )
+    {
+    LOG_ENTERFN("CBrowserAppUi::CheckUpdatesComplete");
+    LOG_WRITE( "CBrowserAppUi::CheckUpdatesComplete - Entry" );
+    TInt err;
+    TBool result;
+    TBool showDialog = EFalse;
+
+    if ( aErrorCode == KErrNone )
+        {
+		if ( aAvailableUpdates > 0 )
+            {
+            LOG_WRITE( "CBrowserAppUi::CheckUpdatesComplete - update available" );
+            //Check if the file is available in folder or not
+            if(CheckUpdateFileAvailable())
+                {
+                LOG_WRITE( "CBrowserAppUi::CheckUpdatesComplete - update file available" );
+                TTime timenow;
+                timenow.HomeTime();
+                TInt64 time = timenow.Int64();
+                TInt64 dataValue = ReadUpdateFile();
+                //If the diference of the current time and the Previous Check time is more than 1 Week
+                //then show the dialog
+                if((time - dataValue)>KMaxTimeToPostponeUpdate)
+                    {
+                    LOG_WRITE( "CBrowserAppUi::CheckUpdatesComplete - diference of the current time and the time available in th file is more than 7 days" );
+                    showDialog = ETrue;
+                    }
+                }
+            else
+                {
+                LOG_WRITE( "CBrowserAppUi::CheckUpdatesComplete - update file is not available" );
+                showDialog = ETrue;
+                }
+                    
+            if(showDialog)
+                {
+                HBufC* message = StringLoader::LoadLC(R_INSTALL_ADDON_BROWSER);
+                HBufC* lsc_now = StringLoader::LoadLC(R_INSTALL_BROWSER_NOW);
+                HBufC* rsc_later = StringLoader::LoadLC(R_INSTALL_BROWSER_LATER);
+                
+                TRAPD(err, result = iDialogsProvider->DialogConfirmL(_L(""),
+                *message,
+                *lsc_now,
+                *rsc_later));
+                                   
+                CleanupStack::PopAndDestroy(3); //message, lsc_now, rsc_later
+                
+                if (err != KErrNone)
+                    {
+                    return ;
+                    }
+                if ( result )  //  user selected NOW
+                    {
+                    LOG_WRITE( "CBrowserAppUi::CheckUpdatesComplete - if file exists, just delete it." );
+                    // if file exists, just delete it.
+                    DeleteUpdateFile();
+                    iUpdate->ShowUpdates( *iParameters );
+                    }
+                if ( !result )  // user selected LATER
+                    {
+                    LOG_WRITE( "CBrowserAppUi::CheckUpdatesComplete - create the file and store the current time." );
+                    //create the file and store the current time.
+                    WriteUpdateFile();
+                    }
+                }
+            LOG_WRITE( "CBrowserAppUi::CheckUpdatesComplete - update available" );
+            }
+        else
+            {
+            LOG_WRITE( "CBrowserAppUi::CheckUpdatesComplete - no update available" );
+            // The answer was 'Later'. CIAUpdate object could be deleted
+            CleanUpdateParams();
+            }
+        }
+    LOG_WRITE( "CBrowserAppUi::CheckUpdatesComplete - Exit" );
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserAppUi::CleanUpdateParams
+// -----------------------------------------------------------------------------
+//
+void CBrowserAppUi::CleanUpdateParams()
+    {
+    LOG_ENTERFN("CBrowserAppUi::CleanUpdateParams");
+    LOG_WRITE( "CBrowserAppUi::CleanUpdateParams() entering" );
+    if(iUpdate)
+        {
+        delete iUpdate;
+        iUpdate = NULL;
+        }
+    if(iParameters)
+        {
+        delete iParameters;
+        iParameters = NULL;
+        }
+    LOG_WRITE( "CBrowserAppUi::CleanUpdateParams() exiting" );
+    }
+
+// ---------------------------------------------------------
+// CBrowserAppUi::UpdateComplete
+// rest of the details commented in the header
+// ---------------------------------------------------------
+//
+void CBrowserAppUi::UpdateComplete( TInt aErrorCode, CIAUpdateResult* aResult )
+    {
+    LOG_ENTERFN("CBrowserAppUi::UpdateComplete");
+    LOG_WRITE( "CBrowserAppUi::UpdateComplete - Entry" );
+    delete aResult; // Ownership was transferred, so this must be deleted by the client
+    CleanUpdateParams();
+    LOG_WRITE( "CBrowserAppUi::UpdateComplete - Exit" );
+    }
+#endif
 // -----------------------------------------------------------------------------
 // CBrowserAppUi::InitBrowser()
 // -----------------------------------------------------------------------------
@@ -362,6 +531,10 @@
 
         PERFLOG_STOPWATCH_START;
         iConnStageNotifier = CConnectionStageNotifierWCB::NewL();
+		
+        //this is required, browser's connection oberver should be hit first. (incase of netscape plgins, transactions will be closed.)
+        iConnStageNotifier->SetPriority(CActive::EPriorityHigh);
+
         PERFLOG_STOP_WRITE("\t StageNotif NewL");
         BROWSER_LOG( ( _L( "StageNofier up" ) ) );
 
@@ -483,6 +656,9 @@
 
 	    iPushMtmObserver = CBrowserPushMtmObserver::NewL( this );
 	    iPushMtmObserver->StartObserver();
+#ifdef BRDO_OCC_ENABLED_FF
+        iRetryConnectivity = CPeriodic::NewL(CActive::EPriorityStandard);
+#endif
         } //if (iStartedUp)
     }
 
@@ -1274,12 +1450,6 @@
                  (Preferences().AccessPointSelectionMode() == EAlwaysAsk) )
                 {
                 iRequestedAp = Preferences().DefaultAccessPoint();
-#ifdef BRDO_OCC_ENABLED_FF //Setting ap should not be taken if OCC is enabled, instead bookmark ap should be taken
-#ifndef __WINS__
-                iRequestedAp = aAccessPoint.ApId();
-                BROWSER_LOG( ( _L( "Bookmark Iap id : %d" ), iRequestedAp ) );
-#endif
-#endif                
                 }
             else if ( Preferences().AccessPointSelectionMode() == EDestination ) 
                 {
@@ -2375,6 +2545,8 @@
         return;
         }
 
+    BROWSER_LOG( ( _L( " CBrowserAppUi::ConnNeededStatusL First Stop Connection Observer" ) ) );
+    StopConnectionObserving(); //Need to stop the connection observer first
 
 
     if ( !iConnStageNotifier->IsActive() )
@@ -2382,8 +2554,9 @@
         BROWSER_LOG( ( _L( " CBrowserAppUi::ConnNeededStatusL Starting Connection Observer" ) ) );
         TName* connectionName = Connection().ConnectionNameL();
         CleanupStack::PushL( connectionName );
-        iConnStageNotifier->StartNotificationL(
-            connectionName, KConnectionUninitialised, this);
+
+        iConnStageNotifier->StartNotificationL(connectionName, KLinkLayerClosed, this);
+
         CleanupStack::PopAndDestroy();  //connectionName
         }
     }
@@ -2432,7 +2605,88 @@
         }
     return buf;
     }
-
+	
+#ifdef BRDO_OCC_ENABLED_FF
+// -----------------------------------------------------------------------------
+// CBrowserContentView::SetRetryFlag
+// -----------------------------------------------------------------------------
+//
+void CBrowserAppUi::SetRetryFlag(TBool flag)
+     {
+     LOG_ENTERFN("CBrowserAppUi::SetRetryFlag");
+     BROWSER_LOG( ( _L(" CBrowserAppUi::SetRetryFlag flag: %d"), flag ) );
+     reConnectivityFlag = flag;
+     }
+
+// -----------------------------------------------------------------------------
+// CBrowserContentView::GetRetryFlag
+// -----------------------------------------------------------------------------
+//
+ TBool CBrowserAppUi::GetRetryFlag()
+      {
+      LOG_ENTERFN("CBrowserAppUi::GetRetryFlag");
+      BROWSER_LOG( ( _L(" CBrowserAppUi::GetRetryFlag flag: %d"), reConnectivityFlag ) );
+      return reConnectivityFlag;
+      }
+	  
+// -----------------------------------------------------------------------------
+// CBrowserContentView::RetryConnectivity
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserAppUi::RetryConnectivity(TAny* aCBrowserAppUi)
+    {
+    LOG_ENTERFN("CBrowserAppUi::RetryConnectivity");
+    __ASSERT_DEBUG(aCBrowserAppUi, Util::Panic( Util::EUninitializedData ));
+  
+    TInt err = ((CBrowserAppUi*)aCBrowserAppUi)->RetryInternetConnection();
+    
+    BROWSER_LOG( ( _L(" CBrowserAppUi::RetryConnectivity Error: %d"), err ) );
+    return err;
+    }
+	
+TInt CBrowserAppUi::RetryInternetConnection()
+    {
+    LOG_ENTERFN("CBrowserAppUi::RetryInternetConnection");
+    //First cancel the timer
+    if ( iRetryConnectivity && iRetryConnectivity->IsActive() )
+    {
+        iRetryConnectivity->Cancel();
+        BROWSER_LOG( ( _L( "CBrowserAppUi::RetryInternetConnection Timer Cancelled successfully " ) ) );
+    }
+    TInt err = KErrNone;
+    if ( !iConnection->Connected() )
+       {
+       TRAP_IGNORE( err = iConnection->StartConnectionL( ETrue ) );
+       }
+    if( err == KErrNone )
+       { 
+       BROWSER_LOG( ( _L( "CBrowserAppUi::RetryInternetConnection Connection restablished successfully " ) ) );
+       
+       BROWSER_LOG( ( _L( "CBrowserAppUi::RetryInternetConnection UNSET retry flags " ) ) );
+       TRAP_IGNORE( BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandUnSetRetryConnectivityFlag + (TInt)TBrCtlDefs::ECommandIdBase ) );
+       SetRetryFlag(EFalse);
+       
+       TRAP_IGNORE(ConnNeededStatusL(err)); //Start the observer again
+       TRAP_IGNORE( BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandRetryTransactions + (TInt)TBrCtlDefs::ECommandIdBase ) );
+       //Let download manager knows about this new connection
+       TRAP_IGNORE( BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandConnToDownloadManager + (TInt)TBrCtlDefs::ECommandIdBase ) );
+       }
+    else
+        {
+        BROWSER_LOG( ( _L( "CBrowserAppUi::RetryInternetConnection Connection failed " ) ) );
+        BROWSER_LOG( ( _L( "CBrowserAppUi::RetryInternetConnection unset retry flags " ) ) );
+        TRAP_IGNORE( BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandUnSetRetryConnectivityFlag + (TInt)TBrCtlDefs::ECommandIdBase ) );
+        SetRetryFlag(EFalse);
+        BROWSER_LOG( ( _L( "CBrowserAppUi::RetryInternetConnection clear queued transactions " ) ) );
+        TRAP_IGNORE( BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandClearQuedTransactions + (TInt)TBrCtlDefs::ECommandIdBase ) );
+        Display().StopProgressAnimationL(); //Stop Progress animation
+        iDialogsProvider->UploadProgressNoteL(0, 0, ETrue, (MBrowserDialogsProviderObserver *)this ); //Close the uploading dialog.
+        iDialogsProvider->CancelAll(); //connection has been lost, so cancel the authentication dialog.
+        }
+    
+    return err;
+    }
+#endif
 
 // -----------------------------------------------------------------------------
 // CBrowserAppUi::ConnectionStageAchievedL()
@@ -2440,6 +2694,24 @@
 //
 void CBrowserAppUi::ConnectionStageAchievedL()
     {
+#ifdef BRDO_OCC_ENABLED_FF
+    LOG_ENTERFN("CBrowserAppUi::ConnectionStageAchievedL");
+    //Disconnect first
+    BROWSER_LOG( ( _L( "CBrowserAppUi::ConnectionStageAchievedL Disconnecting..." ) ) );
+    iConnection->Disconnect();
+
+    BROWSER_LOG( ( _L( "CBrowserAppUi::ConnectionStageAchievedL Some transactions are on-going. Need to reconnect. " ) ) );
+    BROWSER_LOG( ( _L( "CBrowserAppUi::ConnectionStageAchievedL Set retry flags " ) ) );
+    TRAP_IGNORE( BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandSetRetryConnectivityFlag + (TInt)TBrCtlDefs::ECommandIdBase ) );
+    SetRetryFlag(ETrue);    
+    
+    if( iRetryConnectivity && iRetryConnectivity->IsActive())
+       {
+       iRetryConnectivity->Cancel();
+       }
+    iRetryConnectivity->Start(KRetryConnectivityTimeout, 0,TCallBack(RetryConnectivity,this));
+
+#else
     // this function is called only when network is lost
     // because we set notifier for KAgentUnconnected only
     Display().StopProgressAnimationL();
@@ -2456,6 +2728,7 @@
     // not needed as by that point HTTPSession was already shutdown by executing disconnect menu option
     // will cause a crash when user tries to quickly reconnect right after disconnecting, as HTTP session
     // is starting to initialize, while this call is trying to close it.
+#endif
     }
 
 
@@ -4205,5 +4478,102 @@
         CloseContentViewL();
         }                
     }
-
+#ifdef BRDO_IAD_UPDATE_ENABLED_FF
+// ---------------------------------------------------------
+// CBrowserAppUi::CheckUpdateFileAvailable
+// ---------------------------------------------------------
+TBool CBrowserAppUi::CheckUpdateFileAvailable()
+    {
+    TBuf<KMaxFileName> privatePath;
+    TBuf<KMaxFileName> updateFileName;
+    iFs.PrivatePath( privatePath );
+    updateFileName.Copy( privatePath );
+    updateFileName.Append( KUpdateFileName );
+    RFile updatefile;   
+    TInt err = updatefile.Open( iFs, updateFileName, EFileRead );
+    if ( err == KErrNotFound ) 
+        {
+        LOG_WRITE( "CBrowserAppUi::CheckUpdateFileAvailable - update file not available" );
+        return EFalse;
+        }
+    else
+        {
+        LOG_WRITE( "CBrowserAppUi::CheckUpdateFileAvailable - update file available" );
+        updatefile.Close();
+        }
+    return ETrue;       
+    }
+
+// ---------------------------------------------------------
+// CBrowserAppUi::WriteUpdateFile
+// ---------------------------------------------------------
+void CBrowserAppUi::WriteUpdateFile()
+    {
+    TBuf<KMaxFileName> privatePath;
+    TBuf<KMaxFileName> updateFileName;
+    iFs.PrivatePath( privatePath );
+    updateFileName.Copy( privatePath );
+    updateFileName.Append( KUpdateFileName );
+    RFile updatefile;
+    TInt err = updatefile.Open( iFs, updateFileName, EFileWrite | EFileShareExclusive );
+    if(err == KErrNotFound)
+        {
+        LOG_WRITE( "CBrowserAppUi::WriteUpdateFile - update file not available so create it" );
+        err = updatefile.Create( iFs, updateFileName, EFileWrite | EFileShareExclusive );
+        }
+    //Get the current time
+    TTime timenow;
+    timenow.HomeTime();
+    TInt64 time = timenow.Int64();
+    TBuf8<50> data;
+    data.AppendNum(time);
+    LOG_WRITE( "CBrowserAppUi::WriteUpdateFile - write the current time in update file" );
+    updatefile.Write(data);
+    updatefile.Close();
+    }
+
+// ---------------------------------------------------------
+// CBrowserAppUi::DeleteUpdateFile
+// ---------------------------------------------------------
+void CBrowserAppUi::DeleteUpdateFile()
+    {
+    TBuf<KMaxFileName> privatePath;
+    TBuf<KMaxFileName> updateFileName;
+    iFs.PrivatePath( privatePath );
+    updateFileName.Copy( privatePath );
+    updateFileName.Append( KUpdateFileName );
+    iFs.Delete(updateFileName);  
+    }
+
+// ---------------------------------------------------------
+// CBrowserAppUi::ReadUpdateFile
+// ---------------------------------------------------------
+TInt64 CBrowserAppUi::ReadUpdateFile()
+    {
+    TBool returnvalue = ETrue;
+    TBuf<KMaxFileName> privatePath;
+    TBuf<KMaxFileName> updateFileName;
+    //Get the private path then append the filename
+    iFs.PrivatePath( privatePath );
+    updateFileName.Copy( privatePath );
+    updateFileName.Append( KUpdateFileName );
+    RFile updatefile;
+    TInt err = updatefile.Open( iFs, updateFileName, EFileRead );
+    TInt64 dataValue = 0;
+    //If file is found
+    if ( err != KErrNotFound ) 
+        {
+        TBuf8<50> readBuf;
+        err = updatefile.Read(readBuf);
+        updatefile.Close();
+        if((err == KErrNone) && (readBuf.Length()>NULL))
+            {
+            //Convert from TBuf8 to TInt64
+            TLex8 lex(readBuf);
+            lex.Val(dataValue);
+            }
+        }        
+    return dataValue;
+    }
+#endif
 // End of File
--- a/browserui/browser/BrowserAppSrc/BrowserGotoPane.cpp	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserui/browser/BrowserAppSrc/BrowserGotoPane.cpp	Wed Mar 31 21:35:49 2010 +0300
@@ -110,10 +110,10 @@
             SetSearchTextL( KNullDesC );
             }
         }
-
+    
+    SetPointerCapture(aVisible);
     if (AknLayoutUtils::PenEnabled() &&  ( !iSearchEditor )  )
-        {
-        SetPointerCapture(aVisible);
+        {      
         if (aVisible)
             {
             ActivateVKB();
--- a/browserui/browser/BrowserAppSrc/BrowserPreferences.cpp	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserui/browser/BrowserAppSrc/BrowserPreferences.cpp	Wed Mar 31 21:35:49 2010 +0300
@@ -545,11 +545,8 @@
     TInt ap;
 
     // Read Accesss point selection mode for advanced settings
-#ifdef BRDO_OCC_ENABLED_FF
-    const TInt selectionMode = EBrowserCenRepApSelModeAlwaysAsk;
-#else
     const TInt selectionMode = GetIntValue( KBrowserAccessPointSelectionMode );
-#endif
+
     switch ( selectionMode )
         {
         case EBrowserCenRepApSelModeUserDefined:
--- a/browserui/browser/BrowserAppSrc/BrowserSpecialLoadObserver.cpp	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserui/browser/BrowserAppSrc/BrowserSpecialLoadObserver.cpp	Wed Mar 31 21:35:49 2010 +0300
@@ -125,6 +125,15 @@
 	__ASSERT_DEBUG( (aNewConn != NULL), Util::Panic( Util::EUninitializedData ) );
 	__ASSERT_DEBUG( (aBearerType != NULL), Util::Panic( Util::EUninitializedData ) );
 	
+#ifdef BRDO_OCC_ENABLED_FF
+	TBool retryFlag = CBrowserAppUi::Static()->GetRetryFlag();
+	if( retryFlag )
+	    {
+	    BROWSER_LOG((_L("Retry is in progress")));
+	    return;
+	    }
+#endif
+	
     iApiProvider->SetProgressShown( ETrue );
     TBool query( EFalse );
     if( iApiProvider->Connection().Connected() )
@@ -143,7 +152,7 @@
         TBool isValid( EFalse );
         TUint32 ap( 0 );
         TInt err( KErrNone );
-#ifndef BRDO_OCC_ENABLED_FF
+
 		BROWSER_LOG((_L("AP selectionMode: %d."),
     	iApiProvider->Preferences().AccessPointSelectionMode() ));
 
@@ -259,9 +268,7 @@
         		BROWSER_LOG((_L("wrong type of connection")));	
         		}
         	} //switch
-#else //BRDO_OCC_ENABLED_FF
-        isValid = ETrue; 
-#endif //BRDO_OCC_ENABLED_FF
+
 		BROWSER_LOG((_L("isValid 2: %d"), isValid));
         if( isValid )
             {
--- a/browserui/browser/FavouritesSrc/BrowserBookmarksView.cpp	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserui/browser/FavouritesSrc/BrowserBookmarksView.cpp	Wed Mar 31 21:35:49 2010 +0300
@@ -1524,7 +1524,10 @@
                 {
                 aMenuPane->SetItemDimmed( EWmlCmdMoveToFolder, ETrue );
                 }
-            const CFavouritesItem* item =  TheContainer()->Listbox()->CurrentItem();
+            const CFavouritesItem* item;
+            if(TheContainer() && TheContainer()->Listbox()) 
+               item =  TheContainer()->Listbox()->CurrentItem();
+               
             if  ( ( item ) &&
                   ( ( item->Uid() == KFavouritesAdaptiveItemsFolderUid ) ||
                     ( item->ContextId() != NULL ) )
@@ -2195,7 +2198,10 @@
     {
     Toolbar()->SetItemDimmed( EWmlCmdAddBookmark, aDimButtons , ETrue );
     Toolbar()->SetItemDimmed( EWmlCmdGoToAddress, aDimButtons , ETrue );
+    Toolbar()->SetItemDimmed( EWmlCmdGoToAddressAndSearch, aDimButtons , ETrue );
+#ifndef BRDO_SINGLE_CLICK_ENABLED_FF
     Toolbar()->SetItemDimmed( EWmlCmdDelete, aDimButtons , ETrue );
+#endif
     if (!aDimButtons)
         {
         // when undimming buttons we may not want them all back on
--- a/browserui/browser/FeedsInc/FeedsEditFeedDialog.h	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserui/browser/FeedsInc/FeedsEditFeedDialog.h	Wed Mar 31 21:35:49 2010 +0300
@@ -271,6 +271,8 @@
         TInt                      iPreviousFreq;
         TInt                      iSelectedDlgLine;
         TBool                     iActionCancelled;
+        TBool                     iDrag;
+        TPointerEvent             iPointerEvent;
 	};
 
 #endif      // FEEDS_EDIT_FEED_DIALOG_H
--- a/browserui/browser/FeedsSrc/FeedsEditFeedDialog.cpp	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserui/browser/FeedsSrc/FeedsEditFeedDialog.cpp	Wed Mar 31 21:35:49 2010 +0300
@@ -40,6 +40,7 @@
 #include <AknRadioButtonSettingPage.h>
 
 #include "FeedsEditFeedDialog.h"
+#define   pixelOffset   36
 
 //Constants
 const TInt KAutoUpdatingOff = 0;
@@ -135,11 +136,30 @@
         }
     else
         {
-        CAknForm::HandlePointerEventL(aPointerEvent);
-        if ((iSelectedDlgLine == EFeedsEditAutomaticUpdatingId) && (aPointerEvent.iType == TPointerEvent::EButton1Up))
+        CAknForm::HandlePointerEventL(aPointerEvent);        
+        if ( aPointerEvent.iType == TPointerEvent::EButton1Down)
             {
-            HandleFreqCmdL();
+                iPointerEvent =  aPointerEvent;
             }
+        else if ( aPointerEvent.iType == TPointerEvent::EDrag )
+                 {
+                 if((Abs(iPointerEvent.iPosition.iX - aPointerEvent.iPosition.iX) > pixelOffset ) ||
+                    (Abs(iPointerEvent.iPosition.iY - aPointerEvent.iPosition.iY) > pixelOffset ))
+                     {
+                         iDrag = ETrue;
+                     }
+                 }
+        else if ((iSelectedDlgLine == EFeedsEditAutomaticUpdatingId) && (aPointerEvent.iType == TPointerEvent::EButton1Up))
+                 {
+                 if(!iDrag)
+                    {
+                        HandleFreqCmdL();
+                    }
+                 else
+                    {
+                        iDrag = EFalse;
+                    }
+                 }
         }
     }
 
--- a/browserui/browser/Group/BrowserNG.mmp	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserui/browser/Group/BrowserNG.mmp	Wed Mar 31 21:35:49 2010 +0300
@@ -84,3 +84,6 @@
 LIBRARY         touchfeedback.lib
 #endif // RD_TACTILE_FEEDBACK
 LIBRARY         AknLayout2Scalable.lib
+#ifdef BRDO_IAD_UPDATE_ENABLED_FF
+LIBRARY     iaupdateapi.lib
+#endif
--- a/browserui/browser/SettingsSrc/SettingsContainer.cpp	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserui/browser/SettingsSrc/SettingsContainer.cpp	Wed Mar 31 21:35:49 2010 +0300
@@ -370,10 +370,8 @@
     // Default Access Point
     if ( !ApiProvider().Preferences().CustomAccessPointDefined() )
         {
-        #if !defined(BRDO_OCC_ENABLED_FF)
         //Access point setting is not required if OCC is enabled
         AppendDefaultAccessPointL( itemArray, itemText );
-        #endif
         }
 
     // Home Page
--- a/browserui/browser/SrcData/Browser.rss	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserui/browser/SrcData/Browser.rss	Wed Mar 31 21:35:49 2010 +0300
@@ -23,7 +23,7 @@
 NAME    SERV // for Services
 
 //  INCLUDES
-
+#include <browser_platform_variant.hrh>
 #include "WmlBrowserBuild.h"
 #include <apcaptionfile.rh>
 #include <eikon.rh>
@@ -39,6 +39,9 @@
 #include <CommonDialogs.hrh>
 #include <CommonDialogs.rh>
 #include <data_caging_paths_strings.hrh>
+#ifdef BRDO_IAD_UPDATE_ENABLED_FF
+#include <iaupdate.loc>
+#endif
 
 RESOURCE RSS_SIGNATURE { }
 
@@ -933,4 +936,8 @@
 RESOURCE TBUF r_browsers_sett_web_search_provider { buf = qtn_browsers_sett_web_search_provider; }
 RESOURCE TBUF r_is_web_search { buf = qtn_is_web_search; }
 RESOURCE TBUF r_is_label_not_selected { buf = qtn_is_label_not_selected; } 
-
+#ifdef BRDO_IAD_UPDATE_ENABLED_FF
+RESOURCE TBUF r_install_addon_browser      { buf = qtn_install_addon_browser; }
+RESOURCE TBUF r_install_browser_now                    { buf = qtn_swupdate_now; }
+RESOURCE TBUF r_install_browser_later                   { buf = qtn_swupdate_later ; }
+#endif
Binary file browserui/browser/help/data/xhtml.zip has changed
--- a/browserui/browser/help/inc/browser.hlp.hrh	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserui/browser/help/inc/browser.hlp.hrh	Wed Mar 31 21:35:49 2010 +0300
@@ -1,10 +1,23 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* 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:
+*
+*/
+	
 //
-// browser.hlp.hrh
-// 
-
-//
-// File generated by CSXHelp Utilities on 2009-05-26
-// 
+// browser.hlp.hrh generated by CSXHelp Utilities.
+//           
 
 #ifndef __BROWSER_HLP_HRH__
 #define __BROWSER_HLP_HRH__
@@ -25,5 +38,6 @@
 _LIT(KOSS_HLP_SETTINGS_FOLDERS, "OSS_HLP_SETTINGS_FOLDERS"); // 
 _LIT(KOSS_HLP_RSS_MAIN, "OSS_HLP_RSS_MAIN"); // 
 _LIT(KOSS_HLP_SHORTCUTS, "OSS_HLP_SHORTCUTS"); // 
+_LIT(KOSS_HLP_KEYPAD, "OSS_HLP_KEYPAD"); // 
 
 #endif 
\ No newline at end of file
--- a/browserui/browser/loc/WmlBrowser.loc	Mon Mar 15 12:40:52 2010 +0200
+++ b/browserui/browser/loc/WmlBrowser.loc	Wed Mar 31 21:35:49 2010 +0300
@@ -3221,4 +3221,9 @@
 //r: 5.0
 //
 #define qtn_is_recommendations "Here and Now"
+
+//d: Confirmation to install add-on browser
+//l: popup_note_window
+//r: 7.2
+#define qtn_install_addon_browser  "A new browser is available.  Would you like to install it?"
 // End of File
--- a/package_definition.xml	Mon Mar 15 12:40:52 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<SystemDefinition schema="3.0.0">
-  <package id="webuis" name="Web UIs" levels="plugin app">
-    <collection id="browserui" name="Browser UI" level="app">
-      <component id="browser" filter="s60" name="Browser">
-        <unit bldFile="browserui/browser/group"/>
-      </component>
-      <component id="operatormenu" filter="s60" name="Browser Operator Menu">
-        <unit bldFile="browserui/operatormenu/group"/>
-      </component>
-      <component id="videoservices" filter="s60" name="Browser Video Services">
-        <unit bldFile="browserui/videoservices/group"/>
-      </component>
-    </collection>
-    <collection id="browserplugins" name="Browser Plugins" level="plugin">
-      <component id="browsersysteminfoplugin" filter="s60" name="Browser System Info Plugin" class="plugin">
-        <unit bldFile="browserplugins/browsersysteminfoplugin/group"/>
-      </component>
-      <component id="browsergpsplugin" filter="s60" name="Browser GPS Plugin" class="plugin">
-        <unit bldFile="browserplugins/browsergpsplugin/group"/>
-      </component>
-      <component id="browseraudiovideoplugin" filter="s60" name="Browser Audio Video Plugin" class="plugin">
-        <unit bldFile="browserplugins/browseraudiovideoplugin/group"/>
-      </component>
-      <component id="browserplugins_build" filter="s60" name="Browser Plugins Build">
-		<!-- can the #ifdef in this be handled elsewhere? -->
-        <unit bldFile="browserplugins/group"/>
-      </component>
-    </collection>
-    <collection id="pushmtm" name="Push MTM" level="plugin">
-      <component id="pushmtm_help" filter="s60" name="Push MTM Help">
-        <unit bldFile="pushmtm/help/group"/>
-      </component>
-      <component id="plugins" filter="s60" name="Push MTM Plugins" class="plugin">
-        <unit bldFile="pushmtm/plugins/group"/>
-      </component>
-      <component id="pushmtm_build" filter="s60" name="Push MTM Build">
-		<!-- can this be distributed into the other components? -->
-        <unit bldFile="pushmtm/group"/>
-      </component>
-    </collection>
-  </package>
-</SystemDefinition>
--- a/pushmtm/Group/PushMtmUi.mmp	Mon Mar 15 12:40:52 2010 +0200
+++ b/pushmtm/Group/PushMtmUi.mmp	Wed Mar 31 21:35:49 2010 +0300
@@ -100,6 +100,7 @@
 LIBRARY         PushMtmUtil.lib
 LIBRARY         PushMsgEntry.lib
 LIBRARY         SISLPushMsgUtils.lib
+LIBRARY         CENTRALREPOSITORY.lib
 
 #ifdef __SERIES60_HELP
 LIBRARY         hlplch.lib // for "Help" options menu
--- a/pushmtm/MtmUiInc/PushMessageInfoDialog.h	Mon Mar 15 12:40:52 2010 +0200
+++ b/pushmtm/MtmUiInc/PushMessageInfoDialog.h	Wed Mar 31 21:35:49 2010 +0300
@@ -118,6 +118,8 @@
         // The following members help wrapping text.
         const CFont* iSecondColumnFont; ///< Reference to the font. Not owned.
         TInt         iSecondColumnWidth;
+        TInt         iPushSLEnabled;
+;
     };
 
 #endif // PUSHMESSAGEINFODIALOG_H
--- a/pushmtm/MtmUiInc/PushMtmUi.h	Mon Mar 15 12:40:52 2010 +0200
+++ b/pushmtm/MtmUiInc/PushMtmUi.h	Wed Mar 31 21:35:49 2010 +0300
@@ -360,6 +360,8 @@
         * Get the resource file name for this MTM UI.
         */
         void GetResourceFileName( TFileName& aFileName ) const;
+    private:
+        TInt   iPushSLEnabled;
     };
 
 #endif // PUSHMTMUI_H
--- a/pushmtm/MtmUiInc/PushSettingsDialog.h	Mon Mar 15 12:40:52 2010 +0200
+++ b/pushmtm/MtmUiInc/PushSettingsDialog.h	Wed Mar 31 21:35:49 2010 +0300
@@ -263,6 +263,7 @@
         HBufC*              iPreviousTitleText;             ///< Restore it on termination. Has.
         TBool               iRestoreSP;     /**< EFalse, if it is not necessary 
                                             * to restore status pane. */
+        TInt                iPushSLEnabled;        
     };
 
 #endif // PUSHSETTINGSDIALOG_H
--- a/pushmtm/MtmUiSrc/PushMessageInfoDialog.cpp	Mon Mar 15 12:40:52 2010 +0200
+++ b/pushmtm/MtmUiSrc/PushMessageInfoDialog.cpp	Wed Mar 31 21:35:49 2010 +0300
@@ -39,9 +39,9 @@
 #include <f32file.h>
 #include <AknUtils.h>
 #include <AknBidiTextUtils.h>
-
+#include "PushMtmPrivateCRKeys.h"
+#include <centralrepository.h> 
 // CONSTANTS
-
 LOCAL_D const TInt KNoResource = 0;
 LOCAL_D const TInt KArrayGranularity = 16;
 LOCAL_D const TReal KReal1024 = 1024.0;
@@ -91,12 +91,17 @@
 void CPushMessageInfoDialog::ConstructL( CMsvSession& aMsvSession, TMsvId aId )
     {
     PUSHLOG_ENTERFN("CPushMessageInfoDialog::ConstructL");
-
     __ASSERT_DEBUG( !iListBox &&
                     !iListBoxModel,
                     UiPanic( EPushMtmUiPanAlreadyInitialized ) );
 
     FeatureManager::InitializeLibL();
+    
+    CRepository* PushSL = CRepository::NewL( KCRUidPushMtm );
+    CleanupStack::PushL( PushSL );
+    User::LeaveIfError( PushSL->Get( KPushMtmServiceEnabled , iPushSLEnabled ) );
+    PUSHLOG_WRITE_FORMAT(" iPushSLEnabled: <%d>",iPushSLEnabled);
+    CleanupStack::PopAndDestroy( PushSL ); 
 
     // Add resource file.
     TParse* fileParser = new (ELeave) TParse;
@@ -299,13 +304,11 @@
         msg = CSIPushMsgEntry::NewL();
         PUSHLOG_WRITE(" SI");
         }
-#ifdef __SERIES60_PUSH_SL
-    else if ( bioType == KUidWapPushMsgSL.iUid )
+    else if(iPushSLEnabled && bioType == KUidWapPushMsgSL.iUid)
         {
         msg = CSLPushMsgEntry::NewL();
         PUSHLOG_WRITE(" SL");
         }
-#endif // __SERIES60_PUSH_SL
 #ifdef __SERIES60_PUSH_SP
     else if ( bioType == KUidWapPushMsgUnknown.iUid )
         {
@@ -365,8 +368,7 @@
             CleanupStack::PopAndDestroy( convertedUrl );
             }
         }
-#ifdef __SERIES60_PUSH_SL
-    else if ( msg->PushMsgType() == KUidWapPushMsgSL.iUid )
+    else if ( iPushSLEnabled && msg->PushMsgType() == KUidWapPushMsgSL.iUid )
         {
         CSLPushMsgEntry* sl = STATIC_CAST( CSLPushMsgEntry*, msg );
         const TPtrC url = sl->Url();
@@ -383,7 +385,6 @@
             CleanupStack::PopAndDestroy( convertedUrl );
             }
         }
-#endif // __SERIES60_PUSH_SL
 
     // ************************************************************************
     // Information item: Message body/text (SI specific).
@@ -496,13 +497,11 @@
         CSIPushMsgEntry* si = STATIC_CAST( CSIPushMsgEntry*, msg );
         messageSize = (TReal)si->Text().Size() / KReal1024;
         }
-#ifdef __SERIES60_PUSH_SL
-    else if ( msg->PushMsgType() == KUidWapPushMsgSL.iUid )
+    else if ( iPushSLEnabled && msg->PushMsgType() == KUidWapPushMsgSL.iUid )
         {
         CSLPushMsgEntry* sl = STATIC_CAST( CSLPushMsgEntry*, msg );
         messageSize = (TReal)sl->Url().Size() / KReal1024;
         }
-#endif // __SERIES60_PUSH_SL
 #ifdef __SERIES60_PUSH_SP
     else if ( msg->PushMsgType() == KUidWapPushMsgUnknown.iUid )
         {
--- a/pushmtm/MtmUiSrc/PushMtmUi.cpp	Mon Mar 15 12:40:52 2010 +0200
+++ b/pushmtm/MtmUiSrc/PushMtmUi.cpp	Wed Mar 31 21:35:49 2010 +0300
@@ -44,6 +44,8 @@
 #include <MuiuMsgEditorLauncher.h>
 #include <data_caging_path_literals.hrh>
 #include <f32file.h>
+#include "PushMtmPrivateCRKeys.h"
+#include <centralrepository.h> 
 
 // ================= MEMBER FUNCTIONS =======================
 
@@ -77,6 +79,10 @@
                         CRegisteredMtmDll& aRegisteredMtmDll )
 :   CBaseMtmUi( aBaseMtm, aRegisteredMtmDll )
     {
+    CRepository* PushSL = CRepository::NewL( KCRUidPushMtm );
+    CleanupStack::PushL( PushSL );   
+    User::LeaveIfError( PushSL->Get( KPushMtmServiceEnabled , iPushSLEnabled ) );
+    CleanupStack::PopAndDestroy( PushSL ); 
     }
 
 // ---------------------------------------------------------
@@ -248,10 +254,7 @@
     CMsvOperation* operation = NULL;
 
     if ( 
-         tEntry.iBioType == KUidWapPushMsgSI.iUid 
-#ifdef __SERIES60_PUSH_SL
-         || tEntry.iBioType == KUidWapPushMsgSL.iUid
-#endif // __SERIES60_PUSH_SL
+         tEntry.iBioType == KUidWapPushMsgSI.iUid || (iPushSLEnabled && tEntry.iBioType == KUidWapPushMsgSL.iUid)
        )
         {
         TEditorParameters editorParameters;
--- a/pushmtm/MtmUiSrc/PushSettingsDialog.cpp	Mon Mar 15 12:40:52 2010 +0200
+++ b/pushmtm/MtmUiSrc/PushSettingsDialog.cpp	Wed Mar 31 21:35:49 2010 +0300
@@ -39,7 +39,8 @@
 #include <msvapi.h>
 #include <data_caging_path_literals.hrh>
 #include <f32file.h>
-
+#include "PushMtmPrivateCRKeys.h"
+#include <centralrepository.h> 
 // ================= MEMBER FUNCTIONS =======================
 
 // ---------------------------------------------------------
@@ -75,6 +76,11 @@
 void CPushSettingsDialog::ConstructL()
     {
     // Add resource file.
+    CRepository* PushSL = CRepository::NewL( KCRUidPushMtm );
+    CleanupStack::PushL( PushSL );
+    User::LeaveIfError( PushSL->Get( KPushMtmServiceEnabled , iPushSLEnabled ) );
+    CleanupStack::PopAndDestroy( PushSL ); 
+    
     TParse* fileParser = new (ELeave) TParse;
     // Unnecessary to call CleanupStack::PushL( fileParser );
     fileParser->Set( KPushMtmUiResourceFileAndDrive, &KDC_MTM_RESOURCE_DIR, NULL ); 
@@ -192,15 +198,15 @@
         ( EServiceReception, R_PUSHSD_RECEPT, 
         iModel->ServiceReception() ? R_PUSHSD_RECEP_ON : R_PUSHSD_RECEP_OFF );
 
-#ifdef __SERIES60_PUSH_SL
 
+if(iPushSLEnabled)
+    {
     // Service loading (SL specific).
     ConstructAndAppendItemTextL
         ( EServiceLoadingType, R_PUSHSD_LOADING, 
         ( iModel->ServiceLoadingType() == CPushMtmSettings::EAutomatic ) ? 
         R_PUSHSD_LOAD_AUTOM : R_PUSHSD_LOAD_MAN );
-
-#endif //__SERIES60_PUSH_SL
+    }
     }
 
 // ---------------------------------------------------------
@@ -288,10 +294,9 @@
             break;
             }
 
-#ifdef __SERIES60_PUSH_SL
-
         case EServiceLoadingType:
             {
+            if(iPushSLEnabled){
             if ( iModel->ServiceLoadingType() == CPushMtmSettings::EManual )
                 {
                 // Display a confirmation dialog first.
@@ -306,10 +311,10 @@
                 // Do not show confirmation dialog.
                 iModel->SetServiceLoadingType( CPushMtmSettings::EManual );
                 }
+            }//End iPushSLEnabled
             break;
             }
 
-#endif //__SERIES60_PUSH_SL
 
         default:
             {
@@ -383,13 +388,21 @@
 HBufC* CPushSettingsDialog::ConstructSettingTitleL
 ( const TSettingType aSettingType ) const
     {
-    const TInt titleResId = 
-        aSettingType == EServiceReception           ? R_PUSHSD_RECEPT : 
-#ifdef __SERIES60_PUSH_SL
-        aSettingType == EServiceLoadingType         ? R_PUSHSD_LOADING : 
-#endif //__SERIES60_PUSH_SL
-        KErrNotFound;
+    TInt titleResId = 0;
 
+    if(aSettingType == EServiceReception )
+         titleResId = R_PUSHSD_RECEPT;
+    
+    else if (aSettingType == EServiceLoadingType)
+        {
+        if(iPushSLEnabled )
+            titleResId = R_PUSHSD_LOADING;
+        }
+    
+    else
+        titleResId = KErrNotFound;
+    
+    
     __ASSERT_DEBUG( titleResId != KErrNotFound, 
         UiPanic( EPushMtmUiPanNotInitialized ) );
 
@@ -407,20 +420,25 @@
         TInt& aVal2ResId 
     ) const
     {
-    aVal1ResId = 
-        aSettingType == EServiceReception           ? R_PUSHSD_RECEP_ON : 
-#ifdef __SERIES60_PUSH_SL
-        aSettingType == EServiceLoadingType         ? R_PUSHSD_LOAD_AUTOM : 
-#endif //__SERIES60_PUSH_SL
-        KErrNotFound;
-
-    aVal2ResId = 
-        aSettingType == EServiceReception           ? R_PUSHSD_RECEP_OFF : 
-#ifdef __SERIES60_PUSH_SL
-        aSettingType == EServiceLoadingType         ? R_PUSHSD_LOAD_MAN : 
-#endif //__SERIES60_PUSH_SL
-        KErrNotFound;
-
+    if(  aSettingType == EServiceReception)
+        aVal1ResId = R_PUSHSD_RECEP_ON;
+    
+    else if((aSettingType == EServiceLoadingType) && iPushSLEnabled  )
+        {
+         aVal1ResId = R_PUSHSD_LOAD_AUTOM;
+        }
+    else
+        aVal1ResId =  KErrNotFound;
+    
+    
+    if( aSettingType == EServiceReception )
+        aVal2ResId = R_PUSHSD_RECEP_OFF;
+    else if( aSettingType == EServiceLoadingType && iPushSLEnabled)
+        aVal2ResId = R_PUSHSD_LOAD_MAN;
+    else
+        aVal2ResId = KErrNotFound; 
+    
+    
     __ASSERT_DEBUG( aVal1ResId != KErrNotFound && 
                     aVal2ResId != KErrNotFound, 
         UiPanic( EPushMtmUiPanNotInitialized ) );
@@ -437,14 +455,20 @@
     TInt val2ResId( KErrNotFound );
     ConstructSettingValueArray( aSettingType, val1ResId, val2ResId );
 
-    const TBool firstSelected = 
-        aSettingType == EServiceReception ? iModel->ServiceReception() : 
-#ifdef __SERIES60_PUSH_SL
-        aSettingType == EServiceLoadingType ? iModel->ServiceLoadingType() == 
-                                              CPushMtmSettings::EAutomatic : 
-#endif //__SERIES60_PUSH_SL
-        EFalse;
-
+    TBool firstSelected;
+    
+    if(aSettingType == EServiceReception ) 
+        firstSelected = iModel->ServiceReception();
+    
+    else if( aSettingType == EServiceLoadingType && iPushSLEnabled )
+        {
+            firstSelected = (iModel->ServiceLoadingType() == CPushMtmSettings::EAutomatic);
+        }
+    else
+        firstSelected = EFalse;
+    
+    
+    
     aIndex = firstSelected ? 0 : 1;
     return firstSelected ? val1ResId : val2ResId;
     }
@@ -490,30 +514,29 @@
             break;
             }
 
-#ifdef __SERIES60_PUSH_SL
-
         case EServiceLoadingType:
             {
-            if ( aIndex == 0 )
-            // iModel->ServiceLoadingType() == CPushMtmSettings::EManual
+            if(iPushSLEnabled)
                 {
-                // Display a confirmation dialog first.
-                if ( ShowServiceLoadingTypeConfirmationL() )
+                if ( aIndex == 0 )
+                    // iModel->ServiceLoadingType() == CPushMtmSettings::EManual
                     {
-                    iModel->SetServiceLoadingType
-                        ( CPushMtmSettings::EAutomatic );
+                    // Display a confirmation dialog first.
+                    if ( ShowServiceLoadingTypeConfirmationL() )
+                        {
+                        iModel->SetServiceLoadingType
+                            ( CPushMtmSettings::EAutomatic );
+                        }
                     }
-                }
-            else
-                {
-                // Do not show confirmation dialog.
-                iModel->SetServiceLoadingType( CPushMtmSettings::EManual );
+                else
+                 {
+                    // Do not show confirmation dialog.
+                    iModel->SetServiceLoadingType( CPushMtmSettings::EManual );
+                 }
                 }
             break;
             }
 
-#endif //__SERIES60_PUSH_SL
-
         default:
             {
             __ASSERT_DEBUG( EFalse, 
--- a/pushmtm/MtmUtilInc/PushMtmPrivateCRKeys.h	Mon Mar 15 12:40:52 2010 +0200
+++ b/pushmtm/MtmUtilInc/PushMtmPrivateCRKeys.h	Wed Mar 31 21:35:49 2010 +0300
@@ -28,4 +28,7 @@
 // Read only White List
 const TUint32 KPushMtmWhiteList =           0x0000003;
 
+//To Enable to Disable PUSH_SL Service in Run-time
+const TUint32 KPushMtmServiceEnabled   =   0x0000004; 
+
 #endif      // PUSHMTMPRIVATECRKEYS_H
\ No newline at end of file
--- a/pushmtm/Plugins/Group/Bld.inf	Mon Mar 15 12:40:52 2010 +0200
+++ b/pushmtm/Plugins/Group/Bld.inf	Wed Mar 31 21:35:49 2010 +0300
@@ -15,7 +15,8 @@
 *
 */
 
-
+#include <platform_paths.hrh>
+#include "../../../../../mw/web/web_plat/browser_platform_api/inc/browser_platform_variant.hrh"
 
 PRJ_PLATFORMS
 
@@ -26,7 +27,7 @@
 
 
 PRJ_MMPFILES
-#if defined( __S60_32__) || defined( __S60_50__) 
+#if defined( __S60_32__) || defined( __PLATFORM_VERSION_S60_50__)  || defined( __PLATFORM_VERSION_5250__)
 // Remove Symbian Push Content Handler
 gnumakefile PushContentHandlerClean.mk
 #endif
--- a/pushmtm/Plugins/Group/PushContentHandlerClean.mk	Mon Mar 15 12:40:52 2010 +0200
+++ b/pushmtm/Plugins/Group/PushContentHandlerClean.mk	Wed Mar 31 21:35:49 2010 +0300
@@ -75,7 +75,6 @@
 	if exist "$(TARGETMTMDIRDLL)\$(TARGETMTMDLL)" del "$(TARGETMTMDIRDLL)\$(TARGETMTMDLL)"
 
 do_nothing:
-	rem do nothing
 
 #
 # The targets invoked by abld 
--- a/pushmtm/Plugins/Group/PushMtmPushContentHandler.mmp	Mon Mar 15 12:40:52 2010 +0200
+++ b/pushmtm/Plugins/Group/PushMtmPushContentHandler.mmp	Wed Mar 31 21:35:49 2010 +0300
@@ -65,12 +65,10 @@
 SOURCE          PushContentHandlerGroupProxy.cpp
 SOURCE          PushContentHandlerPanic.cpp
 SOURCE          PushContentHandlerUtils.cpp
-#ifdef __SERIES60_PUSH_SL
 SOURCE          PushMtmAutoFetchOperation.cpp
 SOURCE          PushMtmFetchOperation.cpp
 SOURCE		      PushMtmCacheSupply.cpp
 SOURCE		      PushMtmCacheDataSupplier.cpp
-#endif // __SERIES60_PUSH_SL
 SOURCE          si_dict.c
 SOURCE          sl_dict.c
 SOURCE          StringResourceReader.cpp
@@ -84,14 +82,10 @@
 MACRO           __TEST_LOG__
 #endif
 
-#ifdef __SERIES60_PUSH_SL
 LIBRARY	apengine.lib
-#endif // __SERIES60_PUSH_SL
 
-#if defined(__SERIES60_PUSH_SP) || defined(__SERIES60_PUSH_SL)
 LIBRARY         apgrfx.lib
 LIBRARY         apmime.lib
-#endif // __SERIES60_PUSH_SP || __SERIES60_PUSH_SL
 
 LIBRARY         bafl.lib
 
@@ -102,9 +96,7 @@
 
 LIBRARY         CharConv.lib
 
-#ifdef __SERIES60_PUSH_SL
 LIBRARY         commdb.lib
-#endif // __SERIES60_PUSH_SL
 
 #ifdef __SERIES60_PUSH_SP
 LIBRARY         commonui.lib
@@ -113,16 +105,13 @@
 LIBRARY         ECom.lib
 LIBRARY         efsrv.lib
 
-#ifdef __SERIES60_PUSH_SL
 LIBRARY         esock.lib
-#endif // __SERIES60_PUSH_SL
 
 #ifdef __SERIES60_PUSH_SP
 LIBRARY         etext.lib
 #endif // __SERIES60_PUSH_SP
 
 LIBRARY         euser.lib
-
 #ifdef __TEST_LOG_MMP
 DEBUGLIBRARY         flogger.lib
 #endif
@@ -131,12 +120,10 @@
 LIBRARY         gsmu.lib
 #endif // __SERIES60_PUSH_SP
 
-#ifdef __SERIES60_PUSH_SL
 LIBRARY         http.lib
 LIBRARY         BrowserCache.lib
 LIBRARY         HttpFilterCommon.lib
 LIBRARY         inetprotutil.lib
-#endif // __SERIES60_PUSH_SL
 
 #ifdef __SERIES60_PUSH_SP
 LIBRARY         MiscPushMsgUtils.lib
@@ -153,9 +140,7 @@
 
 LIBRARY         WapPushUtils.lib
 
-#ifdef __SERIES60_PUSH_SL
 LIBRARY			ws32.lib
-#endif // __SERIES60_PUSH_SL
 
 LIBRARY         cXmlParser.lib
 LIBRARY         CENTRALREPOSITORY.lib
--- a/pushmtm/Plugins/PushContentHandler/CSLContentHandler.cpp	Mon Mar 15 12:40:52 2010 +0200
+++ b/pushmtm/Plugins/PushContentHandler/CSLContentHandler.cpp	Wed Mar 31 21:35:49 2010 +0300
@@ -42,6 +42,8 @@
 #include <nw_dom_text.h>
 #include <nw_wbxml_dictionary.h>
 #include <nw_string_char.h>
+#include "PushMtmPrivateCRKeys.h"
+#include <centralrepository.h> 
 
 // CONSTANTS
 
@@ -119,10 +121,14 @@
 void CSLContentHandler::ConstructL()
 	{
     PUSHLOG_ENTERFN("CSLContentHandler::ConstructL")
-
+    
+    CRepository* PushSL = CRepository::NewL( KCRUidPushMtm );
+    CleanupStack::PushL( PushSL );
+    User::LeaveIfError( PushSL->Get( KPushMtmServiceEnabled , iPushSLEnabled ) );
+    CleanupStack::PopAndDestroy( PushSL ); 
+    
     CPushContentHandlerBase::ConstructL();
     // Added to Active Scheduler.
-
     PUSHLOG_LEAVEFN("CSLContentHandler::ConstructL")
     }
 
@@ -136,18 +142,16 @@
 
     DoCollectGarbageL();
 
-#ifdef __SERIES60_PUSH_SL
-	iState = EFilteringAndParsing;
-#else // __SERIES60_PUSH_SL
-    // Do nothing - message is discarded.
-	iState = EDone;
-#endif // __SERIES60_PUSH_SL
+	if(iPushSLEnabled)
+	    iState = EFilteringAndParsing;
+	else
+	    iState = EDone;
+	
 	IdleComplete();
 
     PUSHLOG_LEAVEFN("CSLContentHandler::CollectGarbageL")
     }
 
-#ifdef __SERIES60_PUSH_SL
 
 // ---------------------------------------------------------
 // CSLContentHandler::ParsePushMsgL
@@ -1015,7 +1019,6 @@
     PUSHLOG_LEAVEFN("CSLContentHandler::StoreSLMessageL")
 	}
 
-#endif // __SERIES60_PUSH_SL
 
 // ---------------------------------------------------------
 // CSLContentHandler::HandleMessageL
@@ -1127,58 +1130,63 @@
 		    break;
             }
 
-#ifdef __SERIES60_PUSH_SL
 
         case EFilteringAndParsing:
             {
-            if ( !FilterPushMsgL() )
-                {
-                // It did not pass the filter. Done.
-	            iState = EDone;
-	            IdleComplete();
-                }
-            else
+            if(iPushSLEnabled)
                 {
-                // Continue.
-		        TInt ret = KErrNone;
-				PUSHLOG_WRITE("CSLContentHandler::RunL : before trapping parsing.")
-				TRAP(ret, ParsePushMsgL());
-				PUSHLOG_WRITE_FORMAT("CSLContentHandler::RunL : after trapping parsing. ret = %d", ret)
-				if ( ret != KErrNone)
-					{
-					PUSHLOG_WRITE("CSLContentHandler::RunL : Parsing failed. discarding message.")
-					iState = EDone;
-					IdleComplete();
-					}
+                if ( !FilterPushMsgL() )
+                    {
+                    // It did not pass the filter. Done.
+                    iState = EDone;
+                    IdleComplete();
+                    }
+                else
+                    {
+                    // Continue.
+                    TInt ret = KErrNone;
+                    PUSHLOG_WRITE("CSLContentHandler::RunL : before trapping parsing.")
+                    TRAP(ret, ParsePushMsgL());
+                    PUSHLOG_WRITE_FORMAT("CSLContentHandler::RunL : after trapping parsing. ret = %d", ret)
+                    if ( ret != KErrNone)
+                        {
+                        PUSHLOG_WRITE("CSLContentHandler::RunL : Parsing failed. discarding message.")
+                        iState = EDone;
+                        IdleComplete();
+                        }
+                    }
                 }
 			break;
             }
 
         case EProcessing:
             {
+            if(iPushSLEnabled)
 			ProcessingPushMsgEntryL();
 			break;
             }
 
 		case EFetching:
             {
+            if(iPushSLEnabled)
 			FetchPushMsgEntryL();
 			break;
             }
 
 		case EFetchCompleted:
             {
+            if(iPushSLEnabled)
 			FetchCompletedL();
 			break;
             }
 
 		case ESavePushMsgEntry:
             {
+            if(iPushSLEnabled)
 			SavePushMsgEntryL();
 			break;
             }
 
-#endif // __SERIES60_PUSH_SL
 
         case EDone:
             {
--- a/pushmtm/Plugins/PushContentHandler/CSLContentHandler.h	Mon Mar 15 12:40:52 2010 +0200
+++ b/pushmtm/Plugins/PushContentHandler/CSLContentHandler.h	Wed Mar 31 21:35:49 2010 +0300
@@ -88,7 +88,6 @@
         */
 	    void  CollectGarbageL();
 
-#ifdef __SERIES60_PUSH_SL
 
         /**
         * Parse the Push SL message using XML parser.
@@ -208,7 +207,6 @@
         */
 	    inline TBool HrefFlag() const;
 
-#endif // __SERIES60_PUSH_SL
 
     private: // Methods from CPushHandlerBase
 	    
@@ -296,6 +294,7 @@
 
         NW_Uint32       iCharEncoding; ///< Char encoding of the current msg.
         TBool           iSaveAsRead; ///< Mark the message 'read' after saving.
+        TInt            iPushSLEnabled;
     };
 
 #include "CSLContentHandler.inl"
--- a/pushmtm/Plugins/PushContentHandler/CSLContentHandler.inl	Mon Mar 15 12:40:52 2010 +0200
+++ b/pushmtm/Plugins/PushContentHandler/CSLContentHandler.inl	Wed Mar 31 21:35:49 2010 +0300
@@ -17,7 +17,6 @@
 
 
 
-#ifdef __SERIES60_PUSH_SL
 
 inline void CSLContentHandler::SetActionFlag( TBool aAction )
 	{
@@ -53,5 +52,4 @@
 	return iAttributes & EHref;
 	}
 
-#endif // __SERIES60_PUSH_SL
 
Binary file pushmtm/conf/pushmtm.confml has changed
Binary file pushmtm/conf/pushmtm_10008D42.crml has changed