Revision: 201013 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 14 Apr 2010 17:06:56 +0300
branchRCL_3
changeset 64 ac77f89b1d9e
parent 62 c711bdda59f4
child 67 4917f9bf7995
Revision: 201013 Kit: 201015
browserutilities/connectionmanager/Inc/ConnManActiveConnector.h
browserutilities/connectionmanager/Src/ConnManActiveConnector.cpp
browserutilities/connectionmanager/Src/InternetConnectionManager.cpp
browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadUtils.cpp
browserutilities/feedsengine/FeedsServer/Server/inc/UpdateManager.h
browserutilities/feedsengine/FeedsServer/Server/src/UpdateManager.cpp
browserutilities/feedsengine/FeedsServer/UrlHandler/inc/ServerHttpConnection.h
browserutilities/feedsengine/FeedsServer/UrlHandler/src/ServerHttpConnection.cpp
browserutilities/feedsengine/group/FeedsServer.mmp
browserutilities/schemehandler/SchemeDispatcher/src/MmsHandler.cpp
browserutilities/schemehandler/SchemeDispatcher/src/RtspHandler.cpp
browserutilities/webutils/conf/webutils.confml
web_plat/browser_platform_api/inc/Browser_platform_variant.hrh
web_plat/connection_manager_api/inc/InternetConnectionManager.h
web_plat/connection_manager_api/inc/MConnection.h
web_pub/settings_api/inc/BrowserUiSDKCRKeys.h
webengine/osswebengine/WebCore/html/HTMLElement.cpp
webengine/osswebengine/WebCore/page/symbian/WebCoreFrameBridge.h
webengine/osswebengine/WebCore/platform/network/symbian/DataConnection.cpp
webengine/osswebengine/WebCore/platform/network/symbian/HttpConnection.cpp
webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.cpp
webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.h
webengine/osswebengine/WebCore/platform/symbian/FontCacheSymbian.cpp
webengine/osswebengine/WebCore/platform/symbian/bitmap/AnimationDecoderWrapped.cpp
webengine/osswebengine/WebCore/platform/symbian/bitmap/MaskedBitmap.cpp
webengine/osswebengine/WebKit/s60/group/webkit/webkit.mmp
webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.cpp
webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp
webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h
webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp
webengine/osswebengine/WebKit/s60/plugins/PluginWin.h
webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp
webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp
webengine/osswebengine/WebKit/s60/webview/BrCtlLayoutObserverImpl.h
webengine/osswebengine/WebKit/s60/webview/WebFepTextEditor.cpp
webengine/osswebengine/WebKit/s60/webview/WebFepTextEditor.h
webengine/osswebengine/WebKit/s60/webview/WebFrame.cpp
webengine/osswebengine/WebKit/s60/webview/WebFrame.h
webengine/osswebengine/WebKit/s60/webview/WebFrameView.cpp
webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp
webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.h
webengine/osswebengine/WebKit/s60/webview/WebScrollingDeceleratorGH.cpp
webengine/osswebengine/WebKit/s60/webview/WebView.cpp
webengine/osswebengine/WebKit/s60/webview/WebView.h
webengine/osswebengine/webkit/s60/webview/ThumbnailGenerator.cpp
webengine/osswebengine/webkit/s60/webview/ThumbnailGenerator.h
webengine/osswebengine/webkit/s60/webview/WebPagePinchZoomHandler.cpp
webengine/osswebengine/webkit/s60/webview/WebPagePinchZoomHandler.h
webengine/webkitutils/HistoryProvider/HistoryController.cpp
webengine/webkitutils/HistoryProvider/HistoryView.cpp
webengine/webkitutils/HistoryProvider/HistoryView.h
webengine/webkitutils/stmgesturefw/inc/gesturehelpereventsender.h
webengine/webkitutils/stmgesturefw/inc/stateengine.h
webengine/webkitutils/stmgesturefw/src/gesturehelpereventsender.cpp
webengine/webkitutils/stmgesturefw/src/stateengine.cpp
webengine/widgetinstaller/Src/WidgetInstaller.cpp
webengine/widgetinstaller/Src/WidgetRegistrationManager.cpp
webengine/wmlengine/src/utils/src/CBrowserSettings.cpp
webengine/wrtharvester/inc/sapidatapluginuids.hrh
widgets/widgetapp/src/WidgetUiWindowContainer.cpp
widgets/widgetinstaller/inc/WidgetUIOperationsWatcher.h
widgets/widgetinstaller/src/WidgetRegistrationManager.cpp
widgets/widgetinstaller/src/WidgetUIOperationsWatcher.cpp
--- a/browserutilities/connectionmanager/Inc/ConnManActiveConnector.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/browserutilities/connectionmanager/Inc/ConnManActiveConnector.h	Wed Apr 14 17:06:56 2010 +0300
@@ -24,7 +24,7 @@
 
 #include <e32base.h>
 #include <nifman.h>
-
+#include <mconnection.h>
 
 class TCommDbConnPref;
 class TConnSnapPref;
@@ -66,6 +66,7 @@
 	*@param aStatus the status of the observer Active object
 	*/
     void StartConnection( TConnSnapPref* aSettings, TRequestStatus& aStatus);
+    void SetOccPreferences(TSetOCCPreferences aOCCPreferences);
 
 private://from CActive	
 
@@ -84,6 +85,7 @@
 	TRequestStatus* iExternalRequestStatus;
     RConnection& iConnection;
     TBool iWait;
+    TSetOCCPreferences occPrefs;
 	};
 
 
@@ -128,13 +130,13 @@
 	*@return the error code
 	*/    
     TInt ConnectSnap( TConnSnapPref* aSettings );
-
 public:
 	
     /**
 	*Destructor
 	*/
 	virtual ~CActiveConnectorSyncWrapper();
+	void SetOccPreferences(TSetOCCPreferences aOCCPreferences);
 
 private://from CActive
 
--- a/browserutilities/connectionmanager/Src/ConnManActiveConnector.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/browserutilities/connectionmanager/Src/ConnManActiveConnector.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -22,7 +22,7 @@
 #include <browser_platform_variant.hrh>
 #include "ConnManActiveConnector.h"
 #include "ConnectionManagerLogger.h"
-
+#include <mconnection.h>
 #include <nifvar.h>
 #include <CommDbConnPref.h>
 
@@ -41,6 +41,7 @@
     
 	CLOG_CREATE;
 	CActiveScheduler::Add( this );//inserting this into the queue
+	occPrefs = EDefault;
 	}
 
 //--------------------------------------------------------------------------
@@ -155,6 +156,15 @@
 #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));
 
@@ -201,6 +211,12 @@
 	User::RequestComplete( iExternalRequestStatus, iStatus.Int() );
 	}
 
+void CConnManActiveConnector::SetOccPreferences(TSetOCCPreferences aOCCPreferences)
+    {
+    CLOG_WRITE_1( "CConnManActiveConnector::SetOccPreferences : %d", aOCCPreferences );
+    occPrefs = aOCCPreferences;
+    }
+
 //------------------------------------------------------ CActiveConnectorSyncWrapper -------------------------
 
 //--------------------------------------------------------------------------
@@ -307,5 +323,9 @@
 	CActiveScheduler::Add( this );
 	}
 
-
+void CActiveConnectorSyncWrapper::SetOccPreferences(TSetOCCPreferences aOCCPreferences)
+    {
+    if ( iActiveConnector )
+        iActiveConnector->SetOccPreferences(aOCCPreferences);
+    }
 //EOF
--- a/browserutilities/connectionmanager/Src/InternetConnectionManager.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/browserutilities/connectionmanager/Src/InternetConnectionManager.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -2203,5 +2203,15 @@
         }
     iWaitDialog->RunLD();
     }
+
+//-------------------------------------------------------------------
+//CInternetConnectionManager::SetOccPreferences
+//-------------------------------------------------------------------
+
+void CInternetConnectionManager::SetOccPreferences( TSetOCCPreferences aOCCPreferences)
+    {
+    if( iSyncConnector )
+       iSyncConnector->SetOccPreferences(aOCCPreferences);
+    }
     
 // End of File
--- a/browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadUtils.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadUtils.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -473,7 +473,7 @@
     
     if (ret == KErrNone &&
         (dataType.iConfidence == CApaDataRecognizerType::ECertain) ||
-        (dataType.iConfidence == CApaDataRecognizerType::EProbable))
+        (dataType.iConfidence == CApaDataRecognizerType::EProbable) ||(dataType.iConfidence == CApaDataRecognizerType::EPossible))
         {
         // If the file type was found, try to match it to a known file type
         TPtrC8 mimeTypePtr = dataType.iDataType.Des8();
--- a/browserutilities/feedsengine/FeedsServer/Server/inc/UpdateManager.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/browserutilities/feedsengine/FeedsServer/Server/inc/UpdateManager.h	Wed Apr 14 17:06:56 2010 +0300
@@ -250,12 +250,19 @@
 public:
 
    /**
-    * Check for roaming.
-    *
-    * @since 7.1
+    * Issue request for notification.    *
+    * @since 7.2
     * @return void.
     */
-	void CheckForRoaming();
+    void IssueRequestL();
+    /**
+    * Check if currently in roaming
+    *
+    * @since 7.2
+    * @return boolean.
+    */
+    TBool Roaming();
+
 
 private:
    /**
@@ -274,11 +281,12 @@
 
 private:
 
-	CTelephony							*iTelephony;
-	CTelephony::TNetworkRegistrationV1	iRegStatus;
-	CUpdateManager					    *iUpdateManager;
-	
+    CTelephony  *iTelephony;
+    CTelephony::TNetworkRegistrationV1 iNetworkRegistrationV1;	
+    CTelephony::TNetworkRegistrationV1Pckg iNetworkRegistrationV1Pckg;
+    CUpdateManager  *iUpdateManager;
+    
     };
 
 
-#endif //_UPDATEMANAGER_H_
\ No newline at end of file
+#endif //_UPDATEMANAGER_H_
--- a/browserutilities/feedsengine/FeedsServer/Server/src/UpdateManager.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/browserutilities/feedsengine/FeedsServer/Server/src/UpdateManager.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -55,6 +55,7 @@
     iLazyCaller = CIdle::NewL(CActive::EPriorityIdle );
     iHttpConnection = CServerHttpConnection::NewL( aAutoUpdateAP );
     iRoamingInfo = CRoamingInfo::NewL(this);
+    iRoamingInfo->IssueRequestL();
     iAutoUpdateAp = aAutoUpdateAP;
     iLastAutoUpdate.HomeTime();
     }
@@ -139,14 +140,10 @@
     if (iStatus.Int() == KErrNone || iStatus.Int() == KErrAbort)
         {      
         StartTimer();
-        if(iAutoUpdateWhileRoaming)
+        if(iAutoUpdateWhileRoaming || !iRoamingInfo->Roaming())
             {
             UpdateL();
             }
-        else
-            {
-            iRoamingInfo->CheckForRoaming();
-            }
         }      
     }
 
@@ -365,7 +362,7 @@
 // -----------------------------------------------------------------------------
 //
 CRoamingInfo::CRoamingInfo(CUpdateManager *aUpdateManager)
-	:CActive(CActive::EPriorityStandard),iUpdateManager(aUpdateManager)
+	:CActive(CActive::EPriorityStandard),iUpdateManager(aUpdateManager),iNetworkRegistrationV1Pckg(iNetworkRegistrationV1)
     {
     }
 
@@ -383,22 +380,13 @@
     }
 
 // -----------------------------------------------------------------------------
-// CRoamingInfo::CheckForRoaming
+// CRoamingInfo::Roaming
 // 
-// Check for roaming.
+// Check for roaming. Returns true if in roaming
 // -----------------------------------------------------------------------------
-void CRoamingInfo::CheckForRoaming()
+TBool CRoamingInfo::Roaming()
     {
-
-#ifndef __WINSCW__
-
-    CTelephony::TNetworkRegistrationV1Pckg RegStatusPkg(iRegStatus);
-    iTelephony->GetNetworkRegistrationStatus(iStatus, RegStatusPkg);
-    SetActive();
-
-#else
-    TRAP_IGNORE( iUpdateManager->UpdateL() );
-#endif
+    return (iNetworkRegistrationV1.iRegStatus == CTelephony::ERegisteredRoaming);	  
     }
 
 // -----------------------------------------------------------------------------
@@ -408,14 +396,23 @@
 // -----------------------------------------------------------------------------
 //
 void CRoamingInfo::RunL()
-    {  
-    if (iStatus.Int() == KErrNone)
+    {
+    IssueRequestL();
+    }
+ 
+// -----------------------------------------------------------------------------
+// CRoamingInfo::IssueRequestL
+//
+// Issue the request for change in network registration
+// -----------------------------------------------------------------------------
+void CRoamingInfo::IssueRequestL()
+    {   
+    if (iStatus.Int() == KErrNone || iStatus.Int() == KErrAbort)
         {
-        if(iRegStatus.iRegStatus != CTelephony::ERegisteredRoaming)
-        	{
-        	iUpdateManager->UpdateL();
-        	}
-		}
+        iTelephony->NotifyChange( iStatus, CTelephony::ENetworkRegistrationStatusChange,
+            iNetworkRegistrationV1Pckg);
+        SetActive();
+        }
     }
 
 // -----------------------------------------------------------------------------
@@ -426,5 +423,5 @@
 //
 void CRoamingInfo::DoCancel()
     {
-    iTelephony->CancelAsync(CTelephony::EGetCurrentNetworkInfoCancel );
+    iTelephony->CancelAsync(CTelephony::ENetworkRegistrationStatusChangeCancel );
     }
--- a/browserutilities/feedsengine/FeedsServer/UrlHandler/inc/ServerHttpConnection.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/browserutilities/feedsengine/FeedsServer/UrlHandler/inc/ServerHttpConnection.h	Wed Apr 14 17:06:56 2010 +0300
@@ -22,7 +22,7 @@
 
 // INCLUDES
 #include "httpconnection.h"
-
+#include "browser_platform_variant.hrh"
 // CONSTANTS
 
 // MACROS
@@ -100,7 +100,9 @@
         * @return Void
         */
         void SetAccessPointL( TUint32 aAccessPoint );
-
+#ifdef BRDO_OCC_ENABLED_FF
+        TBool IsPhoneOfflineL();
+#endif
 
     private:
         /**
--- a/browserutilities/feedsengine/FeedsServer/UrlHandler/src/ServerHttpConnection.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/browserutilities/feedsengine/FeedsServer/UrlHandler/src/ServerHttpConnection.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -22,7 +22,11 @@
 
 #include "ServerHttpConnection.h"
 #include "Logger.h"
-
+#ifdef BRDO_OCC_ENABLED_FF
+#include <FeatMgr.h>
+#include <CentralRepository.h>
+#include <CoreApplicationUIsSDKCRKeys.h>
+#endif
 
 // -----------------------------------------------------------------------------
 // CServerHttpConnection::NewL
@@ -103,6 +107,11 @@
         TUint32 snapId = 0; //Defaults connects to Internet snap
         iConMgr->SetConnectionType(CMManager::EDestination);
         iConMgr->SetRequestedSnap(snapId);
+       if ( !IsPhoneOfflineL() )
+           {
+           // For only feeds, this silent is required
+           iConMgr->SetOccPreferences(ESilient);
+           }
 #else
         // Set the default access point.
         iConMgr->SetRequestedAP( iDefaultAccessPoint );
@@ -191,3 +200,34 @@
     {
     iDefaultAccessPoint = aAccessPoint;
     }
+
+#ifdef BRDO_OCC_ENABLED_FF
+// ---------------------------------------------------------
+// CServerHttpConnection::IsPhoneOfflineL
+//
+// Checks if phone is in offline mode or not.
+// Return ETrue if phone is in offline mode.
+// Return EFalse if phone is not in offline mode.
+// ---------------------------------------------------------
+//
+TBool CServerHttpConnection::IsPhoneOfflineL() 
+     {
+     FeatureManager::InitializeLibL();
+     TBool onLineMode = FeatureManager::FeatureSupported( KFeatureIdOfflineMode );
+     FeatureManager::UnInitializeLib();
+     if ( onLineMode )
+         {
+         CRepository* repository = CRepository::NewLC( KCRUidCoreApplicationUIs );
+         TInt connAllowed = 1;
+         repository->Get( KCoreAppUIsNetworkConnectionAllowed, connAllowed );
+         CleanupStack::PopAndDestroy(); //repository  
+         if ( !connAllowed )
+             {
+             //Yes, Phone is in Offline mode
+             return ETrue;
+             }
+         }
+     //Phone is in Online mode
+     return EFalse;
+     }
+#endif
--- a/browserutilities/feedsengine/group/FeedsServer.mmp	Wed Mar 31 23:16:40 2010 +0300
+++ b/browserutilities/feedsengine/group/FeedsServer.mmp	Wed Apr 14 17:06:56 2010 +0300
@@ -129,3 +129,7 @@
 LIBRARY				webutils.lib
 LIBRARY       sysutil.lib
 
+#ifdef BRDO_OCC_ENABLED_FF
+LIBRARY    featmgr.lib
+#endif
+
--- a/browserutilities/schemehandler/SchemeDispatcher/src/MmsHandler.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/browserutilities/schemehandler/SchemeDispatcher/src/MmsHandler.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -30,11 +30,13 @@
 #include <eikproc.h>
 #include <f32file.h>
 #include <AknLaunchAppService.h>
-
+#ifdef __S60_32__
+LOCAL_C const TUid KUidMediaPlayer = { 0x10005A3E };
+#else
+#include <videoplayeruid.hrh>
+#endif
 // ================= CONSTANTS =======================
 
-LOCAL_C const TUid KUidMediaPlayer = { 0x10005A3E };
-
 // ================= MEMBER FUNCTIONS =======================
 
 // ---------------------------------------------------------
@@ -127,9 +129,13 @@
     	paramList->AppendL(*iParamList);  
     }
 
-
+#ifdef __S60_32__
     iLaunchAppService = 
         CAknLaunchAppService::NewL( KUidMediaPlayer, this, paramList );
+#else
+    iLaunchAppService = 
+        CAknLaunchAppService::NewL( TUid::Uid(KVideoPlayerUID), this, paramList );
+#endif    
     iSync = ETrue;
     iWait.Start();
     CleanupStack::PopAndDestroy( paramList );   
@@ -148,9 +154,11 @@
 	RApaLsSession appArcSession;
 	User::LeaveIfError( appArcSession.Connect() );
 	TThreadId id;
-
-	appArcSession.StartDocument( iParsedUrl->Des(), KUidMediaPlayer , id );
-
+#ifdef __S60_32__
+    appArcSession.StartDocument( iParsedUrl->Des(), KUidMediaPlayer , id );
+#else
+    appArcSession.StartDocument( iParsedUrl->Des(), TUid::Uid(KVideoPlayerUID) , id );
+#endif
 	appArcSession.Close();
 
 	CLOG_LEAVEFN( "CMmsHandler::HandleUrlStandaloneL()" );
@@ -180,3 +188,4 @@
 	CLOG_LEAVEFN( "CMmsHandler::HandleServerAppExit" );	
 	}
 
+
--- a/browserutilities/schemehandler/SchemeDispatcher/src/RtspHandler.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/browserutilities/schemehandler/SchemeDispatcher/src/RtspHandler.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -31,9 +31,13 @@
 #include <f32file.h>
 #include <AknLaunchAppService.h>
 
+#ifdef __S60_32__
+LOCAL_C const TUid KUidMediaPlayer = { 0x10005A3E };
+#else
+#include <videoplayeruid.hrh>
+#endif
 // ================= CONSTANTS =======================
 
-LOCAL_C const TUid KUidMediaPlayer = { 0x10005A3E };
 _LIT( KRtspFileName, "c:\\system\\temp\\RtspTemp.ram" );
 
 // ================= MEMBER FUNCTIONS =======================
@@ -193,8 +197,11 @@
 	User::LeaveIfError( appArcSession.Connect() );
 	TThreadId id;
 
-	appArcSession.StartDocument( iParsedUrl->Des(), KUidMediaPlayer , id );
-
+#ifdef __S60_32__
+    appArcSession.StartDocument( iParsedUrl->Des(), KUidMediaPlayer , id );
+#else
+    appArcSession.StartDocument( iParsedUrl->Des(), TUid::Uid(KVideoPlayerUID) , id );
+#endif
 	appArcSession.Close();
 
 	CLOG_LEAVEFN( "CRtspHandler::HandleUrlStandaloneL()" );
@@ -224,3 +231,4 @@
 	CLOG_LEAVEFN( "CRtspHandler::HandleServerAppExit" );	
 	}
 
+
Binary file browserutilities/webutils/conf/webutils.confml has changed
--- a/web_plat/browser_platform_api/inc/Browser_platform_variant.hrh	Wed Mar 31 23:16:40 2010 +0300
+++ b/web_plat/browser_platform_api/inc/Browser_platform_variant.hrh	Wed Apr 14 17:06:56 2010 +0300
@@ -181,6 +181,9 @@
 //To enable for IAD Update (For add-on Browser)
 #define BRDO_IAD_UPDATE_ENABLED_FF
 
+//To enable performance improvements done in TB9.2
+#define BRDO_PERF_IMPROVEMENTS_ENABLED_FF
+
 /*
 * ===================
 *        S60 3.23
@@ -213,6 +216,9 @@
 // Flag for Multi touch enable 
 #undef BRDO_MULTITOUCH_ENABLED_FF
 
+//Flag for performance improvements in TB9.2
+#undef BRDO_PERF_IMPROVEMENTS_ENABLED_FF
+
 // Defines touch screen capability
 #undef BRDO_TOUCH_ENABLED_FF
 
@@ -295,6 +301,10 @@
 
 // Flag for Multi touch enable 
 #undef BRDO_MULTITOUCH_ENABLED_FF
+
+//Flag for performance improvements in TB9.2
+#undef BRDO_PERF_IMPROVEMENTS_ENABLED_FF
+
 //To provide WidgetSIDChecker support 
 #undef APP_SID_CHECK_SUPPORT_FF 
 
@@ -376,6 +386,10 @@
 // Flag for Multi touch enable 
 #undef BRDO_MULTITOUCH_ENABLED_FF
 
+//Flag for performance improvements in TB9.2
+#undef BRDO_PERF_IMPROVEMENTS_ENABLED_FF
+
+
 //To provide WidgetSIDChecker support 
 #undef APP_SID_CHECK_SUPPORT_FF 
 
@@ -428,6 +442,9 @@
 // Flag for Multi touch enable 
 #undef BRDO_MULTITOUCH_ENABLED_FF
 
+//Flag for performance improvements in TB9.2
+#undef BRDO_PERF_IMPROVEMENTS_ENABLED_FF
+
 //To provide WidgetSIDChecker support 
 #undef APP_SID_CHECK_SUPPORT_FF 
 
--- a/web_plat/connection_manager_api/inc/InternetConnectionManager.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/web_plat/connection_manager_api/inc/InternetConnectionManager.h	Wed Apr 14 17:06:56 2010 +0300
@@ -634,6 +634,8 @@
         * @return none.
         */         
          virtual void CancelConnection();
+         
+         void SetOccPreferences(TSetOCCPreferences aOCCPreferences);
     
 	private:
 
--- a/web_plat/connection_manager_api/inc/MConnection.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/web_plat/connection_manager_api/inc/MConnection.h	Wed Apr 14 17:06:56 2010 +0300
@@ -49,6 +49,11 @@
 	EConManStartAgain,
 	};
 
+enum TSetOCCPreferences
+    {
+    EDefault,
+    ESilient
+    };
 //This class provides a standerd interface for the WML Browser towards any concrete implementation of a connection manager
 class MConnection
 	{
@@ -204,6 +209,12 @@
     * @return none.
     */
     virtual void ShowConnectionChangedDlg() = 0;
+    
+    /**
+    * Setting OCC Preferences
+    * @return none.
+    */
+    virtual void SetOccPreferences( TSetOCCPreferences aOCCPreferences ) = 0;
     };
 
 #endif
\ No newline at end of file
--- a/web_pub/settings_api/inc/BrowserUiSDKCRKeys.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/web_pub/settings_api/inc/BrowserUiSDKCRKeys.h	Wed Apr 14 17:06:56 2010 +0300
@@ -409,5 +409,7 @@
 
 // Controls whether enter key can activate a link, ot just has a default behavior. 
 const TUint32 KBrowserEnterKeyMode = 0x00000083;
-
-#endif      // BROWSERUISDKCRKEYS_H
\ No newline at end of file
+//OCC related
+const TUint32 KBrowserOccAccessPointSelectionMode = 0x00000084;
+const TUint32 KBrowserOccNGDefaultSnapId = 0x00000085;
+#endif      // BROWSERUISDKCRKEYS_H
--- a/webengine/osswebengine/WebCore/html/HTMLElement.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebCore/html/HTMLElement.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -314,7 +314,8 @@
     }
 
     #if PLATFORM(SYMBIAN) 
-         element->document()->page()->chrome()->setElementVisibilityChanged(true); 
+    if(element->document()->page())
+        element->document()->page()->chrome()->setElementVisibilityChanged(true); 
      #endif 
     element->removeChildren();
     element->appendChild(fragment, ec);
--- a/webengine/osswebengine/WebCore/page/symbian/WebCoreFrameBridge.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebCore/page/symbian/WebCoreFrameBridge.h	Wed Apr 14 17:06:56 2010 +0300
@@ -118,6 +118,7 @@
     bool                         m_shouldCreateRenderers;
     Vector<WebCore::IntRect>     m_focusableNodeList;
 
+
 };
 
 #endif // __WEBCOREFRAMEBRIDGE_H__
@@ -127,3 +128,4 @@
 
 
 
+
--- a/webengine/osswebengine/WebCore/platform/network/symbian/DataConnection.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/DataConnection.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -175,7 +175,11 @@
                               const WebCore::ResourceRequest& request,
                               const WebCore::ResourceResponse& response)
 {
-    __ASSERT_ALWAYS(EFalse, User::Panic(_L("Resource Loader"), KErrArgument));
+// This routine would implement the handling of a sisx file in   
+   //  <iframe src="data:x-epoc/x-sis-x;base64, ...."> type element    
+        // This is not yet implemented so the ASSERT below is commented out to prevent   
+        //   an assert crash.  
+        //  __ASSERT_ALWAYS(EFalse, User::Panic(_L("Resource Loader"), KErrArgument));  
 }
 
 TInt DataConnection::sendResponseCb(TAny* aPtr)
--- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpConnection.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpConnection.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -1174,15 +1174,17 @@
         //When submitting the request iSecurePage was set based on the request url
         //Check the redirect url and see if the scheme has changed
         HttpSessionManager* httpSessionMgr = StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager();
-        if(requestedSecScheme && !redirectedSecScheme) //redirection from a secure page to an unsecure one
+        if(httpSessionMgr->isInSecureConnection() && requestedSecScheme && !redirectedSecScheme) //redirection from a secure page to an unsecure one
             {
             error = httpSessionMgr->uiCallback()->aboutToLoadPage(control(m_frame), HttpUiCallbacks::EExitingSecurePage);
+            httpSessionMgr->setInSecureConnection(EFalse);
             }
-        else if(redirectedSecScheme && !requestedSecScheme) //redirection to unsecurepage when secure page was requested
+        else if(!httpSessionMgr->isInSecureConnection() && redirectedSecScheme && !requestedSecScheme) //redirection to unsecurepage when secure page was requested
             {
             error = httpSessionMgr->uiCallback()->aboutToLoadPage(control(m_frame), HttpUiCallbacks::EEnteringSecurePage );
+            httpSessionMgr->setInSecureConnection(ETrue);
             }
-        }
+        }      
     return error;
     }
 
--- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -60,6 +60,7 @@
     m_SelfDownloadContentHandler = NULL;
     m_SelfDownloadContentTypes = KNullStr().Alloc();
     retryConnectivityFlag = EFalse;
+    m_inSecConnection = EFalse;
 }
 
 HttpSessionManager::~HttpSessionManager()
--- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.h	Wed Apr 14 17:06:56 2010 +0300
@@ -100,6 +100,8 @@
     TBool getRetryConnectivityFlag(){ return retryConnectivityFlag; }
     void unSetRetryConnectivityFlag(){ retryConnectivityFlag = EFalse; }    
     TUint pendingTransactionsCount(){ return m_pendingHttpRequests.size(); }
+    TBool isInSecureConnection() {return m_inSecConnection;}
+    void setInSecureConnection(TBool inSecCon) {m_inSecConnection = inSecCon;}    
 
 private:
     void updateFilters(bool initializing = false);
@@ -134,6 +136,7 @@
 	bool m_OutstandingSelfDl;
 	RPointerArray<HBufC8> m_ClientAcceptHeaders;
 	TBool retryConnectivityFlag;
+	TBool m_inSecConnection;
 
 };
 #endif // __HTTPSESSIONMANAGER_H__
--- a/webengine/osswebengine/WebCore/platform/symbian/FontCacheSymbian.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/FontCacheSymbian.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -233,6 +233,10 @@
         fPtr.Set(fPtr.Left(comma));
     }
      
+    if(fPtr.Length() >KMaxTypefaceNameLength) {
+        fPtr.Set(fPtr.Left(KMaxTypefaceNameLength));
+    }
+    
     TFontSpec fontSpec(fPtr, twipSize);
     fontSpec.iFontStyle.SetStrokeWeight(fontDescription.bold() ? EStrokeWeightBold : EStrokeWeightNormal);
     fontSpec.iFontStyle.SetPosture(fontDescription.italic() ? EPostureItalic : EPostureUpright);
--- a/webengine/osswebengine/WebCore/platform/symbian/bitmap/AnimationDecoderWrapped.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/bitmap/AnimationDecoderWrapped.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -50,6 +50,7 @@
 #include "ImageObserver.h"
 #include "SyncDecodeThread.h"
 #include <Oma2Agent.h>
+#include <Browser_Platform_Variant.hrh>
 using namespace ContentAccess;
 
 namespace TBidirectionalState {
@@ -629,9 +630,10 @@
         //Compress non-animated images via FBServ (losslessly, idle priority) 
         //the 1x1 image is directly fetched before decompressing it which results in a crash in fbsserv and therefore a white background is displayed.
         //If the Image is of pixel (1,1) do not compress.
+#ifndef BRDO_PERF_IMPROVEMENTS_ENABLED_FF        
         if( frameSize != TSize(1,1) )
            iDestination->CompressInBackground();
-
+#endif
         // Normal image ready
         //iDestination = NULL;
         iImageState = EInactive;
--- a/webengine/osswebengine/WebCore/platform/symbian/bitmap/MaskedBitmap.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/bitmap/MaskedBitmap.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -22,6 +22,7 @@
 #include <fbs.h>
 #include <bitstd.h>
 #include <bitdev.h>
+#include <Browser_Platform_Variant.hrh>
 
 
 // ======================== STATIC FACTORY FUNCTIONS ===========================
@@ -472,6 +473,45 @@
         {
         gc.SetBrushStyle(CGraphicsContext::ENullBrush);
         TPoint off(srcPt.iX, srcPt.iY);
+
+#ifdef BRDO_PERF_IMPROVEMENTS_ENABLED_FF        
+        while ((bmpRect.iBr.iX - off.iX)> 2*SizeInPixels().iWidth)
+            {
+            TInt w = SizeInPixels().iWidth;
+            TInt h = SizeInPixels().iHeight;
+            TInt new_width = 2*w;
+
+            CFbsBitmap* bitmap = new (ELeave) CFbsBitmap;
+            bitmap->Create( TSize(new_width,h), iBitmap->DisplayMode() );
+
+            CBitmapContext* bitmapContext=NULL;
+            CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL(bitmap);
+            CleanupStack::PushL(bitmapDevice);
+            User::LeaveIfError(bitmapDevice->CreateBitmapContext(bitmapContext));
+            CleanupStack::PushL(bitmapContext);
+            bitmapContext->BitBlt(TPoint(0,0),iBitmap);
+            bitmapContext->BitBlt(TPoint(w,0),iBitmap);
+            CleanupStack::PopAndDestroy(2);
+            delete iBitmap;
+            iBitmap = bitmap;
+
+            if (HasMask())
+                {
+                CFbsBitmap* mask = new (ELeave) CFbsBitmap;
+                mask->Create( TSize(new_width,h), iMask->DisplayMode() );
+                CBitmapContext* bitmapContext=NULL;
+                CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL(mask);
+                CleanupStack::PushL(bitmapDevice);
+                User::LeaveIfError(bitmapDevice->CreateBitmapContext(bitmapContext));
+                CleanupStack::PushL(bitmapContext);
+                bitmapContext->BitBlt(TPoint(0,0),iMask);
+                bitmapContext->BitBlt(TPoint(w,0),iMask);
+                CleanupStack::PopAndDestroy(2);
+                delete iMask;
+                iMask = mask;
+                }
+            }
+#endif
         for (TInt x = off.iX; x<bmpRect.iBr.iX; x+=SizeInPixels().iWidth) 
             {
             for (TInt y = off.iY; y<bmpRect.iBr.iY; y+=SizeInPixels().iHeight) 
--- a/webengine/osswebengine/WebKit/s60/group/webkit/webkit.mmp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/group/webkit/webkit.mmp	Wed Apr 14 17:06:56 2010 +0300
@@ -53,6 +53,8 @@
 SOURCE          WebScrollingDeceleratorGH.cpp
 SOURCE          WebScrollbarDrawer.cpp
 SOURCE          WebSprite.cpp
+SOURCE          ThumbnailGenerator.cpp
+
 
 SOURCEPATH      ../../FormControls
 SOURCE          WebFormFill.cpp
--- a/webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -243,7 +243,7 @@
         m_selectedElementRect = selectedRect;
         m_focusPosition = selectedPoint;
         m_node = selectedNode;
-        selectedNode->document()->setFocusedNode(selectedNode);
+        m_webView->page()->focusController()->setFocusedNode(selectedNode, selectedNode->document()->frame());
         m_webView->page()->focusController()->setFocusedFrame(selectedNode->document()->frame());
         
         // And scroll to the selected element
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -509,10 +509,37 @@
 // ----------------------------------------------------------------------------
 void PluginSkin::makeVisible( TBool visible )
     {
+    // if visible is true for a plugin, make sure that the plugin is actually visible in the window before proceeding 
+    TBool visibility = EFalse;
+    if (visible) {
+        TRect fullRect(getPluginWinRect());
+        TRect clipRect(getClipRect());
+        TRect frameRect(m_frame->frameView()->rect());
+        TRect viewRect = control(m_frame)->webView()->Rect();
+        TBool isPageViewMode = control(m_frame)->webView()->inPageViewMode();
+        WebFrame* pf = m_frame;
+        TPoint p = frameRect.iTl;
+
+        if (m_frame->parentFrame()) {
+            pf = m_frame->parentFrame();
+            p = pf->frameView()->frameCoordsInViewCoords(frameRect.iTl); 
+        }
+        TSize  sz = pf->frameView()->toViewCoords(frameRect.Size());
+        TRect frameRectInViewCoord = TRect(p, sz);
+        TBool isPluginVisible = frameRectInViewCoord.Intersects(fullRect); 
+        TBool isFrameVisible = m_frame->frameView()->isVisible() && 
+                                frameRectInViewCoord.Intersects(viewRect);
+        
+        visibility = isFrameVisible && !isPageViewMode && isPluginVisible;
+      
+    }
     if ( m_pluginwin )
         {
+        if (visible && !visibility)
+            visible = EFalse;
+        
         m_visible = visible;
-        if(m_active)
+        if(m_active && !visible)
             deActivate();
         m_pluginwin->makeVisible(visible);
         }
@@ -1242,3 +1269,9 @@
         pluginloader->start();                            
     }    
 }
+
+void PluginSkin::PlayPauseNotify(bool pause)
+{
+    if(m_pluginwin)
+        m_pluginwin->PlayPausePluginL(pause);
+}
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h	Wed Apr 14 17:06:56 2010 +0300
@@ -416,6 +416,7 @@
         void setElement(WebCore::Element* aElement) {m_element = aElement;}
         void reCreatePlugin();
         TInt activeStreams() { return m_streams.size(); }
+        void PlayPauseNotify(bool pause);
 
   public:  // from MMemoryCollector
         TUint Collect(unsigned int aRequired);
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -152,7 +152,6 @@
 void PluginWin::windowChangedL()
 {
     if (m_fullscreen) return;
-    PlayPausePluginL();
     if (m_pluginskin->getNPPluginFucs() && m_pluginskin->getNPPluginFucs()->setwindow ){
         NPWindow  window;
     TRect rect( m_pluginskin->getPluginWinRect() );
@@ -700,19 +699,15 @@
       }	
     }
 }
-void PluginWin::PlayPausePluginL ()
+void PluginWin::PlayPausePluginL (bool pause)
 {
-    if(m_notifier) 
-    {
-        CBrCtl*   brCtl = control(m_pluginskin->frame());    
-        WebView*  view = brCtl->webView();
-        TBool scrolling = view->viewIsScrolling();
-        if (scrolling) {
-            m_notifier->NotifyL( MPluginNotifier::EPluginPause, (void*)1 );
-        }
-        else {
-            m_notifier->NotifyL( MPluginNotifier::EPluginPause, (void*)0 );
-        }
+    if(m_notifier) {        
+      if (pause) {
+          m_notifier->NotifyL( MPluginNotifier::EPluginPause, (void*)1 );
+      }
+      else {
+          m_notifier->NotifyL( MPluginNotifier::EPluginPause, (void*)0 );
+      }
     }
 }
 
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginWin.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginWin.h	Wed Apr 14 17:06:56 2010 +0300
@@ -477,7 +477,7 @@
     
     
     void ToggleScreenMode(bool aFullScreen);
-    void PlayPausePluginL ();
+    void PlayPausePluginL (bool pause);
     void HandlePointerEventFromPluginL(const TPointerEvent& aEvent);
     TBool HandleGesture(const TStmGestureEvent& aEvent);    
 	TBool Windowed() { return m_windowedPlugin;}
--- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -385,7 +385,7 @@
                     event->setDefaultHandled();
                 }
                 else {
-                    m_shouldEndEditing = !m_webView->fepTextEditor()->IsTextAreaFocused();
+                    m_shouldEndEditing = !(m_webView->fepTextEditor()->IsTextAreaFocused() || m_webView->fepTextEditor()->IsInputElementFocused());
                 }
                 break;
 
@@ -408,7 +408,7 @@
                     event->setDefaultHandled();
                 }
                 else {
-                    m_shouldEndEditing = !m_webView->fepTextEditor()->IsTextAreaFocused();
+                    m_shouldEndEditing = !(m_webView->fepTextEditor()->IsTextAreaFocused() || m_webView->fepTextEditor()->IsInputElementFocused());
                 }
                 break;
 
@@ -559,12 +559,9 @@
 //-----------------------------------------------------------------------------
 bool WebEditorClient::doTextFieldCommandFromEvent(Element*, KeyboardEvent*)
 {
-    /*
-     * Check here from WAP css property. Returning true will cause
-     * HTMLInputElement::defaultEventHandler(Event* evt) stop handling
-     * keyboard event end set it as default handled.
-     */
-    return !m_webView->fepTextEditor()->validateTextFormat();    
+     
+   notImplemented();
+   return false;
 }
 
 //-----------------------------------------------------------------------------
--- a/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -45,6 +45,7 @@
 #include "WebFormFillPopup.h"
 #include "WebPageFullScreenHandler.h"
 #include "PageScaler.h"
+#include "ThumbnailGenerator.h"
 #include "HistoryController.h"
 #include "HistoryEntry.h"
 #include "HistoryInterface.h"
@@ -662,7 +663,7 @@
             }
         case TBrCtlDefs::ECommandCancelFetch:
             {
-                m_webView->mainFrame()->stopLoading();
+                m_webView->Stop();
                 break;
             }
 
@@ -2088,8 +2089,14 @@
                 if ( entry ) {
                     CFbsBitmap* bitmap = entry->thumbnail();
                     if(!bitmap) {
-                        // get scaled page from PageScaler;
-                        bitmap = m_webView->pageScaler()->ScaledPage();
+                        if(m_webView->pageThumbnailGenerator()) {
+                            //get the page thumbnail  
+                            bitmap = m_webView->pageThumbnailGenerator()->PageThumbnail();
+                        }
+                        else {
+                           // get scaled page from PageScaler;
+                           bitmap = m_webView->pageScaler()->ScaledPage();
+                        }
                     }
                     if(bitmap) {
                         // update the history with new bitmap
@@ -2519,3 +2526,4 @@
 
 
 
+
--- a/webengine/osswebengine/WebKit/s60/webview/BrCtlLayoutObserverImpl.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/BrCtlLayoutObserverImpl.h	Wed Apr 14 17:06:56 2010 +0300
@@ -71,6 +71,7 @@
         * @return void
         */
         virtual void UpdateTitleL( const TDesC& /*aTitle*/ ) {}        
+
     };
 
 #endif      // BRCTLLAYOUTOBSERVERIMPL_H
--- a/webengine/osswebengine/WebKit/s60/webview/WebFepTextEditor.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebFepTextEditor.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -163,7 +163,11 @@
                     TUint permittedCase ( EAknEditorAllCaseModes ) ;
                     TUint inputMode( EAknEditorNullInputMode );
                     TUint permittedInputModes( EAknEditorAllInputModes );
+#ifdef BRDO_MULTITOUCH_ENABLED_FF
+                    TUint flags( EAknEditorFlagDefault | EAknEditorFlagSelectionVisible );
+#else
                     TUint flags( EAknEditorFlagDefault );
+#endif
                     TUint numericKeyMap( EAknEditorStandardNumberModeKeymap );
     
                     if (GetStateFromFormatMask(currentCase, permittedCase, inputMode, permittedInputModes, flags, numericKeyMap)) {
@@ -723,12 +727,21 @@
     CAknEdwinState* state = static_cast<CAknEdwinState*>(State(KNullUid));
 
     if ( IsTextAreaFocused() ) {
+#ifdef BRDO_MULTITOUCH_ENABLED_FF
     	// If in a TextArea, allow "enter" key presses to be newline/paragraph
     	state->SetFlags( flags | EAknEditorFlagUseSCTNumericCharmap
-    					 | EAknEditorFlagAllowEntersWithScrollDown );
+     | EAknEditorFlagAllowEntersWithScrollDown | EAknEditorFlagSelectionVisible );
+#else
+      state->SetFlags( flags | EAknEditorFlagUseSCTNumericCharmap
+            | EAknEditorFlagAllowEntersWithScrollDown );
+#endif
     	}
     else {
-        state->SetFlags(flags | EAknEditorFlagUseSCTNumericCharmap);
+#ifdef BRDO_MULTITOUCH_ENABLED_FF
+        state->SetFlags(flags | EAknEditorFlagUseSCTNumericCharmap | EAknEditorFlagSelectionVisible);
+#else
+        state->SetFlags(flags | EAknEditorFlagUseSCTNumericCharmap );
+#endif
     	}
 
     state->ReportAknEdStateEventL(MAknEdStateObserver::EAknEdwinStateFlagsUpdate);
@@ -834,6 +847,7 @@
             }
         }
         setSCTAvailability(true);
+        CAknEdwinState* state = static_cast<CAknEdwinState*>(State(KNullUid));
         switch( fm ) {
             case ELeUpSymPuc:       //A any upper case letter or symbolic
                 flags = EAknEditorFlagNoT9 | EAknEditorFlagFixedCase;
@@ -853,14 +867,14 @@
                 flags = EAknEditorFlagNoT9 | EAknEditorFlagFixedCase;
                 currentCase = EAknEditorUpperCase;
                 permittedCase= EAknEditorUpperCase;
-                inputMode = EAknEditorTextInputMode;
+                inputMode = state->CurrentInputMode();
                 permittedInputModes= EAknEditorTextInputMode;
             break;
             case ELeLoNumSymPuc:    //x any lower case, number or symbolic
                 flags = EAknEditorFlagNoT9 | EAknEditorFlagFixedCase;
                 currentCase = EAknEditorLowerCase;
                 permittedCase= EAknEditorLowerCase;
-                inputMode = EAknEditorTextInputMode;
+                inputMode = state->CurrentInputMode();
                 permittedInputModes= EAknEditorTextInputMode | EAknEditorNumericInputMode;
             break;
             case EAnyLow:           //m any lower character can be changed to upper
@@ -1479,3 +1493,9 @@
     return m_longKeyPress ;	
     }
 
+TBool CWebFepTextEditor::IsInputElementFocused() const
+    {
+    Frame* frame = m_webView->page()->focusController()->focusedOrMainFrame();
+    return ( frame && frame->document()->focusedNode() &&
+             frame->document()->focusedNode()->hasTagName(HTMLNames::inputTag));
+    }
--- a/webengine/osswebengine/WebKit/s60/webview/WebFepTextEditor.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebFepTextEditor.h	Wed Apr 14 17:06:56 2010 +0300
@@ -132,7 +132,7 @@
     void HandleMaskedDeleteText(WebCore::Frame* frame);
     bool IsWapMaskedModeInput(WebCore::Frame* frame);
     void EnableCcpuL();
-    
+    TBool IsInputElementFocused() const;
 private:
     void  findPrevSiblingTextLen(Node*, TInt&) const;
     Node* findTextNodeForCurPos(Node* aNode, TInt& aPos) const;
--- a/webengine/osswebengine/WebKit/s60/webview/WebFrame.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebFrame.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -282,7 +282,6 @@
 
 void WebFrame::notifyPluginsOfScrolling()
 {
-    setpluginToScroll(true);
     Frame* coreFrame = core(this);
     for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) {
         PassRefPtr<HTMLCollection> objects = frame->document()->objects();       
@@ -294,7 +293,6 @@
             notifyPluginOfScrolling(n->renderer()); 
 
         }
-    setpluginToScroll(false);
 }
 
 void WebFrame::notifyPluginOfScrolling(RenderObject* renderer)
@@ -593,4 +591,14 @@
     return 0;
 }
 
+void WebFrame::PlayPausePlugins(bool pause)
+{
+    PluginHandler* plghandler = StaticObjectsContainer::instance()->pluginHandler();
+    WTF::HashSet<PluginSkin*> pluginObjs = plghandler->pluginObjects();
+    for(WTF::HashSet<PluginSkin*>::iterator it = pluginObjs.begin() ;  it != pluginObjs.end() ; ++it ) {
+        static_cast<PluginSkin*> (*it)->PlayPauseNotify(pause);
+    }
+}
+
+
 // END OF FILE
--- a/webengine/osswebengine/WebKit/s60/webview/WebFrame.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebFrame.h	Wed Apr 14 17:06:56 2010 +0300
@@ -97,6 +97,7 @@
     void notifyPluginOfScrolling(WebCore::RenderObject* renderer);
     PluginSkin* focusedPlugin();
     WebFrame* frameAtPoint(const TPoint& pt_);
+    void PlayPausePlugins(bool pause);
     
     // utility functions
     int imageCount(bool visibleOnly_);
@@ -108,8 +109,6 @@
     bool executeScript(const WebCore::String& script);
     WebCore::Node* getClosestAnchorElement(const TPoint& pt, TPoint& newPos);
     
-    void setpluginToScroll(bool pluginScroll){m_pluginToScroll=pluginScroll;}
-    bool pluginToScroll(){return m_pluginToScroll;}
     
 private:
     WebFrame(const WebFrame&);                    // not implemented
--- a/webengine/osswebengine/WebKit/s60/webview/WebFrameView.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebFrameView.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -72,6 +72,10 @@
 
 void WebFrameView::draw(WebCoreGraphicsContext& gc, const TRect& r)
 {
+    if (m_topView->isPinchZoom())  {
+        return;
+    }    
+    
     TRect vr(visibleRect());
     TRect rect(r);
     if (isScaled() || m_frame->isFrameSet())
@@ -121,33 +125,31 @@
             frameClip.Move(-cpos);
             gc.setClippingRect( frameClip );
         }
-        
-        if (!m_topView->pinchZoomHandler()->isPinchActive()) {
-        
-            // draw frame border
-            CFbsBitGc& realgc = gc.gc();
-            if (m_hasBorder && !m_frame->isFrameSet()) {
-                // already moved the origin
-                TRect borderRect(TPoint(-1,-1),toViewCoords(m_frameRect).Size());
-                borderRect.iBr += TPoint(2,2);
-                realgc.SetPenColor(TRgb(0x55,0x55,0x55));
-                realgc.SetPenStyle(CGraphicsContext::ESolidPen);
-                realgc.SetBrushStyle(CGraphicsContext::ENullBrush);
-                realgc.SetPenSize(TSize(1,1));
-                realgc.DrawRect(borderRect);
-                // double border in bottom/right
-                borderRect.iBr += TPoint(1,1);
-                realgc.DrawRect(borderRect);
-            }
+  
+        // draw frame border
+        CFbsBitGc& realgc = gc.gc();
+        if (m_hasBorder && !m_frame->isFrameSet()) {
+            // already moved the origin
+            TRect borderRect(TPoint(-1,-1),toViewCoords(m_frameRect).Size());
+            borderRect.iBr += TPoint(2,2);
+            realgc.SetPenColor(TRgb(0x55,0x55,0x55));
+            realgc.SetPenStyle(CGraphicsContext::ESolidPen);
+            realgc.SetBrushStyle(CGraphicsContext::ENullBrush);
+            realgc.SetPenSize(TSize(1,1));
+            realgc.DrawRect(borderRect);
+            // double border in bottom/right
+            borderRect.iBr += TPoint(1,1);
+            realgc.DrawRect(borderRect);
+        }
 
-            // draw scrollbars
-            rect.Move( -m_contentPos );
-            WebCore::GraphicsContext ctx(&gc);
-            if (m_vScrollbar->isEnabled())
-                m_vScrollbar->paint(&ctx, rect);
-            if (m_hScrollbar->isEnabled())
-                m_hScrollbar->paint(&ctx, rect);
-        }
+        // draw scrollbars
+        rect.Move( -m_contentPos );
+        WebCore::GraphicsContext ctx(&gc);
+        if (m_vScrollbar->isEnabled())
+            m_vScrollbar->paint(&ctx, rect);
+        if (m_hScrollbar->isEnabled())
+            m_hScrollbar->paint(&ctx, rect);
+
         gc.cancelClipping();
         gc.restore(saved);
     }
--- a/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -33,20 +33,9 @@
 #include "WebFormFillPopup.h"
 #include "WebPageScrollHandler.h"
 #include "WebFepTextEditor.h"
-#include "WebCoreFrameBridge.h"
-#include "StaticObjectsContainer.h"
 #include "PluginSkin.h"
 #include "WebUtil.h"
-#include "Element.h"
-#include "Document.h"
-#include "Frame.h"
-#include "FrameView.h"
-#include "EventHandler.h"
-#include "EventNames.h"
-#include "HitTestResult.h"
-#include "MouseEvent.h"
 #include "WebPageFullScreenHandler.h"
-#include "PluginSkin.h"
 #include "PluginWin.h"
 #include "WebFrameBridge.h"
 #include "Page.h"
@@ -61,13 +50,7 @@
 #include "WebScrollingDeceleratorGH.h"
 
 #include "WebKitLogger.h"
-using namespace WebCore;
-using namespace EventNames;
 
-static const int KMinScrollAndTapInterval = 200000;				// 200 ms
-static const int KDoubleTapMinActivationInterval = 100000;     // 100 ms
-static const int KDoubleTapMaxActivationInterval = 500000;     // 500 ms
-static const int KDoubleTapIdleInterval = 700000;			// 700 ms, to prevent triple-tap effects
 #define IS_NAVIGATION_NONE      (m_webview->brCtl()->settings()->getNavigationType() == SettingsContainer::NavigationTypeNone)
 #define IS_TABBED_NAVIGATION    (m_webview->brCtl()->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed)
 
@@ -90,7 +73,6 @@
     : m_webview(view),
       m_isHighlighted(false),
       m_highlightedNode(NULL),
-      m_buttonDownTimer( this, &WebPointerEventHandler::buttonDownTimerCB ),
       m_ignoreTap(false),
       m_gestureInterface(NULL)
 {
@@ -102,7 +84,6 @@
 WebPointerEventHandler::~WebPointerEventHandler()
 {
    delete m_gestureInterface;
-    delete m_waiter;
 }
 
 //-----------------------------------------------------------------------------
@@ -115,7 +96,6 @@
 #else
   m_gestureInterface = NULL;
 #endif
-  m_waiter = new(ELeave) CActiveSchedulerWait();
 }
 
 
@@ -184,11 +164,14 @@
         {
             m_ignoreTap = false;
             handleTouchUp(aGesture);
+            m_webview->setScrolling(false);
             break;
         }
 
         case stmGesture::EGestureUidPan:
         {
+            if(!m_webview->isScrolling())
+                m_webview->setScrolling(true);
             handleMove(aGesture);
             break;
         }
@@ -226,7 +209,6 @@
 // ======================================================================
 void WebPointerEventHandler::handleTapL(const TStmGestureEvent& aGesture)
 {
-    m_buttonDownTimer.stop();
     m_lastTapEvent = m_currentEvent;
     if(!m_webview->inPageViewMode()){
     	doTapL();
@@ -260,9 +242,6 @@
     m_buttonDownEvent = m_currentEvent;
     m_highlightPos = aGesture.CurrentPos();
 
-    if ( !m_buttonDownTimer.isActive() && !m_webview->inPageViewMode()){
-        m_buttonDownTimer.startOneShot(0.1f);
-    }
 
     if (!IS_NAVIGATION_NONE) {
         m_webview->pageScrollHandler()->handleTouchDownGH(aGesture);
@@ -279,20 +258,8 @@
             }
         }
     }
-
-    /*
-     * After introducing "link selection" pointer down action is done in
-     * buttondown timer callback. When "down" gesture event is arrived we start
-     * timer end exit, so gesture helper is ready to deliver next gesture event.
-     * Meanwhile the processing of the first gesture event hasn't been finished yet.
-     * The gesture helper doesn't "know" about our plans to handle the event inside
-     * timer callback and only way for us to "tell" about this is to stop RunL()
-     * of CGestureEventSender (HandleGestureL() is inside it) and finish buttondown
-     * timer callback first.
-     */
-    if ( m_buttonDownTimer.isActive()){
-        m_waiter->Start();
-    }
+    
+    doTouchDownL();
 }
 
 // ======================================================================
@@ -318,7 +285,7 @@
     TPoint curPos =  aGesture.CurrentPos();
     PluginHandler* pluginHandler = WebCore::StaticObjectsContainer::instance()->pluginHandler();
     pluginHandler->setPluginToActivate(NULL);
-    m_buttonDownTimer.stop();
+
     if (IS_NAVIGATION_NONE) {
         Frame* frm = m_webview->page()->focusController()->focusedOrMainFrame();
         m_webview->sendMouseEventToEngine(TPointerEvent::EMove, curPos, frm);
@@ -380,24 +347,6 @@
 }
 
 //-----------------------------------------------------------------------------
-// WebPointerEventHandler::checkForEventListener
-//-----------------------------------------------------------------------------
-bool WebPointerEventHandler::checkForEventListener(WebCore::Node* node)
-{
-    EventTargetNode* etnfound = NULL;
-    for (Node* np = node; np; np = np->parentNode()) {
-        //check for a mouseover event listener
-        if (np->isEventTargetNode()) {
-            if (m_webview->page()->chrome()->client()->elementVisibilityChanged()) {
-                return true;
-            }
-        }
-    }
-    return false;
-}
-
-
-//-----------------------------------------------------------------------------
 // WebPointerEventHandler::highlitableElement
 //-----------------------------------------------------------------------------
 TBrCtlDefs::TBrCtlElementType WebPointerEventHandler::highlitableElement()
@@ -584,10 +533,8 @@
 //-----------------------------------------------------------------------------
 // WebPointerEventHandler::buttonDownTimerCallback
 //-----------------------------------------------------------------------------
-void WebPointerEventHandler::buttonDownTimerCB(Timer<WebPointerEventHandler>* t)
+void WebPointerEventHandler::doTouchDownL()
 {
-    m_buttonDownTimer.stop();
-
     Frame* coreFrame = core(m_webview->mainFrame());
     TPointerEvent event;
     
@@ -607,9 +554,8 @@
      * set it through FocuseController::setFocusedNode()
      */
     if (IS_TABBED_NAVIGATION &&
-        elType == TBrCtlDefs::EElementInputBox ||
-        elType == TBrCtlDefs::EElementTextAreaBox) {
-        coreFrame->document()->setFocusedNode(NULL);
+       (elType == TBrCtlDefs::EElementInputBox || elType == TBrCtlDefs::EElementTextAreaBox)) {
+           coreFrame->document()->setFocusedNode(NULL);
     }
 
     if (!IS_NAVIGATION_NONE) {
@@ -619,9 +565,6 @@
         m_webview->sendMouseEventToEngine(TPointerEvent::EButton1Down, m_highlightPos, coreFrame);
     }
 
-    if (m_waiter->IsStarted()) {
-        m_waiter->AsyncStop();
-    }
 }
 
 
--- a/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.h	Wed Apr 14 17:06:56 2010 +0300
@@ -47,13 +47,12 @@
     void HandleGestureEventL(const TStmGestureEvent& aGesture);
     
 private:    
-    bool checkForEventListener(WebCore::Node* node);
     bool canDehighlight(const TPoint &aPoint);
     void dehighlight();
 
     bool isHighlitableElement(TBrCtlDefs::TBrCtlElementType& elType);
     TBrCtlDefs::TBrCtlElementType highlitableElement();
-    void buttonDownTimerCB(WebCore::Timer<WebPointerEventHandler>* t);
+    void doTouchDownL();
     void handleTouchDownL(const TStmGestureEvent& aGesture);
     void handleTouchUp(const TStmGestureEvent& aGesture);
     void handleTapL(const TStmGestureEvent& aGesture);
@@ -76,11 +75,7 @@
     TPoint m_highlightPos;
     WebCore::Node* m_highlightedNode;
     TPointerEvent m_currentEvent;
-    WebCore::Timer<WebPointerEventHandler> m_buttonDownTimer; 
-    
-    TPointerEvent m_lastPointerEvent;
     bool   m_ignoreTap; 
-    CActiveSchedulerWait*    m_waiter; 
     WebGestureInterface*  m_gestureInterface; 
     
 };
--- a/webengine/osswebengine/WebKit/s60/webview/WebScrollingDeceleratorGH.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebScrollingDeceleratorGH.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -108,6 +108,7 @@
 { 
     m_decelelatorSwitch = false;
     if (m_decelTimer->IsActive()) {
+        m_webView.setScrolling(false);
         m_decelTimer->Cancel();
     }
 }
@@ -135,11 +136,13 @@
     
     m_numscrollsteps = 0;
     if (m_decelTimer->IsActive()) {
+        m_webView.setScrolling(false);
         m_decelTimer->Cancel();
     }
     
     WebFrameView* scrollingView = m_webView.pageScrollHandler()->currentScrollingFrameView();
     if (scrollingView) {
+        m_webView.setScrolling(true);
         m_startPos = scrollingView->contentPos();
         m_lastPos = m_startPos;
         m_decelTimer->Start(0, KScrollIntervalTimeout, 
@@ -190,6 +193,7 @@
         if (m_scrollbarDrawer) {
             m_scrollbarDrawer->fadeScrollbar();
         }
+        m_webView.setScrolling(false);
         m_decelTimer->Cancel();
         handler->clearScrollingElement();
         m_webView.setViewIsScrolling(false);
--- a/webengine/osswebengine/WebKit/s60/webview/WebView.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebView.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -99,6 +99,7 @@
 #include "WebScrollbarDrawer.h"
 #include "EventNames.h"
 #include "Editor.h"
+#include "ThumbnailGenerator.h"
 
 using namespace WebCore;
 using namespace EventNames;
@@ -205,6 +206,8 @@
 , m_pinchZoomHandler(NULL)
 , m_isPinchZoom(false)
 , m_drawsMissed(0)
+, m_scroll(false)
+, m_thumbnailGenerator(NULL)
 {
 }
 
@@ -257,6 +260,7 @@
     delete m_pageFullScreenHandler;
     delete m_bridge;
     delete m_frameView;
+    delete m_thumbnailGenerator;    
 }
 
 // -----------------------------------------------------------------------------
@@ -338,8 +342,15 @@
         m_pageScalerEnabled = false;
     }
     else  {
-        initializePageScalerL();
-        m_pageScalerEnabled = true;
+        if(m_brctl->capabilities() & TBrCtlDefs::ECapabilityGraphicalPage)
+            {
+            initializePageScalerL();
+            m_pageScalerEnabled = true;
+            }
+        else if(m_brctl->capabilities() & TBrCtlDefs::ECapabilityGraphicalHistory)
+            {
+            m_thumbnailGenerator = CThumbnailGenerator::NewL(*this);
+            }        
     }
     if (m_brctl->capabilities() & TBrCtlDefs::ECapabilityAutoFormFill) {
         m_webFormFill = new WebFormFill(this);
@@ -813,6 +824,9 @@
         m_pageScaler->DocumentCompleted();
         TRAP_IGNORE(m_pageScaler->DocumentChangedL());
     }
+    else if(m_thumbnailGenerator) {
+        TRAP_IGNORE(m_thumbnailGenerator->CreatePageThumbnailL());    
+    }    
 
     Node* focusedNode = NULL;
     Frame* focusedFrame = page()->focusController()->focusedFrame();
@@ -1730,8 +1744,16 @@
 
     if ( !aScroll && aFullScreen )
     {
-        // update the history with new bitmap
-        CFbsBitmap* scaledPage = m_pageScaler->ScaledPage();
+    	  // update the history with new bitmap
+        CFbsBitmap* scaledPage = NULL;
+        if(m_thumbnailGenerator)
+            {
+            scaledPage = m_thumbnailGenerator->PageThumbnail();
+            }
+        else if(m_pageScaler)
+            {
+            scaledPage = m_pageScaler->ScaledPage();
+            }
         if (scaledPage) {
             // Get the browser control rect
             TRAP_IGNORE( m_brctl->historyHandler()->historyController()->updateHistoryEntryThumbnailL(scaledPage));
@@ -2777,6 +2799,11 @@
 
 void WebView::Stop()
 {
+	  if (m_thumbnailGenerator)
+        {
+        //Create a thumbnail for page history
+        TRAP_IGNORE(m_thumbnailGenerator->CreatePageThumbnailL());
+        }
     mainFrame()->stopLoading();
 }
 void WebView::synchRequestPending(bool flag)
@@ -2996,7 +3023,6 @@
     m_zoomLevelChangedByUser = true;
     m_dirtyZoomMode = true;
     m_isPluginsVisible = false;
-    mainFrame()->makeVisiblePlugins(false);
     m_isPinchZoom = true;
 
     if (zoomLevel > m_startZoomLevel) {
@@ -3112,4 +3138,11 @@
       }
 }
 
+
+void WebView::setScrolling(bool scroll)
+{
+    m_scroll = scroll;
+    mainFrame()->PlayPausePlugins(m_scroll);
+}
+
 // END OF FILE
--- a/webengine/osswebengine/WebKit/s60/webview/WebView.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebView.h	Wed Apr 14 17:06:56 2010 +0300
@@ -68,6 +68,7 @@
 class WebFrameView;
 class WebFrameBridge;
 class WebPagePinchZoomHandler;
+class CThumbnailGenerator;
 
 
 const TUint KMouseEventFired = 0x00000001;
@@ -160,6 +161,7 @@
         void scrollBuffer(TPoint aTo, TPoint aFrom, TBool aMayUseCopyScroll);
         TRect offscreenRect() const {return m_offscreenrect;}
         CPageScaler* pageScaler() const{ return m_pageScaler; }
+        CThumbnailGenerator* pageThumbnailGenerator()const { return m_thumbnailGenerator;}
         //void updateScrollBarsL(CEikScrollBar::TOrientation aOrientation, const TInt aThumbPos, const int aScrollSpan);
         int scalingFactor() const;
         void openUrl(const TDesC& url);
@@ -369,6 +371,12 @@
         * Recreate Plugins in case of Retry Connection
         */
         void reCreatePlugins();
+        
+        TBool isPinchZoom() {return m_isPinchZoom; }
+        
+        void setScrolling(bool scroll);
+         
+        bool isScrolling() { return m_scroll; }
 
     public: // from MPageScalerCallback
         /**
@@ -589,6 +597,7 @@
         WebPageFullScreenHandler* m_pageFullScreenHandler;  // owned
         bool m_viewIsScrolling;
         bool m_viewIsFastScrolling;
+        bool m_scroll;
 
         // synchronous requests
         bool                m_synchRequestPending;
@@ -606,6 +615,7 @@
         TBool                    m_isPinchZoom;
         TRealPoint               m_pinchDocDelta;
         int                      m_drawsMissed;
+        CThumbnailGenerator* m_thumbnailGenerator;
     };
 
 #endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/webkit/s60/webview/ThumbnailGenerator.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -0,0 +1,149 @@
+/*
+* 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 the License "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:  Page thumbnail generator class definition
+*
+*/
+
+
+// INCLUDE FILES
+#include "ThumbnailGenerator.h"
+
+#include <fbs.h>
+#include <bitstd.h>
+#include <w32std.h>
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// ============================= CLASSES METHODS===============================
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+CThumbnailGenerator* CThumbnailGenerator::NewL(MPageScalerCallback& aCallback)
+    {
+        CThumbnailGenerator* self = new( ELeave ) CThumbnailGenerator(aCallback);
+        
+        CleanupStack::PushL( self );
+        self->ConstructL();
+        CleanupStack::Pop();
+        
+        return self;
+    
+    }
+
+CThumbnailGenerator::CThumbnailGenerator(MPageScalerCallback& aCallback)
+    : iCallback(&aCallback),
+    iThumbnailBitmap(NULL),
+    iThumbnailBitmapDevice(NULL),
+    iThumbnailBitmapGc(NULL)
+    {
+    }
+
+void CThumbnailGenerator::ConstructL()
+    {
+    }
+
+CThumbnailGenerator::~CThumbnailGenerator()
+    {
+        delete iThumbnailBitmap;
+        delete iThumbnailBitmapDevice;
+        delete iThumbnailBitmapGc;
+    }
+
+TBool CThumbnailGenerator::CreateBitMapL(TSize aSize, CFbsBitmap*& aBm, CFbsBitmapDevice*& aDev, CFbsBitGc*& aGc)
+    {
+    if ( aSize.iWidth==0 || aSize.iHeight==0 )
+        {
+        // delete bitmap if there was one
+        delete aGc;
+        delete aDev;
+        delete aBm;
+        aGc = 0;
+        aDev = 0;
+        aBm = 0;
+        return EFalse;
+        }
+    else
+        {
+        if ( aBm && aSize != aBm->SizeInPixels() )
+            {
+            // resize if different size
+            User::LeaveIfError(aDev->Resize(aSize));
+            aGc->Resized();
+            }
+        else if ( !aBm )
+            {
+            // create new
+            CFbsBitmap* bm = new (ELeave) CFbsBitmap;
+            CleanupStack::PushL(bm);
+            User::LeaveIfError(bm->Create(aSize,EColor64K));
+            CFbsBitmapDevice* dev = CFbsBitmapDevice::NewL(bm);
+            CleanupStack::PushL(dev);
+            User::LeaveIfError(dev->CreateContext(aGc));
+            aDev = dev;
+            aBm = bm;
+            CleanupStack::Pop(2);
+            }
+        }
+    return ETrue;
+    }
+
+void CThumbnailGenerator::CreatePageThumbnailL()
+    {
+    //Get the thumnail size
+    //if in portrait mode, take Thumbnail(60*height, height)
+    //In lanadscape mode, take Thumbnail(60*width,width)
+    
+    TInt thumbnailWidth;
+    TInt thumbnailHeight;
+    TRect clientRect = iCallback->DocumentViewport();
+    if (clientRect.Width() > clientRect.Height())
+        {
+        thumbnailWidth = clientRect.Width() * 60 / 100;
+        thumbnailHeight = clientRect.Width();
+        }
+    else
+        {
+        thumbnailWidth = clientRect.Height() * 60 / 100;
+        thumbnailHeight = clientRect.Height();
+        }
+        
+    TRect viewRect = TRect(0, 0, thumbnailWidth, thumbnailHeight);
+    if (!CreateBitMapL(viewRect.Size(), iThumbnailBitmap, iThumbnailBitmapDevice, iThumbnailBitmapGc))
+        {
+        return;
+        }
+    
+    iCallback->DrawDocumentPart(*iThumbnailBitmapGc,iThumbnailBitmap,viewRect);
+    TSize bitmapSize = iThumbnailBitmap->SizeInPixels();
+    iCallback->ScaledPageChanged(viewRect, true, false);
+    }
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/webkit/s60/webview/ThumbnailGenerator.h	Wed Apr 14 17:06:56 2010 +0300
@@ -0,0 +1,64 @@
+/*
+* 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 the License "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:   Page thumbnail generator class
+*
+*/
+
+
+
+#ifndef THUMBNAILGENERATOR_H
+#define THUMBNAILGENERATOR_H
+
+//  INCLUDES
+#include <gdi.h>
+#include "PageScaler.h"
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CFbsBitGc;
+class CFbsBitmap;
+class CFbsBitmapDevice;
+
+class CThumbnailGenerator : public CBase
+    {
+    public:  // Constructors and destructor
+    
+        static CThumbnailGenerator* NewL(MPageScalerCallback& aCallback);
+        void ConstructL();
+        virtual ~CThumbnailGenerator();
+        
+        void CreatePageThumbnailL();
+        CFbsBitmap* PageThumbnail() {return iThumbnailBitmap;}
+    
+    protected:
+        CThumbnailGenerator(MPageScalerCallback& aCallback);
+        TBool CreateBitMapL(TSize aSize, CFbsBitmap*& aBm, CFbsBitmapDevice*& aDev, CFbsBitGc*& aGc);
+        
+    private:
+        MPageScalerCallback* iCallback;       
+        CFbsBitmap* iThumbnailBitmap; //owned
+        CFbsBitmapDevice* iThumbnailBitmapDevice; //owned
+        CFbsBitGc* iThumbnailBitmapGc; //owned       
+    };
+
+#endif //THUMBNAILGENERATOR_H
+
+// End of File
--- a/webengine/osswebengine/webkit/s60/webview/WebPagePinchZoomHandler.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/webkit/s60/webview/WebPagePinchZoomHandler.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -63,6 +63,7 @@
 , m_zoomStepSize(0)
 , m_pinchActive(false)
 , m_pinchCenter(0,0)
+, m_isPluginsVisible(true)
 {
 }
 
@@ -186,6 +187,10 @@
 // -----------------------------------------------------------------------------
 void WebPagePinchZoomHandler::setZoomLevel(int zoomLevel)
 {
+    if (m_isPluginsVisible) {
+        m_webView->mainFrame()->makeVisiblePlugins(false);
+        m_isPluginsVisible = false;
+    }
     m_webView->setPinchBitmapZoomLevel(zoomLevel);
 }
 
@@ -207,6 +212,7 @@
 // -----------------------------------------------------------------------------
 void WebPagePinchZoomHandler::updateBitmap(void)
 {
+    m_isPluginsVisible = true;
     m_bitmapUpdateTimer->Cancel();
     m_webView->restoreZoomLevel(m_webView->scalingFactor());
     //update the plugin rect after pinch zoom exit
--- a/webengine/osswebengine/webkit/s60/webview/WebPagePinchZoomHandler.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/osswebengine/webkit/s60/webview/WebPagePinchZoomHandler.h	Wed Apr 14 17:06:56 2010 +0300
@@ -117,6 +117,7 @@
     TInt             m_zoomStepSize;
     bool             m_pinchActive;
     TPoint           m_pinchCenter;
+    bool             m_isPluginsVisible;
 
 };
 
--- a/webengine/webkitutils/HistoryProvider/HistoryController.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/webkitutils/HistoryProvider/HistoryController.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -258,6 +258,9 @@
         HistoryEntry* entry = entryByIndex(m_currentIndex);
         if (entry) {
             TSize bmsize = bitmap->SizeInPixels();
+#ifdef BRDO_MULTITOUCH_ENABLED_FF            
+            entry->storeThumbnail(bitmap, TRect(0,0,bmsize.iWidth, bmsize.iHeight));
+#else
             TRect parentControlRect = m_historyCallback->parent()->Rect();
             int historyViewWidth = parentControlRect.Width();
             int historyViewHeight( parentControlRect.Height());
@@ -265,7 +268,8 @@
             int maxDimension = (historyViewWidth > historyViewHeight)? historyViewWidth:historyViewHeight;
             int thumbnailHeight = Min(bmsize.iHeight, maxDimension*KCenterThumbnailHeightPercent/100);
             int thumbnailWidth = Min(bmsize.iWidth, maxDimension*KCenterThumbnailWidthPercent/100);
-            entry->storeThumbnail(bitmap, TRect(0,0,thumbnailWidth, thumbnailHeight));
+            entry->storeThumbnail(bitmap, TRect(0,0,thumbnailWidth, thumbnailHeight));            
+#endif
         }
     }
 }
--- a/webengine/webkitutils/HistoryProvider/HistoryView.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/webkitutils/HistoryProvider/HistoryView.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -46,8 +46,9 @@
 const int KMinAnimFactor = 0;
 const int KMinimumScroll = 20;
 
-#define KCenterImageBorderColor KRgbRed
+#define KCenterImageBorderColor TRgb(179,179,181)
 #define KSideImageBorderColor KRgbBlack
+#define KSideImageMaskColor TRgb( 170, 170, 170, 150 )
 
 // ============================= LOCAL FUNCTIONS ===============================
 
@@ -265,6 +266,15 @@
 {
     m_bitmapContext->Clear();
     m_bitmapContext->Reset();
+    
+    m_bitmapContext->SetPenColor(TRgb(45,44,50));
+    m_bitmapContext->SetPenStyle(CGraphicsContext::ESolidPen);
+    m_bitmapContext->SetBrushColor(KRgbDarkGray);
+    m_bitmapContext->SetBrushStyle(CGraphicsContext::ESolidBrush);
+    m_bitmapContext->DrawRect(Rect());
+	m_bitmapContext->SetBrushStyle(CGraphicsContext::ENullBrush);
+    m_bitmapContext->SetPenStyle(CGraphicsContext::ENullPen);
+	
 
     // updateDisplay something to the bitmap
     m_centerEntry = m_historyController->entryByIndex( m_centerPageIndex );
@@ -277,8 +287,11 @@
         if (leftEntry->thumbnail()) {
             m_bitmapContext->BitBlt( m_leftPlaceHolderRect.iTl, leftEntry->thumbnail(), TRect(TPoint(0,0), m_leftPlaceHolderRect.Size()) );
         }
-        m_bitmapContext->SetPenColor( KSideImageBorderColor );
+        
+        m_bitmapContext->SetBrushColor ( KSideImageMaskColor );
+        m_bitmapContext->SetBrushStyle ( CWindowGc::ESolidBrush );
         m_bitmapContext->DrawRect(m_leftPlaceHolderRect);
+        m_bitmapContext->SetBrushStyle(CGraphicsContext::ENullBrush);
     }
     // updateDisplay the next thumbnail
     if (rightEntry) {
@@ -288,8 +301,11 @@
         if (rightEntry->thumbnail()) {
             m_bitmapContext->BitBlt( m_rightPlaceHolderRect.iTl, rightEntry->thumbnail(), TRect(TPoint(0,0), m_rightPlaceHolderRect.Size()) );
         }
-        m_bitmapContext->SetPenColor( KSideImageBorderColor );
+        
+        m_bitmapContext->SetBrushColor ( KSideImageMaskColor );
+        m_bitmapContext->SetBrushStyle ( CWindowGc::ESolidBrush );
         m_bitmapContext->DrawRect(m_rightPlaceHolderRect);
+        m_bitmapContext->SetBrushStyle(CGraphicsContext::ENullBrush);
     }
     // updateDisplay the center thumbnail
     if (m_centerEntry ) {
@@ -297,16 +313,24 @@
             TRAP_IGNORE(m_centerEntry->constructThumbnailL());
         }
         if (m_centerEntry->thumbnail()) {
+            m_bitmapContext->SetBrushColor(KRgbWhite);
+            m_bitmapContext->SetBrushStyle(CGraphicsContext::ESolidBrush);
+            m_bitmapContext->DrawRect(m_centerPlaceHolderRect);    
+            m_bitmapContext->SetBrushStyle(CGraphicsContext::ENullBrush);
+            TSize bitSize = m_centerEntry->thumbnail()->SizeInPixels();
             m_bitmapContext->BitBlt( m_centerPlaceHolderRect.iTl, m_centerEntry->thumbnail(), TRect(TPoint(0,0), m_centerPlaceHolderRect.Size()) );
         }
     }
+    
+    //Draw border for center thumbnail
+    m_bitmapContext->SetPenStyle( CGraphicsContext:: ESolidPen );
     m_bitmapContext->SetPenColor( KCenterImageBorderColor );
-
     m_bitmapContext->DrawRect( m_centerPlaceHolderRect );
 
     // Reset Brush
     m_bitmapContext->SetBrushColor(TRgb(255,255,255));
     m_bitmapContext->SetBrushStyle(CGraphicsContext::ENullBrush);
+    m_bitmapContext->SetPenStyle(CGraphicsContext::ENullPen);
   // updateState(-1);
 }
 
--- a/webengine/webkitutils/HistoryProvider/HistoryView.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/webkitutils/HistoryProvider/HistoryView.h	Wed Apr 14 17:06:56 2010 +0300
@@ -37,10 +37,10 @@
 
 
 // CONSTANTS
-const int KCenterThumbnailWidthPercent = 50;
-const int KCenterThumbnailHeightPercent = 90;
-const int KSideThumbnailWidthPercent = 25;
-const int KSideThumbnailHeightPercent = 70;
+const int KCenterThumbnailWidthPercent = 60;
+const int KCenterThumbnailHeightPercent = 75;
+const int KSideThumbnailWidthPercent = 20;
+const int KSideThumbnailHeightPercent = 60;
 
 // FORWARD DECLARATIONS
 class HistoryController;
--- a/webengine/webkitutils/stmgesturefw/inc/gesturehelpereventsender.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/webkitutils/stmgesturefw/inc/gesturehelpereventsender.h	Wed Apr 14 17:06:56 2010 +0300
@@ -22,30 +22,20 @@
 #include <coemain.h>
 #include "stmgestureinterface.h"
 
-NONSHARABLE_CLASS(CGestureEventSender) : public CActive
+NONSHARABLE_CLASS(CGestureEventSender) : public CBase
     {
 public:
-    enum TEventSenderState
-        {
-        ENoEvents,
-        EEventsReady,
-        EBusy
-        };
+
     static CGestureEventSender* NewL(  MStmGestureListener& aObserver );
     ~CGestureEventSender();
-    TInt AddEvent(TStmGestureUid aUid, const MStmGesture* aGestureEvent);
-protected:    
-    void RunL();
-    void DoCancel();
-    TInt RunError(TInt aError);
+    void AddEvent(TStmGestureUid aUid, const MStmGesture* aGestureEvent);
+
 private:
     CGestureEventSender(MStmGestureListener& aObserver);
-    void Complete();
     void EmitEventL( const TStmGestureEvent& aGestureEvent );
     
+private:    
     MStmGestureListener& iObserver;
-    RArray< TStmGestureEvent >  iEvents;
-    TEventSenderState iState;
     };
 
 #endif /* GESTUREHELPEREVENTSENDER_H_ */
--- a/webengine/webkitutils/stmgesturefw/inc/stateengine.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/webkitutils/stmgesturefw/inc/stateengine.h	Wed Apr 14 17:06:56 2010 +0300
@@ -173,6 +173,7 @@
     TTime m_lastFilteredMessageTime ;
 
 	CStateEngineConfiguration* m_config ;
+	bool isStatemachineBlocked;
 
 };
 }   // namespace
--- a/webengine/webkitutils/stmgesturefw/src/gesturehelpereventsender.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/webkitutils/stmgesturefw/src/gesturehelpereventsender.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -11,14 +11,12 @@
 *
 * Contributors:
 *
-* Description:  Gesture helper implementation
+* Description:  Gesture event sender implementation
 *
 */
 
 #include "gesturehelpereventsender.h"
 
-const TInt KEventsQueueGranularity = 4;
-
 CGestureEventSender* CGestureEventSender::NewL( MStmGestureListener& aObserver )
     {
     CGestureEventSender* self = new (ELeave) CGestureEventSender(aObserver);
@@ -26,25 +24,17 @@
     return self;
     }
 
-CGestureEventSender::CGestureEventSender( MStmGestureListener& aObserver ) : 
-                                          CActive(EPriorityUserInput - 1),
-                                          iObserver(aObserver), iEvents(KEventsQueueGranularity)
+CGestureEventSender::CGestureEventSender( MStmGestureListener& aObserver ) 
+    :iObserver(aObserver)
     { 
-    CActiveScheduler::Add(this);
     }
 
 CGestureEventSender::~CGestureEventSender()
     {
-    if (IsActive()) 
-        {
-        Cancel();
-        }
-
-    iEvents.Close();
     }
 
-TInt CGestureEventSender::AddEvent(TStmGestureUid aUid, const MStmGesture* aGestureEvent)
-    {
+void CGestureEventSender::AddEvent(TStmGestureUid aUid, const MStmGesture* aGestureEvent)
+{
     TStmGestureEvent event;
     if (aGestureEvent) {
         event.SetCode(aGestureEvent->gestureUid());
@@ -58,75 +48,20 @@
     }
     else {
         if (aUid != stmGesture::EGestureUidPinch) {
-            return iEvents.Count();
+            return;
         }    
         event.SetCode(aUid);
         event.SetGestureState(EGestureExit);
     }
         
-    iEvents.Append(event);
-    
+    EmitEventL(event);
     if (event.Code() == stmGesture::EGestureUidTap) {
         event.SetCode(stmGesture::EGestureUidRelease);
-        iEvents.Append(event);
-    }
-
-    if (iState != EBusy)
-        {
-        iState = EEventsReady;
-        }
-    
-    if (!IsActive()) 
-        {
-        Complete();
-        }
-    return iEvents.Count();
-    }
-
-void CGestureEventSender::Complete()
-    {
-    TRequestStatus* status = &iStatus;
-    User::RequestComplete(status, KErrNone);
-    SetActive();
+        EmitEventL(event);
     }
-
-void CGestureEventSender::RunL()
-    {
-    switch (iState)
-        {
-        case EEventsReady:
-            {
-            if (iEvents.Count() > 0)
-                {
-                TInt count = iEvents.Count();
-                for (int i = 0;  i < count; i++)
-                    {
-                    TStmGestureEvent& gst = iEvents[i];
-                    EmitEventL(gst);
-                    }
-                }
-            iEvents.Reset();
-            iState = ENoEvents;
-            break;
-            }
-        }
-    }
+}
 
 void CGestureEventSender::EmitEventL( const TStmGestureEvent& aGesture )
-    {
-    iState = EBusy;
+{
     iObserver.HandleGestureEventL(aGesture);
-    iState = EEventsReady;
-    }
-
-TInt CGestureEventSender::RunError(TInt aError)
-    {
-    iEvents.Reset();
-    return aError;
-    }
-
-void CGestureEventSender::DoCancel()
-    {
-    iEvents.Reset();
-    iState = ENoEvents;
-    }
+}
--- a/webengine/webkitutils/stmgesturefw/src/stateengine.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/webkitutils/stmgesturefw/src/stateengine.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -487,6 +487,7 @@
     m_timerif = atimerif ;
     m_currentState = EInit ;
     m_index = aIndex ;
+    isStatemachineBlocked = false;
 }
 
 CStateEngine::~CStateEngine()
@@ -941,9 +942,11 @@
 {
     // We get an event into m_hwe by this moment, lets kick the state machine
     m_wasFiltered = ETrue ;
+    if (isStatemachineBlocked)
+        return m_wasFiltered;
 
     CalculateDelta() ;
-    turnStateMachine() ;
+    turnStateMachine();
 
     m_previousPointerEventPosition = m_hwe.iPosition ;
     return m_wasFiltered ;
@@ -1085,6 +1088,7 @@
     m_eventConsumed = false ;   // run the loop until the event has been consumed
     // Now run trough the motions of the state elements, and prepare to change to next state while doing so.
     // If the state elements set the m_eventConsumed then all is done
+    isStatemachineBlocked = true;
     while (!m_eventConsumed)
     {
         int i = 0 ;
@@ -1131,6 +1135,7 @@
         if (m_config->m_enableLogging) DebugPrintState(nextState) ;
         m_currentState = nextState ;    // Change to the next state
     }
+    isStatemachineBlocked = false;
 }
 TTimeIntervalMicroSeconds CStateEngine::getInterval()
 {
--- a/webengine/widgetinstaller/Src/WidgetInstaller.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/widgetinstaller/Src/WidgetInstaller.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -64,7 +64,7 @@
 _LIT( KWidgetAppDir, "\\private\\10282822\\" );
 _LIT( KBackSlash, "\\" );
 // todo: other keystring.dat for preference
-_LIT(KWidgetPref, "prefs.dat");
+_LIT(KWidgetPref, "prefs.dat*");
 
 
 // =========================== MEMBER FUNCTIONS ===============================
@@ -776,9 +776,14 @@
 
     //////////////////////////////////////////////////////////////////////////////////////////////////
     // delete "\private\[WidgetUIUid]\bundleID\prefs.dat"
+    CFileMan* fileManager = CFileMan::NewL( iRfs );
+    CleanupStack::PushL( fileManager );
+    	 
     TFileName   widgetPref( *newDir );
     widgetPref.Append(KWidgetPref);
-    err = iRfs.Delete( widgetPref );
+    
+	err = fileManager->Delete(widgetPref);
+    CleanupStack::PopAndDestroy( fileManager );  // fileMananger       	
     // it's ok not to have pref.dat
     if( err != KErrNone && err != KErrNotFound )
         {
--- a/webengine/widgetinstaller/Src/WidgetRegistrationManager.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/widgetinstaller/Src/WidgetRegistrationManager.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -125,12 +125,6 @@
     RApaLsSession apparcSession;
     CleanupClosePushL( apparcSession );
     User::LeaveIfError( apparcSession.Connect() );
-    // TODO move this where it is only done once
-    apparcSession.PrepareNonNativeApplicationsUpdatesL();
-    apparcSession.DeregisterNonNativeApplicationL( KUidWidgetLauncher );
-    apparcSession.DeregisterNonNativeApplicationTypeL( KUidWidgetLauncher );
-    apparcSession.CommitNonNativeApplicationsUpdatesL();
-    // TODO end
 
     // reasonably like an acceptable file name
     TBuf<KWidgetRegistryVal> appName;
--- a/webengine/wmlengine/src/utils/src/CBrowserSettings.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/wmlengine/src/utils/src/CBrowserSettings.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -102,7 +102,7 @@
     iIsEmbedded = NW_FALSE;
     iIMEINotifyEnabled = NW_UINT8_CAST( GetIntValue( KBrowserIMEINotification ));
     iSendReferrerHeader = NW_UINT8_CAST( GetIntValue( KBrowserSendReferrerHeader ));
-    //iHttpSecurityWarnings = GetBooleanValue( KWmlBrowserHttpSecurityWarnings );
+    iHttpSecurityWarnings = GetBooleanValue( KBrowserNGShowSecurityWarnings );
     iSecUI = GetBooleanValue( KBrowserSecurityUI );
 
     iIapId = 0;
@@ -377,11 +377,11 @@
 CBrowserSettings::GetHttpSecurityWarnings(void)
 {
   // iSecUI = 1 means "supressing security UI"
-  if( iSecUI )
+  /*if( iSecUI )
     {
     return NW_FALSE;
     }
-
+ */
   return iHttpSecurityWarnings;
 }
 
@@ -462,3 +462,4 @@
 }
 
 
+
--- a/webengine/wrtharvester/inc/sapidatapluginuids.hrh	Wed Mar 31 23:16:40 2010 +0300
+++ b/webengine/wrtharvester/inc/sapidatapluginuids.hrh	Wed Apr 14 17:06:56 2010 +0300
@@ -19,8 +19,6 @@
 #ifndef SAPIDATAPLUGINUIDS_HRH
 #define SAPIDATAPLUGINUIDS_HRH
 
-#include <aicontentpublisheruid.hrh>
-
 /**
  * Ecom dll uid for AI Data plug-in.
  */
--- a/widgets/widgetapp/src/WidgetUiWindowContainer.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/widgets/widgetapp/src/WidgetUiWindowContainer.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -280,7 +280,7 @@
     if (aKeyEvent.iCode == EKeyNo)
         {
         // Close the current active widget
-        iWindowManager.CloseWindowsAsync(EFalse);
+        //iWindowManager.CloseWindowsAsync(EFalse);
         return EKeyWasConsumed;
         }
 
--- a/widgets/widgetinstaller/inc/WidgetUIOperationsWatcher.h	Wed Mar 31 23:16:40 2010 +0300
+++ b/widgets/widgetinstaller/inc/WidgetUIOperationsWatcher.h	Wed Apr 14 17:06:56 2010 +0300
@@ -127,7 +127,7 @@
     /**
      * Called when install or uninstallation is finished, to update installer log
      */    
-    void HandleLogsL(const TDesC& aWidgetName, const TUid &aUid,TBool aVendor, SwiUI::TLogTaskAction aAction);
+    void HandleLogsL(const TDesC& aWidgetName, const TUid &aUid,TBool aVendor,const TDesC& version,SwiUI::TLogTaskAction aAction);
 
 
 public: // Functions from base classes
--- a/widgets/widgetinstaller/src/WidgetRegistrationManager.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/widgets/widgetinstaller/src/WidgetRegistrationManager.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -128,10 +128,6 @@
     RApaLsSession apparcSession;
     CleanupClosePushL( apparcSession );
     User::LeaveIfError( apparcSession.Connect() );
-    apparcSession.PrepareNonNativeApplicationsUpdatesL();
-    apparcSession.DeregisterNonNativeApplicationL( KUidWidgetLauncher );
-    apparcSession.DeregisterNonNativeApplicationTypeL( KUidWidgetLauncher );
-    apparcSession.CommitNonNativeApplicationsUpdatesL();
 
     // reasonably like an acceptable file name
     TBuf<KWidgetRegistryVal> appName;
--- a/widgets/widgetinstaller/src/WidgetUIOperationsWatcher.cpp	Wed Mar 31 23:16:40 2010 +0300
+++ b/widgets/widgetinstaller/src/WidgetUIOperationsWatcher.cpp	Wed Apr 14 17:06:56 2010 +0300
@@ -801,8 +801,8 @@
             iUIHandler->CloseFinalizeDialogL();
             iUIHandler->DisplayCompleteL();
             }
-
-        HandleLogsL(*(iPropertyValues[EBundleDisplayName]), TUid::Uid( *(iPropertyValues[EUid]) ), *(iPropertyValues[ENokiaWidget]), SwiUI::ELogTaskActionInstall);
+        
+        HandleLogsL(*(iPropertyValues[EBundleDisplayName]), TUid::Uid( *(iPropertyValues[EUid]) ), *(iPropertyValues[ENokiaWidget]), *(iPropertyValues[EBundleVersion]), SwiUI::ELogTaskActionInstall);
         }
     else // cancelled
         {
@@ -1007,6 +1007,12 @@
         CWidgetPropertyValue* propValue = iRegistry.GetWidgetPropertyValueL(aUid, ENokiaWidget);
         TBool aVendor = propValue && *(propValue);
         delete propValue;
+        propValue = NULL; 
+        propValue = iRegistry.GetWidgetPropertyValueL(aUid,EBundleVersion);
+        TBuf<KWidgetRegistryVal> version;
+        if(propValue)
+            version = (const TDesC& )*propValue;
+        delete propValue;
 
         // TODO if any of next steps leave does state become inconsistent?
 
@@ -1034,7 +1040,7 @@
         TRAP(err, FinishUninstallL( KErrNone ));
         if(err == KErrNone)
            {
-           HandleLogsL(bundleName, aUid, aVendor, SwiUI::ELogTaskActionUninstall);
+           HandleLogsL(bundleName, aUid, aVendor, version, SwiUI::ELogTaskActionUninstall);
            }
         }
     else
@@ -1323,7 +1329,7 @@
 // CWidgetUIOperationsWatcher::HandleLogsL
 //
 // ============================================================================
-void CWidgetUIOperationsWatcher::HandleLogsL(const TDesC& aWidgetName, const TUid &aUid, TBool aVender, SwiUI::TLogTaskAction aAction)
+void CWidgetUIOperationsWatcher::HandleLogsL(const TDesC& aWidgetName, const TUid &aUid, TBool aVender, const TDesC& aVersion, SwiUI::TLogTaskAction aAction)
     {
     CTask* task = CTask::NewL( KLogTaskImplUid, EFalse );
     CleanupStack::PushL(task);
@@ -1337,7 +1343,24 @@
     TTime time;
     time.UniversalTime();
     params.iTime = time;
-
+    
+    TLex lex(aVersion);
+    TInt i[] = {0,0,0}, j = 0;
+    while((lex.Get()) != 0 )
+        {
+        TInt num = 0; 
+        while ( lex.Peek() && (lex.Peek()) != '.')
+            lex.Inc();
+        TLex toNum(lex.MarkedToken());
+        toNum.Val(num);
+        i[j++] = num;
+        lex.Inc();
+        lex.Mark();
+        }
+    params.iVersion.iMajor = i[0];
+    params.iVersion.iMinor = i[1];
+    params.iVersion.iBuild = i[2];
+    
     TLogTaskParamPckg pckg( params );
     task->SetParameterL( pckg, 0 );
     iTaskManager->AddTaskL( task );