Revision: 200919
authorPat Downey <patrick.downey@nokia.com>
Fri, 03 Jul 2009 15:54:40 +0100
changeset 5 10e98eab6f85
parent 1 7c90e6132015
child 6 e965153d51e7
child 10 a359256acfc6
Revision: 200919 Kit: 200925
browserutilities/browserdialogsprovider/Group/browserdialogsprovider.mmp
browserutilities/browsertelservice/group/BrowserTelService.mmp
browserutilities/connectionmanager/Group/ConnectionManager.mmp
browserutilities/connectionmanager/Src/InternetConnectionManager.cpp
browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrClntSubSession.cpp
browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrSrvObject.cpp
browserutilities/downloadmgr/DownloadMgrServEng/Group/HttpDMServEng.mmp
browserutilities/downloadmgr/DownloadMgrServEng/Inc/HttpDownload.h
browserutilities/downloadmgr/DownloadMgrServEng/Src/HttpDownload.cpp
browserutilities/downloadmgr/DownloadMgrUiLib/Data/DownloadMgrUiLib.rss
browserutilities/downloadmgr/DownloadMgrUiLib/Group/DownloadMgrUiLib.mmp
browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadsListArray.cpp
browserutilities/feedsengine/FeedsServer/Server/inc/FeedsDatabase.h
browserutilities/feedsengine/FeedsServer/Server/src/FeedsDatabase.cpp
browserutilities/feedsengine/FeedsServer/Server/src/FeedsServerSession.cpp
browserutilities/feedsengine/FeedsServer/Server/src/UpdateFeedTask.cpp
browserutilities/feedsengine/FeedsServer/UrlHandler/src/HttpHandler.cpp
browserutilities/feedsengine/group/FeedsApp.mmp
browserutilities/group/bld.inf
browserutilities/multipartparser/group/bld.inf
browserutilities/schemehandler/SchemeApp/group/SchemeApp.mmp
browserutilities/webutils/conf/webutils.confml
browserutilities/webutils/conf/webutils.confml.bak
browserutilities/webutils/conf/webutils_101F8731.crml
browserutilities/webutils/src/CUserAgent.cpp
browserutilities/webutils/tsrc/public/adv/group/WebUtilsBCTest.mmp
browserutilities/xmlparser/group/XMLInterface.mmp
codhandler/codui/group/CodUi.mmp
codhandler/codui/src/CodDownloadImpl.cpp
codhandler/codviewer/group/CodViewer.mmp
codhandler/ddviewer/group/DdViewer.mmp
codhandler/roapapp/group/RoapApp.mmp
codhandler/roapapp/src/RoapAppUi.cpp
web_plat/browser_platform_api/group/bld.inf
web_plat/browser_platform_api/inc/Browser_platform_variant.hrh
web_plat/group/bld.inf
web_plat/multipart_parser_api/group/bld.inf
web_plat/scheme_handler_plugin_api/group/bld.inf
web_plat/webutils_api/inc/CUserAgent.h
web_plat/webutils_api/inc/WebUtilsInternalCRKeys.h
web_pub/browser_control_api/tsrc/group/BrCtlApiTest.mmp
web_pub/download_mgr_client_api/tsrc/group/DownloadMgrClientApiTest.mmp
web_pub/favourites_engine_api/tsrc/group/FavouritesEngineTest.mmp
webengine/device/group/Device.mmp
webengine/device/inc/DeviceBridge.h
webengine/device/src/DeviceBridge.cpp
webengine/osswebengine/DerivedSources/WebCore/HTMLNames.cpp
webengine/osswebengine/DerivedSources/WebCore/HTMLNames.h
webengine/osswebengine/DerivedSources/WebCore/XMLNames.cpp
webengine/osswebengine/DerivedSources/WebCore/XMLNames.h
webengine/osswebengine/JavaScriptCore/JavaScriptCore.pri
webengine/osswebengine/JavaScriptCore/bindings/c/c_class.cpp
webengine/osswebengine/JavaScriptCore/bindings/npruntime.cpp
webengine/osswebengine/JavaScriptCore/bindings/testbindings.pro
webengine/osswebengine/JavaScriptCore/kjs/CommonIdentifiers.cpp
webengine/osswebengine/JavaScriptCore/kjs/Parser.cpp
webengine/osswebengine/JavaScriptCore/kjs/collector.cpp
webengine/osswebengine/JavaScriptCore/kjs/date_object.cpp
webengine/osswebengine/JavaScriptCore/kjs/function_object.cpp
webengine/osswebengine/JavaScriptCore/kjs/identifier.cpp
webengine/osswebengine/JavaScriptCore/kjs/interpreter.cpp
webengine/osswebengine/JavaScriptCore/kjs/lexer.cpp
webengine/osswebengine/JavaScriptCore/kjs/list.cpp
webengine/osswebengine/JavaScriptCore/kjs/nodes.cpp
webengine/osswebengine/JavaScriptCore/kjs/object_object.cpp
webengine/osswebengine/JavaScriptCore/kjs/regexp_object.cpp
webengine/osswebengine/JavaScriptCore/kjs/testkjs.pro
webengine/osswebengine/JavaScriptCore/kjs/ustring.cpp
webengine/osswebengine/JavaScriptCore/kjs/ustring.h
webengine/osswebengine/JavaScriptCore/pcre/dftables.pro
webengine/osswebengine/JavaScriptCore/pcre/pcre.pri
webengine/osswebengine/MemoryManager/Group/MemManTest.mmp
webengine/osswebengine/MemoryManager/Src/MemoryManager.cpp
webengine/osswebengine/WebCore/WebCore.pro
webengine/osswebengine/WebCore/bindings/js/kjs_proxy.cpp
webengine/osswebengine/WebCore/bindings/js/kjs_proxy.h
webengine/osswebengine/WebCore/bindings/js/symbian/kjs_console.h
webengine/osswebengine/WebCore/css/CSSImageValue.cpp
webengine/osswebengine/WebCore/css/cssstyleselector.cpp
webengine/osswebengine/WebCore/css/cssstyleselector.h
webengine/osswebengine/WebCore/dom/Document.cpp
webengine/osswebengine/WebCore/dom/Element.cpp
webengine/osswebengine/WebCore/dom/QualifiedName.cpp
webengine/osswebengine/WebCore/dom/QualifiedName.h
webengine/osswebengine/WebCore/dom/StyledElement.cpp
webengine/osswebengine/WebCore/dom/XMLTokenizer.cpp
webengine/osswebengine/WebCore/dom/XMLTokenizer.h
webengine/osswebengine/WebCore/html/HTMLElementFactory.cpp
webengine/osswebengine/WebCore/html/HTMLImageLoader.cpp
webengine/osswebengine/WebCore/html/HTMLInputElement.cpp
webengine/osswebengine/WebCore/loader/Cache.cpp
webengine/osswebengine/WebCore/loader/Cache.h
webengine/osswebengine/WebCore/loader/CachedCSSStyleSheet.cpp
webengine/osswebengine/WebCore/loader/CachedCSSStyleSheet.h
webengine/osswebengine/WebCore/loader/CachedImage.cpp
webengine/osswebengine/WebCore/loader/CachedImage.h
webengine/osswebengine/WebCore/loader/CachedResource.cpp
webengine/osswebengine/WebCore/loader/CachedResource.h
webengine/osswebengine/WebCore/loader/CachedScript.cpp
webengine/osswebengine/WebCore/loader/CachedScript.h
webengine/osswebengine/WebCore/loader/CachedXBLDocument.cpp
webengine/osswebengine/WebCore/loader/CachedXBLDocument.h
webengine/osswebengine/WebCore/loader/DocLoader.cpp
webengine/osswebengine/WebCore/loader/DocLoader.h
webengine/osswebengine/WebCore/loader/DocumentLoader.cpp
webengine/osswebengine/WebCore/loader/TextResourceDecoder.cpp
webengine/osswebengine/WebCore/loader/icon/IconDatabase.cpp
webengine/osswebengine/WebCore/page/ChromeClient.h
webengine/osswebengine/WebCore/page/EventHandler.cpp
webengine/osswebengine/WebCore/page/Frame.cpp
webengine/osswebengine/WebCore/page/Page.cpp
webengine/osswebengine/WebCore/page/Page.h
webengine/osswebengine/WebCore/platform/AtomicString.cpp
webengine/osswebengine/WebCore/platform/AtomicString.h
webengine/osswebengine/WebCore/platform/DeprecatedString.cpp
webengine/osswebengine/WebCore/platform/DeprecatedString.h
webengine/osswebengine/WebCore/platform/DeprecatedValueListImpl.cpp
webengine/osswebengine/WebCore/platform/FontCache.cpp
webengine/osswebengine/WebCore/platform/FontCache.h
webengine/osswebengine/WebCore/platform/MimeTypeRegistry.cpp
webengine/osswebengine/WebCore/platform/PlatformKeyboardEvent.h
webengine/osswebengine/WebCore/platform/RegularExpression.cpp
webengine/osswebengine/WebCore/platform/TextEncodingRegistry.cpp
webengine/osswebengine/WebCore/platform/TextEncodingRegistry.h
webengine/osswebengine/WebCore/platform/Timer.cpp
webengine/osswebengine/WebCore/platform/graphics/symbian/ImageSymbian.cpp
webengine/osswebengine/WebCore/platform/network/symbian/HttpConnection.cpp
webengine/osswebengine/WebCore/platform/network/symbian/HttpRequestHeaderManager.cpp
webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.cpp
webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.cpp
webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.h
webengine/osswebengine/WebCore/platform/network/symbian/ResourceLoaderDelegate.cpp
webengine/osswebengine/WebCore/platform/network/symbian/UrlConnection.h
webengine/osswebengine/WebCore/platform/symbian/FontCacheSymbian.cpp
webengine/osswebengine/WebCore/platform/symbian/FontDataSymbian.cpp
webengine/osswebengine/WebCore/platform/symbian/FontSymbian.cpp
webengine/osswebengine/WebCore/platform/symbian/Libxml2/Libxml2_globals.h
webengine/osswebengine/WebCore/platform/symbian/Libxml2/Libxml2_parser.c
webengine/osswebengine/WebCore/platform/symbian/Libxml2/XmlEnglibxml2dll.cpp
webengine/osswebengine/WebCore/platform/symbian/OOMHandler.cpp
webengine/osswebengine/WebCore/platform/symbian/PlatformKeyEventSymbian.cpp
webengine/osswebengine/WebCore/platform/symbian/RenderThemeSymbian.cpp
webengine/osswebengine/WebCore/platform/symbian/RenderThemeSymbian.h
webengine/osswebengine/WebCore/platform/symbian/StaticObjectsContainer.cpp
webengine/osswebengine/WebCore/platform/symbian/StaticObjectsContainer.h
webengine/osswebengine/WebCore/platform/symbian/StreamingTextCodecSymbian.cpp
webengine/osswebengine/WebCore/platform/symbian/StreamingTextCodecSymbian.h
webengine/osswebengine/WebCore/platform/symbian/TextBreakIteratorSymbian.cpp
webengine/osswebengine/WebCore/platform/symbian/bitmap/MaskedBitmap.cpp
webengine/osswebengine/WebCore/rendering/RenderBox.cpp
webengine/osswebengine/WebCore/rendering/RenderStyle.cpp
webengine/osswebengine/WebCore/rendering/RenderStyle.h
webengine/osswebengine/WebCore/rendering/RenderWidget.cpp
webengine/osswebengine/WebCore/rendering/RootInlineBox.cpp
webengine/osswebengine/WebCore/rendering/bidi.cpp
webengine/osswebengine/WebKit.pri
webengine/osswebengine/WebKit.pro
webengine/osswebengine/WebKit/gtk/Api/headers.pri
webengine/osswebengine/WebKit/qt/Api/headers.pri
webengine/osswebengine/WebKit/qt/Plugins/Plugins.pro
webengine/osswebengine/WebKit/qt/QtLauncher/QtLauncher.pro
webengine/osswebengine/WebKit/s60/group/JavaScriptCore/JavaScriptCore.mmp
webengine/osswebengine/WebKit/s60/group/webcore/platform/platform.mmp
webengine/osswebengine/WebKit/s60/group/webkit/webkit.mmp
webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.cpp
webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.h
webengine/osswebengine/WebKit/s60/misc/WebUtil.cpp
webengine/osswebengine/WebKit/s60/plugins/NpnImplementation.cpp
webengine/osswebengine/WebKit/s60/plugins/PluginHandler.cpp
webengine/osswebengine/WebKit/s60/plugins/PluginLoader.cpp
webengine/osswebengine/WebKit/s60/plugins/PluginLoader.h
webengine/osswebengine/WebKit/s60/plugins/PluginPlayer.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/WebChromeClient.cpp
webengine/osswebengine/WebKit/s60/webcoresupport/WebChromeClient.h
webengine/osswebengine/WebKit/s60/webcoresupport/WebContextMenuClient.cpp
webengine/osswebengine/WebKit/s60/webcoresupport/WebDragClient.cpp
webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp
webengine/osswebengine/WebKit/s60/webcoresupport/WebFrameLoaderClient.cpp
webengine/osswebengine/WebKit/s60/webcoresupport/WebInspectorClient.cpp
webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp
webengine/osswebengine/WebKit/s60/webview/SettingsContainer.h
webengine/osswebengine/WebKit/s60/webview/WebCannedImages.cpp
webengine/osswebengine/WebKit/s60/webview/WebCannedImages.h
webengine/osswebengine/WebKit/s60/webview/WebCursor.cpp
webengine/osswebengine/WebKit/s60/webview/WebCursor.h
webengine/osswebengine/WebKit/s60/webview/WebFrameView.h
webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.cpp
webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.h
webengine/osswebengine/WebKit/s60/webview/WebPageScrollHandler.cpp
webengine/osswebengine/WebKit/s60/webview/WebPageScrollHandler.h
webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp
webengine/osswebengine/WebKit/s60/webview/WebPopupDrawer.cpp
webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.cpp
webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.h
webengine/osswebengine/WebKit/s60/webview/WebScrollingDeceleratorGH.cpp
webengine/osswebengine/WebKit/s60/webview/WebSprite.cpp
webengine/osswebengine/WebKit/s60/webview/WebSprite.h
webengine/osswebengine/WebKit/s60/webview/WebView.cpp
webengine/osswebengine/WebKit/s60/webview/WebView.h
webengine/osswebengine/WebKit/s60/webview/WidgetExtension.cpp
webengine/osswebengine/WebKit/s60/webview/WidgetExtension.h
webengine/osswebengine/WebKit/s60/webview/webview_api_test/tsrc/group/WebViewApiTest.mmp
webengine/osswebengine/WebKitTools/GtkLauncher/GtkLauncher.pro
webengine/osswebengine/cache/conf/httpcachemanager.confml
webengine/osswebengine/cache/inc/HttpCacheLookupTable.h
webengine/osswebengine/cache/src/HttpCacheHandler.cpp
webengine/osswebengine/cache/src/HttpCacheLookupTable.cpp
webengine/webkitutils/HistoryProvider/HistoryController.cpp
webengine/webkitutils/HistoryProvider/HistoryEntry.cpp
webengine/webkitutils/ToolBar/ToolBar.cpp
webengine/webkitutils/ToolBar/ToolBarButton.cpp
webengine/webkitutils/group/WebKitUtils.mmp
webengine/webkitutils/group/bld.inf
webengine/widgetengine/group/WidgetEngine.mmp
webengine/widgetengine/inc/Menu.h
webengine/widgetengine/inc/MenuClient.h
webengine/widgetengine/inc/MenuItem.h
webengine/widgetengine/inc/Preferences.h
webengine/widgetengine/inc/Widget.h
webengine/widgetengine/inc/Widget.lut.h
webengine/widgetengine/inc/WidgetCallbacks.h
webengine/widgetengine/inc/WidgetClient.h
webengine/widgetengine/inc/WidgetEngineBridge.h
webengine/widgetengine/inc/WidgetEngineCallbacks.h
webengine/widgetengine/inc/WidgetEventHandler.h
webengine/widgetengine/inc/WidgetFuncs.h
webengine/widgetengine/inc/WidgetJSObjectProtector.h
webengine/widgetengine/src/Menu.cpp
webengine/widgetengine/src/MenuClient.cpp
webengine/widgetengine/src/MenuItem.cpp
webengine/widgetengine/src/Preferences.cpp
webengine/widgetengine/src/Widget.cpp
webengine/widgetengine/src/WidgetClient.cpp
webengine/widgetengine/src/WidgetEngineBridge.cpp
webengine/widgetengine/src/WidgetEventHandler.cpp
webengine/widgetengine/src/WidgetFuncs.cpp
webengine/widgetregistry/Data/Widget_lproj.xml
webengine/widgetregistry/Server/src/WidgetRegistry.cpp
webengine/wmlengine/group/fbox/fbox.mmp
webengine/wmlengine/group/wml1x/wml1x.mmp
webengine/wmlengine/group/wmlengine/wmlengine.mmp
widgets/widgetapp/data/WidgetUi.rss
widgets/widgetapp/group/WidgetUi.mmp
widgets/widgetapp/src/WidgetUiObserver.cpp
widgets/widgetapp/src/WidgetUiWindow.cpp
widgets/widgetinstaller/group/WidgetInstallerUI.mmp
--- a/browserutilities/browserdialogsprovider/Group/browserdialogsprovider.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/browserdialogsprovider/Group/browserdialogsprovider.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -31,7 +31,11 @@
 START RESOURCE	../SrcData/BrowserDialogsProvider.rss
 HEADER
 TARGETPATH   RESOURCE_FILES_DIR
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 END
 
 USERINCLUDE		../Inc
--- a/browserutilities/browsertelservice/group/BrowserTelService.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/browsertelservice/group/BrowserTelService.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -28,7 +28,11 @@
 VENDORID VID_DEFAULT
 CAPABILITY	CAP_GENERAL_DLL
 
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 
 START RESOURCE ../data/browsertelservice.rss
 HEADER
--- a/browserutilities/connectionmanager/Group/ConnectionManager.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/connectionmanager/Group/ConnectionManager.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -48,7 +48,11 @@
 SOURCE ConnManKeyAbsorber.cpp
 SOURCE ConnManLogger.cpp
 
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 
 LIBRARY     ESock.lib
 LIBRARY     AknNotify.lib
--- a/browserutilities/connectionmanager/Src/InternetConnectionManager.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/connectionmanager/Src/InternetConnectionManager.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -1359,7 +1359,8 @@
      if(iConnected) 
      {
      	// this is a connection closed event
-    	iConnection.Close();
+        CLOG_WRITE( "ConnectionStageAchievedL() Stoping the connection instead of closing" );
+        iConnection.Stop();
     	iConnected = EFalse;
 
     	if( !iSilentMode )
--- a/browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrClntSubSession.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrClntSubSession.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -1395,6 +1395,10 @@
         iAttribs->AppendL( attrib );
         CleanupStack::Pop( attrib );              
         }
+    attrib = CDefaultAttrib::NewL( EDlAttrActiveDownload, iMoIndex );
+    CleanupStack::PushL( attrib );
+    iAttribs->AppendL( attrib );
+    CleanupStack::Pop( attrib ); 
   
     HBufC8* buf = TDMgrUtils::PackedAttributesL( iAttribs );
     iAttribs->ResetAndDestroy();
--- a/browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrSrvObject.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrSrvObject.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -503,6 +503,11 @@
         iAttribs->AppendL( attrib );
         CleanupStack::Pop( attrib );          
         }
+    iDownload->GetIntAttributeL( EDlAttrActiveDownload, value );
+    attrib = CDefaultAttrib::NewL( EDlAttrActiveDownload, value );
+    CleanupStack::PushL( attrib );
+    iAttribs->AppendL( attrib );
+    CleanupStack::Pop( attrib ); 
 
     HBufC8* buf = TDMgrUtils::PackedAttributesL( iAttribs );
     iAttribs->ResetAndDestroy();
--- a/browserutilities/downloadmgr/DownloadMgrServEng/Group/HttpDMServEng.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/downloadmgr/DownloadMgrServEng/Group/HttpDMServEng.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -68,7 +68,11 @@
 SOURCE DownloadDataServ.cpp
 SOURCE  BuffStorage.cpp
 
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 
 LIBRARY		Euser.lib
 LIBRARY     http.lib
--- a/browserutilities/downloadmgr/DownloadMgrServEng/Inc/HttpDownload.h	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/downloadmgr/DownloadMgrServEng/Inc/HttpDownload.h	Fri Jul 03 15:54:40 2009 +0100
@@ -864,6 +864,11 @@
         void AppendHeadersL( TPtr8& aBuf, CArrayPtrFlat<CHeaderField>* aHeaders );
 
         /**
+        * Get the size of Http headers
+        */
+        TInt GetHttpHeadersSize(CArrayPtrFlat<CHeaderField>* aHeaders );
+        
+        /**
         * Add the given header in the header array
         * @return None. Leaves on error.
         */
--- a/browserutilities/downloadmgr/DownloadMgrServEng/Src/HttpDownload.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/downloadmgr/DownloadMgrServEng/Src/HttpDownload.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -59,6 +59,7 @@
 const TInt KMaxHeaderOfMultipart = 32000;
 const TInt KRespSizeForRecognition = 1024;  //for THttpProgressState EHttpContTypeRecognitionAvail
 const TInt KMinDataSizeToSend = (32*1024);  //for Browser Control to call NewDownloadL     
+const TInt KErrCodHttpDownloadPaused = -20045;  //Error code set by the CodHandler if the download is paused by the client
 
 _LIT8( KHttpScheme, "http" );
 _LIT8( KHttpsScheme, "https" );
@@ -2440,7 +2441,19 @@
                 	
                 if( iProgState != EHttpProgMovingContentFile )
                     {
-                    TriggerEvent( iDlState, aValue ? EHttpDlProgProgressive : EHttpDlProgNonProgressive);
+                    if (aValue && iDlState == EHttpDlMultipleMOCompleted )
+                        {
+                        /* 
+                        if the file size is small, by the time the music player is launched, DMgr already triggered EHttpDlCompleted.
+                        So if the download state is EHttpDlMultipleMOCompleted, we need to trigger EHttpDlCompleted so that music player understands download is completed already
+                        This is needed to ensure backward compatibility
+                        */
+                        TriggerEvent( EHttpDlCompleted, EHttpDlProgProgressive);
+                        }   
+                    else
+                        {    
+                        TriggerEvent( iDlState, aValue ? EHttpDlProgProgressive : EHttpDlProgNonProgressive);
+                        }
                     }
                 }
             else
@@ -3187,7 +3200,12 @@
 	        	    iLastError = EGeneral;
 	           	    }
                 }
-    	    TriggerEvent( EHttpDlFailed, EHttpProgNone );
+            
+            //if the client pauses the download, Codhandler sets error code to KErrCodHttpDownloadPaused. In that case, no need to trigger EHttpDlFailed Event     
+            if ( result != KErrCodHttpDownloadPaused )
+                {    
+    	        TriggerEvent( EHttpDlFailed, EHttpProgNone );
+                }
             }
     	}
     }
@@ -3998,6 +4016,16 @@
 
     CLOG_WRITE("5");
 
+    
+    TInt size = GetHttpHeadersSize(iResponseHeaders)+ GetHttpHeadersSize(iRequestHeaders)+
+                GetHttpHeadersSize(iEntityHeaders)+ GetHttpHeadersSize(iGeneralHeaders) + newInfoPtr.Size();
+    
+    
+    if(size >= bufSz)
+        {
+    	User::LeaveIfError( KErrArgument );
+        }
+    
     AppendHeadersL( newInfoPtr, iResponseHeaders );
     AppendHeadersL( newInfoPtr, iRequestHeaders );
     AppendHeadersL( newInfoPtr, iEntityHeaders );
@@ -6150,7 +6178,7 @@
     if( iSilentMode )
         {
         if( !((aDlState == EHttpDlInprogress && aProgState == EHttpStarted)
-            || aDlState == EHttpDlMultipleMOCompleted || aDlState == EHttpDlFailed ))
+            || aDlState == EHttpDlMultipleMOCompleted || aDlState == EHttpDlFailed || aDlState == EHttpDlCompleted ))
             // See EDlAttrSilent
             {
             return;
@@ -6513,6 +6541,35 @@
     }
 
 // -----------------------------------------------------------------------------
+// CHttpDownload::GetHttpHeadersSize
+// -----------------------------------------------------------------------------
+//
+TInt CHttpDownload::GetHttpHeadersSize(CArrayPtrFlat<CHeaderField>* aHeaders )
+    {
+    TInt headers = aHeaders->Count();
+    CLOG_WRITE_1("Headers: %d", headers);
+
+    HBufC8* fieldName = NULL;
+    HBufC8* fieldRawData = NULL;
+    
+    TInt size  = 0;
+
+    for( TInt i = 0; i < headers; ++i )
+        {
+        fieldName = (*aHeaders)[i]->FieldName();
+        fieldRawData = (*aHeaders)[i]->FieldRawData();
+        
+        size = size + fieldName->Size() +  fieldRawData->Size();
+        
+        CLOG_WRITE8_1( "Size = %S:", size );
+        }
+
+    return size;
+    
+    }
+    
+    
+// -----------------------------------------------------------------------------
 // CHttpDownload::AddHeaderL
 // -----------------------------------------------------------------------------
 //
--- a/browserutilities/downloadmgr/DownloadMgrUiLib/Data/DownloadMgrUiLib.rss	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/downloadmgr/DownloadMgrUiLib/Data/DownloadMgrUiLib.rss	Fri Jul 03 15:54:40 2009 +0100
@@ -310,8 +310,7 @@
 RESOURCE TBUF r_dmul_download_content_saved_to_gallery { buf = qtn_browser_downloads_content_saved_to_gallery; }
 
 RESOURCE TBUF r_dmul_download_content_saved_to_downloads_folder { buf =  qtn_dl_saved_to_folder; } 
-RESOURCE TBUF r_dmul_download_file_saved { buf =  qtn_browser_downloads_file_saved; } 
-RESOURCE TBUF r_dmul_download_files_saved { buf =  qtn_browser_downloads_files_saved; } 
+
 
 RESOURCE MENU_BAR r_dmul_downloadslist_menubar
     {
@@ -386,23 +385,6 @@
         };
     }
 
-
-RESOURCE AIW_INTEREST r_dmul_filemanager_aiw_interest
-    {
-    items=
-        {
-        AIW_CRITERIA_ITEM
-            {
-            id = KAiwCmdEdit;
-            serviceCmd = KAiwCmdEdit;
-            contentType = "*";
-            serviceClass = KAiwClassBase; 
-            defaultProvider = 0x200110F9; // The service UID
-            maxProviders = 1;
-            }
-        };
-    }
-
 RESOURCE TBUF r_dmul_download_del_conf { buf = qtn_query_common_conf_delete; } 
 RESOURCE TBUF r_dmul_download_can_conf { buf = qtn_browser_downloads_query_cancel; }
 
@@ -482,6 +464,35 @@
 RESOURCE TBUF r_dmul_cancel_button { buf = text_softkey_cancel; }
 RESOURCE TBUF r_dmul_ok_button     { buf = text_softkey_accept; }
 
+// -----------------------------------------------------------------------------
+//   
+// For Gallery removal Changes
+//
+// -----------------------------------------------------------------------------
+//
+
+RESOURCE TBUF r_dmul_download_file_saved { buf =  qtn_browser_downloads_file_saved; } 
+RESOURCE TBUF r_dmul_download_files_saved { buf =  qtn_browser_downloads_files_saved; } 
+
+RESOURCE AIW_INTEREST r_dmul_filemanager_aiw_interest
+    {
+    items=
+        {
+        AIW_CRITERIA_ITEM
+            {
+            id = KAiwCmdEdit;
+            serviceCmd = KAiwCmdEdit;
+            contentType = "*";
+            serviceClass = KAiwClassBase; 
+            defaultProvider = 0x200110F9; // The service UID
+            maxProviders = 1;
+            }
+        };
+    }
+
 // End of File
 
 
+
+
+
--- a/browserutilities/downloadmgr/DownloadMgrUiLib/Group/DownloadMgrUiLib.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/downloadmgr/DownloadMgrUiLib/Group/DownloadMgrUiLib.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -33,7 +33,11 @@
 
 START RESOURCE  ../Data/DownloadMgrUiLib.rss
 HEADER
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 TARGETPATH      RESOURCE_FILES_DIR
 END // RESOURCE
 
--- a/browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadsListArray.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadsListArray.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -109,8 +109,11 @@
     CLOG_WRITE(" iSavedToGalleryString OK");
 	iSavedToDownloadsFolderString=  iCoeEnv.AllocReadResourceL( R_DMUL_DOWNLOAD_CONTENT_SAVED_TO_DOWNLOADS_FOLDER);
 	CLOG_WRITE(" iSavedToGalleryDownload OK");
-	iFileSavedString = iCoeEnv.AllocReadResourceL( R_DMUL_DOWNLOAD_FILE_SAVED );
-	iFilesSavedString = iCoeEnv.AllocReadResourceL( R_DMUL_DOWNLOAD_FILES_SAVED );
+	
+	#ifndef BRDO_APP_GALLERY_SUPPORTED_FF
+	    iFileSavedString = iCoeEnv.AllocReadResourceL( R_DMUL_DOWNLOAD_FILE_SAVED );
+	    iFilesSavedString = iCoeEnv.AllocReadResourceL( R_DMUL_DOWNLOAD_FILES_SAVED );
+	#endif
 
 	
     iNullDesC = KNullDesC().AllocL();
@@ -188,10 +191,14 @@
 	iSavedToGalleryString = 0;
 	delete iSavedToDownloadsFolderString;
 	iSavedToDownloadsFolderString=0;
-	delete iFileSavedString;
-	iFileSavedString = 0;
-	delete iFilesSavedString;
-	iFilesSavedString = 0;
+	
+	#ifndef BRDO_APP_GALLERY_SUPPORTED_FF
+	    delete iFileSavedString;
+	    iFileSavedString = 0;
+	    delete iFilesSavedString;
+	    iFilesSavedString = 0;
+	#endif
+	
     delete iNullDesC;
     iNullDesC = 0;
     iApaLsSess.Close();
--- a/browserutilities/feedsengine/FeedsServer/Server/inc/FeedsDatabase.h	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/feedsengine/FeedsServer/Server/inc/FeedsDatabase.h	Fri Jul 03 15:54:40 2009 +0100
@@ -81,6 +81,29 @@
         TBool FeedIdFromUrlL(const TDesC& aFeedUrl, TInt aFolderListId, TInt& aFeedId);
 
         /**
+        * Returns the feed id of the feed with the given entry id.
+        *
+        * @since 7.1
+        * @param aEntryId The feed's folder item id
+        * @param aFolderListId The folder list ID of the feed.
+        * @param aFeedId The resulting FolderListTable feed id.
+        * @return ETrue if the feed was resolved.
+        */
+
+        TBool CFeedsDatabase::FeedIdFromEntryId(const TInt& aEntryId, TInt aFolderListId, TInt& aFeedId);
+
+        /**
+        * Returns the feed id of the entry id with the given feed.
+        *
+        * @since 7.1
+        * @param aFeedId The resulting FolderListTable feed id.
+        * @param aFolderListId The folder list ID of the feed.
+        * @param aEntryId The feed's folder item id
+        * @return ETrue if the feed was resolved.
+        */
+        TBool CFeedsDatabase::EntryIdFromFeedId(const TInt& aFeedId, TInt aFolderListId, TInt& aEntryId);
+
+        /**
         * Return the folder list ID of the feed with the given feed-id.
         *
         * @since 3.2
@@ -1007,11 +1030,16 @@
         * @return void
         */
         void GenerateNewFeedFolderTitleL(
-										const TInt &aFolderListId, 
-										const TInt &aParentEntryId, 
-										const TDesC& aTitle, 
-										TDes& aNewFeedTitle
-									);
+                                        const TInt &aFolderListId,
+                                        const TInt &aParentEntryId,
+                                        const TDesC& aTitle,
+                                        TDes& aNewFeedTitle
+                                        );
+
+        inline void SetIsFolderTableUpdateNeeded (TBool aIsFolderTableUpdateNeeded)
+        {
+           iIsFolderTableUpdateNeeded = aIsFolderTableUpdateNeeded;
+        }
 
     private:    // Data
         TLeakTracker        iLeakTracker;
@@ -1045,11 +1073,13 @@
         TInt                iSettingsTableRefCount;
 
         TInt                iNextAvailableFeedId;
-        
-        RArray<TInt>		iDeleteFolderArray; // This array will be populated when session calls delete
-        CFeedsServer*       iFeedsServer; 
-        
-        
+
+        RArray<TInt>        iDeleteFolderArray; // This array will be populated when session calls delete
+        CFeedsServer*       iFeedsServer;
+
+        TBool               iIsFolderTableUpdateNeeded;
+
+
         friend class CImportFeedsTask;
         friend class CFeedsServerSession;
     };
--- a/browserutilities/feedsengine/FeedsServer/Server/src/FeedsDatabase.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/feedsengine/FeedsServer/Server/src/FeedsDatabase.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -297,7 +297,7 @@
 // -----------------------------------------------------------------------------
 //
 CFeedsDatabase::CFeedsDatabase(CFeedsServer* aFeedsServer):
-    iLeakTracker(CLeakTracker::EFeedsDatabase),iFeedsServer(aFeedsServer)
+    iLeakTracker(CLeakTracker::EFeedsDatabase),iFeedsServer(aFeedsServer),iIsFolderTableUpdateNeeded(EFalse)
     {
     }
 
@@ -1407,7 +1407,7 @@
         {
         TBool  isFolder;
     //    TInt   folderListId;
-        
+
         // Update the title in the folder list table.
         iFolderListTable.GetL();
         iFolderListTable.UpdateL();
@@ -1431,24 +1431,27 @@
             //    }
 
 
-		    UseFeedTableLC(RDbTable::EUpdatable);
-	        TDbSeekKey  seekKey((TUint16) feedId);
-        
-        	if (iFeedTable.SeekL(seekKey))
-        	    {        
-        	    iFeedTable.GetL();
-        	    iFeedTable.UpdateL();
-        	    }
-        	else
-        	    {
-        	    User::Leave(KErrCorrupt);
-        	    }
-		    iFeedTable.SetColL(iFeedColSet->ColNo(KTitle_100MaxLen), aTitle.Left(K100MaxLen));
-    		WriteLongTextL(iFeedTable, iFeedColSet->ColNo(KFeedUrl), aUrl);
+            UseFeedTableLC(RDbTable::EUpdatable);
+            TDbSeekKey  seekKey((TUint16) feedId);
+
+            if (iFeedTable.SeekL(seekKey))
+                {
+                iFeedTable.GetL();
+                iFeedTable.UpdateL();
+                }
+            else
+                {
+                User::Leave(KErrCorrupt);
+                }
+            iFeedTable.SetColL(iFeedColSet->ColNo(KTitle_100MaxLen), aTitle.Left(K100MaxLen));
+            if (aUrl.Length() > 0)
+                {
+                WriteLongTextL(iFeedTable, iFeedColSet->ColNo(KFeedUrl), aUrl);
+                }
             iFeedTable.SetColL(iFeedColSet->ColNo(KAutoUpdateFreq), aFreq);
-			iFeedTable.PutL();
-		    CleanupStack::PopAndDestroy(/*feed table*/);  
-		    // Set the feed id.
+            iFeedTable.PutL();
+            CleanupStack::PopAndDestroy(/*feed table*/);
+            // Set the feed id.
             //iFolderListTable.SetColL(iFolderListColSet->ColNo(KFeedId), feedId);
             }
 
@@ -2781,7 +2784,14 @@
     iFeedTable.SetColL(iFeedColSet->ColNo(KUnreadCount), unreadCount);    
         
     iFeedTable.PutL();
-   
+
+    if (iIsFolderTableUpdateNeeded)
+        {
+        //update the folder table.
+        TInt entryId;
+        EntryIdFromFeedId(aFeedId, aFolderListId, entryId);
+        FolderItemUpdateL(entryId, title, KNullDesC, KAutoUpdatingOff);
+        }
     }
 
 
@@ -4381,6 +4391,96 @@
     CleanupStack::PopAndDestroy(/* iFeedTable */);
     }
 
+// -----------------------------------------------------------------------------
+// CFeedsDatabase::FeedIdFromEntryId
+//
+// Returns the feed id of the feed with the given entry id.
+// -----------------------------------------------------------------------------
+//
+TBool CFeedsDatabase::FeedIdFromEntryId(const TInt& aEntryId, TInt aFolderListId, TInt& aFeedId)
+    {
+    RDbView  view;
+    TBool    found = EFalse;
+    HBufC*   query = NULL;
+
+    // Create a view given this select...
+    // SELECT FeedId FROM FeedTable WHERE FeedUrl = 'aFeedUrl' AND FolderListId = aFolderListId
+    _LIT(KQuery, "SELECT FeedId FROM FolderListTable WHERE FolderItemId = %d AND FolderListId = %d");
+
+    query = HBufC::NewLC( KQuery().Length() + KIntLength + KIntLength );
+
+    query->Des().Format( KQuery, aEntryId, aFolderListId );
+
+    User::LeaveIfError(view.Prepare(iDatabase, TDbQuery(*query), RDbView::EReadOnly));
+    CleanupClosePushL(view);
+
+    CDbColSet* colSet = view.ColSetL();
+    CleanupStack::PushL(colSet);
+
+    // Search for the feed.
+    if (view.Evaluate() >= 0)
+        {
+        if (view.FirstL())
+            {
+            // Get the feed id.
+            view.GetL();
+            aFeedId = view.ColUint16(colSet->ColNo(KFeedId));
+            found = ETrue;
+            }
+        }
+
+    CleanupStack::PopAndDestroy(colSet);
+    CleanupStack::PopAndDestroy(/*view*/);
+    CleanupStack::PopAndDestroy(query);
+
+    return found;
+    }
+
+// -----------------------------------------------------------------------------
+// CFeedsDatabase::EntryIdFromFeedId
+//
+// Returns the feed id of the feed with the given entry id.
+// -----------------------------------------------------------------------------
+//
+TBool CFeedsDatabase::EntryIdFromFeedId(const TInt& aFeedId, TInt aFolderListId, TInt& aEntryId)
+    {
+    RDbView  view;
+    TBool    found = EFalse;
+    HBufC*   query = NULL;
+
+    // Create a view given this select...
+    // SELECT FeedId FROM FeedTable WHERE FeedUrl = 'aFeedUrl' AND FolderListId = aFolderListId
+    _LIT(KQuery, "SELECT FolderItemId FROM FolderListTable WHERE FeedId = %d AND FolderListId = %d");
+
+    query = HBufC::NewLC( KQuery().Length() + KIntLength + KIntLength );
+
+    query->Des().Format( KQuery, aFeedId, aFolderListId );
+
+    User::LeaveIfError(view.Prepare(iDatabase, TDbQuery(*query), RDbView::EReadOnly));
+    CleanupClosePushL(view);
+
+    CDbColSet* colSet = view.ColSetL();
+    CleanupStack::PushL(colSet);
+
+    // Search for the feed.
+    if (view.Evaluate() >= 0)
+        {
+        if (view.FirstL())
+            {
+            // Get the feed id.
+            view.GetL();
+            aEntryId = view.ColUint16(colSet->ColNo(KFolderItemId));
+            found = ETrue;
+            }
+        }
+
+    CleanupStack::PopAndDestroy(colSet);
+    CleanupStack::PopAndDestroy(/*view*/);
+    CleanupStack::PopAndDestroy(query);
+
+    return found;
+    }
+
 #if defined(_DEBUG)
 // -----------------------------------------------------------------------------
 // CFeedsDatabase::DebugPrintTables
--- a/browserutilities/feedsengine/FeedsServer/Server/src/FeedsServerSession.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/feedsengine/FeedsServer/Server/src/FeedsServerSession.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -619,7 +619,9 @@
     TPckg<TFeedsServerResponseType>  typePkg(type);
     TInt    folderListId = KNoFolderListId;
     const TInt KAutoUpdatingOff = 0;
-	iCurrentRequest = 1;
+    const TInt KRootFolderId = 0;
+
+    iCurrentRequest = 1;
     // Note: The a packed feed is made up of two buffers, a buffer of tokens
     //       and a string table buffer.  The tokens define the structure of the 
     //       feed where the string table contains the feed's data. This
@@ -679,7 +681,10 @@
             //Gyanendra TODO // should create entry into database
             if (!iFeedsServer.iFeedsDatabase->FeedIdFromUrlL(feedUrl, folderListId, feedId))
                 {
-                feedId = iFeedsServer.iFeedsDatabase->CommitFeedL(folderListId,KNullDesC,feedUrl, KAutoUpdatingOff);
+                //Find feed id from folder id
+                iFeedsServer.iFeedsDatabase->SetIsFolderTableUpdateNeeded(ETrue);
+                TInt entryId = iFeedsServer.iFeedsDatabase->FolderItemAddL(folderListId, feedUrl, feedUrl, EFalse, KRootFolderId, KAutoUpdatingOff);
+                iFeedsServer.iFeedsDatabase->FeedIdFromEntryId(entryId, folderListId, feedId);
                 updateNeeded = ETrue;
                 }
             }
--- a/browserutilities/feedsengine/FeedsServer/Server/src/UpdateFeedTask.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/feedsengine/FeedsServer/Server/src/UpdateFeedTask.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -195,12 +195,12 @@
         iObserver.Completed(iPackedFeed, *iUrl,iFeedId, err);
         iPackedFeed = NULL;
         }
-    
+
     // The load failed, exit cleanly.
     else
         {
         // Pass the status to the observer.
-        iObserver.Completed(NULL, *iUrl,iFeedId, aStatusCode);
+        iObserver.Completed(NULL, *iUrl,iFeedId, ((aStatusCode == KErrNone)? KErrCorrupt:aStatusCode));
         }
     }
 
--- a/browserutilities/feedsengine/FeedsServer/UrlHandler/src/HttpHandler.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/feedsengine/FeedsServer/UrlHandler/src/HttpHandler.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -135,41 +135,44 @@
 
     // Create the transaction.
     iTransaction = iSession.OpenTransactionL(uriParser, *this,
-		iSession.StringPool().StringF(HTTP::EGET, RHTTPSession::GetTable()));
+        iSession.StringPool().StringF(HTTP::EGET, RHTTPSession::GetTable()));
 
     // TODO: Set the headers if any.
-	//++PK Add UA header code
-	
-	iUserAgentHeader = iTransaction.Request().GetHeaderCollection();
-	
-	CUserAgent* tWebUtilsStandardUA = CUserAgent::NewL();
+    //++PK Add UA header code
+
+    iUserAgentHeader = iTransaction.Request().GetHeaderCollection();
+
+    CUserAgent* tWebUtilsStandardUA = CUserAgent::NewL();
     CleanupStack::PushL(tWebUtilsStandardUA);
-	
-	HBufC8* tWebUtilsStandardUAHeaderValue = tWebUtilsStandardUA->UserAgentL();	
-	
-	RStringF tStringValue = iSession.StringPool().OpenFStringL(*tWebUtilsStandardUAHeaderValue);	
-	
-	THTTPHdrVal tHeaderValue( tStringValue );
-	
-	RStringF tStringUA = iSession.StringPool().StringF(HTTP::EUserAgent, RHTTPSession::GetTable());
-	
-	iUserAgentHeader.SetFieldL( tStringUA, tStringValue );
-	
-	//++PK
+
+    HBufC8* tWebUtilsStandardUAHeaderValue = tWebUtilsStandardUA->UserAgentL();
+    CleanupStack::PushL(tWebUtilsStandardUAHeaderValue);
+
+    RStringF tStringValue = iSession.StringPool().OpenFStringL(*tWebUtilsStandardUAHeaderValue);
+
+    THTTPHdrVal tHeaderValue( tStringValue );
+
+    RStringF tStringUA = iSession.StringPool().StringF(HTTP::EUserAgent, RHTTPSession::GetTable());
+
+    iUserAgentHeader.SetFieldL( tStringUA, tStringValue );
+
+    //++PK
     // Submit the request.
-	iTransaction.SubmitL();
+    iTransaction.SubmitL();
 
     // If the connection is available it is safe to tell to the observer
     // to display progress indicators (i.e. a wait-dialog).
     if (iHttpConnection->IsConnected())
         {
         iObserver->StartWait();
-        
+
         // Start the inactive connection timer as well.
         iTimer->Start(KTimerPeriod, KTimerPeriod, iTimerState);
         iLastActivity.HomeTime();
         }
 
+    tStringValue.Close();
+    CleanupStack::PopAndDestroy(tWebUtilsStandardUAHeaderValue);
     CleanupStack::PopAndDestroy(tWebUtilsStandardUA);
     CleanupStack::PopAndDestroy(url);
     }
--- a/browserutilities/feedsengine/group/FeedsApp.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/feedsengine/group/FeedsApp.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -36,7 +36,11 @@
 START RESOURCE   ../data/FeedsApp.rss
 HEADER
 TARGETPATH       APP_RESOURCE_DIR
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 END
 
 // Client UI sources
--- a/browserutilities/group/bld.inf	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/group/bld.inf	Fri Jul 03 15:54:40 2009 +0100
@@ -24,7 +24,9 @@
 #include "../browsertelservice/group/bld.inf"
 #include "../favouritesengine/group/bld.inf"
 #include "../feedsengine/group/bld.inf"
+#ifdef BRDO_MULTIPART_PARSER_FF
 #include "../multipartparser/group/bld.inf"
+#endif
 #include "../schemehandler/group/bld.inf"
 #include "../webutils/group/bld.inf"
 #include "../aiwbrowserprovider/group/bld.inf"
--- a/browserutilities/multipartparser/group/bld.inf	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/multipartparser/group/bld.inf	Fri Jul 03 15:54:40 2009 +0100
@@ -16,8 +16,9 @@
 */
 
 #include <platform_paths.hrh>
+#include "../../../web_plat/browser_platform_api/inc/Browser_platform_variant.hrh"
 
-#include "../../../web_plat/browser_platform_api/inc/Browser_platform_variant.hrh"
+#ifdef BRDO_MULTIPART_PARSER_FF
 
 PRJ_PLATFORMS
 DEFAULT
@@ -28,3 +29,4 @@
 PRJ_MMPFILES
 ./MultipartParser.mmp
 
+#endif
\ No newline at end of file
--- a/browserutilities/schemehandler/SchemeApp/group/SchemeApp.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/schemehandler/SchemeApp/group/SchemeApp.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -47,7 +47,11 @@
 START RESOURCE ../data/SchemeApp.rss
 HEADER
 TARGETPATH APP_RESOURCE_DIR
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 END  // RESOURCE
 
 USERINCLUDE     ../inc
Binary file browserutilities/webutils/conf/webutils.confml has changed
Binary file browserutilities/webutils/conf/webutils.confml.bak has changed
Binary file browserutilities/webutils/conf/webutils_101F8731.crml has changed
--- a/browserutilities/webutils/src/CUserAgent.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/webutils/src/CUserAgent.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -30,9 +30,8 @@
 
 
 #define KPlaceHolderMozillaVer		_L("Mozilla/5.0")
-#define KPlaceHolderSecurity		_L("U;")
-#define KPlaceHolderComponent		_L("AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525")
-#define KPlaceHolderBrowserName		_L("WicKed")
+#define KPlaceHolderComponent		_L("AppleWebKit/525 (KHTML, like Gecko) Version/3.0")
+#define KPlaceHolderBrowserName		_L("BrowserNG")
 
 #define KPlaceHolderSlash           _L("/")
 #define KPlaceHolderSymbianOS       _L("SymbianOS")
@@ -199,6 +198,7 @@
 	{
 	LOG_ENTERFN("CUserAgent::ReadUserAgentStringL()");
 	TInt retCode (KErrNotReady);
+	TBuf<64> ignoreConfig(0);
 
 	// If the string queried already, dont read again
 	if(iUAStrQueried)
@@ -215,33 +215,35 @@
 		User::Leave(KErrNotReady);
 		}
 	
-	/* ---------------- Read default UA string ---------------- */
-	LOG_WRITE("Reading default UA string from cenrep.");
 	if(!iBrowserCenrepStr)
 		{
 		iBrowserCenrepStr = HBufC::NewL(KMaxUserAgentStringLength);	
 		}
 
 	TPtr tempPtr = iBrowserCenrepStr->Des();
-
-	retCode = iRepository->Get(EDefaultUserAgentString, tempPtr);
-	if(retCode != KErrNone)
-		{
-		LOG_WRITE_FORMAT("Error: Reading default UA string from cenrep failed! (%d)",retCode);
-		LOG_LEAVEFN("CUserAgent::ReadUserAgentDataL()");
-		User::Leave(retCode);
+	retCode = iRepository->Get(KWebUtilsIgnoreConfig, ignoreConfig);
+	if(retCode != KErrNone || ignoreConfig == _L("0"))
+		{/* ---------------- Read default UA string ---------------- */
+			LOG_WRITE("Reading default UA string from cenrep.");
+			
+			retCode = iRepository->Get(EDefaultUserAgentString, tempPtr);
+			if(retCode != KErrNone)
+				{
+				LOG_WRITE_FORMAT("Error: Reading default UA string from cenrep failed! (%d)",retCode);
+				LOG_LEAVEFN("CUserAgent::ReadUserAgentDataL()");
+				User::Leave(retCode);
+				}
+		
+			if(!IsUAStringEmpty(tempPtr))
+				{
+				LOG_WRITE("Successfully read default UA string from cenrep, can use this as UA string");
+		
+				iUAStrQueried = TRUE;
+		
+				LOG_LEAVEFN("CUserAgent::ReadUserAgentDataL()");
+				return;
+				}
 		}
-
-	if(!IsUAStringEmpty(tempPtr))
-		{
-		LOG_WRITE("Successfully read default UA string from cenrep, can use this as UA string");
-
-		iUAStrQueried = TRUE;
-
-		LOG_LEAVEFN("CUserAgent::ReadUserAgentDataL()");
-		return;
-		}
-
 	ReadAndCreateUAStringL(tempPtr);	
 	LOG_WRITE("Successfully created a new UA string.");
 
@@ -269,6 +271,9 @@
 
 void CUserAgent::ReadMMSUserAgentStringL()
 	{
+	
+	//  MMS UA Format: <HardwareType>; <Series60Version> <MIDP_CLDC Version>
+	
 	LOG_ENTERFN("CUserAgent::ReadMMSUserAgentStringL()");
 	TInt retCode (KErrNotReady);
 
@@ -315,13 +320,27 @@
 		}
 
 	/* ---------------- Read all variant fragments and build a UA string ---------------- */
-	ReadAndCreateUAStringL(tempPtr);
+	GetMMSFragmentsL();
+			tempPtr.Append(iMMSHardwareType);
+			tempPtr.Append(KSpaceChar);
+			tempPtr.Append(iMMSS60Version);
+			tempPtr.Append(KSpaceChar);
+			tempPtr.Append(iMMSMIDPVersion);
+			tempPtr.Append(KSpaceChar);
+			tempPtr.Append(iMMSCLDCVersion);
+				
+	if(!IsUAStringEmpty(tempPtr))
+		{	
+			LOG_WRITE("Successfully created a new MMS UA string.");
+		}
+		else
+		{
+			LOG_WRITE("Failed to create a new MMS UA string...Exiting anyway");
+		}
 	
-	LOG_WRITE("Successfully created a new MMS UA string.");
-
 	iMMSUAStrQueried = TRUE;
-    LOG_LEAVEFN("CUserAgent::ReadMMSUserAgentStringL()");
-    return;
+  LOG_LEAVEFN("CUserAgent::ReadMMSUserAgentStringL()");
+  return;
 }
 
 // ---------------------------------------------------------
@@ -346,35 +365,37 @@
 // ---------------------------------------------------------
 void CUserAgent::GetFragmentsL()
 	{
-
-#ifdef BRDO_BROWSER_50_FF
-	TInt osExtFailed(0);
-	TRAP(osExtFailed, GetFragmentsFromOSExtL());
-#endif
-
 	if(iSymbianVersion.Length() <= 0)
 		{
-		LOG_WRITE("Reading SymbianVersion from osext extended api or cenrep.");
-		User::LeaveIfError(GetCenRepFragment(ESymbianOSVersion, iSymbianVersion));
+		LOG_WRITE("Reading SymbianVersion from cenrep.");
+		GetCenRepFragment(ESymbianOSVersion, iSymbianVersion);
 		}
-
 	if(iS60Version.Length() <= 0)
 		{
-		LOG_WRITE("Reading S60Version from osext extended api or cenrep.");
-		User::LeaveIfError(GetCenRepFragment(ES60Version, iS60Version));
+		LOG_WRITE("Reading S60Version from cenrep.");
+		GetCenRepFragment(ES60Version, iS60Version);
 		}
-
 	if(iHardwareType.Length() <= 0)
 		{
-		LOG_WRITE("Reading HardwareVersion from osext extended api or cenrep.");
-		User::LeaveIfError(GetCenRepFragment(EHardwareType, iHardwareType));
+		LOG_WRITE("Reading HardwareVersion from cenrep.");
+		GetCenRepFragment(EHardwareType, iHardwareType);
+		if(iHardwareType.Length() > 0)
+			{ 		iHardwareType.Append(KPlaceHolderSemiColon); 
+			}
 		}
-		
 	if(iMIDPCLDCVersion.Length() <= 0)
 		{
-    	LOG_WRITE("Reading MIDPCLDCVersion from osext extended api or cenrep.");
-    	User::LeaveIfError(GetCenRepFragment(EMIDP_CLDCVersion, iMIDPCLDCVersion));
+    	LOG_WRITE("Reading MIDPCLDCVersion from cenrep.");
+    	GetCenRepFragment(EMIDP_CLDCVersion, iMIDPCLDCVersion);
 		}
+	//Only for 5.0 and above as 3.2 does not support OSExt APIs.
+	#ifdef BRDO_BROWSER_50_FF
+		if(iSymbianVersion.Length() <= 0 || iS60Version.Length() <= 0 || iHardwareType.Length() <= 0)
+		{
+			LOG_WRITE("Read from CenRep Failed... trying osext extended api");
+			GetFragmentsFromOSExtL();
+		}
+	#endif
 	}
 
 // ---------------------------------------------------------
@@ -385,36 +406,33 @@
 	{
 	GetFragmentsL();
 
-	//
-	// Mozilla/5.0 (<Symbian Version> U; [en]; <Series60Version> <HardwareType> <MIDP_CLDC Version> ) AppleWebKit/413 (KHTML, like Gecko) Safari/413
-	//
-	
+	// Mozilla/5.0 (<Symbian Version> <Series60Version> <HardwareType> <MIDP_CLDC Version> ) AppleWebKit/413 (KHTML, like Gecko) BrowserName/Version
+		
 	aUAStringPtr.Copy(KPlaceHolderMozillaVer);
 	aUAStringPtr.Append(KSpaceChar);
-	
-	aUAStringPtr.Append(KPlaceHolderOpen);
-	
-	aUAStringPtr.Append(iSymbianVersion);
-	aUAStringPtr.Append(KSpaceChar);
-	
-	aUAStringPtr.Append(KPlaceHolderSecurity);
+	if(iSymbianVersion.Length() > 0 || iS60Version.Length() > 0 || iHardwareType.Length() > 0 || iMIDPCLDCVersion.Length() > 0)
+		{
+			aUAStringPtr.Append(KPlaceHolderOpen);
+			
+			aUAStringPtr.Append(iSymbianVersion);
+			aUAStringPtr.Append(KSpaceChar);
+			
+			aUAStringPtr.Append(iS60Version);
+			aUAStringPtr.Append(KSpaceChar);
+			
+			aUAStringPtr.Append(iHardwareType);
+			aUAStringPtr.Append(KSpaceChar);
+			
+			aUAStringPtr.Append(iMIDPCLDCVersion);
+			aUAStringPtr.Append(KSpaceChar);
+			
+			aUAStringPtr.Append(KPlaceHolderClose);
+		}
 	aUAStringPtr.Append(KSpaceChar);
-	
-	aUAStringPtr.Append(iS60Version);
-	aUAStringPtr.Append(KSpaceChar);
-	
-	aUAStringPtr.Append(iHardwareType);
-	
-	aUAStringPtr.Append(KSpaceChar);
-	aUAStringPtr.Append(iMIDPCLDCVersion);
-	aUAStringPtr.Append(KSpaceChar);
-	aUAStringPtr.Append(KPlaceHolderClose);
+	aUAStringPtr.Append(KPlaceHolderComponent);	
 	
 	aUAStringPtr.Append(KSpaceChar);
 	aUAStringPtr.Append(iBrowserNameAndVersionStr->Des());
-
-	aUAStringPtr.Append(KSpaceChar);
-	aUAStringPtr.Append(KPlaceHolderComponent);
 	}
 
 // ---------------------------------------------------------
@@ -712,11 +730,63 @@
 // -------------------------------------------------------------------------------
 void CUserAgent::GetBrowserNameAndVersionL()
 {
+  TInt ret(0);
+  TBuf<64> BrowserName(0);
 	TInt length = KMaxBrowserVersionStringLength  + KMaxBrowserNameLength;
 	iBrowserNameAndVersionStr = HBufC::NewL( length);
-
-	iBrowserNameAndVersionStr->Des().Append(KPlaceHolderBrowserName);			
+	
+	ret = iRepository->Get(KWebUtilsBrowserName, BrowserName);
+	if(ret != KErrNone)
+	{		
+		LOG_WRITE("Error: Reading default Browser Name from cenrep failed!");
+		iBrowserNameAndVersionStr->Des().Append(KPlaceHolderBrowserName);	
+	}
+	else
+	{
+		iBrowserNameAndVersionStr->Des().Append(BrowserName);		
+	}
 	iBrowserNameAndVersionStr->Des().Append(KPlaceHolderSlash);
 	iBrowserNameAndVersionStr->Des().Append( *iBrowserVersionStr );
 }
+
+// ---------------------------------------------------------
+// CUserAgent::GetFragmentsL()
+// Gets all required fragments from OSExt APIs/CenRep
+// ---------------------------------------------------------
+void CUserAgent::GetMMSFragmentsL()
+    {
+    if(iMMSHardwareType.Length() <= 0)
+        {
+        LOG_WRITE("Reading HardwareVersion from cenrep.");
+        iRepository->Get(KWebUtilsMMSUsrAg2, iMMSHardwareType);
+        if(iMMSHardwareType.Length() > 0)
+            {       iMMSHardwareType.Append(KPlaceHolderSemiColon); 
+            }
+        }
+    if(iMMSS60Version.Length() <= 0)
+        {
+        LOG_WRITE("Reading S60Version from cenrep.");
+        iRepository->Get(KWebUtilsMMSUsrAg3, iMMSS60Version);
+        }
+    if(iMMSMIDPVersion.Length() <= 0)
+        {
+        LOG_WRITE("Reading MIDPCLDCVersion from cenrep.");
+        iRepository->Get(KWebUtilsMMSUsrAg4, iMMSMIDPVersion);
+        }
+    if(iMMSCLDCVersion.Length() <= 0)
+        {
+        LOG_WRITE("Reading MIDPCLDCVersion from cenrep.");
+        iRepository->Get(KWebUtilsMMSUsrAg5, iMMSCLDCVersion);
+        }
+    //Only for 5.0 and above as 3.2 does not support OSExt APIs.
+    #ifdef BRDO_BROWSER_50_FF
+        if(iMMSS60Version.Length() <= 0 || iMMSHardwareType.Length() <= 0)
+        {
+            LOG_WRITE("Read from CenRep Failed... trying osext extended api");
+            GetFragmentsFromOSExtL();
+            iMMSHardwareType = iHardwareType;
+            iMMSS60Version = iS60Version;
+        }
+    #endif
+    }
 // End of file
--- a/browserutilities/webutils/tsrc/public/adv/group/WebUtilsBCTest.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/webutils/tsrc/public/adv/group/WebUtilsBCTest.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -57,7 +57,11 @@
 LIBRARY         webutils.lib
 LIBRARY         Centralrepository.lib
 
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 
 /*
 START WINS      
--- a/browserutilities/xmlparser/group/XMLInterface.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/browserutilities/xmlparser/group/XMLInterface.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -61,7 +61,11 @@
 LIBRARY		charconv.lib 
 LIBRARY		cxmlparser.lib
 
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 /*
 START WINS      
 ?wins_specific_information
--- a/codhandler/codui/group/CodUi.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/codhandler/codui/group/CodUi.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -46,7 +46,11 @@
 START RESOURCE ../data/CodUi.rss
 HEADER
 TARGETPATH RESOURCE_FILES_DIR
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 END
 
 USERINCLUDE     ../inc
--- a/codhandler/codui/src/CodDownloadImpl.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/codhandler/codui/src/CodDownloadImpl.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -207,7 +207,7 @@
 
     if(iDownloadPaused)
     {
-        iEng->Start(aParams,&iStatus);
+        iEng->Start(iParams,&iStatus);
         SetActive();
         iState = ELoad;
         iProgress.iState = TCodDownloadProgress::EInProgress;
--- a/codhandler/codviewer/group/CodViewer.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/codhandler/codviewer/group/CodViewer.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -35,7 +35,11 @@
 START RESOURCE ../data/CodViewer.rss
 HEADER
 TARGETPATH APP_RESOURCE_DIR
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 END
 
 SYSTEMINCLUDE   ../../CodEng/inc
--- a/codhandler/ddviewer/group/DdViewer.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/codhandler/ddviewer/group/DdViewer.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -35,7 +35,11 @@
 START RESOURCE ../data/DdViewer.rss
 HEADER
 TARGETPATH APP_RESOURCE_DIR
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 END
 
 SYSTEMINCLUDE   ../../CodEng/inc
--- a/codhandler/roapapp/group/RoapApp.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/codhandler/roapapp/group/RoapApp.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -43,7 +43,11 @@
 START RESOURCE ../data/RoapApp.rss
 HEADER
 TARGETPATH APP_RESOURCE_DIR
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 END
 
 USERINCLUDE     ../inc
--- a/codhandler/roapapp/src/RoapAppUi.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/codhandler/roapapp/src/RoapAppUi.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -49,14 +49,10 @@
 
 #ifdef __SERIES60_HELP
 // Context-Sensitve Help File
-#include <csxhelp/browser.hlp.hrh>
+#include <csxhelp/drm.hlp.hrh>
 #endif // __SERIES60_HELP
-//#include "browser.hlp.hrh" // replace with DRMUI.hlp.hrh when ready 
 
 // ================= CONSTANTS =======================
-/// For launching more info DRM_HLP_REGISTRATION
-_LIT(KDRM_HLP_REGISTRATION,"DRM_HLP_REGISTRATION"); 
-
 /// Temp file directory:
 _LIT( KRoapTempFilePath, "c:\\system\\temp\\" );
 
@@ -377,7 +373,7 @@
 {
     TInt err( KErrNone );    
     CRoapAppUi* self = static_cast<CRoapAppUi*>(aPtr);
-    TRAP( err, self->LaunchHelpL( KDRM_HLP_REGISTRATION ) ); // KOSS_HLP_SAVED_PAGES for testing       
+    TRAP( err, self->LaunchHelpL( KDRM_HLP_REGISTRATION ) );
     return err;        
 }
 
@@ -987,3 +983,4 @@
 	CLOG(( 2, _L("<- CRoapAppUi::HandleDMgrEventL") ));
     }
 
+
--- a/web_plat/browser_platform_api/group/bld.inf	Fri May 08 08:25:06 2009 +0300
+++ b/web_plat/browser_platform_api/group/bld.inf	Fri Jul 03 15:54:40 2009 +0100
@@ -23,5 +23,8 @@
 PRJ_EXPORTS
 
 ../inc/Browser_platform_variant.hrh  MW_LAYER_PLATFORM_EXPORT_PATH(Browser_platform_variant.hrh)
+#ifdef BRDO_ADDED_EXPORT_LOCATION
+../inc/Browser_platform_variant.hrh  BRDO_ADDED_EXPORT_LOCATION(Browser_platform_variant.hrh)
+#endif
 
 PRJ_MMPFILES
--- a/web_plat/browser_platform_api/inc/Browser_platform_variant.hrh	Fri May 08 08:25:06 2009 +0300
+++ b/web_plat/browser_platform_api/inc/Browser_platform_variant.hrh	Fri Jul 03 15:54:40 2009 +0100
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008 - 2009 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"
@@ -26,12 +26,57 @@
 #ifndef BROWSER_PLATFORM_VARIANT_HRH
 #define BROWSER_PLATFORM_VARIANT_HRH
 
-/* NOTE:
+
+/*
+* Establish which platform we are building on.
+* If required, un-comment correct platform macro as
+* described below  
+*
+*/
 
-   Format of browser domain feature flags:
+#if defined(__S60_32__)
+//
+// this is the only supported platform that comes with unambiguous platform version flag
+#define __PLATFORM_VERSION_32__
+//
+#else
+// manually edit the following lines to enable definition for
+// whichever platform is in use
+//
+// un-comment following line for 5.0/5250 platforms
+//#define __PLATFORM_VERSION_50__
+//
+// un-comment following line for 5.1/TB9.1 platforms
+#define __PLATFORM_VERSION_51__
+//
+// un-comment following line for 5.2/TB9.2 platforms
+//#define __PLATFORM_VERSION_52__
+//
+#endif
+
 
-   "BRDO_" | feature/component name | "_FF"
+/*
+*
+* Define Browser Version
+*
+*/
+
+#define BRDO_APP_VERSION_MAJOR 7
+#define BRDO_APP_VERSION_MINOR 2
+#define BRDO_APP_VERSION BRDO_APP_VERSION_MAJOR##_##BRDO_APP_VERSION_MINOR
+
 
+/*
+*
+* Define feature flags
+*
+* Format of browser domain feature flags:
+*
+*   "BRDO_" | feature/component name | "_FF"
+*
+* Define default value of the flag in section below, and then modify it
+* by platform as it varies from that default.
+*
 */
 
 // Defines Language InterWork and SAPI availability
@@ -68,12 +113,20 @@
 
 // Gallery App is not present
 #undef BRDO_APP_GALLERY_SUPPORTED_FF
+
+// Defines if MultipartParser should be built
+#define BRDO_MULTIPART_PARSER_FF
+
+// Additional export location - to adapt to new header export location
+#undef BRDO_ADDED_EXPORT_LOCATION
+
+
 /*
 * ===================
 *        S60 3.23
 * ===================
 */ 
-#if defined(__S60_32__)
+#if defined(__PLATFORM_VERSION_32__)
 
 // Defines Language InterWork and SAPI availability
 #undef BRDO_LIW_FF
@@ -95,13 +148,6 @@
 
 // Gallery App is present
 #define BRDO_APP_GALLERY_SUPPORTED_FF
-// Missing from ProductVariant.hrh
-#ifndef LANGUAGE_IDS
-#define LANGUAGE_IDS LANG sc
-#endif
-
-#define BRDO_APP_VERSION_MAJOR 7
-#define BRDO_APP_VERSION_MINOR 1
 
 // Missing from 3.23 platform_paths.hrh
 
@@ -112,50 +158,52 @@
 #define APP_LAYER_LOC_EXPORT_PATH(exported) APP_LAYER_PUBLIC_EXPORT_PATH(##exported)
 
 
-
-
 /*
 * ===================
 *        S60 5.0
 * ===================
 */ 
-#elif defined(__S60_50__)
+#elif defined(__PLATFORM_VERSION_50__)
 
 // Defines must accumulate versions. ie for 5.01 you must define BRDO_BROWSER_50_FF and BRDO_BROWSER_501_FF(To be reviewed)
 // The assumption is that anything that worked in 3.2 will work in 5.0 and 5.01.  For anything doesn't work
 // in 3.2 but works in 5.0 and above, that code should be behind the BRDO_BROWSER_50_FF flag.
 #define BRDO_BROWSER_50_FF
 
-#define BRDO_APP_VERSION_MAJOR 7
-#define BRDO_APP_VERSION_MINOR 0
+#if __GNUC__ >= 3
+#define BRDO_ADDED_EXPORT_LOCATION(exported) MW_LAYER_DOMAIN_EXPORT_PATH(../../platform/mw/exported)
+#else
+#define BRDO_ADDED_EXPORT_LOCATION(exported) MW_LAYER_DOMAIN_EXPORT_PATH(../../platform/mw/##exported)
+#endif
+
+#define APP_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../libc)
+#define APP_LAYER_ECOM_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../ecom)
+#define APP_LAYER_HTTP_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../http)
+#define APP_LAYER_CONNECT_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../connect)
+#define APP_LAYER_SWI_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../swi)
+#define APP_LAYER_OSKERNEL_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../kernel)
+#define APP_LAYER_PUSH_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../push)
+#define APP_LAYER_STDAPIS_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../stdapis)
+
+#define MW_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../libc)
+#define MW_LAYER_ECOM_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../ecom)
+#define MW_LAYER_HTTP_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../http)
+#define MW_LAYER_CONNECT_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../connect)
+#define MW_LAYER_SWI_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../swi)
+#define MW_LAYER_OSKERNEL_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../kernel)
+#define MW_LAYER_PUSH_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../push)
+#define MW_LAYER_STDAPIS_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(../stdapis)
+
 
 /*
 * ===================
 *        S60 5.1
 * ===================
 */ 
-#else  // until __S60_51__ is defined
+#elif defined(__PLATFORM_VERSION_51__)
 
 #define BRDO_BROWSER_50_FF
-
-#define BRDO_APP_VERSION_MAJOR 7
-#define BRDO_APP_VERSION_MINOR 2
-
-#endif // S60 VERSION ID's
-
-
-#define BRDO_APP_VERSION BRDO_APP_VERSION_MAJOR##_##BRDO_APP_VERSION_MINOR
-
-// Generic run-time definitions -- see WmlBrowserBuild.h for similar feature related definitions
-
-// Browser Update - Independent Application Delivery
-#if defined( KFeatureIdIAUpdate )
-// Defines flag for activating changes to update Browser application - from the Browser application
-#define BRDO_BROWSER_UPDATE_UI_FF FeatureManager::FeatureSupported( KFeatureIdIAUpdate )
-#else
-#define BRDO_BROWSER_UPDATE_UI_FF 0
-#endif // KFeatureIdIAUpdate
-
+#define BRDO_BROWSER_51_FF
 
 #define APP_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(libc)
 #define APP_LAYER_ECOM_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
@@ -175,4 +223,53 @@
 #define MW_LAYER_PUSH_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(push)
 #define MW_LAYER_STDAPIS_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis)
 
+
+/*
+* ===================
+*        S60 5.2
+* ===================
+*/ 
+#elif defined(__PLATFORM_VERSION_52__)
+
+#define BRDO_BROWSER_50_FF
+#define BRDO_BROWSER_51_FF
+#define BRDO_BROWSER_52_FF
+
+// BrDo MultipartParser not used from S60 5.2 onward
+//#undef BRDO_MULTIPART_PARSER_FF - TODO: un-comment this line for week21 release
+
+#define APP_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(libc)
+#define APP_LAYER_ECOM_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
+#define APP_LAYER_HTTP_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(http)
+#define APP_LAYER_CONNECT_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(connect)
+#define APP_LAYER_SWI_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(swi)
+#define APP_LAYER_OSKERNEL_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(kernel)
+#define APP_LAYER_PUSH_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(push)
+#define APP_LAYER_STDAPIS_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis)
+
+#define MW_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(libc)
+#define MW_LAYER_ECOM_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(ecom)
+#define MW_LAYER_HTTP_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(http)
+#define MW_LAYER_CONNECT_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(connect)
+#define MW_LAYER_SWI_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(swi)
+#define MW_LAYER_OSKERNEL_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(kernel)
+#define MW_LAYER_PUSH_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(push)
+#define MW_LAYER_STDAPIS_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis)
+
+
+#endif // PLATFORM VERSION ID's
+
+
+
+// Generic run-time definitions -- see WmlBrowserBuild.h for similar feature related definitions
+
+// Browser Update - Independent Application Delivery
+#if defined( KFeatureIdIAUpdate )
+// Defines flag for activating changes to update Browser application - from the Browser application
+#define BRDO_BROWSER_UPDATE_UI_FF FeatureManager::FeatureSupported( KFeatureIdIAUpdate )
+#else
+#define BRDO_BROWSER_UPDATE_UI_FF 0
+#endif // KFeatureIdIAUpdate
+
+
 #endif // BROWSER_PLATFORM_VARIANT_HRH
--- a/web_plat/group/bld.inf	Fri May 08 08:25:06 2009 +0300
+++ b/web_plat/group/bld.inf	Fri Jul 03 15:54:40 2009 +0100
@@ -15,6 +15,7 @@
 *
 */
 
+#include "../browser_platform_api/inc/Browser_platform_variant.hrh"
 
 
 #include "../aiw_browser_provider_api/group/bld.inf"
@@ -26,7 +27,9 @@
 #include "../download_mgr_client_api_extn/group/bld.inf"
 #include "../feeds_engine_api/group/bld.inf"
 #include "../launcher_api/group/bld.inf"
+#ifdef BRDO_MULTIPART_PARSER_FF
 #include "../multipart_parser_api/group/bld.inf"
+#endif
 #include "../recent_url_store_api/group/bld.inf"
 #include "../rt_gesturehelper_api/group/bld.inf"
 #include "../scheme_handler_plugin_api/group/bld.inf"
--- a/web_plat/multipart_parser_api/group/bld.inf	Fri May 08 08:25:06 2009 +0300
+++ b/web_plat/multipart_parser_api/group/bld.inf	Fri Jul 03 15:54:40 2009 +0100
@@ -15,10 +15,11 @@
 *
 */
 
-
 #include <platform_paths.hrh>
 #include "../../../web_plat/browser_platform_api/inc/Browser_platform_variant.hrh"
 
+#ifdef BRDO_MULTIPART_PARSER_FF
+
 PRJ_PLATFORMS
 DEFAULT
 
@@ -27,3 +28,5 @@
 ../inc/MultipartParser.h    MW_LAYER_PLATFORM_EXPORT_PATH(MultipartParser.h)
 
 PRJ_MMPFILES
+
+#endif
--- a/web_plat/scheme_handler_plugin_api/group/bld.inf	Fri May 08 08:25:06 2009 +0300
+++ b/web_plat/scheme_handler_plugin_api/group/bld.inf	Fri Jul 03 15:54:40 2009 +0100
@@ -29,6 +29,10 @@
 ../inc/SchemeHandler.inl       MW_LAYER_PLATFORM_EXPORT_PATH(SchemeHandler.inl)
 ../inc/SchemeDefs.hrh          MW_LAYER_PLATFORM_EXPORT_PATH(SchemeDefs.hrh)
 
+#ifdef BRDO_ADDED_EXPORT_LOCATION
+../inc/SchemeDefs.hrh          BRDO_ADDED_EXPORT_LOCATION(SchemeDefs.hrh)
+#endif
+
 PRJ_MMPFILES
 
 
--- a/web_plat/webutils_api/inc/CUserAgent.h	Fri May 08 08:25:06 2009 +0300
+++ b/web_plat/webutils_api/inc/CUserAgent.h	Fri Jul 03 15:54:40 2009 +0100
@@ -110,45 +110,50 @@
 		
 		bool IsUAStringEmpty(const TPtr &aUAString);
 		TInt GetCenRepFragment(TUserAgentStringKeys aFragmentType, TDes& fragmentValue);
-		void GetFragmentsL();
-		void ReadAndCreateUAStringL(TPtr &aUAStringPtr);
-		
-		
+    void GetFragmentsL();
+    void GetMMSFragmentsL();
+    void ReadAndCreateUAStringL(TPtr &aUAStringPtr);
+        
+        
 #ifdef BRDO_BROWSER_50_FF
-		void GetFragmentsFromOSExtL();
-		TInt GetOSExtFragment(TUserAgentStringKeys aFragmentType, TDes& fragmentValue, RFs& fs);
-		/**
+        void GetFragmentsFromOSExtL();
+        TInt GetOSExtFragment(TUserAgentStringKeys aFragmentType, TDes& fragmentValue, RFs& fs);
+        /**
         * Gets the Version Values from osext layer / central repository
         */
-		TInt GetOSVersion(TDes& aValue, RFs& aFs);
-		TInt GetS60Version(TDes& aValue, RFs& aFs);
-		TInt GetVersion(const SysVersionInfo::TVersionInfoType aType, TDes& aValue);
-		TInt GetHardwareVersion(TDes& aHardwareType, RFs& aFs);
-#endif //#ifdef BRDO_BROWSER_50_FF		
+        TInt GetOSVersion(TDes& aValue, RFs& aFs);
+        TInt GetS60Version(TDes& aValue, RFs& aFs);
+        TInt GetVersion(const SysVersionInfo::TVersionInfoType aType, TDes& aValue);
+        TInt GetHardwareVersion(TDes& aHardwareType, RFs& aFs);
+#endif //#ifdef BRDO_BROWSER_50_FF      
 
-		void GetBrowserVersionL();
-		void GetBrowserNameAndVersionL();
-		
-	private:		//data
+        void GetBrowserVersionL();
+        void GetBrowserNameAndVersionL();
+        
+    private:        //data
 
-	 	CRepository* iRepository;
+        CRepository* iRepository;
+
+        TBool   iUAStrQueried;
+        TBool   iMMSUAStrQueried;
+        TBool   iURLUAProfQueried;
 
-	 	TBool	iUAStrQueried;
-	 	TBool	iMMSUAStrQueried;
-	 	TBool	iURLUAProfQueried;
+        HBufC*  iBrowserCenrepStr;
+        HBufC*  iMMSCenrepStr;
+        HBufC*  iUAProfURL;
+        HBufC*  iUAProfURL3G;
+        
+        TBuf<64> iSymbianVersion;
+        TBuf<64> iS60Version;
+        TBuf<64> iMIDPCLDCVersion;
+        TBuf<64> iHardwareType;
+        TBuf<64> iMMSS60Version;
+        TBuf<64> iMMSMIDPVersion;
+        TBuf<64> iMMSCLDCVersion;
+        TBuf<64> iMMSHardwareType;
 
-		HBufC*	iBrowserCenrepStr;
-		HBufC*	iMMSCenrepStr;
-		HBufC*	iUAProfURL;
-		HBufC*	iUAProfURL3G;
-		
-		TBuf<64> iSymbianVersion;
-		TBuf<64> iS60Version;
-		TBuf<64> iMIDPCLDCVersion;
-		TBuf<64> iHardwareType;
-
-		HBufC*	iBrowserVersionStr;
-		HBufC*	iBrowserNameAndVersionStr;
+        HBufC*  iBrowserVersionStr;
+        HBufC*  iBrowserNameAndVersionStr;
 
    };
 
--- a/web_plat/webutils_api/inc/WebUtilsInternalCRKeys.h	Fri May 08 08:25:06 2009 +0300
+++ b/web_plat/webutils_api/inc/WebUtilsInternalCRKeys.h	Fri Jul 03 15:54:40 2009 +0100
@@ -74,5 +74,11 @@
 // Browser Version SVN Rev 
 const TUint32 KWebUtilsBrowserVersionSVNRev =	0x00000011;
 
+// Browser Name
+const TUint32 KWebUtilsBrowserName =	0x00000012;
+
+// Ignore product program config when TRUE 
+const TUint32 KWebUtilsIgnoreConfig =	0x00000013;
+
 		
 #endif // WEBUTILSINTERNALCRKEYS_H
--- a/web_pub/browser_control_api/tsrc/group/BrCtlApiTest.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/web_pub/browser_control_api/tsrc/group/BrCtlApiTest.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -54,6 +54,10 @@
 // component under test
 LIBRARY     browserengine.lib
 
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 
 // End of File
--- a/web_pub/download_mgr_client_api/tsrc/group/DownloadMgrClientApiTest.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/web_pub/download_mgr_client_api/tsrc/group/DownloadMgrClientApiTest.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -42,6 +42,10 @@
 LIBRARY         euser.lib efsrv.lib downloadmgr.lib esock.lib
 LIBRARY         stiftestinterface.lib
 
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 
 // End of File
--- a/web_pub/favourites_engine_api/tsrc/group/FavouritesEngineTest.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/web_pub/favourites_engine_api/tsrc/group/FavouritesEngineTest.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -51,6 +51,10 @@
 LIBRARY         euser.lib efsrv.lib favouritesengine.lib estor.lib
 LIBRARY         stiftestinterface.lib
 
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 
 // End of File
--- a/webengine/device/group/Device.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/device/group/Device.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -33,7 +33,11 @@
 OPTION CW -warn noempty,nounused,nounwanted,nopedantic
 OPTION ARMCC --diag_suppress 111,177,1293,1,1299,830,550,427 --fpmode fast
 
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 
 VENDORID  VID_DEFAULT
 CAPABILITY  CAP_GENERAL_DLL
--- a/webengine/device/inc/DeviceBridge.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/device/inc/DeviceBridge.h	Fri Jul 03 15:54:40 2009 +0100
@@ -49,6 +49,7 @@
         inline virtual void* Device( void* exec ) = 0;
         inline virtual ~MDeviceBridge() {};
         inline virtual void SetUid( const TUint& aValue) = 0;
+        virtual void Clear() = 0;
     };
 
 /**
@@ -94,6 +95,7 @@
         * @return none
         */
         void SetUid( const TUint& aValue);
+        void Clear();
 
     private:
 
--- a/webengine/device/src/DeviceBridge.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/device/src/DeviceBridge.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -57,11 +57,23 @@
 //
 TDeviceBridge::~TDeviceBridge()
     {
+    Clear();
+    }    
+    
+// ----------------------------------------------------------------------------
+// TDeviceBridge::Clear
+//
+//
+// ----------------------------------------------------------------------------
+//
+void TDeviceBridge::Clear()
+    {
     if ( m_device )
         {
         m_device->Close();
         KJS::Collector::unprotect(m_device);
         }
+    m_device = NULL;
     }
 
 // ----------------------------------------------------------------------------
--- a/webengine/osswebengine/DerivedSources/WebCore/HTMLNames.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/DerivedSources/WebCore/HTMLNames.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -41,6 +41,302 @@
 
 using namespace WebCore;
 
+static bool initialized = false;
+
+static const char *xhtmlNSString = "http://www.w3.org/1999/xhtml";
+// Tags
+static const char *aTagString = "a";
+static const char *abbrTagString = "abbr";
+static const char *acronymTagString = "acronym";
+static const char *addressTagString = "address";
+static const char *appletTagString = "applet";
+static const char *areaTagString = "area";
+static const char *bTagString = "b";
+static const char *baseTagString = "base";
+static const char *basefontTagString = "basefont";
+static const char *bdoTagString = "bdo";
+static const char *bgsoundTagString = "bgsound";
+static const char *bigTagString = "big";
+static const char *blockquoteTagString = "blockquote";
+static const char *bodyTagString = "body";
+static const char *brTagString = "br";
+static const char *buttonTagString = "button";
+static const char *canvasTagString = "canvas";
+static const char *captionTagString = "caption";
+static const char *centerTagString = "center";
+static const char *citeTagString = "cite";
+static const char *codeTagString = "code";
+static const char *colTagString = "col";
+static const char *colgroupTagString = "colgroup";
+static const char *ddTagString = "dd";
+static const char *delTagString = "del";
+static const char *dfnTagString = "dfn";
+static const char *dirTagString = "dir";
+static const char *divTagString = "div";
+static const char *dlTagString = "dl";
+static const char *dtTagString = "dt";
+static const char *emTagString = "em";
+static const char *embedTagString = "embed";
+static const char *fieldsetTagString = "fieldset";
+static const char *fontTagString = "font";
+static const char *formTagString = "form";
+static const char *frameTagString = "frame";
+static const char *framesetTagString = "frameset";
+static const char *headTagString = "head";
+static const char *h1TagString = "h1";
+static const char *h2TagString = "h2";
+static const char *h3TagString = "h3";
+static const char *h4TagString = "h4";
+static const char *h5TagString = "h5";
+static const char *h6TagString = "h6";
+static const char *hrTagString = "hr";
+static const char *htmlTagString = "html";
+static const char *iTagString = "i";
+static const char *iframeTagString = "iframe";
+static const char *imageTagString = "image";
+static const char *imgTagString = "img";
+static const char *inputTagString = "input";
+static const char *insTagString = "ins";
+static const char *isindexTagString = "isindex";
+static const char *kbdTagString = "kbd";
+static const char *keygenTagString = "keygen";
+static const char *labelTagString = "label";
+static const char *layerTagString = "layer";
+static const char *legendTagString = "legend";
+static const char *liTagString = "li";
+static const char *linkTagString = "link";
+static const char *listingTagString = "listing";
+static const char *mapTagString = "map";
+static const char *marqueeTagString = "marquee";
+static const char *menuTagString = "menu";
+static const char *metaTagString = "meta";
+static const char *nobrTagString = "nobr";
+static const char *noembedTagString = "noembed";
+static const char *noframesTagString = "noframes";
+static const char *nolayerTagString = "nolayer";
+static const char *noscriptTagString = "noscript";
+static const char *objectTagString = "object";
+static const char *olTagString = "ol";
+static const char *optgroupTagString = "optgroup";
+static const char *optionTagString = "option";
+static const char *pTagString = "p";
+static const char *paramTagString = "param";
+static const char *plaintextTagString = "plaintext";
+static const char *preTagString = "pre";
+static const char *qTagString = "q";
+static const char *sTagString = "s";
+static const char *sampTagString = "samp";
+static const char *scriptTagString = "script";
+static const char *selectTagString = "select";
+static const char *smallTagString = "small";
+static const char *spanTagString = "span";
+static const char *strikeTagString = "strike";
+static const char *strongTagString = "strong";
+static const char *styleTagString = "style";
+static const char *subTagString = "sub";
+static const char *supTagString = "sup";
+static const char *tableTagString = "table";
+static const char *tbodyTagString = "tbody";
+static const char *tdTagString = "td";
+static const char *textareaTagString = "textarea";
+static const char *tfootTagString = "tfoot";
+static const char *thTagString = "th";
+static const char *theadTagString = "thead";
+static const char *titleTagString = "title";
+static const char *trTagString = "tr";
+static const char *ttTagString = "tt";
+static const char *uTagString = "u";
+static const char *ulTagString = "ul";
+static const char *varTagString = "var";
+static const char *wbrTagString = "wbr";
+static const char *xmpTagString = "xmp";
+// Attributes
+static const char *abbrAttrString = "abbr";
+static const char *accept_charsetAttrString = "accept_charset";
+static const char *acceptAttrString = "accept";
+static const char *accesskeyAttrString = "accesskey";
+static const char *actionAttrString = "action";
+static const char *alignAttrString = "align";
+static const char *alinkAttrString = "alink";
+static const char *altAttrString = "alt";
+static const char *archiveAttrString = "archive";
+static const char *autocompleteAttrString = "autocomplete";
+static const char *autosaveAttrString = "autosave";
+static const char *axisAttrString = "axis";
+static const char *backgroundAttrString = "background";
+static const char *behaviorAttrString = "behavior";
+static const char *bgcolorAttrString = "bgcolor";
+static const char *bgpropertiesAttrString = "bgproperties";
+static const char *borderAttrString = "border";
+static const char *bordercolorAttrString = "bordercolor";
+static const char *cellpaddingAttrString = "cellpadding";
+static const char *cellspacingAttrString = "cellspacing";
+static const char *charAttrString = "char";
+static const char *challengeAttrString = "challenge";
+static const char *charoffAttrString = "charoff";
+static const char *charsetAttrString = "charset";
+static const char *checkedAttrString = "checked";
+static const char *cellborderAttrString = "cellborder";
+static const char *citeAttrString = "cite";
+static const char *classAttrString = "class";
+static const char *classidAttrString = "classid";
+static const char *clearAttrString = "clear";
+static const char *codeAttrString = "code";
+static const char *codebaseAttrString = "codebase";
+static const char *codetypeAttrString = "codetype";
+static const char *colorAttrString = "color";
+static const char *colsAttrString = "cols";
+static const char *colspanAttrString = "colspan";
+static const char *compactAttrString = "compact";
+static const char *compositeAttrString = "composite";
+static const char *contentAttrString = "content";
+static const char *contenteditableAttrString = "contenteditable";
+static const char *coordsAttrString = "coords";
+static const char *ctiAttrString = "cti";
+static const char *dataAttrString = "data";
+static const char *datetimeAttrString = "datetime";
+static const char *declareAttrString = "declare";
+static const char *deferAttrString = "defer";
+static const char *dirAttrString = "dir";
+static const char *directionAttrString = "direction";
+static const char *directkeyAttrString = "directkey";
+static const char *disabledAttrString = "disabled";
+static const char *emailAttrString = "email";
+static const char *enctypeAttrString = "enctype";
+static const char *faceAttrString = "face";
+static const char *forAttrString = "for";
+static const char *frameAttrString = "frame";
+static const char *frameborderAttrString = "frameborder";
+static const char *headersAttrString = "headers";
+static const char *heightAttrString = "height";
+static const char *hiddenAttrString = "hidden";
+static const char *hrefAttrString = "href";
+static const char *hreflangAttrString = "hreflang";
+static const char *hspaceAttrString = "hspace";
+static const char *http_equivAttrString = "http_equiv";
+static const char *idAttrString = "id";
+static const char *incrementalAttrString = "incremental";
+static const char *ismapAttrString = "ismap";
+static const char *keytypeAttrString = "keytype";
+static const char *labelAttrString = "label";
+static const char *langAttrString = "lang";
+static const char *languageAttrString = "language";
+static const char *leftAttrString = "left";
+static const char *leftmarginAttrString = "leftmargin";
+static const char *linkAttrString = "link";
+static const char *longdescAttrString = "longdesc";
+static const char *loopAttrString = "loop";
+static const char *lowsrcAttrString = "lowsrc";
+static const char *marginheightAttrString = "marginheight";
+static const char *marginwidthAttrString = "marginwidth";
+static const char *maxAttrString = "max";
+static const char *maxlengthAttrString = "maxlength";
+static const char *mayscriptAttrString = "mayscript";
+static const char *mediaAttrString = "media";
+static const char *methodAttrString = "method";
+static const char *minAttrString = "min";
+static const char *multipleAttrString = "multiple";
+static const char *nameAttrString = "name";
+static const char *nohrefAttrString = "nohref";
+static const char *noresizeAttrString = "noresize";
+static const char *noshadeAttrString = "noshade";
+static const char *nowrapAttrString = "nowrap";
+static const char *objectAttrString = "object";
+static const char *onabortAttrString = "onabort";
+static const char *onbeforecopyAttrString = "onbeforecopy";
+static const char *onbeforecutAttrString = "onbeforecut";
+static const char *onbeforepasteAttrString = "onbeforepaste";
+static const char *onbeforeunloadAttrString = "onbeforeunload";
+static const char *onblurAttrString = "onblur";
+static const char *onchangeAttrString = "onchange";
+static const char *onclickAttrString = "onclick";
+static const char *oncontextmenuAttrString = "oncontextmenu";
+static const char *oncopyAttrString = "oncopy";
+static const char *oncutAttrString = "oncut";
+static const char *ondblclickAttrString = "ondblclick";
+static const char *ondragAttrString = "ondrag";
+static const char *ondragendAttrString = "ondragend";
+static const char *ondragenterAttrString = "ondragenter";
+static const char *ondragleaveAttrString = "ondragleave";
+static const char *ondragoverAttrString = "ondragover";
+static const char *ondragstartAttrString = "ondragstart";
+static const char *ondropAttrString = "ondrop";
+static const char *onerrorAttrString = "onerror";
+static const char *onfocusAttrString = "onfocus";
+static const char *oninputAttrString = "oninput";
+static const char *onkeydownAttrString = "onkeydown";
+static const char *onkeypressAttrString = "onkeypress";
+static const char *onkeyupAttrString = "onkeyup";
+static const char *onloadAttrString = "onload";
+static const char *onmousedownAttrString = "onmousedown";
+static const char *onmousemoveAttrString = "onmousemove";
+static const char *onmouseoutAttrString = "onmouseout";
+static const char *onmouseoverAttrString = "onmouseover";
+static const char *onmouseupAttrString = "onmouseup";
+static const char *onmousewheelAttrString = "onmousewheel";
+static const char *onpasteAttrString = "onpaste";
+static const char *onresetAttrString = "onreset";
+static const char *onresizeAttrString = "onresize";
+static const char *onscrollAttrString = "onscroll";
+static const char *onsearchAttrString = "onsearch";
+static const char *onselectAttrString = "onselect";
+static const char *onselectstartAttrString = "onselectstart";
+static const char *onsubmitAttrString = "onsubmit";
+static const char *onunloadAttrString = "onunload";
+static const char *pagexAttrString = "pagex";
+static const char *pageyAttrString = "pagey";
+static const char *placeholderAttrString = "placeholder";
+static const char *plainAttrString = "plain";
+static const char *pluginpageAttrString = "pluginpage";
+static const char *pluginspageAttrString = "pluginspage";
+static const char *pluginurlAttrString = "pluginurl";
+static const char *precisionAttrString = "precision";
+static const char *profileAttrString = "profile";
+static const char *promptAttrString = "prompt";
+static const char *readonlyAttrString = "readonly";
+static const char *relAttrString = "rel";
+static const char *resultsAttrString = "results";
+static const char *revAttrString = "rev";
+static const char *rowsAttrString = "rows";
+static const char *rowspanAttrString = "rowspan";
+static const char *rulesAttrString = "rules";
+static const char *schemeAttrString = "scheme";
+static const char *scopeAttrString = "scope";
+static const char *scrollamountAttrString = "scrollamount";
+static const char *scrolldelayAttrString = "scrolldelay";
+static const char *scrollingAttrString = "scrolling";
+static const char *selectedAttrString = "selected";
+static const char *shapeAttrString = "shape";
+static const char *sizeAttrString = "size";
+static const char *soundstartAttrString = "soundstart";
+static const char *spanAttrString = "span";
+static const char *srcAttrString = "src";
+static const char *standbyAttrString = "standby";
+static const char *startAttrString = "start";
+static const char *styleAttrString = "style";
+static const char *summaryAttrString = "summary";
+static const char *tabindexAttrString = "tabindex";
+static const char *tableborderAttrString = "tableborder";
+static const char *targetAttrString = "target";
+static const char *telbookAttrString = "telbook";
+static const char *textAttrString = "text";
+static const char *titleAttrString = "title";
+static const char *topAttrString = "top";
+static const char *topmarginAttrString = "topmargin";
+static const char *truespeedAttrString = "truespeed";
+static const char *typeAttrString = "type";
+static const char *usemapAttrString = "usemap";
+static const char *valignAttrString = "valign";
+static const char *valueAttrString = "value";
+static const char *valuetypeAttrString = "valuetype";
+static const char *versionAttrString = "version";
+static const char *viewsourceAttrString = "viewsource";
+static const char *vlinkAttrString = "vlink";
+static const char *volumeAttrString = "volume";
+static const char *vspaceAttrString = "vspace";
+static const char *widthAttrString = "width";
+static const char *wrapAttrString = "wrap";
+
 DEFINE_GLOBAL(AtomicString, xhtmlNamespaceURI, "http://www.w3.org/1999/xhtml")
 // Tags
 DEFINE_GLOBAL(QualifiedName, aTag, nullAtom, "a", xhtmlNamespaceURI);
@@ -646,7 +942,6 @@
 
 void init()
 {
-    static bool initialized = false;
     if (initialized)
         return;
     initialized = true;
@@ -654,118 +949,10 @@
     // Use placement new to initialize the globals.
     
     AtomicString::init();
-    AtomicString xhtmlNS("http://www.w3.org/1999/xhtml");
+    AtomicString xhtmlNS(xhtmlNSString);
 
     // Namespace
     new ((void*)&xhtmlNamespaceURI) AtomicString(xhtmlNS);
-
-    // Tags
-    const char *aTagString = "a";
-    const char *abbrTagString = "abbr";
-    const char *acronymTagString = "acronym";
-    const char *addressTagString = "address";
-    const char *appletTagString = "applet";
-    const char *areaTagString = "area";
-    const char *bTagString = "b";
-    const char *baseTagString = "base";
-    const char *basefontTagString = "basefont";
-    const char *bdoTagString = "bdo";
-    const char *bgsoundTagString = "bgsound";
-    const char *bigTagString = "big";
-    const char *blockquoteTagString = "blockquote";
-    const char *bodyTagString = "body";
-    const char *brTagString = "br";
-    const char *buttonTagString = "button";
-    const char *canvasTagString = "canvas";
-    const char *captionTagString = "caption";
-    const char *centerTagString = "center";
-    const char *citeTagString = "cite";
-    const char *codeTagString = "code";
-    const char *colTagString = "col";
-    const char *colgroupTagString = "colgroup";
-    const char *ddTagString = "dd";
-    const char *delTagString = "del";
-    const char *dfnTagString = "dfn";
-    const char *dirTagString = "dir";
-    const char *divTagString = "div";
-    const char *dlTagString = "dl";
-    const char *dtTagString = "dt";
-    const char *emTagString = "em";
-    const char *embedTagString = "embed";
-    const char *fieldsetTagString = "fieldset";
-    const char *fontTagString = "font";
-    const char *formTagString = "form";
-    const char *frameTagString = "frame";
-    const char *framesetTagString = "frameset";
-    const char *headTagString = "head";
-    const char *h1TagString = "h1";
-    const char *h2TagString = "h2";
-    const char *h3TagString = "h3";
-    const char *h4TagString = "h4";
-    const char *h5TagString = "h5";
-    const char *h6TagString = "h6";
-    const char *hrTagString = "hr";
-    const char *htmlTagString = "html";
-    const char *iTagString = "i";
-    const char *iframeTagString = "iframe";
-    const char *imageTagString = "image";
-    const char *imgTagString = "img";
-    const char *inputTagString = "input";
-    const char *insTagString = "ins";
-    const char *isindexTagString = "isindex";
-    const char *kbdTagString = "kbd";
-    const char *keygenTagString = "keygen";
-    const char *labelTagString = "label";
-    const char *layerTagString = "layer";
-    const char *legendTagString = "legend";
-    const char *liTagString = "li";
-    const char *linkTagString = "link";
-    const char *listingTagString = "listing";
-    const char *mapTagString = "map";
-    const char *marqueeTagString = "marquee";
-    const char *menuTagString = "menu";
-    const char *metaTagString = "meta";
-    const char *nobrTagString = "nobr";
-    const char *noembedTagString = "noembed";
-    const char *noframesTagString = "noframes";
-    const char *nolayerTagString = "nolayer";
-    const char *noscriptTagString = "noscript";
-    const char *objectTagString = "object";
-    const char *olTagString = "ol";
-    const char *optgroupTagString = "optgroup";
-    const char *optionTagString = "option";
-    const char *pTagString = "p";
-    const char *paramTagString = "param";
-    const char *plaintextTagString = "plaintext";
-    const char *preTagString = "pre";
-    const char *qTagString = "q";
-    const char *sTagString = "s";
-    const char *sampTagString = "samp";
-    const char *scriptTagString = "script";
-    const char *selectTagString = "select";
-    const char *smallTagString = "small";
-    const char *spanTagString = "span";
-    const char *strikeTagString = "strike";
-    const char *strongTagString = "strong";
-    const char *styleTagString = "style";
-    const char *subTagString = "sub";
-    const char *supTagString = "sup";
-    const char *tableTagString = "table";
-    const char *tbodyTagString = "tbody";
-    const char *tdTagString = "td";
-    const char *textareaTagString = "textarea";
-    const char *tfootTagString = "tfoot";
-    const char *thTagString = "th";
-    const char *theadTagString = "thead";
-    const char *titleTagString = "title";
-    const char *trTagString = "tr";
-    const char *ttTagString = "tt";
-    const char *uTagString = "u";
-    const char *ulTagString = "ul";
-    const char *varTagString = "var";
-    const char *wbrTagString = "wbr";
-    const char *xmpTagString = "xmp";
-
     new ((void*)&aTag) QualifiedName(nullAtom, aTagString, xhtmlNS);
     new ((void*)&abbrTag) QualifiedName(nullAtom, abbrTagString, xhtmlNS);
     new ((void*)&acronymTag) QualifiedName(nullAtom, acronymTagString, xhtmlNS);
@@ -871,192 +1058,7 @@
     new ((void*)&varTag) QualifiedName(nullAtom, varTagString, xhtmlNS);
     new ((void*)&wbrTag) QualifiedName(nullAtom, wbrTagString, xhtmlNS);
     new ((void*)&xmpTag) QualifiedName(nullAtom, xmpTagString, xhtmlNS);
-    // Attributes
-    const char *abbrAttrString = "abbr";
-    const char *accept_charsetAttrString = "accept_charset";
-    const char *acceptAttrString = "accept";
-    const char *accesskeyAttrString = "accesskey";
-    const char *actionAttrString = "action";
-    const char *alignAttrString = "align";
-    const char *alinkAttrString = "alink";
-    const char *altAttrString = "alt";
-    const char *archiveAttrString = "archive";
-    const char *autocompleteAttrString = "autocomplete";
-    const char *autosaveAttrString = "autosave";
-    const char *axisAttrString = "axis";
-    const char *backgroundAttrString = "background";
-    const char *behaviorAttrString = "behavior";
-    const char *bgcolorAttrString = "bgcolor";
-    const char *bgpropertiesAttrString = "bgproperties";
-    const char *borderAttrString = "border";
-    const char *bordercolorAttrString = "bordercolor";
-    const char *cellpaddingAttrString = "cellpadding";
-    const char *cellspacingAttrString = "cellspacing";
-    const char *charAttrString = "char";
-    const char *challengeAttrString = "challenge";
-    const char *charoffAttrString = "charoff";
-    const char *charsetAttrString = "charset";
-    const char *checkedAttrString = "checked";
-    const char *cellborderAttrString = "cellborder";
-    const char *citeAttrString = "cite";
-    const char *classAttrString = "class";
-    const char *classidAttrString = "classid";
-    const char *clearAttrString = "clear";
-    const char *codeAttrString = "code";
-    const char *codebaseAttrString = "codebase";
-    const char *codetypeAttrString = "codetype";
-    const char *colorAttrString = "color";
-    const char *colsAttrString = "cols";
-    const char *colspanAttrString = "colspan";
-    const char *compactAttrString = "compact";
-    const char *compositeAttrString = "composite";
-    const char *contentAttrString = "content";
-    const char *contenteditableAttrString = "contenteditable";
-    const char *coordsAttrString = "coords";
-    const char *ctiAttrString = "cti";
-    const char *dataAttrString = "data";
-    const char *datetimeAttrString = "datetime";
-    const char *declareAttrString = "declare";
-    const char *deferAttrString = "defer";
-    const char *dirAttrString = "dir";
-    const char *directionAttrString = "direction";
-    const char *directkeyAttrString = "directkey";
-    const char *disabledAttrString = "disabled";
-    const char *emailAttrString = "email";
-    const char *enctypeAttrString = "enctype";
-    const char *faceAttrString = "face";
-    const char *forAttrString = "for";
-    const char *frameAttrString = "frame";
-    const char *frameborderAttrString = "frameborder";
-    const char *headersAttrString = "headers";
-    const char *heightAttrString = "height";
-    const char *hiddenAttrString = "hidden";
-    const char *hrefAttrString = "href";
-    const char *hreflangAttrString = "hreflang";
-    const char *hspaceAttrString = "hspace";
-    const char *http_equivAttrString = "http_equiv";
-    const char *idAttrString = "id";
-    const char *incrementalAttrString = "incremental";
-    const char *ismapAttrString = "ismap";
-    const char *keytypeAttrString = "keytype";
-    const char *labelAttrString = "label";
-    const char *langAttrString = "lang";
-    const char *languageAttrString = "language";
-    const char *leftAttrString = "left";
-    const char *leftmarginAttrString = "leftmargin";
-    const char *linkAttrString = "link";
-    const char *longdescAttrString = "longdesc";
-    const char *loopAttrString = "loop";
-    const char *lowsrcAttrString = "lowsrc";
-    const char *marginheightAttrString = "marginheight";
-    const char *marginwidthAttrString = "marginwidth";
-    const char *maxAttrString = "max";
-    const char *maxlengthAttrString = "maxlength";
-    const char *mayscriptAttrString = "mayscript";
-    const char *mediaAttrString = "media";
-    const char *methodAttrString = "method";
-    const char *minAttrString = "min";
-    const char *multipleAttrString = "multiple";
-    const char *nameAttrString = "name";
-    const char *nohrefAttrString = "nohref";
-    const char *noresizeAttrString = "noresize";
-    const char *noshadeAttrString = "noshade";
-    const char *nowrapAttrString = "nowrap";
-    const char *objectAttrString = "object";
-    const char *onabortAttrString = "onabort";
-    const char *onbeforecopyAttrString = "onbeforecopy";
-    const char *onbeforecutAttrString = "onbeforecut";
-    const char *onbeforepasteAttrString = "onbeforepaste";
-    const char *onbeforeunloadAttrString = "onbeforeunload";
-    const char *onblurAttrString = "onblur";
-    const char *onchangeAttrString = "onchange";
-    const char *onclickAttrString = "onclick";
-    const char *oncontextmenuAttrString = "oncontextmenu";
-    const char *oncopyAttrString = "oncopy";
-    const char *oncutAttrString = "oncut";
-    const char *ondblclickAttrString = "ondblclick";
-    const char *ondragAttrString = "ondrag";
-    const char *ondragendAttrString = "ondragend";
-    const char *ondragenterAttrString = "ondragenter";
-    const char *ondragleaveAttrString = "ondragleave";
-    const char *ondragoverAttrString = "ondragover";
-    const char *ondragstartAttrString = "ondragstart";
-    const char *ondropAttrString = "ondrop";
-    const char *onerrorAttrString = "onerror";
-    const char *onfocusAttrString = "onfocus";
-    const char *oninputAttrString = "oninput";
-    const char *onkeydownAttrString = "onkeydown";
-    const char *onkeypressAttrString = "onkeypress";
-    const char *onkeyupAttrString = "onkeyup";
-    const char *onloadAttrString = "onload";
-    const char *onmousedownAttrString = "onmousedown";
-    const char *onmousemoveAttrString = "onmousemove";
-    const char *onmouseoutAttrString = "onmouseout";
-    const char *onmouseoverAttrString = "onmouseover";
-    const char *onmouseupAttrString = "onmouseup";
-    const char *onmousewheelAttrString = "onmousewheel";
-    const char *onpasteAttrString = "onpaste";
-    const char *onresetAttrString = "onreset";
-    const char *onresizeAttrString = "onresize";
-    const char *onscrollAttrString = "onscroll";
-    const char *onsearchAttrString = "onsearch";
-    const char *onselectAttrString = "onselect";
-    const char *onselectstartAttrString = "onselectstart";
-    const char *onsubmitAttrString = "onsubmit";
-    const char *onunloadAttrString = "onunload";
-    const char *pagexAttrString = "pagex";
-    const char *pageyAttrString = "pagey";
-    const char *placeholderAttrString = "placeholder";
-    const char *plainAttrString = "plain";
-    const char *pluginpageAttrString = "pluginpage";
-    const char *pluginspageAttrString = "pluginspage";
-    const char *pluginurlAttrString = "pluginurl";
-    const char *precisionAttrString = "precision";
-    const char *profileAttrString = "profile";
-    const char *promptAttrString = "prompt";
-    const char *readonlyAttrString = "readonly";
-    const char *relAttrString = "rel";
-    const char *resultsAttrString = "results";
-    const char *revAttrString = "rev";
-    const char *rowsAttrString = "rows";
-    const char *rowspanAttrString = "rowspan";
-    const char *rulesAttrString = "rules";
-    const char *schemeAttrString = "scheme";
-    const char *scopeAttrString = "scope";
-    const char *scrollamountAttrString = "scrollamount";
-    const char *scrolldelayAttrString = "scrolldelay";
-    const char *scrollingAttrString = "scrolling";
-    const char *selectedAttrString = "selected";
-    const char *shapeAttrString = "shape";
-    const char *sizeAttrString = "size";
-    const char *soundstartAttrString = "soundstart";
-    const char *spanAttrString = "span";
-    const char *srcAttrString = "src";
-    const char *standbyAttrString = "standby";
-    const char *startAttrString = "start";
-    const char *styleAttrString = "style";
-    const char *summaryAttrString = "summary";
-    const char *tabindexAttrString = "tabindex";
-    const char *tableborderAttrString = "tableborder";
-    const char *targetAttrString = "target";
-    const char *telbookAttrString = "telbook";
-    const char *textAttrString = "text";
-    const char *titleAttrString = "title";
-    const char *topAttrString = "top";
-    const char *topmarginAttrString = "topmargin";
-    const char *truespeedAttrString = "truespeed";
-    const char *typeAttrString = "type";
-    const char *usemapAttrString = "usemap";
-    const char *valignAttrString = "valign";
-    const char *valueAttrString = "value";
-    const char *valuetypeAttrString = "valuetype";
-    const char *versionAttrString = "version";
-    const char *viewsourceAttrString = "viewsource";
-    const char *vlinkAttrString = "vlink";
-    const char *volumeAttrString = "volume";
-    const char *vspaceAttrString = "vspace";
-    const char *widthAttrString = "width";
-    const char *wrapAttrString = "wrap";
+
     accept_charsetAttrString = "accept-charset";
     http_equivAttrString = "http-equiv";
 
@@ -1247,5 +1249,308 @@
     new ((void*)&wrapAttr) QualifiedName(nullAtom, wrapAttrString, nullAtom);
 }
 
-} }
+void remove()
+{
+    
+    xhtmlNSString = "";
+    aTagString = "";
+    abbrTagString = "";
+
+    acronymTagString = "";
+    addressTagString = "";
+    appletTagString = "";
+    areaTagString = "";
+    bTagString = "";
+    baseTagString = "";
+    basefontTagString = "";
+    bdoTagString = "";
+    bgsoundTagString = "";
+    bigTagString = "";
+    blockquoteTagString = "";
+    bodyTagString = "";
+    brTagString = "";
+    buttonTagString = "";
+    canvasTagString = "";
+    captionTagString = "";
+    centerTagString = "";
+    citeTagString = "";
+    codeTagString = "";
+    colTagString = "";
+    colgroupTagString = "";
+    ddTagString = "";
+    delTagString = "";
+    dfnTagString = "";
+    dirTagString = "";
+    divTagString = "";
+    dlTagString = "";
+    dtTagString = "";
+    emTagString = "";
+    embedTagString = "";
+    fieldsetTagString = "";
+    fontTagString = "";
+    formTagString = "";
+    frameTagString = "";
+    framesetTagString = "";
+    headTagString = "";
+    h1TagString = "";
+    h2TagString = "";
+    h3TagString = "";
+    h4TagString = "";
+    h5TagString = "";
+    h6TagString = "";
+    hrTagString = "";
+    htmlTagString = "";
+    iTagString = "";
+    iframeTagString = "";
+    imageTagString = "";
+    imgTagString = "";
+    inputTagString = "";
+    insTagString = "";
+    isindexTagString = "";
+    kbdTagString = "";
+    keygenTagString = "";
+    labelTagString = "";
+    layerTagString = "";
+    legendTagString = "";
+    liTagString = "";
+    linkTagString = "";
+    listingTagString = "";
+    mapTagString = "";
+    marqueeTagString = "";
+    menuTagString = "";
+    metaTagString = "";
+    nobrTagString = "";
+    noembedTagString = "";
+    noframesTagString = "";
+    nolayerTagString = "";
+    noscriptTagString = "";
+    objectTagString = "";
+    olTagString = "";
+    optgroupTagString = "";
+    optionTagString = "";
+    pTagString = "";
+    paramTagString = "";
+    plaintextTagString = "";
+    preTagString = "";
+    qTagString = "";
+    sTagString = "";
+    sampTagString = "";
+    scriptTagString = "";
+    selectTagString = "";
+    smallTagString = "";
+    spanTagString = "";
+    strikeTagString = "";
+    strongTagString = "";
+    styleTagString = "";
+    subTagString = "";
+    supTagString = "";
+    tableTagString = "";
+    tbodyTagString = "";
+    tdTagString = "";
+    textareaTagString = "";
+    tfootTagString = "";
+    thTagString = "";
+    theadTagString = "";
+    titleTagString = "";
+    trTagString = "";
+    ttTagString = "";
+    uTagString = "";
+    ulTagString = "";
+    varTagString = "";
+    wbrTagString = "";
+    xmpTagString = "";
 
+    abbrAttrString = "";
+    accept_charsetAttrString = "";
+    acceptAttrString = "";
+    accesskeyAttrString = "";
+    actionAttrString = "";
+    alignAttrString = "";
+    alinkAttrString = "";
+    altAttrString = "";
+    archiveAttrString = "";
+    autocompleteAttrString = "";
+    autosaveAttrString = "";
+    axisAttrString = "";
+    backgroundAttrString = "";
+    behaviorAttrString = "";
+    bgcolorAttrString = "";
+    bgpropertiesAttrString = "";
+    borderAttrString = "";
+    bordercolorAttrString = "";
+    cellpaddingAttrString = "";
+    cellspacingAttrString = "";
+    charAttrString = "";
+    challengeAttrString = "";
+    charoffAttrString = "";
+    charsetAttrString = "";
+    checkedAttrString = "";
+    cellborderAttrString = "";
+    citeAttrString = "";
+    classAttrString = "";
+    classidAttrString = "";
+    clearAttrString = "";
+    codeAttrString = "";
+    codebaseAttrString = "";
+    codetypeAttrString = "";
+    colorAttrString = "";
+    colsAttrString = "";
+    colspanAttrString = "";
+    compactAttrString = "";
+    compositeAttrString = "";
+    contentAttrString = "";
+    contenteditableAttrString = "";
+    coordsAttrString = "";
+    ctiAttrString = "";
+    dataAttrString = "";
+    datetimeAttrString = "";
+    declareAttrString = "";
+    deferAttrString = "";
+    dirAttrString = "";
+    directionAttrString = "";
+    directkeyAttrString = "";
+    disabledAttrString = "";
+    emailAttrString = "";
+    enctypeAttrString = "";
+    faceAttrString = "";
+    forAttrString = "";
+    frameAttrString = "";
+    frameborderAttrString = "";
+    headersAttrString = "";
+    heightAttrString = "";
+    hiddenAttrString = "";
+    hrefAttrString = "";
+    hreflangAttrString = "";
+    hspaceAttrString = "";
+    http_equivAttrString = "";
+    idAttrString = "";
+    incrementalAttrString = "";
+    ismapAttrString = "";
+    keytypeAttrString = "";
+    labelAttrString = "";
+    langAttrString = "";
+    languageAttrString = "";
+    leftAttrString = "";
+    leftmarginAttrString = "";
+    linkAttrString = "";
+    longdescAttrString = "";
+    loopAttrString = "";
+    lowsrcAttrString = "";
+    marginheightAttrString = "";
+    marginwidthAttrString = "";
+    maxAttrString = "";
+    maxlengthAttrString = "";
+    mayscriptAttrString = "";
+    mediaAttrString = "";
+    methodAttrString = "";
+    minAttrString = "";
+    multipleAttrString = "";
+    nameAttrString = "";
+    nohrefAttrString = "";
+    noresizeAttrString = "";
+    noshadeAttrString = "";
+    nowrapAttrString = "";
+    objectAttrString = "";
+    onabortAttrString = "";
+    onbeforecopyAttrString = "";
+    onbeforecutAttrString = "";
+    onbeforepasteAttrString = "";
+    onbeforeunloadAttrString = "";
+    onblurAttrString = "";
+    onchangeAttrString = "";
+    onclickAttrString = "";
+    oncontextmenuAttrString = "";
+    oncopyAttrString = "";
+    oncutAttrString = "";
+    ondblclickAttrString = "";
+    ondragAttrString = "";
+    ondragendAttrString = "";
+    ondragenterAttrString = "";
+    ondragleaveAttrString = "";
+    ondragoverAttrString = "";
+    ondragstartAttrString = "";
+    ondropAttrString = "";
+    onerrorAttrString = "";
+    onfocusAttrString = "";
+    oninputAttrString = "";
+    onkeydownAttrString = "";
+    onkeypressAttrString = "";
+    onkeyupAttrString = "";
+    onloadAttrString = "";
+    onmousedownAttrString = "";
+    onmousemoveAttrString = "";
+    onmouseoutAttrString = "";
+    onmouseoverAttrString = "";
+    onmouseupAttrString = "";
+    onmousewheelAttrString = "";
+    onpasteAttrString = "";
+    onresetAttrString = "";
+    onresizeAttrString = "";
+    onscrollAttrString = "";
+    onsearchAttrString = "";
+    onselectAttrString = "";
+    onselectstartAttrString = "";
+    onsubmitAttrString = "";
+    onunloadAttrString = "";
+    pagexAttrString = "";
+    pageyAttrString = "";
+    placeholderAttrString = "";
+    plainAttrString = "";
+    pluginpageAttrString = "";
+    pluginspageAttrString = "";
+    pluginurlAttrString = "";
+    precisionAttrString = "";
+    profileAttrString = "";
+    promptAttrString = "";
+    readonlyAttrString = "";
+    relAttrString = "";
+    resultsAttrString = "";
+    revAttrString = "";
+    rowsAttrString = "";
+    rowspanAttrString = "";
+    rulesAttrString = "";
+    schemeAttrString = "";
+    scopeAttrString = "";
+    scrollamountAttrString = "";
+    scrolldelayAttrString = "";
+    scrollingAttrString = "";
+    selectedAttrString = "";
+    shapeAttrString = "";
+    sizeAttrString = "";
+    soundstartAttrString = "";
+    spanAttrString = "";
+    srcAttrString = "";
+    standbyAttrString = "";
+    startAttrString = "";
+    styleAttrString = "";
+    summaryAttrString = "";
+    tabindexAttrString = "";
+    tableborderAttrString = "";
+    targetAttrString = "";
+    telbookAttrString = "";
+    textAttrString = "";
+    titleAttrString = "";
+    topAttrString = "";
+    topmarginAttrString = "";
+    truespeedAttrString = "";
+    typeAttrString = "";
+    usemapAttrString = "";
+    valignAttrString = "";
+    valueAttrString = "";
+    valuetypeAttrString = "";
+    versionAttrString = "";
+    viewsourceAttrString = "";
+    vlinkAttrString = "";
+    volumeAttrString = "";
+    vspaceAttrString = "";
+    widthAttrString = "";
+    wrapAttrString = "";
+
+	AtomicString::remove();
+
+	initialized = false;
+} //remove()
+
+} //HTMLNames
+
+} //WebCore
--- a/webengine/osswebengine/DerivedSources/WebCore/HTMLNames.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/DerivedSources/WebCore/HTMLNames.h	Fri Jul 03 15:54:40 2009 +0100
@@ -340,6 +340,7 @@
 
 void init();
 
+void remove();
 } }
 
 #endif
--- a/webengine/osswebengine/DerivedSources/WebCore/XMLNames.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/DerivedSources/WebCore/XMLNames.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -48,6 +48,13 @@
 DEFINE_GLOBAL(QualifiedName, langAttr, nullAtom, "lang", xmlNamespaceURI);
 DEFINE_GLOBAL(QualifiedName, spaceAttr, nullAtom, "space", xmlNamespaceURI);
 
+static bool initialized = false; 
+// Attributes 
+static const char *xmlNSString = "http://www.w3.org/XML/1998/namespace"; 
+static const char *baseAttrString = "base"; 
+static const char *langAttrString = "lang"; 
+static const char *spaceAttrString = "space"; 
+
 
 WebCore::QualifiedName** getXMLAttrs(size_t* size)
 {
@@ -62,7 +69,6 @@
 
 void init()
 {
-    static bool initialized = false;
     if (initialized)
         return;
     initialized = true;
@@ -70,20 +76,30 @@
     // Use placement new to initialize the globals.
     
     AtomicString::init();
-    AtomicString xmlNS("http://www.w3.org/XML/1998/namespace");
+    AtomicString xmlNS(xmlNSString);
 
     // Namespace
     new ((void*)&xmlNamespaceURI) AtomicString(xmlNS);
 
-    // Attributes
-    const char *baseAttrString = "base";
-    const char *langAttrString = "lang";
-    const char *spaceAttrString = "space";
-
     new ((void*)&baseAttr) QualifiedName(nullAtom, baseAttrString, xmlNS);
     new ((void*)&langAttr) QualifiedName(nullAtom, langAttrString, xmlNS);
     new ((void*)&spaceAttr) QualifiedName(nullAtom, spaceAttrString, xmlNS);
 }
 
+void remove() 
+{ 
+    if( initialized ) {
+        xmlNamespaceURI.~AtomicString();
+        baseAttr.~QualifiedName();
+        langAttr.~QualifiedName();
+        spaceAttr.~QualifiedName();
+    }
+        xmlNSString = ""; 
+        baseAttrString = ""; 
+        langAttrString = ""; 
+        spaceAttrString = ""; 
+        initialized = false; 
+} 
+
 } }
 
--- a/webengine/osswebengine/DerivedSources/WebCore/XMLNames.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/DerivedSources/WebCore/XMLNames.h	Fri Jul 03 15:54:40 2009 +0100
@@ -48,6 +48,7 @@
 #endif
 
 void init();
+void remove();
 
 } }
 
--- a/webengine/osswebengine/JavaScriptCore/JavaScriptCore.pri	Fri May 08 08:25:06 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-# JavaScriptCore - Qt4 build info
-VPATH += $$PWD
-
-INCLUDEPATH += tmp
-INCLUDEPATH += $$PWD $$PWD/kjs $$PWD/bindings $$PWD/bindings/c $$PWD/wtf
-DEFINES -= KJS_IDENTIFIER_HIDE_GLOBALS 
-qt-port:INCLUDEPATH += $$PWD/bindings/qt
-qt-port:DEFINES += BUILDING_QT__
-gtk-port:DEFINES += BUILDING_GTK__
-
-win32-msvc*: INCLUDEPATH += $$PWD/os-win32
-
-include(pcre/pcre.pri)
-
-LUT_FILES += \
-    kjs/date_object.cpp \
-    kjs/number_object.cpp \
-    kjs/string_object.cpp \
-    kjs/array_object.cpp \
-    kjs/math_object.cpp \
-    kjs/regexp_object.cpp
-
-KEYWORDLUT_FILES += \
-    kjs/keywords.table
-
-KJSBISON += \
-    kjs/grammar.y
-
-gtk-port: SOURCES += wtf/TCSystemAlloc.cpp
-
-SOURCES += \
-    wtf/Assertions.cpp \
-    wtf/HashTable.cpp \
-    wtf/FastMalloc.cpp \
-    bindings/NP_jsobject.cpp \
-    bindings/npruntime.cpp \
-    bindings/runtime_array.cpp \
-    bindings/runtime.cpp \
-    bindings/runtime_method.cpp \
-    bindings/runtime_object.cpp \
-    bindings/runtime_root.cpp \
-    bindings/c/c_class.cpp \
-    bindings/c/c_instance.cpp \
-    bindings/c/c_runtime.cpp \
-    bindings/c/c_utility.cpp \
-    API/JSBase.cpp \
-    API/JSCallbackConstructor.cpp \
-    API/JSCallbackFunction.cpp \
-    API/JSCallbackObject.cpp \
-    API/JSClassRef.cpp \
-    API/JSContextRef.cpp \
-    API/JSObjectRef.cpp \
-    API/JSStringRef.cpp \
-    API/JSValueRef.cpp \
-    kjs/DateMath.cpp \
-    kjs/JSWrapperObject.cpp \
-    kjs/PropertyNameArray.cpp \
-    kjs/array_object.cpp \
-    kjs/bool_object.cpp \
-    kjs/collector.cpp \
-    kjs/CommonIdentifiers.cpp \
-    kjs/Context.cpp \
-    kjs/date_object.cpp \
-    kjs/debugger.cpp \
-    kjs/dtoa.cpp \
-    kjs/error_object.cpp \
-    kjs/ExecState.cpp \
-    kjs/fpconst.cpp \
-    kjs/function.cpp \
-    kjs/function_object.cpp \
-    kjs/identifier.cpp \
-    kjs/internal.cpp \
-    kjs/interpreter.cpp \
-    kjs/JSImmediate.cpp \
-    kjs/JSLock.cpp \
-    kjs/lexer.cpp \
-    kjs/list.cpp \
-    kjs/lookup.cpp \
-    kjs/math_object.cpp \
-    kjs/nodes.cpp \
-    kjs/nodes2string.cpp \
-    kjs/number_object.cpp \
-    kjs/object.cpp \
-    kjs/object_object.cpp \
-    kjs/operations.cpp \
-    kjs/Parser.cpp \
-    kjs/property_map.cpp \
-    kjs/property_slot.cpp \
-    kjs/regexp.cpp \
-    kjs/regexp_object.cpp \
-    kjs/scope_chain.cpp \
-    kjs/string_object.cpp \
-    kjs/ustring.cpp \
-    kjs/value.cpp
-
-qt-port:SOURCES += \
-    bindings/qt/qt_class.cpp \
-    bindings/qt/qt_instance.cpp \
-    bindings/qt/qt_runtime.cpp
-
-
-# GENERATOR 1-A: LUT creator
-lut.output = tmp/${QMAKE_FILE_BASE}.lut.h
-lut.commands = perl $$PWD/kjs/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT}
-lut.depend = ${QMAKE_FILE_NAME}
-lut.input = LUT_FILES
-lut.CONFIG += no_link
-QMAKE_EXTRA_COMPILERS += lut
-
-# GENERATOR 1-B: particular LUT creator (for 1 file only)
-keywordlut.output = tmp/lexer.lut.h
-keywordlut.commands = perl $$PWD/kjs/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT}
-keywordlut.depend = ${QMAKE_FILE_NAME}
-keywordlut.input = KEYWORDLUT_FILES
-keywordlut.CONFIG += no_link
-QMAKE_EXTRA_COMPILERS += keywordlut
-
-# GENERATOR 2: bison grammar
-kjsbison.output = tmp/${QMAKE_FILE_BASE}.cpp
-kjsbison.commands = bison -d -p kjsyy ${QMAKE_FILE_NAME} -o ${QMAKE_FILE_BASE}.tab.c && $(MOVE) ${QMAKE_FILE_BASE}.tab.c ${QMAKE_FILE_OUT} && $(MOVE) ${QMAKE_FILE_BASE}.tab.h tmp/${QMAKE_FILE_BASE}.h
-kjsbison.depend = ${QMAKE_FILE_NAME}
-kjsbison.input = KJSBISON
-kjsbison.variable_out = GENERATED_SOURCES
-kjsbison.dependency_type = TYPE_C
-kjsbison.CONFIG = target_predeps
-kjsbison.clean = ${QMAKE_FILE_OUT} tmp/${QMAKE_FILE_BASE}.h
-QMAKE_EXTRA_COMPILERS += kjsbison
--- a/webengine/osswebengine/JavaScriptCore/bindings/c/c_class.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/bindings/c/c_class.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -53,8 +53,25 @@
 }
 
 typedef HashMap<NPClass*, CClass*> ClassesByIsAMap;
+typedef HashMap<NPClass*, CClass*>::iterator ClassesByIsAMapIt;
 static ClassesByIsAMap* classesByIsA = 0;
 
+struct cleanupClassesByIsA {
+    ~cleanupClassesByIsA() {
+        if( classesByIsA ) {
+            ClassesByIsAMapIt end = classesByIsA->end();
+            for( ClassesByIsAMapIt it=classesByIsA->begin(); it!=end; ++it ) {
+                CClass* obj = (*it).second;
+                delete obj;
+            }
+            classesByIsA->clear();
+            delete classesByIsA;
+            classesByIsA = 0;
+        }
+    }
+};
+struct cleanupClassesByIsA cleanupClassIsAHash;
+
 CClass* CClass::classForIsA(NPClass* isa)
 {
     if (!classesByIsA)
--- a/webengine/osswebengine/JavaScriptCore/bindings/npruntime.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/bindings/npruntime.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -41,14 +41,26 @@
 
 typedef HashMap<RefPtr<KJS::UString::Rep>, PrivateIdentifier*> StringIdentifierMap;
 
+static StringIdentifierMap* stringIdentifierMap = 0;
+    
 static StringIdentifierMap* getStringIdentifierMap()
 {
-    static StringIdentifierMap* stringIdentifierMap = 0;
     if (!stringIdentifierMap)
         stringIdentifierMap = new StringIdentifierMap;
     return stringIdentifierMap;
 }
 
+struct cleanupStringIdentifier {
+    ~cleanupStringIdentifier() {
+        if( stringIdentifierMap ) {
+            stringIdentifierMap->clear();
+            delete stringIdentifierMap;
+            stringIdentifierMap = 0;
+        }
+    }
+};
+struct cleanupStringIdentifier cleanup;
+
 typedef HashMap<int, PrivateIdentifier*> IntIdentifierMap;
 
 static IntIdentifierMap* getIntIdentifierMap()
--- a/webengine/osswebengine/JavaScriptCore/bindings/testbindings.pro	Fri May 08 08:25:06 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-QT -= gui
-
-include(../../WebKit.pri)
-INCLUDEPATH += .. ../kjs .
-qt-port:INCLUDEPATH += bindings/qt
-
-SOURCES += testqtbindings.cpp
-
--- a/webengine/osswebengine/JavaScriptCore/kjs/CommonIdentifiers.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/kjs/CommonIdentifiers.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -34,9 +34,18 @@
 {
 }
 
+static CommonIdentifiers* sharedInstance=0;
+    
+struct cleanupCommonIdentifiers {
+    ~cleanupCommonIdentifiers() {
+        delete sharedInstance;
+        sharedInstance=0;
+    }
+};
+struct cleanupCommonIdentifiers cleanupIdentifiers;
+
 CommonIdentifiers* CommonIdentifiers::shared()
 {
-    static CommonIdentifiers* sharedInstance;
     if (!sharedInstance) {
         JSLock lock;
         sharedInstance = new CommonIdentifiers;
--- a/webengine/osswebengine/JavaScriptCore/kjs/Parser.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/kjs/Parser.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -36,9 +36,19 @@
 
 int Parser::sid = 0;
 
-static RefPtr<ProgramNode>* progNode;
+static RefPtr<ProgramNode>* progNode = 0;
 static HashSet<Node*>* nodeCycles;
 
+struct cleanupProgNode {
+    ~cleanupProgNode() {
+        if( progNode ) {
+            delete progNode;
+            progNode=0;
+        }
+    }
+};
+static cleanupProgNode cleanProgNode;
+
 void Parser::noteNodeCycle(Node *node)
 {
     if (!nodeCycles)
--- a/webengine/osswebengine/JavaScriptCore/kjs/collector.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/kjs/collector.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -79,7 +79,7 @@
 const size_t MIN_ARRAY_SIZE = 14;
 const size_t GROWTH_FACTOR = 2;
 const size_t LOW_WATER_FACTOR = 4;
-const size_t ALLOCATIONS_PER_COLLECTION = 4000;
+const size_t ALLOCATIONS_PER_COLLECTION = 1000;
 
 enum OperationInProgress { NoOperation, Allocation, Collection };
 
@@ -102,6 +102,7 @@
       for(int i=0; i<usedBlocks; ++i) {
           freeBlock(blocks[i]);
       }
+      fastFree(blocks);
   }
 };
 
--- a/webengine/osswebengine/JavaScriptCore/kjs/date_object.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/kjs/date_object.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -66,6 +66,22 @@
 static double parseDate(const UString&);
 static double timeClip(double);
 
+
+static const Identifier* parsePropertyName = 0;
+static const Identifier* UTCPropertyName = 0;
+
+struct cleanupStaticDateObject { 
+    ~cleanupStaticDateObject()  
+        { 
+        delete parsePropertyName; 
+        delete UTCPropertyName; 
+ 
+        parsePropertyName = 0; 
+        UTCPropertyName = 0; 
+    } 
+}; 
+static cleanupStaticDateObject deleteStaticDateObject; 
+
 inline int gmtoffset(const GregorianDateTime& t)
 {
     return t.utcOffset;
@@ -625,8 +641,10 @@
                              DatePrototype *dateProto)
   : InternalFunctionImp(funcProto, dateProto->classInfo()->className )
 {
-  static const Identifier* parsePropertyName = new Identifier("parse");
-  static const Identifier* UTCPropertyName = new Identifier("UTC");
+	if(!parsePropertyName)
+        parsePropertyName = new Identifier("parse");
+    if(!UTCPropertyName)
+        UTCPropertyName = new Identifier("UTC");
 
   putDirect(exec->propertyNames().prototype, dateProto, DontEnum|DontDelete|ReadOnly);
   putDirectFunction(new DateObjectFuncImp(exec, funcProto, DateObjectFuncImp::Parse, 1, *parsePropertyName), DontEnum);
--- a/webengine/osswebengine/JavaScriptCore/kjs/function_object.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/kjs/function_object.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -36,12 +36,28 @@
 
 using namespace KJS;
 
+static const Identifier* applyPropertyName = 0; 
+static const Identifier* callPropertyName = 0; 
+	 
+struct cleanupStaticFunctionObject { 
+	~cleanupStaticFunctionObject()  
+	{ 
+	delete applyPropertyName; 
+	delete callPropertyName; 
+
+	applyPropertyName = 0; 
+	callPropertyName = 0; 
+	} 
+}; 
+static cleanupStaticFunctionObject deleteStaticFunctionObject; 
 // ------------------------------ FunctionPrototype -------------------------
 
 FunctionPrototype::FunctionPrototype(ExecState *exec)
 {
-  static const Identifier* applyPropertyName = new Identifier("apply");
-  static const Identifier* callPropertyName = new Identifier("call");
+  if(!applyPropertyName)
+      applyPropertyName = new Identifier("apply");
+  if(!callPropertyName)
+      callPropertyName = new Identifier("call");
 
   putDirect(exec->propertyNames().length, jsNumber(0), DontDelete | ReadOnly | DontEnum);
   putDirectFunction(new FunctionProtoFunc(exec, this, FunctionProtoFunc::ToString, 0, exec->propertyNames().toString), DontEnum);
--- a/webengine/osswebengine/JavaScriptCore/kjs/identifier.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/kjs/identifier.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -51,6 +51,17 @@
 typedef HashSet<UString::Rep *> IdentifierTable;
 static IdentifierTable *table;
 
+struct cleanupIdentifier {
+    ~cleanupIdentifier() {
+        if( table ) {
+            table->clear();
+            delete table;
+            table=0;
+        }
+    }
+};
+static cleanupIdentifier cleanIdentifier;
+
 static inline IdentifierTable& identifierTable()
 {
     ASSERT(JSLock::lockCount() > 0);
--- a/webengine/osswebengine/JavaScriptCore/kjs/interpreter.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/kjs/interpreter.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -80,12 +80,26 @@
 Interpreter* Interpreter::s_hook = 0;
     
 typedef HashMap<JSObject*, Interpreter*> InterpreterMap;
+static InterpreterMap* map = 0;
 static inline InterpreterMap &interpreterMap()
 {
-    static InterpreterMap* map = new InterpreterMap;
+    if(!map )
+     map = new InterpreterMap;
     return* map;
 }
     
+struct cleanupInterpreterMap {
+    ~cleanupInterpreterMap() {
+    	if(map)
+    		{
+    		map->clear();
+    		delete map;
+    		map = NULL;
+    		}
+    }
+};
+static cleanupInterpreterMap deleteInterpreterMap;
+
 EXPORT
 Interpreter::Interpreter(JSObject* globalObject)
     : m_globalExec(this, 0)
@@ -145,7 +159,11 @@
         // This was the last interpreter
         s_hook = 0;
     }
+
     interpreterMap().remove(m_globalObject);
+
+    // It's likely that destroying the interpreter has created a lot of garbage. 
+    Collector::collect(); 
 }
 
 EXPORT
--- a/webengine/osswebengine/JavaScriptCore/kjs/lexer.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/kjs/lexer.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -60,6 +60,14 @@
 
 static Lexer* currLexer = 0;
 
+struct cleanupLexer {
+    ~cleanupLexer() {
+        delete currLexer;
+        currLexer=0;
+    }
+};
+static cleanupLexer clearLexer;
+
 static bool isDecimalDigit(int);
 
 Lexer::Lexer()
--- a/webengine/osswebengine/JavaScriptCore/kjs/list.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/kjs/list.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -323,10 +323,23 @@
 
     return copy;
 }
+static List* staticEmptyList = 0;
+
+struct listCleaner {
+    ~listCleaner() {
+            delete staticEmptyList;
+            staticEmptyList = 0;
+    }
+};
+
+static listCleaner cleanList;
 
 const List& List::empty()
 {
-    static List* staticEmptyList = new List;
+		if(!staticEmptyList)
+			{
+    	staticEmptyList = new List;
+    	}
     return *staticEmptyList;
 }
 
--- a/webengine/osswebengine/JavaScriptCore/kjs/nodes.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/kjs/nodes.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -114,6 +114,21 @@
 static HashSet<Node*>* newNodes;
 static HashCountedSet<Node*>* nodeExtraRefCounts;
 
+struct cleanupNodes {
+    ~cleanupNodes() {
+    	if(nodeExtraRefCounts)
+    		nodeExtraRefCounts->clear();
+        delete nodeExtraRefCounts;
+        nodeExtraRefCounts = NULL;
+        
+        if(newNodes)
+            newNodes->clear();
+        delete newNodes;
+        newNodes = NULL;
+    }
+};
+static cleanupNodes deletenodeExtraRefCounts;
+
 Node::Node()
 {
 #ifndef NDEBUG
--- a/webengine/osswebengine/JavaScriptCore/kjs/object_object.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/kjs/object_object.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -28,18 +28,34 @@
 
 using namespace KJS;
 
+    static const Identifier* hasOwnPropertyPropertyName = 0;
+    static const Identifier* propertyIsEnumerablePropertyName = 0;
+    static const Identifier* isPrototypeOfPropertyName = 0;
+    static const Identifier* defineGetterPropertyName = 0;
+    static const Identifier* defineSetterPropertyName = 0;
+    static const Identifier* lookupGetterPropertyName = 0;
+    static const Identifier* lookupSetterPropertyName = 0;
+
+
 // ------------------------------ ObjectPrototype --------------------------------
 
 ObjectPrototype::ObjectPrototype(ExecState* exec, FunctionPrototype* funcProto)
   : JSObject() // [[Prototype]] is null
 {
-    static const Identifier* hasOwnPropertyPropertyName = new Identifier("hasOwnProperty");
-    static const Identifier* propertyIsEnumerablePropertyName = new Identifier("propertyIsEnumerable");
-    static const Identifier* isPrototypeOfPropertyName = new Identifier("isPrototypeOf");
-    static const Identifier* defineGetterPropertyName = new Identifier("__defineGetter__");
-    static const Identifier* defineSetterPropertyName = new Identifier("__defineSetter__");
-    static const Identifier* lookupGetterPropertyName = new Identifier("__lookupGetter__");
-    static const Identifier* lookupSetterPropertyName = new Identifier("__lookupSetter__");
+	if(!hasOwnPropertyPropertyName)
+		hasOwnPropertyPropertyName = new Identifier("hasOwnProperty");
+	if(!propertyIsEnumerablePropertyName)
+		propertyIsEnumerablePropertyName = new Identifier("propertyIsEnumerable");
+	if(!isPrototypeOfPropertyName)
+		isPrototypeOfPropertyName = new Identifier("isPrototypeOf");
+	if(!defineGetterPropertyName)
+		defineGetterPropertyName = new Identifier("__defineGetter__");
+	if(!defineSetterPropertyName)
+		defineSetterPropertyName = new Identifier("__defineSetter__");
+	if(!lookupGetterPropertyName)
+		lookupGetterPropertyName = new Identifier("__lookupGetter__");
+	if(!lookupSetterPropertyName)
+		lookupSetterPropertyName = new Identifier("__lookupSetter__");
 
     putDirectFunction(new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::ToString, 0, exec->propertyNames().toString), DontEnum);
     putDirectFunction(new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::ToLocaleString, 0, exec->propertyNames().toLocaleString), DontEnum);
@@ -192,3 +208,26 @@
     return construct(exec, args);
 }
 
+struct cleanupStaticObjectObject {
+    ~cleanupStaticObjectObject() 
+	{
+	delete hasOwnPropertyPropertyName;
+	delete propertyIsEnumerablePropertyName;
+	delete isPrototypeOfPropertyName;
+	delete defineGetterPropertyName;
+	delete defineSetterPropertyName;
+	delete lookupGetterPropertyName;
+	delete lookupSetterPropertyName;
+
+	hasOwnPropertyPropertyName = 0;
+	propertyIsEnumerablePropertyName = 0;
+	isPrototypeOfPropertyName = 0;
+	defineGetterPropertyName = 0;
+	defineSetterPropertyName = 0;
+	lookupGetterPropertyName = 0;
+	lookupSetterPropertyName = 0;
+
+    }
+};
+static cleanupStaticObjectObject deleteStaticObjectObject;
+
--- a/webengine/osswebengine/JavaScriptCore/kjs/regexp_object.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/kjs/regexp_object.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -43,13 +43,31 @@
 
 const ClassInfo RegExpPrototype::info = {"RegExpPrototype", 0, 0, 0};
 
+    static const Identifier* execPropertyName = 0; 
+    static const Identifier* testPropertyName = 0; 
+ 
+
+    struct cleanupStaticRegexpObject { 
+        ~cleanupStaticRegexpObject()  
+       { 
+          delete execPropertyName; 
+          delete testPropertyName; 
+	 
+          execPropertyName = 0; 
+          testPropertyName = 0; 
+        } 
+   }; 
+   static cleanupStaticRegexpObject deleteStaticRegexpObject; 
+
 RegExpPrototype::RegExpPrototype(ExecState *exec,
                                        ObjectPrototype *objProto,
                                        FunctionPrototype *funcProto)
   : JSObject(objProto)
 {
-  static const Identifier* execPropertyName = new Identifier("exec");
-  static const Identifier* testPropertyName = new Identifier("test");
+  if(!execPropertyName)
+		execPropertyName = new Identifier("exec");
+  if(!testPropertyName)
+        testPropertyName = new Identifier("test");
 
   putDirectFunction(new RegExpProtoFunc(exec, funcProto, RegExpProtoFunc::Exec, 0, *execPropertyName), DontEnum);
   putDirectFunction(new RegExpProtoFunc(exec, funcProto, RegExpProtoFunc::Test, 0, *testPropertyName), DontEnum);
--- a/webengine/osswebengine/JavaScriptCore/kjs/testkjs.pro	Fri May 08 08:25:06 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-TEMPLATE = app
-TARGET = testkjs
-DESTDIR = ..
-SOURCES = testkjs.cpp
-QT -= gui
-DEFINES -= KJS_IDENTIFIER_HIDE_GLOBALS 
-INCLUDEPATH += $$PWD/.. $$PWD $$PWD/../bindings $$PWD/../bindings/c $$PWD/../wtf
-qt-port:DEFINES += BUILDING_QT__
-#qt-port:LIBS += -L$$OUTPUT_DIR/lib -lQtWebKit
-gtk-port {
-    QMAKE_CXXFLAGS += $$system(icu-config --cppflags)
-    LIBS += $$system(icu-config --ldflags)
-}
-QMAKE_RPATHDIR += $$OUTPUT_DIR/lib
-
-isEmpty(OUTPUT_DIR):OUTPUT_DIR=$$PWD/../..
-include($$OUTPUT_DIR/config.pri)
-
-include($$PWD/../JavaScriptCore.pri)
-
-# Hack!  Fix this.
-SOURCES -= API/JSBase.cpp \
-    API/JSCallbackConstructor.cpp \
-    API/JSCallbackFunction.cpp \
-    API/JSCallbackObject.cpp \
-    API/JSClassRef.cpp \
-    API/JSContextRef.cpp \
-    API/JSObjectRef.cpp \
-    API/JSStringRef.cpp \
-    API/JSValueRef.cpp
-
--- a/webengine/osswebengine/JavaScriptCore/kjs/ustring.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/kjs/ustring.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -909,14 +909,21 @@
   return statBuffer;
 }
 
-#ifdef KJS_DEBUG_MEM
+struct cleanupUString {
+    ~cleanupUString() {
+        UString::globalClear();
+    }
+};
+static cleanupUString clearGlobal;
+
+//#ifdef KJS_DEBUG_MEM
 void UString::globalClear()
 {
   delete [] statBuffer;
   statBuffer = 0;
   statBufferSize = 0;
 }
-#endif
+//#endif
 
 EXPORT
 UString &UString::operator=(const char *c)
--- a/webengine/osswebengine/JavaScriptCore/kjs/ustring.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/JavaScriptCore/kjs/ustring.h	Fri Jul 03 15:54:40 2009 +0100
@@ -218,7 +218,7 @@
     /**
      * Destructor.
      */
-    ~UString() {}
+    ~UString() {m_rep=0;}
 
     /**
      * Constructs a string from an int.
@@ -377,12 +377,12 @@
      * Static instance of a null string.
      */
     static const UString &null();
-#ifdef KJS_DEBUG_MEM
+//#ifdef KJS_DEBUG_MEM
     /**
      * Clear statically allocated resources.
      */
     static void globalClear();
-#endif
+//#endif
 
     Rep* rep() const { return m_rep.get(); }
     UString(PassRefPtr<Rep> r) : m_rep(r) { ASSERT(m_rep); }
--- a/webengine/osswebengine/JavaScriptCore/pcre/dftables.pro	Fri May 08 08:25:06 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-TEMPLATE = app
-CONFIG += console
-CONFIG -= app_bundle qt
-SOURCES = dftables.c
-TARGET = dftables
-DESTDIR = tmp
-
-INCLUDEPATH += $$PWD/../wtf
-
-gtk-port {
-  DEFINES += BUILDING_GTK__ BUILDING_CAIRO__
-} else {
-  DEFINES += BUILDING_QT__
-}
-
--- a/webengine/osswebengine/JavaScriptCore/pcre/pcre.pri	Fri May 08 08:25:06 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-# Perl Compatible Regular Expressions - Qt4 build info
-VPATH += $$PWD
-INCLUDEPATH += $$PWD $$OUTPUT_DIR/JavaScriptCore/kjs/tmp
-
-SOURCES += \
-    pcre_get.c \
-    pcre_refcount.c \
-    pcre_ucp_findchar.c \
-    pcre_compile.c \
-    pcre_globals.c \
-    pcre_config.c \
-    pcre_version.c \
-    pcre_info.c \
-    pcre_study.c \
-    pcre_exec.c \
-    pcre_xclass.c \
-    pcre_tables.c \
-    pcre_maketables.c \
-    pcre_try_flipped.c \
-    pcre_ord2utf8.c \
-    pcre_fullinfo.c
-
-CTGENFILE += \
-    dftables.c
-
-
-# GENERATOR: "chartables.c": compile and execute the chartables generator (and add it to sources)
-ctgen.output = tmp/chartables.c
-ctgen.commands = $$OUTPUT_DIR/JavaScriptCore/pcre/tmp/dftables ${QMAKE_FILE_OUT}
-ctgen.input = CTGENFILE
-ctgen.CONFIG += target_predeps no_link
-ctgen.variable_out = GENERATED_SOURCES
-ctgen.dependency_type = TYPE_C
-ctgen.clean = ${QMAKE_FILE_OUT} tmp/${QMAKE_FILE_BASE}
-QMAKE_EXTRA_COMPILERS += ctgen
--- a/webengine/osswebengine/MemoryManager/Group/MemManTest.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/MemoryManager/Group/MemManTest.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -88,5 +88,8 @@
 STATICLIBRARY		kwq.lib KHTML.lib
 
 
-LANGUAGE_IDS
-
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
--- a/webengine/osswebengine/MemoryManager/Src/MemoryManager.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/MemoryManager/Src/MemoryManager.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -31,6 +31,17 @@
 //  initializing a global memory pool.
 static CMemoryPool *s_pool = 0;
 
+struct cleanupMemoryPool {
+    ~cleanupMemoryPool() {
+    	if(s_pool)
+    		{
+    		delete s_pool;
+    		s_pool = NULL;
+    		}
+    }
+};
+static cleanupMemoryPool deleteMemoryPool;
+
 //-----------------------------------------------------------------------------
 // Pool() - a utility function for accessing the right memory pool
 //-----------------------------------------------------------------------------
--- a/webengine/osswebengine/WebCore/WebCore.pro	Fri May 08 08:25:06 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1561 +0,0 @@
-# -*- Mode:makefile -*-
-# WebCore - qmake build info
-CONFIG += building-libs
-# do not use implicit rules in nmake Makefiles to avoid the clash
-# of API/Node.c and dom/Node.cpp
-CONFIG += no_batch
-include($$PWD/../WebKit.pri)
-gtk-port:LIBS -= -lWebKitGtk
-
-TEMPLATE = lib
-qt-port:TARGET = QtWebKit
-gtk-port:TARGET = WebKitGtk
-OBJECTS_DIR = tmp
-OBJECTS_DIR_WTR = $$OBJECTS_DIR/
-win32-*: OBJECTS_DIR_WTR ~= s|/|\|
-INCLUDEPATH += tmp $$OUTPUT_DIR/WebCore/tmp
-
-DESTDIR = $$OUTPUT_DIR/lib
-DEPENDPATH += css dom loader editing history html \
-	loader page platform platform/graphics rendering xml
-
-include($$OUTPUT_DIR/config.pri)
-
-CONFIG -= warn_on
-*-g++*:QMAKE_CXXFLAGS += -Wreturn-type -fno-strict-aliasing
-#QMAKE_CXXFLAGS += -Wall -Wno-undef -Wno-unused-parameter
-
-contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
-unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions
-
-linux-*: DEFINES += HAVE_STDINT_H
-freebsd-*: DEFINES += HAVE_PTHREAD_NP_H
-
-# PRE-BUILD: make the required config.h file
-#config_h.target = config.h
-#config_h.commands = cp config.h.qmake config.h
-#config_h.depends = config.h.qmake
-#QMAKE_EXTRA_TARGETS += config_h
-#PRE_TARGETDEPS += config.h
-
-DEFINES += BUILD_WEBKIT
-
-win32-*: DEFINES += ENABLE_ICONDATABASE=0
-
-# Pick up 3rdparty libraries from INCLUDE/LIB just like with MSVC
-win32-g++ {
-    TMPPATH            = $$quote($$(INCLUDE))
-    QMAKE_INCDIR_POST += $$split(TMPPATH,";")
-    TMPPATH            = $$quote($$(LIB))
-    QMAKE_LIBDIR_POST += $$split(TMPPATH,";")
-}
-
-# Optional components (look for defs in config.h and included files!)
-!contains(DEFINES, ENABLE_ICONDATABASE=.): DEFINES += ENABLE_ICONDATABASE=1
-!contains(DEFINES, ENABLE_XPATH=.): DEFINES += ENABLE_XPATH=1
-gtk-port:!contains(DEFINES, ENABLE_XSLT=.): DEFINES += ENABLE_XSLT=1
-#!contains(DEFINES, ENABLE_XBL=.): DEFINES += ENABLE_XBL=1
-qt-port: !contains(DEFINES, ENABLE_SVG=.): DEFINES += ENABLE_SVG=1
-gtk-port:DEFINES += ENABLE_SVG=1
-
-DEFINES += WTF_CHANGES=1
-
-include($$PWD/../JavaScriptCore/JavaScriptCore.pri)
-
-#INCLUDEPATH += $$PWD/../JavaScriptCore
-#LIBS += -L$$OUTPUT_DIR/lib -lJavaScriptCore
-
-qt-port {
-!win32-* {
-    LIBS += -L$$OUTPUT_DIR/WebKit/qt/Plugins
-    LIBS += -lqtwebico
-}
-
-INCLUDEPATH += \
-                $$PWD/platform/qt \
-                $$PWD/platform/network/qt \
-                $$PWD/platform/graphics/qt \
-                $$PWD/platform/graphics/svg/qt \
-                $$PWD/loader/qt \
-                $$PWD/page/qt \
-                $$PWD/../WebKit/qt/WebCoreSupport \
-                $$PWD/../WebKit/qt/Api
-
-DEPENDPATH += editing/qt history/qt loader/qt page/qt \
-	platform/graphics/qt ../WeKitQt/Api ../WebKit/qt/WebCoreSupport
-
-    DEFINES += WTF_USE_JAVASCRIPTCORE_BINDINGS=1
-}
-
-gtk-port {
-    INCLUDEPATH += \
-    $$PWD/platform/graphics/svg/cairo \
-    $$PWD/platform/image-decoders/bmp \
-    $$PWD/platform/image-decoders/gif \
-    $$PWD/platform/image-decoders/ico \
-    $$PWD/platform/image-decoders/jpeg \
-    $$PWD/platform/image-decoders/png \
-    $$PWD/platform/image-decoders/xbm
-
-    DEPENDPATH += platform/graphics/gdk       \
-                  platform/gdk                \
-                  loader/gdk                  \
-                  page/gdk                    \
-                  platform/graphics/cairo     \
-                  platform/graphics/svg/cairo \
-                  platform/network/curl       \
-                  ../WebKit/gtk/Api           \
-                  ../WebKit/gtk/WebCoreSupport
-}
-
-INCLUDEPATH +=  $$PWD \
-                $$PWD/ForwardingHeaders \
-                $$PWD/.. \
-                $$PWD/../JavaScriptCore/kjs \
-                $$PWD/../JavaScriptCore/bindings \
-                $$PWD/platform \
-                $$PWD/platform/network \
-                $$PWD/platform/graphics \
-                $$PWD/platform/graphics/svg \
-                $$PWD/platform/graphics/svg/filters \
-                $$PWD/loader $$PWD/loader/icon \
-                $$PWD/css \
-                $$PWD/dom \
-                $$PWD/page \
-                $$PWD/bridge \
-                $$PWD/editing \
-                $$PWD/rendering \
-                $$PWD/history \
-                $$PWD/xml \
-                $$PWD/html \
-                $$PWD/bindings/js \
-                $$PWD/ksvg2 $$PWD/ksvg2/css $$PWD/ksvg2/svg $$PWD/ksvg2/misc $$PWD/ksvg2/events \
-                $$PWD/platform/image-decoders
-
-QT += network xml
-
-FEATURE_DEFINES_JAVASCRIPT = LANGUAGE_JAVASCRIPT=1
-
-TOKENIZER = $$PWD/css/tokenizer.flex
-
-DOCTYPESTRINGS = $$PWD/html/DocTypeStrings.gperf
-
-CSSBISON = $$PWD/css/CSSGrammar.y
-
-HTML_NAMES = $$PWD/html/HTMLTagNames.in
-
-XML_NAMES = $$PWD/xml/xmlattrs.in
-
-ENTITIES_GPERF = $$PWD/html/HTMLEntityNames.gperf
-
-COLORDAT_GPERF = $$PWD/platform/ColorData.gperf
-
-WALDOCSSPROPS = $$PWD/css/CSSPropertyNames.in
-
-WALDOCSSVALUES = $$PWD/css/CSSValueKeywords.in
-
-SVGCSSPROPERTIES = $$PWD/ksvg2/css/CSSPropertyNames.in
-
-SVGCSSVALUES = $$PWD/ksvg2/css/CSSValueKeywords.in
-
-STYLESHEETS_EMBED = $$PWD/css/html4.css
-
-LUT_FILES += \
-    bindings/js/JSDOMExceptionConstructor.cpp \
-    bindings/js/JSEventTargetNode.cpp \
-    bindings/js/JSXMLHttpRequest.cpp \
-    bindings/js/JSXSLTProcessor.cpp \
-    bindings/js/kjs_css.cpp \
-    bindings/js/kjs_events.cpp \
-    bindings/js/kjs_navigator.cpp \
-    bindings/js/kjs_window.cpp
-
-LUT_TABLE_FILES += \
-    bindings/js/JSHTMLInputElementBase.cpp
-
-IDL_BINDINGS += \
-    css/Counter.idl \
-    css/CSSCharsetRule.idl \
-    css/CSSFontFaceRule.idl \
-    css/CSSImportRule.idl \
-    css/CSSMediaRule.idl \
-    css/CSSPageRule.idl \
-    css/CSSPrimitiveValue.idl \
-    css/CSSRule.idl \
-    css/CSSRuleList.idl \
-    css/CSSStyleDeclaration.idl \
-    css/CSSStyleRule.idl \
-    css/CSSStyleSheet.idl \
-    css/CSSValue.idl \
-    css/CSSValueList.idl \
-    css/MediaList.idl \
-    css/Rect.idl \
-    css/StyleSheet.idl \
-    dom/Attr.idl \
-    dom/CharacterData.idl \
-    dom/CDATASection.idl \
-    dom/Comment.idl \
-    dom/DocumentFragment.idl \
-    dom/Document.idl \
-    dom/DocumentType.idl \
-    dom/DOMImplementation.idl \
-    dom/Element.idl \
-    dom/Entity.idl \
-    dom/EntityReference.idl \
-    dom/Event.idl \
-#    dom/EventListener.idl \
-#    dom/EventTarget.idl \
-    dom/KeyboardEvent.idl \
-    dom/MouseEvent.idl \
-    dom/MutationEvent.idl \
-    dom/NamedNodeMap.idl \
-    dom/Node.idl \
-    dom/NodeFilter.idl \
-    dom/NodeIterator.idl \
-    dom/NodeList.idl \
-    dom/Notation.idl \
-    dom/OverflowEvent.idl \
-    dom/ProcessingInstruction.idl \
-    dom/RangeException.idl \
-    dom/Range.idl \
-    dom/Text.idl \
-    dom/TextEvent.idl \
-    dom/TreeWalker.idl \
-    dom/UIEvent.idl \
-    dom/WheelEvent.idl \
-    html/CanvasGradient.idl \
-    html/CanvasPattern.idl \
-    html/CanvasRenderingContext2D.idl \
-    html/HTMLAnchorElement.idl \
-    html/HTMLAppletElement.idl \
-    html/HTMLAreaElement.idl \
-    html/HTMLBaseElement.idl \
-    html/HTMLBaseFontElement.idl \
-    html/HTMLBlockquoteElement.idl \
-    html/HTMLBodyElement.idl \
-    html/HTMLBRElement.idl \
-    html/HTMLButtonElement.idl \
-    html/HTMLCanvasElement.idl \
-    html/HTMLCollection.idl \
-    html/HTMLDirectoryElement.idl \
-    html/HTMLDivElement.idl \
-    html/HTMLDListElement.idl \
-    html/HTMLDocument.idl \
-    html/HTMLElement.idl \
-    html/HTMLEmbedElement.idl \
-    html/HTMLFieldSetElement.idl \
-    html/HTMLFontElement.idl \
-    html/HTMLFormElement.idl \
-    html/HTMLFrameElement.idl \
-    html/HTMLFrameSetElement.idl \
-    html/HTMLHeadElement.idl \
-    html/HTMLHeadingElement.idl \
-    html/HTMLHRElement.idl \
-    html/HTMLHtmlElement.idl \
-    html/HTMLIFrameElement.idl \
-    html/HTMLImageElement.idl \
-    html/HTMLInputElement.idl \
-    html/HTMLIsIndexElement.idl \
-    html/HTMLLabelElement.idl \
-    html/HTMLLegendElement.idl \
-    html/HTMLLIElement.idl \
-    html/HTMLLinkElement.idl \
-    html/HTMLMapElement.idl \
-    html/HTMLMarqueeElement.idl \
-    html/HTMLMenuElement.idl \
-    html/HTMLMetaElement.idl \
-    html/HTMLModElement.idl \
-    html/HTMLObjectElement.idl \
-    html/HTMLOListElement.idl \
-    html/HTMLOptGroupElement.idl \
-    html/HTMLOptionElement.idl \
-    html/HTMLOptionsCollection.idl \
-    html/HTMLParagraphElement.idl \
-    html/HTMLParamElement.idl \
-    html/HTMLPreElement.idl \
-    html/HTMLQuoteElement.idl \
-    html/HTMLScriptElement.idl \
-    html/HTMLSelectElement.idl \
-    html/HTMLStyleElement.idl \
-    html/HTMLTableCaptionElement.idl \
-    html/HTMLTableCellElement.idl \
-    html/HTMLTableColElement.idl \
-    html/HTMLTableElement.idl \
-    html/HTMLTableRowElement.idl \
-    html/HTMLTableSectionElement.idl \
-    html/HTMLTextAreaElement.idl \
-    html/HTMLTitleElement.idl \
-    html/HTMLUListElement.idl \
-    page/BarInfo.idl \
-    page/DOMSelection.idl \
-    page/DOMWindow.idl \
-    page/History.idl \
-    page/Screen.idl \
-    xml/DOMParser.idl \
-    xml/XMLSerializer.idl
-
-
-SOURCES += \
-    bindings/js/GCController.cpp \
-    bindings/js/JSAttrCustom.cpp \
-    bindings/js/JSCanvasRenderingContext2DCustom.cpp \
-    bindings/js/JSCSSRuleCustom.cpp \
-    bindings/js/JSCSSStyleDeclarationCustom.cpp \
-    bindings/js/JSCSSValueCustom.cpp \
-    bindings/js/JSCustomXPathNSResolver.cpp \
-    bindings/js/JSDocumentCustom.cpp \
-    bindings/js/JSDOMExceptionConstructor.cpp \
-    bindings/js/JSDOMWindowCustom.cpp \
-    bindings/js/JSElementCustom.cpp \
-    bindings/js/JSEventCustom.cpp \
-    bindings/js/JSEventTargetNode.cpp \
-    bindings/js/JSHTMLAppletElementCustom.cpp \
-    bindings/js/JSHTMLCollectionCustom.cpp \
-    bindings/js/JSHTMLDocumentCustom.cpp \
-    bindings/js/JSHTMLElementCustom.cpp \
-    bindings/js/JSHTMLElementWrapperFactory.cpp \
-    bindings/js/JSHTMLEmbedElementCustom.cpp \
-    bindings/js/JSHTMLFormElementCustom.cpp \
-    bindings/js/JSHTMLFrameElementCustom.cpp \
-    bindings/js/JSHTMLFrameSetElementCustom.cpp \
-    bindings/js/JSHTMLIFrameElementCustom.cpp \
-    bindings/js/JSHTMLInputElementBase.cpp \
-    bindings/js/JSHTMLObjectElementCustom.cpp \
-    bindings/js/JSHTMLOptionElementConstructor.cpp \
-    bindings/js/JSHTMLOptionsCollectionCustom.cpp \
-    bindings/js/JSHTMLSelectElementCustom.cpp \
-    bindings/js/JSNamedNodeMapCustom.cpp \
-    bindings/js/JSNamedNodesCollection.cpp  \
-    bindings/js/JSNodeCustom.cpp \
-    bindings/js/JSNodeFilterCondition.cpp \
-    bindings/js/JSNodeFilterCustom.cpp \
-    bindings/js/JSNodeIteratorCustom.cpp \
-    bindings/js/JSNodeListCustom.cpp \
-    bindings/js/JSStyleSheetCustom.cpp \
-    bindings/js/JSTreeWalkerCustom.cpp \
-    bindings/js/JSXMLHttpRequest.cpp \
-    bindings/js/JSXSLTProcessor.cpp \
-    bindings/js/kjs_binding.cpp \
-    bindings/js/kjs_css.cpp \
-    bindings/js/kjs_dom.cpp \
-    bindings/js/kjs_events.cpp \
-    bindings/js/kjs_html.cpp \
-    bindings/js/kjs_navigator.cpp \
-    bindings/js/kjs_proxy.cpp \
-    bindings/js/kjs_window.cpp \
-    css/CSSBorderImageValue.cpp \
-    css/CSSCharsetRule.cpp \
-    css/CSSComputedStyleDeclaration.cpp \
-    css/CSSCursorImageValue.cpp \
-    css/CSSFontFaceRule.cpp \
-    css/CSSHelper.cpp \
-    css/CSSImageValue.cpp \
-    css/CSSImportRule.cpp \
-    css/CSSInheritedValue.cpp \
-    css/CSSInitialValue.cpp \
-    css/CSSMediaRule.cpp \
-    css/CSSMutableStyleDeclaration.cpp \
-    css/CSSPageRule.cpp \
-    css/CSSParser.cpp \
-    css/CSSPrimitiveValue.cpp \
-    css/CSSProperty.cpp \
-    css/CSSRule.cpp \
-    css/CSSRuleList.cpp \
-    css/CSSSelector.cpp \
-    css/CSSStyleDeclaration.cpp \
-    css/CSSStyleRule.cpp \
-    css/CSSStyleSelector.cpp \
-    css/CSSStyleSheet.cpp \
-    css/CSSValueList.cpp \
-    css/FontFamilyValue.cpp \
-    css/FontValue.cpp \
-    css/MediaFeatureNames.cpp \
-    css/MediaList.cpp \
-    css/MediaQuery.cpp \
-    css/MediaQueryEvaluator.cpp \
-    css/MediaQueryExp.cpp \
-    css/ShadowValue.cpp \
-    css/StyleBase.cpp \
-    css/StyleList.cpp \
-    css/StyleSheet.cpp \
-    css/StyleSheetList.cpp \
-    dom/Attr.cpp \
-    dom/Attribute.cpp \
-    dom/BeforeTextInsertedEvent.cpp \
-    dom/BeforeUnloadEvent.cpp \
-    dom/CDATASection.cpp \
-    dom/CharacterData.cpp \
-    dom/ChildNodeList.cpp \
-    dom/Clipboard.cpp \
-    dom/ClipboardEvent.cpp \
-    dom/Comment.cpp \
-    dom/ContainerNode.cpp \
-    dom/CSSMappedAttributeDeclaration.cpp \
-    dom/Document.cpp \
-    dom/DocumentFragment.cpp \
-    dom/DocumentType.cpp \
-    dom/DOMImplementation.cpp \
-    dom/EditingText.cpp \
-    dom/Element.cpp \
-    dom/Entity.cpp \
-    dom/EntityReference.cpp \
-    dom/Event.cpp \
-    dom/EventNames.cpp \
-    dom/EventTarget.cpp \
-    dom/EventTargetNode.cpp \
-    dom/KeyboardEvent.cpp \
-    dom/MappedAttribute.cpp \
-    dom/MouseEvent.cpp \
-    dom/MouseRelatedEvent.cpp \
-    dom/MutationEvent.cpp \
-    dom/NamedAttrMap.cpp \
-    dom/NamedMappedAttrMap.cpp \
-    dom/NameNodeList.cpp \
-    dom/Node.cpp \
-    dom/NodeFilterCondition.cpp \
-    dom/NodeFilter.cpp \
-    dom/NodeIterator.cpp \
-    dom/NodeList.cpp \
-    dom/Notation.cpp \
-    dom/OverflowEvent.cpp \
-    dom/Position.cpp \
-    dom/PositionIterator.cpp \
-    dom/ProcessingInstruction.cpp \
-    dom/QualifiedName.cpp \
-    dom/Range.cpp \
-    dom/RegisteredEventListener.cpp \
-    dom/StyledElement.cpp \
-    dom/StyleElement.cpp \
-    dom/Text.cpp \
-    dom/TextEvent.cpp \
-    dom/Traversal.cpp \
-    dom/TreeWalker.cpp \
-    dom/UIEvent.cpp \
-    dom/UIEventWithKeyState.cpp \
-    dom/WheelEvent.cpp \
-    dom/XMLTokenizer.cpp \
-    editing/AppendNodeCommand.cpp \
-    editing/ApplyStyleCommand.cpp \
-    editing/BreakBlockquoteCommand.cpp \
-    editing/CommandByName.cpp \
-    editing/CompositeEditCommand.cpp \
-    editing/CreateLinkCommand.cpp \
-    editing/DeleteButtonController.cpp \
-    editing/DeleteButton.cpp \
-    editing/DeleteFromTextNodeCommand.cpp \
-    editing/DeleteSelectionCommand.cpp \
-    editing/EditCommand.cpp \
-    editing/Editor.cpp \
-    editing/FormatBlockCommand.cpp \
-    editing/htmlediting.cpp \
-    editing/HTMLInterchange.cpp \
-    editing/IndentOutdentCommand.cpp \
-    editing/InsertIntoTextNodeCommand.cpp \
-    editing/InsertLineBreakCommand.cpp \
-    editing/InsertListCommand.cpp \
-    editing/InsertNodeBeforeCommand.cpp \
-    editing/InsertParagraphSeparatorCommand.cpp \
-    editing/InsertTextCommand.cpp \
-    editing/JoinTextNodesCommand.cpp \
-    editing/JSEditor.cpp \
-    editing/markup.cpp \
-    editing/MergeIdenticalElementsCommand.cpp \
-    editing/ModifySelectionListLevel.cpp \
-    editing/MoveSelectionCommand.cpp \
-    editing/RemoveCSSPropertyCommand.cpp \
-    editing/RemoveNodeAttributeCommand.cpp \
-    editing/RemoveNodeCommand.cpp \
-    editing/RemoveNodePreservingChildrenCommand.cpp \
-    editing/ReplaceSelectionCommand.cpp \
-    editing/SelectionController.cpp \
-    editing/Selection.cpp \
-    editing/SetNodeAttributeCommand.cpp \
-    editing/SmartReplace.cpp \
-    editing/SplitElementCommand.cpp \
-    editing/SplitTextNodeCommand.cpp \
-    editing/SplitTextNodeContainingElementCommand.cpp \
-    editing/TextIterator.cpp \
-    editing/TypingCommand.cpp \
-    editing/UnlinkCommand.cpp \
-    editing/VisiblePosition.cpp \
-    editing/visible_units.cpp \
-    editing/WrapContentsInDummySpanCommand.cpp \
-    history/BackForwardList.cpp \
-    history/CachedPage.cpp \
-    history/HistoryItem.cpp \
-    history/PageCache.cpp \
-    html/CanvasGradient.cpp \
-    html/CanvasPattern.cpp \
-    html/CanvasRenderingContext2D.cpp \
-    html/CanvasStyle.cpp \
-    html/FormDataList.cpp \
-    html/HTMLAnchorElement.cpp \
-    html/HTMLAppletElement.cpp \
-    html/HTMLAreaElement.cpp \
-    html/HTMLBaseElement.cpp \
-    html/HTMLBaseFontElement.cpp \
-    html/HTMLBlockquoteElement.cpp \
-    html/HTMLBodyElement.cpp \
-    html/HTMLBRElement.cpp \
-    html/HTMLButtonElement.cpp \
-    html/HTMLCanvasElement.cpp \
-    html/HTMLCollection.cpp \
-    html/HTMLDirectoryElement.cpp \
-    html/HTMLDivElement.cpp \
-    html/HTMLDListElement.cpp \
-    html/HTMLDocument.cpp \
-    html/HTMLElement.cpp \
-    html/HTMLElementFactory.cpp \
-    html/HTMLEmbedElement.cpp \
-    html/HTMLFieldSetElement.cpp \
-    html/HTMLFontElement.cpp \
-    html/HTMLFormCollection.cpp \
-    html/HTMLFormElement.cpp \
-    html/HTMLFrameElementBase.cpp \
-    html/HTMLFrameElement.cpp \
-    html/HTMLFrameOwnerElement.cpp \
-    html/HTMLFrameSetElement.cpp \
-    html/HTMLGenericFormElement.cpp \
-    html/HTMLHeadElement.cpp \
-    html/HTMLHeadingElement.cpp \
-    html/HTMLHRElement.cpp \
-    html/HTMLHtmlElement.cpp \
-    html/HTMLIFrameElement.cpp \
-    html/HTMLImageElement.cpp \
-    html/HTMLImageLoader.cpp \
-    html/HTMLInputElement.cpp \
-    html/HTMLIsIndexElement.cpp \
-    html/HTMLKeygenElement.cpp \
-    html/HTMLLabelElement.cpp \
-    html/HTMLLegendElement.cpp \
-    html/HTMLLIElement.cpp \
-    html/HTMLLinkElement.cpp \
-    html/HTMLMapElement.cpp \
-    html/HTMLMarqueeElement.cpp \
-    html/HTMLMenuElement.cpp \
-    html/HTMLMetaElement.cpp \
-    html/HTMLModElement.cpp \
-    html/HTMLNameCollection.cpp \
-    html/HTMLObjectElement.cpp \
-    html/HTMLOListElement.cpp \
-    html/HTMLOptGroupElement.cpp \
-    html/HTMLOptionElement.cpp \
-    html/HTMLOptionsCollection.cpp \
-    html/HTMLParagraphElement.cpp \
-    html/HTMLParamElement.cpp \
-    html/HTMLParser.cpp \
-    html/HTMLParserErrorCodes.cpp \
-    html/HTMLPlugInElement.cpp \
-    html/HTMLPreElement.cpp \
-    html/HTMLQuoteElement.cpp \
-    html/HTMLScriptElement.cpp \
-    html/HTMLSelectElement.cpp \
-    html/HTMLStyleElement.cpp \
-    html/HTMLTableCaptionElement.cpp \
-    html/HTMLTableCellElement.cpp \
-    html/HTMLTableColElement.cpp \
-    html/HTMLTableElement.cpp \
-    html/HTMLTablePartElement.cpp \
-    html/HTMLTableRowElement.cpp \
-    html/HTMLTableSectionElement.cpp \
-    html/HTMLTextAreaElement.cpp \
-    html/HTMLTextFieldInnerElement.cpp \
-    html/HTMLTitleElement.cpp \
-    html/HTMLTokenizer.cpp \
-    html/HTMLUListElement.cpp \
-    html/HTMLViewSourceDocument.cpp \
-    loader/Cache.cpp \
-    loader/CachedCSSStyleSheet.cpp \
-    loader/CachedImage.cpp \
-    loader/CachedResourceClientWalker.cpp \
-    loader/CachedResource.cpp \
-    loader/CachedScript.cpp \
-    loader/CachedXSLStyleSheet.cpp \
-    loader/DocLoader.cpp \
-    loader/DocumentLoader.cpp \
-    loader/FormState.cpp \
-    loader/FrameLoader.cpp \
-    loader/FTPDirectoryDocument.cpp \
-    loader/FTPDirectoryParser.cpp \
-    loader/icon/IconLoader.cpp \
-    loader/ImageDocument.cpp \
-    loader/loader.cpp \
-    loader/MainResourceLoader.cpp \
-    loader/NavigationAction.cpp \
-    loader/NetscapePlugInStreamLoader.cpp \
-    loader/PluginDocument.cpp \
-    loader/ProgressTracker.cpp \
-    loader/Request.cpp \
-    loader/ResourceLoader.cpp \
-    loader/SubresourceLoader.cpp \
-    loader/TextDocument.cpp \
-    loader/TextResourceDecoder.cpp \
-    page/BarInfo.cpp \
-    page/Chrome.cpp \
-    page/ContextMenuController.cpp \
-    page/DOMSelection.cpp \
-    page/DOMWindow.cpp \
-    page/DragController.cpp \
-    page/EventHandler.cpp \
-    page/FocusController.cpp \
-    page/Frame.cpp \
-    page/FrameTree.cpp \
-    page/FrameView.cpp \
-    page/History.cpp \
-    page/InspectorController.cpp \
-    page/MouseEventWithHitTestResults.cpp \
-    page/Page.cpp \
-    page/Screen.cpp \
-    page/Settings.cpp \
-    platform/Arena.cpp \
-    platform/ArrayImpl.cpp \
-    platform/AtomicString.cpp \
-    platform/Base64.cpp \
-    platform/BidiContext.cpp \
-    platform/ContextMenu.cpp \
-    platform/CString.cpp \
-    platform/DeprecatedCString.cpp \
-    platform/DeprecatedPtrListImpl.cpp \
-    platform/DeprecatedString.cpp \
-    platform/DeprecatedStringList.cpp \
-    platform/DeprecatedValueListImpl.cpp \
-    platform/DragData.cpp \
-    platform/DragImage.cpp \
-    platform/FileChooser.cpp \
-    platform/FontFamily.cpp \
-    platform/graphics/AffineTransform.cpp \
-    platform/graphics/BitmapImage.cpp \
-    platform/graphics/Color.cpp \
-    platform/graphics/FloatPoint3D.cpp \
-    platform/graphics/FloatPoint.cpp \
-    platform/graphics/FloatRect.cpp \
-    platform/graphics/FloatSize.cpp \
-    platform/graphics/GraphicsContext.cpp \
-    platform/graphics/GraphicsTypes.cpp \
-    platform/graphics/ImageBuffer.cpp \
-    platform/graphics/Image.cpp \
-    platform/graphics/IntRect.cpp \
-    platform/graphics/Path.cpp \
-    platform/graphics/PathTraversalState.cpp \
-    platform/graphics/Pen.cpp \
-    platform/KURL.cpp \
-    platform/Logging.cpp \
-    platform/MIMETypeRegistry.cpp \
-    platform/network/AuthenticationChallenge.cpp \
-    platform/network/Credential.cpp \
-    platform/network/FormData.cpp \
-    platform/network/HTTPParsers.cpp \
-    platform/network/ProtectionSpace.cpp \
-    platform/network/ResourceHandle.cpp \
-    platform/network/ResourceRequestBase.cpp \
-    platform/network/ResourceResponse.cpp \
-    platform/RegularExpression.cpp \
-    platform/ScrollBar.cpp \
-#    platform/SearchPopupMenu.cpp \
-    platform/SecurityOrigin.cpp \
-    platform/SegmentedString.cpp \
-    platform/SharedBuffer.cpp \
-    platform/String.cpp \
-    platform/StringImpl.cpp \
-    platform/TextCodec.cpp \
-    platform/TextCodecLatin1.cpp \
-    platform/TextCodecUTF16.cpp \
-    platform/TextDecoder.cpp \
-    platform/TextEncoding.cpp \
-    platform/TextEncodingRegistry.cpp \
-    platform/TextStream.cpp \
-    platform/Timer.cpp \
-    platform/Widget.cpp \
-    rendering/AutoTableLayout.cpp \
-    rendering/bidi.cpp \
-    rendering/break_lines.cpp \
-    rendering/CounterNode.cpp \
-    rendering/EllipsisBox.cpp \
-    rendering/FixedTableLayout.cpp \
-    rendering/HitTestResult.cpp \
-    rendering/InlineBox.cpp \
-    rendering/InlineFlowBox.cpp \
-    rendering/InlineTextBox.cpp \
-    rendering/LayoutState.cpp \
-    rendering/ListMarkerBox.cpp \
-    rendering/RenderApplet.cpp \
-    rendering/RenderArena.cpp \
-    rendering/RenderBlock.cpp \
-    rendering/RenderBox.cpp \
-    rendering/RenderBR.cpp \
-    rendering/RenderButton.cpp \
-    rendering/RenderContainer.cpp \
-    rendering/RenderCounter.cpp \
-    rendering/RenderFieldset.cpp \
-    rendering/RenderFileUploadControl.cpp \
-    rendering/RenderFlexibleBox.cpp \
-    rendering/RenderFlow.cpp \
-    rendering/RenderFrame.cpp \
-    rendering/RenderFrameSet.cpp \
-    rendering/RenderHTMLCanvas.cpp \
-    rendering/RenderImage.cpp \
-    rendering/RenderInline.cpp \
-    rendering/RenderLayer.cpp \
-    rendering/RenderLegend.cpp \
-    rendering/RenderListBox.cpp \
-    rendering/RenderListItem.cpp \
-    rendering/RenderListMarker.cpp \
-    rendering/RenderMenuList.cpp \
-    rendering/RenderObject.cpp \
-    rendering/RenderPart.cpp \
-    rendering/RenderPartObject.cpp \
-    rendering/RenderReplaced.cpp \
-    rendering/RenderSlider.cpp \
-    rendering/RenderStyle.cpp \
-    rendering/RenderTableCell.cpp \
-    rendering/RenderTableCol.cpp \
-    rendering/RenderTable.cpp \
-    rendering/RenderTableRow.cpp \
-    rendering/RenderTableSection.cpp \
-    rendering/RenderTextControl.cpp \
-    rendering/RenderText.cpp \
-    rendering/RenderTextFragment.cpp \
-    rendering/RenderTheme.cpp \
-    rendering/RenderTreeAsText.cpp \
-    rendering/RenderView.cpp \
-    rendering/RenderWidget.cpp \
-    rendering/RenderWordBreak.cpp \
-    rendering/RootInlineBox.cpp \
-    rendering/SVGRenderTreeAsText.cpp \
-    xml/DOMParser.cpp \
-    xml/NativeXPathNSResolver.cpp \
-    xml/XMLHttpRequest.cpp \
-    xml/XMLSerializer.cpp \
-    xml/XPathEvaluator.cpp \
-    xml/XPathExpression.cpp \
-    xml/XPathExpressionNode.cpp \
-    xml/XPathFunctions.cpp \
-    xml/XPathNamespace.cpp \
-    xml/XPathNodeSet.cpp \
-    xml/XPathNSResolver.cpp \
-    xml/XPathParser.cpp \
-    xml/XPathPath.cpp \
-    xml/XPathPredicate.cpp \
-    xml/XPathResult.cpp \
-    xml/XPathStep.cpp \
-    xml/XPathUtil.cpp \
-    xml/XPathValue.cpp \
-    xml/XPathVariableReference.cpp \
-    xml/XSLImportRule.cpp \
-    xml/XSLStyleSheet.cpp \
-    xml/XSLTExtensions.cpp \
-    xml/XSLTProcessor.cpp
-
-gtk-port {
-  SOURCES += \
-    platform/GlyphPageTreeNode.cpp \
-    platform/GlyphWidthMap.cpp \
-    platform/FontCache.cpp \
-    platform/Font.cpp \
-    platform/FontData.cpp \
-    platform/FontFallbackList.cpp 
-}
-
-qt-port {
-
-    HEADERS += \
-    $$PWD/platform/qt/QWebPopup.h \
-    $$PWD/platform/qt/MenuEventProxy.h \
-    $$PWD/platform/qt/SharedTimerQt.h \
-    $$PWD/../WebKit/qt/Api/qwebframe.h \
-    $$PWD/../WebKit/qt/Api/qwebpage.h \
-    $$PWD/../WebKit/qt/Api/qwebnetworkinterface.h \
-    $$PWD/../WebKit/qt/Api/qwebnetworkinterface_p.h \
-    $$PWD/../WebKit/qt/Api/qwebobjectplugin.h \
-    $$PWD/../WebKit/qt/Api/qwebobjectplugin_p.h \
-    $$PWD/../WebKit/qt/Api/qwebobjectpluginconnector.h \
-    $$PWD/../WebKit/qt/Api/qwebhistoryinterface.h \
-    $$PWD/../WebKit/qt/Api/qcookiejar.h \
-    $$PWD/../WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h
-
-    SOURCES += \
-    page/qt/DragControllerQt.cpp \
-    page/qt/EventHandlerQt.cpp \
-    page/qt/FrameQt.cpp \
-    loader/qt/DocumentLoaderQt.cpp \
-    platform/graphics/qt/AffineTransformQt.cpp \
-    platform/graphics/qt/ColorQt.cpp \
-    platform/graphics/qt/FloatPointQt.cpp \
-    platform/graphics/qt/FloatRectQt.cpp \
-    platform/graphics/qt/GraphicsContextQt.cpp \
-    platform/graphics/qt/IconQt.cpp \
-    platform/graphics/qt/ImageBufferQt.cpp \
-    platform/graphics/qt/ImageDecoderQt.cpp \
-    platform/graphics/qt/ImageQt.cpp \
-    platform/graphics/qt/ImageSourceQt.cpp \
-    platform/graphics/qt/IntPointQt.cpp \
-    platform/graphics/qt/IntRectQt.cpp \
-    platform/graphics/qt/IntSizeQt.cpp \
-    platform/graphics/qt/PathQt.cpp \
-    platform/network/qt/ResourceHandleQt.cpp \
-    editing/qt/EditorQt.cpp \
-    history/qt/CachedPageQt.cpp \
-    platform/qt/ClipboardQt.cpp \
-    platform/qt/ContextMenuItemQt.cpp \
-    platform/qt/ContextMenuQt.cpp \
-    platform/qt/CookieJarQt.cpp \
-    platform/qt/CursorQt.cpp \
-    platform/qt/DragDataQt.cpp \
-    platform/qt/DragImageQt.cpp \
-    platform/qt/FileChooserQt.cpp \
-    platform/qt/FileSystemQt.cpp \
-    platform/qt/FontQt.cpp \
-    platform/qt/Localizations.cpp \
-    platform/qt/MIMETypeRegistryQt.cpp \
-    platform/qt/PasteboardQt.cpp \
-    platform/qt/PlatformKeyboardEventQt.cpp \
-    platform/qt/PlatformMouseEventQt.cpp \
-    platform/qt/PlatformScreenQt.cpp \
-    platform/qt/PlatformScrollBarQt.cpp \
-    platform/qt/PlugInInfoStoreQt.cpp \
-    platform/qt/PopupMenuQt.cpp \
-    platform/qt/QWebPopup.cpp \
-    platform/qt/RenderThemeQt.cpp \
-    platform/qt/ScrollViewQt.cpp \
-    platform/qt/SearchPopupMenuQt.cpp \
-    platform/qt/SharedTimerQt.cpp \
-    platform/qt/SoundQt.cpp \
-    platform/qt/StringQt.cpp \
-    platform/qt/TemporaryLinkStubs.cpp \
-    platform/qt/TextBoundaries.cpp \
-    platform/qt/TextBreakIteratorQt.cpp \
-    platform/qt/TextCodecQt.cpp \
-    platform/qt/ThreadingQt.cpp \
-    platform/qt/WheelEventQt.cpp \
-    platform/qt/WidgetQt.cpp \
-    ../WebKit/qt/WebCoreSupport/ChromeClientQt.cpp \
-    ../WebKit/qt/WebCoreSupport/ContextMenuClientQt.cpp \
-    ../WebKit/qt/WebCoreSupport/DragClientQt.cpp \
-    ../WebKit/qt/WebCoreSupport/EditorClientQt.cpp \
-    ../WebKit/qt/WebCoreSupport/EditCommandQt.cpp \
-    ../WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp \
-    ../WebKit/qt/WebCoreSupport/InspectorClientQt.cpp \
-    ../WebKit/qt/Api/qwebframe.cpp \
-    ../WebKit/qt/Api/qwebnetworkinterface.cpp \
-    ../WebKit/qt/Api/qcookiejar.cpp \
-    ../WebKit/qt/Api/qwebpage.cpp \
-    ../WebKit/qt/Api/qwebpagehistory.cpp \
-    ../WebKit/qt/Api/qwebsettings.cpp \
-    ../WebKit/qt/Api/qwebobjectplugin.cpp \
-    ../WebKit/qt/Api/qwebobjectpluginconnector.cpp \
-    ../WebKit/qt/Api/qwebhistoryinterface.cpp
-
-    unix: SOURCES += platform/qt/SystemTimeQt.cpp
-    else: SOURCES += platform/win/SystemTimeWin.cpp
-}
-
-gtk-port {
-    HEADERS += \
-        ../WebCore/platform/gtk/ClipboardGtk.h \
-        ../WebKit/gtk/Api/webkitgtkdefines.h \
-        ../WebKit/gtk/Api/webkitgtkframe.h \
-        ../WebKit/gtk/Api/webkitgtkglobal.h \
-        ../WebKit/gtk/Api/webkitgtknetworkrequest.h \
-        ../WebKit/gtk/Api/webkitgtkpage.h \
-        ../WebKit/gtk/Api/webkitgtkprivate.h \
-        ../WebKit/gtk/Api/webkitgtksettings.h \
-        ../WebKit/gtk/WebCoreSupport/ChromeClientGtk.h \
-        ../WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h \
-        ../WebKit/gtk/WebCoreSupport/DragClientGtk.h \
-        ../WebKit/gtk/WebCoreSupport/EditorClientGtk.h \
-        ../WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h \
-        ../WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
-    SOURCES += \
-        platform/StringTruncator.cpp \
-        platform/TextCodecICU.cpp \
-        platform/TextBreakIteratorICU.cpp \
-        page/gtk/EventHandlerGtk.cpp \
-        page/gtk/FrameGtk.cpp \
-        page/gtk/DragControllerGtk.cpp \
-        loader/gtk/DocumentLoaderGtk.cpp \
-        platform/gtk/ClipboardGtk.cpp \
-        platform/gtk/CookieJarGtk.cpp \
-        platform/gtk/CursorGtk.cpp \
-        platform/gtk/ContextMenuGtk.cpp \
-        platform/gtk/ContextMenuItemGtk.cpp \
-        platform/gtk/DragDataGtk.cpp \
-        platform/gtk/DragImageGtk.cpp \
-        platform/gtk/FileChooserGtk.cpp \
-        platform/gtk/FileSystemGtk.cpp \
-        platform/gtk/FontCacheGtk.cpp \
-        platform/gtk/FontDataGtk.cpp \
-        platform/gtk/FontGtk.cpp \
-        platform/gtk/FontPlatformDataGtk.cpp \
-        platform/gtk/GlyphPageTreeNodeGtk.cpp \
-        platform/gtk/KeyEventGtk.cpp \
-        platform/gtk/LocalizedStringsGtk.cpp \
-        platform/gtk/LoggingGtk.cpp \
-        platform/gtk/MIMETypeRegistryGtk.cpp \
-        platform/gtk/MouseEventGtk.cpp \
-        platform/gtk/PasteboardGtk.cpp \
-        platform/gtk/PlatformScreenGtk.cpp \
-        platform/gtk/PlatformScrollBarGtk.cpp \
-        platform/gtk/PopupMenuGtk.cpp \
-        platform/gtk/RenderThemeGtk.cpp \
-        platform/gtk/SearchPopupMenuGtk.cpp \
-        platform/gtk/ScrollViewGtk.cpp \
-        platform/gtk/SharedTimerLinux.cpp \
-        platform/gtk/SoundGtk.cpp \
-        platform/gtk/SystemTimeLinux.cpp \
-        platform/gtk/TemporaryLinkStubs.cpp \
-        platform/gtk/WheelEventGtk.cpp \
-        platform/gtk/WidgetGtk.cpp \
-        platform/graphics/gtk/IconGtk.cpp \
-        platform/graphics/gtk/ImageGtk.cpp \
-        platform/network/curl/ResourceHandleCurl.cpp \
-        platform/network/curl/ResourceHandleManager.cpp \
-        platform/graphics/cairo/AffineTransformCairo.cpp \
-        platform/graphics/cairo/GraphicsContextCairo.cpp \
-        platform/graphics/cairo/ImageBufferCairo.cpp \
-        platform/graphics/cairo/ImageCairo.cpp \
-        platform/graphics/cairo/ImageSourceCairo.cpp \
-        platform/graphics/cairo/PathCairo.cpp \
-        platform/image-decoders/gif/GIFImageDecoder.cpp \
-        platform/image-decoders/gif/GIFImageReader.cpp  \
-        platform/image-decoders/png/PNGImageDecoder.cpp \
-        platform/image-decoders/jpeg/JPEGImageDecoder.cpp \
-        platform/image-decoders/bmp/BMPImageDecoder.cpp \
-        platform/image-decoders/ico/ICOImageDecoder.cpp \
-        platform/image-decoders/xbm/XBMImageDecoder.cpp \
-        ../WebKit/gtk/Api/webkitgtkframe.cpp \
-        ../WebKit/gtk/Api/webkitgtkglobal.cpp \
-        ../WebKit/gtk/Api/webkitgtknetworkrequest.cpp \
-        ../WebKit/gtk/Api/webkitgtkpage.cpp \
-        ../WebKit/gtk/Api/webkitgtkprivate.cpp \
-        ../WebKit/gtk/Api/webkitgtksettings.cpp \
-        ../WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp \
-        ../WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp \
-        ../WebKit/gtk/WebCoreSupport/DragClientGtk.cpp \
-        ../WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp \
-        ../WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp \
-        ../WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp
-}
- 
-contains(DEFINES, ENABLE_ICONDATABASE=1) {
-    qt-port: INCLUDEPATH += $$[QT_INSTALL_PREFIX]/src/3rdparty/sqlite/
-    LIBS += -lsqlite3
-    SOURCES += \
-        loader/icon/IconDatabase.cpp \
-        loader/icon/IconRecord.cpp \
-        loader/icon/PageURLRecord.cpp \
-        loader/icon/SQLDatabase.cpp \
-        loader/icon/SQLStatement.cpp \
-        loader/icon/SQLTransaction.cpp
-} else {
-    SOURCES += \
-        loader/icon/IconDatabaseNone.cpp
-}
-
-contains(DEFINES, ENABLE_XPATH=1) {
-    FEATURE_DEFINES_JAVASCRIPT += ENABLE_XPATH=1
-
-    XPATHBISON = $$PWD/xml/XPathGrammar.y
-
-    IDL_BINDINGS += \
-        xml/XPathNSResolver.idl \
-        xml/XPathExpression.idl \
-        xml/XPathResult.idl \
-        xml/XPathEvaluator.idl
-}
-
-unix:!mac:CONFIG += link_pkgconfig
-
-contains(DEFINES, ENABLE_XSLT=1) {
-    FEATURE_DEFINES_JAVASCRIPT += ENABLE_XSLT=1
-    PKGCONFIG += libxml-2.0 libxslt
-
-    macx {
-        INCLUDEPATH += /usr/include/libxml2
-        LIBS += -lxml2 -lxslt
-    }
-
-    win32-msvc* {
-        LIBS += -llibxml2 -llibxslt
-    }
-}
-
-contains(DEFINES, ENABLE_XBL=1) {
-    FEATURE_DEFINES_JAVASCRIPT += ENABLE_XBL=1
-}
-
-contains(DEFINES, ENABLE_SVG=1) {
-    FEATURE_DEFINES_JAVASCRIPT += ENABLE_SVG=1
-
-    DEPENDPATH += ksvg2/css ksvg2/events ksvg2/misc ksvg2/svg platform/graphics/svg
-    qt-port {
-	DEPENDPATH += platform/graphics/svg/qt
-    }
-
-    gtk-port {
-	DEPENDPATH += platform/graphics/svg/cairo
-    }
-
-    SVG_NAMES = $$PWD/ksvg2/svg/svgtags.in
-
-    XLINK_NAMES = $$PWD/ksvg2/misc/xlinkattrs.in
-
-    IDL_BINDINGS += ksvg2/events/SVGZoomEvent.idl \
-        ksvg2/svg/SVGAElement.idl \
-        ksvg2/svg/SVGAngle.idl \
-        ksvg2/svg/SVGAnimateColorElement.idl \
-        ksvg2/svg/SVGAnimatedAngle.idl \
-        ksvg2/svg/SVGAnimatedBoolean.idl \
-        ksvg2/svg/SVGAnimatedEnumeration.idl \
-        ksvg2/svg/SVGAnimatedInteger.idl \
-        ksvg2/svg/SVGAnimatedLength.idl \
-        ksvg2/svg/SVGAnimatedLengthList.idl \
-        ksvg2/svg/SVGAnimatedNumber.idl \
-        ksvg2/svg/SVGAnimatedNumberList.idl \
-        ksvg2/svg/SVGAnimatedPreserveAspectRatio.idl \
-        ksvg2/svg/SVGAnimatedRect.idl \
-        ksvg2/svg/SVGAnimatedString.idl \
-        ksvg2/svg/SVGAnimatedTransformList.idl \
-        ksvg2/svg/SVGAnimateElement.idl \
-        ksvg2/svg/SVGAnimateTransformElement.idl \
-        ksvg2/svg/SVGAnimationElement.idl \
-        ksvg2/svg/SVGCircleElement.idl \
-        ksvg2/svg/SVGClipPathElement.idl \
-        ksvg2/svg/SVGColor.idl \
-        ksvg2/svg/SVGComponentTransferFunctionElement.idl \
-        ksvg2/svg/SVGCursorElement.idl \
-        ksvg2/svg/SVGDefsElement.idl \
-        ksvg2/svg/SVGDescElement.idl \
-        ksvg2/svg/SVGDocument.idl \
-        ksvg2/svg/SVGElement.idl \
-        ksvg2/svg/SVGElementInstance.idl \
-        ksvg2/svg/SVGElementInstanceList.idl \
-        ksvg2/svg/SVGEllipseElement.idl \
-        ksvg2/svg/SVGFEBlendElement.idl \
-        ksvg2/svg/SVGFEColorMatrixElement.idl \
-        ksvg2/svg/SVGFEComponentTransferElement.idl \
-        ksvg2/svg/SVGFECompositeElement.idl \
-        ksvg2/svg/SVGFEDiffuseLightingElement.idl \
-        ksvg2/svg/SVGFEDisplacementMapElement.idl \
-        ksvg2/svg/SVGFEDistantLightElement.idl \
-        ksvg2/svg/SVGFEFloodElement.idl \
-        ksvg2/svg/SVGFEFuncAElement.idl \
-        ksvg2/svg/SVGFEFuncBElement.idl \
-        ksvg2/svg/SVGFEFuncGElement.idl \
-        ksvg2/svg/SVGFEFuncRElement.idl \
-        ksvg2/svg/SVGFEGaussianBlurElement.idl \
-        ksvg2/svg/SVGFEImageElement.idl \
-        ksvg2/svg/SVGFEMergeElement.idl \
-        ksvg2/svg/SVGFEMergeNodeElement.idl \
-        ksvg2/svg/SVGFEOffsetElement.idl \
-        ksvg2/svg/SVGFEPointLightElement.idl \
-        ksvg2/svg/SVGFESpecularLightingElement.idl \
-        ksvg2/svg/SVGFESpotLightElement.idl \
-        ksvg2/svg/SVGFETileElement.idl \
-        ksvg2/svg/SVGFETurbulenceElement.idl \
-        ksvg2/svg/SVGFilterElement.idl \
-        ksvg2/svg/SVGForeignObjectElement.idl \
-        ksvg2/svg/SVGGElement.idl \
-        ksvg2/svg/SVGGradientElement.idl \
-        ksvg2/svg/SVGImageElement.idl \
-        ksvg2/svg/SVGLength.idl \
-        ksvg2/svg/SVGLengthList.idl \
-        ksvg2/svg/SVGLinearGradientElement.idl \
-        ksvg2/svg/SVGLineElement.idl \
-        ksvg2/svg/SVGMarkerElement.idl \
-        ksvg2/svg/SVGMaskElement.idl \
-        ksvg2/svg/SVGMatrix.idl \
-        ksvg2/svg/SVGMetadataElement.idl \
-        ksvg2/svg/SVGNumber.idl \
-        ksvg2/svg/SVGNumberList.idl \
-        ksvg2/svg/SVGPaint.idl \
-        ksvg2/svg/SVGPathElement.idl \
-        ksvg2/svg/SVGPathSegArcAbs.idl \
-        ksvg2/svg/SVGPathSegArcRel.idl \
-        ksvg2/svg/SVGPathSegClosePath.idl \
-        ksvg2/svg/SVGPathSegCurvetoCubicAbs.idl \
-        ksvg2/svg/SVGPathSegCurvetoCubicRel.idl \
-        ksvg2/svg/SVGPathSegCurvetoCubicSmoothAbs.idl \
-        ksvg2/svg/SVGPathSegCurvetoCubicSmoothRel.idl \
-        ksvg2/svg/SVGPathSegCurvetoQuadraticAbs.idl \
-        ksvg2/svg/SVGPathSegCurvetoQuadraticRel.idl \
-        ksvg2/svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl \
-        ksvg2/svg/SVGPathSegCurvetoQuadraticSmoothRel.idl \
-        ksvg2/svg/SVGPathSeg.idl \
-        ksvg2/svg/SVGPathSegLinetoAbs.idl \
-        ksvg2/svg/SVGPathSegLinetoHorizontalAbs.idl \
-        ksvg2/svg/SVGPathSegLinetoHorizontalRel.idl \
-        ksvg2/svg/SVGPathSegLinetoRel.idl \
-        ksvg2/svg/SVGPathSegLinetoVerticalAbs.idl \
-        ksvg2/svg/SVGPathSegLinetoVerticalRel.idl \
-        ksvg2/svg/SVGPathSegList.idl \
-        ksvg2/svg/SVGPathSegMovetoAbs.idl \
-        ksvg2/svg/SVGPathSegMovetoRel.idl \
-        ksvg2/svg/SVGPatternElement.idl \
-        ksvg2/svg/SVGPoint.idl \
-        ksvg2/svg/SVGPointList.idl \
-        ksvg2/svg/SVGPolygonElement.idl \
-        ksvg2/svg/SVGPolylineElement.idl \
-        ksvg2/svg/SVGPreserveAspectRatio.idl \
-        ksvg2/svg/SVGRadialGradientElement.idl \
-        ksvg2/svg/SVGRectElement.idl \
-        ksvg2/svg/SVGRect.idl \
-        ksvg2/svg/SVGRenderingIntent.idl \
-        ksvg2/svg/SVGScriptElement.idl \
-        ksvg2/svg/SVGSetElement.idl \
-        ksvg2/svg/SVGStopElement.idl \
-        ksvg2/svg/SVGStringList.idl \
-        ksvg2/svg/SVGStyleElement.idl \
-        ksvg2/svg/SVGSVGElement.idl \
-        ksvg2/svg/SVGSwitchElement.idl \
-        ksvg2/svg/SVGSymbolElement.idl \
-        ksvg2/svg/SVGTextContentElement.idl \
-        ksvg2/svg/SVGTextElement.idl \
-        ksvg2/svg/SVGTextPositioningElement.idl \
-        ksvg2/svg/SVGTitleElement.idl \
-        ksvg2/svg/SVGTransform.idl \
-        ksvg2/svg/SVGTransformList.idl \
-        ksvg2/svg/SVGTRefElement.idl \
-        ksvg2/svg/SVGTSpanElement.idl \
-        ksvg2/svg/SVGUnitTypes.idl \
-        ksvg2/svg/SVGUseElement.idl \
-        ksvg2/svg/SVGViewElement.idl 
-
-    SOURCES += \
-# TODO: this-one-is-not-auto-added! FIXME! tmp/SVGElementFactory.cpp \
-        bindings/js/JSSVGElementWrapperFactory.cpp \
-        bindings/js/JSSVGMatrixCustom.cpp \
-        bindings/js/JSSVGPathSegCustom.cpp \
-        bindings/js/JSSVGPathSegListCustom.cpp \
-        bindings/js/JSSVGPointListCustom.cpp \
-        ksvg2/css/SVGCSSParser.cpp \
-        ksvg2/css/SVGCSSStyleSelector.cpp \
-        ksvg2/css/SVGRenderStyle.cpp \
-        ksvg2/css/SVGRenderStyleDefs.cpp \
-        ksvg2/events/JSSVGLazyEventListener.cpp \
-        ksvg2/events/SVGZoomEvent.cpp \
-        ksvg2/misc/KCanvasRenderingStyle.cpp \
-        ksvg2/misc/PointerEventsHitRules.cpp \
-        ksvg2/misc/SVGDocumentExtensions.cpp \
-        ksvg2/misc/SVGImageLoader.cpp \
-        ksvg2/misc/SVGTimer.cpp \
-        ksvg2/misc/TimeScheduler.cpp \
-        ksvg2/svg/ColorDistance.cpp \
-        ksvg2/svg/SVGAElement.cpp \
-        ksvg2/svg/SVGAngle.cpp \
-        ksvg2/svg/SVGAnimateColorElement.cpp \
-        ksvg2/svg/SVGAnimatedPathData.cpp \
-        ksvg2/svg/SVGAnimatedPoints.cpp \
-        ksvg2/svg/SVGAnimateElement.cpp \
-        ksvg2/svg/SVGAnimateMotionElement.cpp \
-        ksvg2/svg/SVGAnimateTransformElement.cpp \
-        ksvg2/svg/SVGAnimationElement.cpp \
-        ksvg2/svg/SVGCircleElement.cpp \
-        ksvg2/svg/SVGClipPathElement.cpp \
-        ksvg2/svg/SVGColor.cpp \
-        ksvg2/svg/SVGComponentTransferFunctionElement.cpp \
-        ksvg2/svg/SVGCursorElement.cpp \
-        ksvg2/svg/SVGDefsElement.cpp \
-        ksvg2/svg/SVGDescElement.cpp \
-        ksvg2/svg/SVGDocument.cpp \
-        ksvg2/svg/SVGElement.cpp \
-        ksvg2/svg/SVGElementInstance.cpp \
-        ksvg2/svg/SVGElementInstanceList.cpp \
-        ksvg2/svg/SVGEllipseElement.cpp \
-        ksvg2/svg/SVGExternalResourcesRequired.cpp \
-        ksvg2/svg/SVGFEBlendElement.cpp \
-        ksvg2/svg/SVGFEColorMatrixElement.cpp \
-        ksvg2/svg/SVGFEComponentTransferElement.cpp \
-        ksvg2/svg/SVGFECompositeElement.cpp \
-        ksvg2/svg/SVGFEDiffuseLightingElement.cpp \
-        ksvg2/svg/SVGFEDisplacementMapElement.cpp \
-        ksvg2/svg/SVGFEDistantLightElement.cpp \
-        ksvg2/svg/SVGFEFloodElement.cpp \
-        ksvg2/svg/SVGFEFuncAElement.cpp \
-        ksvg2/svg/SVGFEFuncBElement.cpp \
-        ksvg2/svg/SVGFEFuncGElement.cpp \
-        ksvg2/svg/SVGFEFuncRElement.cpp \
-        ksvg2/svg/SVGFEGaussianBlurElement.cpp \
-        ksvg2/svg/SVGFEImageElement.cpp \
-        ksvg2/svg/SVGFELightElement.cpp \
-        ksvg2/svg/SVGFEMergeElement.cpp \
-        ksvg2/svg/SVGFEMergeNodeElement.cpp \
-        ksvg2/svg/SVGFEOffsetElement.cpp \
-        ksvg2/svg/SVGFEPointLightElement.cpp \
-        ksvg2/svg/SVGFESpecularLightingElement.cpp \
-        ksvg2/svg/SVGFESpotLightElement.cpp \
-        ksvg2/svg/SVGFETileElement.cpp \
-        ksvg2/svg/SVGFETurbulenceElement.cpp \
-        ksvg2/svg/SVGFilterElement.cpp \
-        ksvg2/svg/SVGFilterPrimitiveStandardAttributes.cpp \
-        ksvg2/svg/SVGFitToViewBox.cpp \
-        ksvg2/svg/SVGForeignObjectElement.cpp \
-        ksvg2/svg/SVGGElement.cpp \
-        ksvg2/svg/SVGGradientElement.cpp \
-        ksvg2/svg/SVGImageElement.cpp \
-        ksvg2/svg/SVGLangSpace.cpp \
-        ksvg2/svg/SVGLength.cpp \
-        ksvg2/svg/SVGLengthList.cpp \
-        ksvg2/svg/SVGLinearGradientElement.cpp \
-        ksvg2/svg/SVGLineElement.cpp \
-        ksvg2/svg/SVGLocatable.cpp \
-        ksvg2/svg/SVGMarkerElement.cpp \
-        ksvg2/svg/SVGMaskElement.cpp \
-        ksvg2/svg/SVGMetadataElement.cpp \
-        ksvg2/svg/SVGMPathElement.cpp \
-        ksvg2/svg/SVGNumberList.cpp \
-        ksvg2/svg/SVGPaint.cpp \
-        ksvg2/svg/SVGParserUtilities.cpp \
-        ksvg2/svg/SVGPathElement.cpp \
-        ksvg2/svg/SVGPathSegArc.cpp \
-        ksvg2/svg/SVGPathSegClosePath.cpp \
-        ksvg2/svg/SVGPathSegCurvetoCubic.cpp \
-        ksvg2/svg/SVGPathSegCurvetoCubicSmooth.cpp \
-        ksvg2/svg/SVGPathSegCurvetoQuadratic.cpp \
-        ksvg2/svg/SVGPathSegCurvetoQuadraticSmooth.cpp \
-        ksvg2/svg/SVGPathSegLineto.cpp \
-        ksvg2/svg/SVGPathSegLinetoHorizontal.cpp \
-        ksvg2/svg/SVGPathSegLinetoVertical.cpp \
-        ksvg2/svg/SVGPathSegList.cpp \
-        ksvg2/svg/SVGPathSegMoveto.cpp \
-        ksvg2/svg/SVGPatternElement.cpp \
-        ksvg2/svg/SVGPointList.cpp \
-        ksvg2/svg/SVGPolyElement.cpp \
-        ksvg2/svg/SVGPolygonElement.cpp \
-        ksvg2/svg/SVGPolylineElement.cpp \
-        ksvg2/svg/SVGPreserveAspectRatio.cpp \
-        ksvg2/svg/SVGRadialGradientElement.cpp \
-        ksvg2/svg/SVGRectElement.cpp \
-        ksvg2/svg/SVGScriptElement.cpp \
-        ksvg2/svg/SVGSetElement.cpp \
-        ksvg2/svg/SVGStopElement.cpp \
-        ksvg2/svg/SVGStringList.cpp \
-        ksvg2/svg/SVGStylable.cpp \
-        ksvg2/svg/SVGStyledElement.cpp \
-        ksvg2/svg/SVGStyledLocatableElement.cpp \
-        ksvg2/svg/SVGStyledTransformableElement.cpp \
-        ksvg2/svg/SVGStyleElement.cpp \
-        ksvg2/svg/SVGSVGElement.cpp \
-        ksvg2/svg/SVGSwitchElement.cpp \
-        ksvg2/svg/SVGSymbolElement.cpp \
-        ksvg2/svg/SVGTests.cpp \
-        ksvg2/svg/SVGTextContentElement.cpp \
-        ksvg2/svg/SVGTextElement.cpp \
-        ksvg2/svg/SVGTextPositioningElement.cpp \
-        ksvg2/svg/SVGTitleElement.cpp \
-        ksvg2/svg/SVGTransformable.cpp \
-        ksvg2/svg/SVGTransform.cpp \
-        ksvg2/svg/SVGTransformDistance.cpp \
-        ksvg2/svg/SVGTransformList.cpp \
-        ksvg2/svg/SVGTRefElement.cpp \
-        ksvg2/svg/SVGTSpanElement.cpp \
-        ksvg2/svg/SVGURIReference.cpp \
-        ksvg2/svg/SVGUseElement.cpp \
-        ksvg2/svg/SVGViewElement.cpp \
-        ksvg2/svg/SVGZoomAndPan.cpp \
-        platform/graphics/svg/filters/SVGFEBlend.cpp \
-        platform/graphics/svg/filters/SVGFEColorMatrix.cpp \
-        platform/graphics/svg/filters/SVGFEComponentTransfer.cpp \
-        platform/graphics/svg/filters/SVGFEComposite.cpp \
-        platform/graphics/svg/filters/SVGFEConvolveMatrix.cpp \
-        platform/graphics/svg/filters/SVGFEDiffuseLighting.cpp \
-        platform/graphics/svg/filters/SVGFEDisplacementMap.cpp \
-        platform/graphics/svg/filters/SVGFEFlood.cpp \
-        platform/graphics/svg/filters/SVGFEGaussianBlur.cpp \
-        platform/graphics/svg/filters/SVGFEImage.cpp \
-        platform/graphics/svg/filters/SVGFEMerge.cpp \
-        platform/graphics/svg/filters/SVGFEMorphology.cpp \
-        platform/graphics/svg/filters/SVGFEOffset.cpp \
-        platform/graphics/svg/filters/SVGFESpecularLighting.cpp \
-        platform/graphics/svg/filters/SVGFETurbulence.cpp \
-        platform/graphics/svg/filters/SVGFilterEffect.cpp \
-        platform/graphics/svg/filters/SVGLightSource.cpp \
-        platform/graphics/svg/SVGImage.cpp \
-        platform/graphics/svg/SVGPaintServer.cpp \
-        platform/graphics/svg/SVGPaintServerGradient.cpp \
-        platform/graphics/svg/SVGPaintServerLinearGradient.cpp \
-        platform/graphics/svg/SVGPaintServerPattern.cpp \
-        platform/graphics/svg/SVGPaintServerRadialGradient.cpp \
-        platform/graphics/svg/SVGPaintServerSolid.cpp \
-        platform/graphics/svg/SVGResourceClipper.cpp \
-        platform/graphics/svg/SVGResource.cpp \
-        platform/graphics/svg/SVGResourceFilter.cpp \
-        platform/graphics/svg/SVGResourceMarker.cpp \
-        platform/graphics/svg/SVGResourceMasker.cpp \
-        rendering/RenderForeignObject.cpp \
-        rendering/RenderPath.cpp \
-        rendering/RenderSVGBlock.cpp \
-        rendering/RenderSVGContainer.cpp \
-        rendering/RenderSVGGradientStop.cpp \
-        rendering/RenderSVGHiddenContainer.cpp \
-        rendering/RenderSVGImage.cpp \
-        rendering/RenderSVGInline.cpp \
-        rendering/RenderSVGInlineText.cpp \
-        rendering/RenderSVGText.cpp \
-        rendering/RenderSVGTSpan.cpp \
-        rendering/SVGInlineFlowBox.cpp \
-        rendering/SVGInlineTextBox.cpp \
-        rendering/SVGRootInlineBox.cpp
-
-qt-port:SOURCES += \
-        platform/graphics/svg/qt/RenderPathQt.cpp \
-        platform/graphics/svg/qt/SVGPaintServerGradientQt.cpp \
-        platform/graphics/svg/qt/SVGPaintServerLinearGradientQt.cpp \
-        platform/graphics/svg/qt/SVGPaintServerPatternQt.cpp \
-        platform/graphics/svg/qt/SVGPaintServerQt.cpp \
-        platform/graphics/svg/qt/SVGPaintServerRadialGradientQt.cpp \
-        platform/graphics/svg/qt/SVGPaintServerSolidQt.cpp \
-        platform/graphics/svg/qt/SVGResourceClipperQt.cpp \
-        platform/graphics/svg/qt/SVGResourceFilterQt.cpp \
-        platform/graphics/svg/qt/SVGResourceMaskerQt.cpp
-
-gtk-port:SOURCES += \
-        platform/graphics/svg/cairo/RenderPathCairo.cpp \
-        platform/graphics/svg/cairo/SVGPaintServerCairo.cpp \
-        platform/graphics/svg/cairo/SVGPaintServerGradientCairo.cpp \
-        platform/graphics/svg/cairo/SVGPaintServerPatternCairo.cpp \
-        platform/graphics/svg/cairo/SVGPaintServerSolidCairo.cpp \
-        platform/graphics/svg/cairo/SVGResourceClipperCairo.cpp \
-        platform/graphics/svg/cairo/SVGResourceMaskerCairo.cpp
-
-        # GENERATOR 5-C:
-        svgnames_a.output = tmp/SVGNames.cpp
-        svgnames_a.commands = perl $$PWD/ksvg2/scripts/make_names.pl --tags $$PWD/ksvg2/svg/svgtags.in --attrs $$PWD/ksvg2/svg/svgattrs.in --namespace SVG --cppNamespace WebCore --namespaceURI 'http://www.w3.org/2000/svg' --factory --attrsNullNamespace --preprocessor \"$${QMAKE_MOC} -E\" --output tmp
-        svgnames_a.input = SVG_NAMES
-        svgnames_a.dependency_type = TYPE_C
-        svgnames_a.CONFIG = target_predeps
-        svgnames_a.variable_out = GENERATED_SOURCES
-        svgnames_a.clean = ${QMAKE_FILE_OUT} tmp/SVGNames.h
-        QMAKE_EXTRA_COMPILERS += svgnames_a
-        svgnames_b.output = tmp/SVGElementFactory.cpp
-        svgnames_b.commands = @echo -n ''
-        svgnames_b.input = SVG_NAMES
-        svgnames_b.depends = tmp/SVGNames.cpp
-        svgnames_b.CONFIG = target_predeps
-        svgnames_b.variable_out = GENERATED_SOURCES
-        svgnames_b.clean += tmp/SVGElementFactory.h ${QMAKE_FILE_OUT}
-        QMAKE_EXTRA_COMPILERS += svgnames_b
-
-        # GENERATOR 5-D:
-        xlinknames.output = tmp/XLinkNames.cpp
-        xlinknames.commands = perl $$PWD/ksvg2/scripts/make_names.pl --attrs $$PWD/ksvg2/misc/xlinkattrs.in --namespace XLink --cppNamespace WebCore --namespaceURI 'http://www.w3.org/1999/xlink' --preprocessor \"$${QMAKE_MOC} -E\" --output tmp
-        xlinknames.input = XLINK_NAMES
-        xlinknames.dependency_type = TYPE_C
-        xlinknames.CONFIG = target_predeps
-        xlinknames.variable_out = GENERATED_SOURCES
-        xlinknames.clean = ${QMAKE_FILE_OUT} tmp/XLinkNames.h
-        QMAKE_EXTRA_COMPILERS += xlinknames
-}
-
-
-# GENERATOR 1: IDL compiler
-idl.output = tmp/JS${QMAKE_FILE_BASE}.cpp
-idl.variable_out = GENERATED_SOURCES
-idl.input = IDL_BINDINGS
-idl.commands = perl -I$$PWD/bindings/scripts $$PWD/bindings/scripts/generate-bindings.pl --defines \"$${FEATURE_DEFINES_JAVASCRIPT}\" --generator JS --include $$PWD/dom --include $$PWD/html --include $$PWD/xml --include $$PWD/ksvg2/svg --outputdir tmp --preprocessor \"$${QMAKE_MOC} -E\" ${QMAKE_FILE_NAME}
-idl.CONFIG += target_predeps
-idl.clean = tmp/JS${QMAKE_FILE_BASE}.h ${QMAKE_FILE_OUT}
-QMAKE_EXTRA_COMPILERS += idl
-
-# GENERATOR 2-A: LUT creator
-#lut.output = tmp/${QMAKE_FILE_BASE}.lut.h
-#lut.commands = perl $$PWD/../JavaScriptCore/kjs/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT}
-#lut.depend = ${QMAKE_FILE_NAME}
-#lut.input = LUT_FILES
-#lut.CONFIG += no_link
-#QMAKE_EXTRA_COMPILERS += lut
-
-# GENERATOR 2-B: like JavaScriptCore/LUT Generator, but rename output
-luttable.output = tmp/${QMAKE_FILE_BASE}Table.cpp
-luttable.commands = perl $$PWD/../JavaScriptCore/kjs/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT}
-luttable.depend = ${QMAKE_FILE_NAME}
-luttable.input = LUT_TABLE_FILES
-luttable.CONFIG += no_link
-luttable.dependency_type = TYPE_C
-QMAKE_EXTRA_COMPILERS += luttable
-
-# GENERATOR 3: tokenizer (flex)
-tokenizer.output = tmp/${QMAKE_FILE_BASE}.cpp
-tokenizer.commands = flex -t < ${QMAKE_FILE_NAME} | perl $$PWD/css/maketokenizer > ${QMAKE_FILE_OUT}
-tokenizer.dependency_type = TYPE_C
-tokenizer.input = TOKENIZER
-tokenizer.CONFIG += target_predeps no_link
-QMAKE_EXTRA_COMPILERS += tokenizer
-
-# GENERATOR 4: CSS grammar
-cssbison.output = tmp/${QMAKE_FILE_BASE}.cpp
-cssbison.commands = perl $$PWD/css/makegrammar.pl ${QMAKE_FILE_NAME} tmp/${QMAKE_FILE_BASE}
-cssbison.depend = ${QMAKE_FILE_NAME}
-cssbison.input = CSSBISON
-cssbison.CONFIG = target_predeps
-cssbison.dependency_type = TYPE_C
-cssbison.variable_out = GENERATED_SOURCES
-cssbison.clean = ${QMAKE_FILE_OUT} tmp/${QMAKE_FILE_BASE}.h
-QMAKE_EXTRA_COMPILERS += cssbison
-#PRE_TARGETDEPS += tmp/CSSGrammar.cpp
-grammar_h_dep.target = tmp/CSSParser.o
-grammar_h_dep.depends = tmp/CSSGrammar.cpp tmp/HTMLNames.cpp
-QMAKE_EXTRA_TARGETS += grammar_h_dep
-
-# GENERATOR 5-A:
-htmlnames.output = tmp/HTMLNames.cpp
-htmlnames.commands = perl $$PWD/ksvg2/scripts/make_names.pl --tags $$PWD/html/HTMLTagNames.in --attrs $$PWD/html/HTMLAttributeNames.in --namespace HTML --namespacePrefix xhtml --cppNamespace WebCore --namespaceURI 'http://www.w3.org/1999/xhtml' --attrsNullNamespace --preprocessor \"$${QMAKE_MOC} -E\" --output tmp
-htmlnames.input = HTML_NAMES
-htmlnames.dependency_type = TYPE_C
-htmlnames.CONFIG = target_predeps
-htmlnames.variable_out = GENERATED_SOURCES
-htmlnames.clean = ${QMAKE_FILE_OUT} tmp/HTMLNames.h
-QMAKE_EXTRA_COMPILERS += htmlnames
-
-# GENERATOR 5-B:
-xmlnames.output = tmp/XMLNames.cpp
-xmlnames.commands = perl $$PWD/ksvg2/scripts/make_names.pl --attrs $$PWD/xml/xmlattrs.in --namespace XML --cppNamespace WebCore --namespaceURI 'http://www.w3.org/XML/1998/namespace' --preprocessor \"$${QMAKE_MOC} -E\" --output tmp
-xmlnames.input = XML_NAMES
-xmlnames.dependency_type = TYPE_C
-xmlnames.CONFIG = target_predeps
-xmlnames.variable_out = GENERATED_SOURCES
-xmlnames.clean = ${QMAKE_FILE_OUT} tmp/XMLNames.h
-QMAKE_EXTRA_COMPILERS += xmlnames
-
-# GENERATOR 6-A:
-cssprops.output = tmp/CSSPropertyNames.c
-cssprops.input = WALDOCSSPROPS
-cssprops.commands = $(COPY_FILE) ${QMAKE_FILE_NAME} tmp && cd tmp && perl $$PWD/css/makeprop.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.gperf
-cssprops.CONFIG = target_predeps no_link
-cssprops.clean = ${QMAKE_FILE_OUT} tmp/CSSPropertyNames.h
-QMAKE_EXTRA_COMPILERS += cssprops
-
-# GENERATOR 6-B:
-cssvalues.output = tmp/CSSValueKeywords.c
-cssvalues.input = WALDOCSSVALUES
-cssvalues.commands = $(COPY_FILE) ${QMAKE_FILE_NAME} tmp && cd tmp && perl $$PWD/css/makevalues.pl && $(DEL_FILE) CSSValueKeywords.in CSSValueKeywords.strip CSSValueKeywords.gperf
-cssvalues.CONFIG = target_predeps no_link
-cssvalues.clean = ${QMAKE_FILE_OUT} tmp/CSSValueKeywords.h
-QMAKE_EXTRA_COMPILERS += cssvalues
-
-# GENERATOR 7-A:
-svgcssproperties.output = tmp/ksvgcssproperties.h
-svgcssproperties.input = SVGCSSPROPERTIES
-svgcssproperties.commands = $(COPY_FILE) ${QMAKE_FILE_IN} ${QMAKE_VAR_OBJECTS_DIR_WTR}ksvgcssproperties.in && cd tmp && perl $$PWD/ksvg2/scripts/cssmakeprops -n SVG -f ksvgcssproperties.in && $(DEL_FILE) ksvgcssproperties.in ksvgcssproperties.gperf
-svgcssproperties.CONFIG = target_predeps no_link
-svgcssproperties.clean = ${QMAKE_FILE_OUT} tmp/ksvgcssproperties.c
-QMAKE_EXTRA_COMPILERS += svgcssproperties
-
-# GENERATOR 7-B:
-svgcssvalues.output = tmp/ksvgcssvalues.h
-svgcssvalues.input = SVGCSSVALUES
-svgcssvalues.commands = perl -ne \"print lc\" $$PWD/ksvg2/css/CSSValueKeywords.in > tmp/ksvgcssvalues.in && cd tmp && perl $$PWD/ksvg2/scripts/cssmakevalues -n SVG -f ksvgcssvalues.in && $(DEL_FILE) ksvgcssvalues.in ksvgcssvalues.gperf
-svgcssvalues.CONFIG = target_predeps no_link
-svgcssvalues.clean = ${QMAKE_FILE_OUT} tmp/ksvgcssvalues.c tmp/CSSValueKeywords.h
-QMAKE_EXTRA_COMPILERS += svgcssvalues
-
-# GENERATOR 8-A:
-entities.output = tmp/HTMLEntityNames.c
-entities.commands = gperf -a -L ANSI-C -C -G -c -o -t --key-positions="*" -N findEntity -D -s 2 < $$PWD/html/HTMLEntityNames.gperf > tmp/HTMLEntityNames.c
-entities.input = ENTITIES_GPERF
-entities.dependency_type = TYPE_C
-entities.CONFIG = target_predeps no_link
-entities.clean = ${QMAKE_FILE_OUT}
-QMAKE_EXTRA_COMPILERS += entities
-
-# GENERATOR 8-B:
-doctypestrings.output = tmp/${QMAKE_FILE_BASE}.cpp
-doctypestrings.input = DOCTYPESTRINGS
-doctypestrings.commands = perl -e \"print \'$${LITERAL_HASH}include <string.h>\';\" > ${QMAKE_FILE_OUT} && echo // bogus >> ${QMAKE_FILE_OUT} && gperf -CEot -L ANSI-C --key-positions="*" -N findDoctypeEntry -F ,PubIDInfo::eAlmostStandards,PubIDInfo::eAlmostStandards < ${QMAKE_FILE_NAME} >> ${QMAKE_FILE_OUT}
-doctypestrings.dependency_type = TYPE_C
-doctypestrings.CONFIG += target_predeps no_link
-doctypestrings.clean = ${QMAKE_FILE_OUT}
-QMAKE_EXTRA_COMPILERS += doctypestrings
-
-# GENERATOR 8-C:
-colordata.output = tmp/ColorData.c
-colordata.commands = perl -e \"print \'$${LITERAL_HASH}include <string.h>\';\" > ${QMAKE_FILE_OUT} && echo // bogus >> ${QMAKE_FILE_OUT} && gperf -CDEot -L ANSI-C --key-positions="*" -N findColor -D -s 2 < ${QMAKE_FILE_NAME} >> ${QMAKE_FILE_OUT}
-colordata.input = COLORDAT_GPERF
-colordata.CONFIG = target_predeps no_link
-QMAKE_EXTRA_COMPILERS += colordata
-
-# GENERATOR 9:
-stylesheets.output = tmp/UserAgentStyleSheetsData.cpp
-stylesheets.commands = perl $$PWD/css/make-css-file-arrays.pl --preprocessor \"$${QMAKE_MOC} -E\" tmp/UserAgentStyleSheets.h tmp/UserAgentStyleSheetsData.cpp $$PWD/css/html4.css $$PWD/css/quirks.css $$PWD/css/svg.css $$PWD/css/view-source.css
-stylesheets.input = STYLESHEETS_EMBED
-stylesheets.CONFIG = target_predeps
-stylesheets.variable_out = GENERATED_SOURCES
-stylesheets.clean = ${QMAKE_FILE_OUT} tmp/UserAgentStyleSheets.h
-QMAKE_EXTRA_COMPILERS += stylesheets
-
-# GENERATOR 10: XPATH grammar
-xpathbison.output = tmp/${QMAKE_FILE_BASE}.cpp
-xpathbison.commands = bison -d -p xpathyy ${QMAKE_FILE_NAME} -o ${QMAKE_FILE_BASE}.tab.c && $(MOVE) ${QMAKE_FILE_BASE}.tab.c tmp/${QMAKE_FILE_BASE}.cpp && $(MOVE) ${QMAKE_FILE_BASE}.tab.h tmp/${QMAKE_FILE_BASE}.h
-xpathbison.depend = ${QMAKE_FILE_NAME}
-xpathbison.input = XPATHBISON
-xpathbison.CONFIG = target_predeps
-xpathbison.dependency_type = TYPE_C
-xpathbison.variable_out = GENERATED_SOURCES
-xpathbison.clean = ${QMAKE_FILE_OUT} tmp/${QMAKE_FILE_BASE}.h
-QMAKE_EXTRA_COMPILERS += xpathbison
-
-qt-port {
-    target.path = $$[QT_INSTALL_LIBS]
-    include($$PWD/../WebKit/qt/Api/headers.pri)
-    headers.files = $$WEBKIT_API_HEADERS
-    headers.path = $$[QT_INSTALL_HEADERS]/QtWebKit
-    prf.files = $$PWD/../WebKit/qt/Api/qtwebkit.prf
-    prf.path = $$[QT_INSTALL_PREFIX]/mkspecs/features
-
-
-    win32-* {
-        DLLDESTDIR = $$OUTPUT_DIR/bin
-
-        dlltarget.commands = $(COPY_FILE) $(DESTDIR)$(TARGET) $$[QT_INSTALL_BINS]
-        dlltarget.CONFIG = no_path
-        INSTALLS += dlltarget
-    }
-
-
-    INSTALLS += target headers prf
-
-    unix {
-        CONFIG += create_pc create_prl
-        QMAKE_PKGCONFIG_LIBDIR = $$target.path
-        QMAKE_PKGCONFIG_INCDIR = $$headers.path
-        QMAKE_PKGCONFIG_DESTDIR = pkgconfig
-        lib_replace.match = $$DESTDIR
-        lib_replace.replace = $$[QT_INSTALL_LIBS]
-        QMAKE_PKGCONFIG_INSTALL_REPLACE += lib_replace
-    }
-}
-
-gtk-port {
-    isEmpty(WEBKIT_LIB_DIR):WEBKIT_LIB_DIR=$$[QT_INSTALL_LIBS]
-    isEmpty(WEBKIT_INC_DIR):WEBKIT_INC_DIR=$$[QT_INSTALL_HEADERS]/WebKitGtk
-
-    target.path = $$WEBKIT_LIB_DIR
-    include($$PWD/../WebKit/gtk/Api/headers.pri)
-    headers.files = $$WEBKIT_API_HEADERS
-    headers.path = $$WEBKIT_INC_DIR
-    INSTALLS += target headers
-
-    unix {
-        CONFIG += create_pc create_prl
-        QMAKE_PKGCONFIG_LIBDIR = $$target.path
-        QMAKE_PKGCONFIG_INCDIR = $$headers.path
-        QMAKE_PKGCONFIG_DESTDIR = pkgconfig
-        lib_replace.match = $$DESTDIR
-        lib_replace.replace = $$[QT_INSTALL_LIBS]
-        QMAKE_PKGCONFIG_INSTALL_REPLACE += lib_replace
-    }
-
-    GENMARSHALS = ../WebKit/gtk/Api/webkitgtk-marshal.list
-    GENMARSHALS_PREFIX = webkit_marshal
-
-    #
-    # integrate glib-genmarshal as additional compiler
-    #
-    QMAKE_GENMARSHAL_CC  = glib-genmarshal
-    glib-genmarshal.commands = $${QMAKE_GENMARSHAL_CC} --prefix=$${GENMARSHALS_PREFIX} ${QMAKE_FILE_IN} --header --body >${QMAKE_FILE_OUT}
-    glib-genmarshal.output = $$OUT_PWD/${QMAKE_FILE_BASE}.h
-    glib-genmarshal.input = GENMARSHALS
-    glib-genmarshal.CONFIG = no_link
-    glib-genmarshal.variable_out = PRE_TARGETDEPS
-    glib-genmarshal.name = GENMARSHALS
-    QMAKE_EXTRA_UNIX_COMPILERS += glib-genmarshal
-}
--- a/webengine/osswebengine/WebCore/bindings/js/kjs_proxy.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/bindings/js/kjs_proxy.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -54,6 +54,7 @@
     ASSERT(!m_script || !m_script->context());
     
     if (m_script) {
+        ((JSDOMWindow*)m_globalObject)->clear();
         m_script = 0;
     
         // It's likely that destroying the interpreter has created a lot of garbage.
@@ -151,10 +152,10 @@
 
   // Build the global object - which is a Window instance
   JSLock lock;
-  JSObject* globalObject = new JSDOMWindow(m_frame->domWindow());
-
+  m_globalObject = new JSDOMWindow(m_frame->domWindow());
+  
   // Create a KJS interpreter for this frame
-  m_script = new ScriptInterpreter(globalObject, m_frame);
+  m_script = new ScriptInterpreter(m_globalObject, m_frame);
 
   String userAgent = m_frame->loader()->userAgent(m_frame->document() ? m_frame->document()->URL() : KURL());
   if (userAgent.find("Microsoft") >= 0 || userAgent.find("MSIE") >= 0)
--- a/webengine/osswebengine/WebCore/bindings/js/kjs_proxy.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/bindings/js/kjs_proxy.h	Fri Jul 03 15:54:40 2009 +0100
@@ -26,6 +26,8 @@
 namespace KJS {
     class JSValue;
     class ScriptInterpreter;
+    class JSObject;
+
 }
 
 namespace WebCore {
@@ -61,6 +63,7 @@
     RefPtr<KJS::ScriptInterpreter> m_script;
     Frame* m_frame;
     int m_handlerLineno;
+    KJS::JSObject* m_globalObject;
 };
 
 }
--- a/webengine/osswebengine/WebCore/bindings/js/symbian/kjs_console.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/bindings/js/symbian/kjs_console.h	Fri Jul 03 15:54:40 2009 +0100
@@ -91,7 +91,7 @@
     {
     public:
         ConsoleFunc(ExecState *exec, int aFuncType);
-        virtual ~ConsoleFunc() {}
+        virtual ~ConsoleFunc() {delete d;}
 
     //From JSObject
     public:
--- a/webengine/osswebengine/WebCore/css/CSSImageValue.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/css/CSSImageValue.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -59,7 +59,7 @@
             m_image = loader->requestImage(getStringValue());
         else
             // FIXME: Should find a way to make these images sit in their own memory partition, since they are user agent images.
-            m_image = static_cast<CachedImage*>(cache()->requestResource(0, CachedResource::ImageResource, KURL(getStringValue().deprecatedString()), 0, 0));
+            m_image = static_cast<CachedImage*>(cache()->requestResource(0, CachedResource::ImageResource, KURL(getStringValue().deprecatedString()), String()));
 
         if (m_image)
             m_image->ref(this);
--- a/webengine/osswebengine/WebCore/css/cssstyleselector.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/css/cssstyleselector.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -22,7 +22,6 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#include "config.h"
 #include "CSSStyleSelector.h"
 
 #include "CSSBorderImageValue.h"
@@ -225,6 +224,14 @@
 static CSSStyleSelector::Encodedurl *currentEncodedURL = 0;
 static PseudoState pseudoState;
 
+struct defaultStyleNACleaner {
+    ~defaultStyleNACleaner() {
+        delete CSSStyleSelector::styleNotYetAvailable;
+        CSSStyleSelector::styleNotYetAvailable = 0;
+    }
+};
+struct defaultStyleNACleaner styleNACleaner;
+
 CSSStyleSelector::CSSStyleSelector(Document* doc, const String& userStyleSheet, StyleSheetList *styleSheets, bool _strictParsing)
 {
     init();
@@ -3626,7 +3633,15 @@
         if (id == CSS_VAL_NONE)
             appearance = NoAppearance;
         else
+#if PLATFORM ( SYMBIAN )
+        {
+        if (id == CSS_VAL_SEARCHFIELD)
+            id = CSS_VAL_TEXTFIELD;  
+#endif
             appearance = EAppearance(id - CSS_VAL_CHECKBOX + 1);
+#if PLATFORM ( SYMBIAN )
+        }
+#endif
         style->setAppearance(appearance);
         return;
     }
@@ -4990,4 +5005,46 @@
     return m_selectorAttrs.contains(attrname.impl());
 }
 
+#if PLATFORM(SYMBIAN)
+void CSSStyleSelector::deleteDefaultStyle()
+{
+    delete defaultStyle;
+    defaultStyle = 0;
+    delete defaultQuirksStyle;
+    defaultQuirksStyle = 0;
+    delete defaultPrintStyle;
+    defaultPrintStyle = 0;
+    delete defaultViewSourceStyle;
+    defaultViewSourceStyle = 0;
+
+    defaultSheet->deref();
+//    delete defaultSheet;
+//    defaultSheet = 0;
+
+    // styleNotYetAvailable->deref();
+    //goes to overridden delete operator but calls destructor
+    delete styleNotYetAvailable;
+    //release cell allocated because overridder delete does not do that.
+    free(styleNotYetAvailable);
+    styleNotYetAvailable = 0;
+
+    quirksSheet->deref();
+    // delete quirksSheet;
+    // quirksSheet = 0;
+
+    viewSourceSheet->deref();
+    // delete viewSourceSheet;
+    // viewSourceSheet = 0;
+
+#if ENABLE(SVG)
+    svgSheet->deref();
+    // delete svgSheet;
+    // svgSheet = 0;
+#endif
+
+    //*currentEncodedURL->deref(); //static CSSStyleSelector::Encodedurl *currentEncodedURL = 0;
+    pseudoState = PseudoUnknown;
+}
+#endif
+
 } // namespace WebCore
--- a/webengine/osswebengine/WebCore/css/cssstyleselector.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/css/cssstyleselector.h	Fri Jul 03 15:54:40 2009 +0100
@@ -24,6 +24,7 @@
 #ifndef CSSStyleSelector_h
 #define CSSStyleSelector_h
 
+#include "config.h"
 #include "DeprecatedString.h"
 #include "RenderStyle.h"
 #include <wtf/HashSet.h>
@@ -92,6 +93,11 @@
 
         static void loadDefaultStyle();
 
+#if PLATFORM(SYMBIAN)
+        static void deleteDefaultStyle();
+#endif
+
+
         void initElementAndPseudoState(Element* e);
         void initForStyleResolve(Element* e, RenderStyle* parentStyle);
         RenderStyle *styleForElement(Element*, RenderStyle* parentStyle=0, bool allowSharing=true, bool resolveForRootDefault=false);
--- a/webengine/osswebengine/WebCore/dom/Document.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/dom/Document.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -253,6 +253,17 @@
 
 DeprecatedPtrList<Document>*  Document::changedDocuments = 0;
 
+struct cleanupChangedDocuments {
+    ~cleanupChangedDocuments() {
+    	if(Document::changedDocuments)
+    		{
+    		delete Document::changedDocuments;
+    		Document::changedDocuments = NULL;
+    		}
+    }
+};
+static cleanupChangedDocuments deleteChangedDocuments;
+
 // FrameView might be 0
 Document::Document(DOMImplementation* impl, Frame* frame, bool isXHTML)
     : ContainerNode(0)
@@ -821,10 +832,28 @@
 
 void Document::addElementById(const AtomicString& elementId, Element* element)
 {
-    if (!m_elementsById.contains(elementId.impl()))
-        m_elementsById.set(elementId.impl(), element);
-    else
-        m_duplicateIds.add(elementId.impl());
+typedef HashMap<AtomicStringImpl*, Element*>::iterator iterator;
+   if (!m_duplicateIds.contains(elementId.impl())) {
+       // Fast path. The ID is not already in m_duplicateIds, so we assume that it's
+       // also not already in m_elementsById and do an add. If that add succeeds, we're done.
+       pair<iterator, bool> addResult = m_elementsById.add(elementId.impl(), element);
+       if (addResult.second)
+           return;
+       // The add failed, so this ID was already cached in m_elementsById.
+       // There are multiple elements with this ID. Remove the m_elementsById
+       // cache for this ID so getElementById searches for it next time it is called.
+       m_elementsById.remove(addResult.first);
+       m_duplicateIds.add(elementId.impl());
+   } else {
+       // There are multiple elements with this ID. If it exists, remove the m_elementsById
+       // cache for this ID so getElementById searches for it next time it is called.
+       iterator cachedItem = m_elementsById.find(elementId.impl());
+       if (cachedItem != m_elementsById.end()) {
+           m_elementsById.remove(cachedItem);
+           m_duplicateIds.add(elementId.impl());
+       }
+   }
+   m_duplicateIds.add(elementId.impl());
 }
 
 void Document::removeElementById(const AtomicString& elementId, Element* element)
--- a/webengine/osswebengine/WebCore/dom/Element.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/dom/Element.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -24,6 +24,8 @@
 #include "config.h"
 #include "Element.h"
 
+#include "Chrome.h"
+#include "ChromeClient.h"
 #include "CSSStyleSelector.h"
 #include "Document.h"
 #include "Editor.h"
@@ -994,8 +996,9 @@
     if (!supportsFocus())
         return;
     
-    if (Page* page = doc->page())
+    if (Page* page = doc->page()) {
         page->focusController()->setFocusedNode(this, doc->frame());
+    }
 
     if (!isFocusable()) {
         createRareData()->m_needsFocusAppearanceUpdateSoonAfterAttach = true;
@@ -1004,6 +1007,11 @@
         
     cancelFocusAppearanceUpdate();
     updateFocusAppearance(restorePreviousSelection);
+
+    if (Page* page = doc->page()) {
+        // must be last thing we do here    
+        page->chrome()->client()->focusedElementChanged(this);
+    }
 }
 
 void Element::updateFocusAppearance(bool restorePreviousSelection)
--- a/webengine/osswebengine/WebCore/dom/QualifiedName.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/dom/QualifiedName.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -139,7 +139,7 @@
         return;
 #endif
 
-    if (m_impl->hasOneRef())
+    if (m_impl->hasOneRef() && gNameCache )
         gNameCache->remove(m_impl);
     m_impl->deref();
 }
@@ -173,4 +173,13 @@
     }
 }
 
+void QualifiedName::cleanup() 
+{
+    if( gNameCache ) {
+        gNameCache->clear();
+        delete gNameCache;
+        gNameCache=NULL;
+    }
 }
+
+}
--- a/webengine/osswebengine/WebCore/dom/QualifiedName.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/dom/QualifiedName.h	Fri Jul 03 15:54:40 2009 +0100
@@ -64,7 +64,7 @@
     
     // Init routine for globals
     static void init();
-
+    static void cleanup();
 private:
 
     void ref() { m_impl->ref(); } 
--- a/webengine/osswebengine/WebCore/dom/StyledElement.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/dom/StyledElement.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -67,9 +67,27 @@
 //typedef HashMap<MappedAttributeKey, CSSMappedAttributeDeclaration*, MappedAttributeHash, MappedAttributeKeyTraits> MappedAttributeDecls;
 typedef MappedAttributeKey* MappedAttributeKeyPtr;
 typedef HashMap<MappedAttributeKeyPtr, CSSMappedAttributeDeclaration*, MappedAttributeHash, MappedAttributeKeyTraits> MappedAttributeDecls;
+typedef HashMap<MappedAttributeKeyPtr, CSSMappedAttributeDeclaration*, MappedAttributeHash, MappedAttributeKeyTraits>::iterator MappedAttributeDeclsIterator;
 
 static MappedAttributeDecls* mappedAttributeDecls = 0;
 
+struct mappedAttributeCleaner {
+    ~mappedAttributeCleaner() {
+        if( mappedAttributeDecls ) {
+        	MappedAttributeDeclsIterator end = mappedAttributeDecls->end();
+	        for (MappedAttributeDeclsIterator it = mappedAttributeDecls->begin(); it != end; ++it) 
+	        	{
+	        	MappedAttributeKey* obj = (*it).first;
+	        	delete obj;
+	        	}
+	        mappedAttributeDecls->clear();
+            delete mappedAttributeDecls;
+            mappedAttributeDecls = 0;
+        }
+    }
+};
+struct mappedAttributeCleaner mappedAttribute;
+
 CSSMappedAttributeDeclaration* StyledElement::getMappedAttributeDecl(MappedAttributeEntry entryType, Attribute* attr)
 {
     if (!mappedAttributeDecls)
--- a/webengine/osswebengine/WebCore/dom/XMLTokenizer.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/dom/XMLTokenizer.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -427,9 +427,9 @@
     globalDocLoader = docLoader;
 }
 
+static bool didInit = false;
 static xmlParserCtxtPtr createStringParser(xmlSAXHandlerPtr handlers, void* userData)
 {
-    static bool didInit = false;
     if (!didInit) {
         xmlInitParser();
         xmlRegisterInputCallbacks(matchFunc, openFunc, readFunc, closeFunc);
@@ -445,8 +445,18 @@
     xmlSwitchEncoding(parser, BOMHighByte == 0xFF ? XML_CHAR_ENCODING_UTF16LE : XML_CHAR_ENCODING_UTF16BE);
     return parser;
 }
+
 #endif
 
+void XMLTokenizer::cleanupXMLStringParser()
+{
+#ifndef USE_QXMLSTREAM
+    if( didInit ) {
+        xmlCleanupParser();
+    }
+#endif
+}
+
 // --------------------------------
 
 XMLTokenizer::XMLTokenizer(Document* _doc, FrameView* _view)
--- a/webengine/osswebengine/WebCore/dom/XMLTokenizer.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/dom/XMLTokenizer.h	Fri Jul 03 15:54:40 2009 +0100
@@ -116,7 +116,8 @@
 
         int lineNumber() const;
         int columnNumber() const;
-
+        
+        static void cleanupXMLStringParser();
     private:
         void initializeParserContext();
         void setCurrentNode(Node*);
--- a/webengine/osswebengine/WebCore/html/HTMLElementFactory.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/html/HTMLElementFactory.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -396,6 +396,16 @@
     gFunctionMap->set(tag.localName().impl(), func);
 }
 
+struct cleanupFuncMap {
+    ~cleanupFuncMap() {
+        if( gFunctionMap ) {
+            gFunctionMap->clear();
+            delete gFunctionMap;
+            gFunctionMap=0;
+        }
+    }
+};
+static cleanupFuncMap cleanup;
 static void createFunctionMap()
 {
     // Create the table.
--- a/webengine/osswebengine/WebCore/html/HTMLImageLoader.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/html/HTMLImageLoader.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -104,7 +104,7 @@
     if (!attr.isEmpty()) {
         if (m_loadManually) {
             doc->docLoader()->setAutoLoadImages(false);
-            newImage = new CachedImage(doc->docLoader(), parseURL(attr), false /* not for cache */);
+            newImage = new CachedImage(parseURL(attr));
             newImage->setLoading(true);
             newImage->setDocLoader(doc->docLoader());
             doc->docLoader()->m_docResources.set(newImage->url(), newImage);
--- a/webengine/osswebengine/WebCore/html/HTMLInputElement.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/html/HTMLInputElement.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -1175,7 +1175,7 @@
 
         String key = static_cast<KeyboardEvent*>(evt)->keyIdentifier();
 
-        if (key == "U+0020") {
+        if (key == "U+0020" || key == "U+000020") {
             switch (inputType()) {
                 case BUTTON:
                 case CHECKBOX:
@@ -1206,7 +1206,6 @@
         if (key == "Enter") {
             switch (inputType()) {
                 case BUTTON:
-                case CHECKBOX:
                 case HIDDEN:
                 case ISINDEX:
                 case PASSWORD:
@@ -1223,7 +1222,9 @@
                     // Simulate mouse click for enter for these types of elements.
                     clickElement = true;
                     break;
+                case CHECKBOX:
                 case RADIO:
+                    clickElement = true;
                     break; // Don't do anything for enter on a radio button.
             }
         }
--- a/webengine/osswebengine/WebCore/loader/Cache.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/Cache.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -20,7 +20,6 @@
     Boston, MA 02110-1301, USA.
 */
 
-#include "config.h"
 #include "Cache.h"
 
 #include "CachedCSSStyleSheet.h"
@@ -44,9 +43,22 @@
 static const double cMinDelayBeforeLiveDecodedPrune = 1; // Seconds.
 static const float cTargetPrunePercentage = .95f; // Percentage of capacity toward which we prune, to avoid immediately pruning again.
 
+#if PLATFORM(SYMBIAN)
+static Cache* staticCache;
+static bool staticCacheInit = false;
+#endif
+
 Cache* cache()
 {
+#if PLATFORM(SYMBIAN)
+    if (!staticCacheInit)
+    {
+        staticCache = new Cache;
+        staticCacheInit = true;
+    }
+#else
     static Cache* staticCache = new Cache;
+#endif
     return staticCache;
 }
 
@@ -61,23 +73,23 @@
 {
 }
 
-static CachedResource* createResource(CachedResource::Type type, DocLoader* docLoader, const KURL& url, const String* charset, bool skipCanLoadCheck = false, bool sendResourceLoadCallbacks = true)
+static CachedResource* createResource(CachedResource::Type type, const KURL& url, const String& charset)
 {
     switch (type) {
     case CachedResource::ImageResource:
         // User agent images need to null check the docloader.  No other resources need to.
-        return new CachedImage(docLoader, url.url(), true /* for cache */);
+        return new CachedImage(url.url());
     case CachedResource::CSSStyleSheet:
-        return new CachedCSSStyleSheet(docLoader, url.url(), *charset, skipCanLoadCheck, sendResourceLoadCallbacks);
+        return new CachedCSSStyleSheet(url.url(), charset);
     case CachedResource::Script:
-        return new CachedScript(docLoader, url.url(), *charset);
+        return new CachedScript(url.url(), charset);
 #if ENABLE(XSLT)
     case CachedResource::XSLStyleSheet:
-        return new CachedXSLStyleSheet(docLoader, url.url());
+        return new CachedXSLStyleSheet(url.url());
 #endif
 #if ENABLE(XBL)
     case CachedResource::XBLStyleSheet:
-        return new CachedXBLDocument(docLoader, url.url());
+        return new CachedXBLDocument(url.url());
 #endif
     default:
         break;
@@ -87,9 +99,9 @@
 }
 
 #if PRELOAD_SCANNER_ENABLED
-CachedResource* Cache::requestResource(DocLoader* docLoader, CachedResource::Type type, const KURL& url, const String* charset, bool skipCanLoadCheck, bool sendResourceLoadCallbacks, bool isPreload)
+CachedResource* Cache::requestResource(DocLoader* docLoader, CachedResource::Type type, const KURL& url, const String& charset, bool isPreload)
 #else
-CachedResource* Cache::requestResource(DocLoader* docLoader, CachedResource::Type type, const KURL& url, const String* charset, bool skipCanLoadCheck, bool sendResourceLoadCallbacks)
+CachedResource* Cache::requestResource(DocLoader* docLoader, CachedResource::Type type, const KURL& url, const String& charset)
 #endif
 {
     // FIXME: Do we really need to special-case an empty URL?
@@ -105,7 +117,7 @@
         if (isPreload && !resource->isPreloaded())
             return 0;
 #endif
-        if (!skipCanLoadCheck && FrameLoader::restrictAccessToLocal() && !FrameLoader::canLoad(*resource, docLoader->doc())) {
+        if (FrameLoader::restrictAccessToLocal() && !FrameLoader::canLoad(*resource, docLoader->doc())) {
             Document* doc = docLoader->doc();
             if(doc)
                 FrameLoader::reportLocalLoadFailed(doc->page(), resource->url());
@@ -113,7 +125,7 @@
             return 0;
         }
     } else {
-        if (!skipCanLoadCheck && FrameLoader::restrictAccessToLocal() && !FrameLoader::canLoad(url, docLoader->doc())) {
+        if (FrameLoader::restrictAccessToLocal() && !FrameLoader::canLoad(url, docLoader->doc())) {
             Document* doc = docLoader->doc();
 #if PRELOAD_SCANNER_ENABLED
             if(doc && !isPreload)
@@ -126,9 +138,14 @@
         }
 
         // The resource does not exist. Create it.
-        resource = createResource(type, docLoader, url, charset, skipCanLoadCheck, sendResourceLoadCallbacks);
+        resource = createResource(type, url, charset);
         ASSERT(resource);
-        ASSERT(resource->inCache());
+
+        // Pretend the resource is in the cache, to prevent it from being deleted during the load() call. 
+	        // FIXME: CachedResource should just use normal refcounting instead. 
+	        resource->setInCache(true); 	         
+	        resource->load(docLoader);
+
         if (!disabled()) {
             m_resources.set(url.url(), resource);  // The size will be added in later once the resource is loaded and calls back to us with the new size.
             
@@ -161,6 +178,26 @@
     return resource;
 }
 
+CachedCSSStyleSheet* Cache::requestUserCSSStyleSheet(DocLoader* docLoader, const String& url, const String& charset) 
+{
+    if (CachedResource* existing = m_resources.get(url)) 
+        return existing->type() == CachedResource::CSSStyleSheet ? static_cast<CachedCSSStyleSheet*>(existing) : 0;	
+
+    CachedCSSStyleSheet* userSheet = new CachedCSSStyleSheet(url, charset); 
+ 
+    // Pretend the resource is in the cache, to prevent it from being deleted during the load() call. 
+    // FIXME: CachedResource should just use normal refcounting instead. 
+    userSheet->setInCache(true); 
+    // Don't load incrementally, skip load checks, don't send resource load callbacks. 
+    userSheet->load(docLoader, false, true, false); 
+    if (!disabled()) 
+        m_resources.set(url, userSheet); 
+    else 
+        userSheet->setInCache(false); 
+ 
+    return userSheet; 
+} 
+
 CachedResource* Cache::resourceForURL(const String& url)
 {
     return m_resources.get(url);
@@ -302,6 +339,7 @@
         // Remove from the appropriate LRU list.
         removeFromLRUList(resource);
         removeFromLiveDecodedResourcesList(resource);
+        removeFromLiveResourcesSize(resource);
         
         // Notify all doc loaders that might be observing this object still that it has been
         // extracted from the set of resources.
@@ -313,7 +351,8 @@
         int delta = -static_cast<int>(resource->size());
         if (delta)
             adjustSize(resource->referenced(), delta);
-    }
+    } else 
+        ASSERT(m_resources.get(resource->url()) != resource);
 
     if (resource->canDelete())
         delete resource;
@@ -652,6 +691,13 @@
         }
     }
 }
+
+void Cache::deleteStaticCache()
+{
+    delete staticCache;
+    staticCacheInit = false;
+}
+
 #endif
 
 } // namespace WebCore
--- a/webengine/osswebengine/WebCore/loader/Cache.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/Cache.h	Fri Jul 03 15:54:40 2009 +0100
@@ -27,6 +27,7 @@
 #ifndef Cache_h
 #define Cache_h
 
+#include "config.h"
 #include "CachePolicy.h"
 #include "CachedResource.h"
 #include "PlatformString.h"
@@ -39,6 +40,7 @@
 
 namespace WebCore  {
 
+class CachedCSSStyleSheet;
 class CachedResource;
 class DocLoader;
 class KURL;
@@ -94,11 +96,12 @@
     // Request resources from the cache.  A load will be initiated and a cache object created if the object is not
     // found in the cache.
 #if PRELOAD_SCANNER_ENABLED
-    CachedResource* requestResource(DocLoader*, CachedResource::Type, const KURL& url, const String* charset = 0, bool skipCanLoadCheck = false, bool sendResourceLoadCallbacks = true, bool isPreload = false);
+    CachedResource* requestResource(DocLoader*, CachedResource::Type, const KURL& url, const String& charset, bool isPreload = false);
 #else
-    CachedResource* requestResource(DocLoader*, CachedResource::Type, const KURL& url, const String* charset = 0, bool skipCanLoadCheck = false, bool sendResourceLoadCallbacks = true);
+    CachedResource* requestResource(DocLoader*, CachedResource::Type, const KURL& url, const String& charset);
 #endif
 
+	CachedCSSStyleSheet* requestUserCSSStyleSheet(DocLoader*, const String& url, const String& charset);
     // Sets the cache's memory capacities, in bytes. These will hold only approximately, 
     // since the decoded cost of resources like scripts and stylesheets is not known.
     //  - minDeadBytes: The maximum number of bytes that dead resources should consume when the cache is under pressure.
@@ -148,11 +151,24 @@
 
 #if PLATFORM(SYMBIAN)
     void clearImages();
+    static void deleteStaticCache();
 #endif
 
 private:
     Cache();
+
+#if PLATFORM(SYMBIAN)
+    ~Cache() {
+        typedef HashMap<String, CachedResource*>::iterator ResourceIt;
+        ResourceIt endIt = m_resources.end();
+        for(ResourceIt it=m_resources.begin();it != endIt; ++it) {
+            CachedResource* res = (*it).second;;
+            delete res;
+        }
+    }
+#else
     ~Cache(); // Not implemented to make sure nobody accidentally calls delete -- WebCore does not delete singletons.
+#endif
        
     LRUList* lruListFor(CachedResource*);
     void resourceAccessed(CachedResource*);
--- a/webengine/osswebengine/WebCore/loader/CachedCSSStyleSheet.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/CachedCSSStyleSheet.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -37,15 +37,13 @@
 
 namespace WebCore {
 
-CachedCSSStyleSheet::CachedCSSStyleSheet(DocLoader* dl, const String& url, const String& charset, bool skipCanLoadCheck, bool sendResourceLoadCallbacks)
-    : CachedResource(url, CSSStyleSheet, true, sendResourceLoadCallbacks)
+CachedCSSStyleSheet::CachedCSSStyleSheet(const String& url, const String& charset)
+    : CachedResource(url, CSSStyleSheet)
     , m_decoder(new TextResourceDecoder("text/css", charset))
 {
     // Prefer text/css but accept any type (dell.com serves a stylesheet
     // as text/html; see <http://bugs.webkit.org/show_bug.cgi?id=11451>).
     setAccept("text/css,*/*;q=0.1");
-    cache()->loader()->load(dl, this, false, skipCanLoadCheck, sendResourceLoadCallbacks);
-    m_loading = true;
 }
 
 CachedCSSStyleSheet::~CachedCSSStyleSheet()
--- a/webengine/osswebengine/WebCore/loader/CachedCSSStyleSheet.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/CachedCSSStyleSheet.h	Fri Jul 03 15:54:40 2009 +0100
@@ -39,7 +39,7 @@
 
     class CachedCSSStyleSheet : public CachedResource {
     public:
-        CachedCSSStyleSheet(DocLoader*, const String& URL, const String& charset, bool skipCanLoadCheck = false, bool sendResourceLoadCallbacks = true);
+        CachedCSSStyleSheet(const String& URL, const String& charset);
         virtual ~CachedCSSStyleSheet();
 
         const String& sheet() const { return m_sheet; }
--- a/webengine/osswebengine/WebCore/loader/CachedImage.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/CachedImage.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -48,20 +48,15 @@
 
 namespace WebCore {
 
-CachedImage::CachedImage(DocLoader* docLoader, const String& url, bool forCache)
-    : CachedResource(url, ImageResource, forCache)
+CachedImage::CachedImage(const String& url)
+    : CachedResource(url, ImageResource)
 {
     m_image = 0;
     m_status = Unknown;
-    if (!docLoader || docLoader->autoLoadImages())  {
-        m_loading = true;
-        cache()->loader()->load(docLoader, this, true);
-    } else
-        m_loading = false;
 }
 
 CachedImage::CachedImage(Image* image)
-    : CachedResource(String(), ImageResource, false /* not for cache */)
+    : CachedResource(String(), ImageResource)
 {
     m_image = image;
     m_status = Cached;
@@ -73,6 +68,14 @@
     delete m_image;
 }
 
+void CachedImage::load(DocLoader* docLoader) 
+{ 
+    if (!docLoader || docLoader->autoLoadImages()) 
+        CachedResource::load(docLoader, true, false, true); 
+    else 
+        m_loading = false; 
+} 
+
 void CachedImage::ref(CachedResourceClient* c)
 {
     CachedResource::ref(c);
@@ -92,10 +95,12 @@
 
 static Image* brokenImage()
 {
-    static Image* brokenImage;
-    if (!brokenImage)
-        brokenImage = Image::loadPlatformResource("missingImage");
-    return brokenImage;
+    static OwnPtr<Image*> brokenImage;
+    if (!brokenImage) {
+        brokenImage.set(Image::loadPlatformResource("missingImage"));
+    }
+    Image* ret = brokenImage.get();
+    return ret;
 }
 
 static Image* nullImage()
@@ -297,6 +302,7 @@
 {
     setDecodedSize(size_);
     notifyObservers();
+	checkNotify();
 }
 
 void CachedImage::setMimeType(const String& mime_)
--- a/webengine/osswebengine/WebCore/loader/CachedImage.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/CachedImage.h	Fri Jul 03 15:54:40 2009 +0100
@@ -38,10 +38,12 @@
     friend class Cache;
 
 public:
-    CachedImage(DocLoader*, const String& url, bool forCache);
+    CachedImage(const String& url);
     CachedImage(Image*);
     virtual ~CachedImage();
 
+    virtual void load(DocLoader* docLoader);
+
     Image* image() const;
 
     bool canRender() const { return !errorOccurred() && imageSize().width() > 0 && imageSize().height() > 0; }
--- a/webengine/osswebengine/WebCore/loader/CachedResource.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/CachedResource.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -35,15 +35,16 @@
 
 namespace WebCore {
 
-CachedResource::CachedResource(const String& URL, Type type, bool forCache, bool sendResourceLoadCallbacks)
+CachedResource::CachedResource(const String& URL, Type type)
     : m_lastDecodedAccessTime(0)
-    , m_sendResourceLoadCallbacks(sendResourceLoadCallbacks)
+    , m_sendResourceLoadCallbacks(true)
 #if PRELOAD_SCANNER_ENABLED
     , m_preloadCount(0)
     , m_preloadResult(PreloadNotReferenced)
     , m_requestedFromNetworkingLayer(false)
 #endif
-    , m_inCache(forCache)
+    , m_inCache(false)
+	, m_loading(false)
     , m_docLoader(0)
 {
     m_url = URL;
@@ -74,6 +75,7 @@
 {
     ASSERT(!inCache());
     ASSERT(!m_deleted);
+	ASSERT(cache()->resourceForURL(url()) != this);
 #ifndef NDEBUG
     m_deleted = true;
 #endif
@@ -82,6 +84,13 @@
         m_docLoader->removeCachedResource(this);
 }
 
+void CachedResource::load(DocLoader* docLoader, bool incremental, bool skipCanLoadCheck, bool sendResourceLoadCallbacks) 
+{ 
+    m_sendResourceLoadCallbacks = sendResourceLoadCallbacks; 
+    cache()->loader()->load(docLoader, this, incremental, skipCanLoadCheck, sendResourceLoadCallbacks); 
+    m_loading = true; 
+} 
+
 void CachedResource::finish()
 {
     m_status = Cached;
--- a/webengine/osswebengine/WebCore/loader/CachedResource.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/CachedResource.h	Fri Jul 03 15:54:40 2009 +0100
@@ -34,6 +34,7 @@
 
 class Cache;
 class CachedResourceClient;
+class CacheHandleBase;
 class DocLoader;
 class Request;
 
@@ -64,8 +65,10 @@
         Cached       // regular case
     };
 
-    CachedResource(const String& URL, Type, bool forCache = true, bool sendResourceLoadCallbacks = false);
+    CachedResource(const String& URL, Type);
     virtual ~CachedResource();
+	virtual void load(DocLoader* docLoader)  { load(docLoader, false, false, true); }
+	void load(DocLoader*, bool incremental, bool skipCanLoadCheck, bool sendResourceLoadCallbacks);
 
     virtual void setEncoding(const String&) { }
     virtual void data(PassRefPtr<SharedBuffer> data, bool allDataReceived) = 0;
@@ -87,7 +90,7 @@
     PreloadResult preloadResult() const { return m_preloadResult; }
     void setRequestedFromNetworkingLayer() { m_requestedFromNetworkingLayer = true; }
 #endif
-    virtual void allReferencesRemoved() {};
+    virtual void allReferencesRemoved() {}
 
     unsigned count() const { return m_clients.size(); }
 
@@ -144,7 +147,7 @@
     bool treatAsLocal() const { return m_shouldTreatAsLocal; }
     bool sendResourceLoadCallbacks() const { return m_sendResourceLoadCallbacks; }
     
-    virtual void destroyDecodedData() {};
+    virtual void destroyDecodedData() {}
 
     void setDocLoader(DocLoader* docLoader) { m_docLoader = docLoader; }
 #if PRELOAD_SCANNER_ENABLED      
--- a/webengine/osswebengine/WebCore/loader/CachedScript.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/CachedScript.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -37,23 +37,24 @@
 
 namespace WebCore {
 
-CachedScript::CachedScript(DocLoader* dl, const String& url, const String& charset)
+CachedScript::CachedScript(const String& url, const String& charset)
     : CachedResource(url, Script)
     , m_encoding(charset)
+	, m_decodedDataDeletionTimer(this, &CachedScript::decodedDataDeletionTimerFired)
 {
     // It's javascript we want.
     // But some websites think their scripts are <some wrong mimetype here>
     // and refuse to serve them if we only accept application/x-javascript.
     setAccept("*/*");
-    // load the file
-    cache()->loader()->load(dl, this, false);
-    m_loading = true;
+
     if (!m_encoding.isValid())
         m_encoding = Latin1Encoding();
 }
 
 CachedScript::~CachedScript()
 {
+	destroyDecodedData();
+	m_decodedDataDeletionTimer.stop();
 }
 
 void CachedScript::ref(CachedResourceClient* c)
@@ -70,15 +71,25 @@
         m_encoding = encoding;
 }
 
+void CachedScript::allReferencesRemoved() 
+{ 
+        destroyDecodedData(); 
+} 
+
+const String& CachedScript::script()  
+{  
+       if (!m_script && m_data) {  
+            m_script = m_encoding.decode(m_data->data(), encodedSize());  
+            setDecodedSize(m_script.length() * sizeof(UChar));  
+        }  
+       m_decodedDataDeletionTimer.startOneShot(0);  
+        return m_script;  
+}  
+
 void CachedScript::data(PassRefPtr<SharedBuffer> data, bool allDataReceived)
 {
-    if (!allDataReceived)
-        return;
-
     m_data = data;
     setEncodedSize(m_data.get() ? m_data->size() : 0);
-    if (m_data.get())
-        m_script = m_encoding.decode(m_data->data(), encodedSize());
     m_loading = false;
     checkNotify();
 }
@@ -100,4 +111,15 @@
     checkNotify();
 }
 
+void CachedScript::destroyDecodedData()
+{
+    m_script = String();
+    setDecodedSize(0);
 }
+
+void CachedScript::decodedDataDeletionTimerFired(Timer<CachedScript>*)  
+{  
+    destroyDecodedData();  
+} 
+
+}
--- a/webengine/osswebengine/WebCore/loader/CachedScript.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/CachedScript.h	Fri Jul 03 15:54:40 2009 +0100
@@ -30,6 +30,7 @@
 
 #include "CachedResource.h"
 #include "TextEncoding.h"
+#include "Timer.h"
 
 namespace WebCore {
 
@@ -37,12 +38,13 @@
 
     class CachedScript : public CachedResource {
     public:
-        CachedScript(DocLoader*, const String& URL, const String& charset);
+        CachedScript(const String& url, const String& charset);
         virtual ~CachedScript();
 
-        const String& script() const { return m_script; }
+        const String& script();
 
         virtual void ref(CachedResourceClient*);
+		virtual void allReferencesRemoved();
 
         virtual void setEncoding(const String&);
         virtual void data(PassRefPtr<SharedBuffer> data, bool allDataReceived);
@@ -51,10 +53,13 @@
         virtual bool schedule() const { return false; }
 
         void checkNotify();
+        virtual void destroyDecodedData();
 
     private:
+		void decodedDataDeletionTimerFired(Timer<CachedScript>*);
         String m_script;
         TextEncoding m_encoding;
+		Timer<CachedScript> m_decodedDataDeletionTimer;
     };
 }
 
--- a/webengine/osswebengine/WebCore/loader/CachedXBLDocument.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/CachedXBLDocument.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -40,15 +40,12 @@
 
 namespace WebCore {
 
-CachedXBLDocument::CachedXBLDocument(DocLoader* dl, const String &url)
+CachedXBLDocument::CachedXBLDocument(const String &url)
 : CachedResource(url, XBL), m_document(0)
 {
     // It's XML we want.
     setAccept("text/xml, application/xml, application/xhtml+xml, text/xsl, application/rss+xml, application/atom+xml");
     
-    // Load the file
-    Cache::loader()->load(dl, this, false);
-    m_loading = true;
     m_decoder = new TextResourceDecoder("application/xml");
 }
 
--- a/webengine/osswebengine/WebCore/loader/CachedXBLDocument.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/CachedXBLDocument.h	Fri Jul 03 15:54:40 2009 +0100
@@ -41,7 +41,7 @@
 #if ENABLE(XBL)
     class CachedXBLDocument : public CachedResource {
     public:
-        CachedXBLDocument(DocLoader*, const String& url);
+        CachedXBLDocument(const String& url);
         virtual ~CachedXBLDocument();
         
         XBL::XBLDocument* document() const { return m_document; }
--- a/webengine/osswebengine/WebCore/loader/DocLoader.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/DocLoader.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -62,6 +62,7 @@
     for (HashMap<String, CachedResource*>::iterator it = m_docResources.begin(); it != end; ++it)
         it->second->setDocLoader(0);
     m_cache->removeDocLoader(this);
+	m_reloadedURLs.clear();
 }
 
 void DocLoader::checkForReload(const KURL& fullURL)
@@ -99,7 +100,7 @@
 
 CachedImage* DocLoader::requestImage(const String& url)
 {
-    CachedImage* resource = static_cast<CachedImage*>(requestResource(CachedResource::ImageResource, url));
+    CachedImage* resource = static_cast<CachedImage*>(requestResource(CachedResource::ImageResource, url, String()));
     if (autoLoadImages() && resource && resource->stillNeedsLoad()) {
         resource->setLoading(true);
         cache()->loader()->load(this, resource, true);
@@ -107,50 +108,39 @@
     return resource;
 }
 
-CachedCSSStyleSheet* DocLoader::requestCSSStyleSheet(const String& url, const String& charset, bool isUserStyleSheet)
+CachedCSSStyleSheet* DocLoader::requestCSSStyleSheet(const String& url, const String& charset)
 {
-    // FIXME: Passing true for "skipCanLoadCheck" here in the isUserStyleSheet case  won't have any effect
-    // if this resource is already in the cache. It's theoretically possible that what's in the cache already
-    // is a load that failed because of the canLoad check. Probably not an issue in practice.
-    CachedCSSStyleSheet *sheet = static_cast<CachedCSSStyleSheet*>(requestResource(CachedResource::CSSStyleSheet, url, &charset, isUserStyleSheet, !isUserStyleSheet));
-
-    // A user style sheet can outlive its DocLoader so don't store any pointers to it
-    if (sheet && isUserStyleSheet) {
-        sheet->setDocLoader(0);
-        m_docResources.remove(sheet->url());
-    }
-    
-    return sheet;
+	return static_cast<CachedCSSStyleSheet*>(requestResource(CachedResource::CSSStyleSheet, url, charset));
 }
 
 CachedCSSStyleSheet* DocLoader::requestUserCSSStyleSheet(const String& url, const String& charset)
 {
-    return requestCSSStyleSheet(url, charset, true);
+    return cache()->requestUserCSSStyleSheet(this, url, charset);
 }
 
 CachedScript* DocLoader::requestScript(const String& url, const String& charset)
 {
-    return static_cast<CachedScript*>(requestResource(CachedResource::Script, url, &charset));
+    return static_cast<CachedScript*>(requestResource(CachedResource::Script, url, charset));
 }
 
 #if ENABLE(XSLT)
 CachedXSLStyleSheet* DocLoader::requestXSLStyleSheet(const String& url)
 {
-    return static_cast<CachedXSLStyleSheet*>(requestResource(CachedResource::XSLStyleSheet, url));
+    return static_cast<CachedXSLStyleSheet*>(requestResource(CachedResource::XSLStyleSheet, url, String()));
 }
 #endif
 
 #if ENABLE(XBL)
 CachedXBLDocument* DocLoader::requestXBLDocument(const String& url)
 {
-    return static_cast<CachedXSLStyleSheet*>(requestResource(CachedResource::XBL, url));
+    return static_cast<CachedXSLStyleSheet*>(requestResource(CachedResource::XBL, url, String()));
 }
 #endif
 
 #if PRELOAD_SCANNER_ENABLED
-CachedResource* DocLoader::requestResource(CachedResource::Type type, const String& url, const String* charset, bool skipCanLoadCheck, bool sendResourceLoadCallbacks, bool isPreload)
+CachedResource* DocLoader::requestResource(CachedResource::Type type, const String& url, const String& charset, bool isPreload)
 #else
-CachedResource* DocLoader::requestResource(CachedResource::Type type, const String& url, const String* charset, bool skipCanLoadCheck, bool sendResourceLoadCallbacks)
+CachedResource* DocLoader::requestResource(CachedResource::Type type, const String& url, const String& charset)
 #endif
 {
     KURL fullURL = m_doc->completeURL(url.deprecatedString());
@@ -170,9 +160,9 @@
     checkForReload(fullURL);
 
 #if PRELOAD_SCANNER_ENABLED
-    CachedResource* resource = cache()->requestResource(this, type, fullURL, charset, skipCanLoadCheck, sendResourceLoadCallbacks, isPreload);
+    CachedResource* resource = cache()->requestResource(this, type, fullURL, charset, isPreload);
 #else
-    CachedResource* resource = cache()->requestResource(this, type, fullURL, charset, skipCanLoadCheck, sendResourceLoadCallbacks);
+    CachedResource* resource = cache()->requestResource(this, type, fullURL, charset);
 #endif
     if (resource) {
         m_docResources.set(resource->url(), resource);
@@ -276,7 +266,7 @@
 void DocLoader::preload(CachedResource::Type type, const String& url)
 {
     String encoding = (type == CachedResource::Script || type == CachedResource::CSSStyleSheet) ? m_doc->frame()->loader()->encoding() : String();
-    CachedResource* resource = requestResource(type, url, &encoding, true);
+    CachedResource* resource = requestResource(type, url, encoding, true);
     if (!resource || m_preloads.contains(resource))
         return;
     resource->increasePreloadCount();
@@ -294,11 +284,17 @@
     ListHashSet<CachedResource*>::iterator end = m_preloads.end();
     for (ListHashSet<CachedResource*>::iterator it = m_preloads.begin(); it != end; ++it) {
         CachedResource* res = *it;
-        if (res->canDelete() && !res->inCache())  
+        res->decreasePreloadCount();
+        if (res->canDelete()) 
+        	{
+      		 if(res->inCache())
+      		 	cache()->remove(res);
+      		 else
 	            delete res;  
+        	} 
         else if (res->preloadResult() == CachedResource::PreloadNotReferenced) 
             cache()->remove(res);
-        res->decreasePreloadCount();
+       
     }
     m_preloads.clear();
 }
--- a/webengine/osswebengine/WebCore/loader/DocLoader.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/DocLoader.h	Fri Jul 03 15:54:40 2009 +0100
@@ -56,7 +56,7 @@
     ~DocLoader();
 
     CachedImage* requestImage(const String& url);
-    CachedCSSStyleSheet* requestCSSStyleSheet(const String& url, const String& charset, bool isUserStyleSheet = false);
+    CachedCSSStyleSheet* requestCSSStyleSheet(const String& url, const String& charset);
     CachedCSSStyleSheet* requestUserCSSStyleSheet(const String& url, const String& charset);
     CachedScript* requestScript(const String& url, const String& charset);
 
@@ -102,9 +102,9 @@
 
 private:
 #if PRELOAD_SCANNER_ENABLED
-    CachedResource* requestResource(CachedResource::Type, const String& url, const String* charset = 0, bool skipCanLoadCheck = false, bool sendResourceLoadCallbacks = true, bool isPreload = false);
+    CachedResource* requestResource(CachedResource::Type, const String& url, const String& charset, bool isPreload = false);
 #else
-    CachedResource* requestResource(CachedResource::Type, const String& url, const String* charset = 0, bool skipCanLoadCheck = false, bool sendResourceLoadCallbacks = true);
+    CachedResource* requestResource(CachedResource::Type, const String& url, const String& charset);
 #endif
 
     void checkForReload(const KURL&);
--- a/webengine/osswebengine/WebCore/loader/DocumentLoader.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/DocumentLoader.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -154,6 +154,7 @@
 DocumentLoader::~DocumentLoader()
 {
     ASSERT(!m_frame || frameLoader()->activeDocumentLoader() != this || !frameLoader()->isLoading());
+    m_mainResourceData = 0;
 }
 
 PassRefPtr<SharedBuffer> DocumentLoader::mainResourceData() const
--- a/webengine/osswebengine/WebCore/loader/TextResourceDecoder.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/TextResourceDecoder.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -279,6 +279,7 @@
 
 TextResourceDecoder::~TextResourceDecoder()
 {
+    m_buffer.clear();
 }
 
 void TextResourceDecoder::setEncoding(const TextEncoding& encoding, EncodingSource source)
--- a/webengine/osswebengine/WebCore/loader/icon/IconDatabase.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/icon/IconDatabase.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -40,6 +40,7 @@
 #include "SQLStatement.h"
 #include "SQLTransaction.h"
 #include "SystemTime.h"
+#include "WebKitUtilsSqlite.h"
 
 #if PLATFORM(WIN_OS)
 #include <windows.h>
@@ -230,6 +231,31 @@
     for (; i != end; ++i)
         delete (*i).second;
     m_iconURLToRecordMap.clear();
+    
+    HashMap<String, PageURLRecord*>::iterator recordIter = m_pageURLToRecordMap.begin();
+    HashMap<String, PageURLRecord*>::iterator recordEnd = m_pageURLToRecordMap.end();
+    String recordString;
+    for (; recordIter != recordEnd; ++recordIter) {
+        recordString = (*recordIter).first;
+        recordString = String();
+    }
+    m_pageURLToRecordMap.clear();
+    
+    HashSet<String>::iterator retainedIter = m_retainedPageURLs.begin();
+    HashSet<String>::iterator retainedEnd = m_retainedPageURLs.end();
+    String* retainedString;
+    for (; retainedIter != retainedEnd; ++retainedIter) {
+        retainedString = retainedIter.get();
+        *retainedString = String();
+    }
+    m_retainedPageURLs.clear();
+    
+    delete m_client;
+    delete sharedIconDatabase;
+    m_syncLock.~Mutex();
+    m_urlAndIconLock.~Mutex();
+    m_pendingSyncLock.~Mutex();
+    m_pendingReadingLock.~Mutex();
 #endif
 }
 
@@ -989,7 +1015,9 @@
     ASSERT_ICON_SYNC_THREAD();
     
     LOG(IconDatabase, "(THREAD) IconDatabase sync thread started");
-
+    // Create the Symbian SQL TLS
+    sqlite3SymbianLibInit();
+        
 #ifndef NDEBUG
     double startTime = currentTime();
 #endif
@@ -1784,6 +1812,10 @@
 #endif
     
     m_syncThreadRunning = false;
+    // Cleanup SQL TLS that was created from sqlite3SymbianLibInit() in iconDatabaseSyncThread()
+    sqlite3SymbianLibFinalize();
+    // Cleanup STDLIB TLS
+    CloseSTDLIB();
     return 0;
 }
 
--- a/webengine/osswebengine/WebCore/page/ChromeClient.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/page/ChromeClient.h	Fri Jul 03 15:54:40 2009 +0100
@@ -26,6 +26,7 @@
 
 namespace WebCore {
 
+    class Element;
     class FloatRect;
     class Frame;
     class HitTestResult;
@@ -106,6 +107,7 @@
 #if PLATFORM(SYMBIAN)
         virtual void setElementVisibilityChanged(bool visibility) = 0;
         virtual bool elementVisibilityChanged() = 0;
+        virtual void focusedElementChanged(Element*) = 0;
 #endif
 };
 
--- a/webengine/osswebengine/WebCore/page/EventHandler.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/page/EventHandler.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -1469,6 +1469,11 @@
     keyDownEvent.setIsAutoRepeat(false);
     
     bool result = !node->dispatchKeyEvent(keyDownEvent);
+
+    //***** FL added from r12765 *****//
+    if (initialKeyEvent.isKeyDown())
+        return result;
+    //**********//
     
     // Focus may have change during the keyDown handling, so refetch node
     node = eventTargetNodeForDocument(m_frame->document());
--- a/webengine/osswebengine/WebCore/page/Frame.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/page/Frame.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -176,13 +176,13 @@
 {
     setView(0);
     loader()->clearRecordedFormValues();
+	loader()->closeURL();
+    loader()->cancelAndClear();
 
 #if PLATFORM(MAC) || PLATFORM(SYMBIAN)
     setBridge(0);
 #endif
     
-    loader()->cancelAndClear();
-    
     // FIXME: We should not be doing all this work inside the destructor
 
     ASSERT(!d->m_lifeSupportTimer.isActive());
--- a/webengine/osswebengine/WebCore/page/Page.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/page/Page.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -18,7 +18,7 @@
  * Boston, MA 02110-1301, USA.
  */
 
-#include "config.h"
+
 #include "Page.h"
 
 #include "Chrome.h"
@@ -235,4 +235,18 @@
     m_inLowQualityInterpolationMode = mode;
 }
 
+#if PLATFORM(SYMBIAN)
+void deletePageStaticData()
+{
+    delete allPages;
+    allPages = NULL;
+    delete frameNamespaces;
+    frameNamespaces = NULL;
+
+#ifndef NDEBUG
+    PageCounter::count = 0;
+#endif
+}
+#endif
+
 } // namespace WebCore
--- a/webengine/osswebengine/WebCore/page/Page.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/page/Page.h	Fri Jul 03 15:54:40 2009 +0100
@@ -21,6 +21,8 @@
 #ifndef Page_h
 #define Page_h
 
+#include "config.h"
+
 #include "BackForwardList.h"
 #include "Chrome.h"
 #include "ContextMenuController.h"
@@ -146,6 +148,10 @@
 #endif
     };
 
+#if PLATFORM(SYMBIAN)
+        void deletePageStaticData();
+#endif
+
 } // namespace WebCore
     
 #endif // Page_h
--- a/webengine/osswebengine/WebCore/platform/AtomicString.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/AtomicString.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -38,6 +38,7 @@
 namespace WebCore {
 
 static HashSet<StringImpl*>* stringTable;
+static bool initialized = false;
 
 struct CStringTranslator 
 {
@@ -170,7 +171,9 @@
 
 void AtomicString::remove(StringImpl* r)
 {
-    stringTable->remove(r);
+    if( stringTable ) {
+        stringTable->remove(r);
+    }
 }
 
 StringImpl* AtomicString::add(const KJS::Identifier& str)
@@ -203,27 +206,45 @@
     return m_string.deprecatedString();
 }
 
+static const char *textAtomStr = "#text";
+static const char *commentAtomStr = "#comment";
+static const char *starAtomStr = "*";
+
 DEFINE_GLOBAL(AtomicString, nullAtom)
 DEFINE_GLOBAL(AtomicString, emptyAtom, "")
-DEFINE_GLOBAL(AtomicString, textAtom, "#text")
-DEFINE_GLOBAL(AtomicString, commentAtom, "#comment")
-DEFINE_GLOBAL(AtomicString, starAtom, "*")
+DEFINE_GLOBAL(AtomicString, textAtom, textAtomStr)
+DEFINE_GLOBAL(AtomicString, commentAtom, commentAtomStr)
+DEFINE_GLOBAL(AtomicString, starAtom, starAtomStr)
 
 void AtomicString::init()
 {
-    static bool initialized;
     if (!initialized) {
         stringTable = new HashSet<StringImpl*>;
 
         // Use placement new to initialize the globals.
         new ((void*)&nullAtom) AtomicString;
         new ((void*)&emptyAtom) AtomicString("");
-        new ((void*)&textAtom) AtomicString("#text");
-        new ((void*)&commentAtom) AtomicString("#comment");
-        new ((void*)&starAtom) AtomicString("*");
+        new ((void*)&textAtom) AtomicString(textAtomStr);
+        new ((void*)&commentAtom) AtomicString(commentAtomStr);
+        new ((void*)&starAtom) AtomicString(starAtomStr);
 
         initialized = true;
     }
 }
 
+void AtomicString::remove()
+{
+    // Cleanup the string table array
+    if( stringTable )
+        {
+        stringTable->clear();
+        delete stringTable;
+        stringTable = NULL;
+        }
+	textAtomStr = "";
+	commentAtomStr = "";
+	starAtomStr = "";
+    initialized = false; 
 }
+
+}
--- a/webengine/osswebengine/WebCore/platform/AtomicString.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/AtomicString.h	Fri Jul 03 15:54:40 2009 +0100
@@ -78,6 +78,7 @@
     bool isEmpty() const { return m_string.isEmpty(); }
 
     static void remove(StringImpl*);
+    static void remove();
     
 #ifdef __OBJC__
     AtomicString(NSString* s) : m_string(add(String(s).impl())) { }
--- a/webengine/osswebengine/WebCore/platform/DeprecatedString.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/DeprecatedString.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -117,6 +117,21 @@
 DeprecatedStringData *DeprecatedString::shared_null = 0;
 DeprecatedStringData **DeprecatedString::shared_null_handle = 0;
 
+void DeprecatedString::deleteSharedNull()
+	{
+  delete shared_null;
+  shared_null=0;	
+  freeHandle(shared_null_handle);
+	}
+
+struct cleanupSharedNull {
+    ~cleanupSharedNull() 
+    {
+		DeprecatedString::deleteSharedNull();
+    }
+};
+struct cleanupSharedNull cleanSharedNull;
+
 // -------------------------------------------------------------------------
 // Utility functions
 // -------------------------------------------------------------------------
--- a/webengine/osswebengine/WebCore/platform/DeprecatedString.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/DeprecatedString.h	Fri Jul 03 15:54:40 2009 +0100
@@ -289,7 +289,8 @@
     DeprecatedString(const QString&);
     operator QString() const;
 #endif
-
+		static void deleteSharedNull();
+				
     static DeprecatedString fromLatin1(const char *);
     static DeprecatedString fromLatin1(const char *, int len);
     static DeprecatedString fromUtf8(const char *);
--- a/webengine/osswebengine/WebCore/platform/DeprecatedValueListImpl.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/DeprecatedValueListImpl.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -122,6 +122,7 @@
 
 DeprecatedValueListImpl::~DeprecatedValueListImpl()
 {
+	d=0;
 }
 
 void DeprecatedValueListImpl::clear()
--- a/webengine/osswebengine/WebCore/platform/FontCache.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/FontCache.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -33,6 +33,7 @@
 #include "FontFallbackList.h"
 #include "FontPlatformData.h"
 #include "StringHash.h"
+#include "staticobjectscontainer.h"
 #include <wtf/HashMap.h>
 
 namespace WebCore {
@@ -99,9 +100,28 @@
 };
 
 typedef HashMap<FontPlatformDataCacheKey, FontPlatformData*, FontPlatformDataCacheKeyHash, FontPlatformDataCacheKeyTraits> FontPlatformDataCache;
+typedef HashMap<FontPlatformDataCacheKey, FontPlatformData*, FontPlatformDataCacheKeyHash, FontPlatformDataCacheKeyTraits>::iterator FontPlatformDataCacheIterator;
 
 static FontPlatformDataCache* gFontPlatformDataCache = 0;
 
+struct cleanupFontDataCache {
+    ~cleanupFontDataCache() {
+        if( gFontPlatformDataCache ) 
+        {
+			FontPlatformDataCacheIterator end = gFontPlatformDataCache->end();
+			for (FontPlatformDataCacheIterator it = gFontPlatformDataCache->begin(); it != end; ++it) 
+				{
+				FontPlatformData* obj = (*it).second;
+				delete obj;
+				}
+          gFontPlatformDataCache->clear();
+          delete gFontPlatformDataCache;
+          gFontPlatformDataCache=0;
+        }
+    }
+};
+static cleanupFontDataCache cleanFontDataCache;
+
 static const AtomicString& alternateFamilyName(const AtomicString& familyName)
 {
 #if PLATFORM(SYMBIAN)
@@ -138,7 +158,6 @@
 {
     if (!gFontPlatformDataCache) {
         gFontPlatformDataCache = new FontPlatformDataCache;
-        platformInit();
     }
 
     FontPlatformDataCacheKey key(familyName, fontDescription.computedPixelSize(), fontDescription.bold(), fontDescription.italic(),
@@ -197,7 +216,7 @@
 };
 
 typedef HashMap<FontPlatformData, FontData*, FontDataCacheKeyHash, FontDataCacheKeyTraits> FontDataCache;
-
+typedef HashMap<FontPlatformData, FontData*, FontDataCacheKeyHash, FontDataCacheKeyTraits>::iterator FontDataCacheIterator;
 static FontDataCache* gFontDataCache = 0;
 
 FontData* FontCache::getCachedFontData(const FontPlatformData* platformData)
@@ -217,6 +236,19 @@
     return result;
 }
 
+void FontCache::deleteFontDataCache() 
+{
+    if( gFontDataCache ) {
+        FontDataCacheIterator end = gFontDataCache->end();
+        for (FontDataCacheIterator it = gFontDataCache->begin(); it != end; ++it) {
+            FontData* obj = (*it).second;
+            delete obj;
+        }
+    }
+    delete gFontDataCache;
+    gFontDataCache = NULL;
+}
+
 const FontData* FontCache::getFontData(const Font& font, int& familyIndex)
 {
     FontPlatformData* result = 0;
--- a/webengine/osswebengine/WebCore/platform/FontCache.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/FontCache.h	Fri Jul 03 15:54:40 2009 +0100
@@ -60,7 +60,8 @@
     static const AtomicString& systemFontFamilyName( const AtomicString& familyName );
     static FontPlatformData* getDeviceDefaultFont(float size);
 #endif
-
+    static void deleteFontDataCache();
+    
 private:
     static FontPlatformData* getCachedFontPlatformData(const FontDescription&, const AtomicString& family, bool checkingAlternateName = false);
     static FontData* getCachedFontData(const FontPlatformData*);
--- a/webengine/osswebengine/WebCore/platform/MimeTypeRegistry.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/MimeTypeRegistry.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -44,7 +44,28 @@
 static WTF::HashSet<String>* supportedImageResourceMIMETypes;
 static WTF::HashSet<String>* supportedImageMIMETypes;
 static WTF::HashSet<String>* supportedNonImageMIMETypes;
-    
+
+struct cleanupMimeTypes {
+    ~cleanupMimeTypes() {
+        if( supportedImageResourceMIMETypes ) {
+            supportedImageResourceMIMETypes->clear();
+            delete supportedImageResourceMIMETypes;
+            supportedImageResourceMIMETypes = 0;
+        }
+        if( supportedImageMIMETypes ) {
+            supportedImageMIMETypes->clear();
+            delete supportedImageMIMETypes;
+            supportedImageMIMETypes = 0;
+        }
+        if( supportedNonImageMIMETypes ) {
+            supportedNonImageMIMETypes->clear();
+            delete supportedNonImageMIMETypes;
+            supportedNonImageMIMETypes = 0;
+        }
+    }
+};
+struct cleanupMimeTypes cleanMimeTypes;
+
 #if PLATFORM(CG)
 extern String getMIMETypeForUTI(const String& uti);
 #endif
--- a/webengine/osswebengine/WebCore/platform/PlatformKeyboardEvent.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/PlatformKeyboardEvent.h	Fri Jul 03 15:54:40 2009 +0100
@@ -63,6 +63,9 @@
         String unmodifiedText() const { return m_unmodifiedText; }
         String keyIdentifier() const { return m_keyIdentifier; }
         bool isKeyUp() const { return m_isKeyUp; }
+        //***** FL added from r12765 *****//
+        bool isKeyDown() const { return m_isKeyDown; }
+        //**********//
         bool isAutoRepeat() const { return m_autoRepeat; }
         void setIsAutoRepeat(bool in) { m_autoRepeat = in; }
         int WindowsKeyCode() const { return m_WindowsKeyCode; }
@@ -99,6 +102,9 @@
         String m_unmodifiedText;
         String m_keyIdentifier;
         bool m_isKeyUp;
+        //***** FL added from r12765 *****//
+        bool m_isKeyDown;
+        //**********//
         bool m_autoRepeat;
         int m_WindowsKeyCode;
         bool m_isKeypad;
--- a/webengine/osswebengine/WebCore/platform/RegularExpression.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/RegularExpression.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -134,6 +134,7 @@
 
 RegularExpression::~RegularExpression()
 {
+	d=0;
 }
 
 RegularExpression &RegularExpression::operator=(const RegularExpression &re)
--- a/webengine/osswebengine/WebCore/platform/TextEncodingRegistry.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/TextEncodingRegistry.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -23,7 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#include "config.h"
+
 #include "TextEncodingRegistry.h"
 
 #include "PlatformString.h"
@@ -248,4 +248,15 @@
     return !didExtendTextCodecMaps;
 }
 
+#if PLATFORM(SYMBIAN)
+void deleteEncodingMaps()
+{
+    delete textEncodingNameMap;
+    textEncodingNameMap = NULL;
+    delete textCodecMap;
+    textCodecMap = NULL;
+    didExtendTextCodecMaps = false;
+}
+#endif
+
 } // namespace WebCore
--- a/webengine/osswebengine/WebCore/platform/TextEncodingRegistry.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/TextEncodingRegistry.h	Fri Jul 03 15:54:40 2009 +0100
@@ -26,6 +26,7 @@
 #ifndef TextEncodingRegistry_h
 #define TextEncodingRegistry_h
 
+#include "config.h"
 #include <memory>
 #include <wtf/unicode/Unicode.h>
 
@@ -48,6 +49,10 @@
     // Only TextEncoding should use this function directly.
     bool noExtendedTextEncodingNameUsed();
 
+#if PLATFORM(SYMBIAN)
+    void deleteEncodingMaps();
+#endif
+
 }
 
 #endif // TextEncodingRegistry_h
--- a/webengine/osswebengine/WebCore/platform/Timer.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/Timer.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -49,6 +49,16 @@
 static Vector<TimerBase*>* timerHeap;
 static HashSet<const TimerBase*>* timersReadyToFire;
 
+struct timerCleaner {
+    ~timerCleaner() {
+        if( timerHeap ) {
+            delete timerHeap;
+            timerHeap = 0;
+        }
+    }
+};
+struct timerCleaner cleanTimer;
+
 // ----------------
 
 // Class to represent elements in the heap when calling the standard library heap algorithms.
--- a/webengine/osswebengine/WebCore/platform/graphics/symbian/ImageSymbian.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/graphics/symbian/ImageSymbian.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -60,7 +60,7 @@
 
 namespace WebCore {
 
-CMaskedBitmap* loadAknIcon(int id, float sizeAdjust);
+CMaskedBitmap* loadAknIconL(int id, float sizeAdjust);
 
 void FrameData::clear()
 {
@@ -126,9 +126,26 @@
 
 BitmapImage::~BitmapImage()
 {
+	//find if m_maskedbitmap is in m_frames so it wont get deleted twice
+	for(TInt i=0; i<m_frames.size(); i++)
+        {
+        if(m_maskedBitmap==m_frames[i].m_frame)
+        	{
+        	//masked bitmap gets deleted when decoded data is destroyed,
+        	m_maskedBitmap = NULL;
+        	}
+        }
     destroyDecodedData();
     stopAnimation();
+	delete m_maskedBitmap;
+	m_maskedBitmap = NULL;
     invalidatePlatformData();
+
+    for(TInt i=0; i<m_frames.size(); i++)
+        {
+        m_frames[i].clear();
+        }
+    m_frames.clear();
 }
 
 void BitmapImage::destroyDecodedData(bool)
@@ -313,7 +330,8 @@
         resourceIds.set("checkBoxOff", &checkBoxOffData);
     }
     if (const IconData* data = resourceIds.get(name)) {
-        CMaskedBitmap* bm = loadAknIcon(data->m_id,data->m_sizeAdjust);
+	CMaskedBitmap* bm = NULL;
+        TRAP_IGNORE(bm = loadAknIconL(data->m_id,data->m_sizeAdjust));
         if (bm) {
             BitmapImage* im = new BitmapImage(bm);
             return im;
@@ -325,6 +343,7 @@
 void BitmapImage::draw(GraphicsContext* ctxt, const FloatRect& dst, const FloatRect& src, CompositeOperator op)
 {
     WebCoreGraphicsContext* context = ctxt->platformContext();
+
 	if (!context) {
           return;
 	}
@@ -348,28 +367,37 @@
 _LIT( KBrowserSvgFile, "webkiticons.mif" );
 #endif
 
+static HBufC* iconFileNameBuf = NULL;
+struct cleanupIconFileName {
+    ~cleanupIconFileName() {
+        delete iconFileNameBuf;
+        iconFileNameBuf = NULL;
+    }
+};
+struct cleanupIconFileName cleanIconFileName;
+
 TPtrC iconFileName()
 {
-    static HBufC* filename = 0;
-    if (!filename) {
+    if (!iconFileNameBuf) {
         TFileName mbmDrive;
         TParse parse;
         Dll::FileName( mbmDrive );
         Dll::FileName( mbmDrive );
         parse.Set( mbmDrive, NULL, NULL );
         mbmDrive = parse.Drive();
-        filename = HBufC::New( KMaxFileName );
-        filename->Des().Append( mbmDrive );
-        filename->Des().Append( KDC_APP_BITMAP_DIR );
-        filename->Des().Append( KBrowserSvgFile );
+        iconFileNameBuf = HBufC::New( KMaxFileName );
+        iconFileNameBuf->Des().Append( mbmDrive );
+        iconFileNameBuf->Des().Append( KDC_APP_BITMAP_DIR );
+        iconFileNameBuf->Des().Append( KBrowserSvgFile );
     }
-    return *filename;
+    return *iconFileNameBuf;
 }
 
-CMaskedBitmap* loadAknIcon(int id, float sizeAdjust)
+CMaskedBitmap* loadAknIconL(int id, float sizeAdjust)
 {
     CEikonEnv* eikEnv = CEikonEnv::Static();
     CWsScreenDevice& screenDev = *eikEnv->ScreenDevice();
+    CMaskedBitmap* result = NULL;
 
     int dpi = screenDev.VerticalTwipsToPixels(KTwipsPerInch);
     int px = (int)10*sizeAdjust;
@@ -386,19 +414,20 @@
     CFbsBitmap* bitmap=0;
     CFbsBitmap* mask=0;
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    TRAPD(error, AknsUtils::CreateIconL( skin,
+
+    AknsUtils::CreateIconLC( skin,
                                    KAknsIIDDefault,
                                    bitmap,
                                    mask,
                                    iconFileName(),
                                    id,
-                                   id+1));
-    if (error!=KErrNone)
-        return 0;
+                                   id+1);
 
     AknIconUtils::SetSize(bitmap,TSize(px,px)); //rect.Rect().Size());
     AknIconUtils::SetSize(mask,TSize(px,px)); //rect.Rect().Size());
-    return new CMaskedBitmap(bitmap,mask);
+	result = new (ELeave) CMaskedBitmap(bitmap,mask);
+	CleanupStack::Pop( 2 );//bitmap, mask
+    return result;
 }
 
 CMaskedBitmap* BitmapImage::getMaskedBitmap()
@@ -406,8 +435,7 @@
     if (m_maskedBitmap)
         return m_maskedBitmap;
 
-    m_maskedBitmap = m_source.createFrameAtIndex(0);
-    return m_maskedBitmap;
+    return  m_source.createFrameAtIndex(0);
 }
 
 void BitmapImage::drawPattern(GraphicsContext* ctxt, const FloatRect& srcRect, const AffineTransform& patternTransform,
--- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpConnection.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpConnection.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -106,8 +106,14 @@
 
 void ReceivedFinished::RunL()
 {
+    m_done = true;    
+    /*
+     * this callback will call deRef on HttpConnection which
+     * will delete ReceivedFinished object since it's a 
+     * member of HttpConnection. Therefore this call has to 
+     * the last one.
+     */
     m_callback(m_ctx, m_error);
-    m_done = true;
 }
 
 TInt ReceivedFinished::RunError(TInt aError)
@@ -426,6 +432,32 @@
                 THTTPHdrVal hdrVal;
                 RHTTPHeaders httpHeaders = m_transaction->Response().GetHeaderCollection();
                 RStringPool stringPool = m_transaction->Session().StringPool();
+                
+                THTTPHdrFieldIter it = httpHeaders.Fields();  
+                
+                HBufC8* headerStr;  
+                TBool isRefresh = EFalse;
+                TPtrC8 headerValue;   ;
+                while( it.AtEnd() == EFalse )
+                {
+                // Get name of next header field
+                RStringTokenF fieldName = it();
+                RStringF fieldNameStr = stringPool.StringF( fieldName );
+                httpHeaders.GetRawField( fieldNameStr, headerValue );
+                headerStr = HBufC8::NewLC( fieldNameStr.DesC().Length() );
+                TPtr8 headerPtr( headerStr->Des() );
+                headerPtr.Copy( fieldNameStr.DesC() );
+                if (equalIgnoringCase(headerPtr, "refresh"))
+                {
+                  isRefresh = ETrue;
+                	CleanupStack::PopAndDestroy(); // headerStr
+                	break;
+                }
+
+                CleanupStack::PopAndDestroy(); // headerStr
+                ++it;
+                }            
+         
                 const TStringTable& stringTable = RHTTPSession::GetTable();
                 if( httpHeaders.GetField( stringPool.StringF( HTTP::EContentType, stringTable ), 0,
                     hdrVal) == KErrNone ) {
@@ -456,11 +488,19 @@
                 //HTTP status text
                 response.setHTTPStatusText(((m_transaction->Response()).StatusText().DesC()));
                 
+                
+
                 if (m_contentType && m_contentType->Length()) {
                     response.setHTTPHeaderField("Content-Type", *m_contentType);
                 }
-		
-				TPtrC8 result;
+                
+                // Add Refresh field only when Refresh existed in recieved header. 
+                if (isRefresh)
+                    {
+                        response.setHTTPHeaderField("Refresh",headerValue);
+                    }
+				
+                TPtrC8 result;
 
                 if( httpHeaders.GetRawField( stringPool.StringF( HTTP::EContentDisposition, stringTable ), result) == KErrNone )
                 	response.setHTTPHeaderField("Content-Disposition", result);
--- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpRequestHeaderManager.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpRequestHeaderManager.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -114,6 +114,8 @@
     m_AcceptLangStr = NULL;
     delete m_InstalledLangBuf;
     m_InstalledLangBuf = NULL;
+    delete m_CharsetBuf;
+    m_CharsetBuf = NULL;
 }
 
 //-----------------------------------------------------------------------------
@@ -418,8 +420,9 @@
     TPtrC8 userSelectedLangPtr(userSelectedLangString.DesC());
     //
     TInt xtraDataPerLang = KCommaSeperator().Length() + KLangStrLen + KQHalfValue().Length();
-    TInt reqdBufSize = userSelectedLangPtr.Length() +
-                       ((systemEpocLanguageCodes->Count()-1) * xtraDataPerLang);
+    TInt reqdBufSize = ((userSelectedLangPtr.Length() + xtraDataPerLang)
+	                     * (systemEpocLanguageCodes->Count()));
+
     delete m_InstalledLangBuf;
     m_InstalledLangBuf = NULL;
     m_InstalledLangBuf = HBufC8::NewL(reqdBufSize);
--- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -71,6 +71,8 @@
     m_httpDownload = NULL;
     delete m_SelfDownloadContentHandler;
     m_SelfDownloadContentHandler = NULL;
+    delete m_SelfDownloadContentTypes;
+    m_SelfDownloadContentTypes = NULL;
     m_ClientAcceptHeaders.ResetAndDestroy();
     m_ClientAcceptHeaders.Close();
     closeHttpSession();
--- a/webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -40,6 +40,15 @@
 
 static CResourceHandleManager* s_self = 0;
 
+struct cleanupHandleManager {
+    ~cleanupHandleManager() {
+    	if(s_self){
+    		delete s_self;
+    		s_self = 0;
+    	}
+    }
+};
+static cleanupHandleManager deleteResourceHandleManager;
 
 CResourceHandleManager::CResourceHandleManager()
 {
@@ -131,7 +140,7 @@
         int needed = std::max(contentLength, std::max(client->receivedDataBufferSize(), data.Length()));
         OOM_PRE_CHECK(needed<<2, needed<<1, "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()));)
+        OOM_POST_CHECK_FAILED(connection->handleError(KErrNoMemory);)
     }
 }
 
--- a/webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.h	Fri Jul 03 15:54:40 2009 +0100
@@ -39,7 +39,7 @@
 
     int add(ResourceHandle*);
     void cancel(ResourceHandle*);
-
+    virtual ~CResourceHandleManager();
 public :
     void receivedResponse(ResourceHandle* resource, ResourceResponse& response, MUrlConnection* connection);
     void receivedData(ResourceHandle* resource, const TDesC8&, int contentLength, MUrlConnection* connection);
@@ -47,7 +47,7 @@
 
 private:
     CResourceHandleManager();
-    virtual ~CResourceHandleManager();
+   
 
 };
 
--- a/webengine/osswebengine/WebCore/platform/network/symbian/ResourceLoaderDelegate.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/ResourceLoaderDelegate.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -95,6 +95,11 @@
     connection->download(handle, request, response);
 }
 
+static void cleanupConnection( TAny* connection )
+{
+    delete (ResolvedConnection*) connection;
+}
+
 MUrlConnection* ResourceLoaderDelegate::checkLinkResolverL(ResourceHandle* handle, Frame* frame)
 {
     CBrCtl* brctl = control(frame);
@@ -117,9 +122,10 @@
                 }
             }            
             connection = new (ELeave) ResolvedConnection(handle, frame);
-            CleanupStack::PushL(connection);
+            TCleanupItem cleaner( cleanupConnection, connection );
+            CleanupStack::PushL(cleaner);
             TBool ret = brctl->brCtlLinkResolver()->ResolveLinkL(url->Des(), currentUrlPtr, *connection);
-            CleanupStack::Pop(); // connection
+            CleanupStack::Pop(); // cleaner( connection )
             if (!ret) {
                 delete connection;
                 connection = NULL;
@@ -141,10 +147,11 @@
                 }
             }            
             connection = new (ELeave) ResolvedConnection(handle, frame);
-            CleanupStack::PushL(connection);
+            TCleanupItem cleaner( cleanupConnection, connection );
+            CleanupStack::PushL(cleaner);
             TBool ret = brctl->brCtlLinkResolver()->ResolveEmbeddedLinkL(url->Des(), currentUrlPtr,
                 ELoadContentTypeAny, *connection);
-            CleanupStack::Pop(); // connection
+            CleanupStack::Pop(); // cleaner( connection )
             if (!ret) {
                 delete connection;
                 connection = NULL;
--- a/webengine/osswebengine/WebCore/platform/network/symbian/UrlConnection.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/UrlConnection.h	Fri Jul 03 15:54:40 2009 +0100
@@ -39,6 +39,7 @@
     virtual WebCore::ResourceHandle* handle() { return m_handle; }
     virtual int totalContentSize() = 0;
     virtual void setDefersLoading(bool /*defers*/) {}
+    virtual void handleError(int error) {};
 
 public: // data    
     WebCore::ResourceHandle* m_handle;
--- a/webengine/osswebengine/WebCore/platform/symbian/FontCacheSymbian.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/FontCacheSymbian.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -133,6 +133,7 @@
     }        
     iFontCache.clear();
     delete [] iSupportedNames;
+    iDeviceDefaultFont = "";
 }
 
 const AtomicString& PlatformFontCache::SystemFontFamily( const AtomicString& familyName )
--- a/webengine/osswebengine/WebCore/platform/symbian/FontDataSymbian.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/FontDataSymbian.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -56,7 +56,8 @@
 
 void FontData::platformDestroy()
 {
-    StaticObjectsContainer::instance()->fontCache()->ReleaseFont( m_font.Font() );
+    // Do Nothing. m_font is owned by the Font Cache 
+    // and maybe shared with other FontData instances
 }
 
 FontData* FontData::smallCapsFontData(const FontDescription& fontDescription) const
--- a/webengine/osswebengine/WebCore/platform/symbian/FontSymbian.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/FontSymbian.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:  
+* Description:
 *
 */
 
@@ -51,14 +51,14 @@
     }
 
     TextRun end(run.characters() + from, to - from);
-    float w = floatWidthForComplexText(end, style);        
-            
+    float w = floatWidthForComplexText(end, style);
+
     FloatRect rect(b + point.x(), point.y(), w, h);
 
     return rect;
 }
 
-void Font::drawComplexText(GraphicsContext* graphicsContext, const TextRun& run, const TextStyle& style, const FloatPoint& point, int from, int to) const                          
+void Font::drawComplexText(GraphicsContext* graphicsContext, const TextRun& run, const TextStyle& style, const FloatPoint& point, int from, int to) const
 {
     PlatformFontCache* cache = StaticObjectsContainer::instance()->fontCache();
     CFont* font = cache->zoomedFont(m_fontDescription, cache->fontZoomFactor());
@@ -74,28 +74,28 @@
 
     TPoint startPos = point;
     if (from) {
-        
+
         // the text run before the selection
         TextRun leftRun(run.characters(), from);
         // the selection start point
         startPos.iX += floatWidthForComplexText(leftRun, style);
     }
-    
+
     TPtrC str( (const TUint16*)(run.characters() + from), to - from);
-    
+
     TInt numSpaces(0);
     TInt indexOfFirstNonRegularSpace(-1);
     TInt strLength(str.Length());
-    
+
     // a) search for nbsp and similar
     // b) count the spaces for word spacing
     for( TInt n = 0; n<strLength; ++n) {
-    
+
         if ( str[n] == ' ' ) {
             numSpaces++;
         }
         else if( TChar(str[n]).IsSpace() ) {
-    
+
             if (indexOfFirstNonRegularSpace==-1) {
                 indexOfFirstNonRegularSpace = n;
             }
@@ -116,7 +116,7 @@
         HBufC* text = 0;
         text = str.Alloc();
         if (text){
-            
+
             TPtr newStr(text->Des());
             if (isSmallCaps()) {
                 // proper small caps implementation would use smaller font, but that get complicated
@@ -128,43 +128,41 @@
             // and replace them with regular spaces. otherwise they show up as boxes.
             if (indexOfFirstNonRegularSpace > -1) {
                 for(; indexOfFirstNonRegularSpace<strLength; ++indexOfFirstNonRegularSpace ) {
-                	// if ZERO WIDTH SPACE found do not replace it with regular space
-                    if( TChar(newStr[indexOfFirstNonRegularSpace]).IsSpace() && 
-                    	!(Font::treatAsZeroWidthSpace (newStr[indexOfFirstNonRegularSpace]))) {
+                    if( TChar(newStr[indexOfFirstNonRegularSpace]).IsSpace()) {
                         newStr[indexOfFirstNonRegularSpace] = ' ';
                     }
                 }
             }
-            
+
             if (style.rtl()) {
                 TBidiText* bidiText = TBidiText::NewL( newStr, 1, TBidiText::ERightToLeft );
                 bidiText->WrapText(xForm(width(run)), *font );
-                bitgc.DrawText( bidiText->DisplayText(),xForm(startPos)); 
-                delete bidiText;      
+                bitgc.DrawText( bidiText->DisplayText(),xForm(startPos));
+                delete bidiText;
             }
             else{
-                bitgc.DrawText( newStr, xForm(startPos) );   	
+                bitgc.DrawText( newStr, xForm(startPos) );
             }
-            
+
             if (graphicsContext && StaticObjectsContainer::instance()->pictograph())
                 StaticObjectsContainer::instance()->pictograph()->DrawPictographsInText(graphicsContext->platformContext(), bitgc, *font, newStr, startPos );
-            
+
             delete text;
         }
-        
+
     }else {
         bitgc.DrawText( str, xForm(startPos) );
-        if (graphicsContext && StaticObjectsContainer::instance()->pictograph())        
+        if (graphicsContext && StaticObjectsContainer::instance()->pictograph())
             StaticObjectsContainer::instance()->pictograph()->DrawPictographsInText(graphicsContext->platformContext(), bitgc, *font, str, startPos );
     }
-        
+
     bitgc.DiscardFont();
 }
 
 inline float floatWidthForComplexTextSymbian(const Font* f, const TextRun& run,  const TextStyle& style, int maxWidth, int& chars){
     const CFont& font( f->primaryFont()->platformData() );
     TPtrC str( (const TUint16*)(run.characters()), run.length());
-    
+
     TInt numSpaces(0);
     TInt indexOfFirstNonRegularSpace(-1);
     TInt strLength(str.Length());
--- a/webengine/osswebengine/WebCore/platform/symbian/Libxml2/Libxml2_globals.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/Libxml2/Libxml2_globals.h	Fri Jul 03 15:54:40 2009 +0100
@@ -36,6 +36,7 @@
 
 XMLPUBFUN void XMLCALL xeSetTLS(void* ptr);
 XMLPUBFUN xmlGlobalStatePtr XMLCALL xeGetTLS();
+XMLPUBFUN void XMLCALL xecleanTLS();
 
 //#if defined (XMLENGINE_USE_DOMSTRINGARGUMENT)
 XMLPUBFUN void XMLCALL xeCleanupDOMStringConverter();
--- a/webengine/osswebengine/WebCore/platform/symbian/Libxml2/Libxml2_parser.c	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/Libxml2/Libxml2_parser.c	Fri Jul 03 15:54:40 2009 +0100
@@ -12412,22 +12412,23 @@
 
 void
 xmlCleanupParser(void) {
-    if (!xmlParserInitialized)
-        return;
-
-    xmlCleanupCharEncodingHandlers();
-#ifdef LIBXML_CATALOG_ENABLED
-    xmlCatalogCleanup();
-#endif
-    xmlCleanupInputCallbacks();
-#ifdef LIBXML_OUTPUT_ENABLED
-    xmlCleanupOutputCallbacks();
-#endif
-    xmlCleanupGlobals();
-    xmlResetLastError();
-    xmlCleanupThreads(); /* must be last if called not from the main thread */
-    xmlCleanupMemory();
-    xmlParserInitialized = 0;
+    if (xmlParserInitialized)
+        {
+        xmlCleanupCharEncodingHandlers();
+    #ifdef LIBXML_CATALOG_ENABLED
+        xmlCatalogCleanup();
+    #endif
+        xmlCleanupInputCallbacks();
+    #ifdef LIBXML_OUTPUT_ENABLED
+        xmlCleanupOutputCallbacks();
+    #endif
+        xmlCleanupGlobals();
+        xmlResetLastError();
+        xmlCleanupThreads(); /* must be last if called not from the main thread */
+        xmlCleanupMemory();
+        xmlParserInitialized = 0;
+        }
+    xecleanTLS();
 }
 
 /************************************************************************
--- a/webengine/osswebengine/WebCore/platform/symbian/Libxml2/XmlEnglibxml2dll.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/Libxml2/XmlEnglibxml2dll.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -54,3 +54,10 @@
 {
     return STATIC_CAST(xmlGlobalStatePtr, Dll::Tls());
 }
+
+void xecleanTLS()
+{
+     xmlGlobalStatePtr gs = xeGetTLS();
+     delete gs;
+     xeSetTLS(NULL);
+}
--- a/webengine/osswebengine/WebCore/platform/symbian/OOMHandler.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/OOMHandler.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -64,7 +64,7 @@
 OOMHandler::~OOMHandler()
 {
     MemoryManager::RemoveCollector(this);
-    MemoryManager::AddStopper(this);
+    MemoryManager::RemoveStopper(this);
 }
 
 TUint OOMHandler::Collect(TUint aRequired)
--- a/webengine/osswebengine/WebCore/platform/symbian/PlatformKeyEventSymbian.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/PlatformKeyEventSymbian.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -661,6 +661,9 @@
 PlatformKeyboardEvent::PlatformKeyboardEvent( TKeyEvent event, TEventCode eventCode, bool forceAutoRepeat ) :
       m_keyIdentifier(KeyIdentifierForKeyEvent(event.iCode))
     , m_isKeyUp( eventCode == EEventKeyUp )
+    //***** FL added from r12765 *****//
+    , m_isKeyDown( eventCode == EEventKeyDown )
+    //**********//
     , m_autoRepeat(event.iRepeats>0 || forceAutoRepeat )
     , m_WindowsKeyCode(WindowsKeyCodeForKeyEvent(event))
     , m_shiftKey( event.iModifiers & EModifierShift )
--- a/webengine/osswebengine/WebCore/platform/symbian/RenderThemeSymbian.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/RenderThemeSymbian.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -15,125 +15,26 @@
 *
 */
 
-
-#include "config.h"
+#include "RenderThemeSymbian.h"
+#include "staticobjectscontainer.h"
+// implement Symbian theme here
 
-#include "RenderTheme.h"
-#include "Event.h"
-#include "Document.h"
-#include "Image.h"
-#include "GraphicsContext.h"
-#include <../bidi.h>
-#include <eikenv.h>
-#include "RenderBox.h"
-#include <BitmapTransforms.h>
-#include "WebCoreGraphicsContext.h"
-#include "MaskedBitmap.h"
-#include "BitmapImage.h"
-#include "WebCoreWidget.h"
-// implement Symbian theme here
+
 
 namespace WebCore {
 
-enum {
-    ECheckBoxOn,
-    ECheckBoxOff,
-    ERadioOn,
-    ERadioOff,
-    ESelectArrow
-};
-
-class RenderThemeSymbian : public RenderTheme
-{
-public:
-    RenderThemeSymbian();
-    // A method asking if the theme's controls actually care about redrawing when hovered.
-    bool supportsHover(const RenderStyle*) const { return true; }
-    
-    void setCheckboxSize(RenderStyle*) const;    
-    void setRadioSize(RenderStyle*) const;
-
-    void adjustButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
-    void adjustTextFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
-    void adjustMenuListStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const;
-    void adjustMenuListButtonStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const;
-    
-    bool paintCheckbox(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r);
-    bool paintButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
-    bool paintMenuListButton(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r);
-    bool paintMenuList(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r);
-    bool paintRadio(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r);
-    bool paintTextField(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
-    bool paintTextArea(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
-    
-
-    bool isControlStyled(const RenderStyle*, const BorderData&,
-                                 const BackgroundLayer&, const Color&) const;
-    bool controlSupportsTints(const RenderObject*) const;
-    void systemFont(int propId, FontDescription&) const;
-    
-    Color platformActiveSelectionBackgroundColor() const; 
-    Color platformInactiveSelectionBackgroundColor() const;
-    Color platformActiveSelectionForegroundColor() const;
-    Color platformInactiveSelectionForegroundColor() const;
-    
-    void addIntrinsicMargins(RenderStyle*) const;
-    void close();
-    bool supportsFocus(EAppearance) const;
-    void paintButtonDecorations(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r);
-
-    bool supportsFocusRing(const RenderStyle*) const;
-    void scaleImage(int type, int scalingFactor);
-    void scaleImageL(int type, int scalingFactor);
-
-    void cancel();
-    void run();
-
-    Image* m_checkBoxOn;
-    Image* m_checkBoxOff;
-    Image* m_scaledCheckBoxOn;
-    Image* m_scaledCheckBoxOff;
-    int m_scalingForCheckBoxOn;
-    int m_scalingForCheckBoxOff;
-
-    Image* m_radioButtonOn;
-    Image* m_radioButtonOff;
-    Image* m_scaledRadioOn;
-    Image* m_scaledRadioOff;
-    int m_scalingForRadioOn;
-    int m_scalingForRadioOff;
-
-    Image* m_selectArrow;
-    Image* m_scaledSelectArrow;
-    int m_scalingForSelectArrow;
-
-    CBitmapScaler* m_bitmapScaler;
-    CActiveSchedulerWait* m_asw;
-};
-
 RenderTheme* theme()
 {
-    static RenderThemeSymbian symbianTheme;
-    return &symbianTheme;
+    return StaticObjectsContainer::instance()->theme();
 }
 
+
+
 MScrollView* scrollView(const RenderObject::PaintInfo& i)
 {
     return &(i.context->platformContext()->view());
 }
 
-class SyncScaler : public CActive
-{
-public:
-    SyncScaler();
-    ~SyncScaler();
-    void init();
-    void RunL();
-    void DoCancel();
-    TInt RunError(TInt aError);
-    int m_error;
-};
-
 SyncScaler::SyncScaler() : CActive (CActive::EPriorityHigh)
 {
     CActiveScheduler::Add(this);
@@ -194,6 +95,48 @@
     m_asw = NULL;
 }
 
+RenderThemeSymbian::~RenderThemeSymbian()
+{
+RDebug::Printf("RenderThemeSymbian::~RenderThemeSymbian");
+
+    delete m_checkBoxOn;
+    m_checkBoxOn = 0;
+    
+    delete m_checkBoxOff;
+    m_checkBoxOff = 0;
+    
+    delete m_scaledCheckBoxOn;
+    m_scaledCheckBoxOn = 0;
+    
+    delete m_scaledCheckBoxOff;
+    m_scaledCheckBoxOff = 0;
+    
+    delete m_radioButtonOn;
+    m_radioButtonOn = 0;
+    
+    delete m_radioButtonOff;
+    m_radioButtonOff = 0;
+     
+    delete m_scaledRadioOn;
+    m_scaledRadioOn = 0;
+     
+    delete m_scaledRadioOff;
+    m_scaledRadioOff = 0;
+     
+    delete m_selectArrow;
+    m_selectArrow = 0;
+     
+    delete m_scaledSelectArrow;
+    m_scaledSelectArrow = 0;
+
+    delete m_bitmapScaler;
+    m_bitmapScaler = 0;
+     
+    delete m_asw;
+    m_asw = 0;
+}
+
+
 void RenderThemeSymbian::systemFont(int propId, FontDescription& fontDescription) const
 {
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebCore/platform/symbian/RenderThemeSymbian.h	Fri Jul 03 15:54:40 2009 +0100
@@ -0,0 +1,131 @@
+/*
+* Copyright (c) 2006 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:  
+*
+*/
+#ifndef __RENDERTHEMESYMBIAN_H__
+#define __RENDERTHEMESYMBIAN_H__
+
+#include "config.h"
+
+#include "RenderTheme.h"
+#include "Event.h"
+#include "Document.h"
+#include "Image.h"
+#include "GraphicsContext.h"
+#include <../bidi.h>
+#include <eikenv.h>
+#include "RenderBox.h"
+#include <BitmapTransforms.h>
+#include "WebCoreGraphicsContext.h"
+#include "MaskedBitmap.h"
+#include "BitmapImage.h"
+#include "WebCoreWidget.h"
+
+// implement Symbian theme here
+
+namespace WebCore {
+
+enum {
+    ECheckBoxOn,
+    ECheckBoxOff,
+    ERadioOn,
+    ERadioOff,
+    ESelectArrow
+};
+
+class RenderThemeSymbian : public RenderTheme
+{
+public:
+    RenderThemeSymbian();
+    virtual ~RenderThemeSymbian();
+    // A method asking if the theme's controls actually care about redrawing when hovered.
+    bool supportsHover(const RenderStyle*) const { return true; }
+    
+    void setCheckboxSize(RenderStyle*) const;    
+    void setRadioSize(RenderStyle*) const;
+
+    void adjustButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
+    void adjustTextFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
+    void adjustMenuListStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const;
+    void adjustMenuListButtonStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const;
+    
+    bool paintCheckbox(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r);
+    bool paintButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
+    bool paintMenuListButton(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r);
+    bool paintMenuList(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r);
+    bool paintRadio(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r);
+    bool paintTextField(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
+    bool paintTextArea(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
+    
+
+    bool isControlStyled(const RenderStyle*, const BorderData&,
+                                 const BackgroundLayer&, const Color&) const;
+    bool controlSupportsTints(const RenderObject*) const;
+    void systemFont(int propId, FontDescription&) const;
+    
+    Color platformActiveSelectionBackgroundColor() const; 
+    Color platformInactiveSelectionBackgroundColor() const;
+    Color platformActiveSelectionForegroundColor() const;
+    Color platformInactiveSelectionForegroundColor() const;
+    
+    void addIntrinsicMargins(RenderStyle*) const;
+    void close();
+    bool supportsFocus(EAppearance) const;
+    void paintButtonDecorations(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r);
+
+    bool supportsFocusRing(const RenderStyle*) const;
+    void scaleImage(int type, int scalingFactor);
+    void scaleImageL(int type, int scalingFactor);
+
+    void cancel();
+    void run();
+
+    Image* m_checkBoxOn;
+    Image* m_checkBoxOff;
+    Image* m_scaledCheckBoxOn;
+    Image* m_scaledCheckBoxOff;
+    int m_scalingForCheckBoxOn;
+    int m_scalingForCheckBoxOff;
+
+    Image* m_radioButtonOn;
+    Image* m_radioButtonOff;
+    Image* m_scaledRadioOn;
+    Image* m_scaledRadioOff;
+    int m_scalingForRadioOn;
+    int m_scalingForRadioOff;
+
+    Image* m_selectArrow;
+    Image* m_scaledSelectArrow;
+    int m_scalingForSelectArrow;
+
+    CBitmapScaler* m_bitmapScaler;
+    CActiveSchedulerWait* m_asw;
+};
+
+
+class SyncScaler : public CActive
+{
+public:
+    SyncScaler();
+    ~SyncScaler();
+    void init();
+    void RunL();
+    void DoCancel();
+    TInt RunError(TInt aError);
+    int m_error;
+};
+
+}
+#endif// !__RENDERTHEMESYMBIAN_H__
--- a/webengine/osswebengine/WebCore/platform/symbian/StaticObjectsContainer.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/StaticObjectsContainer.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -35,8 +35,25 @@
 #include "WebCannedImages.h"
 #include "OOMHandler.h"
 #include "SharedTimer.h"
+#include "TextEncodingRegistry.h"
+#include "CSSStyleSelector.h"
+#include "RenderStyle.h"
+#include "Page.h"
+#include "Cache.h"
+#include "StreamingTextCodecSymbian.h"
+#include "HTMLNames.h"
+#include "XMLNames.h"
+#include "FontCache.h"
+#include "RenderThemeSymbian.h"
+#include "qualifiedname.h"
+#include "XMLTokenizer.h"
 #include <eikenv.h>
 
+#include "WidgetEngineBridge.h"
+#if defined(BRDO_LIW_FF)
+#include "DeviceBridge.h"
+#endif
+
 const TInt KLowResolutionDpi = 130;
 const TInt KMediumResolutionDpi = 200;
 
@@ -60,6 +77,7 @@
     ,m_oomHandler(0)
     ,m_fullScreenMode(false)
     ,m_pluginFullscreen(false)
+    ,m_symbianTheme(NULL)
 {
     // Check the device resolution
     CEikonEnv* eikEnv = CEikonEnv::Static();
@@ -83,7 +101,11 @@
 
 StaticObjectsContainer::~StaticObjectsContainer()
 {
+    // Run KJS collector to cleanup any remaining references
+    // This must be run before Cache::deleteStaticCache to properly free resources
+    KJS::Collector::collect();
     delete m_oomHandler;
+    FontCache::deleteFontDataCache();
     delete m_fontCache;
     delete m_formFillController;
     delete m_pictograph;
@@ -94,8 +116,27 @@
     delete m_cannedimg;
     delete m_cursor;
     delete m_pluginhandler;
+    delete m_symbianTheme;
     gInstance = NULL;
+    deletePageStaticData();
+    CSSStyleSelector::deleteDefaultStyle();
+    deleteEncodingMaps();
+    RenderStyle::deleteDefaultRenderStyle();
+    Cache::deleteStaticCache();
+    TextCodecSymbian::deleteStatAvailCharsets();
+    QualifiedName::cleanup();
+    XMLNames::remove();
+    // HTMLNames::remove() will destroy the AtomicString table
+    // All other atomic string destruction must be done before this call
+    //
+    HTMLNames::remove();
+    XMLTokenizer::cleanupXMLStringParser();
     shutdownSharedTimer();
+    m_widgetLibrary.Close();
+#if defined(BRDO_LIW_FF)
+    m_deviceLibrary.Close();
+#endif
+    CloseSTDLIB();
 }
 
 StaticObjectsContainer* StaticObjectsContainer::instance()
@@ -198,6 +239,40 @@
     return m_pluginhandler;
 }
 
+#if defined(BRDO_LIW_FF)
+MDeviceBridge* StaticObjectsContainer::getDeviceBridgeL()
+{
+    MDeviceBridge* device(NULL);
+    
+    if( !m_deviceLibrary.Handle() ) {
+        _LIT( KDeviceDLLName, "jsdevice.dll" );
+        User::LeaveIfError( m_deviceLibrary.Load(KDeviceDLLName) );
+    }
+    
+    TLibraryFunction device_entry = m_deviceLibrary.Lookup(1);
+    if (device_entry) {
+        device = (MDeviceBridge*) device_entry();
+    }
+    return device;
+}
+#endif 
+
+MWidgetEngineBridge* StaticObjectsContainer::getWidgetEngineBridgeL()
+{
+    MWidgetEngineBridge* widget(NULL);
+    
+    if( !m_widgetLibrary.Handle() ) {
+        _LIT( KBrowserWidgetEngineName, "widgetengine.dll" );
+        User::LeaveIfError( m_widgetLibrary.Load(KBrowserWidgetEngineName) );
+    }
+    
+    TLibraryFunction entry = m_widgetLibrary.Lookup(1);
+    if (entry) {
+        widget = (MWidgetEngineBridge*) entry(); 
+    }
+    return widget;    
+}
+
 CBrCtl* StaticObjectsContainer::brctl() const
 {
     if (m_activeBrCtls.size() > 0)
@@ -236,6 +311,13 @@
 bool StaticObjectsContainer::fullScreenMode(void){
     return m_fullScreenMode;
 }
+
+RenderTheme* StaticObjectsContainer::theme()
+{
+    if(!m_symbianTheme)
+        m_symbianTheme = new RenderThemeSymbian();
+    return m_symbianTheme;
+}
 }
 
 // END OF FILE
--- a/webengine/osswebengine/WebCore/platform/symbian/StaticObjectsContainer.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/StaticObjectsContainer.h	Fri Jul 03 15:54:40 2009 +0100
@@ -19,6 +19,7 @@
 #ifndef __STATICOBJECTCONTAINER_H__
 #define __STATICOBJECTCONTAINER_H__
 
+#include <Browser_Platform_Variant.hrh>
 #include <e32base.h>
 #include <e32std.h>
 #include <wtf/Noncopyable.h>
@@ -34,9 +35,12 @@
 class PluginHandler;
 class WebCannedImages;
 class CBrCtl;
+class MWidgetEngineBridge;
+class MDeviceBridge;
 
 namespace WebCore {
-
+class RenderThemeSymbian;
+class RenderTheme;
 typedef enum
     {
     ELowScreenResolution,
@@ -68,7 +72,12 @@
     PluginHandler* pluginHandler();
     void setPluginFullscreen(bool val) { m_pluginFullscreen = val; }
     bool isPluginFullscreen() { return m_pluginFullscreen; }
-
+#if defined(BRDO_LIW_FF)
+    MDeviceBridge* getDeviceBridgeL();
+#endif     
+    MWidgetEngineBridge* getWidgetEngineBridgeL();
+    RenderTheme* theme();
+    
     virtual ~StaticObjectsContainer();
 
     void ref(CBrCtl& brctl);
@@ -101,6 +110,11 @@
     OOMHandler*             m_oomHandler;
     bool                    m_fullScreenMode;
     bool                    m_pluginFullscreen;
+    RLibrary                m_widgetLibrary;
+#if defined(BRDO_LIW_FF)
+    RLibrary                m_deviceLibrary;
+#endif
+    RenderThemeSymbian*	    m_symbianTheme;
 };
 
 }
--- a/webengine/osswebengine/WebCore/platform/symbian/StreamingTextCodecSymbian.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/StreamingTextCodecSymbian.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -254,6 +254,12 @@
 }
 
 
+void TextCodecSymbian::deleteStatAvailCharsets()
+{
+    delete s_availableCharsets;
+    s_availableCharsets = 0;
+}
+
 }
 
 // END OF FILE
--- a/webengine/osswebengine/WebCore/platform/symbian/StreamingTextCodecSymbian.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/StreamingTextCodecSymbian.h	Fri Jul 03 15:54:40 2009 +0100
@@ -35,6 +35,8 @@
 
         virtual String decode(const char*, size_t length, bool flush = false);
         virtual CString encode(const UChar*, size_t length, bool allowEntities = false);
+
+        static void deleteStatAvailCharsets();
     
     private:
         bool initializeConverter();
--- a/webengine/osswebengine/WebCore/platform/symbian/TextBreakIteratorSymbian.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/TextBreakIteratorSymbian.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -165,44 +165,55 @@
        return -1;
     }
     
+static WordBreakIteratorSymbian *wordIterator = 0;
+static CharBreakIteratorSymbian *charIterator = 0;
+static LineBreakIteratorSymbian *lineIterator = 0;
+struct cleanupIterators {
+    ~cleanupIterators() {
+    		delete wordIterator;
+    		wordIterator = NULL;
+    		delete charIterator;
+    		charIterator = NULL;
+    		delete lineIterator;
+    		lineIterator = NULL;
+    }
+};
+static cleanupIterators deleteBreakIterator;
 
 TextBreakIterator* wordBreakIterator(const UChar* string, int length)
 {
-    static WordBreakIteratorSymbian *iterator = 0;
-    if (!iterator)
-        iterator = new WordBreakIteratorSymbian;
+    if (!wordIterator)
+        wordIterator = new WordBreakIteratorSymbian;
 
-    iterator->string = string;
-    iterator->length = length;
-    iterator->currentPos = 0;
+    wordIterator->string = string;
+    wordIterator->length = length;
+    wordIterator->currentPos = 0;
 
-    return iterator;
+    return wordIterator;
 }
 
 TextBreakIterator* characterBreakIterator(const UChar* string, int length)
 {
-    static CharBreakIteratorSymbian *iterator = 0;
-    if (!iterator)
-        iterator = new CharBreakIteratorSymbian;
+    if (!charIterator)
+        charIterator = new CharBreakIteratorSymbian;
 
-    iterator->string = string;
-    iterator->length = length;
-    iterator->currentPos = 0;
+    charIterator->string = string;
+    charIterator->length = length;
+    charIterator->currentPos = 0;
 
-    return iterator;
+    return charIterator;
 }
 
 TextBreakIterator* lineBreakIterator(const UChar* string, int length)
 {
-   static LineBreakIteratorSymbian *iterator = 0;
-    if (!iterator)
-        iterator = new LineBreakIteratorSymbian;
+    if (!lineIterator)
+        lineIterator = new LineBreakIteratorSymbian;
 
-    iterator->string = string;
-    iterator->length = length;
-    iterator->currentPos = 0;
+    lineIterator->string = string;
+    lineIterator->length = length;
+    lineIterator->currentPos = 0;
 
-    return iterator;
+    return lineIterator;
 }
 
 TextBreakIterator* sentenceBreakIterator(const UChar*, int)
@@ -244,3 +255,5 @@
 
 }
 
+
+
--- a/webengine/osswebengine/WebCore/platform/symbian/bitmap/MaskedBitmap.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/platform/symbian/bitmap/MaskedBitmap.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -644,6 +644,7 @@
         return iScaledBitmap;
 
     delete iScaledBitmap;
+    iScaledBitmap = NULL;
     iScaledBitmap = CMaskedBitmap::NewL();
 
     CFbsBitmap& bmp = iScaledBitmap->BitmapModifyable();
--- a/webengine/osswebengine/WebCore/rendering/RenderBox.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/rendering/RenderBox.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -54,6 +54,17 @@
 typedef WTF::HashMap<const RenderBox*, int> OverrideSizeMap;
 static OverrideSizeMap* gOverrideSizeMap = 0;
 
+struct cleanOverridSizeMap {
+    ~cleanOverridSizeMap() {
+        if( gOverrideSizeMap ) {
+            gOverrideSizeMap->clear();
+            delete gOverrideSizeMap;
+            gOverrideSizeMap = 0;
+        }
+    }
+};
+struct cleanOverridSizeMap cleanOSizeMap;
+
 RenderBox::RenderBox(Node* node)
     : RenderObject(node)
     , m_width(0)
--- a/webengine/osswebengine/WebCore/rendering/RenderStyle.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/rendering/RenderStyle.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -19,7 +19,6 @@
  *
  */
 
-#include "config.h"
 #include "RenderStyle.h"
 
 #include "CSSStyleSelector.h"
@@ -1443,4 +1442,15 @@
     return noneList;
 }
 
+#if PLATFORM(SYMBIAN)
+void RenderStyle::deleteDefaultRenderStyle()
+{
+	//goes to overridden delete operator but calls destructor
+	delete defaultStyle;
+	//release cell allocated because overridder delete does not do that.
+	free(defaultStyle);
+	defaultStyle = NULL;
 }
+#endif
+
+}
--- a/webengine/osswebengine/WebCore/rendering/RenderStyle.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/rendering/RenderStyle.h	Fri Jul 03 15:54:40 2009 +0100
@@ -27,6 +27,7 @@
 #ifndef RenderStyle_h
 #define RenderStyle_h
 
+#include "config.h"
 /*
  * WARNING:
  * --------
@@ -1911,9 +1912,11 @@
     static bool initialVisuallyOrdered() { return false; }
     static float initialTextStrokeWidth() { return 0; }
     static unsigned short initialColumnCount() { return 1; }
+
 #if PLATFORM(SYMBIAN)
     static const AtomicString& initialWapInputFormat() { return nullAtom; }
     static bool initialWapInputRequired() { return false; }
+    static void deleteDefaultRenderStyle();
 #endif
 
     // Keep these at the end.
--- a/webengine/osswebengine/WebCore/rendering/RenderWidget.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/rendering/RenderWidget.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -41,12 +41,27 @@
 
 using namespace EventNames;
 
+static HashMap<const Widget*, RenderWidget*>* staticWidgetRendererMap;
+
 static HashMap<const Widget*, RenderWidget*>& widgetRendererMap()
 {
-    static HashMap<const Widget*, RenderWidget*>* staticWidgetRendererMap = new HashMap<const Widget*, RenderWidget*>;
+    if( !staticWidgetRendererMap ) {
+        staticWidgetRendererMap = new HashMap<const Widget*, RenderWidget*>;
+    }
     return *staticWidgetRendererMap;
 }
 
+struct renderMapCleaner {
+    ~renderMapCleaner() {
+        if( staticWidgetRendererMap ) {
+            staticWidgetRendererMap->clear();
+            delete staticWidgetRendererMap;
+            staticWidgetRendererMap = 0;
+        }
+    }
+};
+struct renderMapCleaner renderMapClean;
+
 RenderWidget::RenderWidget(Node* node)
       : RenderReplaced(node)
       , m_widget(0)
--- a/webengine/osswebengine/WebCore/rendering/RootInlineBox.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/rendering/RootInlineBox.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -38,6 +38,17 @@
 typedef WTF::HashMap<const RootInlineBox*, EllipsisBox*> EllipsisBoxMap;
 static EllipsisBoxMap* gEllipsisBoxMap = 0;
 
+struct EllipsisBoxCleanup {
+    ~EllipsisBoxCleanup() {
+        if( gEllipsisBoxMap ) {
+            gEllipsisBoxMap->clear();
+            delete gEllipsisBoxMap;
+            gEllipsisBoxMap = 0;
+        }
+    }
+};
+struct EllipsisBoxCleanup ellipsisCleaner;
+
 void* RootInlineBox::Overflow::operator new(size_t sz, RenderArena* renderArena) throw()
 {
     return renderArena->allocate(sz);
--- a/webengine/osswebengine/WebCore/rendering/bidi.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/rendering/bidi.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -95,6 +95,19 @@
 static bool previousLineBrokeCleanly = true;
 static int numSpaces;
 
+struct cleanupMidpoints {
+    ~cleanupMidpoints() {
+    	if(smidpoints)
+    		{
+    		smidpoints->clear();
+    		delete smidpoints;
+    		smidpoints = 0;
+    		}
+    }
+};
+static cleanupMidpoints deleteMidPoints;
+
+
 static int getBPMWidth(int childValue, Length cssUnit)
 {
     if (!cssUnit.isIntrinsicOrAuto())
--- a/webengine/osswebengine/WebKit.pri	Fri May 08 08:25:06 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-# Include file to make it easy to include WebKit into Qt projects
-
-
-isEmpty(OUTPUT_DIR) {
-    CONFIG(release):OUTPUT_DIR=$$PWD/WebKitBuild/Release
-    CONFIG(debug):OUTPUT_DIR=$$PWD/WebKitBuild/Debug
-}
-
-!gtk-port:CONFIG += qt-port
-qt-port:DEFINES += BUILDING_QT__=1
-qt-port:!building-libs {
-    QMAKE_LIBDIR = $$OUTPUT_DIR/lib $$QMAKE_LIBDIR
-    LIBS += -lQtWebKit
-}
-gtk-port:CONFIG += link_pkgconfig
-gtk-port:PKGCONFIG += cairo cairo-ft gdk-2.0 gtk+-2.0 libcurl
-gtk-port:DEFINES += BUILDING_GTK__=1 BUILDING_CAIRO__
-gtk-port:LIBS += -L$$OUTPUT_DIR/lib -lWebKitGtk $$system(icu-config --ldflags) -ljpeg -lpng
-gtk-port:QMAKE_CXXFLAGS += $$system(icu-config --cppflags)
-
-DEFINES += USE_SYSTEM_MALLOC
-CONFIG(release) {
-    DEFINES += NDEBUG
-}
-
-BASE_DIR = $$PWD
-qt-port:INCLUDEPATH += \
-    $$PWD/WebKit/qt/Api
-gtk-port:INCLUDEPATH += \
-    $$BASE_DIR/WebCore/platform/gtk \
-    $$BASE_DIR/WebCore/platform/network/curl \
-    $$BASE_DIR/WebCore/platform/graphics/cairo \
-    $$BASE_DIR/WebCore/loader/gtk \
-    $$BASE_DIR/WebCore/page/gtk \
-    $$BASE_DIR/WebKit/gtk/Api \
-    $$BASE_DIR/WebKit/gtk/WebCoreSupport
-INCLUDEPATH += \
-    $$BASE_DIR/JavaScriptCore/ \
-    $$BASE_DIR/JavaScriptCore/kjs \
-    $$BASE_DIR/JavaScriptCore/bindings \
-    $$BASE_DIR/JavaScriptCore/bindings/c \
-    $$BASE_DIR/JavaScriptCore/wtf \
-    $$BASE_DIR/JavaScriptCore/ForwardingHeaders \
-    $$BASE_DIR/WebCore \
-    $$BASE_DIR/WebCore/ForwardingHeaders \
-    $$BASE_DIR/WebCore/platform \
-    $$BASE_DIR/WebCore/platform/network \
-    $$BASE_DIR/WebCore/platform/graphics \
-    $$BASE_DIR/WebCore/loader \
-    $$BASE_DIR/WebCore/page \
-    $$BASE_DIR/WebCore/css \
-    $$BASE_DIR/WebCore/dom \
-    $$BASE_DIR/WebCore/bridge \
-    $$BASE_DIR/WebCore/editing \
-    $$BASE_DIR/WebCore/rendering \
-    $$BASE_DIR/WebCore/history \
-    $$BASE_DIR/WebCore/xml \
-    $$BASE_DIR/WebCore/html
-
-
-macx {
-	INCLUDEPATH += /usr/include/libxml2
-	LIBS += -lxml2 -lxslt
-}
--- a/webengine/osswebengine/WebKit.pro	Fri May 08 08:25:06 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-TEMPLATE = subdirs
-CONFIG += ordered
-!gtk-port:CONFIG += qt-port
-qt-port:!win32-*:SUBDIRS += WebKit/qt/Plugins
-SUBDIRS += \
-        JavaScriptCore/pcre/dftables.pro \
-        WebCore \
-        JavaScriptCore/kjs/testkjs.pro
-
-qt-port {
-    SUBDIRS += WebKit/qt/QtLauncher
-
-    !win32-*: SUBDIRS += WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro
-}
-
-gtk-port:SUBDIRS += \
-        WebKitTools/GtkLauncher
--- a/webengine/osswebengine/WebKit/gtk/Api/headers.pri	Fri May 08 08:25:06 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-WEBKIT_API_HEADERS = $$PWD/webkitgtkdefines.h \
-                     $$PWD/webkitgtkframe.h \
-                     $$PWD/webkitgtkframedata.h \
-                     $$PWD/webkitgtkglobal.h \
-                     $$PWD/webkitgtknetworkrequest.h \
-                     $$PWD/webkitgtkpage.h \
-                     $$PWD/webkitgtksettings.h
--- a/webengine/osswebengine/WebKit/qt/Api/headers.pri	Fri May 08 08:25:06 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-WEBKIT_API_HEADERS = $$PWD/qcookiejar.h \
-                     $$PWD/qwebframe.h \
-                     $$PWD/qwebkitglobal.h \
-                     $$PWD/qwebnetworkinterface.h \
-                     $$PWD/qwebobjectplugin.h \
-                     $$PWD/qwebobjectpluginconnector.h \
-                     $$PWD/qwebpage.h \
-                     $$PWD/qwebpagehistory.h \
-                     $$PWD/qwebsettings.h \
-                     $$PWD/qwebhistoryinterface.h
--- a/webengine/osswebengine/WebKit/qt/Plugins/Plugins.pro	Fri May 08 08:25:06 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-TEMPLATE = lib
-TARGET = qtwebico
-CONFIG += static plugin
-HEADERS += ICOHandler.h
-SOURCES += ICOHandler.cpp
-
-include(../../WebKit.pri)
-
-contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols 
-unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions
--- a/webengine/osswebengine/WebKit/qt/QtLauncher/QtLauncher.pro	Fri May 08 08:25:06 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-TEMPLATE = app
-SOURCES += main.cpp
-CONFIG -= app_bundle
-DESTDIR = ../../../bin
-
-include(../../../WebKit.pri)
-
-macx:QT+=xml network
-QMAKE_RPATHDIR = $$OUTPUT_DIR/lib $$QMAKE_RPATHDIR
--- a/webengine/osswebengine/WebKit/s60/group/JavaScriptCore/JavaScriptCore.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/group/JavaScriptCore/JavaScriptCore.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -23,7 +23,11 @@
 #include <platform_paths.hrh>
 #include <platform/mw/Browser_platform_variant.hrh>
 
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 CAPABILITY  CAP_GENERAL_DLL
 VENDORID    VID_DEFAULT
 
--- a/webengine/osswebengine/WebKit/s60/group/webcore/platform/platform.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/group/webcore/platform/platform.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -28,7 +28,11 @@
 START RESOURCE ../../../data/webkit.rss
 HEADER
 TARGETPATH      RESOURCE_FILES_DIR
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 END
 
 START BITMAP webkit.mbm
--- a/webengine/osswebengine/WebKit/s60/group/webkit/webkit.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/group/webkit/webkit.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -51,6 +51,7 @@
 SOURCE          WebScrollingDecelerator.cpp
 SOURCE          WebScrollingDeceleratorGH.cpp
 SOURCE          WebScrollbarDrawer.cpp
+SOURCE          WebSprite.cpp
 
 SOURCEPATH      ../../FormControls
 SOURCE          WebFormFill.cpp
--- a/webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -23,6 +23,8 @@
 #include "WebUtil.h"
 #include "Document.h"
 #include "Frame.h"
+#include "HitTestRequest.h"
+#include "HitTestResult.h"
 #include "HTMLNames.h"
 #include "FrameTree.h"
 #include "BrCtlDefs.h"
@@ -38,6 +40,7 @@
 #include "FocusController.h"
 #include "RenderListBox.h"
 #include "HTMLSelectElement.h"
+#include "HTMLInputElement.h"
 
 using namespace WebCore;
 using namespace HTMLNames;
@@ -75,6 +78,28 @@
     }
 }
 
+void WebTabbedNavigation::updateCursorPosition(const TPoint& pos)
+{
+    m_focusPosition = pos;
+    WebFrame* frame = StaticObjectsContainer::instance()->webCursor()->getFrameAtPoint(pos);
+    TPoint point(frame->frameView()->viewCoordsInFrameCoords(pos));
+
+    Element* node = core(frame)->document()->elementFromPoint(point.iX, point.iY);
+    if (node->isFocusable() && !node->hasTagName(iframeTag) && !node->hasTagName(frameTag))
+        m_webView->page()->focusController()->setFocusedNode(node, core(frame));
+    else
+        m_webView->page()->focusController()->setFocusedNode(NULL, core(frame));
+    m_selectedElementRect.SetRect(pos.iX, pos.iY, pos.iX + 1, pos.iY + 1);
+}
+
+void WebTabbedNavigation::focusedElementChanged(Element* element)
+{
+    m_initializedForPage = true;
+    m_firstNavigationOnPage = false;
+    m_node = element;
+    m_selectedElementRect = element->getRect().Rect();
+    m_focusPosition = StaticObjectsContainer::instance()->webCursor()->position();
+}
 
 bool WebTabbedNavigation::navigate(int horizontalDir, int verticalDir)
 {
@@ -181,6 +206,16 @@
             m_focusPosition = selectedPoint;
             selectedRect = newRect;
             m_selectedElementRect = selectedRect;
+
+            int x, y;
+            selectedNode->renderer()->absolutePosition(x, y);
+            Vector<IntRect> rects;
+            selectedNode->renderer()->absoluteRects(rects, x, y);
+            WebFrameView* fv = kit(selectedNode->document()->frame())->frameView();
+            if (rects.size() > 0) {
+                 selectedPoint = TPoint(rects[0].x(), rects[0].y());
+                selectedPoint = fv->frameCoordsInViewCoords(selectedPoint);
+            }
             StaticObjectsContainer::instance()->webCursor()->updatePositionAndElemType(selectedPoint);
             // special handling for Select-Multi
             if (m_webView->focusedElementType() == TBrCtlDefs::EElementSelectMultiBox) {
@@ -218,6 +253,16 @@
             m_webView->mainFrame()->frameView()->scrollTo(contentPos + TPoint(horizontalDir * m_webView->Rect().Width() / KScrollWhenNotFound, verticalDir * m_webView->Rect().Height() / KScrollWhenNotFound));
             TPoint diff(m_webView->mainFrame()->frameView()->contentPos() - contentPos);
             if (diff.iX || diff.iY) {
+                Frame* focusedFrame = m_webView->page()->focusController()->focusedFrame();
+                if (focusedFrame == NULL) focusedFrame = m_webView->page()->mainFrame();
+                Node* focusNode = focusedFrame->document()->focusedNode();
+                if (focusNode) {
+                    TRect selectedRect = focusNode->getRect().Rect();
+                    selectedRect = TRect(kit(focusedFrame)->frameView()->frameCoordsInViewCoords(selectedRect.iTl), 
+                        kit(focusedFrame)->frameView()->frameCoordsInViewCoords(selectedRect.iBr));
+                    if (!selectedRect.Intersects(kit(focusedFrame)->frameView()->visibleRect()))
+                        m_webView->page()->focusController()->setFocusedNode(NULL,0);
+                }
                 m_selectedElementRect.Move(diff);
                 m_focusPosition = oldFocusPoint + diff;
                 m_node = NULL;
@@ -289,6 +334,7 @@
 
 int WebTabbedNavigation::distanceFunction(int horizontalDir, int verticalDir, TRect& rect, TPoint& point)
 {
+    // Based on http://www.w3.org/TR/WICD/#focus-navigation
     TReal x, y, euclidianDistance;
     int sameAxisDist, otherAxisDist, overlap;
 
@@ -306,6 +352,10 @@
             int top = max(m_selectedElementRect.iTl.iY, rect.iTl.iY);
             int bottom = std::min(m_selectedElementRect.iBr.iY, rect.iBr.iY);
             overlap = bottom - top;
+            if (overlap == rect.Height()) {
+                euclidianDistance = (euclidianDistance * rect.Height()) / m_selectedElementRect.Height();
+                otherAxisDist = 0;
+            }
         }
     }
     else { // vertical    
@@ -316,10 +366,14 @@
             int top = max(m_selectedElementRect.iTl.iX, rect.iTl.iX);
             int bottom = std::min(m_selectedElementRect.iBr.iX, rect.iBr.iX);
             overlap = bottom - top;
+            if (overlap == rect.Width()) {
+                euclidianDistance = (euclidianDistance * rect.Width()) / m_selectedElementRect.Width();
+                otherAxisDist = 0;
+            }
         }
     }
     long ed, o;
     Math::Int(ed, euclidianDistance);
     Math::Int(o, sqrt(overlap));
-    return ed + sameAxisDist + 2 * otherAxisDist + o;
+    return ed + sameAxisDist + 2 * otherAxisDist - o;
 }
--- a/webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.h	Fri Jul 03 15:54:40 2009 +0100
@@ -21,6 +21,10 @@
 #include <e32std.h>
 
 class WebView;
+namespace WebCore {
+    class Element;
+    class Node;
+};
 
 class WebTabbedNavigation {
     public:
@@ -30,6 +34,8 @@
         bool navigate(int horizontalDir, int verticalDir);
         void clear();
         void initializeForPage();
+        void updateCursorPosition(const TPoint& pos);
+        void focusedElementChanged(WebCore::Element* element);
 
     private:
         bool selectNode(int horizontalDir, int verticalDir, TRect& selectedRect, TRect& newNodeRect, TPoint& selectedPoint, TPoint& newFocusPoint);
--- a/webengine/osswebengine/WebKit/s60/misc/WebUtil.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/misc/WebUtil.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -256,8 +256,6 @@
     if (!f || !f->document() || !f->document()->renderer())
         return imglist;
 
-    CleanupStack::PushL(imglist);
-
     Document* doc = f->document();
     FrameView* v = doc->view();
     IntRect r1 = wf_.frameView()->topView()->mainFrame()->frameView()->rect();
@@ -308,13 +306,12 @@
 
                         }
                         if (!imgexists)
-                            imglist->AppendL(tImg);
+                            TRAP_IGNORE( imglist->AppendL(tImg) );
                     }
                 }
             }
         }
     }
-    CleanupStack::Pop(imglist);
     return imglist;
 }
 
@@ -326,7 +323,6 @@
     if (!f || !f->document())
         return linkList;
 
-    CleanupStack::PushL(linkList);
     for (Node *n = f->document(); n; n = n->traverseNextNode()) {
         if (n->isElementNode() && n->hasTagName(linkTag)) {
 
@@ -339,11 +335,10 @@
                 String title = e->getAttribute(titleAttr);
 
                 TBrCtlSubscribeTo item(title.des(), href.des(), 0);
-                linkList->AppendL(item);
+                TRAP_IGNORE( linkList->AppendL(item) );
             }
         }
     }
-    CleanupStack::Pop(linkList);
     return linkList;
 }
 
@@ -467,27 +462,37 @@
 void addOneMenuItemAfter(CEikMenuPane& menuPane, unsigned int after, int command, int resourceId, unsigned int commandBase)
 {
     CEikMenuPaneItem::SData item;
-    HBufC* buf = StringLoader::LoadLC(resourceId);
+    HBufC* buf = NULL;
+    TRAP_IGNORE( buf = StringLoader::LoadL(resourceId));
+    if(buf == NULL)
+        {
+        return;
+        }
     item.iText.Copy(*buf);
-    CleanupStack::PopAndDestroy();  // buf
+    delete buf;
     buf = NULL;
     item.iCommandId = command + commandBase;
     item.iFlags = 0;
     item.iCascadeId = 0;
-    menuPane.AddMenuItemL(item, after);
+    TRAP_IGNORE( menuPane.AddMenuItemL(item, after) );
 }
 
 void insertOneMenuItem(CEikMenuPane& menuPane, int command, int resourceId, unsigned int commandBase)
 {
     CEikMenuPaneItem::SData item;
-    HBufC* buf = StringLoader::LoadLC(resourceId);
+    HBufC* buf = NULL;
+    TRAP_IGNORE( buf = StringLoader::LoadL(resourceId));
+    if(buf == NULL)
+        {
+        return;
+        }
     item.iText.Copy(*buf);
-    CleanupStack::PopAndDestroy();  // buf
+    delete buf;
     buf = NULL;
     item.iCommandId = command + commandBase;
     item.iFlags = 0;
     item.iCascadeId = 0;
-    menuPane.InsertMenuItemL(item, 0);
+    TRAP_IGNORE( menuPane.InsertMenuItemL(item, 0) );
 }
 
 int textMultiplier(int fontLevel, int originalSize)
@@ -601,7 +606,7 @@
                         url.append(telbook);
                         url.append(numberNameSeparator);
                         url.append(email);
-                        handleSpecialSchemeL(url, webView->brCtl());
+                        TRAP_IGNORE( handleSpecialSchemeL(url, webView->brCtl()) );
                     }
                 }
             }
--- a/webengine/osswebengine/WebKit/s60/plugins/NpnImplementation.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/NpnImplementation.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -301,6 +301,7 @@
 //
 NPError NpnGetValue(NPP aInstance, NPNVariable aVariable, void *aRetValue)
 {
+    TInt err = NPERR_NO_ERROR;
     
     switch (aVariable) {
         
@@ -354,9 +355,11 @@
             if (windowObject) {
                 void **v = (void **)aRetValue;
                 *v = windowObject;
-                return NPERR_NO_ERROR;
             }
-            return NPERR_GENERIC_ERROR;
+            else {
+                err = NPERR_GENERIC_ERROR;
+            }
+            break;
         }
         case NPNVDOMWindow:
         case NPNVxDisplay:          // Unix only: Returns the current Display
@@ -377,11 +380,14 @@
             
             
         default:
+            {
             *((TBool*) aRetValue) = EFalse;
+            err = NPERR_INVALID_PARAM;
+            }
             break;
     }   // end of switch
     
-    return NPERR_NO_ERROR;
+    return err;
 
 }
 
@@ -462,7 +468,7 @@
             {
             NPBool* isFullScreen = (NPBool*)aSetValue;
             PluginWin* pluginWin = (PluginWin*)aInstance->ndata;
-            pluginWin->TogleScreenMode(*isFullScreen);
+            pluginWin->ToggleScreenMode(*isFullScreen);
             break;
             }
         case NPPVPluginZoom:
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginHandler.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginHandler.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -533,43 +533,50 @@
 // -----------------------------------------------------------------------------
 //
 TInt PluginHandler::findPlugin(const TDesC& mimeType) 
-{    
+   {    
     LOAD_PLUGINS
-    
-	HBufC*   newMimeType = NULL;
-	_LIT(KSeparator, "*");
-	TInt  pluginIndex;
+
+    TInt bufSize( KMimeTypeLength > mimeType.Length() ? KMimeTypeLength : mimeType.Length() );
+    HBufC* newMimeType = HBufC::New(bufSize);
+    if( newMimeType == NULL )
+        {
+        return KErrNoMemory;
+        }
+    _LIT(KSeparator, "*");
+    TInt  pluginIndex;
     TInt  mimeIndex;
 
-	if (mimeType.FindF(KMimeTypeAudio) != KErrNotFound){
-		newMimeType = HBufC::NewLC(KMimeTypeLength);
+    if( mimeType.FindF(KMimeTypeAudio) != KErrNotFound )
+        {
         newMimeType->Des().Copy(KMimeTypeAudio);
-		newMimeType->Des().Append(KSeparator);
-	}
-	else if (mimeType.FindF(KMimeTypeVideo) != KErrNotFound){
-		newMimeType = HBufC::NewLC(KMimeTypeLength);
+        newMimeType->Des().Append(KSeparator);
+        }
+    else if ( mimeType.FindF(KMimeTypeVideo) != KErrNotFound )
+        {
         newMimeType->Des().Copy(KMimeTypeVideo);
-		newMimeType->Des().Append(KSeparator);
-	}
-	else{
-		newMimeType = HBufC::NewLC(mimeType.Length());
-        newMimeType = mimeType.AllocL();
-	}
-	CleanupStack::Pop(); //pop newMimeType
-	
-    for (pluginIndex = 0; pluginIndex < m_pluginInfoArray.Count(); pluginIndex++) {
+        newMimeType->Des().Append(KSeparator);
+        }
+    else
+        {
+        newMimeType->Des().Copy(mimeType);
+        }
+
+    for (pluginIndex = 0; pluginIndex < m_pluginInfoArray.Count(); pluginIndex++) 
+        {
         for (mimeIndex = 0;
              mimeIndex < m_pluginInfoArray[pluginIndex]->m_mimeTypes.Count();
-             mimeIndex++) {
-            if (!m_pluginInfoArray[pluginIndex]->m_mimeTypes[mimeIndex]->CompareF(*newMimeType)) {
+             mimeIndex++) 
+            {
+            if (!m_pluginInfoArray[pluginIndex]->m_mimeTypes[mimeIndex]->CompareF(*newMimeType))
+                {
                 delete newMimeType;
-				return m_pluginInfoArray[pluginIndex]->m_handle;
+                return m_pluginInfoArray[pluginIndex]->m_handle;
+                }
             }
         }
+    delete newMimeType;
+    return KErrNotFound;
     }
-	delete newMimeType;
-    return KErrNotFound;
-}
 
 // -----------------------------------------------------------------------------
 // PluginHandler::findPluginByExtension
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginLoader.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginLoader.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -423,20 +423,20 @@
 // Method to return transaction Id, using the request url
 // -----------------------------------------------------------------------------
 TInt CPluginLoader::GetTransactionId( const TDesC8& aRequestUrl )
+  {
+  for (TInt i = 0;i < iPluginLoadDataArray->Count(); i++)
     {
-  for (TInt i = 0;i < iPluginLoadDataArray->Count(); i++)
+    CPluginLoadData& loadData = iPluginLoadDataArray->At(i);
+    if (loadData.RequestUrl())
       {
-      CPluginLoadData& loadData = iPluginLoadDataArray->At(i);
-      if (loadData.RequestUrlL())
-          {
-        if (aRequestUrl.Compare(*loadData.RequestUrlL()) == 0)
-            {
-          return loadData.TransactionId();
-            }
-          }
+      if (aRequestUrl.Compare(*loadData.RequestUrl()) == 0)
+        {
+        return loadData.TransactionId();
+        }
       }
+    }
   return KErrNotFound;
-    }
+  }
 
 // -----------------------------------------------------------------------------
 // CPluginLoader::GetCompleteError
@@ -553,17 +553,16 @@
 TBool CPluginLoader::SaveResponseHeader( TInt aTrId,
                                          CUrlResponseHeaderInfo& aResponseHeader )
     {
-  for (TInt i = 0;i < iPluginLoadDataArray->Count(); i++)
-      {
-      CPluginLoadData& loadData = iPluginLoadDataArray->At(i);
-    if (loadData.TransactionId() == aTrId)
+    for (TInt i = 0;i < iPluginLoadDataArray->Count(); i++)
         {
-        loadData.SetRequestUrlL(aResponseHeader.RequestUrl());
-        return ETrue;
+        CPluginLoadData& loadData = iPluginLoadDataArray->At(i);
+        if (loadData.TransactionId() == aTrId)
+            {
+            TRAPD( error, loadData.SetRequestUrlL(aResponseHeader.RequestUrl()) );
+            return error == KErrNone;
+            }
         }
-      }
-
-  return EFalse;
+    return EFalse;
     }
 
 // -----------------------------------------------------------------------------
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginLoader.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginLoader.h	Fri Jul 03 15:54:40 2009 +0100
@@ -329,12 +329,12 @@
         void SetRequestUrlL(const TDesC8& aRequestUrl);
 
         /**
-        * RequestUrlL
+        * RequestUrl
         * Return the request url
         * @since 3.1
         * @return void
         */
-        HBufC8* RequestUrlL() { return iRequestUrl; }
+        HBufC8* RequestUrl() { return iRequestUrl; }
 
         /**
         * SetURLLoader
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginPlayer.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginPlayer.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -130,13 +130,12 @@
     DrawNow();
     // not sure why we need this for bavp
     m_plugin->SetRect( TRect( TPoint(x,y), m_orgrect.Size() ) );
-    m_plugin->setPluginFocusL(ETrue);
-    
+    TRAP_IGNORE( m_plugin->setPluginFocusL(ETrue) );
     }
 
 void PluginPlayer::stop()
     {
-    m_plugin->setPluginFocusL(EFalse);
+    TRAP_IGNORE( m_plugin->setPluginFocusL(EFalse) );
     m_plugin->SetParent( m_orgparent );
     m_plugin->SetRect( TRect( m_orgrect.iTl, m_orgrect.Size() ) );
     m_plugin->makeVisible( EFalse );
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -306,24 +306,28 @@
 // ----------------------------------------------------------------------------
 void PluginSkin::pluginFocusChanged(TBool focus) 
 { 
-	  //Trigger Webview to notify all plugins about current view set to foreground/background for playing/pausing swf files (resp.)
-	  control(m_frame)->webView()->notifyPlugins(focus);
     if (control(m_frame)->webView()->pageFullScreenHandler() && 
         !control(m_frame)->webView()->pageFullScreenHandler()->isFullScreenMode()) 
             return;
     
     if (focus && !m_flashContent)
         {
+        TRAP_IGNORE(
         control(m_frame)->webView()->LeaveFullscreenBrowsingL();
-        control(m_frame)->webView()->notifyFullscreenModeChangeL( EFalse );        
+        control(m_frame)->webView()->notifyFullscreenModeChangeL( EFalse );
+        );
         }
     else if (focus)
         {
+        TRAP_IGNORE(
         control(m_frame)->webView()->pageFullScreenHandler()->showEscBtnL();
+        );
         }
     else 
         {
+        TRAP_IGNORE(
         control(m_frame)->webView()->pageFullScreenHandler()->hideEscBtnL();
+        );
         }
 }
 
@@ -460,20 +464,22 @@
                 // Set right soft key
                 m_frame->frameView()->topView()->brCtl()->updateDefaultSoftkeys();
                 pluginHandler->setActivePlugin(this);
+                pluginHandler->setPluginToActivate(NULL);
                 }
             }
         else
             {
             m_active = ETrue;
             pluginHandler->setActivePlugin(this);
-            m_frame->frameView()->topView()->openPluginPlayer(m_pluginwin);
+            TRAP_IGNORE( m_frame->frameView()->topView()->openPluginPlayerL(m_pluginwin));
             consumed = ETrue;
             m_active = EFalse;
             pluginHandler->setActivePlugin(NULL);
             }
     } else {
         if ( m_pluginSupported ) {
-            NetscapePlugInStreamLoaderClient* pluginloader = NetscapePlugInStreamLoaderClient::NewL(*m_url, this, core(m_frame));
+            NetscapePlugInStreamLoaderClient* pluginloader = NULL;
+            TRAP_IGNORE( pluginloader = NetscapePlugInStreamLoaderClient::NewL(*m_url, this, core(m_frame)));
             if (pluginloader) {
                 pluginloader->start();                            
             }                                                            
@@ -619,18 +625,6 @@
 }
 
 
-// -----------------------------------------------------------------------------
-// PluginSkin::ViewFocusChanged
-// From MViewFocusObserver
-// Callback from the view when the focus changes
-// -----------------------------------------------------------------------------
-void PluginSkin::viewFocusChanged(TBool focused)
-    {
-    if (m_pluginwin)
-        {
-        m_pluginwin->viewFocusChanged(focused);
-        }
-    }
 
 // -----------------------------------------------------------------------------
 // PluginSkin::PositionChanged
@@ -997,15 +991,6 @@
     
     return apId;
 }
-void PluginSkin::handlePluginForeground(TBool focus)
-{
-    // Send Plugin Visible/Invisible event
-    if (m_pluginwin)
-    {
-       m_pluginwin->NotifyPluginVisible(focus); 
-    }
-}
-
 
 TPluginLoadMode PluginSkin::GetLoadMode(const TDesC* aWindowType)
 {
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h	Fri Jul 03 15:54:40 2009 +0100
@@ -379,8 +379,6 @@
         
         void playPluginContent(const TDesC8& aRequestUrl) {};
 
-        void viewFocusChanged(TBool focused);
-        
         void positionChanged();
 
         void stopPluginContent(const TDesC8& aRequestUrl) {};
@@ -430,7 +428,6 @@
         * @return Bool.
         */
         TBool RunScript(); 
-        void handlePluginForeground(TBool focus);       
   private:  // private member data
         void setPluginWinClipedRect();
         TRect frameVisibleRect() const;
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -227,8 +227,6 @@
 void PluginWin::processEventL( TPluginEventType eventType,
                                 TBool& consumed )
 {
-	  CBrCtl*   brCtl = control(m_pluginskin->frame());
-	  WebView*  view = brCtl->webView();
     consumed = EFalse;
 
     switch ( eventType ) {
@@ -239,7 +237,6 @@
                     m_notifier->NotifyL( MPluginNotifier::EPluginActivated, (void*) &pt );
                 }
             consumed = ETrue;
-            view->setPluginActivated(true);   //Setting pluginactivated flag in webview
             setPluginFocusL( ETrue );
         break;
 
@@ -249,7 +246,6 @@
                     m_notifier->NotifyL( MPluginNotifier::EPluginDeactivated, (void*) 0 );
                 }
             consumed = ETrue;
-            view->setPluginActivated(false);
             setPluginFocusL( EFalse );
         break;
 
@@ -420,42 +416,6 @@
 {
 }
 
-// -----------------------------------------------------------------------------
-// PluginWin::ViewFocusChanged
-//
-// Invoked by CCoeControl to WebKitView to PluginWin when the Browser focus
-// changes. This method notifies all plugins of thier current focus state.
-// NOTES:
-// iBrowserBackground means that the browser app is not top application,
-// such as when bookmarks, idle screen, or another app/view is in foreground.
-// aFocused is true if browser has focus and false if browser is out of focus
-// and a plugin has taken focus.
-// -----------------------------------------------------------------------------
-void PluginWin::viewFocusChanged( TBool focused )
-{
-if (m_notifier)
-		{
-		if (focused)
-			{
-			// The browser brings back the focus, and so are plugins.
-			    HandleGainingForeground();
-			}
-		else
-			{
-			// The browser doesn't have focus and this plugin focus state is...
-			if ( m_pluginfocus )
-				{
-				// This plugin is selected to be activate, so the focus is on this plugin now.
-				   HandleGainingForeground();
-				}
-			else
-				{
-				// The focus on the plugin is cancelled. This happens when deactivate the selected plugin
-				   HandleLosingForeground();
-				}
-			}
-		}
-}
 
 // -----------------------------------------------------------------------------
 // PluginWin::SetPluginFocusL
@@ -575,18 +535,6 @@
         }
     }
 
-// -----------------------------------------------------------------------------
-// PluginWin::FocusChanged
-//
-// virtual function from CCoeControl for plugin win
-// -----------------------------------------------------------------------------
-//
-void PluginWin::FocusChanged(TDrawNow aDrawNow)
-{
-    if(m_pluginfocus) {
-        m_pluginskin->pluginFocusChanged(IsFocused());
-    }
-}
 
 // -----------------------------------------------------------------------------
 //
@@ -725,11 +673,13 @@
     }
 }
 
-void PluginWin::TogleScreenMode(bool aFullScreen)
+void PluginWin::ToggleScreenMode(bool aFullScreen)
 {
   m_fullscreen = aFullScreen;
   CBrCtl*   brCtl = control(m_pluginskin->frame());
-
+  WebCursor* cursor = StaticObjectsContainer::instance()->webCursor();
+  
+  cursor->cursorUpdate(!aFullScreen && !AknLayoutUtils::PenEnabled());
   StaticObjectsContainer::instance()->setPluginFullscreen(aFullScreen);
   brCtl->reportStateChanged(TBrCtlDefs::EStatePluginFullScreen, m_fullscreen);
 }
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginWin.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginWin.h	Fri Jul 03 15:54:40 2009 +0100
@@ -106,13 +106,6 @@
         */
         TInt refreshPlugin(CFbsBitGc& bitmapContext);
 
-        /**
-        * ViewFocusChanged - invoked when WebKitView gains or loses focus
-        *
-        * @since 3.1
-        * @return void
-        */
-        void viewFocusChanged(TBool focused);
 
         /**
         * ResizePluginRect
@@ -288,13 +281,6 @@
         */        
         void Draw(const TRect& rect) const;
  
-        /**
-        * FocusChanged
-        * From CCoeControl
-        *
-        */        
-        void FocusChanged(TDrawNow aDrawNow);
-
   public: //From MCoeForegroundObserver
 
     /**
@@ -488,7 +474,7 @@
     HBufC8* PluginDataUrl();
     
     
-    void TogleScreenMode(bool aFullScreen);
+    void ToggleScreenMode(bool aFullScreen);
     void PlayPausePluginL ();
     void HandlePointerEventFromPluginL(const TPointerEvent& aEvent);
     TBool HandleGesture(const RT_GestureHelper::TGestureEvent& aEvent);    
--- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebChromeClient.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebChromeClient.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -54,6 +54,11 @@
     m_visibility = false;
 }
 
+void WebChromeClient::chromeDestroyed()
+{
+    delete this;
+}
+
 FloatRect WebChromeClient::windowRect() { notImplemented(); return FloatRect(); }
 FloatRect WebChromeClient::pageRect() { notImplemented(); return FloatRect(); }
 float WebChromeClient::scaleFactor() { notImplemented(); return 1.0; }
@@ -72,7 +77,9 @@
     }
     if (name) {
     	bool userGesture = frame->scriptProxy()->interpreter()->wasRunByUserGesture();
+    	TRAP_IGNORE(
         newBrCtl = m_webView->brCtl()->getWindowL(*name, userGesture);
+        );
         delete name;
         if (newBrCtl) {
             page = newBrCtl->webView()->page();
@@ -136,6 +143,14 @@
 
 void WebChromeClient::addMessageToConsole(const WebCore::String& message, MessageLevel messageLevel, unsigned int line, const WebCore::String& sourceURL)
 {
+    TRAP_IGNORE(
+    addMessageToConsoleL(message, messageLevel, line, sourceURL);
+    );
+}
+
+void WebChromeClient::addMessageToConsoleL(const WebCore::String& message, MessageLevel messageLevel, unsigned int line, const WebCore::String& sourceURL)
+{
+
     RFs fsSession;
     User::LeaveIfError( fsSession.Connect());
 
@@ -337,4 +352,8 @@
 void WebChromeClient::addToDirtyRegion(const IntRect&){}
 void WebChromeClient::scrollBackingStore(int dx, int dy, const IntRect& scrollViewRect, const IntRect& clipRect){}
 
+void WebChromeClient::focusedElementChanged(Element* element)
+{
+    m_webView->focusedElementChanged(element);
+}
 
--- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebChromeClient.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebChromeClient.h	Fri Jul 03 15:54:40 2009 +0100
@@ -38,7 +38,7 @@
         WebView *webView() { return m_webView; }
 
         virtual ~WebChromeClient() {  }
-        virtual void chromeDestroyed() {}
+        virtual void chromeDestroyed();
 
         virtual void setWindowRect(const WebCore::FloatRect&) {}
         virtual WebCore::FloatRect windowRect();
@@ -106,6 +106,11 @@
         bool elementVisibilityChanged() {
             return m_visibility;   
         }
+        virtual void focusedElementChanged(WebCore::Element*);
+        
+protected: // new functions
+        void addMessageToConsoleL(const WebCore::String& aMessage, WebCore::MessageLevel aMessageLevel, unsigned int aLine, const WebCore::String& aSourceURL);
+        
 private:
     WebView *m_webView;
     void GetDateAndTimeL(TDes& date, TDes& time) const;
--- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebContextMenuClient.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebContextMenuClient.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -23,7 +23,11 @@
 
 using namespace WebCore;
 
-void WebContextMenuClient::contextMenuDestroyed()                                           { notImplemented(); }
+void WebContextMenuClient::contextMenuDestroyed()
+{
+    delete this;
+}
+
 PlatformMenuDescription WebContextMenuClient::getCustomMenuFromDefaultItems(ContextMenu*)   { notImplemented(); return 0; }
 void WebContextMenuClient::contextMenuItemSelected(ContextMenuItem*, const ContextMenu*)    { notImplemented(); }
 void WebContextMenuClient::downloadURL(const KURL& url)                                     { notImplemented(); }
--- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebDragClient.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebDragClient.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -31,5 +31,8 @@
 void WebDragClient::startDrag(DragImageRef dragImage, const IntPoint& dragImageOrigin, const IntPoint& eventPos, Clipboard*, Frame*, bool linkDrag) { notImplemented(); }
 DragImageRef WebDragClient::createDragImageForLink(KURL&, const String& label, Frame*)          { notImplemented(); return 0; }
 
-void WebDragClient::dragControllerDestroyed()                                                   { notImplemented(); }
+void WebDragClient::dragControllerDestroyed()
+{
+    delete this;
+}
 
--- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -287,7 +287,7 @@
 //-----------------------------------------------------------------------------
 void WebEditorClient::pageDestroyed()
 {
-    notImplemented();
+    delete this;
 }
 
 //-----------------------------------------------------------------------------
--- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebFrameLoaderClient.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebFrameLoaderClient.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -140,8 +140,11 @@
     if (isWMLContent(m_response.mimeType())) {
         // call the WmlDispatcher Headers routine to set the WML flag
         if (! m_WmlContentListener) {
-            m_WmlContentListener = CWmlDispatcher::NewL(brctl(m_webFrame), core(m_webFrame) );
-            brctl(m_webFrame)->setWmlDispatcher(m_WmlContentListener);
+            TRAPD(err, m_WmlContentListener = CWmlDispatcher::NewL(brctl(m_webFrame), core(m_webFrame) ));
+            if((err == KErrNone) && (m_WmlContentListener != NULL))
+                {
+                brctl(m_webFrame)->setWmlDispatcher(m_WmlContentListener);
+                }
         }
         TRAPD(err,m_WmlContentListener->HeadersL( 0, m_response ));
     }
@@ -160,7 +163,7 @@
         }
 
         if (!core(m_webFrame)->ownerElement()) {
-            brctl(m_webFrame)->settings()->setTabbedNavigation(!(brctl(m_webFrame)->capabilities()&TBrCtlDefs::ECapabilityCursorNavigation));
+            brctl(m_webFrame)->settings()->setNavigationType((brctl(m_webFrame)->capabilities()&TBrCtlDefs::ECapabilityCursorNavigation) ? SettingsContainer::NavigationTypeCursor : SettingsContainer::NavigationTypeTabbed);
             StaticObjectsContainer::instance()->webCursor()->cursorUpdate(true);
             m_webFrame->frameView()->topView()->tabbedNavigation()->clear();
 		}        
@@ -270,10 +273,12 @@
         [download _setOriginatingURL:originalURL];
     */
     StaticObjectsContainer::instance()->resourceLoaderDelegate()->download(handle, request, response);
+    TRAP_IGNORE(
     brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventNewUrlContentArrived, 0, 0 ); // must send this for progress bar to go away
     brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventUrlLoadingFinished, 0, 0 );
     brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventContentFinished, 0, 0 );
     brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventLoadFinished, 0, 0 );
+    );
 }
 
 void WebFrameLoaderClient::assignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader*, const ResourceRequest&)
@@ -535,7 +540,9 @@
 
     [webView _didChangeValueForKey:_WebMainFrameIconKey];
     */
+    TRAP_IGNORE(
     brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventFaviconAvailable, 0, 0 );
+    );
     notImplemented(); 
 }
 
@@ -551,7 +558,9 @@
         implementations.didStartProvisionalLoadForFrameFunc(frameLoadDelegate, @selector(webView:didStartProvisionalLoadForFrame:), webView, m_webFrame.get());
     }
     */
+    TRAP_IGNORE(
     brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventNewContentStart, 0, 0 );
+    );
     notImplemented(); 
 }
 
@@ -565,7 +574,9 @@
         implementations.didReceiveTitleForFrameFunc(frameLoadDelegate, @selector(webView:didReceiveTitle:forFrame:), webView, title, m_webFrame.get());
     }
     */
+    TRAP_IGNORE(
     brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventTitleAvailable, 0, 0 );
+    );
     notImplemented(); 
 }
 
@@ -584,7 +595,9 @@
         implementations.didCommitLoadForFrameFunc(frameLoadDelegate, @selector(webView:didCommitLoadForFrame:), webView, m_webFrame.get());
     }
     */
+    TRAP_IGNORE(
     brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventTitleAvailable, 0, 0 );
+    );
 }
 
 void WebFrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError& error)
@@ -604,7 +617,9 @@
         m_WmlContentListener->HandleError(0,error.errorCode());
     }
     //
+    TRAP_IGNORE(
     brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventLoadError, 0, 0 );
+    );
     notImplemented(); 
 }
 
@@ -627,7 +642,9 @@
         m_WmlContentListener->HandleError(0,error.errorCode());
     }
     //
+    TRAP_IGNORE(
     brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventLoadError, 0, 0 );
+    );
     m_webFrame->frameView()->topView()->pageLoadFinished();
     notImplemented(); 
 }
@@ -672,7 +689,9 @@
         implementations.didFirstLayoutInFrameFunc(frameLoadDelegate, @selector(webView:didFirstLayoutInFrame:), webView, m_webFrame.get());
     }
     */
+    TRAP_IGNORE(
     brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventNewContentDisplayed, 0, 0 );
+    );
 }
 
 Frame* WebFrameLoaderClient::dispatchCreatePage()
@@ -834,7 +853,9 @@
 void WebFrameLoaderClient::postProgressStartedNotification() 
 {
     //    [[NSNotificationCenter defaultCenter] postNotificationName:WebViewProgressStartedNotification object:getWebView(m_webFrame.get())];
+    TRAP_IGNORE(
     brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventUrlLoadingStart, 0, 0 );
+    );
     total_bytes = 0;
 #ifdef PERF_REGRESSION_LOG
         wkDebug()<<"Load started"<<mem<<flush;
@@ -848,8 +869,10 @@
 #endif // PERF_REGRESSION_LOG
     //    [[NSNotificationCenter defaultCenter] postNotificationName:WebViewProgressEstimateChangedNotification object:getWebView(m_webFrame.get())];
     double estimatedProgress = core(m_webFrame)->page()->progress()->estimatedProgress();
+    TRAP_IGNORE(
     brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventNewUrlContentArrived, total_bytes / estimatedProgress, 0 );
     brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventMoreUrlContentArrived, total_bytes, 0 );
+    );
 }
 
 void WebFrameLoaderClient::postProgressFinishedNotification() 
@@ -907,7 +930,9 @@
 void WebFrameLoaderClient::committedLoad(DocumentLoader* loader, const char* data, int length) 
 { 
     if (brctl(m_webFrame)->wmlMode()) {
+        TRAP_IGNORE(
         m_WmlContentListener->ResponseL( data, length );
+        );
         return;
     }
     m_webFrame->bridge()->receivedData(data, length, m_response.textEncodingName());
@@ -1116,7 +1141,9 @@
 void WebFrameLoaderClient::frameLoadCompleted()
 {
     if (brctl(m_webFrame)->wmlMode()) {
+        TRAP_IGNORE(
         m_WmlContentListener->CompleteL( 0, 0 );
+        );
         return;
     }
     /*
@@ -1373,8 +1400,9 @@
 
 void WebFrameLoaderClient::windowObjectCleared() const
 {
-    //    [m_webFrame->_private->bridge windowObjectCleared];
-    notImplemented(); 
+    if (m_webFrame && !m_webFrame->parentFrame()) {
+        m_webFrame->frameView()->topView()->windowObjectCleared();
+    }
 }
 
 void WebFrameLoaderClient::didPerformFirstNavigation() const
--- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebInspectorClient.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebInspectorClient.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -26,9 +26,8 @@
 {
 /*
     [[m_windowController.get() webView] close];
+*/
     delete this;
-*/
-    notImplemented();
 }
 
 Page* WebInspectorClient::createPage()
--- a/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -284,110 +284,6 @@
 
 void CBrCtl::Draw(const TRect& aRect) const
 {
-    if (m_webView->isPluginFullscreen()) return; //don't draw if in plugin fullscreen mode
-
-    if (!(m_capabilities & TBrCtlDefs::ECapabilityDisplayScrollBar) 
-          || (getMainScrollbarWidth() == 0)
-          || AknLayoutUtils::PenEnabled()) { //touch screen scrollbar is drawn
-        return;                         //by WebScrollbarDrawer
-    }
-    CWindowGc& gc = SystemGc();
-    TRect rect(Rect());
-    int documentHeight = (m_displayHeight > m_documentHeight) ? m_displayHeight : m_documentHeight;
-    int documentWidth = (m_displayWidth > m_documentWidth) ? m_displayWidth : m_documentWidth;
-    gc.SetDrawMode(CGraphicsContext::EDrawModePEN);
-    if (AknLayoutUtils::LayoutMirrored()) {
-        // rtl
-        if (m_hasHorizontalScrollbar) {
-            TRect vertical(0, 0, KMainScrollbarWidth, rect.Height() - KMainScrollbarWidth);
-            TRect horizontal(KMainScrollbarWidth, rect.Height() - KMainScrollbarWidth, rect.Width(), rect.Height());
-            TRect verticalThumb(0, (m_displayPosY * m_displayHeight) / documentHeight,
-                KMainScrollbarWidth, (m_displayPosY * m_displayHeight + m_displayHeight * m_displayHeight) / documentHeight);
-            TRect horizontalThumb(KMainScrollbarWidth + (m_displayPosX * m_displayWidth) / documentWidth, rect.Height() - KMainScrollbarWidth,
-                KMainScrollbarWidth + (m_displayPosX * m_displayWidth + m_displayWidth * m_displayWidth) / documentWidth, rect.Height());
-            TRect corner(0, rect.Height() - KMainScrollbarWidth, KMainScrollbarWidth, rect.Height());
-            vertical.Intersection(aRect);
-            horizontal.Intersection(aRect);
-            if (!(vertical.IsEmpty() || horizontal.IsEmpty())) {
-                gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
-                gc.SetBrushColor(KGray);
-                gc.SetPenStyle(CGraphicsContext::ESolidPen);
-                gc.SetPenSize(TSize(1, 1));
-                gc.SetPenColor(KBlack);
-                gc.DrawRect(vertical);
-                gc.DrawRect(horizontal);
-                gc.SetBrushColor(KDarkGray);
-                gc.DrawRect(verticalThumb);
-                gc.DrawRect(horizontalThumb);
-                gc.SetBrushColor(KWhite);
-                gc.SetPenColor(KWhite);
-                gc.DrawRect(corner);
-            }
-        }
-        else {
-            TRect vertical(0, 0, KMainScrollbarWidth, rect.Height());
-            TRect verticalThumb(0, (m_displayPosY * m_displayHeight) / documentHeight,
-                KMainScrollbarWidth, (m_displayPosY * m_displayHeight + m_displayHeight * m_displayHeight) / documentHeight);
-            vertical.Intersection(aRect);
-            if (!vertical.IsEmpty()) {
-                gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
-                gc.SetBrushColor(KGray);
-                gc.SetPenStyle(CGraphicsContext::ESolidPen);
-                gc.SetPenSize(TSize(1, 1));
-                gc.SetPenColor(KBlack);
-                gc.DrawRect(vertical);
-                gc.SetBrushColor(KDarkGray);
-                gc.DrawRect(verticalThumb);
-            }
-        }
-    }
-    else {
-        // ltr
-        if (m_hasHorizontalScrollbar) {
-            TRect vertical(rect.Width() - KMainScrollbarWidth, 0, rect.Width(), rect.Height() - KMainScrollbarWidth);
-            TRect horizontal(0, rect.Height() - KMainScrollbarWidth, rect.Width() - KMainScrollbarWidth, rect.Height());
-            TRect verticalThumb(rect.Width() - KMainScrollbarWidth, (m_displayPosY * m_displayHeight) / documentHeight,
-                rect.Width(), (m_displayPosY * m_displayHeight + m_displayHeight * m_displayHeight) / documentHeight);
-            TRect horizontalThumb((m_displayPosX * m_displayWidth) / documentWidth, rect.Height() - KMainScrollbarWidth,
-                (m_displayPosX * m_displayWidth + m_displayWidth * m_displayWidth) / documentWidth, rect.Height());
-            TRect corner(rect.Width() - KMainScrollbarWidth, rect.Height() - KMainScrollbarWidth, rect.Width(), rect.Height());
-            vertical.Intersection(aRect);
-            horizontal.Intersection(aRect);
-            if (!(vertical.IsEmpty() || horizontal.IsEmpty())) {
-                gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
-                gc.SetBrushColor(KGray);
-                gc.SetPenStyle(CGraphicsContext::ESolidPen);
-                gc.SetPenSize(TSize(1, 1));
-                gc.SetPenColor(KBlack);
-                gc.DrawRect(vertical);
-                gc.DrawRect(horizontal);
-                gc.SetBrushColor(KDarkGray);
-                gc.DrawRect(verticalThumb);
-                gc.DrawRect(horizontalThumb);
-                gc.SetBrushColor(KWhite);
-                gc.SetPenColor(KWhite);
-                gc.DrawRect(corner);
-            }
-        }
-        else
-        {
-            TRect vertical(rect.Width() - KMainScrollbarWidth, 0, rect.Width(), rect.Height());
-            TRect verticalThumb(rect.Width() - KMainScrollbarWidth, (m_displayPosY * m_displayHeight) / documentHeight,
-                rect.Width(), (m_displayPosY * m_displayHeight + m_displayHeight * m_displayHeight) / documentHeight);
-            vertical.Intersection(aRect);
-            if (!vertical.IsEmpty()) {
-                gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
-                gc.SetBrushColor(KGray);
-                gc.SetPenStyle(CGraphicsContext::ESolidPen);
-                gc.SetPenSize(TSize(1, 1));
-                gc.SetPenColor(KBlack);
-                gc.DrawRect(vertical);
-                gc.SetBrushColor(KDarkGray);
-                gc.DrawRect(verticalThumb);
-            }
-        }
-    }
-
 }
 
 
@@ -548,9 +444,9 @@
     m_webView = WebView::NewL(*aParent, this);
     m_historyHandler = HistoryHandler::initWithHandle(this);
     m_settingsContainer = new (ELeave) SettingsContainer(m_webView, m_historyHandler->historyController());
-    m_settingsContainer->setTabbedNavigation(!(capabilities()&TBrCtlDefs::ECapabilityCursorNavigation));
+    m_settingsContainer->setNavigationType((capabilities()&TBrCtlDefs::ECapabilityCursorNavigation) ? SettingsContainer::NavigationTypeCursor : SettingsContainer::NavigationTypeTabbed);
 
-  m_usrAgnt = CUserAgent::NewL();
+    m_usrAgnt = CUserAgent::NewL();
 
     if (m_brCtlLayoutObserver == NULL)
         {
@@ -1078,9 +974,6 @@
                                 TUid aCharsetUid)
 {
     const TText* charset = charsetForUid(aCharsetUid.iUid);
-    if (charset == NULL) {
-        charset = _S("iso-8859-1");
-    }
 
     HBufC8* url = HBufC8::NewLC(aUrl.Length());
     url->Des().Copy(aUrl);
@@ -1852,7 +1745,7 @@
 //
 void CBrCtl::SizeChanged()
 {
-    if (m_webView->isPluginFullscreen()) return;
+    if (StaticObjectsContainer::instance()->isPluginFullscreen()) return;
     TRect adjustedRect( Rect() );
     TBool callDoLayout = EFalse;
     TInt  scrollBarWidth = getMainScrollbarWidth();
@@ -2122,7 +2015,14 @@
     if (m_brCtlWindowObserver) {
         newBrctl = m_brCtlWindowObserver->FindWindowL(windowName);
         if (!newBrctl)
-            newBrctl = m_brCtlWindowObserver->OpenWindowL(emptyUrl, &windowName, userGesture, 0);
+        {
+         if(StaticObjectsContainer::instance()->isPluginFullscreen())
+         {
+            PluginSkin* plugin=m_webView->mainFrame()->focusedPlugin();
+            plugin->deActivate();
+         }
+         newBrctl = m_brCtlWindowObserver->OpenWindowL(emptyUrl, &windowName, userGesture, 0);            
+        }
     }
     return static_cast<CBrCtl*>(newBrctl);
 }
@@ -2475,7 +2375,6 @@
 
 int CBrCtl::getMainScrollbarWidth() const
 {
-  //return (AknLayoutUtils::PenEnabled() ?  0  :  KMainScrollbarWidth);
   return 0;
 }
 
@@ -2486,6 +2385,9 @@
     }
     return m_brCtlDownloadObserver;
 }
+
+
+
 void CBrCtl::HandlePointerBufferReadyL()
 {
     m_webView->HandlePointerBufferReadyL();
--- a/webengine/osswebengine/WebKit/s60/webview/SettingsContainer.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/SettingsContainer.h	Fri Jul 03 15:54:40 2009 +0100
@@ -28,11 +28,12 @@
 class SettingsContainer
 {
 public:
+    enum NavigationType { NavigationTypeCursor, NavigationTypeTabbed, NavigationTypeNone };
     SettingsContainer(WebView* view, HistoryControllerInterface* historyProvider);
     unsigned int brctlSetting(TBrCtlDefs::TBrCtlSettings setting);
     void setBrctlSetting(TBrCtlDefs::TBrCtlSettings setting, unsigned int value);
-    void setTabbedNavigation(bool on_) { m_tabbedNaviOn = on_; }
-    bool getTabbedNavigation() const { return m_tabbedNaviOn; }
+    void setNavigationType(NavigationType type) { m_navigationType = type; }
+    NavigationType getNavigationType() const { return m_navigationType; }
 
 private:
     void updatePageSetting(TBrCtlDefs::TBrCtlSettings setting);
@@ -46,7 +47,7 @@
     unsigned int brctlSettings[TBrCtlDefs::ESettingsMaxEnum];
     WebView* m_webView;
     HistoryControllerInterface* m_historyController;
-    bool m_tabbedNaviOn;
+    NavigationType m_navigationType;
 };
 
 #endif // __WEBDOCUMENTLOADER_H__
--- a/webengine/osswebengine/WebKit/s60/webview/WebCannedImages.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebCannedImages.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -21,10 +21,8 @@
 #include "WebCannedImages.h"
 #include <data_caging_path_literals.hrh>
 #include "../../bidi.h"
-#include <AknsConstants.h>
 #include <AknsUtils.h>
 #include <AknsItemID.h>
-#include <AknsConstants.h>
 #include <eikenv.h>
 
 #ifdef __BROWSER_SDK
--- a/webengine/osswebengine/WebKit/s60/webview/WebCannedImages.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebCannedImages.h	Fri Jul 03 15:54:40 2009 +0100
@@ -26,7 +26,6 @@
 
 #include <AknsConstants.h>
 #include <AknsItemID.h>
-#include <AknsConstants.h>
 
 // CONSTANTS
 
--- a/webengine/osswebengine/WebKit/s60/webview/WebCursor.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebCursor.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -117,8 +117,10 @@
 // -----------------------------------------------------------------------------
 WebCursor::~WebCursor()
     {
-    m_sprite.Close();
+    delete m_sprite;
     delete m_transarrowmask;
+    if ( m_transtimer ) 
+        m_transtimer->Cancel();
     delete m_transtimer;
     }
 
@@ -139,7 +141,7 @@
     if (!m_view)
     {
         m_view = &view;
-        constructSprite();
+        TRAP_IGNORE( constructSpriteL() );
     }
     m_view = &view;
     setOpaqueUntil(KTransparencyTime);
@@ -147,9 +149,9 @@
     }
 
 // -----------------------------------------------------------------------------
-// WebCursor::constructSprite
+// WebCursor::constructSpriteL
 // -----------------------------------------------------------------------------
-void WebCursor::constructSprite()
+void WebCursor::constructSpriteL()
     {
 
     //tot:fixme
@@ -180,17 +182,10 @@
     delete gc;
     CleanupStack::PopAndDestroy();
     /////////////////////////////////
-    m_sprite = RWsSprite(m_view->ControlEnv()->WsSession());
-    RWindowTreeNode *window =  (RDrawableWindow* )m_view->brCtl()->CCoeControlParent()->DrawableWindow();
-    m_sprite.Construct(*window,TPoint(KInitialOffset,KInitialOffset),ESpriteNoChildClip);
-
-    TSpriteMember spriteMem;
-    spriteMem.iBitmap = 0;
-    spriteMem.iMaskBitmap = 0;
-    spriteMem.iInvertMask = ETrue;
-
-    m_sprite.AppendMember(spriteMem);
-    m_sprite.Activate();
+ 
+    CCoeControl* parent = static_cast<CCoeControl*>(m_view);
+    TPoint pos = TPoint(KInitialOffset,KInitialOffset);
+    m_sprite = CWebSprite::NewL(parent, pos, m_arrow.m_img, m_arrow.m_msk, ETrue);
     }
 
 // -----------------------------------------------------------------------------
@@ -198,24 +193,25 @@
 // -----------------------------------------------------------------------------
 void WebCursor::setCursor(CursorTypes type)
 {
-    m_sprite.SetPosition( m_pos );
+    
     m_type = type;
-    if (m_visible && !(m_view->brCtl()->settings()->getTabbedNavigation())) {
-        TSpriteMember spriteMem;
+    if (m_visible && (m_view->brCtl()->settings()->getNavigationType() == SettingsContainer::NavigationTypeCursor)) {
+        CFbsBitmap*  img = NULL;
+        CFbsBitmap*  msk = NULL;
         switch( type )
             {
             case PointerCursor:
             default:
                 {
-                spriteMem.iBitmap = m_waiton ? m_wait.m_img : m_arrow.m_img;
-                spriteMem.iMaskBitmap = m_waiton ? m_wait.m_img :
+                img = m_waiton ? m_wait.m_img : m_arrow.m_img;
+                msk = m_waiton ? m_wait.m_img :
                     (m_transparent && m_transcount > KTransparencyMoveThreshold ? m_transarrowmask : m_arrow.m_msk);
                 break;
                 }
            case HandCursor:
                 {
-                spriteMem.iBitmap = m_hand.m_img;
-                spriteMem.iMaskBitmap = m_hand.m_msk;
+                img = m_hand.m_img;
+                msk = m_hand.m_msk;
                 break;
                 }
            case IBeamCursor:
@@ -232,27 +228,25 @@
                     }
                 else*/
                     {
-                    spriteMem.iBitmap = m_ibeam.m_img;
-                    spriteMem.iMaskBitmap = m_ibeam.m_msk;
+                    img = m_ibeam.m_img;
+                    msk = m_ibeam.m_msk;
                     }
                 break;
                 }
            case SelectMultiCursor:
                {
-                    spriteMem.iBitmap = m_selectMulti.m_img;
-                    spriteMem.iMaskBitmap = m_selectMulti.m_msk;
+                    img = m_selectMulti.m_img;
+                    msk = m_selectMulti.m_msk;
                     break;
                }
             }
-        spriteMem.iOffset = KCursorOffset;
-        spriteMem.iInvertMask = ETrue;
-        m_sprite.UpdateMember( 0, spriteMem );
-    } else {
-        TSpriteMember spriteMem;
-        spriteMem.iBitmap = 0;
-        spriteMem.iMaskBitmap = 0;
-        spriteMem.iInvertMask = ETrue;
-        m_sprite.UpdateMember( 0, spriteMem );
+        TPoint pos = m_pos + KCursorOffset;
+        
+        m_sprite->Update(pos, img, msk);
+        
+    } 
+    else {
+        m_sprite->Hide();
     }
 }
 
@@ -264,7 +258,7 @@
     if (!m_view || !m_view->brCtl()->settings())
         return;
     if ( m_view->showCursor() ) {
-        m_visible = visible && (!m_view->brCtl()->settings()->getTabbedNavigation() || m_view->focusedElementType() == TBrCtlDefs::EElementSelectMultiBox); // check for tabbedNavigation here because it is called from so many places.
+        m_visible = visible && ((m_view->brCtl()->settings()->getNavigationType() == SettingsContainer::NavigationTypeCursor)|| m_view->focusedElementType() == TBrCtlDefs::EElementSelectMultiBox); // check for tabbedNavigation here because it is called from so many places.
     }
 
     resetTransparency();
@@ -279,7 +273,7 @@
         else if (    elType == TBrCtlDefs::EElementSmartLinkTel
                   || elType == TBrCtlDefs::EElementSmartLinkEmail )
             type = IBeamCursor;
-        else if (    elType == TBrCtlDefs::EElementSelectMultiBox && m_view->brCtl()->settings()->getTabbedNavigation() )
+        else if (    elType == TBrCtlDefs::EElementSelectMultiBox && m_view->brCtl()->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed)
             type = SelectMultiCursor;
         else
             type = HandCursor;
@@ -713,7 +707,7 @@
 void WebCursor::updatePositionAndElemType(const TPoint& pt)
 {
     m_pos = pt;
-    m_sprite.SetPosition(pt);
+    m_sprite->SetPos(pt);
     WebFrame* frame = getFrameAtPoint(pt);
     TBrCtlDefs::TBrCtlElementType elType;
     TRect r;
--- a/webengine/osswebengine/WebKit/s60/webview/WebCursor.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebCursor.h	Fri Jul 03 15:54:40 2009 +0100
@@ -21,6 +21,7 @@
 #include <e32base.h>
 #include "WebCoreWidget.h"
 #include "WebCannedImages.h"
+#include "WebSprite.h"
 #include <w32std.h>
 
 namespace WebCore {
@@ -34,6 +35,7 @@
 class CWindowGc;
 class WebFrame;
 class CFbsBitmap;
+class CWebSprite;
 
 class WebCursor : public CBase
     {
@@ -46,7 +48,7 @@
 
         const TPoint& position() const { return m_pos; }
         const TRect& nodeRect() const { return m_nodeRect; }
-        void setPosition(const TPoint& pt) { m_pos = pt; m_sprite.SetPosition(pt);}
+        void setPosition(const TPoint& pt) { m_pos = pt;}
         void updatePositionAndElemType(const TPoint& pt);
         void setCurrentView(WebView& view);
         void offsetCursor(const TPoint& offset);
@@ -66,11 +68,11 @@
         void scrollAndMoveCursor(int dir, int scrollRange, bool auto);
         WebFrame* getFrameUnderCursor();
         bool navigableNodeUnderCursor(WebFrame& webFrame, TPoint& aPoint, TBrCtlDefs::TBrCtlElementType& aElType, TRect& aFocusRect) const;
+        WebFrame* getFrameAtPoint(const TPoint& viewPos_);
         
 
   private:
         void moveCursor(int lr,int tb, int scrollRange);
-        WebFrame* getFrameAtPoint(const TPoint& viewPos_);
         bool determineCursorPosition(WebFrame& webFrame, TBrCtlDefs::TBrCtlElementType& aElType, TRect& aFocusRect, TRect& aSearchRect, 
             TPoint& aCursorPosition, bool aInitialize);
         void increaseSearchRect(int lr,int tb,TRect& aRect);
@@ -85,7 +87,7 @@
         WebCursor();
         void ConstructL();
         TRect calcSearchRect(int lr, int tb, int scrollRange);
-        void constructSprite();
+        void constructSpriteL();
         
 
         TPoint                          m_pos;
@@ -103,7 +105,8 @@
 
         WebView*                        m_view;
         bool                            m_visible;
-        RWsSprite                       m_sprite;
+        
+        CWebSprite*                     m_sprite;
         bool                            m_waiton;
         int                             m_flipcounter;
         bool                            m_transparent;
--- a/webengine/osswebengine/WebKit/s60/webview/WebFrameView.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebFrameView.h	Fri Jul 03 15:54:40 2009 +0100
@@ -75,7 +75,7 @@
 
     // accessors
     WebFrame* frame() const          { return m_frame.get(); }
-    WebView* topView() const         { return m_topView.get(); }
+    WebView* topView() const         { return m_topView; }
     void setWebFrame(WebFrame*);
     void setTopView(WebView*);
     TPoint contentPos() { return m_contentPos; }
@@ -107,7 +107,7 @@
     WebFrameView& operator=(const WebFrameView&); // not implemented
     
     RefPtr<WebFrame>        m_frame;            // the frame associated with this view
-    RefPtr<WebView>         m_topView;          // the top drawable view
+    WebView*                m_topView;          // the top drawable view
     WebFrameView*           m_parent;           // the parent view
 
     TRect   m_frameRect;                        // the location and size of this frame in its parent frame
--- a/webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -41,7 +41,7 @@
 {
     WebPageFullScreenHandler* self = new (ELeave) WebPageFullScreenHandler( webView );
     CleanupStack::PushL(self);
-    self->constructL();
+    self->ConstructL();
     CleanupStack::Pop(); //self
     return self;
 }
@@ -52,8 +52,7 @@
 // might leave.
 // -----------------------------------------------------------------------------
 //
-WebPageFullScreenHandler::WebPageFullScreenHandler(WebView& webView)
-: m_webView(&webView), m_spriteVisible(EFalse), m_tappedOnSprite(EFalse)
+WebPageFullScreenHandler::WebPageFullScreenHandler(WebView& webView) : m_webView(&webView)
 {
 }
 
@@ -62,8 +61,12 @@
 // The constructor that can contain code that might leave.
 // -----------------------------------------------------------------------------
 //
-void WebPageFullScreenHandler::constructL()
+void WebPageFullScreenHandler::ConstructL()
 {
+    m_buttonIcon = StaticObjectsContainer::instance()->webCannedImages()->getImage(WebCannedImages::EImageEscFullScreen);
+    TPoint pos = CalculatePosition();
+    BaseConstructL(m_webView, pos, m_buttonIcon.m_img, m_buttonIcon.m_msk, ETrue);
+    Hide();   
 }
 
 // -----------------------------------------------------------------------------
@@ -75,6 +78,17 @@
 }
 
 
+TPoint WebPageFullScreenHandler::CalculatePosition()
+{
+    TPoint pos = m_webView->Rect().iBr;
+    TSize iconSize = m_buttonIcon.m_img->SizeInPixels();
+    
+    pos -= iconSize;
+    pos -= TPoint(KFullScreenButtonBuff, KFullScreenButtonBuff);
+    //pos -= m_webView->PositionRelativeToScreen();
+    return pos;
+}
+
 //-------------------------------------------------------------------------------
 // WebPageFullScreenHandler::showEscBtnL
 // Draws the full screen button on the screen
@@ -82,10 +96,8 @@
 
 void WebPageFullScreenHandler::showEscBtnL() 
 {
-    if (AknLayoutUtils::PenEnabled() && !m_spriteVisible) {
-        constructSprite();
-        SizeChanged();
-        AddWsObserverToControl();
+    if (AknLayoutUtils::PenEnabled()) {
+        Show();
     }
 }
 
@@ -96,9 +108,8 @@
 
 void WebPageFullScreenHandler::hideEscBtnL()
 {
-    if (AknLayoutUtils::PenEnabled() && m_spriteVisible) {
-        destructSprite();
-        m_eventMonitor->RemoveObserver(this);
+    if (AknLayoutUtils::PenEnabled()) {
+        Hide();    
     }
 }
 
@@ -109,12 +120,9 @@
 
 void WebPageFullScreenHandler::SizeChanged(void)
 {
-    if (AknLayoutUtils::PenEnabled() && m_spriteVisible) {
-        m_pos = m_webView->Rect().iBr;
-        TPoint point (m_webView->PositionRelativeToScreen());
-        m_pos -= TSize(  KFullScreenButtonWidth + KFullScreenButtonBuff, 
-        				 KFullScreenButtonHeight - point.iY + KFullScreenButtonBuff);
-        m_sprite.SetPosition(m_pos);
+    if (AknLayoutUtils::PenEnabled()) {
+        TPoint pos = CalculatePosition();
+        SetPos(pos);
     }
 }
 
@@ -129,101 +137,23 @@
 }
 
 
-//-------------------------------------------------------------------------------
-// WebPageFullScreenHandler::HitRegionContains
-// Defines a control's hit region
-//-------------------------------------------------------------------------------
-
-TBool WebPageFullScreenHandler::HitRegionContains(const TPoint& aPoint)
-{
-    TRect spriteRect (m_pos, TSize(KFullScreenButtonHeight, KFullScreenButtonWidth));
-    return spriteRect.Contains(aPoint);
-}
-
-
-//-------------------------------------------------------------------------------
-// WebPageFullScreenHandler::destructSprite
-// close/hide sprite for time being
-//-------------------------------------------------------------------------------
-
-void WebPageFullScreenHandler::destructSprite()
+void WebPageFullScreenHandler::HandlePointerEventL(const TPointerEvent& aPointerEvent)
 {
-    m_sprite.Close();
-    m_spriteVisible = EFalse;
-}
-
-//-------------------------------------------------------------------------------
-// WebPageFullScreenHandler::constructSprite
-// Show/create sprite at m_pos
-//-------------------------------------------------------------------------------
+   switch (aPointerEvent.iType)
+       {
+       case TPointerEvent::EButton1Down:
+           m_isTouchDown = ETrue;
+           break;
 
-void WebPageFullScreenHandler::constructSprite()
-{
-    m_sprite = RWsSprite(m_webView->brCtl()->CCoeControlParent()->ControlEnv()->WsSession());
-    m_sprite.Construct(m_webView->brCtl()->CCoeControlParent()->ControlEnv()->RootWin(), m_pos, ESpriteNoShadows);
-    TCannedImageData cannedImage = StaticObjectsContainer::instance()->webCannedImages()->getImage(WebCannedImages::EImageEscFullScreen);
-
-	TSpriteMember spriteMem;
-	spriteMem.iBitmap = cannedImage.m_img; 
-	spriteMem.iMaskBitmap = cannedImage.m_msk; //masked bitmap still of the canned image need to be changed
-
-    m_sprite.AppendMember(spriteMem);
-	m_sprite.Activate();
-	
-	m_spriteVisible = ETrue;
+       case TPointerEvent::EButton1Up:
+           {
+           if (m_isTouchDown) {
+               Hide();
+               m_webView->notifyFullscreenModeChangeL( false );
+           }
+           m_isTouchDown = EFalse;
+           }
+           break;          
+        }       
 }
 
-//-------------------------------------------------------------------------------
-// WebPageFullScreenHandler::HandleWsEventL
-// check if click region hits sprite
-//-------------------------------------------------------------------------------
-
-void WebPageFullScreenHandler::HandleWsEventL(const TWsEvent& aEvent,CCoeControl* aDestination)
-{
-    if (!aDestination) return;
-    
-    if(aEvent.Type() == EEventPointer)
-       {
-       switch (aEvent.Pointer()->iType)
-           {
-           case TPointerEvent::EButton1Down:
-               if (m_spriteVisible)
-                   {
-                   TPoint point (aDestination->PositionRelativeToScreen());
-                   m_tappedOnSprite = HitRegionContains(aEvent.Pointer()->iPosition + point);
-                   }
-               break;
-
-           case TPointerEvent::EButton1Up:
-               {
-               TPoint point (aDestination->PositionRelativeToScreen());
-               if (m_spriteVisible && m_tappedOnSprite && 
-                    HitRegionContains(aEvent.Pointer()->iPosition + point))
-                   {
-                   hideEscBtnL();
-                   m_webView->notifyFullscreenModeChangeL( false );
-                   }
-               m_tappedOnSprite = EFalse;
-               }
-               break;
-           
-            }
-       }
-}
-
-
-//-------------------------------------------------------------------------------
-// WebPageFullScreenHandler::AddWsObserverToControl
-// register for events from WSession
-//-------------------------------------------------------------------------------
-
-void WebPageFullScreenHandler::AddWsObserverToControl()
-{
-    m_eventMonitor = ((CAknAppUi*)m_webView->ControlEnv()->AppUi())->EventMonitor();
-    
-    if(m_eventMonitor)
-        {
-        m_eventMonitor->AddObserverL(this);
-        m_eventMonitor->Enable(ETrue);
-        }
-}
--- a/webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.h	Fri Jul 03 15:54:40 2009 +0100
@@ -24,7 +24,9 @@
 #include <e32base.h>
 #include <coedef.h>
 #include <w32std.h>
-#include <AknWsEventObserver.h>
+#include "WebSprite.h"
+#include "WebCannedImages.h"
+
 // MACROS
 
 // FORWARD DECLARATIONS
@@ -32,7 +34,8 @@
 class WebFrame;
 
 // CLASS DECLARATION
-class WebPageFullScreenHandler: public CBase, public MAknWsEventObserver {
+class WebPageFullScreenHandler: public CWebSprite  
+{
 public:  // Constructor and destructor
 
     /**
@@ -55,14 +58,10 @@
     /**
      * By default Symbian 2nd phase constructor is private.
      **/
-    void constructL();
+    void ConstructL();
     
-	TBool HitRegionContains(const TPoint& aPoint);
-    void HandleWsEventL(const TWsEvent& aEvent,CCoeControl* aDestination);
-    void AddWsObserverToControl();
-    void constructSprite();
-    void destructSprite();
-    
+    TPoint CalculatePosition();
+
 public: // New functions
 
 
@@ -94,17 +93,14 @@
      **/
     void SizeChanged(void);
     
-
+    void HandlePointerEventL(const TPointerEvent& aPointerEvent);
 private:   
 
     // Pointer to owning view
 
     WebView*                m_webView;     // not owned
-    CAknWsEventMonitor*     m_eventMonitor; // not owned
-    RWsSprite               m_sprite;
-    TBool                   m_spriteVisible;
-    TBool                   m_tappedOnSprite;
-    TPoint                  m_pos;
+    TBool                   m_isTouchDown;
+    TCannedImageData        m_buttonIcon;
 };
 
 #endif      //WEBPAGEFULLSCREENHANDLER_H
--- a/webengine/osswebengine/WebKit/s60/webview/WebPageScrollHandler.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebPageScrollHandler.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -251,10 +251,7 @@
         {
             m_scrollTimer->Cancel();
             if (m_scrollableView.m_scrollingElement) {
-                if (m_scrollableView.m_scrollingElement) {
-                    m_scrollableView.m_scrollingElement->deref();
-                    m_scrollableView.m_scrollingElement = NULL;
-                }
+                clearScrollingElement();
             }
             else {
                 if (m_lastMoveEventTime != 0)
@@ -281,10 +278,11 @@
 }
 
 void WebPageScrollHandler::setupScrolling(const TPoint& aNewPosition)
-{   
+{
     if (m_lastPosition == TPoint(0, 0)) {
         m_lastPosition = aNewPosition;
     }
+   
     if(m_lastPosition == aNewPosition)
         return; // no displacement -- means no need for scrolling    
 
@@ -305,19 +303,31 @@
         m_webView->setViewIsScrolling(true);
         m_webView->toggleRepaintTimer(false);
     }
+}
 
 
-}    
+void WebPageScrollHandler::clearScrollingElement()
+{
+    if (m_scrollableView.m_scrollingElement) {
+        m_scrollableView.m_scrollingElement->deref();
+        m_scrollableView.m_scrollingElement = NULL;
+    }
+}
 
 void WebPageScrollHandler::scrollContent()
 {
     TPoint scrollDelta = m_lastPosition - m_currentPosition;
- 
+    scrollContent(scrollDelta);
+}
+
+void WebPageScrollHandler::scrollContent(TPoint& aScrollDelta)
+{
     if(!m_scrollableView.activeFrameView())
             return;
         
-    int absX = Abs(scrollDelta.iX);
-    int absY = Abs(scrollDelta.iY);
+    
+    int absX = Abs(aScrollDelta.iX);
+    int absY = Abs(aScrollDelta.iY);
                                        
     if(absX || absY) //move only if necessary
     {      
@@ -331,8 +341,8 @@
         {           
             case ScrollDirectionX: //scroll in X dir
             {
-                scrollDelta.iY = 0;
-                scrollDelta.iX *= 100;
+                aScrollDelta.iY = 0;
+                aScrollDelta.iX *= 100;
                 //Fallback to XY state if the current position is out of bounds                
                 TPoint boundaryCheckpoint = m_focalPoint - m_currentPosition;                                
                 if(Abs(boundaryCheckpoint.iY) > KScrollDirectionBoundary)
@@ -341,8 +351,8 @@
             }
             case ScrollDirectionY: //scroll in Y dir
             {                
-                scrollDelta.iX = 0;
-                scrollDelta.iY *= 100;
+                aScrollDelta.iX = 0;
+                aScrollDelta.iY *= 100;
                 //Fallback to XY state if the current position is out of bounds                
                 TPoint boundaryCheckpoint = m_focalPoint - m_currentPosition;                                
                 if(Abs(boundaryCheckpoint.iX) > KScrollDirectionBoundary)
@@ -351,8 +361,8 @@
             }
             case ScrollDirectionXY: //scroll in XY
             {
-                scrollDelta.iX *= 100;
-                scrollDelta.iY *= 100;
+                aScrollDelta.iX *= 100;
+                aScrollDelta.iY *= 100;
                 m_scrollDirectionState = ScrollDirectionUnassigned;
                 break;
             }
@@ -360,17 +370,16 @@
         if (m_scrollableView.m_scrollingElement) {
             bool shouldScrollVertically = false;
             bool shouldScrollHorizontally = false;
-            //WebFrameView* mfv = m_webView->mainFrame()->frameView();
             WebFrame* frame = kit(m_scrollableView.m_scrollingElement->document()->frame());
-            IntPoint currPoint = frame->frameView()->viewCoordsInFrameCoords(m_currentPosition);
             RenderObject* render = m_scrollableView.m_scrollingElement->renderer();
             __ASSERT_DEBUG(render->isScrollable(), User::Panic(_L(""), KErrGeneral));
-            if (scrollDelta.iY)
-                shouldScrollVertically = !render->scroll(ScrollDown, ScrollByPixel, frame->frameView()->toDocCoords(scrollDelta).iY / 100);
-            if (scrollDelta.iX)
-                shouldScrollHorizontally = !render->scroll(ScrollRight, ScrollByPixel, frame->frameView()->toDocCoords(scrollDelta).iX / 100);
+            if (aScrollDelta.iY)
+                shouldScrollVertically = !render->scroll(ScrollDown, ScrollByPixel, frame->frameView()->toDocCoords(aScrollDelta).iY / 100);
+            if (aScrollDelta.iX)
+                shouldScrollHorizontally = !render->scroll(ScrollRight, ScrollByPixel, frame->frameView()->toDocCoords(aScrollDelta).iX / 100);
+
             TPoint scrollPos = frame->frameView()->contentPos();
-            TPoint newscrollDelta = frame->frameView()->toDocCoords(scrollDelta);
+            TPoint newscrollDelta = frame->frameView()->toDocCoords(aScrollDelta);
             m_currentNormalizedPosition +=  newscrollDelta;     
 
             if (shouldScrollHorizontally) {
@@ -379,21 +388,25 @@
             if (shouldScrollVertically) {
                 scrollPos.iY = m_currentNormalizedPosition.iY/100;
             }
-            frame->frameView()->scrollTo(scrollPos);
+            
+            
+            if (shouldScrollVertically || shouldScrollHorizontally){
+                if (m_scrollableView.m_frameView->needScroll(scrollPos)) {
+                    frame->frameView()->scrollTo(scrollPos);
+                    updateScrollbars(scrollPos, newscrollDelta);
+                    core(frame)->sendScrollEvent();
+                }
+            }
+            else {
+                m_webView->syncRepaint();
+            }
             m_lastPosition = m_currentPosition;
             m_currentNormalizedPosition.iX = frame->frameView()->contentPos().iX * 100;
             m_currentNormalizedPosition.iY = frame->frameView()->contentPos().iY * 100;
-            if (shouldScrollVertically || shouldScrollHorizontally)
-                updateScrollbars(scrollPos, newscrollDelta);
-            currPoint = frame->frameView()->viewCoordsInFrameCoords(m_currentPosition);
-            if (shouldScrollHorizontally || shouldScrollVertically) {
-                core(frame)->sendScrollEvent();
-                m_webView->DrawNow();
-            }
         }
         else {
             TPoint scrollPos;
-            TPoint newscrollDelta = m_scrollableView.m_frameView->toDocCoords(scrollDelta);
+            TPoint newscrollDelta = m_scrollableView.m_frameView->toDocCoords(aScrollDelta);
             m_currentNormalizedPosition +=  newscrollDelta;  
             scrollPos.iX = m_currentNormalizedPosition.iX/100;
             scrollPos.iY = m_currentNormalizedPosition.iY/100;
@@ -406,6 +419,7 @@
                 m_currentNormalizedPosition.iY = m_scrollableView.contentPos().iY * 100;
             }
             else {
+          
                 m_scrollableView.m_frameView->scrollTo(scrollPos);
                 m_lastPosition = m_currentPosition;
 #ifndef BRDO_USE_GESTURE_HELPER                
@@ -420,7 +434,7 @@
 
 bool WebPageScrollHandler::calculateScrollableFrameView(const TPoint& aNewPosition)
 {
-    if (calculateScrollableElement(aNewPosition)) return true;
+    calculateScrollableElement(aNewPosition);
     
     //First figure out the direction we are scrolling    
     bool x_r = false;
@@ -634,19 +648,11 @@
     else {
         m_scrollTimer->Cancel();
         m_lastPosition = TPoint(0, 0);
-        if (m_scrollableView.m_scrollingElement) {
-            if (m_scrollableView.m_scrollingElement) {
-                m_scrollableView.m_scrollingElement->deref();
-                m_scrollableView.m_scrollingElement = NULL;
-            }
-        }
-        else {
-            decelDoesScrollbars = startDeceleration(aEvent);
+        decelDoesScrollbars = startDeceleration(aEvent);
                     
-            if (m_webView->viewIsScrolling()) {
-                Frame* frame = m_webView->page()->focusController()->focusedOrMainFrame();
-                frame->bridge()->sendScrollEvent();                            
-            }
+        if (m_webView->viewIsScrolling()) {
+            Frame* frame = m_webView->page()->focusController()->focusedOrMainFrame();
+            frame->bridge()->sendScrollEvent();                            
         }
     
         if (!decelDoesScrollbars) {
--- a/webengine/osswebengine/WebKit/s60/webview/WebPageScrollHandler.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebPageScrollHandler.h	Fri Jul 03 15:54:40 2009 +0100
@@ -124,6 +124,13 @@
         * @since 5.0
         * param
         * return
+        */ 
+        void clearScrollingElement();
+        
+        /**
+        * @since 5.0
+        * param
+        * return
         */
         WebFrameView* currentScrollingFrameView() { return m_scrollableView.m_frameView;}
         
@@ -132,6 +139,13 @@
         * param
         * return
         */
+        WebCore::Element* currentScrollingElement() { return m_scrollableView.m_scrollingElement;}
+        
+        /**
+        * @since 5.0
+        * param
+        * return
+        */
         void updateScrolling(const TPointerEvent& pointerEvent);
         
         /**
@@ -140,6 +154,14 @@
         * return
         */
         void scrollContent();
+        
+        /**
+        * @since 5.0
+        * param
+        * return
+        */
+        void scrollContent(TPoint& scrollDelta);
+        
         /**
         * @since 5.0
         * param
--- a/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -54,6 +54,7 @@
 #include "ChromeClient.h"
 #include "FocusController.h"
 #include "WebTabbedNavigation.h"
+#include "SettingsContainer.h"
 #include "PluginHandler.h"
 
 #include "WebKitLogger.h"
@@ -295,7 +296,8 @@
 {
     m_highlightPos = TPoint(-1,-1);
     m_highlightedNode = NULL;
-       
+    PluginHandler* pluginHandler = WebCore::StaticObjectsContainer::instance()->pluginHandler();
+    pluginHandler->setPluginToActivate(NULL);
     m_webview->pageScrollHandler()->handleTouchUpGH(aEvent);
 }
 
@@ -306,17 +308,11 @@
 {
     TBrCtlDefs::TBrCtlElementType elType = m_webview->focusedElementType();
     TPoint curPos = aEvent.CurrentPos();
-    
+    PluginHandler* pluginHandler = WebCore::StaticObjectsContainer::instance()->pluginHandler();
+    pluginHandler->setPluginToActivate(NULL);
     m_buttonDownTimer.stop();
     HandleHighlightChange(curPos);
     
-    if (elType == TBrCtlDefs::EElementActivatedObjectBox) {
-        PluginSkin* plugin = m_webview->mainFrame()->focusedPlugin();               
-        if (plugin) {
-            plugin->deActivate();
-        }
-    }
-    
     m_webview->pageScrollHandler()->handleScrollingGH(aEvent);
 }
 
@@ -350,6 +346,20 @@
         else if (aPointerEvent.iType == TPointerEvent::EButton1Up) {
             m_webview->GetContainerWindow().DisablePointerMoveBuffer();
         }
+        if (m_webview->brCtl()->settings()->getNavigationType() == SettingsContainer::NavigationTypeNone) {
+            TPointerEvent event;
+            event.iPosition = aPointerEvent.iPosition;
+            event.iModifiers = 0;
+            event.iType = aPointerEvent.iType;
+
+            if (event.iType == TPointerEvent::EDrag) event.iType = TPointerEvent::EMove;
+            m_webview->sendMouseEventToEngine(event.iType, event.iPosition, core(m_webview->mainFrame()));
+            return;
+        }
+    }
+
+    if (m_webview->brCtl()->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed) {
+        m_webview->tabbedNavigation()->updateCursorPosition(aPointerEvent.iPosition);
     }
 
 #ifdef BRDO_USE_GESTURE_HELPER
--- a/webengine/osswebengine/WebKit/s60/webview/WebPopupDrawer.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebPopupDrawer.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -82,10 +82,13 @@
         User::Leave(KErrArgument);
     }
     m_textToDraw = textToDraw.AllocL();
+    CleanupStack::PushL(m_textToDraw);
     m_removePopupPeriodic = CPeriodic::NewL( CActive::EPriorityLow );
+    CleanupStack::PushL(m_removePopupPeriodic);
     m_removePopupPeriodic->Start( KPopupTimeout, 0, TCallBack( &removePopupCallback, this ) );
     sizeChangedL();
     constructSprite();
+    CleanupStack::Pop(2, m_textToDraw); //m_removePopupPeriodic, m_textToDraw
 }
 
 // -----------------------------------------------------------------------------
@@ -105,6 +108,10 @@
     delete m_spriteMaskBitmapDevice;
     delete m_spriteMaskBitmapContext;
     delete m_spriteMaskBitmap;
+    delete m_icon;
+    delete m_spriteBitmapDevice;
+    delete m_spriteBitmapContext;
+    delete m_spriteBitmap; 
 }
 
 // -----------------------------------------------------------------------------
@@ -231,8 +238,10 @@
     delete m_spriteBitmap;
     m_spriteBitmap = NULL;
     m_spriteBitmap = new (ELeave) CFbsBitmap;
+    CleanupStack::PushL(m_spriteBitmap);
     User::LeaveIfError( m_spriteBitmap->Create( m_size, EColor16MA ) );
     m_spriteBitmapDevice = CFbsBitmapDevice::NewL( m_spriteBitmap );
+    CleanupStack::PushL(m_spriteBitmapDevice);
     User::LeaveIfError( m_spriteBitmapDevice->CreateContext( m_spriteBitmapContext ) );
     //mask
     delete m_spriteMaskBitmapDevice;
@@ -242,8 +251,10 @@
     delete m_spriteMaskBitmap;
     m_spriteMaskBitmap = NULL;
     m_spriteMaskBitmap = new (ELeave) CFbsBitmap;
+    CleanupStack::PushL(m_spriteMaskBitmap);
     User::LeaveIfError( m_spriteMaskBitmap->Create( m_size, EGray2 ) );
     m_spriteMaskBitmapDevice = CFbsBitmapDevice::NewL( m_spriteMaskBitmap );
+    CleanupStack::PushL(m_spriteMaskBitmapDevice);
     User::LeaveIfError( m_spriteMaskBitmapDevice->CreateContext( m_spriteMaskBitmapContext ) );
     TRect r( TPoint( 0, 0 ), m_spriteMaskBitmap->SizeInPixels());
     m_spriteMaskBitmapContext->SetBrushStyle( CGraphicsContext::ESolidBrush );
@@ -276,6 +287,8 @@
         }
         m_spriteBitmapContext->DiscardFont();
     }
+    
+    CleanupStack::Pop(4, m_spriteBitmap);
 }
 
 void WebPopupDrawer::constructSprite()
--- a/webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -27,10 +27,12 @@
 #include "BrCtl.h"
 #include "StaticObjectsContainer.h"
 #include "WebSurface.h"
+#include "WebSprite.h"
 
 #include "WebKitLogger.h"
 
-const int     KScrollbarWidth = 15;
+const int     KMinScrollbarWidth = 10;
+const int     KMaxScrollbarWidth = 15;
 const TUint32 KMinScrollBarTransparency = 150;
 const int     KScrollBarFadeInterval = 30000;
 const TInt32  KScrollBarTransparencyStep = 10;
@@ -60,8 +62,8 @@
 WebScrollbarDrawer::WebScrollbarDrawer(): 
                                         m_webView(NULL),
                                         m_scrollBarTransparency(KMinScrollBarTransparency),
-                                        m_scrollBarWidth(KScrollbarWidth),
-                                        m_dX(0), m_dY(0)
+                                        m_scrollBarWidth(KMinScrollbarWidth),
+                                        m_dX(0), m_dY(0), m_spriteV(NULL), m_spriteH(NULL)
 {
 }
 
@@ -74,7 +76,9 @@
   }
   delete m_scrollBarFader;
   
-  removeBitmaps();  
+  removeBitmaps();
+  delete m_spriteV;
+  delete m_spriteH;
 }
 
 
@@ -97,13 +101,33 @@
   m_scrollBarTransparency = KMinScrollBarTransparency;
   m_dY = 0.0;
   m_dX = 0.0;
+  m_rectVThum = TRect();
+  m_rectHThum = TRect();
+  m_rect.SetRect(m_webView->brCtl()->Rect().iTl,
+                 m_webView->brCtl()->Rect().Size());
+  m_scrollBarWidth = Max(0.04 * Min(m_rect.Width(), m_rect.Height()), KMinScrollbarWidth);  
   calculateBitmapRects();
   
   err = SetupBitmaps();
-  
+ 
   if (err == KErrNone) {
-      constructSprite(m_spriteV, m_rectVThum.iTl, m_scrollBarV, m_scrollBarVMask);
-      constructSprite(m_spriteH, m_rectHThum.iTl, m_scrollBarH, m_scrollBarHMask);
+      if (!m_spriteV) {
+          m_spriteV = CWebSprite::NewL(m_webView, m_rectVThum.iTl, m_scrollBarV, m_scrollBarVMask, ETrue);
+      }
+      else {
+          m_spriteV->SetBitmap(m_scrollBarV, m_scrollBarVMask, ETrue);
+          m_spriteV->SetPos(m_rectVThum.iTl);
+      }
+      
+      if (!m_spriteH) {
+          m_spriteH = CWebSprite::NewL(m_webView, m_rectHThum.iTl, m_scrollBarH, m_scrollBarHMask, ETrue);
+      }
+      else {    
+          m_spriteH->SetBitmap(m_scrollBarH, m_scrollBarHMask, ETrue);
+          m_spriteH->SetPos(m_rectHThum.iTl);
+      }
+      m_spriteV->Hide();
+      m_spriteH->Hide();
   }
   
   return err;
@@ -144,8 +168,17 @@
 
 void WebScrollbarDrawer::clearSprites()
 {
-   m_spriteV.Close();
-   m_spriteH.Close();
+   if (m_spriteV) {
+       m_spriteV->Hide();
+       m_spriteV->Update(NULL, NULL);
+       
+   }
+   
+   if (m_spriteH) {
+       m_spriteH->Hide();
+       m_spriteH->Update(NULL, NULL);
+       
+   }
 }
 
 void WebScrollbarDrawer::fade()
@@ -166,34 +199,35 @@
     
     if (m_hasVScroll) {
       drawThumbMask(m_gcVMask, m_rectVThum);
-      updateSprite(m_spriteV, m_scrollBarV, m_scrollBarVMask);
+      if (m_spriteV) {
+          m_spriteV->Update(m_scrollBarV, m_scrollBarVMask);
+      }
     }
     
     if (m_hasHScroll) {
       drawThumbMask(m_gcHMask, m_rectHThum);
-      updateSprite(m_spriteH, m_scrollBarH, m_scrollBarHMask);
+      if (m_spriteH) {
+          m_spriteH->Update(m_scrollBarH, m_scrollBarHMask);
+      }
     }
   }
 }
 
+TBool WebScrollbarDrawer::canRedraw()
+{
+    return ((m_webView && m_spriteV && m_spriteH) && 
+            (m_spriteV->IsShown() || m_spriteH->IsShown()));    
+}
+
 void WebScrollbarDrawer::redrawScrollbar()
 {
-    if (m_webView) {
-	    TInt err = KErrNone;
-	    calculateBitmapRects();
-	    removeBitmaps();
-	    err = SetupBitmaps();
-	    if (err == KErrNone) {
-	        m_spriteV.SetPosition(m_rectVThum.iTl);
-	        updateSprite(m_spriteV, m_scrollBarV, m_scrollBarVMask);
-	        m_spriteH.SetPosition(m_rectHThum.iTl);
-	        updateSprite(m_spriteH, m_scrollBarH, m_scrollBarHMask);
-	    }
-	    else {
-	        clearSprites();
-	    }
+    if (canRedraw()) {
+        clearSprites();
+        removeBitmaps();
+        InitScrollbar(m_webView);
     }
 }
+
 void WebScrollbarDrawer::drawScrollbar(WebView* view)
 {
     TPoint p = TPoint(1,1);
@@ -219,15 +253,30 @@
     InitScrollbar(view);
   }
   
+  /*
+   * According to spec vertical scrollbar is always visible
+   * even if user is not scrolling in vertical direction
+   * Horizontal scrollbar is shown only if user scroll in 
+   * horizontal direction. If content height < screen height
+   * vertical scrollbar is not shown. The same for horizontal one.  
+   */
   if (!m_hasHScroll) { //set it only once
-    m_hasHScroll = (scrollPos.iX != 0) && (m_displayWidth < m_docWidth);
+    m_hasHScroll = (Abs(scrollPos.iX) > 1) && (m_displayWidth < m_docWidth);
+    if (m_hasHScroll) {
+        m_spriteH->Update(m_rectHThum.iTl, m_scrollBarH, m_scrollBarHMask);
+        
+    }
   }
   
   if (!m_hasVScroll) {  //set it only once
-    m_hasVScroll = (scrollPos.iY != 0) && (m_displayHeight < m_docHeight);
+    m_hasVScroll = ( (Abs(scrollPos.iY) > 1) || (Abs(scrollPos.iX) > 1) ) && 
+                     (m_displayHeight < m_docHeight);
+    if (m_hasVScroll) {
+        m_spriteV->Update(m_rectVThum.iTl, m_scrollBarV, m_scrollBarVMask);
+    }
   }
 
-  if ((scrollPos.iY != 0) && (m_displayHeight < m_docHeight)) {
+  if (m_hasVScroll) {
     m_dY += m_zoomFactor * ((float)scrollPos.iY * (float)m_displayHeight ) / (float)m_docHeight / 100;
 
     if (m_rectVThum.iTl.iY + m_dY < m_rectV.iTl.iY) {
@@ -247,12 +296,12 @@
       m_dY = 0.0;
     }
     
-    m_spriteV.SetPosition(m_rectVThum.iTl);
-    updateSprite(m_spriteV, m_scrollBarV, m_scrollBarVMask);
+    m_spriteV->SetPos(m_rectVThum.iTl);
+    //m_spriteV->Update(m_rectVThum.iTl, m_scrollBarV, m_scrollBarVMask);
   }
   
   
-  if ((scrollPos.iX != 0) && (m_displayWidth < m_docWidth)) {
+  if (m_hasHScroll) {
     m_dX = m_zoomFactor * ((float)scrollPos.iX * (float)m_displayWidth ) / (float)m_docWidth / 100;
     
     if (m_rectHThum.iTl.iX + m_dX < m_rectH.iTl.iX) {
@@ -271,39 +320,11 @@
       m_rectHThum.Move(m_dX, 0);
     }
 
-    m_spriteH.SetPosition(m_rectHThum.iTl);
-    updateSprite(m_spriteH, m_scrollBarH, m_scrollBarHMask);
-  }
-  
-  
-  
+    m_spriteH->SetPos(m_rectHThum.iTl);
+    //m_spriteH->Update(m_rectHThum.iTl, m_scrollBarH, m_scrollBarHMask);
+  }  
 }
 
-void WebScrollbarDrawer::constructSprite(RWsSprite& sprite, TPoint& pos,
-		                                 CFbsBitmap* bitmap, CFbsBitmap* bitmapMask)
-{
-  sprite = RWsSprite(m_webView->brCtl()->CCoeControlParent()->ControlEnv()->WsSession());
-  RDrawableWindow *window =  (RDrawableWindow* )m_webView->brCtl()->CCoeControlParent()->DrawableWindow();
-  sprite.Construct(*window, pos, ESpriteNoChildClip);
-  
-  TSpriteMember spriteMem;
-  spriteMem.iBitmap = 0;//bitmap;
-  spriteMem.iMaskBitmap = 0;//bitmapMask;
-  spriteMem.iInvertMask = EFalse;
-
-  sprite.AppendMember(spriteMem);
-  sprite.Activate();
-}
-
-void WebScrollbarDrawer::updateSprite(RWsSprite& sprite, CFbsBitmap* bitmap, 
-                                      CFbsBitmap* bitmapMask)
-{
-  TSpriteMember spriteMem;
-  spriteMem.iBitmap = bitmap;
-  spriteMem.iMaskBitmap = bitmapMask;
-  spriteMem.iInvertMask = ETrue;  
-  sprite.UpdateMember(0, spriteMem);
-}
 
 TInt WebScrollbarDrawer::createBitmap(CFbsBitmap*& bm, CFbsBitGc*& gc, 
 		                               CFbsBitmapDevice*& dev, TRect& rect)
@@ -314,11 +335,13 @@
       err = KErrNoMemory;
   }
   if (err == KErrNone) {
-      bm->Create(rect.Size(), EColor256);
+      err = bm->Create(rect.Size(), EColor256);      
   }
-  TRAP(err, dev = CFbsBitmapDevice::NewL(bm));
+  if (err == KErrNone) {
+      TRAP(err, dev = CFbsBitmapDevice::NewL(bm));
+  }
   if (err == KErrNone && dev != NULL) {
-    err = dev->CreateContext(gc);
+      err = dev->CreateContext(gc);
   }
   if (err != KErrNone) {
       delete dev;
@@ -348,8 +371,9 @@
 
 TInt WebScrollbarDrawer::SetupBitmaps()
 {
-  TInt err = KErrNone;
-  if (!m_scrollBarV) {
+  // if rect is empty don't create bitmap
+  TInt err = (m_rectVThum != TRect(0,0,0,0)) ? KErrNone : KErrNotReady;
+  if (!m_scrollBarV && err == KErrNone) {
     err = createBitmap(m_scrollBarV, m_gcV, m_devV, m_rectVThum);
   }
   
@@ -362,6 +386,11 @@
       drawThumbMask(m_gcVMask, m_rectVThum);
   }
 
+  // if rect is empty don't create bitmap
+  if (err == KErrNotReady || KErrNone) {
+      err = (m_rectHThum != TRect(0,0,0,0)) ? KErrNone : KErrNotReady;
+  }
+  
   if (!m_scrollBarH && err == KErrNone) {
     err = createBitmap(m_scrollBarH, m_gcH, m_devH, m_rectHThum);
   }
@@ -375,6 +404,9 @@
       drawThumbMask(m_gcHMask, m_rectHThum);
   }
   
+  if (err == KErrNotReady) {
+      err = KErrNone;
+  }
   return err;
 }
 
@@ -382,8 +414,6 @@
 void WebScrollbarDrawer::calculateBitmapRects()
 {
   m_zoomFactor =  ((float)m_webView->scalingFactor() / 100);
-  m_rect.SetRect(m_webView->brCtl()->Rect().iTl,
-		         m_webView->brCtl()->Rect().Size());
   int delta = 0;
   int posX = m_zoomFactor * m_webView->mainFrame()->frameView()->contentPos().iX;
   int posY = m_zoomFactor * m_webView->mainFrame()->frameView()->contentPos().iY;
--- a/webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.h	Fri Jul 03 15:54:40 2009 +0100
@@ -27,6 +27,7 @@
 
 
 class WebView;
+class CWebSprite;
 
 class WebScrollbarDrawer: public CBase
 {
@@ -46,10 +47,6 @@
   private:
     WebScrollbarDrawer();
     void ConstructL(); 
-    void constructSprite(RWsSprite& sprite, TPoint& pos, 
-    		             CFbsBitmap* bitmap, CFbsBitmap* bitmapMask);
-    void updateSprite(RWsSprite& sprite, CFbsBitmap* bitmap, 
-                      CFbsBitmap* bitmapMask);
     TInt InitScrollbar(WebView* view);
     TInt SetupBitmaps();
     
@@ -62,11 +59,12 @@
     void removeBitmaps();
     void clearSprites();
     void calculateBitmapRects();
+    TBool canRedraw();
     
   private:
     WebView*              m_webView;
-    RWsSprite             m_spriteV;
-    RWsSprite             m_spriteH;
+    CWebSprite*           m_spriteV;
+    CWebSprite*           m_spriteH;
     TRect                 m_rect;
     int                   m_scrollBarTransparency;
     CPeriodic*            m_scrollBarFader;
--- a/webengine/osswebengine/WebKit/s60/webview/WebScrollingDeceleratorGH.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebScrollingDeceleratorGH.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -163,27 +163,25 @@
     TPoint cpos = scrollingView->contentPos();
     dist = scrollingView->toDocCoords(dist);
     TPoint pos = m_startPos + dist;
-    
-    if ((vx * m_initSpeed.iX < 0) || (vy * m_initSpeed.iY < 0) || (vx + vy == 0) ||
-        (m_numscrollsteps > 1 && !scrollingView->needScroll(pos))) {
+   
+    WebPageScrollHandler* handler = m_webView.pageScrollHandler();
+
+    if ((vx * m_initSpeed.iX < 0) || (vy * m_initSpeed.iY < 0) || (vx + vy == 0) || 
+        (m_numscrollsteps > 1 && !scrollingView->needScroll(pos) && 
+        !handler->currentScrollingElement())) {
         if (m_scrollbarDrawer) {
             m_scrollbarDrawer->fadeScrollbar();
         }
         m_decelTimer->Cancel();
+        handler->clearScrollingElement();
         m_webView.setViewIsScrolling(false);
         m_webView.toggleRepaintTimer(true);
     }
     else {
-        scrollingView->scrollTo(pos);
-        if (m_scrollbarDrawer) {
-            TPoint scrollDelta = pos - m_lastPos;
-            scrollDelta.iX *= 100;
-            scrollDelta.iY *= 100;
-            m_webView.pageScrollHandler()->updateScrollbars(pos, scrollDelta);   
-        }
+        TPoint scrollDelta = pos - m_lastPos;
+        handler->scrollContent(scrollDelta);
         m_lastPos = pos;
-    }
-    
+    }  
 }
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebKit/s60/webview/WebSprite.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -0,0 +1,376 @@
+/*
+* Copyright (c) 2006 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:  Handles the viewing of a single frame. If the page is not frame
+*               enabled, this class is used as the single view.  If frame
+*               enabled, there is one instance of this class for each frame.
+*
+*/
+
+#include "../../bidi.h"
+#include <fbs.h>
+#include <coemain.h>
+#include "WebSprite.h"
+
+
+/*
+ * CWebSprite class serves as a replacement for Symbian RWsSprite 
+ * in the cases when transparent window is possible (platform supports it).
+ * It's a window owning CCoeControl which window gets highest priority and
+ * smallest ordinal number. That allows to CWebSprite be on top of all windows
+ * in the same window group. The movement is restricted by boundaries of the
+ * parent CCoeControl window or Root Window if parent is NULL.
+ * Only one bitmap is supported, so animation is not possible.
+ * If platform doesn't support window transparency CWebSprite acts as wrapper
+ * around RWsSprite.
+ */
+
+// ======================================================================
+// CWebSprite::NewL
+// ======================================================================
+CWebSprite* CWebSprite::NewL(TPoint& aPos, CFbsBitmap* aBitmap, 
+                             CFbsBitmap* aMask, TBool aInvertMask)
+    {
+    CWebSprite* self = new(ELeave)CWebSprite(NULL, aBitmap, aMask, aInvertMask);
+    CleanupStack::PushL(self);
+    self->ConstructL(aPos);
+    CleanupStack::Pop();
+    return self;
+    }
+
+// ======================================================================
+// CWebSprite::NewL
+// ======================================================================
+CWebSprite* CWebSprite::NewL(CCoeControl* aParent, TPoint& aPos, 
+                             CFbsBitmap* aBitmap, CFbsBitmap* aMask, 
+			     TBool aInvertMask)
+    {
+    CWebSprite* self = new(ELeave)CWebSprite(aParent, aBitmap, aMask, aInvertMask);
+    CleanupStack::PushL(self);
+    self->ConstructL(aParent, aPos);
+    CleanupStack::Pop();
+    return self;
+    }
+
+// ======================================================================
+// CWebSprite::BaseConstructL
+// ======================================================================
+void CWebSprite::BaseConstructL(TPoint& aPos, CFbsBitmap* aBitmap, 
+                                CFbsBitmap* aMask, TBool aInvertMask)
+    {
+    iBitmap = aBitmap;
+    iMask = aMask;
+    iInvertMask = aInvertMask;
+    iParent = NULL;
+    ConstructL(aPos);
+    }
+
+// ======================================================================
+// CWebSprite::BaseConstructL
+// ======================================================================
+void CWebSprite::BaseConstructL(CCoeControl* aParent, TPoint& aPos, 
+                                CFbsBitmap* aBitmap, CFbsBitmap* aMask, 
+				TBool aInvertMask)
+    {
+    iBitmap = aBitmap;
+    iMask = aMask;
+    iInvertMask = aInvertMask;
+    iParent = aParent;
+    ConstructL(aParent, aPos);
+    }
+
+// ======================================================================
+// CWebSprite::CWebSprite()
+// ======================================================================
+CWebSprite::CWebSprite()
+    {
+    }
+
+// ======================================================================
+// CWebSprite::CWebSprite()
+// ======================================================================
+CWebSprite::CWebSprite(CCoeControl* aParent, CFbsBitmap* aBitmap, 
+                       CFbsBitmap* aMask, TBool aInvertMask) : 
+                       iParent(aParent), iBitmap(aBitmap), iMask(aMask), 
+		       iInvertMask(aInvertMask), iWin(NULL)
+    {    
+    }
+
+// ======================================================================
+// CWebSprite::ConstructL
+// ======================================================================
+void CWebSprite::ConstructL(TPoint& aPos)
+    {
+    ConstructL(NULL, aPos);
+    }
+
+// ======================================================================
+// CWebSprite::ConstructL
+// ======================================================================
+void CWebSprite::ConstructL(CCoeControl* aParent, TPoint& aPos)
+    {
+    TInt err = KErrNone;
+    if (aParent)
+        {
+        CreateWindowL(aParent);
+        }
+    else
+        {
+        CreateWindowL();
+        }
+    
+    iWin = &(Window());
+    iWin->SetRequiredDisplayMode(EColor16MA);
+    err = iWin->SetTransparencyAlphaChannel();
+    if (err != KErrNone)
+        {
+        // Transparency is not possible - close window and use sprites
+        CloseWindow();
+        iWin = NULL;
+        }
+    
+    if (iWin)
+        {
+        iWin->SetOrdinalPosition(0, KPasswordWindowGroupPriority - 1);   
+        iWin->SetBackgroundColor(TRgb(0,0));    
+        if (iBitmap) 
+            {
+            init(aPos, iBitmap->SizeInPixels());
+            ActivateL();
+            }
+        else
+            {
+            SetPosition(aPos);
+            Hide();
+            }
+        }
+    else
+        {
+        MakeVisible(EFalse);
+        CreateSprite(aPos);
+        }
+    }
+
+// ======================================================================
+// CWebSprite::CreateSprite
+// ======================================================================
+void CWebSprite::CreateSprite(TPoint& aPos)
+    {
+    /*
+     * We should come here only if iWin is NULL since it will mean that 
+     * transparent windowis not possible and we are using sprite
+     */
+    RWindowTreeNode* window = iParent ? static_cast<RWindowTreeNode*>(iParent->DrawableWindow()) :
+                                        static_cast<RWindowTreeNode*>(&(ControlEnv()->RootWin()));
+    iSprite = RWsSprite(ControlEnv()->WsSession());
+    iSprite.Construct(*window, aPos, ESpriteNoChildClip);
+
+    TSpriteMember spriteMem;
+    spriteMem.iBitmap = iBitmap;
+    spriteMem.iMaskBitmap = iMask;
+    spriteMem.iInvertMask = iInvertMask;
+
+    iSprite.AppendMember(spriteMem);
+    iSprite.Activate();
+    }
+
+// ======================================================================
+// CWebSprite::UpdateSprite
+// ======================================================================
+void CWebSprite::UpdateSprite()
+    {
+    /*
+     * We should come here only if iWin is NULL since it will mean that 
+     * transparent windowis not possible and we are using sprite
+     */
+    TSpriteMember spriteMem;
+    spriteMem.iBitmap = iBitmap;
+    spriteMem.iMaskBitmap = iMask;
+    spriteMem.iInvertMask = iInvertMask;
+
+    iSprite.UpdateMember(0, spriteMem);
+    }
+
+// ======================================================================
+// CWebSprite::init
+// ======================================================================
+void CWebSprite::init(TPoint& aPos, TSize aSize)
+    {
+    if (iWin)
+        { // we have a window - let's set position and size
+        SetPosition(aPos);
+        SetSizeWithoutNotification(aSize);
+        }
+    }
+
+// ======================================================================
+// CWebSprite::Draw
+// ======================================================================
+void CWebSprite::Draw(const TRect& aRect) const
+    {
+    if (IsActivated() && iBitmap)
+        {
+        CWindowGc& gc = SystemGc();       
+        gc.Clear(aRect);   
+        Window().SetOrdinalPosition(0, KPasswordWindowGroupPriority - 1); 
+        TPoint pt = TPoint(0,0);
+        TRect rect = TRect(pt, iBitmap->SizeInPixels());
+        gc.BitBltMasked(pt, iBitmap, rect, iMask, iInvertMask);
+        }
+    }
+
+// ======================================================================
+// CWebSprite::SetBitmap
+// ======================================================================
+void CWebSprite::SetBitmap(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TBool aInvertMask)
+    {
+    iBitmap = aBitmap;
+    iMask = aMask;   
+    iInvertMask = aInvertMask;
+    
+    if(iWin && aBitmap)
+        {
+        TPoint pos = Position();
+        init(pos, aBitmap->SizeInPixels());
+        }
+    }
+
+// ======================================================================
+// CWebSprite::Update
+// ======================================================================
+void CWebSprite::Update(const TPoint& aPos, CFbsBitmap* aBitmap, 
+                        CFbsBitmap* aMask)
+    {
+    SetPos(aPos);
+    Update(aBitmap, aMask);
+    }
+
+// ======================================================================
+// CWebSprite::Update
+// ======================================================================
+void CWebSprite::Update(CFbsBitmap* aBitmap, CFbsBitmap* aMask)
+    {
+    TInt err = KErrNone;
+    if(iWin && aBitmap) // if we have a window and bitmap check if we need 
+        {               // to finish initialization
+        if (!IsActivated() || !iBitmap)         // if control wasn't activated 
+            {                                   // or bitmap was reset last time to NULL,
+            TPoint pos = Position();            // because somebody wanted to reuse this control, 
+            init(pos, aBitmap->SizeInPixels()); // we will try to initialize the control.
+            TRAP(err, ActivateL());
+            }
+        }
+
+    if (err == KErrNone)
+        {
+        iBitmap = aBitmap;
+        iMask = aMask;   
+        }
+    else
+        {
+        iBitmap = NULL;
+        iMask = NULL;    
+        }
+
+    if (!iWin)
+        {
+        UpdateSprite();
+        }
+    else if (iBitmap)
+        {
+        Show();
+        DrawNow();
+        }
+    }
+
+// ======================================================================
+// CWebSprite::Update
+// ======================================================================
+void CWebSprite::Update(CFbsBitmap* aBitmap, CFbsBitmap* aMask, 
+                        TBool aInvertMask)
+    {
+    iInvertMask = aInvertMask;
+    Update(aBitmap, aMask);
+    }
+
+// ======================================================================
+// CWebSprite::Show
+// ======================================================================
+void CWebSprite::Show()
+    {
+    if (iWin)
+        {
+        MakeVisible(ETrue);
+        }
+    else
+        {
+        UpdateSprite();
+        }
+    }
+
+// ======================================================================
+// CWebSprite::Hide
+// ======================================================================
+void CWebSprite::Hide()
+    {
+    if (iWin)
+        {
+        MakeVisible(EFalse);
+        }
+    else
+        {
+        Update(NULL, NULL);
+        }
+    }
+
+// ======================================================================
+// CWebSprite::~CWebSprite
+// ======================================================================
+CWebSprite::~CWebSprite()
+    {
+    if (!iWin)
+        {
+        iSprite.Close();
+        }
+    }
+
+// ======================================================================
+// CWebSprite::SetPos
+// ======================================================================
+void CWebSprite::SetPos(const TPoint& aPos)
+    {
+    if (!iWin)
+        {
+        iSprite.SetPosition(aPos);
+        }
+    else
+        {
+        TPoint pos = Position();
+        if (pos != aPos) 
+            {
+            CCoeControl::SetPosition(aPos);
+            }
+        }
+    }
+
+
+// ======================================================================
+// CWebSprite::IsShown
+// ======================================================================
+TBool CWebSprite::IsShown()
+    {
+    // if it's a window owning CoeControl just return IsVisible()
+    // otherwise check if bitmap != NULL and if it's not then
+    // sprite is shown.
+    return (iWin && IsVisible()) || iBitmap != NULL;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebKit/s60/webview/WebSprite.h	Fri Jul 03 15:54:40 2009 +0100
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2006 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:  Handles the viewing of a single frame. If the page is not frame
+*               enabled, this class is used as the single view.  If frame
+*               enabled, there is one instance of this class for each frame.
+*
+*/
+
+#ifndef WEBSPRITE_H_
+#define WEBSPRITE_H_
+
+#include <e32base.h>
+#include <w32std.h>
+#include <coecntrl.h>
+
+class CFbsBitmap;
+
+
+NONSHARABLE_CLASS(CWebSprite) : public CCoeControl
+{
+    public:
+        static CWebSprite* NewL(TPoint& aPos, CFbsBitmap* aBitmap, CFbsBitmap* aMask, 
+                                TBool aInvertMask);
+        static CWebSprite* NewL(CCoeControl* aParent, TPoint& aPos, CFbsBitmap* aBitmap, 
+                                CFbsBitmap* aMask, TBool aInvertMask);
+        CWebSprite();
+        virtual ~CWebSprite();
+        
+        void Update(const TPoint& aPos, CFbsBitmap* aBitmap, CFbsBitmap* aMask);
+        void Update(CFbsBitmap* aBitmap, CFbsBitmap* aMask);
+        void Update(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TBool aInvertMask);
+        void SetBitmap(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TBool aInvertMask);
+        void Hide();
+        void Show();
+        void Draw(const TRect& aRect) const;
+        void SetPos(const TPoint& aPos);
+        TPoint GetPos() { return Position(); }
+        TBool IsShown();
+        
+    protected:
+        void BaseConstructL(TPoint& aPos, CFbsBitmap* aBitmap, CFbsBitmap* aMask, 
+                            TBool aInvertMask);
+        void BaseConstructL(CCoeControl* aParent, TPoint& aPos, CFbsBitmap* aBitmap, 
+                            CFbsBitmap* aMask, TBool aInvertMask);
+    private:
+        CWebSprite(CCoeControl* aParent, CFbsBitmap* aBitmap, CFbsBitmap* aMask, TBool aInvertMask);
+        void ConstructL(TPoint& aPos);
+        void ConstructL(CCoeControl* aParent, TPoint& aPos);                      
+        void init(TPoint& aPos, TSize aSize);
+        void CreateSprite(TPoint& aPos);
+        void UpdateSprite();
+        
+    private:
+        CFbsBitmap*  iBitmap;
+        CFbsBitmap*  iMask;
+        TBool        iInvertMask;
+
+        RWsSprite    iSprite;
+        RWindow*     iWin;
+        CCoeControl* iParent;
+};
+
+#endif /* WEBSPRITE_H_ */
--- a/webengine/osswebengine/WebKit/s60/webview/WebView.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebView.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -59,6 +59,7 @@
 #include "PluginSkin.h"
 #include "PluginWin.h"
 #include "PluginPlayer.h"
+#include "WebKitLogger.h"
 
 
 #include "Page.h"
@@ -83,6 +84,10 @@
 #include "WidgetExtension.h"
 #include "Cache.h"
 #include "RenderWidget.h"
+#include "HTMLNames.h"
+#include "HTMLInputElement.h"
+
+using namespace HTMLNames;
 
 #include <AknUtils.h>
 #include <CUserAgent.h>
@@ -98,6 +103,7 @@
 
 const int KRepaintDelayLoading = 500*1000; // dont do repaints more often than this during loading (0.5s)
 const int KRepaintDelayComplete = 100*1000; // faster updates after load so dynamic scripts etc have better frame rate (0.1s)
+const int KRepaintDelayNavNone = 70*1000;
 const int KNormalScrollRange = 60;
 
 const int KPanningStartSpeed = 30;
@@ -185,7 +191,6 @@
 , m_pageFullScreenHandler(NULL)
 , m_viewIsScrolling(false)
 , m_ptrbuffer(0)
-, m_pluginActivated(false)
 , m_showCursor(false)
 , m_allowRepaints(true)
 {
@@ -200,6 +205,8 @@
     delete m_pageZoomHandler;
     m_pageZoomHandler = NULL;
 
+    m_zoomLevelArray.Close();
+
     // prevent frameViews to access members when topView is
     // closing down.
     m_isClosing = true;
@@ -229,6 +236,8 @@
     delete m_tabbedNavigation;
     delete m_userAgent;
     delete m_pageFullScreenHandler;
+    delete m_bridge;
+    delete m_frameView;
 }
 
 // -----------------------------------------------------------------------------
@@ -242,7 +251,7 @@
 
     CCoeControl::MakeVisible(ETrue);
 
-    WebFrameView *frameView = new WebFrameView();
+    m_frameView = new WebFrameView();
     m_page = new Page(new WebChromeClient(this), new WebContextMenuClient(), new WebEditorClient(this), new WebDragClient(), new WebInspectorClient());
     m_page->backForwardList()->setCapacity(0);
     m_page->setGroupName("com.s60.browser");
@@ -261,8 +270,8 @@
 
     m_tabbedNavigation = new WebTabbedNavigation(this);
 
-    WebFrameBridge* bridge = new WebFrameBridge();
-    bridge->initMainFrameWithPage(m_page, "", frameView);
+    m_bridge = new WebFrameBridge();
+    m_bridge->initMainFrameWithPage(m_page, "", m_frameView);
 
     // Create and offscreen device and context
     m_bitmapdevice = CFbsBitmapDevice::NewL( StaticObjectsContainer::instance()->webSurface()->offscreenBitmap() );
@@ -364,7 +373,7 @@
 //-------------------------------------------------------------------------------
 void WebView::Draw( const TRect& rect ) const
 {
-    if (m_pluginFullscreen) return;
+    if (StaticObjectsContainer::instance()->isPluginFullscreen()) return;
 
     CWindowGc& gc = SystemGc();
     CEikBorderedControl::Draw( rect );
@@ -549,7 +558,7 @@
       return;
     }
 
-    if (isPluginFullscreen()) return;
+    if (StaticObjectsContainer::instance()->isPluginFullscreen()) return;
     CFbsBitGc& gc = m_webcorecontext->gc();
     gc.Reset();
 
@@ -561,6 +570,15 @@
         layoutPending = f->view()->layoutPending();
         f = f->tree()->traverseNext();
     }
+
+    if (layoutPending && m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeNone) {
+        Frame* f = m_page->mainFrame();
+        while ( f ) {
+            f->view()->layout();
+            f = f->tree()->traverseNext();
+        }
+        layoutPending = false;
+    }
     if (!layoutPending) {
         bool needsDraw = false;
         m_repaints.Tidy();
@@ -588,8 +606,11 @@
     // tot:fixme TBool complete = iWebkitControl->IsProgressComplete(); && CImageRendererFactory::Instance()->DecodeCount()==0;
 
     TBool complete = ETrue;
+    int timeout = complete ? KRepaintDelayComplete : KRepaintDelayLoading;
+    if (complete && m_brctl->settings() && m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeNone)
+        timeout = KRepaintDelayNavNone;
     if ( !m_pageZoomHandler->isActive() && m_allowRepaints){
-        m_repainttimer->Start(complete ? KRepaintDelayComplete : KRepaintDelayLoading,
+        m_repainttimer->Start(timeout,
         0, TCallBack( &doRepaintCb, this ) );
     }
     // need to draw formfill popup here.
@@ -633,15 +654,23 @@
 //-------------------------------------------------------------------------------
 void WebView::collectOffscreenbitmapL(CFbsBitmap& snapshot)
 {
-
-    (snapshot).Create(m_brctl->Size(), StaticObjectsContainer::instance()->webSurface()->displayMode());
-
+    if ( snapshot.Handle() == 0) {
+        // Create bitmap only once
+        (snapshot).Create(m_brctl->Size(), StaticObjectsContainer::instance()->webSurface()->displayMode());
+    }
     CFbsBitmapDevice* device = CFbsBitmapDevice::NewL( &snapshot);
     CleanupStack::PushL(device);
 
     WebCoreGraphicsContext* gc = WebCoreGraphicsContext::NewL( device, &snapshot, mainFrame()->frameView());
     CleanupStack::PushL(gc);
-
+    
+    if( snapshot.Handle() != 0 ){
+        // Clear previous offscreen bitmap
+        // frameView->draw might clear the bitmap.
+        gc->gc().Clear();
+    } else if (snapshot.SizeInPixels()!=m_brctl->Size()){
+          snapshot.Resize(m_brctl->Size());
+    }
     mainFrame()->frameView()->draw( *gc, mainFrame()->frameView()->visibleRect() );
 
     CleanupStack::PopAndDestroy(2);
@@ -673,34 +702,40 @@
 
 void WebView::pageLoadFinished()
 {
+    if (m_brctl->settings()) {
+        switch (m_brctl->settings()->getNavigationType()) {
+            case SettingsContainer::NavigationTypeTabbed:
+                m_tabbedNavigation->initializeForPage();
+                break;
+            case SettingsContainer::NavigationTypeNone:
+                break;
+            case SettingsContainer::NavigationTypeCursor:
+            {
 
-    if (m_brctl->settings() && m_brctl->settings()->getTabbedNavigation()) {
-        m_tabbedNavigation->initializeForPage();
-    }
-    else {
+                // Temp solution to fix a problem with scrolling large pages:
+                // if user starts scrolling while loading a page - at the end of the load we should not restore
+                // the content position from the history controller
+                // As of now scroll events are not passed to WebCore and this will be changed in future
+                // then this code should be replaces with the commented one below
 
-        // Temp solution to fix a problem with scrolling large pages:
-        // if user starts scrolling while loading a page - at the end of the load we should not restore
-        // the content position from the history controller
-        // As of now scroll events are not passed to WebCore and this will be changed in future
-        // then this code should be replaces with the commented one below
+                TPoint ptInit(0,0);
+                TPoint ptFromHistory = m_brctl->historyHandler()->historyController()->currentEntryPosition();
+                TPoint ptCurr = mainFrame()->frameView()->contentPos();
 
-        TPoint ptInit(0,0);
-        TPoint ptFromHistory = m_brctl->historyHandler()->historyController()->currentEntryPosition();
-        TPoint ptCurr = mainFrame()->frameView()->contentPos();
-
-        if ( ptCurr != ptFromHistory ) {
-            if ( ptInit == ptCurr ) {
-                mainFrame()->frameView()->scrollTo(ptFromHistory);
-            }
-            else {
-                m_brctl->historyHandler()->historyController()->updateCurrentEntryPositionIfNeeded();
+                if ( ptCurr != ptFromHistory ) {
+                    if ( ptInit == ptCurr ) {
+                        mainFrame()->frameView()->scrollTo(ptFromHistory);
+                    }
+                    else {
+                        m_brctl->historyHandler()->historyController()->updateCurrentEntryPositionIfNeeded();
+                    }
+                }
+                /*
+                if ( !core(mainFrame())->view()->wasScrolledByUser())
+                    mainFrame()->frameView()->scrollTo(m_brctl->historyHandler()->historyController()->currentEntryPosition());*/
+                break;
             }
         }
-        /*
-        if ( !core(mainFrame())->view()->wasScrolledByUser())
-            mainFrame()->frameView()->scrollTo(m_brctl->historyHandler()->historyController()->currentEntryPosition());*/
-
     }
 
     if (FrameLoadTypeStandard == core( mainFrame())->loader()->loadType()){
@@ -787,6 +822,8 @@
     return rv;
 }
 
+
+
 bool WebView::isNaviKey(const TKeyEvent& keyevent)
 {
     return (    keyevent.iCode == EKeyUpArrow         // North
@@ -800,24 +837,26 @@
              || keyevent.iCode == EStdKeyDevice13     //   : Extra KeyEvent supports diagonal event simulator wedge
              || keyevent.iCode == EKeyLeftArrow       // West
              || keyevent.iCode == EKeyLeftUpArrow     // Northwest
-             || keyevent.iCode == EStdKeyDevice10);
+             || keyevent.iCode == EStdKeyDevice10); 
 }
 
 bool WebView::handleEditable(const TKeyEvent& keyevent, TEventCode eventcode, Frame* frame )
 {
     bool consumed = false;
+    if (eventcode == EEventKeyDown)
+        return false;
     consumed = frame->eventHandler()->keyEvent(PlatformKeyboardEvent(keyevent,eventcode));
     // exit input on up/down key
     // EXCEPT on touch-enabled devices. We'll just consume in that case
     if ( !consumed && isNaviKey(keyevent) ) {
         if (m_webfeptexteditor->validateTextFormat() ) {
             setFocusNone();
-        }
+        } 
         else {
             consumed = true;
         }
     }
-
+    
     return consumed;
 }
 
@@ -836,23 +875,23 @@
     event.iPosition = pos;
     event.iModifiers = 0;
     event.iType = eventType;
-
+    
     switch (eventType) {
         case TPointerEvent::EButton1Down:
         {
             frame->eventHandler()->handleMousePressEvent(PlatformMouseEvent(event));
             break;
         }
-
-        case TPointerEvent::EButton1Up:
+    
+        case TPointerEvent::EButton1Up: 
         {
             frame->eventHandler()->handleMouseReleaseEvent(PlatformMouseEvent(event));
             break;
         }
-
+        
         case TPointerEvent::EMove:
         {
-            frame->eventHandler()->handleMouseMoveEvent(PlatformMouseEvent(event));
+            frame->eventHandler()->handleMouseMoveEvent(PlatformMouseEvent(event)); 
             break;
         }
     };
@@ -875,49 +914,62 @@
     bool consumed = false;
 
     TKeyEvent oldKeyEvent(m_currentEventKey);
+    oldKeyEvent.iCode = keyevent.iCode; 
+    TEventCode oldKeyCode = m_currentEventCode;
     bool downEventConsumed = false;
-    if (m_currentEventCode == EEventKeyDown &&
-	keyevent.iCode != EKeyDevice3 ){
-        sendKeyEventToEngine(oldKeyEvent, EEventKeyDown, frame);
-    }
     m_currentEventKey = keyevent;
     m_currentEventCode = eventcode;
-    if (keyevent.iCode == EKeyDevice3) {
-        // pass it to webcore
-        sendMouseEventToEngine(TPointerEvent::EButton1Down,
-	                        cursor->position(), frame);
 
-        // mimic ccb's behavior of onFocus
-        setFocusedNode(frame);
+    if (m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeNone) {
+        consumed = handleInputElement(keyevent, eventcode, frame);
+        if (!consumed)
+            consumed = sendKeyEventToEngine(keyevent, eventcode, frame);
+    }
+    else {
+        if (keyevent.iCode == EKeyDevice3) {
+                // pass it to webcore
+            sendMouseEventToEngine(TPointerEvent::EButton1Down, 
+	                            cursor->position(), frame);
+
+            // mimic ccb's behavior of onFocus
+            setFocusedNode(frame);
 
-       // Toolbar is activated on long key press only if the element
-       // type is EElementNone during EEventKeyDown and EEventKey.
-       // This prevents toolbar from popping up in DHTML pages. Also,
-       // toolbar is activated when the user is not in fast scroll
-       // mode, or in page overview mode, or on wml page.
-       if ( ( m_focusedElementType == TBrCtlDefs::EElementNone ||
-              m_focusedElementType == TBrCtlDefs::EElementBrokenImage ) &&
-              keyevent.iRepeats && !m_brctl->wmlMode() ) {
-           launchToolBarL();
-       }
-       consumed = true;
+           // Toolbar is activated on long key press only if the element
+           // type is EElementNone during EEventKeyDown and EEventKey.
+           // This prevents toolbar from popping up in DHTML pages. Also,
+           // toolbar is activated when the user is not in fast scroll
+           // mode, or in page overview mode, or on wml page.
+           if ( ( m_focusedElementType == TBrCtlDefs::EElementNone ||
+                  m_focusedElementType == TBrCtlDefs::EElementBrokenImage ) &&
+                  keyevent.iRepeats && !m_brctl->wmlMode() ) {
+               launchToolBarL();
+           }
+           consumed = true;
+        } 
+        else if (isNaviKey(keyevent)) {
+
+            if (oldKeyCode == EEventKeyDown){
+                // Keydown event is automatically generated before each keypress event, but in this case
+                // we don't send a keypress event, so send a keydown event explicitly.
+                downEventConsumed = sendKeyEventToEngine(oldKeyEvent, EEventKeyDown, frame);
+            }
+          
+          
+            if (m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed) {
+                consumed = downEventConsumed || handleTabbedNavigation(keyevent, eventcode);
+            }
+            else {
+                consumed = handleKeyNavigation(keyevent, eventcode, frame);
+            } 
+        } // if (m_brctl->settings()->getNavigationType()
+        else { // Not an arrow key..
+                 // activate hovered input element by just start typing
+              consumed = handleInputElement(keyevent, eventcode, frame);
+        }
+        if (!consumed && !(m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed && isNaviKey(keyevent))) {
+            consumed = sendKeyEventToEngine(keyevent, eventcode, frame);
+        }
     }
-    else if (isNaviKey(keyevent)) {
-        if (m_brctl->settings()->getTabbedNavigation()) {
-            consumed = downEventConsumed || handleTabbedNavigation(keyevent, eventcode);
-        }
-        else {
-            consumed = handleKeyNavigation(keyevent, eventcode, frame);
-        }
-      } // if (m_brctl->settings()->getTabbedNavigation()
-      else { // Not an arrow key..
-             // activate hovered input element by just start typing
-          consumed = handleInputElement(keyevent, eventcode, frame);
-      }
-
-      if (!consumed) {
-          consumed = sendKeyEventToEngine(keyevent, eventcode, frame);
-      }
     return consumed;
 }
 
@@ -925,15 +977,22 @@
 bool WebView::handleInputElement(const TKeyEvent& keyevent, TEventCode eventcode, Frame* frame)
 {
     WebCursor* cursor = StaticObjectsContainer::instance()->webCursor();
-    if (m_focusedElementType == TBrCtlDefs::EElementInputBox ||
-        m_focusedElementType == TBrCtlDefs::EElementSelectBox ||
-        m_focusedElementType == TBrCtlDefs::EElementSelectMultiBox ||
+    bool sendMousedEvent = false;
+    if (m_focusedElementType == TBrCtlDefs::EElementInputBox || 
         m_focusedElementType == TBrCtlDefs::EElementTextAreaBox) {
-
+        sendMousedEvent = true;
+    }
+    else if (m_focusedElementType == TBrCtlDefs::EElementSelectBox ||
+        m_focusedElementType == TBrCtlDefs::EElementSelectMultiBox) {
+        if (m_brctl->settings()->getNavigationType() != SettingsContainer::NavigationTypeNone || keyevent.iCode == EKeyDevice3) {
+            sendMousedEvent = true;
+        }
+    }
+    if (sendMousedEvent) {
         sendMouseEventToEngine(TPointerEvent::EButton1Down, cursor->position(), frame);
         sendMouseEventToEngine(TPointerEvent::EButton1Up, cursor->position(), frame);
-
-        if (m_focusedElementType == TBrCtlDefs::EElementInputBox ||
+    
+        if (m_focusedElementType == TBrCtlDefs::EElementInputBox || 
             m_focusedElementType == TBrCtlDefs::EElementTextAreaBox) {
             if (!m_fepTimer) {
                 m_fepTimer = new WebCore::Timer<WebView>(this, &WebView::fepTimerFired);
@@ -944,8 +1003,9 @@
         }
         m_keyevent = keyevent;
         m_eventcode = eventcode;
+        return true;
     }
-    return true;
+    return false; // not input element
 }
 
 
@@ -960,7 +1020,7 @@
     if (!cursor->isVisible()) {
         cursor->cursorUpdate(true);
     }
-
+    
     m_savedPosition = mainFrame()->frameView()->contentPos();
     cursor->scrollAndMoveCursor(keyevent.iCode, m_scrollingSpeed, fastscroll);
     updateScrollbars();
@@ -975,7 +1035,7 @@
     if (!fastscroll) {
         sendMouseEventToEngine(TPointerEvent::EMove, cursor->position(), frame);
     }
-
+    
     consumed = true;
     return consumed;
 }
@@ -984,7 +1044,7 @@
 bool WebView::handleMinimapNavigation()
 {
     int scrollingTime = millisecondsScrolled();
-    if (!AknLayoutUtils::PenEnabled() && m_pageScalerEnabled &&
+    if (!AknLayoutUtils::PenEnabled() && m_pageScalerEnabled && 
           m_pageScaler && !isSmallPage() &&
           m_brctl->settings()->brctlSetting(TBrCtlDefs::ESettingsPageOverview) &&
          (scrollingTime > KPanningPageScalerStart || m_pageScaler->Visible())) {
@@ -1051,6 +1111,7 @@
     bool consumed = false;
     TInt delay = 2 * KCursorInitialDelay;
     WebCursor* cursor = StaticObjectsContainer::instance()->webCursor();
+    
     m_fastScrollTimer->Cancel();
     m_scrollingSpeed = KNormalScrollRange*100/scalingFactor();
 
@@ -1064,38 +1125,42 @@
     }
     m_pageScrollHandler->scrollbarDrawer()->fadeScrollbar(delay);
 
-    if ( (keyevent.iScanCode == EStdKeyDevice3) ||
-         (keyevent.iScanCode == EStdKeyEnter) ) {
-        // pass it to webcore
-
-        if (m_focusedElementType == TBrCtlDefs::EElementInputBox ||
+    if ( (keyevent.iScanCode == EStdKeyDevice3) || 
+       (keyevent.iScanCode == EStdKeyEnter) ) {
+    // pass it to webcore
+    
+        if (m_focusedElementType == TBrCtlDefs::EElementInputBox || 
             m_focusedElementType == TBrCtlDefs::EElementTextAreaBox) {
             setEditable(true);
         }
-        sendMouseEventToEngine(TPointerEvent::EButton1Up, cursor->position(), frame);
-        consumed = true;
+        if (m_brctl->settings()->getNavigationType() != SettingsContainer::NavigationTypeNone) {
+            sendMouseEventToEngine(TPointerEvent::EButton1Up, cursor->position(), frame);
+            consumed = true;
+        }
     }
-      if (!consumed) {
-          sendKeyEventToEngine(keyevent, eventcode, frame);
-      }
-      m_currentEventKey = KNullKeyEvent;
-      m_currentEventCode = EEventNull;
+
+    if (!consumed) {
+
+        TKeyEvent correctedKeyEvent(keyevent);
+        correctedKeyEvent.iCode = m_currentEventKey.iCode; 
+        sendKeyEventToEngine(correctedKeyEvent, eventcode, frame);
+    }
+    m_currentEventKey = KNullKeyEvent;
+    m_currentEventCode = EEventNull;
     return consumed;
 }
 
 
-bool WebView::sendKeyEventToEngine(const TKeyEvent& keyevent,
+bool WebView::sendKeyEventToEngine(const TKeyEvent& keyevent, 
                                    TEventCode eventcode, Frame* frame)
 {
     bool consumed = frame->eventHandler()->keyEvent(PlatformKeyboardEvent(keyevent,eventcode));
-
-    if (!consumed && eventcode == EEventKey &&
+    if (!consumed && eventcode == EEventKey && 
         (m_brctl->capabilities() & TBrCtlDefs::ECapabilityAccessKeys)) {
-
         TKeyEvent ke = keyevent;
         TChar c(ke.iCode);
         // Not consumed by WebCore, is alphanumeric and does not have any modifier
-        if (c.IsAlphaDigit() &&
+        if (c.IsAlphaDigit() && 
             !(ke.iModifiers & (EModifierCtrl | EModifierAlt | EModifierShift))) {
             ke.iModifiers = EModifierCtrl;
             frame->eventHandler()->keyEvent(PlatformKeyboardEvent(ke,EEventKeyDown));
@@ -1130,12 +1195,12 @@
     if (!coreFrame)
         return EKeyWasNotConsumed;
     coreFrame = page()->focusController()->focusedOrMainFrame();
-
+   
     // edit events
     if (m_isEditable) {
         consumed = handleEditable(keyevent, eventcode, coreFrame);
     }
-
+    
     // scroll events
     if (!consumed) {
         switch( eventcode ) {
@@ -1162,6 +1227,8 @@
         (displayPosY * scalingFactor()) / 100, (documentWidth * scalingFactor()) / 100, Rect().Width(),
         (displayPosX * scalingFactor()) / 100);
 }
+
+
 void WebView::updateScrollbars()
 {
     TPoint scrollDelta = mainFrame()->frameView()->contentPos() - m_savedPosition;
@@ -1177,6 +1244,7 @@
     }
 }
 
+
 void WebView::openPageViewL()
 {
     // don't show pageview if we are in lite mode
@@ -1404,28 +1472,6 @@
 
 void WebView::FocusChanged(TDrawNow aDrawNow)
 {
-if (m_isPluginsVisible && !m_pluginActivated) {
-        Frame* coreFrame =core(mainFrame());
-        MWebCoreObjectWidget* view = NULL;
-        TBool focus(IsFocused());
-        for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) {
-            PassRefPtr<HTMLCollection> objects = frame->document()->objects();
-            for (Node* n = objects->firstItem(); n; n = objects->nextItem()) {
-                view = widget(n);
-                if (view) {
-                    static_cast<PluginSkin*>(view)->viewFocusChanged(focus);
-                }
-            }
-
-            PassRefPtr<HTMLCollection> embeds = frame->document()->embeds();
-            for (Node* n = embeds->firstItem(); n; n = embeds->nextItem()) {
-                view = widget(n);
-                if (view) {
-                    static_cast<PluginSkin*>(view)->viewFocusChanged(focus);
-                }
-            }
-        }
-    }
     if (m_pageFullScreenHandler && m_pageFullScreenHandler->isFullScreenMode()) {
         if (IsFocused()) m_pageFullScreenHandler->showEscBtnL();
         else m_pageFullScreenHandler->hideEscBtnL();
@@ -1447,9 +1493,11 @@
     if (m_pageFullScreenHandler) {
         m_pageFullScreenHandler->SizeChanged();
     }
-    if (m_viewIsScrolling) {
+    
+    if (m_pageScrollHandler) {
         m_pageScrollHandler->scrollbarDrawer()->redrawScrollbar();
     }
+    
 }
 
 TSize WebView::maxBidiSize() const
@@ -1582,9 +1630,9 @@
 {
     if (!m_findKeyword) {
         WebFrame* frame = mainFrame()->findFrameWithSelection();
-        if (frame) {
-            frame->clearSelection();
-            }
+        if(frame) {
+			frame->clearSelection();
+        }
         return TBrCtlDefs::EFindNoMatches;
     }
     return search(*m_findKeyword, forward, true);
@@ -1681,8 +1729,12 @@
     TPtr8 ptr((TUint8 *)m_ptrbuffer,256*sizeof(TPoint));
 
     TInt numPnts = Window().RetrievePointerMoveBuffer(ptr);
-
-    for (int i = 0; i < numPnts; i++) {
+    int i = 0;
+    if (m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeNone) {
+        if (numPnts > 20)
+            i = numPnts - 20;
+    }
+    for (; i < numPnts; i++) {
         TPointerEvent pe;
         pe.iType = TPointerEvent::EDrag;
         pe.iPosition = m_ptrbuffer[i];
@@ -1703,9 +1755,12 @@
 {
     if (name == "navigation") {
         if (value == "tabbed") {
-            m_brctl->settings()->setTabbedNavigation(true);
+            m_brctl->settings()->setNavigationType(SettingsContainer::NavigationTypeTabbed);
             StaticObjectsContainer::instance()->webCursor()->cursorUpdate(true);
         }
+        else if (value == "none") {
+            m_brctl->settings()->setNavigationType(SettingsContainer::NavigationTypeNone);
+        }
     }
 }
 
@@ -1884,7 +1939,7 @@
 //-------------------------------------------------------------------------------
 void WebView::resetZoomLevel(void)
 {
-    if(   m_widgetextension && m_widgetextension->IsWidgetPublising()) {
+    if( m_widgetextension ) {
         return ;
         }
     if (m_historyLoad) {
@@ -1962,8 +2017,10 @@
     {
        m_minZoomLevel = newMinZoomLevel;
       if (m_pageZoomHandler->isActive()) {
+          TRAP_IGNORE(
           m_pageZoomHandler->hideZoomSliderL();
           m_pageZoomHandler->showZoomSliderL();
+          );
       }
       else {
         UpdateZoomArray(); //for non-touch
@@ -2097,25 +2154,25 @@
 
   // Double Tap Zooming: it toggles between default, maxiZoomLevel.
   // Depending on the current zoom level:
-  //   A. If the current is already the max, it zooms to the max
+  //   A. If the current is already the max, it zooms to the max 
   //   B. If the current is bigger than/equal to the default zoom level zooms to the default, it zooms to the max
-  //   C. Otherwise it zooms to the default level first.
+  //   C. Otherwise it zooms to the default level first. 
   // For the mobile pages, such as google.com and cnn.com, minimum zoom level equals
   // to the default zoom level. Zooming is only possible between default and maximum
   // zoom level, double tap only won't reach logic C
   //
-  // For both mobile and non-mobile pages, it creates the same end user double tap
-  // experiences
-
+  // For both mobile and non-mobile pages, it creates the same end user double tap 
+  // experiences 
+  
     if (m_currentZoomLevel == m_maxZoomLevel ) {
-        zoomLevel = KZoomLevelDefaultValue;
+        zoomLevel = KZoomLevelDefaultValue;    	
     }
     else if (m_currentZoomLevel >= KZoomLevelDefaultValue ) {
         zoomLevel = m_maxZoomLevel;
-    }
+    }	
     else {
-        zoomLevel = KZoomLevelDefaultValue;
-    }
+        zoomLevel = KZoomLevelDefaultValue;    	
+    } 
 
     // move the content
     WebFrameView* view = mainFrame()->frameView();
@@ -2139,11 +2196,11 @@
 }
 
 //-------------------------------------------------------------------------------
-// WebView::openPluginPlayer
+// WebView::openPluginPlayerL
 // Called when user clicks a plugin which is able to accept user input,
 // this feature is only used in US build
 //-------------------------------------------------------------------------------
-void WebView::openPluginPlayer(PluginWin* plugin)
+void WebView::openPluginPlayerL(PluginWin* plugin)
 {
     if (!m_pluginplayer) {
         PluginSkin* pluginskin = mainFrame()->focusedPlugin();
@@ -2194,6 +2251,8 @@
 #endif
     }
 
+    //Widgets dont need memory cache for dead objects. hence set it to 0
+    cache()->setCapacities(0, 0, 0);
     return m_widgetextension;
 }
 
@@ -2327,7 +2386,7 @@
 }
 
 //-------------------------------------------------------------------------------
-// WebView::notifyFullscreenModeChangeL
+// WebView::nootifyFullscreenModeChangeL
 //-------------------------------------------------------------------------------
 void WebView::notifyFullscreenModeChangeL(bool mode)
 {
@@ -2389,32 +2448,6 @@
 void WebView::setRedirectWithLockedHistory(bool value) {
      m_redirectWithLockedHistory = value;
 }
-//-------------------------------------------------------------------------------
-// WebView::notifyPlugins
-// Webview notifies plugins to handle play/pause of .swf files when user switches to menu/another application
-//-------------------------------------------------------------------------------
-void WebView::notifyPlugins(TBool focus)
-{
-    Frame* coreFrame =core(mainFrame());
-    MWebCoreObjectWidget* view = NULL;
-    for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) {
-        PassRefPtr<HTMLCollection> objects = frame->document()->objects();
-        for (Node* n = objects->firstItem(); n; n = objects->nextItem()) {
-            view = widget(n);
-            if (view) {
-                static_cast<PluginSkin*>(view)->handlePluginForeground(focus);
-            }
-        }
-
-        PassRefPtr<HTMLCollection> embeds = frame->document()->embeds();
-        for (Node* n = embeds->firstItem(); n; n = embeds->nextItem()) {
-            view = widget(n);
-            if (view) {
-                static_cast<PluginSkin*>(view)->handlePluginForeground(focus);
-            }
-        }
-    }
-}
 
 
 void WebView::setFastScrollingMode(bool fastScrolling)
@@ -2519,4 +2552,56 @@
     StaticObjectsContainer::instance()->webCursor()->setCursorVisible(showCursor);
 }
 
+void WebView::focusedElementChanged(Element* element)
+{
+    Frame* frame = element->document()->frame();
+    WebFrameView* fv = kit(frame)->frameView();
+    if (m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed || m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeNone) {
+        if (!element || !element->document() ||!element->renderer()) return;
+        if (element->hasTagName(textareaTag) || (element->hasTagName(inputTag) && (reinterpret_cast<HTMLInputElement*>(element))->isTextField())) {
+            TPoint point = TRect(element->getRect()).iTl;
+            point = fv->frameCoordsInViewCoords(point);
+            StaticObjectsContainer::instance()->webCursor()->setPosition(point);
+            TPointerEvent event;
+            event.iPosition = StaticObjectsContainer::instance()->webCursor()->position();
+            event.iModifiers = 0;
+            event.iType = TPointerEvent::EMove;
+            core(mainFrame())->eventHandler()->handleMouseMoveEvent(PlatformMouseEvent(event));            
+            
+        }
+        else {
+            int x, y;
+            element->renderer()->absolutePosition(x, y);
+            Vector<IntRect> rects;
+            element->renderer()->absoluteRects(rects, x, y);
+            TPoint point;
+            if (rects.size() > 0) {
+                point = TPoint(rects[0].x(), rects[0].y());
+                point = fv->frameCoordsInViewCoords(point);
+                StaticObjectsContainer::instance()->webCursor()->setPosition(point);
+                TPointerEvent event;
+                event.iPosition = StaticObjectsContainer::instance()->webCursor()->position();
+                event.iModifiers = 0;
+                event.iType = TPointerEvent::EMove;
+                core(mainFrame())->eventHandler()->handleMouseMoveEvent(PlatformMouseEvent(event));            
+            }
+        }
+
+        if (m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed) { 
+            m_tabbedNavigation->focusedElementChanged(element);
+        }
+        // onload event on the first page could happen before the view becomes visible
+        m_savedCursorPosition = StaticObjectsContainer::instance()->webCursor()->position();
+        m_focusedElementType = nodeTypeB(element, frame);
+    }
+}
+
+void WebView::windowObjectCleared() const
+{
+    if (m_widgetextension) {
+        WebView* that = const_cast<WebView*>(this);
+        that->m_widgetextension->windowObjectCleared();
+    }
+}
+
 // END OF FILE
--- a/webengine/osswebengine/WebKit/s60/webview/WebView.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebView.h	Fri Jul 03 15:54:40 2009 +0100
@@ -22,7 +22,7 @@
 //  INCLUDES
 #include <e32std.h>
 #include <eikscrlb.h>
-#include "platform/Shared.h"
+#include "platform\Shared.h"
 #include "BrCtlDefs.h"
 #include "PageScaler.h"
 #include "Timer.h"
@@ -64,6 +64,8 @@
 class WebPageZoomHandler;
 class WebPointerEventHandler;
 class WebPageFullScreenHandler;
+class WebFrameView;
+class WebFrameBridge;
 
 class WebView : public CEikBorderedControl, public WebCore::Shared<WebView>, private MPageScalerCallback, public MOOMStopper
     {
@@ -184,7 +186,7 @@
 
         PluginPlayer* pluginPlayer() { return m_pluginplayer; }
         void closePluginPlayer();
-        void openPluginPlayer(PluginWin* plugin);
+        void openPluginPlayerL(PluginWin* plugin);
 
         void setAccessPointId(TUint32 apid) {m_apid = apid;}
         TUint32 accessPointId() { return m_apid; }
@@ -384,7 +386,6 @@
         TBool TouchScrolling() ;
 
         CCoeControl& PageControlView();
-        void notifyPlugins(TBool focus);
 
      protected: // From CCoeControl
 
@@ -454,24 +455,27 @@
         bool handleInputElement(const TKeyEvent& keyevent, TEventCode eventcode, WebCore::Frame* frame);
         bool handleEventKeyL(const TKeyEvent& keyevent, TEventCode eventcode, WebCore::Frame* frame);
         void setFocusedNode(WebCore::Frame* frame);
-        void sendMouseEventToEngine(TPointerEvent::TType eventType, TPoint pos, WebCore::Frame* frame);
+
         bool handleEventKeyUp(const TKeyEvent& keyevent, TEventCode eventcode, WebCore::Frame* frame);
         bool handleEditable(const TKeyEvent& keyevent, TEventCode eventcode, WebCore::Frame* frame );
         bool isNaviKey(const TKeyEvent& keyevent);
     public:
+        void sendMouseEventToEngine(TPointerEvent::TType eventType, TPoint pos, WebCore::Frame* frame);
         void fepTimerFired(WebCore::Timer<WebView>*);
         void fepVKBTimerFired(WebCore::Timer<WebView>*);
         bool isClosing() const { return m_isClosing; }
         void synchRequestPending(bool);
         bool isSynchRequestPending() const { return m_synchRequestPending; }
 
-        void setPluginFullscreen(bool val) { m_pluginFullscreen = val; }
-        bool isPluginFullscreen() { return m_pluginFullscreen; }
-        void setPluginActivated(bool option) {m_pluginActivated = option;}
         TInt getWidgetId();
+        void focusedElementChanged(WebCore::Element* element);
+        void windowObjectCleared() const;
+
     private:
-        WebCore::Page* m_page;
-        CBrCtl* m_brctl;
+        WebCore::Page*          m_page;
+        WebFrameView*           m_frameView;
+        WebFrameBridge*         m_bridge;
+        CBrCtl*                 m_brctl;
         RRegion                 m_repaints;
         CPeriodic*              m_repainttimer;
         WebCoreGraphicsContext* m_webcorecontext;   // owned
@@ -544,9 +548,7 @@
 
         // synchronous requests
         bool                m_synchRequestPending;
-        bool                m_pluginFullscreen;
         //Indicates any plugin is activated/deactivated
-        bool                m_pluginActivated;
         bool                m_showCursor;
         bool                m_allowRepaints;
     };
--- a/webengine/osswebengine/WebKit/s60/webview/WidgetExtension.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WidgetExtension.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -69,44 +69,31 @@
 CWidgetExtension::~CWidgetExtension()
 {
     delete m_widgetengine;
-    m_widgetLibrary.Close();
 #if defined(BRDO_LIW_FF)
     delete m_deviceBridge;
-    m_deviceLibrary.Close();
 #endif
 }
 
 void CWidgetExtension::ConstructL(MWidgetCallback& aWidgetCallback)
 {
     if (!m_widgetengine) {
-        _LIT( KBrowserWidgetEngineName, "widgetengine.dll" );
-        User::LeaveIfError( m_widgetLibrary.Load(KBrowserWidgetEngineName) );
-        TLibraryFunction entry = m_widgetLibrary.Lookup(1);
-        if (!entry) {
+
+        m_widgetengine = WebCore::StaticObjectsContainer::instance()->getWidgetEngineBridgeL();
+        if(!m_widgetengine) {
             User::Leave(KErrNotFound);
         }
-        m_widgetengine = (MWidgetEngineBridge*) entry();
+            
         m_widgetcallback = &aWidgetCallback;
 
-        if (m_widgetengine) {
-            AddJSExtension(_L("widget"),m_widgetengine->Widget(*m_widgetcallback, *this));
-            AddJSExtension(_L("menu"),m_widgetengine->Menu(*m_widgetcallback, *this));
-            AddJSExtension(_L("MenuItem"),m_widgetengine->MenuItem(*m_widgetcallback, *this));
-        }
 
 #if defined(BRDO_LIW_FF)
         // device for SAPI
-        _LIT( KDeviceDLLName, "jsdevice.dll" );
-        User::LeaveIfError( m_deviceLibrary.Load(KDeviceDLLName) );
-        TLibraryFunction device_entry = m_deviceLibrary.Lookup(1);
-        if (!device_entry) {
+        
+        m_deviceBridge = WebCore::StaticObjectsContainer::instance()->getDeviceBridgeL();
+        if (!m_deviceBridge) {
             User::Leave(KErrNotFound);
         }
-        m_deviceBridge = (MDeviceBridge*) device_entry();
-
-        if (m_deviceBridge) {
-            AddJSExtension(_L("device"), m_deviceBridge->Device(0));
-        }
+        
 #endif
 
         if (m_webview && m_webview->page()) {
@@ -224,10 +211,38 @@
 
 void CWidgetExtension::setTabbednavigation(bool aOn)
 {
-    m_webview->brCtl()->settings()->setTabbedNavigation(aOn);
+    m_webview->brCtl()->settings()->setNavigationType(aOn ? SettingsContainer::NavigationTypeTabbed : SettingsContainer::NavigationTypeCursor);
+    WebCore::StaticObjectsContainer::instance()->webCursor()->cursorUpdate(true);
+}
+
+void CWidgetExtension::setNavigationType(const TDesC& aType)
+{
+    if (aType.Compare(_L("cursor")) == 0)
+        m_webview->brCtl()->settings()->setNavigationType(SettingsContainer::NavigationTypeCursor);
+    else if (aType.Compare(_L("tabbed")) == 0)
+        m_webview->brCtl()->settings()->setNavigationType(SettingsContainer::NavigationTypeTabbed);
+    else if (aType.Compare(_L("none")) == 0)
+        m_webview->brCtl()->settings()->setNavigationType(SettingsContainer::NavigationTypeNone);
     WebCore::StaticObjectsContainer::instance()->webCursor()->cursorUpdate(true);
 }
 
+void CWidgetExtension::windowObjectCleared()
+{
+    if (m_widgetengine) {
+        m_widgetengine->Clear();
+        AddJSExtension(_L("widget"),m_widgetengine->Widget(*m_widgetcallback, *this));
+        AddJSExtension(_L("menu"),m_widgetengine->Menu(*m_widgetcallback, *this));
+        AddJSExtension(_L("MenuItem"),m_widgetengine->MenuItem(*m_widgetcallback, *this));
+    }
+
+#if defined(BRDO_LIW_FF)
+    if (m_deviceBridge) {
+        m_deviceBridge->Clear();
+        AddJSExtension(_L("device"), m_deviceBridge->Device(0));
+        m_deviceBridge->SetUid( iWidgetId);
+    }
+#endif
+}
 
 //END OF FILE
 
--- a/webengine/osswebengine/WebKit/s60/webview/WidgetExtension.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WidgetExtension.h	Fri Jul 03 15:54:40 2009 +0100
@@ -66,13 +66,14 @@
     void setLeftSoftKeyLabel(const TDesC& aText);
     void setTabbednavigation(bool aOn);
     bool IsWidgetPublising(){ return m_isWidgetPublishing;}
+    void setNavigationType(const TDesC& aType);
+    void windowObjectCleared();
 
 private:
     void AddJSExtension(const TDesC& id, void* obj);
     CWidgetExtension(WebView& aWebKitView);
     void ConstructL(MWidgetCallback& aWidgetCallback);
 
-    RLibrary                 m_widgetLibrary;
     WebView*                 m_webview;
 
     MWidgetEngineBridge*     m_widgetengine;
@@ -81,7 +82,6 @@
     bool                     m_isWidgetPublishing;
 
 #if defined(BRDO_LIW_FF)
-    RLibrary                 m_deviceLibrary;
     MDeviceBridge*           m_deviceBridge;
 #endif
 };
--- a/webengine/osswebengine/WebKit/s60/webview/webview_api_test/tsrc/group/WebViewApiTest.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/webview_api_test/tsrc/group/WebViewApiTest.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -30,7 +30,11 @@
 /* Remove comments and replace 0x00000000 with correct secure id */
 // SECUREID     0x00000000
 
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 
 DEFFILE         WebViewApiTest.def
 
--- a/webengine/osswebengine/WebKitTools/GtkLauncher/GtkLauncher.pro	Fri May 08 08:25:06 2009 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-TEMPLATE = app
-SOURCES += main.cpp
-CONFIG -= app_bundle
-
-BASE_DIR = $$PWD/../..
-
-include(../../WebKit.pri)
-
-
-QMAKE_RPATHDIR += $$OUTPUT_DIR/lib
Binary file webengine/osswebengine/cache/conf/httpcachemanager.confml has changed
--- a/webengine/osswebengine/cache/inc/HttpCacheLookupTable.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/cache/inc/HttpCacheLookupTable.h	Fri Jul 03 15:54:40 2009 +0100
@@ -94,6 +94,14 @@
         * @param
         * @return
         */
+        TInt RemoveByPosition( TInt aPos );
+        
+        /**
+        *
+        * @since 3.1
+        * @param
+        * @return
+        */
         TInt RemoveAll();
         
         /**
@@ -144,6 +152,14 @@
         */
         void MergeL( CHttpCacheLookupTable* aHttpCacheLookupTable, RFs aRfs  );
         
+        /**
+        *
+        * @since 7.1
+        * @param
+        * @return
+        */
+        void FindCacheEntryIndex( const CHttpCacheEntry& aCacheEntry, TInt* aIndex );
+
     private:
         
         /**
--- a/webengine/osswebengine/cache/src/HttpCacheHandler.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/cache/src/HttpCacheHandler.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -681,7 +681,7 @@
                 iStreamHandler->Detach( *entry );
 
                 // Clear the flushed cache buffer, we were using for incoming body
-                entry->SetCacheBufferL( KBufferSizeZero );
+                TRAP_IGNORE( entry->SetCacheBufferL( KBufferSizeZero ) );
                 }
             }
         else if( entry->State() == CHttpCacheEntry::ECacheDestroyed )
@@ -1003,16 +1003,40 @@
         CArrayPtrFlat<CHttpCacheEntry>* evictedList = iEvictionHandler->EvictL( aSize );
         if ( evictedList && evictedList->Count() )
             {
-            // destroy items
+            // Delete entry items marked for eviction
             CHttpCacheEntry* entry;
-            for( TInt i = 0; i < evictedList->Count(); i++ )
+            for ( TInt i = 0; i < evictedList->Count(); i++ )
                 {
-                //
                 entry = evictedList->At( i );
-                if( entry )
+
+                if ( entry )
                     {
-                    // destroy
-                    iLookupTable->Remove( entry->Url() );
+                    // Handle removing valid and invalid entries. Check entry
+                    // for validity, and if in lookup table. It has been
+                    // found that the evictList can have invalid entries in it.
+                    // These invalid entries are not in the lookup table.
+                    TInt lookupTableIndex( -1 );
+                    iLookupTable->FindCacheEntryIndex( *entry, &lookupTableIndex );
+                    
+                    TInt sizeBody = entry->BodySize();
+                    if ( sizeBody == 0 && lookupTableIndex >= 0 )
+                        {
+                        // This is an empty body cache entry that exists
+                        // in the lookup table, remove it from file system and
+                        // lookup table.
+						// Use CreateNewFilesL() to open file handles, so we can delete
+						// the files associated with the cache entry. We don't check
+                        // return value of RemoveByPosition(), because we already
+                        // checked for index in FindCacheEntryIndex(). 
+                        iStreamHandler->CreateNewFilesL( *entry );
+                        iStreamHandler->EraseCacheFile( *entry );
+                        iLookupTable->RemoveByPosition( lookupTableIndex );
+                        }
+                    else if ( lookupTableIndex >= 0 )
+                        {
+                        // Remove valid entries that are found in lookup table
+                        iLookupTable->Remove( entry->Url() );
+                        }
                     }
                 }
 
@@ -1029,6 +1053,8 @@
 #endif            
             ok = EFalse;
             }
+
+        // Cleanup the evicted list, including any invalid entries
         delete evictedList;
         }
     return ok;
@@ -1212,9 +1238,14 @@
             }
         if( ret == KErrNone )
             {
-            CleanupClosePushL( readStream );
-            aLookupTable->InternalizeL( readStream, iDirectory->Des() );
-            CleanupStack::PopAndDestroy(1); // readStream
+            TRAPD ( err, aLookupTable->InternalizeL( readStream, iDirectory->Des() ) );
+            readStream.Close(); 
+            if ( err != KErrNone ) 
+                {
+                // In case Bad Things Happen (TM), do RemoveAllL() which clears this cache's 
+                // in-memory data structures + saves an updated lookup table to disk replacing the old one. 
+                TRAP_IGNORE( RemoveAllL() );
+                } 
             }
     }
 
@@ -1232,7 +1263,9 @@
     RFileWriteStream writeStream;
 
     // Don't get notified about own changes
-    iHttpCacheObserver->Cancel();
+    if ( iHttpCacheObserver ) 
+        iHttpCacheObserver->Cancel();
+    
     TInt ret = KErrNone;
     TInt tryCount = 0;
     for (tryCount = 0; tryCount < 5; tryCount++) 
@@ -1256,7 +1289,9 @@
         writeStream.CommitL();
         CleanupStack::PopAndDestroy(); // writeStream
         }
-    iHttpCacheObserver->StartObserver();
+    
+    if ( iHttpCacheObserver ) 
+        iHttpCacheObserver->StartObserver();
     }
 
 // -----------------------------------------------------------------------------
@@ -1327,7 +1362,9 @@
 void CHttpCacheHandler::UpdateLookupTable()
     {
     TRAP_IGNORE(UpdateLookupTableL());
-    iHttpCacheObserver->StartObserver();
+    
+    if ( iHttpCacheObserver ) 
+        iHttpCacheObserver->StartObserver();
     }
 
 // -----------------------------------------------------------------------------
--- a/webengine/osswebengine/cache/src/HttpCacheLookupTable.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/cache/src/HttpCacheLookupTable.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -233,6 +233,27 @@
     }
 
 // -----------------------------------------------------------------------------
+// CHttpCacheLookupTable::RemoveByPosition
+//
+// -----------------------------------------------------------------------------
+//
+TInt CHttpCacheLookupTable::RemoveByPosition( TInt aPos )
+    {
+    TInt status( KErrNotFound );
+
+    if ( Valid( aPos ) )
+        {
+        CHttpCacheEntry* entry = iEntries->At( aPos );
+        SetDeleted( aPos );
+        delete entry;
+        iCount--;
+        status = KErrNone;
+        }
+
+    return status;
+    }
+       
+// -----------------------------------------------------------------------------
 // CHttpCacheLookupTable::EraseCacheEntry
 //
 // -----------------------------------------------------------------------------
@@ -350,21 +371,26 @@
             CHttpCacheEntry* entry = CHttpCacheEntry::NewLC( KNullDesC8, *iEvictionHandler );
             // read it
             err = entry->Internalize( aReadStream );
-            // leave only on no memory
-            if( err == KErrNone )
+
+            if ( err == KErrNone && entry->BodySize() > 0 )
                 {
-                // insert to the table
+                // cacheEntry is valid, insert into the table
                 InsertL( entry );
                 contentSize += entry->HeaderSize();
                 contentSize += entry->BodySize();
                 }
             else if ( err == KErrNoMemory )
                 {
+                // Only leave if no memory
                 User::Leave( KErrNoMemory );
                 }
-            else
+            else if ( entry->BodySize() == 0 )
                 {
-                // suggestions
+                // This is an empty cache entry, remove it from file system.
+				// Use CreateNewFilesL() to open file handles, so we can delete
+				// the files associated with the cache entry.
+                iStreamHandler->CreateNewFilesL( *entry );
+                iStreamHandler->EraseCacheFile( *entry );
                 }
 
             // takes ownership
@@ -690,8 +716,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-TBool CHttpCacheLookupTable::Valid(
-    TInt aPos )
+TBool CHttpCacheLookupTable::Valid( TInt aPos )
     {
     return( BoundaryCheck( aPos ) && !Empty( aPos ) && !Deleted( aPos ) );
     }
@@ -701,8 +726,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-TBool CHttpCacheLookupTable::Empty(
-    TInt aPos )
+TBool CHttpCacheLookupTable::Empty( TInt aPos )
     {
     return( BoundaryCheck( aPos ) && iEntries->At( aPos ) == NULL );
     }
@@ -809,4 +833,30 @@
             }
         }
     }
+
+// -----------------------------------------------------------------------------
+// CHttpCacheLookupTable::FindCacheEntryIndex
+//
+// -----------------------------------------------------------------------------
+//
+void CHttpCacheLookupTable::FindCacheEntryIndex(
+    const CHttpCacheEntry& aCacheEntry,
+    TInt* aIndex )
+    {
+    *aIndex = -1;
+    for ( TInt i = 0; i < iEntries->Count(); i++ )
+        {
+        CHttpCacheEntry* entry = iEntries->At( i );
+
+        if ( entry == &aCacheEntry )
+            {
+            if ( aIndex )
+                {
+                *aIndex = i;
+                }
+            break;
+            }
+        }
+    }
+
 //  End of File
--- a/webengine/webkitutils/HistoryProvider/HistoryController.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/webkitutils/HistoryProvider/HistoryController.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -56,7 +56,7 @@
 
 HistoryController::~HistoryController()
 {
-    clearHistoryList();
+	m_historyStack.ResetAndDestroy();
 }
 
 /**
@@ -229,6 +229,7 @@
             delete deadEntry;
         }
     }
+
     m_currentIndex  = (m_currentIndex != -1) ? 0: m_currentIndex ;
     m_tempCurrentIndex = m_currentIndex;
     m_historyLoadOffset = 0;
--- a/webengine/webkitutils/HistoryProvider/HistoryEntry.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/webkitutils/HistoryProvider/HistoryEntry.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -149,8 +149,10 @@
     }
     if (m_thumbnailBuf) {
         RBufWriteStream stream(*m_thumbnailBuf);
+		CleanupClosePushL(stream);
         TRAPD(err, thumbnail->ExternalizeRectangleL(stream, area));
         stream.Close();
+		CleanupStack::PopAndDestroy(); //stream
         if (err) {
             delete m_thumbnailBuf;
             m_thumbnailBuf = 0;
--- a/webengine/webkitutils/ToolBar/ToolBar.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/webkitutils/ToolBar/ToolBar.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -523,7 +523,10 @@
 // ----------------------------------------------------------------------------
 CToolBar::~CToolBar()
     {
-    iToolBarCallback->SetAndUpdateCursorPosition(iOrigCursorPos);
+    if( iToolBarCallback )
+        {
+        iToolBarCallback->SetAndUpdateCursorPosition(iOrigCursorPos);
+        }
     if (iButtonArray != NULL)
         {
         iButtonArray->ResetAndDestroy();
--- a/webengine/webkitutils/ToolBar/ToolBarButton.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/webkitutils/ToolBar/ToolBarButton.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -843,53 +843,84 @@
         TRect boundingRect(TPoint(0,0),TSize(w,h));
 
         //mask
-        iToolTipMask = new (ELeave) CFbsBitmap;
-        User::LeaveIfError( iToolTipMask->Create( TSize(w,h), EColor16MA ) );
-        iToolTipMaskDevice = CFbsBitmapDevice::NewL( iToolTipMask );
-        User::LeaveIfError( iToolTipMaskDevice->CreateContext( iToolTipMaskContext ) );
-        iToolTipMaskContext->SetPenColor(KRgbBlack);
-        iToolTipMaskContext->SetBrushColor(KRgbBlack);
-        iToolTipMaskContext->SetBrushStyle(CGraphicsContext::ESolidBrush);
-        iToolTipMaskContext->SetPenStyle(CGraphicsContext::ESolidPen);
-        iToolTipMaskContext->DrawRoundRect(boundingRect,TSize(4,4));
-
-        //bitmap
-        iToolTipBitmap = new (ELeave) CFbsBitmap;
-        User::LeaveIfError( iToolTipBitmap->Create( TSize(w,h), EColor16MA ) );
-        iToolTipBitmapDevice = CFbsBitmapDevice::NewL( iToolTipBitmap );
-        User::LeaveIfError( iToolTipBitmapDevice->CreateContext( iToolTipBitmapContext ) );
-        iToolTipBitmapContext->SetPenColor(KRgbBlack);
-        iToolTipBitmapContext->SetBrushColor(TRgb(0xfa,0xfa,0xd2));
-        iToolTipBitmapContext->SetBrushStyle(CGraphicsContext::ESolidBrush);
-        iToolTipBitmapContext->SetPenStyle(CGraphicsContext::ESolidPen);
-        iToolTipBitmapContext->DrawRoundRect(boundingRect,TSize(4,4));
+        TRAP( err, 
+            {
+            iToolTipMask = new (ELeave) CFbsBitmap;
+            if(KErrNone == iToolTipMask->Create( TSize(w,h), EColor16MA ))
+                {
+                iToolTipMaskDevice = CFbsBitmapDevice::NewL( iToolTipMask );
+                User::LeaveIfError( iToolTipMaskDevice->CreateContext( iToolTipMaskContext ) );
+                }
+            }
+        );
+        if( KErrNone != err)
+            {
+            delete iToolTipMask;
+            iToolTipMask = NULL;
+            delete iToolTipMaskDevice;
+            iToolTipMaskDevice = NULL;
+            }
+        else
+            {
+            iToolTipMaskContext->SetPenColor(KRgbBlack);
+            iToolTipMaskContext->SetBrushColor(KRgbBlack);
+            iToolTipMaskContext->SetBrushStyle(CGraphicsContext::ESolidBrush);
+            iToolTipMaskContext->SetPenStyle(CGraphicsContext::ESolidPen);
+            iToolTipMaskContext->DrawRoundRect(boundingRect,TSize(4,4));
 
-        //add text
-        iToolTipBitmapContext->SetPenColor(KRgbBlack);
-        iToolTipBitmapContext->SetBrushStyle(CGraphicsContext::ENullBrush);
-
-        iToolTipBitmapContext->UseFont(myFont);
-        TPoint pt = boundingRect.iTl;
-        pt += TPoint(KToolTipBorder + KTextMargin,KToolTipBorder + KTextMargin);
-        iToolTipBitmapContext->DrawText(*visualText,
-                    TPoint(pt.iX,pt.iY + myFont->AscentInPixels()));
-        iToolTipBitmapContext->DiscardFont();
-
-        CCoeControl& view = iParent->ToolBarCallback().View();
+            //bitmap
+            TRAP( err,
+                {
+                iToolTipBitmap = new (ELeave) CFbsBitmap;
+                if( KErrNone == iToolTipBitmap->Create( TSize(w,h), EColor16MA ))
+                    {
+                    iToolTipBitmapDevice = CFbsBitmapDevice::NewL( iToolTipBitmap );
+                    User::LeaveIfError( iToolTipBitmapDevice->CreateContext( iToolTipBitmapContext ) );
+                    }
+                }
+            );
+            if( KErrNone != err )
+                {
+                delete iToolTipBitmap;
+                iToolTipBitmap = NULL;
+                delete iToolTipBitmapDevice;
+                iToolTipBitmapDevice = NULL;
+                }
+            else
+                {
+                iToolTipBitmapContext->SetPenColor(KRgbBlack);
+                iToolTipBitmapContext->SetBrushColor(TRgb(0xfa,0xfa,0xd2));
+                iToolTipBitmapContext->SetBrushStyle(CGraphicsContext::ESolidBrush);
+                iToolTipBitmapContext->SetPenStyle(CGraphicsContext::ESolidPen);
+                iToolTipBitmapContext->DrawRoundRect(boundingRect,TSize(4,4));
 
-        iToolTipSprite = RWsSprite(view.ControlEnv()->WsSession());
-        RWindowTreeNode *window =  (RDrawableWindow* )iParent->ToolBarCallback().CCoeControlParent().DrawableWindow();
-        iToolTipSprite.Construct(*window,p, ESpriteNoChildClip);
+                //add text
+                iToolTipBitmapContext->SetPenColor(KRgbBlack);
+                iToolTipBitmapContext->SetBrushStyle(CGraphicsContext::ENullBrush);
+
+                iToolTipBitmapContext->UseFont(myFont);
+                TPoint pt = boundingRect.iTl;
+                pt += TPoint(KToolTipBorder + KTextMargin,KToolTipBorder + KTextMargin);
+                iToolTipBitmapContext->DrawText(*visualText,
+                    TPoint(pt.iX,pt.iY + myFont->AscentInPixels()));
+                iToolTipBitmapContext->DiscardFont();
+
+                CCoeControl& view = iParent->ToolBarCallback().View();
 
-        TSpriteMember spriteMem;
-        spriteMem.iBitmap = iToolTipBitmap;
-        spriteMem.iMaskBitmap = iToolTipMask;
-        spriteMem.iInvertMask = ETrue;
+                iToolTipSprite = RWsSprite(view.ControlEnv()->WsSession());
+                RWindowTreeNode *window =  (RDrawableWindow* )iParent->ToolBarCallback().CCoeControlParent().DrawableWindow();
+                iToolTipSprite.Construct(*window,p, ESpriteNoChildClip);
 
-        iToolTipSprite.AppendMember(spriteMem);
-        iToolTipSprite.Activate();
-        delete visualText;//visual text
+                TSpriteMember spriteMem;
+                spriteMem.iBitmap = iToolTipBitmap;
+                spriteMem.iMaskBitmap = iToolTipMask;
+                spriteMem.iInvertMask = ETrue;
 
+                iToolTipSprite.AppendMember(spriteMem);
+                iToolTipSprite.Activate();
+                delete visualText;//visual text
+                }
+            }
         }
     else  // aVisible = false
         {
--- a/webengine/webkitutils/group/WebKitUtils.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/webkitutils/group/WebKitUtils.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -42,7 +42,11 @@
 START RESOURCE ../data/webkitutils.rss
 HEADER
 TARGETPATH      RESOURCE_FILES_DIR
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 END
 
 SOURCEPATH      ../ToolBar
--- a/webengine/webkitutils/group/bld.inf	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/webkitutils/group/bld.inf	Fri Jul 03 15:54:40 2009 +0100
@@ -18,7 +18,9 @@
 #include <platform_paths.hrh>
 #include "../../../web_plat/browser_platform_api/inc/Browser_platform_variant.hrh"
 
+#ifdef BRDO_USE_GESTURE_HELPER
 #include "../rt_gesturehelper/group/bld.inf"
+#endif 
 
 PRJ_PLATFORMS
 DEFAULT
--- a/webengine/widgetengine/group/WidgetEngine.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/group/WidgetEngine.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -118,7 +118,11 @@
 START RESOURCE ../Src/WidgetMenu.rss
 HEADER
 TARGETPATH RESOURCE_FILES_DIR
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 END
 
 LIBRARY         apgrfx.lib
--- a/webengine/widgetengine/inc/Menu.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/inc/Menu.h	Fri Jul 03 15:54:40 2009 +0100
@@ -35,6 +35,7 @@
 
 // CLASS DECLARATION
 class MJSMenuCallbacks;
+class MJSObjectProtector;
 
 /**
 *  CMenu
@@ -49,10 +50,12 @@
 struct MenuPrivate
 {
     MenuPrivate(MJSMenuCallbacks* callbacks,
+				MJSObjectProtector* protector,
                 WidgetEventHandler* onShowCallback = NULL,
                 WidgetEventHandler* rightKeyCallback = NULL,
                 WidgetEventHandler* leftKeyCallback = NULL) : 
                     m_callbacks(callbacks),
+					m_protector(protector),
                     m_onShowCallback(onShowCallback),
                     m_rightKeyCallback(rightKeyCallback),
                     m_leftKeyCallback(leftKeyCallback)
@@ -65,6 +68,7 @@
                              delete m_leftKeyCallback;}
     
     MJSMenuCallbacks* m_callbacks;
+	MJSObjectProtector* m_protector;
     WidgetEventHandler* m_onShowCallback;
     WidgetEventHandler* m_rightKeyCallback;        
     WidgetEventHandler* m_leftKeyCallback;
@@ -74,7 +78,7 @@
     {
 
     public:
-        JSMenu(MJSMenuCallbacks* aMenuCallbacks);
+        JSMenu(MJSMenuCallbacks* aMenuCallbacks, MJSObjectProtector* aProtector);
         virtual ~JSMenu();
 
     //From JSObject
--- a/webengine/widgetengine/inc/MenuClient.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/inc/MenuClient.h	Fri Jul 03 15:54:40 2009 +0100
@@ -46,6 +46,7 @@
 
 // CLASS DECLARATION
 class CMenuItem;
+class MJSObjectProtector;
 
 namespace KJS {
     class JSMenu;
@@ -67,8 +68,8 @@
     virtual ~CMenuClient();
     
 public:
-    KJS::JSMenu* jsmenu();
-    KJS::JSMenuItemConstructor* jsmenuitem();
+    KJS::JSMenu* jsmenu(MJSObjectProtector*);
+    KJS::JSMenuItemConstructor* jsmenuitem(MJSObjectProtector*);
     
     void addOptionMenuItemsL( CEikMenuPane& aMenuPane,TInt aResourceId );     
     void menuShowed();
--- a/webengine/widgetengine/inc/MenuItem.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/inc/MenuItem.h	Fri Jul 03 15:54:40 2009 +0100
@@ -35,6 +35,7 @@
 
 // CLASS DECLARATION
 class MJSMenuItemCallbacks;
+class MJSObjectProtector;
 
 /**
 *  CMenuItem
@@ -46,17 +47,31 @@
 
 class WidgetEventHandler;
 
+struct MenuItemConstructorPrivate
+{
+	MenuItemConstructorPrivate(	MJSMenuItemCallbacks* callbacks, 
+								MJSObjectProtector* protector, 
+								int internalId) : m_callbacks(callbacks), m_protector(protector), m_internalId(internalId)
+	{
+	}
+
+	MJSMenuItemCallbacks*	m_callbacks;
+	MJSObjectProtector*		m_protector;
+    int						m_internalId;
+};
+
 class JSMenuItemConstructor : public JSObject 
 {
 
 public:
-    JSMenuItemConstructor(MJSMenuItemCallbacks* callbacks);
+    JSMenuItemConstructor(MJSMenuItemCallbacks* callbacks, MJSObjectProtector* protector);
     virtual bool implementsConstruct() const;    
     virtual JSObject* construct( ExecState *exec, const List &args );
 
+	virtual ~JSMenuItemConstructor();
+
 private:
-    MJSMenuItemCallbacks*  m_callbacks;
-    int m_internalId;
+    MenuItemConstructorPrivate*  d;
 
 };
 
@@ -64,13 +79,16 @@
 struct MenuItemPrivate
 {
     MenuItemPrivate(MJSMenuItemCallbacks* callbacks,
+					MJSObjectProtector* protector,
                     int cmdId, int internalId,
-                    WidgetEventHandler* selectCallback = NULL) : m_callbacks(callbacks),
+                    WidgetEventHandler* selectCallback = NULL) 
+					: m_callbacks(callbacks),
                     m_cmdId(cmdId),
                     m_internalId(internalId),
                     m_dimmed(false),
                     m_show(false),
-                    m_onSelectCallback(selectCallback)
+                    m_onSelectCallback(selectCallback),
+					m_protector(protector)
     {        
     }
 
@@ -78,6 +96,7 @@
     virtual ~MenuItemPrivate() { delete m_onSelectCallback; }
     
     MJSMenuItemCallbacks*   m_callbacks;
+    MJSObjectProtector*		m_protector;
     const int               m_cmdId;
     bool                    m_dimmed;
     bool                    m_show;
@@ -90,7 +109,8 @@
 class JSMenuItem : public JSObject
 {
 public:
-    JSMenuItem(ExecState* exec, MJSMenuItemCallbacks* callbacks,
+    JSMenuItem(ExecState* exec, MJSMenuItemCallbacks* callbacks, 
+				MJSObjectProtector* protector,
                 TDesC& text, int cmdId, int internalId,
                 WidgetEventHandler* selectCallback = NULL );
 
--- a/webengine/widgetengine/inc/Preferences.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/inc/Preferences.h	Fri Jul 03 15:54:40 2009 +0100
@@ -155,7 +155,7 @@
     /**
     * Get preference for a particular key
     */
-    TInt preferenceL( const TDesC& akey, TPtrC& avalue);
+    TInt preferenceL( const TDesC& akey, HBufC*& avalue);
 
     
     /**
--- a/webengine/widgetengine/inc/Widget.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/inc/Widget.h	Fri Jul 03 15:54:40 2009 +0100
@@ -36,6 +36,7 @@
 // CLASS DECLARATION
 
 class MJSWidgetCallbacks;
+class MJSObjectProtector;
 
 /**
 *  CWidget
@@ -54,12 +55,14 @@
                     WidgetEventHandler* showCallback,
                     WidgetEventHandler* hideCallback,
                     WidgetEventHandler* exitCallback,
-                    bool visibility) :
+                    bool visibility,
+					MJSObjectProtector* protector) :
                         m_callbacks(callbacks),
                         m_showCallback(showCallback),
                         m_hideCallback(hideCallback),
                         m_exitCallback(exitCallback),
                         m_visibility(visibility),
+						m_protector(protector),
                         m_wrt(0)
     {
     }
@@ -69,10 +72,11 @@
                                delete m_hideCallback;
                                delete m_showCallback; }
 
-    MJSWidgetCallbacks*   m_callbacks;
-    WidgetEventHandler* m_showCallback;
-    WidgetEventHandler* m_hideCallback;
-    WidgetEventHandler* m_exitCallback;
+    MJSWidgetCallbacks*		m_callbacks;
+    WidgetEventHandler*		m_showCallback;
+    WidgetEventHandler*		m_hideCallback;
+    WidgetEventHandler*		m_exitCallback;
+	MJSObjectProtector*		m_protector;
     bool m_visibility;
     JSWrt* m_wrt;
 
@@ -82,7 +86,7 @@
 {
 
 public:
-    JSWidget(MJSWidgetCallbacks* aWidgetCallbacks);
+    JSWidget(MJSWidgetCallbacks* aWidgetCallbacks, MJSObjectProtector* aProtector);
     virtual ~JSWidget();
 
 //From JSObject
@@ -107,6 +111,7 @@
         performTransition,
         setPreferenceForKey,
         setNavigationEnabled,
+        setNavigationType,
         setDisplayLandscape,
         setDisplayPortrait,
         isRotationSupported,
--- a/webengine/widgetengine/inc/Widget.lut.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/inc/Widget.lut.h	Fri Jul 03 15:54:40 2009 +0100
@@ -22,29 +22,32 @@
 namespace KJS {
 
 static const struct HashEntry WidgetTableEntries[] = {
-   { "performTransition", JSWidget::performTransition, DontDelete|Function, 0, &WidgetTableEntries[16] }/* 3947827008 */ ,
-   { "openApplication", JSWidget::openApplication, DontDelete|Function, 1, &WidgetTableEntries[17] }/* 78708705 */ ,
-   { "setDisplayPortrait", JSWidget::setDisplayPortrait, DontDelete|Function, 0, 0 }/* 4273345218 */ ,
-   { "wrt", JSWidget::wrt, DontDelete|ReadOnly, 0, 0 }/* 1862342003 */ ,
-   { "preferenceForKey", JSWidget::preferenceForKey, DontDelete|Function, 1, &WidgetTableEntries[20] }/* 2710796932 */ ,
+   { "setNavigationType", JSWidget::setNavigationType, DontDelete|Function, 1, 0 }/* 1921159715 */ ,
+   { "openURL", JSWidget::openURL, DontDelete|Function, 1, &WidgetTableEntries[17] }/* 120566279 */ ,
+   { "performTransition", JSWidget::performTransition, DontDelete|Function, 0, &WidgetTableEntries[21] }/* 3947827008 */ ,
+   { 0, 0, 0, 0, 0 },
+   { "onremove", JSWidget::onremove, DontDelete|ReadOnly, 0, 0 }/* 853904071 */ ,
+   { 0, 0, 0, 0, 0 },
+   { 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0 },
-   { "openURL", JSWidget::openURL, DontDelete|Function, 1, &WidgetTableEntries[18] }/* 120566279 */ ,
+   { "onshow", JSWidget::onshow, DontDelete|ReadOnly, 0, &WidgetTableEntries[19] }/* 2917788702 */ ,
+   { "identifier", JSWidget::identifier, DontDelete|ReadOnly, 0, &WidgetTableEntries[23] }/* 4053269040 */ ,
    { 0, 0, 0, 0, 0 },
-   { "setNavigationEnabled", JSWidget::setNavigationEnabled, DontDelete|Function, 1, 0 }/* 2136509817 */ ,
-   { "prepareForTransition", JSWidget::prepareForTransition, DontDelete|Function, 1, 0 }/* 3355888042 */ ,
-   { 0, 0, 0, 0, 0 },
-   { "setDisplayLandscape", JSWidget::setDisplayLandscape, DontDelete|Function, 0, 0 }/* 1431294652 */ ,
+   { "onhide", JSWidget::onhide, DontDelete|ReadOnly, 0, 0 }/* 236865857 */ ,
    { "setPreferenceForKey", JSWidget::setPreferenceForKey, DontDelete|Function, 2, 0 }/* 1304460605 */ ,
-   { "onshow", JSWidget::onshow, DontDelete|ReadOnly, 0, 0 }/* 2917788702 */ ,
+   { "openApplication", JSWidget::openApplication, DontDelete|Function, 1, &WidgetTableEntries[22] }/* 78708705 */ ,
    { 0, 0, 0, 0, 0 },
-   { "identifier", JSWidget::identifier, DontDelete|ReadOnly, 0, &WidgetTableEntries[19] }/* 4053269040 */ ,
-   { "onhide", JSWidget::onhide, DontDelete|ReadOnly, 0, 0 }/* 236865857 */ ,
-   { "onremove", JSWidget::onremove, DontDelete|ReadOnly, 0, 0 }/* 853904071 */ ,
+   { "prepareForTransition", JSWidget::prepareForTransition, DontDelete|Function, 1, 0 }/* 3355888042 */ ,
+   { "preferenceForKey", JSWidget::preferenceForKey, DontDelete|Function, 1, &WidgetTableEntries[18] }/* 2710796932 */ ,
+   { "setNavigationEnabled", JSWidget::setNavigationEnabled, DontDelete|Function, 1, &WidgetTableEntries[20] }/* 2136509817 */ ,
    { "onexit", JSWidget::onexit, DontDelete|ReadOnly, 0, 0 }/* 3671980544 */ ,
-   { "isrotationsupported", JSWidget::isRotationSupported, DontDelete|ReadOnly, 0, 0 }/* 3247979316 */ 
+   { "setDisplayLandscape", JSWidget::setDisplayLandscape, DontDelete|Function, 0, 0 }/* 1431294652 */ ,
+   { "setDisplayPortrait", JSWidget::setDisplayPortrait, DontDelete|Function, 0, 0 }/* 4273345218 */ ,
+   { "isrotationsupported", JSWidget::isRotationSupported, DontDelete|ReadOnly, 0, 0 }/* 3247979316 */ ,
+   { "wrt", JSWidget::wrt, DontDelete|ReadOnly, 0, 0 }/* 1862342003 */ 
 };
 
-const struct HashTable WidgetTable = { 2, 21, WidgetTableEntries, 16 };
+const struct HashTable WidgetTable = { 2, 24, WidgetTableEntries, 17 };
 
 } // namespace
--- a/webengine/widgetengine/inc/WidgetCallbacks.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/inc/WidgetCallbacks.h	Fri Jul 03 15:54:40 2009 +0100
@@ -29,12 +29,13 @@
     virtual void openApplication( const TUid& aAppUid, const TDesC& aParam ) = 0;
     virtual void openUrl( const TDesC& aUrl ) = 0;
     virtual TDesC& getWidgetBundleId() = 0;    
-    virtual TInt preferenceForKey( const TDesC& aKey, TPtrC& aValue ) = 0;
+    virtual TInt preferenceForKey( const TDesC& aKey, HBufC*& aValue ) = 0;
     virtual void prepareForTransition( const TDesC& aTransition ) = 0;
     virtual void performTransition() = 0;
     virtual void setPreferenceForKey( const TDesC& aKey, const TDesC& aValue ) = 0;
     virtual void removePreferenceForKey( const TDesC& aKey, const TDesC& aValue ) = 0;
     virtual void setNavigationEnabled( TBool aEnable ) = 0;
+    virtual void setNavigationType( const TDesC& aType ) = 0;
     virtual void setDisplayLandscape() = 0;
     virtual void setDisplayPortrait() = 0;
 };
--- a/webengine/widgetengine/inc/WidgetClient.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/inc/WidgetClient.h	Fri Jul 03 15:54:40 2009 +0100
@@ -35,6 +35,7 @@
 // FORWARD DECLARATION
 class WidgetRenderer;
 class WidgetPreferences;
+class MJSObjectProtector;
 
 namespace KJS {
     class JSWidget;
@@ -51,7 +52,7 @@
 {
 
 public:
-    static CWidgetClient* NewL(MWidgetCallback& aWidgetCallback, MWidgetEngineCallbacks& aWidgetEngineCallback, WidgetPreferences* preferences);
+    static CWidgetClient* NewL(MWidgetCallback& aWidgetCallback, MJSObjectProtector* aProtector, MWidgetEngineCallbacks& aWidgetEngineCallback, WidgetPreferences* preferences);
     virtual ~CWidgetClient();
 
 public:
@@ -69,9 +70,10 @@
     void openUrl( const TDesC& aUrl );
     TDesC& getWidgetBundleId();
     void setNavigationEnabled( TBool aEnable );
+    void setNavigationType( const TDesC& aType );
     void prepareForTransition( const TDesC& aTransition );
     void performTransition();        
-    TInt preferenceForKey( const TDesC& aKey, TPtrC& aValue );
+    TInt preferenceForKey( const TDesC& aKey, HBufC*& aValue );
     void setPreferenceForKey( const TDesC& aKey, const TDesC& aValue );
     void removePreferenceForKey( const TDesC& aKey, const TDesC& aValue );
     void setDisplayLandscape();
@@ -81,7 +83,7 @@
     void launchApplicationL( const TUid& aUid, const TDesC& aParam );
 
 protected:
-    void ConstructL(MWidgetEngineCallbacks& aWidgetEngineCallback);
+    void ConstructL(MWidgetEngineCallbacks& aWidgetEngineCallback, MJSObjectProtector* protector);
     CWidgetClient(MWidgetCallback& aWidgetCallback, MWidgetEngineCallbacks& aWidgetEngineCallback, WidgetPreferences* preferences);
 
 private:
--- a/webengine/widgetengine/inc/WidgetEngineBridge.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/inc/WidgetEngineBridge.h	Fri Jul 03 15:54:40 2009 +0100
@@ -26,6 +26,8 @@
 #include <eikenv.h>
 #include "BrCtlDefs.h"
 #include "WidgetEngineCallbacks.h"
+#include "WidgetJSObjectProtector.h"
+#include "wtf/HashSet.h"
 
 // CONSTANTS
 
@@ -41,6 +43,10 @@
 class MWidgetCallback;
 class WidgetPreferences;
 
+namespace KJS {
+	class JSValue;
+}
+
 // CLASS DECLARATION
 class MWidgetEngineBridge
 {
@@ -57,7 +63,8 @@
     virtual void AddOptionMenuItemsL(CEikMenuPane& aMenuPane, TInt aResourceId) = 0;
     virtual void MenuItemSelected( TInt aInternalId ) = 0;
     virtual void MenuShowed() = 0;
-    virtual void DrawTransition(CWindowGc& gc, CFbsBitmap* fbsBm) = 0;    
+    virtual void DrawTransition(CWindowGc& gc, CFbsBitmap* fbsBm) = 0;
+    virtual void Clear() = 0;
 
 };
 
@@ -68,7 +75,7 @@
 *  @since 3.1
 */
 
-NONSHARABLE_CLASS( WidgetEngineBridge ): public MWidgetEngineBridge
+NONSHARABLE_CLASS( WidgetEngineBridge ): public MWidgetEngineBridge, public MJSObjectProtector
 {
 public:
     WidgetEngineBridge();
@@ -87,12 +94,17 @@
     void AddOptionMenuItemsL(CEikMenuPane& aMenuPane, TInt aResourceId);
     void MenuItemSelected( TInt aInternalId );
     void MenuShowed();
-    void DrawTransition(CWindowGc& gc, CFbsBitmap* fbsBm);    
+    void DrawTransition(CWindowGc& gc, CFbsBitmap* fbsBm);
+    void Clear();
+    
+	void Protect(KJS::JSValue* obj);
+	void Unprotect(KJS::JSValue* obj);
 
 private:    
-    CMenuClient* m_menuclient;
-    CWidgetClient* m_widgetclient;                
-    WidgetPreferences* m_preferences;
+    CMenuClient*			m_menuclient;
+    CWidgetClient*			m_widgetclient;                
+    WidgetPreferences*		m_preferences;
+	WTF::HashSet<KJS::JSValue*>	m_protectedObjects;
  };
 
 
--- a/webengine/widgetengine/inc/WidgetEngineCallbacks.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/inc/WidgetEngineCallbacks.h	Fri Jul 03 15:54:40 2009 +0100
@@ -30,6 +30,7 @@
     virtual void setRightSoftKeyLabel( const TDesC& aText ) = 0;
     virtual void setLeftSoftKeyLabel( const TDesC& aText ) = 0;
     virtual void setTabbednavigation(bool aOn) = 0;
+    virtual void setNavigationType(const TDesC& aType) = 0;
 
 };
 
--- a/webengine/widgetengine/inc/WidgetEventHandler.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/inc/WidgetEventHandler.h	Fri Jul 03 15:54:40 2009 +0100
@@ -19,6 +19,8 @@
 
 #include <e32base.h>
 
+class MJSObjectProtector;
+
 namespace KJS {
 
 
@@ -29,7 +31,7 @@
 class WidgetEventHandler : public CBase
     {
     public:
-        WidgetEventHandler( JSValue* aValue, ExecState* aExecState );
+        WidgetEventHandler( JSValue* aValue, ExecState* aExecState, MJSObjectProtector* aProtector);
         virtual ~WidgetEventHandler();
 
     public:
@@ -40,6 +42,8 @@
         JSValue* iEventHandler;
         
         ExecState* iGlobalExecState;
+
+		MJSObjectProtector* iProtector;
         
         TBool iInUse;
         TBool iSelfDelete;
--- a/webengine/widgetengine/inc/WidgetFuncs.h	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/inc/WidgetFuncs.h	Fri Jul 03 15:54:40 2009 +0100
@@ -44,6 +44,7 @@
             performTransition,
             setPreferenceForKey,
             setNavigationMode,
+            setNavigationType,
             setDisplayLandscape,
             setDisplayPortrait
             };
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/widgetengine/inc/WidgetJSObjectProtector.h	Fri Jul 03 15:54:40 2009 +0100
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2004 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: 
+*
+*/
+
+#ifndef __WIDGETJSOBJECTPROTECTOR_H__
+#define __WIDGETJSOBJECTPROTECTOR_H__
+
+namespace KJS {
+	class JSValue;
+}
+
+class MJSObjectProtector
+{
+public:
+	virtual void Protect(KJS::JSValue*) = 0;
+	virtual void Unprotect(KJS::JSValue*) = 0;
+};
+
+#endif // !__WIDGETJSOBJECTPROTECTOR_H__
--- a/webengine/widgetengine/src/Menu.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/src/Menu.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -60,9 +60,9 @@
 //
 //
 // ----------------------------------------------------------------------------
-JSMenu::JSMenu(MJSMenuCallbacks* aMenuCallbacks)
+JSMenu::JSMenu(MJSMenuCallbacks* aMenuCallbacks, MJSObjectProtector* aProtector)
         : JSObject(), 
-        d(new MenuPrivate(aMenuCallbacks,0,0))
+        d(new MenuPrivate(aMenuCallbacks, aProtector, 0,0))
 {  
 }
 
@@ -114,7 +114,7 @@
     
     d->m_rightKeyCallback = NULL;
     if ( value && !value->isNull() ) {        
-        d->m_rightKeyCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec());
+        d->m_rightKeyCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector);
     }
 }
 
@@ -131,7 +131,7 @@
     
     d->m_leftKeyCallback = NULL;
     if ( value && !value->isNull() ) {        
-        d->m_leftKeyCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec());
+        d->m_leftKeyCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector);
     }
 }
 
@@ -244,7 +244,7 @@
             case OnShow: {
                 delete d->m_onShowCallback;
                 d->m_onShowCallback = NULL;
-                d->m_onShowCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec());
+                d->m_onShowCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector);
                 break;
             }
             default:
--- a/webengine/widgetengine/src/MenuClient.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/src/MenuClient.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -139,15 +139,6 @@
         }
 
     iCascadeArr.Close();
-    
-    if (m_jsmenu) {
-        KJS::Collector::unprotect(m_jsmenu);                
-    }
-    
-    if (m_jsmenuitemctr) {
-        KJS::Collector::unprotect(m_jsmenuitemctr);                            
-    }
-    
 }
 
 
@@ -168,11 +159,10 @@
 //
 //
 // ----------------------------------------------------------------------------
-KJS::JSMenu* CMenuClient::jsmenu() 
+KJS::JSMenu* CMenuClient::jsmenu(MJSObjectProtector* aProtector) 
 { 
     if (!m_jsmenu) {
-        m_jsmenu = new KJS::JSMenu(this);   
-        KJS::Collector::protect(m_jsmenu);        
+        m_jsmenu = new KJS::JSMenu(this, aProtector);
     }
     
     return m_jsmenu; 
@@ -185,11 +175,10 @@
 //
 //
 // ----------------------------------------------------------------------------
-KJS::JSMenuItemConstructor* CMenuClient::jsmenuitem() 
+KJS::JSMenuItemConstructor* CMenuClient::jsmenuitem(MJSObjectProtector* protector) 
 {
     if (!m_jsmenuitemctr){
-        m_jsmenuitemctr = new KJS::JSMenuItemConstructor(this);    
-        KJS::Collector::protect(m_jsmenuitemctr);                
+        m_jsmenuitemctr = new KJS::JSMenuItemConstructor(this, protector);
     }
 
     return m_jsmenuitemctr;    
--- a/webengine/widgetengine/src/MenuItem.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/src/MenuItem.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -24,6 +24,7 @@
 #include "MenuItem.h"
 #include "MenuItemFuncs.h"
 #include "MenuItemCallbacks.h"
+#include "WidgetJSObjectProtector.h"
 
 using namespace KJS;
 
@@ -33,13 +34,16 @@
 //
 //
 // ----------------------------------------------------------------------------
-JSMenuItemConstructor::JSMenuItemConstructor(MJSMenuItemCallbacks* callbacks)
-    : JSObject(), 
-    m_callbacks(callbacks),
-    m_internalId(0)
+JSMenuItemConstructor::JSMenuItemConstructor(MJSMenuItemCallbacks* callbacks, MJSObjectProtector* protector)
+    : JSObject(),
+	d(new MenuItemConstructorPrivate(callbacks, protector, 0))
 {
 }
 
+JSMenuItemConstructor::~JSMenuItemConstructor()
+{
+	delete d;
+}
 
 // ----------------------------------------------------------------------------
 // JSMenuItemConstructor::implementsConstruct
@@ -83,9 +87,9 @@
 
             TPtrC tptrc((const unsigned short*)(text.data()), textlen);
 
-            JSMenuItem* mi = new JSMenuItem(exec, m_callbacks, tptrc, cmdId, m_internalId );
-            KJS::Collector::protect(mi); 
-            m_callbacks->createOptionsMenuItem( tptrc, cmdId, m_internalId++, (void*) mi );
+            JSMenuItem* mi = new JSMenuItem(exec, d->m_callbacks, d->m_protector, tptrc, cmdId, d->m_internalId, 0);
+			
+            d->m_callbacks->createOptionsMenuItem( tptrc, cmdId, d->m_internalId++, (void*) mi );
            
             return static_cast<KJS::JSObject*>(mi);
         }
@@ -119,13 +123,15 @@
 JSMenuItem::JSMenuItem(  
     ExecState* exec,   
     MJSMenuItemCallbacks* callbacks,
+	MJSObjectProtector* protector,
     TDesC& text,
     int cmdId, 
     int internalId,
     WidgetEventHandler* onSelectCallback )
     : JSObject(exec->lexicalInterpreter()->builtinObjectPrototype()),      
-      d(new MenuItemPrivate(callbacks,cmdId,internalId,onSelectCallback))  
+      d(new MenuItemPrivate(callbacks, protector, cmdId, internalId, onSelectCallback))  
     {
+		d->m_protector->Protect(this);
     }
     
 // ----------------------------------------------------------------------------
@@ -199,7 +205,8 @@
 // ----------------------------------------------------------------------------
 void JSMenuItem::DeleteMenuItem()
 {
-    d->m_callbacks->deleteMenuItem( d->m_internalId );    
+    d->m_callbacks->deleteMenuItem( d->m_internalId );
+    d->m_protector->Unprotect(this);
 }
 
 // ----------------------------------------------------------------------------
@@ -242,7 +249,7 @@
             case OnSelect: {
                 delete d->m_onSelectCallback;
                 d->m_onSelectCallback = NULL;
-                d->m_onSelectCallback = new WidgetEventHandler ( value, exec->lexicalInterpreter()->globalExec() );
+                d->m_onSelectCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector);
                 d->m_callbacks->setMenuItemObserver( d->m_internalId, d->m_onSelectCallback );
                 break;
             }
--- a/webengine/widgetengine/src/Preferences.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/src/Preferences.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -115,7 +115,7 @@
 //
 //
 // ----------------------------------------------------------------------------
-TInt WidgetPreferences::preferenceL( const TDesC& akey, TPtrC& avalue)
+TInt WidgetPreferences::preferenceL( const TDesC& akey, HBufC*& avalue)
 {
 
     TInt rSuccess = KErrNotFound;
@@ -159,7 +159,7 @@
                         HBufC* v = HBufC::NewLC( len );
                         TPtr ptrvalue = v->Des();
                         readStream.ReadL( ptrvalue, len );    
-                        avalue.Set( *v );
+                        avalue = v; // ownership xfered
                         CleanupStack::Pop( v );
                         rSuccess = KErrNone;
                     }     
@@ -170,7 +170,7 @@
             }
         }        
         else if ( size >= 0 ) {
-            avalue.Set( pref->value() );
+            avalue = pref->value().AllocL();
             rSuccess = KErrNone;
         }
 
--- a/webengine/widgetengine/src/Widget.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/src/Widget.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -26,6 +26,7 @@
 #include "WidgetFuncs.h"
 #include "WidgetCallbacks.h"
 #include "WidgetEventHandler.h"
+#include "WidgetJSObjectProtector.h"
 #include "Wrt.h"
 
 // EXTERNAL DATA STRUCTURES
@@ -48,7 +49,7 @@
 
 // ============================= LOCAL FUNCTIONS ===============================
 /*
-@begin WidgetTable 16
+@begin WidgetTable 17
     openApplication JSWidget::openApplication DontDelete|Function 1
     openURL JSWidget::openURL DontDelete|Function 1
     preferenceForKey JSWidget::preferenceForKey DontDelete|Function 1
@@ -56,6 +57,7 @@
     performTransition JSWidget::performTransition DontDelete|Function 0
     setPreferenceForKey JSWidget::setPreferenceForKey DontDelete|Function 2
     setNavigationEnabled JSWidget::setNavigationEnabled DontDelete|Function 1
+    setNavigationType JSWidget::setNavigationType DontDelete|Function 1
     identifier JSWidget::identifier DontDelete|ReadOnly
     onhide JSWidget::onhide DontDelete|ReadOnly
     onremove JSWidget::onremove DontDelete|ReadOnly
@@ -76,9 +78,9 @@
 //
 //
 // ----------------------------------------------------------------------------
-JSWidget::JSWidget(MJSWidgetCallbacks* aWidgetCallbacks) :
+JSWidget::JSWidget(MJSWidgetCallbacks* aWidgetCallbacks, MJSObjectProtector* aProtector) :
                     JSObject(),
-                    d(new WidgetPrivate(aWidgetCallbacks,0,0,0,0))
+                    d(new WidgetPrivate(aWidgetCallbacks,0,0,0,0, aProtector))
 {
 }
 
@@ -165,6 +167,7 @@
         case performTransition:
         case setPreferenceForKey:
         case setNavigationEnabled:
+        case setNavigationType:
         case setDisplayLandscape:
         case setDisplayPortrait: {
             JSWidgetFunc *wf = new JSWidgetFunc(exec,token,d->m_callbacks);
@@ -211,13 +214,13 @@
             case onhide: {
                 delete d->m_hideCallback;
                 d->m_hideCallback = NULL;
-                d->m_hideCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec());
+                d->m_hideCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector);
                 break;
             }
             case onshow: {
                 delete d->m_showCallback;
                 d->m_showCallback = NULL;
-                d->m_showCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec());
+                d->m_showCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector);
                 // fire the onShow if the SetVisibilty was called before the onShowCallback was created
                 if (d->m_visibility) {
                     d->m_visibility = !d->m_visibility;
@@ -228,7 +231,7 @@
             case onexit: {
                 delete d->m_exitCallback;
                 d->m_exitCallback = NULL;
-                d->m_exitCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec());
+                d->m_exitCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector);
                 break;
             }
             default:
--- a/webengine/widgetengine/src/WidgetClient.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/src/WidgetClient.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -54,13 +54,15 @@
 //
 // ----------------------------------------------------------------------------
 //
-CWidgetClient* CWidgetClient::NewL(MWidgetCallback& aWidgetCallback, 
-                                  MWidgetEngineCallbacks& aWidgetEngineCallback, 
-                                  WidgetPreferences* preferences)
+CWidgetClient* CWidgetClient::NewL(	MWidgetCallback& aWidgetCallback,
+									MJSObjectProtector* protector, 
+									MWidgetEngineCallbacks& aWidgetEngineCallback, 
+									WidgetPreferences* preferences
+								  )
 {
     CWidgetClient* self = new ( ELeave ) CWidgetClient(aWidgetCallback, aWidgetEngineCallback, preferences);
     CleanupStack::PushL( self );
-    self->ConstructL(aWidgetEngineCallback);
+    self->ConstructL(aWidgetEngineCallback, protector);
     CleanupStack::Pop();
     return self;
 }
@@ -92,10 +94,6 @@
 //
 CWidgetClient::~CWidgetClient()
 {    
-    if (m_jswidget) {
-        KJS::Collector::unprotect(m_jswidget);        
-    }
-    
     delete m_renderer;
 }
 
@@ -107,11 +105,10 @@
 //
 // ----------------------------------------------------------------------------
 //
-void CWidgetClient::ConstructL(MWidgetEngineCallbacks& aWidgetEngineCallback)
+void CWidgetClient::ConstructL(MWidgetEngineCallbacks& aWidgetEngineCallback, MJSObjectProtector* protector)
 {    
-    m_jswidget = new KJS::JSWidget(this);     
+    m_jswidget = new KJS::JSWidget(this, protector);     
     m_renderer = new (ELeave) WidgetRenderer(aWidgetEngineCallback);    
-    KJS::Collector::protect(m_jswidget);
 }
 
 
@@ -280,6 +277,18 @@
 }
 
 // ----------------------------------------------------------------------------
+// CWidgetClient::setNavigationType
+//
+//
+//
+// ----------------------------------------------------------------------------
+//
+void CWidgetClient::setNavigationType( const TDesC& aType )
+{
+    m_widgetenginecallback->setNavigationType(aType);
+}
+
+// ----------------------------------------------------------------------------
 // CWidgetClient::prepareForTransition
 //
 //
@@ -310,7 +319,7 @@
 //
 // ----------------------------------------------------------------------------
 //
-TInt CWidgetClient::preferenceForKey( const TDesC& aKey, TPtrC& aValue )
+TInt CWidgetClient::preferenceForKey( const TDesC& aKey, HBufC*& aValue )
 {    
     TInt ret = KErrNotFound;
     TRAP_IGNORE( ret = m_preferences->preferenceL( aKey, aValue ) );
--- a/webengine/widgetengine/src/WidgetEngineBridge.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/src/WidgetEngineBridge.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -53,6 +53,7 @@
 // ============================= LOCAL FUNCTIONS ===============================
 
 // ============================ MEMBER FUNCTIONS ===============================
+using namespace KJS;
 
 // ----------------------------------------------------------------------------
 // CreateWidgetEngineBridge
@@ -83,10 +84,30 @@
 //
 // ----------------------------------------------------------------------------
 WidgetEngineBridge::~WidgetEngineBridge()
+{
+    Clear();
+    delete m_preferences;
+    m_preferences = NULL;
+}
+// ----------------------------------------------------------------------------
+// WidgetEngineBridge::Clear
+// 
+//
+//
+// ----------------------------------------------------------------------------
+void WidgetEngineBridge::Clear()
 {    
+	// unprotect objects
+	HashSet<JSValue*>::iterator end = m_protectedObjects.end();
+	for (HashSet<JSValue*>::iterator it = m_protectedObjects.begin(); it != end; ++it) {
+		Collector::unprotect(*it);
+	}
+	m_protectedObjects.clear();
+
     delete m_menuclient;
+    m_menuclient = NULL;
     delete m_widgetclient;    
-    delete m_preferences;
+    m_widgetclient = NULL;
 }
 
 // ----------------------------------------------------------------------------
@@ -103,7 +124,7 @@
         if (!m_preferences)
             m_preferences = new (ELeave) WidgetPreferences();
         
-        m_widgetclient = CWidgetClient::NewL(aWidgetCallback,aWidgetEngineCallback,m_preferences);            
+        m_widgetclient = CWidgetClient::NewL(aWidgetCallback, this, aWidgetEngineCallback,m_preferences);            
     }    
     return m_widgetclient->jswidget();  
 }
@@ -120,7 +141,7 @@
     if (!m_menuclient){
         m_menuclient = CMenuClient::NewL(aWidgetCallback,aWidgetEngineCallback);      
     }    
-    return m_menuclient->jsmenu();  
+    return m_menuclient->jsmenu(this);  
 }
 
 // ----------------------------------------------------------------------------
@@ -135,7 +156,7 @@
     if (!m_menuclient){
         m_menuclient = CMenuClient::NewL(aWidgetCallback,aWidgetEngineCallback);      
     }    
-    return m_menuclient->jsmenuitem();      
+    return m_menuclient->jsmenuitem(this);      
 }
 
 // ----------------------------------------------------------------------------
@@ -285,6 +306,18 @@
 }
 
 
+void WidgetEngineBridge::Protect(JSValue* obj)
+{
+	m_protectedObjects.add(obj);
+	Collector::protect(obj);
+}
+
+void WidgetEngineBridge::Unprotect(JSValue* obj)
+{
+	m_protectedObjects.remove(obj);
+	Collector::unprotect(obj);
+}
+
 //END OF FILE
 
 
--- a/webengine/widgetengine/src/WidgetEventHandler.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/src/WidgetEventHandler.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -17,6 +17,7 @@
 #include "WidgetEventHandler.h"
 #include "config.h"
 #include <kjs/object.h>
+#include "WidgetJSObjectProtector.h"
 
 // ============================ MEMBER FUNCTIONS ===============================
 using namespace KJS;
@@ -28,10 +29,13 @@
 //
 //
 // ----------------------------------------------------------------------------
-WidgetEventHandler::WidgetEventHandler( JSValue* aValue, ExecState* aExecState ) : iGlobalExecState (aExecState)
+WidgetEventHandler::WidgetEventHandler( JSValue* aValue, ExecState* aExecState, MJSObjectProtector* aProtector) : iGlobalExecState (aExecState), iProtector(aProtector)
 {
     iEventHandler = aValue;
-    Collector::protect(iEventHandler);    
+    if(iProtector)
+        {
+	    iProtector->Protect(iEventHandler);
+	    }
 }
 
 
@@ -43,7 +47,10 @@
 // ----------------------------------------------------------------------------
 WidgetEventHandler::~WidgetEventHandler()
 {
-    Collector::unprotect(iEventHandler);
+    if(iProtector) 
+        {
+	    iProtector->Unprotect(iEventHandler);
+	    }
 }
 
 // ----------------------------------------------------------------------------
--- a/webengine/widgetengine/src/WidgetFuncs.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetengine/src/WidgetFuncs.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -100,7 +100,7 @@
                 args[0]->toString(exec).size() >= 0 ) {
                 
                 TPtrC tstrKey(KNullDesC);
-                TPtrC tstrValue(KNullDesC);
+                HBufC* tstrValue(NULL);
                 TInt retCode = KErrNone;
 
                 if ( args[0]->type() == NumberType ) {
@@ -115,7 +115,13 @@
 
 
                 if (retCode == KErrNone) {
-                    return jsString(UString((const UChar *)tstrValue.Ptr(),tstrValue.Length()));
+                    UString u((const UChar *)tstrValue->Ptr(),tstrValue->Length());
+                    JSCell* rtn=jsString(u);
+                    delete tstrValue;
+                    return rtn;
+                }
+                else {
+                    delete tstrValue;
                 }
 
         }
@@ -175,6 +181,13 @@
             }
         break;
         }
+        case setNavigationType: {
+            if (  args[0]->type() == StringType && args[0]->toString(exec).size() > 0 ) {
+                TPtrC type((const TUint16 *)args[0]->toString(exec).data(), args[0]->toString(exec).size());
+                m_callbacks->setNavigationType(type);
+            }
+        break;
+        }
         case setDisplayLandscape: {
             m_callbacks->setDisplayLandscape();
         break;
--- a/webengine/widgetregistry/Data/Widget_lproj.xml	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetregistry/Data/Widget_lproj.xml	Fri Jul 03 15:54:40 2009 +0100
@@ -10,85 +10,13 @@
 <LangDir>de</LangDir>
 
 <LangID>4</LangID>
-<LangDir>sp</LangDir>
-
-<LangID>14</LangID>
-<LangDir>tr</LangDir>
-
-<LangID>9</LangID>
-<LangDir>fi</LangDir>
-
-<LangID>6</LangID>
-<LangDir>sv</LangDir>
-
-<LangID>16</LangID>
-<LangDir>ru</LangDir>
-
-<LangID>37</LangID>
-<LangDir>ar</LangDir>
-
-<LangID>57</LangID>
-<LangDir>he</LangDir>
+<LangDir>es</LangDir>
 
 <LangID>5</LangID>
 <LangDir>it</LangDir>
 
-<LangID>27</LangID>
-<LangDir>pl</LangDir>
-
-<LangID>17</LangID>
-<LangDir>hu</LangDir>
-
-<LangID>82</LangID>
-<LangDir>es</LangDir>
-
-<LangID>18</LangID>
-<LangDir>nl</LangDir>
-
-<LangID>76</LangID>
-<LangDir>pt</LangDir>
-
-<LangID>51</LangID>
-<LangDir>frm</LangDir>
-
-<LangID>67</LangID>
-<LangDir>lv</LangDir>
-
-<LangID>54</LangID>
-<LangDir>el</LangDir>
-
-<LangID>49</LangID>
-<LangDir>et</LangDir>
-
-<LangID>68</LangID>
-<LangDir>lt</LangDir>
-
-<LangID>78</LangID>
-<LangDir>ro</LangDir>
-
-<LangID>93</LangID>
-<LangDir>uk</LangDir>
-
-<LangID>42</LangID>
-<LangDir>bg</LangDir>
-
-<LangID>45</LangID>
-<LangDir>hr</LangDir>
-
-<LangID>79</LangID>
-<LangDir>sr</LangDir>
-
-<LangID>59</LangID>
-<LangDir>id</LangDir>
-
-<LangID>70</LangID>
-<LangDir>ms</LangDir>
-
-<LangID>39</LangID>
-<LangDir>tl</LangDir>
-
-<LangID>15</LangID>
-<LangDir>is</LangDir>
+<LangID>6</LangID>
+<LangDir>sv</LangDir>
 
 <LangID>7</LangID>
 <LangDir>da</LangDir>
@@ -96,11 +24,38 @@
 <LangID>8</LangID>
 <LangDir>no</LangDir>
 
-<LangID>58</LangID>
-<LangDir>hi</LangDir>
+<LangID>9</LangID>
+<LangDir>fi</LangDir>
+
+<LangID>10</LangID>
+<LangDir>en-US</LangDir>
+
+<LangID>11</LangID>
+<LangDir>fr-CH</LangDir>
+
+<LangID>12</LangID>
+<LangDir>ge-CH</LangDir>
+
+<LangID>13</LangID>
+<LangDir>pt</LangDir>
 
-<LangID>94</LangID>
-<LangDir>ur</LangDir>
+<LangID>14</LangID>
+<LangDir>tr</LangDir>
+
+<LangID>15</LangID>
+<LangDir>is</LangDir>
+
+<LangID>16</LangID>
+<LangDir>ru</LangDir>
+
+<LangID>17</LangID>
+<LangDir>hu</LangDir>
+
+<LangID>18</LangID>
+<LangDir>nl</LangDir>
+
+<LangID>20</LangID>
+<LangDir>en-AU</LangDir>
 
 <LangID>25</LangID>
 <LangDir>cs</LangDir>
@@ -108,17 +63,20 @@
 <LangID>26</LangID>
 <LangDir>sk</LangDir>
 
+<LangID>27</LangID>
+<LangDir>pl</LangDir>
+
 <LangID>28</LangID>
 <LangDir>sl</LangDir>
 
 <LangID>29</LangID>
-<LangDir>zh_Hant</LangDir>
+<LangDir>zh-Hant</LangDir>
 
 <LangID>30</LangID>
-<LangDir>zh_Hant</LangDir>
+<LangDir>zh-Hant</LangDir>
 
 <LangID>31</LangID>
-<LangDir>zh_Hans</LangDir>
+<LangDir>zh-Hans</LangDir>
 
 <LangID>32</LangID>
 <LangDir>ja</LangDir>
@@ -126,19 +84,114 @@
 <LangID>33</LangID>
 <LangDir>th</LangDir>
 
-<LangID>96</LangID>
-<LangDir>vi</LangDir>
+<LangID>37</LangID>
+<LangDir>ar</LangDir>
 
-<LangID>326</LangID>
-<LangDir>ml</LangDir>
+<LangID>39</LangID>
+<LangDir>tl</LangDir>
+
+<LangID>42</LangID>
+<LangDir>bg</LangDir>
 
 <LangID>44</LangID>
 <LangDir>ca</LangDir>
 
-<LangID>401</LangID>
+<LangID>45</LangID>
+<LangDir>hr</LangDir>
+
+<LangID>46</LangID>
+<LangDir>en-CA</LangDir>
+
+<LangID>49</LangID>
+<LangDir>et</LangDir>
+
+<LangID>50</LangID>
+<LangDir>fa</LangDir>
+
+<LangID>51</LangID>
+<LangDir>fr-CA</LangDir>
+
+<LangID>54</LangID>
+<LangDir>el</LangDir>
+
+<LangID>57</LangID>
+<LangDir>he</LangDir>
+
+<LangID>58</LangID>
+<LangDir>hi</LangDir>
+
+<LangID>59</LangID>
+<LangDir>id</LangDir>
+
+<LangID>65</LangID>
+<LangDir>ko</LangDir>
+
+<LangID>67</LangID>
+<LangDir>lv</LangDir>
+
+<LangID>68</LangID>
+<LangDir>lt</LangDir>
+
+<LangID>70</LangID>
+<LangDir>ms</LangDir>
+
+<LangID>71</LangID>
+<LangDir>ml</LangDir>
+
+<LangID>76</LangID>
+<LangDir>pt-BR</LangDir>
+
+<LangID>78</LangID>
+<LangDir>ro</LangDir>
+
+<LangID>79</LangID>
+<LangDir>sr</LangDir>
+
+<LangID>82</LangID>
+<LangDir>es</LangDir>
+
+<LangID>83</LangID>
+<LangDir>es-419</LangDir>
+
+<LangID>93</LangID>
+<LangDir>uk</LangDir>
+
+<LangID>94</LangID>
+<LangDir>ur</LangDir>
+
+<LangID>96</LangID>
+<LangDir>vi</LangDir>
+
+<LangID>102</LangID>
 <LangDir>eu</LangDir>
 
-<LangID>402</LangID>
+<LangID>103</LangID>
 <LangDir>gl</LangDir>
 
+<LangID>129</LangID>
+<LangDir>en-APAC</LangDir>
+
+<LangID>157</LangID>
+<LangDir>en-TW</LangDir>
+
+<LangID>158</LangID>
+<LangDir>en-CN</LangDir>
+
+<LangID>159</LangID>
+<LangDir>en-HK</LangDir>
+
+<LangID>160</LangID>
+<LangDir>en-JP</LangDir>
+
+<LangID>161</LangID>
+<LangDir>en-TH</LangDir>
+
+<LangID>230</LangID>
+<LangDir>en-IN</LangDir>
+
+<LangID>326</LangID>
+<LangDir>ms-APAC</LangDir>
+
+<LangID>327</LangID>
+<LangDir>id-APAC</LangDir>
 </LPROJ>
\ No newline at end of file
--- a/webengine/widgetregistry/Server/src/WidgetRegistry.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/widgetregistry/Server/src/WidgetRegistry.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -29,6 +29,7 @@
 #include <libc\stdlib.h>
 #include <libxml2_parser.h>
 #include <libxml2_tree.h>
+#include <xmlengxestd.h>
 #include "WidgetMMCHandler.h"
 #include "UidAllocator.h"
 #if defined( BRDO_WRT_SECURITY_MGR_FF )
@@ -1664,7 +1665,7 @@
 
     xmlFreeDoc(doc);
     xmlCleanupParser();
-    xmlCleanupGlobalData();
+    XmlEngineCleanup();
     CleanupStack::PopAndDestroy( buf );
     }
 
--- a/webengine/wmlengine/group/fbox/fbox.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/wmlengine/group/fbox/fbox.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -29,7 +29,11 @@
 
 SOURCEPATH      ../../src/fbox/src/
 
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 
 #include  "../webkitcommon.mmpi"
 
--- a/webengine/wmlengine/group/wml1x/wml1x.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/wmlengine/group/wml1x/wml1x.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -28,7 +28,11 @@
 MACRO NOKIA_MOBILE_BROWSER
 #define NOKIA_MOBILE_BROWSER 1
 
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 
 SOURCEPATH      ../../src/wml1x/src/
 
--- a/webengine/wmlengine/group/wmlengine/wmlengine.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/wmlengine/group/wmlengine/wmlengine.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -37,7 +37,11 @@
 deffile ../EABI/WmlEngine.def
 #endif
 
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 
 MACRO NOKIA_MOBILE_BROWSER
 #define NOKIA_MOBILE_BROWSER
--- a/widgets/widgetapp/data/WidgetUi.rss	Fri May 08 08:25:06 2009 +0300
+++ b/widgets/widgetapp/data/WidgetUi.rss	Fri Jul 03 15:54:40 2009 +0100
@@ -65,7 +65,7 @@
           {
           CBA_BUTTON {id=EAknSoftkeyOptions; txt=text_softkey_option;},
           CBA_BUTTON {id=EAknSoftkeyExit; txt=text_softkey_exit;},
-          CBA_BUTTON {id=ECmdMsk; txt=text_softkey_empty;}
+          CBA_BUTTON {id=EAknSoftkeyForwardKeyEvent; txt=text_softkey_empty;}
           };
     }
 
--- a/widgets/widgetapp/group/WidgetUi.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/widgets/widgetapp/group/WidgetUi.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -39,7 +39,11 @@
 START RESOURCE ../Data/WidgetUi.rss
 HEADER
 TARGETPATH APP_RESOURCE_DIR
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 END
 
 // SRC INFO
--- a/widgets/widgetapp/src/WidgetUiObserver.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/widgets/widgetapp/src/WidgetUiObserver.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -190,8 +190,12 @@
         TBrCtlDefs::TBrCtlElementType elementtype =
                       iWindow->WindowManager().ActiveWindow()->Engine()->FocusedElementType();
         // Check if focused element type is editing type
-        if ((elementtype != TBrCtlDefs::EElementActivatedInputBox) &&
-                       (elementtype != TBrCtlDefs::EElementActivatedObjectBox))
+        if ((elementtype == TBrCtlDefs::EElementActivatedInputBox) ||
+                       (elementtype == TBrCtlDefs::EElementActivatedObjectBox))
+            {
+            iWindow->WindowManager().View()->ShowActivatedObject( ETrue );
+            }
+        else 
             {
             iWindow->WindowManager().View()->ShowActivatedObject( EFalse );
             }        
@@ -459,7 +463,6 @@
     TDataRecognitionResult dataType;
     RApaLsSession apaSession;
     TInt ret;
-    HBufC* contentTypeString = KNullDesC().AllocL();
 
     CleanupClosePushL(apaSession);
     User::LeaveIfError( apaSession.Connect() );
@@ -469,20 +472,19 @@
     apaSession.Close();
     CleanupStack::PopAndDestroy(1, &apaSession);
     
+    TPtrC8 mimeTypePtr = dataType.iDataType.Des8();
+    TInt len = mimeTypePtr.Length() + 1;
+    HBufC* contentTypeString = HBufC::NewLC( len );;
+
     if ( ret == KErrNone &&
         ( dataType.iConfidence == CApaDataRecognizerType::ECertain ) ||
         ( dataType.iConfidence == CApaDataRecognizerType::EProbable ) )
         {
         // If the file type was found, try to match it to a known file type
-        TPtrC8 mimeTypePtr = dataType.iDataType.Des8();
-        TInt len = mimeTypePtr.Length() + 1;
-        contentTypeString = HBufC::NewL( len );
         contentTypeString->Des().Copy( mimeTypePtr );
         contentTypeString->Des().ZeroTerminate();
         }
 
-    CleanupStack::PushL( contentTypeString );
-
     return contentTypeString;
     }
 
--- a/widgets/widgetapp/src/WidgetUiWindow.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/widgets/widgetapp/src/WidgetUiWindow.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -503,7 +503,7 @@
 
         if (aCurrent)
             {
-            //UpdateCba();
+            UpdateCba();
             Engine()->MakeVisible( iWidgetLoaded );
             // redraw incase the orientation changed while in the background
             Relayout();
@@ -671,6 +671,7 @@
     RWidgetRegistryClientSession clientSession = iWindowManager.WidgetUIClientSession();
     CWidgetPropertyValue* propValue = clientSession.GetWidgetPropertyValueL( iUid, EMiniViewEnable );
     TInt hasMiniview = *propValue;
+    delete propValue;
     return hasMiniview;
     }
 
@@ -686,12 +687,15 @@
     RWidgetRegistryClientSession& widgetRegistry
                 = iWindowManager.WidgetUIClientSession();
 
-    TInt networkAccess = *(widgetRegistry.GetWidgetPropertyValueL(
-                                        iUid, EAllowNetworkAccess ));
-    TInt fullAccess = *(widgetRegistry.GetWidgetPropertyValueL(
-                                        iUid, EAllowFullAccess ));
-    TInt blanketPermission = *(widgetRegistry.GetWidgetPropertyValueL(
-                                        iUid, EBlanketPermGranted ));
+    CWidgetPropertyValue* propValue = widgetRegistry.GetWidgetPropertyValueL( iUid, EAllowNetworkAccess );
+    TInt networkAccess = *propValue;
+    delete propValue;
+    propValue = widgetRegistry.GetWidgetPropertyValueL( iUid, EAllowFullAccess );
+    TInt fullAccess = *propValue;
+    delete propValue;
+    propValue = widgetRegistry.GetWidgetPropertyValueL( iUid, EBlanketPermGranted );
+    TInt blanketPermission = *propValue;
+    delete propValue;
     TInt inMiniView = widgetRegistry.IsWidgetInMiniView( iUid);
     if ( !( networkAccess || fullAccess )  ||
         ( inMiniView && !blanketPermission  ))
--- a/widgets/widgetinstaller/group/WidgetInstallerUI.mmp	Fri May 08 08:25:06 2009 +0300
+++ b/widgets/widgetinstaller/group/WidgetInstallerUI.mmp	Fri Jul 03 15:54:40 2009 +0100
@@ -40,7 +40,11 @@
 DEPENDS swinstcommonui.rsg
 HEADER
 TARGETPATH      Resource
-LANGUAGE_IDS
+#ifdef __S60_32__
+LANG sc 
+#else
+LANGUAGE_IDS 
+#endif
 END
 
 // Sources