Revision: 201009 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 15 Mar 2010 12:44:50 +0200
branchRCL_3
changeset 35 1f3c3f2f5b0a
parent 34 220a17280356
child 36 c711bdda59f4
Revision: 201009 Kit: 201010
browserutilities/browserdialogsprovider/Src/BrowserDialogsProvider.cpp
browserutilities/connectionmanager/Src/ConnectionObservers.cpp
browserutilities/connectionmanager/Src/InternetConnectionManager.cpp
browserutilities/downloadmgr/DownloadMgrServEng/Group/HttpDMServEng.mmp
browserutilities/downloadmgr/DownloadMgrUiLib/Group/DownloadMgrUiLib.mmp
browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadMgrUiDownloadsList.cpp
codhandler/codeng/group/CodEng.mmp
web_plat/browser_platform_api/group/bld.inf
web_plat/browser_platform_api/inc/Browser_platform_variant.hrh
web_plat/widget_registry_api/inc/WidgetRegistryConstants.h
webengine/osswebengine/MemoryManager/Inc/MemoryPool.h
webengine/osswebengine/MemoryManager/Src/MemoryManager.cpp
webengine/osswebengine/MemoryManager/Src/MemoryPool.cpp
webengine/osswebengine/WebCore/html/HTMLEmbedElement.cpp
webengine/osswebengine/WebCore/html/HTMLEmbedElement.h
webengine/osswebengine/WebCore/html/HTMLObjectElement.cpp
webengine/osswebengine/WebCore/html/HTMLObjectElement.h
webengine/osswebengine/WebCore/html/HTMLParser.cpp
webengine/osswebengine/WebCore/platform/network/ResourceHandle.cpp
webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.cpp
webengine/osswebengine/WebCore/platform/symbian/FontCacheSymbian.cpp
webengine/osswebengine/WebCore/platform/symbian/FormFillController.cpp
webengine/osswebengine/WebKit/s60/formcontrols/WebFormFillPopup.cpp
webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h
webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp
webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp
webengine/osswebengine/WebKit/s60/webview/WebCursor.cpp
webengine/osswebengine/WebKit/s60/webview/WebFepTextEditor.cpp
webengine/osswebengine/WebKit/s60/webview/WebFrameView.cpp
webengine/osswebengine/WebKit/s60/webview/WebPageZoomHandler.cpp
webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp
webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.h
webengine/osswebengine/WebKit/s60/webview/WebView.cpp
webengine/osswebengine/webkit/s60/webview/WebPagePinchZoomHandler.cpp
webengine/webkitutils/stmgesturefw/rom/stmgesturefw.iby
webengine/webkitutils/stmgesturefw/src/pinchgesturerecogniser.cpp
webengine/widgetbackuprestore/group/WidgetBackupRestore.mmp
webengine/widgetengine/src/Renderer.cpp
webengine/widgetinstaller/Src/WidgetInstaller.cpp
webengine/widgetregistry/Client/src/WidgetRegistryClient.cpp
webengine/widgetregistry/Server/inc/UidAllocator.h
webengine/widgetregistry/Server/inc/WidgetEntry.h
webengine/widgetregistry/Server/inc/WidgetRegistry.h
webengine/widgetregistry/Server/src/UidAllocator.cpp
webengine/widgetregistry/Server/src/WidgetEntry.cpp
webengine/widgetregistry/Server/src/WidgetRegistry.cpp
webengine/widgetregistry/Server/src/WidgetRegistryXml.cpp
webengine/wrtharvester/inc/wrtharvester.h
webengine/wrtharvester/inc/wrtharvesterconst.h
webengine/wrtharvester/inc/wrtharvesterpsnotifier.h
webengine/wrtharvester/inc/wrtharvesterregistryaccess.h
webengine/wrtharvester/src/wrtharvester.cpp
webengine/wrtharvester/src/wrtharvesterpsnotifier.cpp
webengine/wrtharvester/src/wrtharvesterregistryaccess.cpp
widgets/widgetapp/inc/WidgetUiWindowManager.h
widgets/widgetapp/src/WidgetUiWindow.cpp
widgets/widgetapp/src/WidgetUiWindowManager.cpp
widgets/widgetapp/src/WidgetUiWindowView.cpp
widgets/widgetinstaller/src/WidgetUIOperationsWatcher.cpp
widgets/widgetlauncher/src/WidgetLauncher.cpp
widgets/widgetsidchecker/group/bld.inf
--- a/browserutilities/browserdialogsprovider/Src/BrowserDialogsProvider.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/browserutilities/browserdialogsprovider/Src/BrowserDialogsProvider.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -69,6 +69,8 @@
 const TInt KBrCtlGBFormat = 10;
 const TInt KBrCtlMegabyte = 1000;	// although 1MB=1024 kB, treat as 1000kb for user simplicity
 const TInt KBrowserFileNotFound  = -26003; // Defined in ErrorDefs.h but not exported so define here
+//There is an empty note popup is displayed because of this undefined error code that has been thrown by http layer
+const TInt KHttpErrIgnore  = -26173;
 
 // DLL resource file name with path
 _LIT( KBrowserDialogsProviderDirAndFile, "z:BrowserDialogsProvider.rsc" );// resource
@@ -148,6 +150,8 @@
 //-----------------------------------------------------------------------------
 EXPORT_C void CBrowserDialogsProvider::DialogNotifyErrorL( TInt aErrCode )
 	{
+    if( aErrCode == KHttpErrIgnore )
+       return;
     TInt httpErr = KBrCtlHttpErrorsOffset - aErrCode;
 	CTextResolver* textresolver = CTextResolver::NewLC(); 
 	TPtrC msg;
--- a/browserutilities/connectionmanager/Src/ConnectionObservers.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/browserutilities/connectionmanager/Src/ConnectionObservers.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -106,6 +106,7 @@
 	{
 	CLOG_ENTERFN("CConnectionStageNotifierWCB::RunL()");
     CLOG_WRITE_1( "CConnectionStageNotifierWCB Stage: %d", iProgressBuf().iStage );
+    CLOG_WRITE_1( "CConnectionStageNotifierWCB Stage Error id: %d", iProgressBuf().iError );
 
     if( !iMultiObserver )
         {
--- a/browserutilities/connectionmanager/Src/InternetConnectionManager.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/browserutilities/connectionmanager/Src/InternetConnectionManager.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -23,7 +23,7 @@
 
 	//System Includes
 #include <bldvariant.hrh>
-
+#include <browser_platform_variant.hrh>
 #include <ApAccessPointItem.h>
 #include <VpnAPEngine.h>
 #include <AknNotifyStd.h>
@@ -207,6 +207,8 @@
             User::LeaveIfError( iConnection.GetDesSetting( query, val ) );
 
             iConnName = val.AllocL();
+            CLOG_WRITE_1( "Iap id used : %d", iapId );
+            CLOG_WRITE_1( "Conn name   : %S", iConnName);
             }
         else if( !iRequestedAPIds.iFirstPreference )
             {
@@ -582,7 +584,11 @@
 TApBearerType CInternetConnectionManager::BearerTypeL( TUint32 aIAPId )
 	{
 	TApBearerType apbearerType = EApBearerTypeAllBearers;
-    if( iSilentMode || !iRequestedAPIds.iFirstPreference )
+#ifdef BRDO_OCC_ENABLED_FF
+	if( !iRequestedAPIds.iFirstPreference )
+#else
+	if( iSilentMode || !iRequestedAPIds.iFirstPreference )
+#endif
         // Temp fix for CDMA 
         {
         return EApBearerTypeAllBearers;
@@ -643,7 +649,12 @@
     CLOG_ENTERFN( "StopConnectionL()" );
 
     StopConnectionObserving();
-    iConnection.Close();
+    if( iConnected )
+        {
+        CLOG_WRITE( "StopConnectionL() Stop the Connection" );
+        iConnection.Stop(RConnection::EStopAuthoritative);
+        }
+    
 //    iServ.Close();
     iConnected = EFalse;
     iEasyWlan = EFalse;
--- a/browserutilities/downloadmgr/DownloadMgrServEng/Group/HttpDMServEng.mmp	Fri Mar 12 15:48:51 2010 +0200
+++ b/browserutilities/downloadmgr/DownloadMgrServEng/Group/HttpDMServEng.mmp	Mon Mar 15 12:44:50 2010 +0200
@@ -40,7 +40,7 @@
 SOURCEPATH ../src
 
 MW_LAYER_SYSTEMINCLUDE
-#if defined(__PLATFORM_VERSION_50_TUBE__) || defined( __PLATFORM_VERSION_50__)
+#if defined(__PLATFORM_VERSION_S60_50__) || defined( __PLATFORM_VERSION_5250__)
 MW_LAYER_ECOM_SYSTEMINCLUDE
 MW_LAYER_HTTP_SYSTEMINCLUDE
 APP_LAYER_SYSTEMINCLUDE
--- a/browserutilities/downloadmgr/DownloadMgrUiLib/Group/DownloadMgrUiLib.mmp	Fri Mar 12 15:48:51 2010 +0200
+++ b/browserutilities/downloadmgr/DownloadMgrUiLib/Group/DownloadMgrUiLib.mmp	Mon Mar 15 12:44:50 2010 +0200
@@ -63,7 +63,7 @@
 
 MW_LAYER_SYSTEMINCLUDE
 
-#if defined(__PLATFORM_VERSION_50_TUBE__) || defined( __PLATFORM_VERSION_50__)
+#if defined(__PLATFORM_VERSION_S60_50__) || defined( __PLATFORM_VERSION_5250__)
 APP_LAYER_SYSTEMINCLUDE
 MW_LAYER_HTTP_SYSTEMINCLUDE
 #endif
--- a/browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadMgrUiDownloadsList.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadMgrUiDownloadsList.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -1761,8 +1761,11 @@
                     isProgressively = EFalse;                       
                     }
                 // First close the downloads list.
-                CancelDisplayingDownloadsList();
-                iUiUtils->LaunchPdAppL(currDownload, isProgressively);
+                if ( state != EHttpProgMovingContentFile )
+                    {
+                     CancelDisplayingDownloadsList();
+                     iUiUtils->LaunchPdAppL(currDownload, isProgressively);
+                    }
                 }
             else 
                 {
--- a/codhandler/codeng/group/CodEng.mmp	Fri Mar 12 15:48:51 2010 +0200
+++ b/codhandler/codeng/group/CodEng.mmp	Mon Mar 15 12:44:50 2010 +0200
@@ -72,7 +72,7 @@
 
 MW_LAYER_SYSTEMINCLUDE
 OS_LAYER_ESTLIB_SYSTEMINCLUDE
-#if defined(__PLATFORM_VERSION_50_TUBE__) || defined(__PLATFORM_VERSION_50__)
+#if defined(__PLATFORM_VERSION_S60_50__) || defined(__PLATFORM_VERSION_5250__)
 APP_LAYER_SYSTEMINCLUDE
 #endif
 
--- a/web_plat/browser_platform_api/group/bld.inf	Fri Mar 12 15:48:51 2010 +0200
+++ b/web_plat/browser_platform_api/group/bld.inf	Mon Mar 15 12:44:50 2010 +0200
@@ -28,12 +28,12 @@
 ../inc/browser_platform_variant.hrh  BRDO_ADDED_EXPORT_LOCATION(browser_platform_variant.hrh)
 #endif
 
-#ifdef __PLATFORM_VERSION_50_TUBE__
+#ifdef __PLATFORM_VERSION_S60_50__
 ../inc/browser_platform_variant.hrh  /epoc32/include/oem/browser_platform_variant.hrh
 ../inc/browser_platform_variant.hrh  /epoc32/include/oem/platform/mw/browser_platform_variant.hrh
 #endif
 
-#ifdef __PLATFORM_VERSION_50__
+#ifdef __PLATFORM_VERSION_5250__
 ../inc/browser_platform_variant.hrh  /epoc32/include/oem/browser_platform_variant.hrh
 #endif
 
--- a/web_plat/browser_platform_api/inc/Browser_platform_variant.hrh	Fri Mar 12 15:48:51 2010 +0200
+++ b/web_plat/browser_platform_api/inc/Browser_platform_variant.hrh	Mon Mar 15 12:44:50 2010 +0200
@@ -34,7 +34,7 @@
 */
 /*
 * ===================
-*        S60 3.23 Gadget, etc..
+*        S60 3.23 etc..
 * ===================
 */ 
 #if defined(__S60_32__)
@@ -44,22 +44,22 @@
 
 /*
 * ===================
-*        S60 5.0 Tube, Alvin, Ivalo, Saga, etc.
+*        S60 5.0 PF_52_50, etc.
 *        5.0/5250 platforms
 * ===================
 */ 
 #elif defined(__S60_50__)
 // manually edit the following lines to enable definition for
 // whichever platform is in use
-// un-comment following line for 5.0/5250 platforms running on products similar on Tube and Alvin
-// #define __PLATFORM_VERSION_50_TUBE__
+// un-comment following line for 5.0/5250 platforms running on products similar on S60_50
+// #define __PLATFORM_VERSION_S60_50__
 
-// un-comment following line for 5.0/5250 platforms for Ivalo and Saga
-// #define __PLATFORM_VERSION_50__
+// un-comment following line for 5.0/5250
+// #define __PLATFORM_VERSION_5250__
 
 /*
 * ===================
-*        S60 5.1 Corolla, etc.
+*        S60 5.1 S60_51, etc.
 * ===================
 */ 
 // #elif defined(__S60_51__)
@@ -68,13 +68,13 @@
 
 /*
 * ===================
-*        S60 5.2 Vasco, etc.
+*        S60 5.2 TB_92, etc.
 * ===================
 */ 
 // #elif defined(__S60_52__)
 
 // un-comment following line for 5.2/TB9.2 platforms
-#define __PLATFORM_VERSION_52__
+#define __PLATFORM_VERSION_52_TB92__
 //
 #endif
 
@@ -133,6 +133,9 @@
 // Defines WRT widgets feature to publish on homescreen
 #define BRDO_WRT_HS_FF
 
+// Defines flag for OOM Monitor-2
+#define BRDO_OOM_MONITOR2_COMPONENT_FF
+
 // Gallery App is not present
 #undef BRDO_APP_GALLERY_SUPPORTED_FF
 
@@ -205,6 +208,9 @@
 // Defines WRT widgets feature to publish on homescreen
 #undef BRDO_WRT_HS_FF
 
+// Defines flag for OOM Monitor-2
+#undef BRDO_OOM_MONITOR2_COMPONENT_FF
+
 // Gallery App is present
 #define BRDO_APP_GALLERY_SUPPORTED_FF
 
@@ -246,10 +252,10 @@
 
 /*
 * ===================
-*        S60 5.0 PF5250 / Tube / Alvin
+*        S60 5.0 S60_50
 * ===================
 */ 
-#elif defined(__PLATFORM_VERSION_50_TUBE__)
+#elif defined(__PLATFORM_VERSION_S60_50__)
 
 //OCC support
 #undef BRDO_OCC_ENABLED_FF
@@ -272,6 +278,9 @@
 // Defines WRT widgets feature to publish on homescreen
 #undef BRDO_WRT_HS_FF
 
+// Defines flag for OOM Monitor-2
+#undef BRDO_OOM_MONITOR2_COMPONENT_FF
+
 // Gallery App is present
 #define BRDO_APP_GALLERY_SUPPORTED_FF
 
@@ -312,10 +321,10 @@
 #undef BRDO_HTTP_STACK_93
 /*
 * ===================
-*        S60 5.0 PF5250+ / Ivalo / Saga
+*        S60 5.0 PF5250+
 * ===================
 */ 
-#elif defined(__PLATFORM_VERSION_50__)
+#elif defined(__PLATFORM_VERSION_5250__)
 
 //OCC support
 #undef BRDO_OCC_ENABLED_FF
@@ -394,7 +403,7 @@
 */ 
 //Flag provieded to not fix the problem for Multiple heap created for in application startup
 #undef BRDO_STATIC_DATA_CLEANUP_SUPPORT_FF
-#elif defined(__PLATFORM_VERSION_52__)
+#elif defined(__PLATFORM_VERSION_52_TB92__)
 
 // Defines whether SAPI Security Manager Prompt Enhancement is available
 #undef BRDO_SEC_MGR_PROMPT_ENHANCEMENT_FF
--- a/web_plat/widget_registry_api/inc/WidgetRegistryConstants.h	Fri Mar 12 15:48:51 2010 +0200
+++ b/web_plat/widget_registry_api/inc/WidgetRegistryConstants.h	Mon Mar 15 12:44:50 2010 +0200
@@ -30,7 +30,12 @@
 const TUid KUidWidgetUi = { 0x10282822 };
 const TUid KUidWidgetLauncher = { 0x10282821 };
 
-#define WIDGETPROPERTYLISTVERSION 3
+#define WIDGETPROPERTYLISTVERSION 4
+
+const TInt KWidgetPropertyListVersion32 = 1;
+const TInt KWidgetPropertyListVersion71 = 3;
+const TInt KWidgetPropertyListVersion71CWRT = 4;
+
 // Before changing these, consider that there will be widgets
 // installed on removable memory cards according to an allocation
 // scheme using these bounds.
@@ -45,6 +50,15 @@
 const TInt32 KWidgetUidExternalMemoryStart = (KWidgetUidLowerBound + KWidgetUidUpperBound + 1) / 2; // half way
 const TInt32 KWidgetUidExternalMemoryStop = KWidgetUidUpperBound;
 
+// Additions for separation of CWRT Widget UID space from WRT Widget UID space
+const TInt32 KWidgetUidWRTInternalMemoryStop = (KWidgetUidInternalMemoryStart + KWidgetUidExternalMemoryStart + 1) / 2;
+const TInt32 KWidgetUidCWRTInternalMemoryStart = KWidgetUidWRTInternalMemoryStop;
+const TInt32 KWidgetUidCWRTInternalMemoryStop = KWidgetUidExternalMemoryStart;
+const TInt32 KWidgetUidWRTExternalMemoryStop = (KWidgetUidExternalMemoryStart + KWidgetUidExternalMemoryStop + 1) / 2;
+const TInt32 KWidgetUidCWRTExternalMemoryStart = KWidgetUidWRTExternalMemoryStop;
+const TInt32 KWidgetUidCWRTExternalMemoryStop = KWidgetUidUpperBound + 1;
+
+
 const TInt KWidgetRegistryClientVersionMajor = 0;
 const TInt KWidgetRegistryClientVersionMinor = 1;
 const TInt KWidgetRegistryClientVersionBuild = 1;
@@ -128,9 +142,12 @@
     // Do not add enums prior to this, if you are adding enums here 
     // take into consideration the compatibility problems, i.e widgets working after firmware update.  
 
-    EMiniViewEnable,            //optional; int internally 0 0r 1
-    EBlanketPermGranted,              //optional; int internally 0 0r 1
+    EMiniViewEnable,            // optional; int internally 0 0r 1
+    EBlanketPermGranted,        // optional; int internally 0 0r 1
     EPreInstalled,              // optional; int internally 0 or 1
+    
+    EProcessUid,                // int (UID of widget execution process)
+    EMimeType,
 
     // end property list, begin special values
     EWidgetPropertyIdCount,     // must be at end of properties
--- a/webengine/osswebengine/MemoryManager/Inc/MemoryPool.h	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/MemoryManager/Inc/MemoryPool.h	Mon Mar 15 12:44:50 2010 +0200
@@ -253,6 +253,10 @@
 
     virtual void RestoreRescueBuffer() = 0;
     
+    virtual void InitOOMDialog();
+    
+    virtual void ResetOOMDialog();
+    
   protected:
     CMemoryPool() : iNotifier( 0 )   {}
   
@@ -358,7 +362,7 @@
         TUint FreeMemory( TFreeMem& aFree );
         void RestoreRescueBuffer();
         void InitOOMDialog();
-        void ResetOOMDialogDisplayed();
+        void ResetOOMDialog();
 #ifdef OOM_LOGGING         
         void DumpHeapLogs();
 #endif        
--- a/webengine/osswebengine/MemoryManager/Src/MemoryManager.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/MemoryManager/Src/MemoryManager.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -109,9 +109,7 @@
     {
 #ifdef __NEW_ALLOCATOR__
     if (s_pool)
-        {
-        ((CNewSymbianHeapPool *)s_pool)->InitOOMDialog();
-        }
+        s_pool->InitOOMDialog();
 #endif
     }
 
@@ -122,9 +120,7 @@
     {
 #ifdef __NEW_ALLOCATOR__
     if (s_pool)
-        {
-        ((CNewSymbianHeapPool *)s_pool)->ResetOOMDialogDisplayed();
-        }
+        s_pool->ResetOOMDialog();
 #endif
     }
 
--- a/webengine/osswebengine/MemoryManager/Src/MemoryPool.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/MemoryManager/Src/MemoryPool.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -223,6 +223,20 @@
   }
 
 //-----------------------------------------------------------------------------
+// CMemoryPool::InitOOMDialog()
+//-----------------------------------------------------------------------------
+void CMemoryPool::InitOOMDialog()
+    {
+    }
+
+//-----------------------------------------------------------------------------
+// CMemoryPool::ResetOOMDialog()
+//-----------------------------------------------------------------------------
+void CMemoryPool::ResetOOMDialog()
+    {
+    }
+
+//-----------------------------------------------------------------------------
 // CPlainAllocator::DoAlloc
 //-----------------------------------------------------------------------------
 TUint CFastMemoryPool::FreeMemory(TFreeMem& aFree )
@@ -719,7 +733,7 @@
         }
     }
 
-void CNewSymbianHeapPool::ResetOOMDialogDisplayed()
+void CNewSymbianHeapPool::ResetOOMDialog()
     {
     iOOMDisplayed = EFalse;
     }
--- a/webengine/osswebengine/WebCore/html/HTMLEmbedElement.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebCore/html/HTMLEmbedElement.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -278,5 +278,10 @@
         return false;
     return static_cast<RenderPartObject*>(renderer())->isFocusable();
 }
+
+bool HTMLEmbedElement::canStartSelection() const
+{
+return false;
+}
 #endif
 }
--- a/webengine/osswebengine/WebCore/html/HTMLEmbedElement.h	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebCore/html/HTMLEmbedElement.h	Mon Mar 15 12:44:50 2010 +0200
@@ -59,7 +59,9 @@
 #if USE(JAVASCRIPTCORE_BINDINGS)
     virtual KJS::Bindings::Instance* getInstance() const;
 #endif
+
 #if PLATFORM(SYMBIAN)
+    virtual bool canStartSelection() const;  
     bool isFocusable() const;
 #endif
     String src() const;
--- a/webengine/osswebengine/WebCore/html/HTMLObjectElement.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebCore/html/HTMLObjectElement.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -535,6 +535,11 @@
         return false;
     return static_cast<RenderPartObject*>(renderer())->isFocusable();
 }
+
+bool HTMLObjectElement::canStartSelection() const
+{
+return false;
+}
 #endif
 
 }
--- a/webengine/osswebengine/WebCore/html/HTMLObjectElement.h	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebCore/html/HTMLObjectElement.h	Mon Mar 15 12:44:50 2010 +0200
@@ -62,7 +62,9 @@
 #if USE(JAVASCRIPTCORE_BINDINGS)
     virtual KJS::Bindings::Instance* getInstance() const;
 #endif
-
+#if PLATFORM(SYMBIAN)
+    virtual bool canStartSelection() const;
+#endif
     String archive() const;
     void setArchive(const String&);
 
--- a/webengine/osswebengine/WebCore/html/HTMLParser.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebCore/html/HTMLParser.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -841,6 +841,7 @@
         gFunctionMap.set(trTag.localName().impl(), &HTMLParser::nestedCreateErrorCheck);
         gFunctionMap.set(ttTag.localName().impl(), &HTMLParser::nestedStyleCreateErrorCheck);
         gFunctionMap.set(uTag.localName().impl(), &HTMLParser::nestedStyleCreateErrorCheck);
+        gFunctionMap.set(ulTag.localName().impl(), &HTMLParser::nestedStyleCreateErrorCheck);
     }
 
     bool proceed = true;
@@ -858,9 +859,10 @@
     // about 1500 tags, all from a bunch of <b>s.  We will only allow at most 20
     // nested tags of the same type before just ignoring them all together.
     unsigned i = 0;
-    for (HTMLStackElem* curr = blockStack;
-         i < cMaxRedundantTagDepth && curr && curr->tagName == tagName;
-         curr = curr->next, i++);
+    for (HTMLStackElem* curr = blockStack; i < cMaxRedundantTagDepth && curr; curr = curr->next) {
+        if (curr->tagName == tagName)
+            i++;
+    }
     return i != cMaxRedundantTagDepth;
 }
 
--- a/webengine/osswebengine/WebCore/platform/network/ResourceHandle.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebCore/platform/network/ResourceHandle.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -71,6 +71,7 @@
 
 ResourceHandleClient* ResourceHandle::client() const
 {
+    if(d && d->m_client)
     return d->m_client;
 }
 
--- a/webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -118,7 +118,7 @@
 
     // check if we have enough memory to handle this request
     if (resource->request().mainLoad()) {        
-        OOM_PRE_CHECK(contentLength<<4, contentLength, "CResourceHandleManager::receiveData()")
+        OOM_PRE_CHECK(contentLength<<2, contentLength, "CResourceHandleManager::receiveData()")
         client->didReceiveData(resource, (const char*)data.Ptr(), data.Length(), data.Length());
         OOM_POST_CHECK_FAILED(client->didFail(resource, ResourceError(String(), KErrNoMemory, String(), String()));)
     }
--- a/webengine/osswebengine/WebCore/platform/symbian/FontCacheSymbian.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebCore/platform/symbian/FontCacheSymbian.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -1,4 +1,4 @@
-/*
+    /*
 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
@@ -214,7 +214,12 @@
     // convert to platform-supported font family
     TPtrC fPtr( SystemFontFamily( fontDescription.family().family() ) );
     
-
+    //Locate the left most font if the fptr string contains more than one font family names comma seperated
+    TInt comma = fPtr.Locate(TChar(','));
+    if (comma != KErrNotFound) {
+        fPtr.Set(fPtr.Left(comma));
+    }
+     
     TFontSpec fontSpec(fPtr, twipSize);
     fontSpec.iFontStyle.SetStrokeWeight(fontDescription.bold() ? EStrokeWeightBold : EStrokeWeightNormal);
     fontSpec.iFontStyle.SetPosture(fontDescription.italic() ? EPostureItalic : EPostureUpright);
--- a/webengine/osswebengine/WebCore/platform/symbian/FormFillController.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebCore/platform/symbian/FormFillController.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -36,6 +36,9 @@
 #include "FormFillPopup.h"
 #include "PlatformFontCache.h"
 #include "StaticObjectsContainer.h"
+#include "FontDescription.h" 
+
+#define KMaxZoomFactorForPopup 125 
 namespace WebCore {
 
 static const double kSearchStartTimeout = 0.5f;
@@ -80,8 +83,13 @@
             // system font to be used by popup
 
             float newFont = 12.0f * zoomFactor /100.0f;
-            FontPlatformData* font = FontCache::getDeviceDefaultFont(newFont);
+            FontDescription fd;
+            fd.setComputedSize(newFont);
+            //If zoom factor is greater than 120 and less than or equals 200, then make it 125 by default. This
+            //will make it selectable not too big.
+            FontPlatformData* font = new FontPlatformData(cache->zoomedFont(fd, (zoomFactor > 120)? KMaxZoomFactorForPopup : zoomFactor));;
             m_popup = m_callback->createFormFillPopup(font->Font());
+            delete font; 
         }
         if (!m_popup) {
             return;
--- a/webengine/osswebengine/WebKit/s60/formcontrols/WebFormFillPopup.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebKit/s60/formcontrols/WebFormFillPopup.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -195,7 +195,9 @@
             break;
 
     }
-
+    if (response == EKeyWasConsumed) {
+          m_parent->page()->chrome()->client()->setElementVisibilityChanged(false);
+        }
     return response;
 }
 
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h	Mon Mar 15 12:44:50 2010 +0200
@@ -431,8 +431,9 @@
         RArray<NPN_GenericElement>*  genericElementArray(){
             return iGenericElementArray;
         }
+        void setPluginWinClipedRect();
   private:  // private member data
-        void setPluginWinClipedRect();
+        
         TRect frameVisibleRect() const;
         void Close();
         
--- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -413,7 +413,14 @@
                 break;
 
             case EKeyUpArrow:
-                frame->editor()->execCommand("MoveUp");
+                if (select) { //If shift is pressed then highlight the selection
+                    if(kevent->isKeyDown())
+                        break;
+                    frame->editor()->execCommand("MoveUpAndModifySelection");//from createCommandMap()
+                }
+                else {
+                    frame->editor()->execCommand("MoveUp");
+                }
                 m_webView->fepTextEditor()->HandleUpdateCursor();
                 if (frame->selectionController()->start() != startPos &&
                     frame->selectionController()->end() != endPos) {
@@ -425,7 +432,14 @@
                 break;
 
             case EKeyDownArrow:
-                frame->editor()->execCommand("MoveDown");
+                if (select) {//If shift is pressed then highlight the selection
+                    if(kevent->isKeyDown())
+                        break;
+                    frame->editor()->execCommand("MoveDownAndModifySelection");//from createCommandMap()
+                }
+                else {
+                    frame->editor()->execCommand("MoveDown");
+                }
                 m_webView->fepTextEditor()->HandleUpdateCursor();
                 if (frame->selectionController()->start() != startPos &&
                     frame->selectionController()->end() != endPos) {
--- a/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -699,6 +699,9 @@
             {
                 if (m_webView->pageView()) {
                     m_webView->closePageView();
+                    PluginSkin* plugin = m_webView->mainFrame()->focusedPlugin();
+					if(plugin)
+						plugin->setPluginWinClipedRect();
                 } else {
                     if (m_historyHandler->historyController()->historyView()) {
                         // this is a weird way of managing history view. needs fixing
@@ -2024,7 +2027,12 @@
 
 EXPORT_C TBool CBrCtl::OkToExit()
 {
-    return WebCore::StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager()->httpDownload()->okToExit();
+    HttpDownload* httpDownload = WebCore::StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager()->httpDownload();
+    if ( httpDownload )
+        {
+        return httpDownload->okToExit();
+        }
+    return ETrue;
 }
 
 EXPORT_C CGulIcon* CBrCtl::GetBitmapData(const TDesC& aUrl, TBrCtlDefs::TBrCtlBitmapInfo aBitmapInfo)
@@ -2467,3 +2475,4 @@
 
 
 
+
--- a/webengine/osswebengine/WebKit/s60/webview/WebCursor.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebKit/s60/webview/WebCursor.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -799,6 +799,7 @@
         m_view->setFocusedElementType(elType);
     }
     else {
+      if(m_view)
         m_view->setFocusedElementType(TBrCtlDefs::EElementNone);
     }
 }
--- a/webengine/osswebengine/WebKit/s60/webview/WebFepTextEditor.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebKit/s60/webview/WebFepTextEditor.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -1149,6 +1149,8 @@
 void CWebFepTextEditor::CcpuCopyL()
 {
     PlaceDataOnClipboardL();
+    if (m_CcpuSupport)
+       m_CcpuSupport->HandleSelectionChangeL();
 }
 
 // -----------------------------------------------------------------------------
--- a/webengine/osswebengine/WebKit/s60/webview/WebFrameView.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebKit/s60/webview/WebFrameView.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -32,6 +32,7 @@
 #include "SettingsContainer.h"
 #include "StaticObjectsContainer.h"
 #include "WebTabbedNavigation.h"
+#include "WebPagePinchZoomHandler.h"
 
 using namespace WebCore;
 
@@ -120,30 +121,33 @@
             frameClip.Move(-cpos);
             gc.setClippingRect( frameClip );
         }
-        // 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);
+        
+        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 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/WebPageZoomHandler.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebKit/s60/webview/WebPageZoomHandler.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -103,6 +103,8 @@
     if ( AknLayoutUtils::PenEnabled() )
         {
         if (m_zoomSlider) {
+            if( m_zoomSlider->IsVisible())
+                m_zoomSlider->CloseVolumePopup();
             delete m_zoomSlider;
             m_zoomSlider = NULL;
             }
--- a/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -357,6 +357,7 @@
         WebScrollingDeceleratorGH* scrollDecelGH = m_webview->pageScrollHandler()->ScrollingDeceleratorGH();
         if(scrollDecelGH) {
             scrollDecelGH->cancelDecel();
+            m_webview->setViewIsScrolling(false);
         }
     }
     
@@ -415,8 +416,8 @@
     Element* eventNode = frm->document()->elementFromPoint(pt.iX, pt.iY);
 
     if (m_isHighlighted){
-               dehighlight();
-           }
+        dehighlight(pos);
+    }
 
     m_highlightedNode = NULL;
 
@@ -537,15 +538,14 @@
 //-----------------------------------------------------------------------------
 // WebPointerEventHandler::deHighlight
 //-----------------------------------------------------------------------------
-void  WebPointerEventHandler::dehighlight()
+void  WebPointerEventHandler::dehighlight(const TPoint &aPoint)
 {
-    // send dehighlight event to engine by passing -1, -1
-    // sending any other pointer value may result in highligh of other links
+    // m_highlightPos should be (-1, -1). 
     m_highlightPos = TPoint(-1, -1);
     m_isHighlighted = EFalse;
 
     Frame* frm = m_webview->page()->focusController()->focusedOrMainFrame();
-    m_webview->sendMouseEventToEngine(TPointerEvent::EMove, m_highlightPos, frm);
+    m_webview->sendMouseEventToEngine(TPointerEvent::EMove, aPoint, frm);
 
 
     m_highlightedNode = NULL;
@@ -598,6 +598,10 @@
     Frame* coreFrame = core(m_webview->mainFrame());
     TPointerEvent event;
 
+    if (!IS_NAVIGATION_NONE) {
+        m_webview->page()->chrome()->client()->setElementVisibilityChanged(false);
+    }
+    
     TBrCtlDefs::TBrCtlElementType elType = highlitableElement();
 
     if (!isHighlitableElement(elType)) {
@@ -619,7 +623,6 @@
     }
 
     if (!IS_NAVIGATION_NONE) {
-        m_webview->page()->chrome()->client()->setElementVisibilityChanged(false);
         //to initiate hover
         if (m_isHighlighted) {
             setFocusRing();
--- a/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.h	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.h	Mon Mar 15 12:44:50 2010 +0200
@@ -49,7 +49,7 @@
 private:    
     bool checkForEventListener(WebCore::Node* node);
     bool canDehighlight(const TPoint &aPoint);
-    void dehighlight();
+    void dehighlight(const TPoint &aPoint = TPoint(-1,-1));
 
     bool isHighlitableElement(TBrCtlDefs::TBrCtlElementType& elType);
     TBrCtlDefs::TBrCtlElementType highlitableElement();
--- a/webengine/osswebengine/WebKit/s60/webview/WebView.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/WebKit/s60/webview/WebView.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -1859,6 +1859,9 @@
 
 void WebView::clearOffScreenBitmap()
 {
+    if( !IsVisible() )
+      return;
+    
     m_webcorecontext->gc().Reset();
     m_webcorecontext->gc().Clear();
 }
--- a/webengine/osswebengine/webkit/s60/webview/WebPagePinchZoomHandler.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/osswebengine/webkit/s60/webview/WebPagePinchZoomHandler.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -20,7 +20,7 @@
 #include <../bidi.h>
 #include "WebPagePinchZoomHandler.h"
 #include "WebView.h"
-
+#include "PluginSkin.h"
 
 const int KBitmapUpdateTimeout  = 100*1000;
 const int KPinchExitWaitTimeout = 300*1000;
@@ -209,6 +209,13 @@
 {
     m_bitmapUpdateTimer->Cancel();
     m_webView->restoreZoomLevel(m_webView->scalingFactor());
+    //update the plugin rect after pinch zoom exit
+    PluginSkin* pluginskin = m_webView->mainFrame()->focusedPlugin();
+    if(pluginskin)
+     {
+        pluginskin->setPluginWinClipedRect(); 
+     }
+
 }
 
 // -----------------------------------------------------------------------------
--- a/webengine/webkitutils/stmgesturefw/rom/stmgesturefw.iby	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/webkitutils/stmgesturefw/rom/stmgesturefw.iby	Mon Mar 15 12:44:50 2010 +0200
@@ -18,9 +18,11 @@
 
 #ifndef _STMGESTUREFW_IBY_
 #define _STMGESTUREFW_IBY_
-
-#include <platform/mw/Browser_platform_variant.hrh>
-
+#ifdef __S60_32__
+#include <browser_platform_variant.hrh>
+#else
+#include <platform/mw/browser_platform_variant.hrh>
+#endif
 #ifdef BRDO_USE_GESTURE_HELPER
 
 #include <data_caging_paths_for_iby.hrh>
--- a/webengine/webkitutils/stmgesturefw/src/pinchgesturerecogniser.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/webkitutils/stmgesturefw/src/pinchgesturerecogniser.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -59,7 +59,7 @@
     // Look at the events to see if it looks like pinch in single touch
     // WARNING: this code is a hack : in single touch capacitive touch device (like Alvin with 52.50) it works so-and-so,
     // because the pointer events were reported from the corners of the rectangle formed by two fingers pressing.
-    // In resistive touch device like Tube or Ivalo the reported points are somewhere int he middle between the fingers
+    // In resistive touch device like S60_50 or PF_52_50 the reported points are somewhere int he middle between the fingers
     // and jumping a lot, so it is very difficult to get it right.
     if (numOfActiveStreams == 1)
     {
--- a/webengine/widgetbackuprestore/group/WidgetBackupRestore.mmp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/widgetbackuprestore/group/WidgetBackupRestore.mmp	Mon Mar 15 12:44:50 2010 +0200
@@ -47,7 +47,7 @@
 
 MW_LAYER_SYSTEMINCLUDE
 OS_LAYER_ESTLIB_SYSTEMINCLUDE
-#if defined(__PLATFORM_VERSION_32__) || defined(__PLATFORM_VERSION_50_TUBE__) || defined(__PLATFORM_VERSION_50__)
+#if defined(__PLATFORM_VERSION_32__) || defined(__PLATFORM_VERSION_S60_50__) || defined(__PLATFORM_VERSION_5250__)
 MW_LAYER_CONNECT_SYSTEMINCLUDE
 #endif
 
--- a/webengine/widgetengine/src/Renderer.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/widgetengine/src/Renderer.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -34,8 +34,8 @@
 // CONSTANTS
 const TUint8 KMaxTransitionCount = 30;
 const TInt KMediumResolutionDpi = 200;
-//NOTE: 5 transitions is plenty for Tube, but mileage may vary 
-//      on future high-res devices. 
+//NOTE: 5 transitions is plenty for S60_50, but mileage may vary
+//      on future high-res devices.
 const TUint8 KMinTransitionCount = 5;
 // LOCAL FUNCTION PROTOTYPES
 
--- a/webengine/widgetinstaller/Src/WidgetInstaller.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/widgetinstaller/Src/WidgetInstaller.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -126,7 +126,7 @@
         CWidgetPropertyValue* value = CWidgetPropertyValue::NewL();
         User::LeaveIfError( iPropertyValues.Insert( value, i ) );
         }
-    *(iPropertyValues[EWidgetPropertyListVersion]) = WIDGETPROPERTYLISTVERSION;
+    *(iPropertyValues[EWidgetPropertyListVersion]) = KWidgetPropertyListVersion71;
 
 #ifdef _DEBUG
     _LIT(KDir, "WidgetBUR");
@@ -1170,7 +1170,7 @@
         CWidgetPropertyValue* value = CWidgetPropertyValue::NewL();
         User::LeaveIfError( propertyValues->Insert( value, i ) );
         }
-    *(*propertyValues)[EWidgetPropertyListVersion] = WIDGETPROPERTYLISTVERSION;
+    *(*propertyValues)[EWidgetPropertyListVersion] =  KWidgetPropertyListVersion71;
     // UID
     *(*propertyValues)[EUid] = aUid.iUid;
     // size
--- a/webengine/widgetregistry/Client/src/WidgetRegistryClient.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/widgetregistry/Client/src/WidgetRegistryClient.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -625,14 +625,14 @@
 CBufFlat* RWidgetRegistryClientSession::MarshalPropertyValuesL(
     const RPointerArray<CWidgetPropertyValue>&  aPropertyValues ) const
     {
-    CBufFlat* buf = CBufFlat::NewL( 512 );
+    CBufFlat* buf = CBufFlat::NewL( 4096 );
     CleanupStack::PushL( buf );
 
     RBufWriteStream stream( *buf );
     CleanupClosePushL( stream );
 
     TInt i = 0;
-    for ( ; i < EWidgetPropertyIdCount; ++i )
+    for ( ; i < aPropertyValues.Count(); ++i )
         {
         aPropertyValues[i]->SerializeL( stream );
         }
--- a/webengine/widgetregistry/Server/inc/UidAllocator.h	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/widgetregistry/Server/inc/UidAllocator.h	Mon Mar 15 12:44:50 2010 +0200
@@ -34,5 +34,6 @@
     TInt AllocateL( const RUidArray& aUsedUids, TInt aDriveLetter );
 
     static TBool IsWidget( TUid aUid );
+    static TBool IsCWRTWidget( TUid aUid );
     };
 #endif
--- a/webengine/widgetregistry/Server/inc/WidgetEntry.h	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/widgetregistry/Server/inc/WidgetEntry.h	Mon Mar 15 12:44:50 2010 +0200
@@ -182,6 +182,11 @@
      * 2-phase constructor
      */
     void ConstructL();
+    
+    /**
+     * Property cleanup
+     */
+    void PropertyCleanupL();
 
 protected:
     RPointerArray<CWidgetPropertyValue>  iPropertyValues;
@@ -191,9 +196,9 @@
 
     TInt iActive; // bool, 1 if widget is executing
 
-   	TInt iMiniView; // bool, 1 if launched in miniview
+    TInt iMiniView; // bool, 1 if launched in miniview
 
-	TInt iFullView; // bool, 1 if launched in fullview
+    TInt iFullView; // bool, 1 if launched in fullview
     TInt iBlanketPermGranted; // bool, 1 if platform service access needs to be prompted
     
     };
--- a/webengine/widgetregistry/Server/inc/WidgetRegistry.h	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/widgetregistry/Server/inc/WidgetRegistry.h	Mon Mar 15 12:44:50 2010 +0200
@@ -367,6 +367,7 @@
     TBuf<KWidgetRegistryMaxPathName> iWidgetInstallPath;
     TBuf<KWidgetRegistryMaxPathName> iRegistryBinaryFileName;
     TBuf<KWidgetRegistryMaxPathName> iRegistryXmlFileName;
+    TBuf<KWidgetRegistryMaxPathName> iRegistryCWRTXmlFileName;
     TBuf<KWidgetRegistryMaxPathName> iRegistryXmlTempFileName;
     TBuf<KWidgetRegistryMaxPathName> iLprojName;
 
--- a/webengine/widgetregistry/Server/src/UidAllocator.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/widgetregistry/Server/src/UidAllocator.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -38,8 +38,8 @@
                       KWidgetUidInternalMemoryStart :
                       KWidgetUidExternalMemoryStart );
     TInt uidStop = ( ('c' == aDriveLetter) ?
-                     KWidgetUidExternalMemoryStart :
-                     KWidgetUidExternalMemoryStop + 1);
+                     KWidgetUidWRTInternalMemoryStop :
+                     KWidgetUidWRTExternalMemoryStop);
 
     TInt uid = uidStart;
     for ( ; uid < uidStop; ++uid )
@@ -62,3 +62,24 @@
                && aUid.iUid <= KWidgetUidUpperBound )?
              ETrue : EFalse );
     }
+
+// ============================================================================
+// TUidAllocator::IsCWRTWidget()
+// Returns true if the Uid falls within the range specified for CWRT widgets
+// ============================================================================
+//
+TBool TUidAllocator::IsCWRTWidget( TUid aUid )
+    {
+    if ( ( ( aUid.iUid >= KWidgetUidCWRTInternalMemoryStart ) &&
+           ( aUid.iUid < KWidgetUidCWRTInternalMemoryStop ) ) ||
+         ( ( aUid.iUid >= KWidgetUidCWRTExternalMemoryStart ) &&
+           ( aUid.iUid < KWidgetUidCWRTExternalMemoryStop ) ) )
+        {
+        return ETrue;
+        }
+    else
+        {
+        return EFalse;
+        }
+
+    }
--- a/webengine/widgetregistry/Server/src/WidgetEntry.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/widgetregistry/Server/src/WidgetEntry.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -17,6 +17,7 @@
 */
 
 #include "WidgetEntry.h"
+#include "UidAllocator.h"
 #include <widgetregistryconstants.h>
 #include <s32file.h>
 #include <f32file.h>
@@ -54,8 +55,6 @@
 _LIT( KXmlDataTypeString, "string" );
 _LIT( KXmlDataTypeUid, "uid" );
 
-static const TInt KWidgetPropertyListVersion32 = 1;
-static const TInt KWidgetPropertyListVersion71 = 3;
 // MODULE DATA STRUCTURES
 
 // LOCAL FUNCTION PROTOTYPES
@@ -93,7 +92,8 @@
 CWidgetEntry* CWidgetEntry::NewL( RPointerArray<CWidgetPropertyValue>** aProps )
 {
     CWidgetEntry* tmp = NewL();
-    for ( TInt i = 0; i < (*aProps)->Count(); i++ )
+    TInt i = 0;
+    for ( ; i < (*aProps)->Count(); i++ )
     {
         CWidgetPropertyValue* value = CWidgetPropertyValue::NewL();
         tmp->iPropertyValues.AppendL( value );
@@ -102,6 +102,14 @@
         (**aProps)[i]->iType = EWidgetPropTypeUnknown;
         delete (**aProps)[i];
     }
+
+    // Pad out with unknown properties to reach the correct number
+    for ( ; i < EWidgetPropertyIdCount ; i++ )
+    {
+        CWidgetPropertyValue* value = CWidgetPropertyValue::NewL();
+        tmp->iPropertyValues.AppendL( value );
+    }
+    
     (*aProps)->Close();
     delete *aProps;
     *aProps = NULL;
@@ -170,12 +178,42 @@
     //WIDGETPROPERTYLISTVERSION is 1 in case of Tiger engine and 3 in case of Leopard engine. Therefore, modifying the check such that 
     //when the Version id is 1 or 3, we do not treat the file as corrupt.
     if ( ( EWidgetPropTypeUnknown == (*this)[EWidgetPropertyListVersion].iType )
-         || ( (KWidgetPropertyListVersion32 != (*this)[EWidgetPropertyListVersion] ) && (KWidgetPropertyListVersion71 != (*this)[EWidgetPropertyListVersion] )) )
+         || ( (KWidgetPropertyListVersion32 != (*this)[EWidgetPropertyListVersion] ) && 
+              (KWidgetPropertyListVersion71 != (*this)[EWidgetPropertyListVersion] ) &&
+              (KWidgetPropertyListVersion71CWRT != (*this)[EWidgetPropertyListVersion] ) ))
         {
         User::Leave( KErrCorrupt );
         }
-    // Read only until the ENokiaWidget for the 3.2 widgets 
-    TInt propertyIdCount =  (*this)[EWidgetPropertyListVersion] == KWidgetPropertyListVersion32 ? ENokiaWidget+1 : EWidgetPropertyIdCount; 
+        
+    // Provide appropriate values for EProcessUid and EMimeType
+    (*this)[EProcessUid] = KUidWidgetUi.iUid;
+    
+    HBufC* heapBuf = HBufC::NewLC(KWidgetMime().Length());
+    TPtr ptr(heapBuf->Des());   
+    ptr.Copy(KWidgetMime);  // 8-bit to 16-bit copy
+    (*this)[EMimeType] = *heapBuf;
+    CleanupStack::PopAndDestroy();
+    
+    // Read only until the ENokiaWidget for the 3.2 widgets, EPreInstalled for 7.1 widgets
+    TInt propertyIdCount = 0;
+    switch ((*this)[EWidgetPropertyListVersion]) {
+    case KWidgetPropertyListVersion32:
+        propertyIdCount = ENokiaWidget+1;
+        // since we've filled in the EProcessUid and EMimeType we're
+        // now at KWidgetPropertyListVersion71CWRT
+        (*this)[EWidgetPropertyListVersion] = KWidgetPropertyListVersion71CWRT;
+        break;
+    case KWidgetPropertyListVersion71:
+        propertyIdCount = EPreInstalled+1;
+        // since we've filled in the EProcessUid and EMimeType we're
+        // now at KWidgetPropertyListVersion71CWRT
+        (*this)[EWidgetPropertyListVersion] = KWidgetPropertyListVersion71CWRT;
+        break;
+    case KWidgetPropertyListVersion71CWRT:
+        propertyIdCount = EWidgetPropertyIdCount;
+        break;
+    }        
+
     // fill property values array
     for ( TInt i = 1; i < propertyIdCount; ++i )
         {
@@ -218,6 +256,8 @@
                 iPropertyValues.AppendL( val );
                 CleanupStack::Pop(); // val
                 }
+            // Internalization of the Xml is complete, cleanup the properties appropriately
+            PropertyCleanupL();
             return;
             }
         TPtrC8 propTag( n->name );
@@ -584,7 +624,17 @@
         User::LeaveIfError( wsSession.Connect() );
         CleanupClosePushL( wsSession );
         TApaTaskList taskList( wsSession );
-        TApaTask task = taskList.FindApp( KUidWidgetUi );
+
+        TUid uid;
+
+        if ( EWidgetPropTypeUnknown == (*this)[EProcessUid].iType ) {
+            uid = KUidWidgetUi;
+        } else {
+            uid = TUid::Uid( (*this)[EProcessUid] );
+        }
+
+        TApaTask task = taskList.FindApp( uid );
+
         if ( EFalse == task.Exists() )
             {
             // widget UI crashed, reset active
@@ -618,5 +668,49 @@
         }
         
     }
+    
+// ============================================================================
+// CWidgetEntry::PropertyCleanupL()
+// Make adjustments to bring the property values up to the current
+// property list version
+//
+// @since 
+// ============================================================================
+//
+void CWidgetEntry::PropertyCleanupL()
+{
+    TInt currentVersion = (*this)[EWidgetPropertyListVersion];
+
+    while (currentVersion < WIDGETPROPERTYLISTVERSION) {
+        switch (currentVersion) {
+        case KWidgetPropertyListVersion32:
+            // Go from PropertyListVersion32 to PropertyListVersion71
+            // Adds EMiniViewEnable, EBlanketPermGranted, EPreInstalled
+            // (all are optional, just update the version number now
+            //  and they will be undefined when serialized/deserialized)
+            currentVersion = KWidgetPropertyListVersion71;
+            break;
+        case KWidgetPropertyListVersion71:
+            // Go from PropertlyListVersion71 to PropertyListVersion71CWRT
+            // 1) add ProcessUid for WRT (wgz) widgets
+            (*this)[EProcessUid] = KUidWidgetUi.iUid;
+
+             // 2) add MIMEType
+            HBufC* heapBuf = HBufC::NewLC(KWidgetMime().Length());
+            TPtr ptr(heapBuf->Des());
+            ptr.Copy(KWidgetMime);  // 8-bit to 16-bit copy
+            (*this)[EMimeType] = *heapBuf;
+            CleanupStack::PopAndDestroy();
+
+            currentVersion = KWidgetPropertyListVersion71CWRT;
+            break;
+        default:
+            // Trouble
+            return;
+        }
+
+        (*this)[EWidgetPropertyListVersion] = currentVersion;
+    }
+}
 
 //  End of File
--- a/webengine/widgetregistry/Server/src/WidgetRegistry.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/widgetregistry/Server/src/WidgetRegistry.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -63,6 +63,8 @@
       "a:\\private\\10282f06\\WidgetEntryStore.dat" );
 _LIT( KWidgetEntryStoreXmlFile,
       "a:\\private\\10282f06\\WidgetEntryStore.xml" );
+_LIT( KCWRTWidgetEntryStoreXmlFile,
+      "c:\\private\\10282f06\\CWRTWidgetEntryStore.xml" );
 _LIT( KWidgetEntryStoreXmlTempFile,
       "a:\\private\\10282f06\\WidgetEntryStoreTemp.xml" );
 _LIT( KWidgetDirFile, "widget_lproj.xml" );
@@ -169,6 +171,7 @@
     iWidgetInstallPath( KWidgetInstallPath ),
     iRegistryBinaryFileName( KWidgetEntryStoreBinaryFile ),
     iRegistryXmlFileName( KWidgetEntryStoreXmlFile ),
+    iRegistryCWRTXmlFileName( KCWRTWidgetEntryStoreXmlFile ),
     iRegistryXmlTempFileName( KWidgetEntryStoreXmlTempFile ),
     iPolicyId( 0 )
     {
@@ -336,7 +339,7 @@
             }
         }
 #else
-	iPolicyId = KErrNotSupported;
+  iPolicyId = KErrNotSupported;
 #endif    
     return iPolicyId;
     }
@@ -581,11 +584,15 @@
         // UIDs already known to app arch be reserved.
         for ( TInt i = 0; i < appArchList.Count(); i++ )
             {
-            if ( KErrNone != iUsedUids.Append( (appArchList)[i] ) )
+            // Do not maintain the list of used CWRT widget UIDs
+            if ( !TUidAllocator::IsCWRTWidget((appArchList)[i]) )
                 {
-                // no recovery possible
-                doConsistency = EFalse;
-                break;
+                  if ( KErrNone != iUsedUids.Append( (appArchList)[i] ) )
+                      {
+                      // no recovery possible
+                      doConsistency = EFalse;
+                      break;
+                      }
                 }
             }
         }
@@ -598,6 +605,23 @@
         // on error use english
         iLprojName = _L("en");
         }
+        
+    // Internalize the CWRT widgets, without consistency checking
+    // No multi-drive support for CWRT
+    TDriveUnit driveUnit(EDriveC);
+    CDir* installedListForDrive = NULL;
+    RArray<TInt> installedListForDriveFlags;
+    TRAP_IGNORE(  // consistency checking doesn't apply to CWRT
+          InternalizeXmlL( iRegistryCWRTXmlFileName,
+                           driveUnit,
+                           EFalse,
+                           appArchList,
+                           appArchListFlags,
+                           installedListForDrive,
+                           installedListForDriveFlags,
+                           dirtyFlag ) );
+    delete installedListForDrive;
+    installedListForDriveFlags.Close();
 
     // List all drives in the system
     TDriveList driveList;
@@ -707,10 +731,14 @@
         delete installedListForDrive;
         installedListForDriveFlags.Close();
         } // for
+
+    // appArchList will not contain CWRT widgets, so 
+    // consistency checking will not apply to them
     if ( doConsistency )
         {
         AppArchListConsistency( appArchList, appArchListFlags );
-        }    
+        }
+
     CleanupStack::PopAndDestroy( 2, &appArchList );//appArchListFlags, appArchList
 
     aDirtyFlag = dirtyFlag;
@@ -977,10 +1005,20 @@
     // and value as an array of entry indices for that drive
     RPtrHashMap< TInt, CArrayFixFlat<TInt> > driveEntryHashMap;
     CleanupClosePushL( driveEntryHashMap );
+    CArrayFixFlat<TInt>* cwrtWidgetArray = new (ELeave) CArrayFixFlat<TInt>(1);
+    CleanupStack::PushL( cwrtWidgetArray );
 
     for (TInt i = 0 ;i < iEntries.Count(); i++)
         {
         CWidgetEntry* entry = iEntries[i];
+        
+        // Bypass if the widget is a CWRT widget, they're externalized
+        // independently
+        if (TUidAllocator::IsCWRTWidget(TUid::Uid((*entry)[EUid]))) {
+          cwrtWidgetArray->AppendL(i);
+          continue;
+        }
+        
         const TDesC& driveName = (*entry)[EDriveName];
         TDriveUnit driveUnit( driveName );
         CArrayFixFlat<TInt>* array =
@@ -1070,11 +1108,35 @@
                 }
             }
         }
+    
+    TDriveUnit driveUnit( EDriveC );    
+    iRegistryXmlTempFileName[0] = driveUnit.Name()[0];
+    
+    iFs.CreatePrivatePath( driveUnit );
+    
+    // a transactional file update to protect against
+    // disk full, etc: overwrite temp then rename temp to original
+    
+    TRAPD( error,
+           ExternalizeXmlL( iRegistryXmlTempFileName, cwrtWidgetArray ) );
+    if ( KErrNone == error )
+        {
+        // last steps in transactional update
+        BaflUtils::DeleteFile( iFs, iRegistryCWRTXmlFileName );
+        BaflUtils::RenameFile( iFs, 
+                               iRegistryXmlTempFileName,
+                               iRegistryCWRTXmlFileName );
+        }
+     else  // handle leave by deleting temp file
+         {
+         BaflUtils::DeleteFile( iFs, iRegistryXmlTempFileName );
+         }
 
     for ( TInt i = 0; i < driveEntryHashMap.Count(); i++ )
         {
         CleanupStack::Pop();
         }
+    CleanupStack::PopAndDestroy( cwrtWidgetArray );
     CleanupStack::Pop( &driveEntryHashMap );
     driveEntryHashMap.ResetAndDestroy();
     driveEntryHashMap.Close();
@@ -1828,7 +1890,8 @@
         error = iAppArch.GetNextApp( info );
         if ( KErrNone == error )
             {
-            if ( TUidAllocator::IsWidget( info.iUid ) )
+            if ( TUidAllocator::IsWidget( info.iUid ) &&
+                 !TUidAllocator::IsCWRTWidget( info.iUid ) )
                 {
                 LOG2( " widget uid 0x%x (%d)",
                           (TUint)(info.iUid.iUid), info.iUid.iUid );
@@ -1857,10 +1920,10 @@
         {
         aUids.Reset();
         }
-	else 
-		{
-		error = KErrNone;
-		}
+  else 
+    {
+    error = KErrNone;
+    }
     LOG_CODE( if ( aUids.Count() ) )
     LOG1( "AppArchWidgetUids done widget count %d",
               aUids.Count() );
@@ -2297,4 +2360,6 @@
         }
     LOG( "AppArchListConsistency done" );
     }
+
+
 // End of File
--- a/webengine/widgetregistry/Server/src/WidgetRegistryXml.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/widgetregistry/Server/src/WidgetRegistryXml.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -44,6 +44,8 @@
 _LIT( KMiniViewEnabled,      "MiniViewEnabled" );
 _LIT( KBlanketPermGranted,   "BlanketPermissionGranted" );         // optional
 _LIT( KPreInstalled,         "PreInstalled" );
+_LIT( KProcessUid,           "ProcessUid" );
+_LIT( KMimeType,             "MimeType" );
 
 static void XmlFree( TAny* aPtr )
     {
@@ -193,6 +195,16 @@
     property.name.Set( KPreInstalled );
     property.type = EWidgetPropTypeInt;
     iProperties.AppendL(property);
+    //
+    property.id = EProcessUid;
+    property.name.Set( KProcessUid );
+    property.type = EWidgetPropTypeInt; // not TUid
+    iProperties.AppendL(property);
+    //
+    property.id = EMimeType;
+    property.name.Set( KMimeType );
+    property.type = EWidgetPropTypeString;
+    iProperties.AppendL(property);
     }
 
 // ============================================================================
--- a/webengine/wrtharvester/inc/wrtharvester.h	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/wrtharvester/inc/wrtharvester.h	Mon Mar 15 12:44:50 2010 +0200
@@ -125,6 +125,8 @@
         void DialogShown();
 
         static TInt DeleteCallback(TAny* aPtr);		
+        
+        TBool SetSystemShutdown(TBool aState){ iSystemShutdown = aState; }
 		
 	private:
         
@@ -279,6 +281,12 @@
          * own
          */        
         CWrtUsbHandler* iWidgetUsbListener;
+                
+        /**
+         * Publish & Subscribe listener
+         * own
+         */        
+        CWrtHarvesterPSNotifier* iWidgetSystemShutdownListener;
         
 		/**
     	* 
@@ -355,6 +363,11 @@
          * 
          */
 		 CAsyncCallBack*  iAsyncCallBack;
+		
+		/**
+         * 
+         */
+		 TBool  iSystemShutdown;
     };
 
 #endif // C_WRTCONTENTHARVESTER_H 
--- a/webengine/wrtharvester/inc/wrtharvesterconst.h	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/wrtharvester/inc/wrtharvesterconst.h	Mon Mar 15 12:44:50 2010 +0200
@@ -54,6 +54,7 @@
 _LIT8( KTemplateType, "template_type");
 _LIT8( KWidgetName,   "widget_name");
 _LIT8( KWidgetInfo,   "widget_info");
+_LIT8( KWidgetType,   "widget_type");
 _LIT( KTemplatedWidget, "ai3templatedwidget");
 _LIT8( KMyActionMap, "action_map" );
 _LIT8( KMyItem, "item" );
--- a/webengine/wrtharvester/inc/wrtharvesterpsnotifier.h	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/wrtharvester/inc/wrtharvesterpsnotifier.h	Mon Mar 15 12:44:50 2010 +0200
@@ -26,7 +26,7 @@
 // Content Harvester server secure id
 const TUid KPropertyCat = { 0x10282E5A };
 // Can not conflict with other Content Harvester plugin keys
-enum TPropertyKeys { EWidgetUIState = 109, EWidgetRegAltered, EWidgetMMCAltered, EWidgetMassStorageMode };
+enum TPropertyKeys { EWidgetUIState = 109, EWidgetRegAltered, EWidgetMMCAltered, EWidgetMassStorageMode, EWidgetSystemShutdown };
 
 /**
  * Publish&Subscribe event listener
--- a/webengine/wrtharvester/inc/wrtharvesterregistryaccess.h	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/wrtharvester/inc/wrtharvesterregistryaccess.h	Mon Mar 15 12:44:50 2010 +0200
@@ -27,6 +27,7 @@
 class CWidgetInfo;
 
 // CONSTANTS
+const TInt32 KS60Widget = 1;
 template < class T > class RWrtArray : public RPointerArray< T >
     {
     public:
@@ -72,6 +73,7 @@
             iUid = TUid::Uid(0);
             iDisplayName = NULL;
             iBundleId = NULL;
+            iType = KErrNotFound;
             }
 
         /**
@@ -87,6 +89,7 @@
         TUid        iUid;
         HBufC*      iDisplayName;// widget display name
         HBufC*      iBundleId; //  widget bundle identifier
+        TInt      iType; // widget type
     };
 
 // CLASS DECLARATION
@@ -131,6 +134,15 @@
         * @return Yes or no.
         */
         TBool SupportsMiniviewL( RWidgetRegistryClientSession& aSession, const TUid& aUid );
+                
+        /**
+        * Check if the widget is wgz.
+        * 
+        * @param aSession Widget registry session
+        * @param aUid UID of widget.
+        * @return Yes or no.
+        */
+        TBool IsNokiaWidget( RWidgetRegistryClientSession& aSession, const TUid& aUid );
         
         /**
         * Returns the property value for the widget as a string. Ownership transferred.
--- a/webengine/wrtharvester/src/wrtharvester.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/wrtharvester/src/wrtharvester.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -25,7 +25,7 @@
 #include "wrtharvesterconst.h"
 #include <widgetregistryconstants.h>
 #include <wrtharvester.rsg>
-
+#include <startupdomainpskeys.h>
 #include <ecom/implementationproxy.h>
 
 #include <LiwServiceHandler.h>
@@ -225,8 +225,11 @@
 void CWrtHarvester::ConstructL()
     {
     User::LeaveIfError( iApaSession.Connect() );
+    	
+    iSystemShutdown = EFalse;
     iWidgetUIListener = CWrtHarvesterPSNotifier::NewL( this, EWidgetUIState );
     iWidgetRegListener = CWrtHarvesterPSNotifier::NewL( this, EWidgetRegAltered );
+    iWidgetSystemShutdownListener = CWrtHarvesterPSNotifier::NewL( this, EWidgetSystemShutdown );
     
     User::LeaveIfError( iFs.Connect() );
     iWidgetUsbListener = CWrtUsbHandler::NewL( this, iFs );
@@ -287,6 +290,7 @@
     delete iWidgetRegListener;
     delete iWidgetMMCListener;
     delete iWidgetUsbListener;
+    delete iWidgetSystemShutdownListener;
     if(iAsyncCallBack)
         {
         iAsyncCallBack->Cancel();       
@@ -316,14 +320,28 @@
     {
     
     //Do not send the Operations to the Widgets when in Mass storage mode.. . .  
-    if( IsInMSMode() == 1 )
-        {
-         if(aTrigger == KDeActive)
-         RemovePublisherAndObserverL(aContentId);
-         return;              
-        }
-   
     TUid uid( WidgetUid( aContentId ) );
+    
+    
+    if(iSystemShutdown && aTrigger == KDeActive )
+    	{
+    	return ;
+    	}
+    if( IsInMSMode() == 1 && aTrigger == KDeActive)
+      {
+      RemovePublisherAndObserverL(aContentId);
+      
+      if(!iSystemShutdown)
+          {
+          RWidgetRegistryClientSession session;
+          CleanupClosePushL( session );
+          User::LeaveIfError( session.Connect() );
+          session.SetBlanketPermissionL( uid, EBlanketUnknown );
+          CleanupStack::PopAndDestroy( &session );
+          }
+      return; 
+      }
+             
     TWidgetOperations operation( Uninitialized );
     if( aTrigger == KActive )
         {
@@ -357,8 +375,20 @@
             break;
             }
           }
-        delete temp;        
-        }
+        delete temp;
+        
+        // Removing . Miniview, shall remove full view as well. For blanket permissions
+        // will be revoked for miniview
+         
+      	if(!iSystemShutdown)
+      	    {        
+            RWidgetRegistryClientSession session;
+            CleanupClosePushL( session );
+            User::LeaveIfError( session.Connect() );
+            session.SetBlanketPermissionL( uid, EBlanketUnknown );
+            CleanupStack::PopAndDestroy( &session );
+            }
+      }
     else if( aTrigger == KSuspend )
         {
         operation = WidgetSuspend;
@@ -502,8 +532,38 @@
             if( publisherMap && publisherMap->FindL( KContentId , variant ))
                 {
                  HBufC* bundleId = variant.AsDes().AllocLC();
-                 publishers.AppendL( bundleId );
-                 CleanupStack::Pop( bundleId );
+                 variant.Reset();
+                 TBool isNokiaWidget = EFalse;
+                 if ( publisherMap->FindL( KDataMap, variant) )
+                     {
+                     CLiwDefaultMap* dataMap = CLiwDefaultMap::NewLC();
+                     variant.Get( *dataMap );
+                     variant.Reset();
+                     if ( dataMap->FindL( KWidgetInfo, variant ) )
+                         {
+                         CLiwDefaultMap* widgetInfoMap = CLiwDefaultMap::NewLC();
+                         variant.Get( *widgetInfoMap );
+                         if ( widgetInfoMap->FindL( KWidgetType, variant ) )
+                             {
+                             if ( KS60Widget == variant.AsTInt32())
+                                 {
+                                 isNokiaWidget = ETrue;
+                                 }
+                             }
+                         CleanupStack::PopAndDestroy( widgetInfoMap );
+                         }
+                     CleanupStack::PopAndDestroy( dataMap );
+                     }
+                 
+                 if (isNokiaWidget )
+                     {
+                     publishers.AppendL( bundleId );
+                     CleanupStack::Pop( bundleId );
+                     }
+                 else
+                     {
+                     CleanupStack::PopAndDestroy( bundleId );
+                     }
                  }
              CleanupStack::PopAndDestroy( publisherMap );     
              }
@@ -554,6 +614,7 @@
 		    widgetInfo->InsertL( KTemplateType, TLiwVariant( KTemplateName ));
 		    widgetInfo->InsertL( KWidgetName, TLiwVariant( wrtInfo.iDisplayName ));
 		    widgetInfo->InsertL( KWidgetIcon, TLiwVariant( wrtuid));  // uid(0x12345678) This is the expected format 
+            widgetInfo->InsertL( KWidgetType, TLiwVariant( TInt32 (wrtInfo.iType ) ));
 
 		    datamap->InsertL( KWidgetInfo , TLiwVariant( widgetInfo ));
 		    CleanupStack::PopAndDestroy( widgetInfo );
--- a/webengine/wrtharvester/src/wrtharvesterpsnotifier.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/wrtharvester/src/wrtharvesterpsnotifier.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -20,6 +20,7 @@
 #include "wrtharvester.h"
 #include <UikonInternalPSKeys.h>//For MMC Observing
 #include <usbmsshared.h>//For USB monitor
+#include <startupdomainpskeys.h> // For shutdown observer
 
 // ============================ MEMBER FUNCTIONS =============================
 
@@ -90,6 +91,10 @@
         {
         User::LeaveIfError( iProperty.Attach( KUsbMsDriveState_Category,EUsbMsDriveState_DriveStatus ));
         }    	
+    else if( iKey == EWidgetSystemShutdown )
+        {
+        User::LeaveIfError( iProperty.Attach( KPSUidStartup,KPSGlobalSystemState  ));
+        }    	
     else
     	{
     	User::LeaveIfError( iProperty.Attach( KPropertyCat, iKey));
@@ -131,7 +136,10 @@
     TUsbMsDrivesStatus allDrivesStatus;
     if( iKey != EWidgetMMCAltered && iKey != EWidgetMassStorageMode )
     	{
-    	iProperty.Get( KPropertyCat, iKey, value );	
+    		if (iKey == EWidgetSystemShutdown)
+    	        GetValue( value);
+    	    else
+    	        iProperty.Get( KPropertyCat, iKey, value );	
     	}    
     else
         {        
@@ -164,6 +172,10 @@
                 } 	
             iHarvester->UpdateL();
             }
+		else if( iKey == EWidgetSystemShutdown && value == ESwStateShuttingDown  )
+            {
+             iHarvester->SetSystemShutdown(ETrue);
+            }
         }
     }
 
--- a/webengine/wrtharvester/src/wrtharvesterregistryaccess.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/webengine/wrtharvester/src/wrtharvesterregistryaccess.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -61,12 +61,15 @@
         {
         CWidgetInfo* widgetInfo( widgetInfoArr[i] );
         
-        if ( SupportsMiniviewL( session, widgetInfo->iUid ) )
+
+        if ( SupportsMiniviewL( session, widgetInfo->iUid ) &&
+        	   IsNokiaWidget( session, widgetInfo->iUid ))
             {
             CWrtInfo* info = new CWrtInfo();
             info->iUid = widgetInfo->iUid;
             info->iBundleId = WidgetPropertyL( session, widgetInfo->iUid, EBundleIdentifier );
             info->iDisplayName = WidgetPropertyL( session, widgetInfo->iUid, EBundleDisplayName );
+            info->iType = KS60Widget;
             aWidgetInfoArray.AppendL( info );
             }
         }
@@ -94,6 +97,25 @@
     }
     
 // ---------------------------------------------------------------------------
+// Check if it is wgz widget  .
+// ---------------------------------------------------------------------------
+//
+TBool WrtHarvesterRegistryAccess::IsNokiaWidget( 
+    RWidgetRegistryClientSession& aSession,
+    const TUid& aUid )
+    {
+    TBool res( EFalse );
+    
+    CWidgetPropertyValue* value( NULL );
+    value = aSession.GetWidgetPropertyValueL( aUid, ENokiaWidget );
+    
+    res = value && ( *value == 0 || *value == 1 );
+    
+    delete value;
+    return res;
+    }
+    
+// ---------------------------------------------------------------------------
 // Get the widget property as string.
 // ---------------------------------------------------------------------------
 //
@@ -113,3 +135,4 @@
     
  //  End of File
 
+
--- a/widgets/widgetapp/inc/WidgetUiWindowManager.h	Fri Mar 12 15:48:51 2010 +0200
+++ b/widgets/widgetapp/inc/WidgetUiWindowManager.h	Mon Mar 15 12:44:50 2010 +0200
@@ -61,12 +61,40 @@
 #endif
 // CLASS DECLARATION
 
+class CRepository; 
+
+class MCenrepWatcher
+       {
+       public:
+               virtual void CenrepChanged(TInt aHSModeOnline) = 0;
+        };
+class CCenrepNotifyHandler : public CActive
+       {
+       public:
+                static CCenrepNotifyHandler* NewL( MCenrepWatcher& aObserver);
+                static CCenrepNotifyHandler* NewLC( MCenrepWatcher& aObserver);
+                void StartObservingL();
+                void StopObserving();
+                virtual ~CCenrepNotifyHandler();
+                void RunL();
+                void RunErrorL(TInt aError);
+                void DoCancel();
+       protected:
+                CCenrepNotifyHandler(MCenrepWatcher& aObserver);
+                void ConstructL();
+       private:
+              CRepository* iRepository;
+              TUint32 iKey;
+              TUid iUid;
+              MCenrepWatcher& iObserver; //class using the observer
+        };
 /**
 *  CWidgetUiWindowManager
 *  @lib WidgetUi.app
 *  @since 3.1
 */
-class CWidgetUiWindowManager : public CBase
+class CWidgetUiWindowManager : public CBase,
+	                             public MCenrepWatcher
     {
     public:  // constructors / destructor
 
@@ -87,6 +115,14 @@
         * @return none
         */
         virtual ~CWidgetUiWindowManager();
+    public:  //MCenrepWatcher
+    	  
+    	/**
+        * CenrepChanged
+        * @since 7.x
+        * @param aHSModeOnline HS web status online/offline.
+        */
+        void CenrepChanged(TInt aHSModeOnline);
 
     public:  
 
@@ -597,6 +633,7 @@
         
 #ifdef BRDO_WRT_HS_FF       
         CCpsPublisher*                      iCpsPublisher;      // Owned, interface to publish bitmap to CPS
+        CCenrepNotifyHandler*               iCenrepNotifyHandler;  
 #endif
         // TODO should this be created only when needed?
         CActiveApDb*                        iDb;                // owned, responsible for deleting        
@@ -604,7 +641,7 @@
         CPeriodic*                          iNotifyHarvester;//Notify harvester to send next event
 #ifdef  OOM_WIDGET_CLOSEALL
         TTime                               iTimeLastWidgetOpen;
-#endif         
+#endif  
     };
 
 #endif  // WIDGETUIWINDOWMANAGER_H_
--- a/widgets/widgetapp/src/WidgetUiWindow.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/widgets/widgetapp/src/WidgetUiWindow.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -808,6 +808,7 @@
         TInt ask( 1 );
         TInt wmlId( KWmlNoDefaultAccessPoint );
         TInt snapId( KWmlNoDefaultSnapId );
+#ifndef BRDO_OCC_ENABLED_FF
         CRepository* rep( NULL );
         TRAPD( cenrepError, rep = CRepository::NewL( KCRUidBrowser ) );
         if ( KErrNone == cenrepError )
@@ -817,6 +818,7 @@
             (void)rep->Get( KBrowserNGDefaultSnapId, snapId );
             }
         delete rep;
+#endif
         if ( ask == EBrowserCenRepApSelModeDestination &&
            ( snapId != KWmlNoDefaultSnapId) )
             {
@@ -1001,8 +1003,11 @@
                             aDesArray,
                             paramFound );
 
-    TLex lex(dlId);
-    User::LeaveIfError(lex.Val(iDlId));
+    if ( paramFound )
+        {
+        TLex lex(dlId);
+        User::LeaveIfError(lex.Val(iDlId));
+        }
 
     TDataType dataType( *contentType8 );
     CAiwGenericParamList* genericParamList =
--- a/widgets/widgetapp/src/WidgetUiWindowManager.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/widgets/widgetapp/src/WidgetUiWindowManager.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -181,9 +181,9 @@
     
 #ifdef BRDO_WRT_HS_FF    
     iCpsPublisher = CCpsPublisher::NewL();
+    iCenrepNotifyHandler = CCenrepNotifyHandler::NewL( *this );
+    iNetworkListener = CWidgetUiNetworkListener::NewL( *this );
 #endif
-    
-    iNetworkListener = CWidgetUiNetworkListener::NewL( *this );
     }
 
 // -----------------------------------------------------------------------------
@@ -211,12 +211,18 @@
 //
 CWidgetUiWindowManager::~CWidgetUiWindowManager()
     {
+#ifdef BRDO_WRT_HS_FF 
+    iCenrepNotifyHandler->DoCancel();
+    delete iCenrepNotifyHandler;
+#endif
     if( iDialogsProvider)
         iDialogsProvider->CancelAll();
     iActiveFsWindow = NULL;
     iWindowList.ResetAndDestroy();
-    
+  
+#ifdef BRDO_WRT_HS_FF   
     delete iNetworkListener;
+#endif
 
     // TODO Why there is a "Disconnect" method in the first place...
     // RHandleBase::Close() should be enough?
@@ -261,7 +267,7 @@
     // Removing . Miniview, shall remove full view as well. For blanket permissions
     // will be revoked for miniview
 
-    iClientSession.SetBlanketPermissionL( aUid, EBlanketUnknown );
+ 
     iClientSession.SetMiniViewL( aUid, EFalse );
     return CloseWindow( wdgt_window );
     }
@@ -1421,7 +1427,7 @@
     {
     User::LeaveIfError(iOomSession.Connect());
     CActiveScheduler::Add( this );
-#ifdef FF_OOM_MONITOR2_COMPONENT
+#ifdef BRDO_OOM_MONITOR2_COMPONENT_FF
     iOomSession.RequestOptionalRam(KMemoryToCreateWidgetWindow, KMemoryToCreateWidgetWindow, KUidWidgetOOMPlugin, iStatus);
     SetActive();
 #else
@@ -1487,5 +1493,119 @@
     {
     iOomSession.CancelRequestFreeMemory();
     }    
+void CWidgetUiWindowManager::CenrepChanged(TInt aHSModeOnline)
+    {
+    for ( TInt i = 0; i < iWindowList.Count(); i++ )
+        {
+        CWidgetUiWindow* window = iWindowList[i];
+        if( window &&  window->WidgetMiniViewState() == EPublishSuspend )
+            {
+            if ( window->NetworkModeWait()->IsStarted() )
+                {
+                window->NetworkModeWait()->AsyncStop();
+                }
+		        if(aHSModeOnline)
+		            {
+		  	        iNetworkMode = EOnlineMode;
+		            }
+		        else
+		  	        {
+		  	        iNetworkMode = EOfflineMode;	
+		  	        if ( ( !FullViewWidgetsOpen() ) && ( iConnection->Connected() ) )
+                    {
+                    TRAP_IGNORE( window->Engine()->HandleCommandL( 
+                                (TInt)TBrCtlDefs::ECommandIdBase +
+                                (TInt)TBrCtlDefs::ECommandCancelFetch ) );
+                    
+                         window->Engine()->HandleCommandL( 
+                                (TInt)TBrCtlDefs::ECommandIdBase +
+                                (TInt)TBrCtlDefs::ECommandDisconnect );
+                    iConnection->CancelConnection();
+                    iConnection->StopConnectionL();
+                    }
+		  	        }
+		  	    if(window->IsWidgetLoaded())
+                window->DetermineNetworkState();
+            else
+                window->NeedToNotifyNetworkState(ETrue);
+        
+            }
+        }
+  }        
 
+
+//cenrep notification handling
+
+CCenrepNotifyHandler * CCenrepNotifyHandler::NewL(
+    MCenrepWatcher& aObserver)
+    {
+    CCenrepNotifyHandler* o =  CCenrepNotifyHandler::NewLC(aObserver);
+    CleanupStack:: Pop(o);
+    return o;
+    }
+CCenrepNotifyHandler*  CCenrepNotifyHandler::NewLC(
+    MCenrepWatcher& aObserver) 
+    {
+    CCenrepNotifyHandler* self( new( ELeave ) CCenrepNotifyHandler( aObserver) );
+    CleanupStack:: PushL(self);
+    self->ConstructL();
+    return self;
+    }    
+void CCenrepNotifyHandler::ConstructL()
+    {
+    iUid = TUid::Uid( KCRUidActiveIdleLV ); 
+    iKey = KAIWebStatus;
+    iRepository = CRepository::NewL( iUid );
+    CActiveScheduler::Add(this);
+    StartObservingL();
+    }
+         
+CCenrepNotifyHandler::CCenrepNotifyHandler(MCenrepWatcher& aObserver) : iObserver(aObserver), CActive (EPriorityLow)
+   {
+         
+   }
+     
+CCenrepNotifyHandler::~CCenrepNotifyHandler()
+    {
+    Cancel(); //first cancel because iRepository is used there
+    delete iRepository;
+    iRepository=NULL;
+    }
+    
+void CCenrepNotifyHandler::StartObservingL()
+    {
+    if( IsActive() )
+        {
+        return; //do nothing if allready observing
+        }
+    User::LeaveIfError(
+                   iRepository->NotifyRequest( iKey, iStatus ) );
+    SetActive();
+    }
+    
+void CCenrepNotifyHandler::StopObserving()
+    {
+    Cancel();
+    }
+    
+void CCenrepNotifyHandler::DoCancel()
+    {
+    iRepository->NotifyCancel(iKey);
+    }
+
+void CCenrepNotifyHandler::RunL()
+    {
+    TInt value = 0;
+    TInt error = iRepository->Get( iKey, value);
+    if( error == KErrNone )
+        {
+        iObserver.CenrepChanged(value);
+        }
+    // Re-subscribe
+   error = iRepository->NotifyRequest( iKey, iStatus );
+   if( error == KErrNone )
+       {
+       SetActive();
+       }
+    }
 // End of file
--- a/widgets/widgetapp/src/WidgetUiWindowView.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/widgets/widgetapp/src/WidgetUiWindowView.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -412,7 +412,7 @@
 //
 TBool CWidgetUiWindowView::IsOptionsMenuActivated()
  	{
- 	return iIsOptionsMenuActivated;
+ 	return AppUi()->IsDisplayingMenuOrDialog();
  	}
 
 
--- a/widgets/widgetinstaller/src/WidgetUIOperationsWatcher.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/widgets/widgetinstaller/src/WidgetUIOperationsWatcher.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -133,7 +133,7 @@
         CWidgetPropertyValue* value = CWidgetPropertyValue::NewL();
         User::LeaveIfError( iPropertyValues.Insert( value, i ) );
         }
-    *(iPropertyValues[EWidgetPropertyListVersion]) = WIDGETPROPERTYLISTVERSION;
+    *(iPropertyValues[EWidgetPropertyListVersion]) = KWidgetPropertyListVersion71;
 
     iTaskManager = CTaskManager::NewL();
     }
--- a/widgets/widgetlauncher/src/WidgetLauncher.cpp	Fri Mar 12 15:48:51 2010 +0200
+++ b/widgets/widgetlauncher/src/WidgetLauncher.cpp	Mon Mar 15 12:44:50 2010 +0200
@@ -31,7 +31,7 @@
 #include <APGTASK.H>
 #include <oommonitorsession.h>
 #include <e32property.h>
-#ifndef FF_OOM_MONITOR2_COMPONENT 
+#ifndef BRDO_OOM_MONITOR2_COMPONENT_FF 
 #include <systemwarninglevels.hrh>
 #endif
 #include "browser_platform_variant.hrh"
@@ -211,7 +211,7 @@
             TInt bytesAvailaible(0);
             if (aOperation != WidgetSelect && aOperation != LaunchFullscreen )
                 {
-#ifdef FF_OOM_MONITOR2_COMPONENT
+#ifdef BRDO_OOM_MONITOR2_COMPONENT_FF
                 err = monitorSession.RequestOptionalRam(KMemoryToLaunchWidgetUi, KMemoryToLaunchWidgetUi,KUidWidgetOOMPlugin, bytesAvailaible);
 #else
                    TMemoryInfoV1Buf info;
--- a/widgets/widgetsidchecker/group/bld.inf	Fri Mar 12 15:48:51 2010 +0200
+++ b/widgets/widgetsidchecker/group/bld.inf	Mon Mar 15 12:44:50 2010 +0200
@@ -15,7 +15,7 @@
 *
 */
 
-//#ifdef __PLATFORM_VERSION_52__
+//#ifdef __PLATFORM_VERSION_52_TB92__
 
 #include <platform_paths.hrh>
 #include "../../../web_plat/browser_platform_api/inc/browser_platform_variant.hrh"