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