# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1279212800 -10800 # Node ID 30342f40acbf8804fc2dbfa9f26a47d47ba4e7e8 # Parent 800203832575380a820886956eb1dbb9fb7d0804 Revision: 201026 Kit: 2010127 diff -r 800203832575 -r 30342f40acbf browserutilities/browsertelservice/src/BrowserTelService.cpp --- a/browserutilities/browsertelservice/src/BrowserTelService.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/browserutilities/browsertelservice/src/BrowserTelService.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -1076,18 +1076,12 @@ { TELSERVICE_ENTERFN( "FindAndRipVoipParametersL()" ) - HBufC* buf = NULL; TInt offset = aNumber.Locate( TChar( '@' ) ); if( offset > 0 ) // Separator is not allowed to be a first char { - __ASSERT_DEBUG( offset <= aNumber.Length(), User::Leave( KErrGeneral ) ); - buf = aNumber.Mid( offset ).AllocL(); + __ASSERT_DEBUG( offset <= aNumber.Length(), User::Leave( KErrGeneral ) ); aNumber.SetLength( offset ); } - else - { - buf = HBufC::NewL( 0 ); - } TELSERVICE_LEAVEFN( "FindAndRipVoipParametersL()" ) } @@ -1600,7 +1594,7 @@ loopCounter = 1; } - for(loopCounter; loopCounter= '0' && *ptr <= '9') || *ptr == ',') { diff -r 800203832575 -r 30342f40acbf browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrClntSubSession.cpp --- a/browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrClntSubSession.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrClntSubSession.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -2737,7 +2737,7 @@ return KErrGeneral; } iDlExtension->SetBoolAttribute( aAttribute, aValue); - return; + return KErrNone; } if (aAttribute == EDlAttrProgressive) diff -r 800203832575 -r 30342f40acbf browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadMgrUiDownloadsList.cpp --- a/browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadMgrUiDownloadsList.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadMgrUiDownloadsList.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -2236,12 +2236,9 @@ { __ASSERT_DEBUG( 0Count(), Panic( EUiLibPanOptionsShownWhileNoDownloads ) ); - TBool isCreated = state == EHttpDlCreated; // The fix of PHAN-6KVK5R makes this line no longer necessary // TBool isInProgress = state == EHttpDlInprogress; - TBool isPaused = state == EHttpDlPaused; TBool isCompleted = state == EHttpDlMultipleMOCompleted; - TBool isFailed = state == EHttpDlMultipleMOFailed; TBool isDrmDownload = EFalse; TBool isDrmRightsOnPhone = EFalse; TBool isPreviewRights = EFalse; @@ -2281,7 +2278,10 @@ canProgHandled = docHandler->CanHandleProgressivelyL( dataType, pdPlayerUid ); CleanupStack::PopAndDestroy( docHandler ); // docHandler -#ifndef BRDO_SINGLE_CLICK_ENABLED_FF +#ifndef BRDO_SINGLE_CLICK_ENABLED_FF + TBool isCreated = state == EHttpDlCreated; + TBool isPaused = state == EHttpDlPaused; + TBool isFailed = state == EHttpDlMultipleMOFailed; //delete open file manager when download is not complete if( !(isCompleted)) { diff -r 800203832575 -r 30342f40acbf browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadMgrUiUserInteractions.cpp --- a/browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadMgrUiUserInteractions.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadMgrUiUserInteractions.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -354,7 +354,6 @@ THttpDownloadState state; THttpProgressState progState; TBool isHiddenDel = EFalse; - TBool isCodDownload( EFalse ); TBool isProg (EFalse); // check if progressive download, if yes, will NOT delete from the list, otherwise will const CDownloadArray& downloadsDel = iRegistryModel.DownloadMgr().CurrentDownloads(); diff -r 800203832575 -r 30342f40acbf browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadsListArray.cpp --- a/browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadsListArray.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadsListArray.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -66,9 +66,9 @@ iDownloadedSize( KErrNotFound ), iIconIndex( KErrNotFound ), iPausable( EFalse ), - iExternalMemoryStatus( KDriveAttLocal ), iProgressState( KErrNotFound ), - iNumMediaObjects( KErrNotFound ) + iNumMediaObjects( KErrNotFound ), + iExternalMemoryStatus( KDriveAttLocal ) { } diff -r 800203832575 -r 30342f40acbf browserutilities/downloadmgr/downloadmgruilib/Src/CDownloadsStylusPopupMenu.cpp --- a/browserutilities/downloadmgr/downloadmgruilib/Src/CDownloadsStylusPopupMenu.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/browserutilities/downloadmgr/downloadmgruilib/Src/CDownloadsStylusPopupMenu.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -29,8 +29,6 @@ { ilongtapRunning = EFalse; iLongTapDetector = CAknLongTapDetector::NewL(this); - TResourceReader readerFolder; - TResourceReader readerItem; } // ----------------------------------------------------------------------------- @@ -97,7 +95,7 @@ iStylusPopupMenu->SetItemDimmed(EDownloadsListCmdCancel,ETrue); iStylusPopupMenu->SetItemDimmed(EDownloadsListCmdResume,ETrue); } - if (state == EHttpDlPaused) + if (state == EHttpDlPaused || state == EHttpDlMultipleMOFailed) { isAiwcall = ETrue; iStylusPopupMenu->SetItemDimmed(EAiwCmdContact,ETrue); diff -r 800203832575 -r 30342f40acbf browserutilities/favouritesengine/ClientServer/src/FavouritesItem.cpp --- a/browserutilities/favouritesengine/ClientServer/src/FavouritesItem.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/browserutilities/favouritesengine/ClientServer/src/FavouritesItem.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -298,6 +298,7 @@ EXPORT_C TBool CFavouritesItem::SetHidden(TBool aHidden) const { iImpl->SetHidden( aHidden ); + return ETrue; } // --------------------------------------------------------- diff -r 800203832575 -r 30342f40acbf browserutilities/feedsengine/FeedsServer/Server/inc/UpdateManager.h --- a/browserutilities/feedsengine/FeedsServer/Server/inc/UpdateManager.h Mon Jun 21 16:54:17 2010 +0300 +++ b/browserutilities/feedsengine/FeedsServer/Server/inc/UpdateManager.h Thu Jul 15 19:53:20 2010 +0300 @@ -122,7 +122,7 @@ * @since 7.1 * @return Integer. */ - TInt StartL(); + void StartL(); /** * This method Stop the updation; diff -r 800203832575 -r 30342f40acbf browserutilities/feedsengine/FeedsServer/Server/src/UpdateManager.cpp --- a/browserutilities/feedsengine/FeedsServer/Server/src/UpdateManager.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/browserutilities/feedsengine/FeedsServer/Server/src/UpdateManager.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -152,7 +152,7 @@ // // Handles the Update of feed // ----------------------------------------------------------------------------- -TInt CUpdateManager::StartL() +void CUpdateManager::StartL() { iCurrentFeedCount = 0; @@ -362,7 +362,7 @@ // ----------------------------------------------------------------------------- // CRoamingInfo::CRoamingInfo(CUpdateManager *aUpdateManager) - :CActive(CActive::EPriorityStandard),iUpdateManager(aUpdateManager),iNetworkRegistrationV1Pckg(iNetworkRegistrationV1) + :CActive(CActive::EPriorityStandard),iNetworkRegistrationV1Pckg(iNetworkRegistrationV1),iUpdateManager(aUpdateManager) { } diff -r 800203832575 -r 30342f40acbf browserutilities/webutils/conf/webutils.confml Binary file browserutilities/webutils/conf/webutils.confml has changed diff -r 800203832575 -r 30342f40acbf codhandler/codeng/inc/CodEngBase.h --- a/codhandler/codeng/inc/CodEngBase.h Mon Jun 21 16:54:17 2010 +0300 +++ b/codhandler/codeng/inc/CodEngBase.h Thu Jul 15 19:53:20 2010 +0300 @@ -588,6 +588,11 @@ * @return Saver object for this data type. Ownership not passed. */ CCodSaver* CreateSaverL( const TDesC8& aType ); + + /* Fota Saver Setting + * + */ + void FotaSaverSettingL(); private: // implementation diff -r 800203832575 -r 30342f40acbf codhandler/codeng/src/CodEngBase.cpp --- a/codhandler/codeng/src/CodEngBase.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/codhandler/codeng/src/CodEngBase.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -1702,9 +1702,6 @@ __ASSERT_DEBUG( iData->ActiveDownload(),CodPanic( ECodInternal )); // 1. Data type checking. TInt typeErr( KErrNone ); -#ifdef __SYNCML_DM_FOTA - TBool fota( EFalse ); -#endif /*def __SYNCML_DM_FOTA */ for ( TInt i = 0; i < (*iData)[iData->ActiveDownload()]->Types().MdcaCount() && !iContentTypeCheck; i++ ) { const TDataType& type( (*iData)[iData->ActiveDownload()]->Types().MdcaPoint( i ) ); @@ -1745,7 +1742,6 @@ { // Accept FOTA download. Special storage (not saved to FS). CLOG(( ECodEng, 4, _L8(" <%S> FOTA OK"), &mime )); - fota = ETrue; } #endif /*def __SYNCML_DM_FOTA */ else @@ -1879,10 +1875,7 @@ CodUtil::GetIntParam( pkgId, EGenericParamFotaPkgId, *iParams ); } iSaver = CFotaSaver::NewL( aType, pkgId ); - iSaver->SetObserver( iObserver ); - iSaver->SetParams( iParams ); - iSaver->SetMaxSize( iData->Size() ); - iSaver->OpenStoreL(); // TODO unneeded method, put to construction. + FotaSaverSettingL(); } #endif /*def __SYNCML_DM_FOTA */ else @@ -1891,9 +1884,15 @@ //__ASSERT_DEBUG( iFsUsed, CodPanic( ECodInternal ) ); TBool contentTypeMisMatch ( ETrue ); + TBool fotadownload(EFalse); for ( TInt i = 0; i < (*iData)[iData->ActiveDownload()]->Types().MdcaCount(); i++ ) { const TDataType& type( (*iData)[iData->ActiveDownload()]->Types().MdcaPoint( i ) ); + if( type.Des8().Find(KFotaPackageDataType) !=KErrNotFound ) + { + fotadownload = ETrue; + break; + } if((aType.Find (type.Des8()) != KErrNotFound) || iDocHandler->CanOpenL(TDataType(aType)) || ( (type.Des8().Find(KOma1DrmMessageContentType)!= KErrNotFound) && (aType.Find(KOma1DcfContentType)!= KErrNotFound ) )) { @@ -1901,7 +1900,18 @@ break; } } - if(contentTypeMisMatch) + if (fotadownload) + { + TInt pkgId( KCodDefaultFotaPkgId ); + if ( iParams ) + { + CodUtil::GetIntParam( pkgId, EGenericParamFotaPkgId, *iParams ); + } + iSaver = CFotaSaver::NewL(KFotaPackageDataType(), pkgId ); + FotaSaverSettingL(); + return iSaver; + } + if(contentTypeMisMatch) { User::Leave(KErrCodAttributeMismatch); } @@ -1957,6 +1967,18 @@ } // --------------------------------------------------------- +// CCodEngBase::FotaSaverSettingL +// --------------------------------------------------------- +// +void CCodEngBase::FotaSaverSettingL() + { + iSaver->SetObserver( iObserver ); + iSaver->SetParams( iParams ); + iSaver->SetMaxSize( iData->Size() ); + iSaver->OpenStoreL(); // TODO unneeded method, put to construction. + } + +// --------------------------------------------------------- // CCodEngBase::SetPathsL // --------------------------------------------------------- // diff -r 800203832575 -r 30342f40acbf codhandler/codeng/src/HttpLoader.cpp --- a/codhandler/codeng/src/HttpLoader.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/codhandler/codeng/src/HttpLoader.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -48,7 +48,6 @@ #include "CodData.h" _LIT8( KDRMOldContentType, "x-drm-old-content-type"); // old content type header to be added -_LIT8( KAcceptRangeHeader, "bytes"); _LIT8( KAcceptRangeHeaderNone, "none"); // ================= CONSTANTS ======================= diff -r 800203832575 -r 30342f40acbf web_plat/browser_platform_api/inc/Browser_platform_variant.hrh --- a/web_plat/browser_platform_api/inc/Browser_platform_variant.hrh Mon Jun 21 16:54:17 2010 +0300 +++ b/web_plat/browser_platform_api/inc/Browser_platform_variant.hrh Thu Jul 15 19:53:20 2010 +0300 @@ -184,6 +184,9 @@ //To enable performance improvements done in TB9.2 #define BRDO_PERF_IMPROVEMENTS_ENABLED_FF +//To enable modified cache-control = max-age feature +#define BRDO_CACHE_MAX_AGE + /* * =================== * S60 3.23 @@ -276,6 +279,10 @@ #define MW_LAYER_CONNECT_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(connect) #endif + +//To disable modified cache-control = max-age +#undef BRDO_CACHE_MAX_AGE + /* * =================== * S60 5.0 S60_50 @@ -360,6 +367,11 @@ // Defines Symbian HTTP stack parameters specific for symbian 9.3 (e.g. EHttpEnableOptimalPipelining, EHttpOptimalPipelining) //Flag need to be removed after this fix is supplied to Symbian 9.4 #undef BRDO_HTTP_STACK_93 + + +//To disable modified cache-control = max-age +#undef BRDO_CACHE_MAX_AGE + /* * =================== * S60 5.0 PF5250+ @@ -418,6 +430,9 @@ // Defines Symbian HTTP stack parameters specific for symbian 9.3 (e.g. EHttpEnableOptimalPipelining, EHttpOptimalPipelining) //Flag need to be removed after this fix is supplied to Symbian 9.4 #undef BRDO_HTTP_STACK_93 + +//To enable modified cache-control = max-age +#define BRDO_CACHE_MAX_AGE /* * =================== * S60 5.1 @@ -464,6 +479,10 @@ // Defines Symbian HTTP stack parameters specific for symbian 9.3 (e.g. EHttpEnableOptimalPipelining, EHttpOptimalPipelining) //Flag need to be removed after this fix is supplied to Symbian 9.4 #undef BRDO_HTTP_STACK_93 + +//To disable modified cache-control = max-age +#undef BRDO_CACHE_MAX_AGE + /* * =================== * S60 5.2 @@ -528,4 +547,8 @@ #define BRDO_BROWSER_UPDATE_UI_FF 0 #endif // KFeatureIdIAUpdate + +//To enable modified cache-control = max-age +#define BRDO_CACHE_MAX_AGE + #endif // BROWSER_PLATFORM_VARIANT_HRH diff -r 800203832575 -r 30342f40acbf web_plat/download_path_plugin_api/inc/DownloadPathHandler.inl --- a/web_plat/download_path_plugin_api/inc/DownloadPathHandler.inl Mon Jun 21 16:54:17 2010 +0300 +++ b/web_plat/download_path_plugin_api/inc/DownloadPathHandler.inl Thu Jul 15 19:53:20 2010 +0300 @@ -2,7 +2,7 @@ File : DownloadPathHandler.inl Part of : web_plat / download_path_plugin_api Description : Music path plugin interface inline implementation file - Version : %version: 1 % << Don't touch! Updated by Synergy at check-out. + Version : %version: 2 % << Don't touch! Updated by Synergy at check-out. Copyright (c) 2010 Nokia Corporation. This material, including documentation and any related diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/MemoryManager/BWINS/MEMMANU.DEF --- a/webengine/osswebengine/MemoryManager/BWINS/MEMMANU.DEF Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/MemoryManager/BWINS/MEMMANU.DEF Thu Jul 15 19:53:20 2010 +0300 @@ -30,4 +30,5 @@ ?InitFastAllocator@MemoryManager@@SAXXZ @ 29 NONAME ; void MemoryManager::InitFastAllocator(void) ?InitOOMDialog@MemoryManager@@SAXXZ @ 30 NONAME ; void MemoryManager::InitOOMDialog(void) ?ResetOOMDialogDisplayed@MemoryManager@@SAXXZ @ 31 NONAME ; void MemoryManager::ResetOOMDialogDisplayed(void) + ?DumpMemoryLogs@MemoryManager@@SAXXZ @ 32 NONAME ; void MemoryManager::DumpMemoryLogs(void) diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/MemoryManager/EABI/MemManU.DEF --- a/webengine/osswebengine/MemoryManager/EABI/MemManU.DEF Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/MemoryManager/EABI/MemManU.DEF Thu Jul 15 19:53:20 2010 +0300 @@ -42,4 +42,5 @@ _ZN13MemoryManager19CreateFastAllocatorEv @ 41 NONAME _ZN13MemoryManager13InitOOMDialogEv @ 42 NONAME _ZN13MemoryManager23ResetOOMDialogDisplayedEv @ 43 NONAME + _ZN13MemoryManager14DumpMemoryLogsEv @ 44 NONAME diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/MemoryManager/Group/MemMan.mmp --- a/webengine/osswebengine/MemoryManager/Group/MemMan.mmp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/MemoryManager/Group/MemMan.mmp Thu Jul 15 19:53:20 2010 +0300 @@ -26,8 +26,10 @@ OPTION ARMCC -O3 -Otime UID 0x1000008D 0x10281B6D +// Define these macros for OOM logs //MACRO OOM_LOGGING -//MACRO DL_CHUNK_MEM_DEBUG +//#define OOM_LOGGING 1 + MACRO USE_FAST_MALLOC MACRO NOKIA_CHANGES @@ -61,4 +63,7 @@ LIBRARY aknnotify.lib LIBRARY commonengine.lib -DEBUGLIBRARY flogger.lib +#ifdef OOM_LOGGING +LIBRARY flogger.lib +LIBRARY efsrv.lib +#endif diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/MemoryManager/Inc/MemoryLogger.h --- a/webengine/osswebengine/MemoryManager/Inc/MemoryLogger.h Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/MemoryManager/Inc/MemoryLogger.h Thu Jul 15 19:53:20 2010 +0300 @@ -36,6 +36,14 @@ _LIT8( KTab, "\t" ); // MACROS +#define MEM_LOG_CREATE() \ + RFs fs; \ + _LIT( KFilePath, "C:\\Logs\\Webcore\\"); \ + TFileName path (KFilePath); \ + if(fs.Connect() == KErrNone) { \ + fs.MkDirAll( path ); \ + fs.Close(); \ + } #define MEM_LOG(a) { _LIT8(temp, a); RFileLogger::Write(KMEMLogDir, KMEMLogFile, EFileLoggingModeAppend, temp); } #define MEM_LOGF FPrint @@ -127,6 +135,7 @@ loggers[ i ]->_accum += _peek; } #else // OOM_LOGGING +#define MEM_LOG_CREATE() #define MEM_LOG(a) #define MEM_LOGF #define C_LOG(a) @@ -134,4 +143,4 @@ #endif #endif -// END OF FILE \ No newline at end of file +// END OF FILE diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/MemoryManager/Inc/MemoryManager.h --- a/webengine/osswebengine/MemoryManager/Inc/MemoryManager.h Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/MemoryManager/Inc/MemoryManager.h Thu Jul 15 19:53:20 2010 +0300 @@ -306,7 +306,7 @@ * @param * @return */ - IMPORT_C static void MemoryManager::CreateFastAllocator(); + IMPORT_C static void CreateFastAllocator(); /** * Initialize MemoryManager library. Special case if CreateFastAllocator is @@ -316,7 +316,7 @@ * @param * @return */ - IMPORT_C static void MemoryManager::InitFastAllocator(); + IMPORT_C static void InitFastAllocator(); /** * initialize the OOM handler in the memorypool @@ -337,7 +337,15 @@ * @return */ IMPORT_C static void ResetOOMDialogDisplayed(); - + + /** + * Dumps the memory logs i.e. heap allocated, heap free, system free, heap size etc to log + * file c:\logs\webcore\Memory.log + * @since 9.2 + * @param + * @return + */ + IMPORT_C static void DumpMemoryLogs(); }; #endif// !_MEMORYMANAGER_H_ diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/MemoryManager/Inc/MemoryPool.h --- a/webengine/osswebengine/MemoryManager/Inc/MemoryPool.h Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/MemoryManager/Inc/MemoryPool.h Thu Jul 15 19:53:20 2010 +0300 @@ -364,7 +364,7 @@ void InitOOMDialog(); void ResetOOMDialog(); #ifdef OOM_LOGGING - void DumpHeapLogs(); + void DumpHeapLogs(TInt aFailSize); #endif private: void InitLocal(); diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/MemoryManager/Inc/StopScheduler.h --- a/webengine/osswebengine/MemoryManager/Inc/StopScheduler.h Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/MemoryManager/Inc/StopScheduler.h Thu Jul 15 19:53:20 2010 +0300 @@ -23,6 +23,9 @@ #include // CONSTANTS +static const TUint KGoodMemoryThreshold = ( 4*1024*1024 ); // keep checking memory levels +static const TUint KLowMemoryThreshold = ( 2*1024*1024 ); // should stop activities +static const TUint KStopThreshold = ( 1024*1024 ); // unsafe limit // DATA TYPES @@ -91,5 +94,4 @@ RTimer iCheckTimer; TInt iNextStop; }; - -#endif \ No newline at end of file +#endif diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/MemoryManager/Inc/SymbianDlHeap.h --- a/webengine/osswebengine/MemoryManager/Inc/SymbianDlHeap.h Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/MemoryManager/Inc/SymbianDlHeap.h Thu Jul 15 19:53:20 2010 +0300 @@ -255,6 +255,10 @@ void dump_large_chunk(mstate m, tchunkptr t); size_t iUnmappedChunkSize; #endif + + // Indicates if allocator is running under low memory. + // It is set(TRUE) only when acquiring new pages from system. + TInt isLowSystemMemory; private: /* Dubug checks for chunk page support*/ #ifdef DL_CHUNK_MEM_DEBUG diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/MemoryManager/Src/MemoryManager.cpp --- a/webengine/osswebengine/MemoryManager/Src/MemoryManager.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/MemoryManager/Src/MemoryManager.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -54,13 +54,13 @@ EXPORT_C void MemoryManager::CreateFastAllocator() { // create the right memory pool - MEM_LOGF(_L8("MemoryManager::CreateFastAllocator - s_pool=%x"), s_pool); + MEM_LOG_CREATE(); #ifdef __NEW_ALLOCATOR__ CMemoryPool *pool = new CNewSymbianHeapPool(); pool->Create(); RSymbianDlAllocatorWrapper* allocator = new RSymbianDlAllocatorWrapper((CNewSymbianHeapPool*)pool); + User::SwitchAllocator(allocator); MEM_LOGF(_L8("MemoryManager::CreateFastAllocator - new pool=%x, allocator=%x"), pool, allocator); - User::SwitchAllocator(allocator); #endif } @@ -86,7 +86,7 @@ EXPORT_C RAllocator* MemoryManager::SwitchToFastAllocator() { // create the right memory pool - //__ASSERT_DEBUG( s_pool == 0, User::Panic( KMemManPanicDes, 0 ) ); + __ASSERT_DEBUG( s_pool == 0, User::Panic( KMemManPanicDes, 0 ) ); MEM_LOGF(_L8("MemoryManager::SwitchToFastAllocator - s_pool=%x"), s_pool); #ifdef __NEW_ALLOCATOR__ s_pool = new CNewSymbianHeapPool(); @@ -143,7 +143,6 @@ //----------------------------------------------------------------------------- EXPORT_C void MemoryManager::AddCollector( MMemoryCollector* aCollector ) { - MEM_LOGF(_L8("MemoryManager::AddCollector - s_pool=%x"), s_pool); Pool()->AddCollector( aCollector ); } @@ -160,7 +159,6 @@ //----------------------------------------------------------------------------- EXPORT_C void MemoryManager::AddStopper( MOOMStopper* aStopper ) { - MEM_LOGF(_L8("MemoryManager::AddStopper - s_pool=%x"), s_pool); Pool()->AddStopper( aStopper ); } @@ -244,3 +242,11 @@ return Pool()->MemorySize( aPtr ); } + +EXPORT_C void MemoryManager::DumpMemoryLogs() + { +#if defined(OOM_LOGGING) && defined (__NEW_ALLOCATOR__) + CNewSymbianHeapPool *hPool = (CNewSymbianHeapPool *)Pool(); + hPool->DumpHeapLogs(0); +#endif + } diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/MemoryManager/Src/MemoryPool.cpp --- a/webengine/osswebengine/MemoryManager/Src/MemoryPool.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/MemoryManager/Src/MemoryPool.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -32,6 +32,7 @@ #include #include #include +#include "MemoryLogger.h" // CONSTANTS @@ -132,6 +133,7 @@ //----------------------------------------------------------------------------- void CMemoryPool::CollectMemory(TUint aSize) { + MEM_LOG("CMemoryPool::CollectMemory - run"); if( iIsCollecting ) return; iIsCollecting = ETrue; @@ -139,11 +141,9 @@ { iCollectors[i]->Collect(aSize); } - - User::CompressAllHeaps(); iIsCollecting = EFalse; - if (iStopScheduler) + if (iStopScheduler && !iIsStopping ) iStopScheduler->Start( CStopScheduler::ECheckMemory, aSize ); } @@ -467,11 +467,19 @@ //----------------------------------------------------------------------------- // CNewSymbianHeapPool::FreeMemory //----------------------------------------------------------------------------- -TUint CNewSymbianHeapPool::FreeMemory(TFreeMem& /*aFree*/ ) +TUint CNewSymbianHeapPool::FreeMemory(TFreeMem& aFree ) { // TODO: implement free_memory - return KMaxTUint; -// return free_memory( aFree.iPool, aFree.iHeap, aFree.iHal ); + aFree.iPool = 0; + aFree.iHeap = 0; + + TInt freeRAM; + if(HAL::Get(HALData::EMemoryRAMFree, freeRAM) == KErrNone) + aFree.iHal = freeRAM; + else + aFree.iHal = 0; + + return KMaxTUint; // not fully implemented } //----------------------------------------------------------------------------- @@ -480,8 +488,16 @@ TAny* CNewSymbianHeapPool::DoAlloc( TUint aSize ) { TAny *p = iAlloc->Alloc( aSize ); - if (!p) + if(iAlloc->isLowSystemMemory && p) // use this a pre OOM indicator + { + iStopScheduler->Start( CStopScheduler::ECheckMemory, 0 ); + iAlloc->isLowSystemMemory = 0; // reset so that we don't check before next request for RAM + } + + if (!p) { ShowOOMDialog(); + MEM_LOG("CNewSymbianHeapPool::DoAlloc - failed"); + } return p; } @@ -494,7 +510,12 @@ iMemStatus &= ~ERescueOOM; TAny* p = iAlloc->ReAlloc( aPtr, aSize ); - + if(iAlloc->isLowSystemMemory && p) // use this a pre OOM indicator + { + iStopScheduler->Start( CStopScheduler::ECheckMemory, 0 ); + iAlloc->isLowSystemMemory = 0; // reset so that we don't check before next request for RAM + } + // check memory manager status if( !p || iMemStatus & ERescueOOM ) { @@ -510,6 +531,11 @@ NotifyAndStop(); } +#ifdef OOM_LOGGING + if(!p) + MEM_LOG("CNewSymbianHeapPool::ReAllocate - failed"); +#endif + return p; } @@ -585,6 +611,11 @@ { iMemStatus |= ECheckOOM; NotifyAndStop(); + +#ifdef OOM_LOGGING + MEM_LOG("CNewSymbianHeapPool::PreCheck - failed !!"); + DumpHeapLogs(aTotalSize); +#endif return EFalse; } @@ -711,6 +742,8 @@ void CNewSymbianHeapPool::ShowOOMDialog() { + MEM_LOG("CNewSymbianHeapPool::ShowOOMDialog - called"); + // Don't show it if we did once already if (iOOMDisplayed) return; @@ -739,9 +772,9 @@ } #ifdef OOM_LOGGING -void CNewSymbianHeapPool::DumpHeapLogs() +void CNewSymbianHeapPool::DumpHeapLogs(TInt aFailSize) { - iAlloc->dump_heap_logs(0); + iAlloc->dump_heap_logs(aFailSize); iAlloc->dump_dl_free_chunks(); } #endif diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/MemoryManager/Src/StopScheduler.cpp --- a/webengine/osswebengine/MemoryManager/Src/StopScheduler.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/MemoryManager/Src/StopScheduler.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -18,10 +18,10 @@ #include "StopScheduler.h" #include "MemoryPool.h" #include "fast_malloc.h" +#include "MemoryLogger.h" +#include // MEMBER FUNCTIONS -static const TUint KLessRAM = ( 2*1024*1024 ); -static const TUint KMinimumRAM = (1024 * 1024); static const TTimeIntervalMicroSeconds32 KMemoryCheckIntervalSlow = 1000000; // 1 second static const TTimeIntervalMicroSeconds32 KMemoryCheckIntervalFast = 500000; // 0.5 second @@ -81,26 +81,33 @@ } else if( iState == ECheckMemory ) { - TFreeMem freeMem; - TInt total = iMemoryPool.FreeMemory( freeMem ); - - // see if free memory is enough to restore all collectors - if( freeMem.iHal >= KLessRAM ) + + TInt systemFreeRAM; + if(HAL::Get(HALData::EMemoryRAMFree, systemFreeRAM) != KErrNone) + return; + + // case 1: Good memory levels - no worry + if( systemFreeRAM > KGoodMemoryThreshold ) // Above 4MB { - iMemoryPool.RestoreCollectors( EOOM_PriorityLow ); + iMemoryPool.RestoreCollectors( EOOM_PriorityLow ); // restore all collectors iState = EIdle; iNextStop = EAllStop; // recover the rescue buffer, if it is already released. iMemoryPool.RestoreRescueBuffer(); + return; } - else if( freeMem.iHal >= KMinimumRAM/2 ) + + // case 2: Going low - keep checking + if( systemFreeRAM > KLowMemoryThreshold ) // Between 4MB to 2MB { - iMemoryPool.RestoreCollectors( EOOM_PriorityMiddle ); CheckMemoryDefered( KMemoryCheckIntervalSlow ); iNextStop = EAllStop; + return; } - else if( freeMem.iHal >= KMinimumRAM/4 ) + + // case 3: Below normal levels - stop low priority activites + if( systemFreeRAM > KStopThreshold ) // Between 2MB to 1MB { if( iNextStop & ENormalStop ) { @@ -108,15 +115,15 @@ iNextStop &= ~ENormalStop; } CheckMemoryDefered( KMemoryCheckIntervalFast ); - } - else + } + else // case 4: Really low - stop in emergency (all activites), below 1MB { if( iNextStop & EEmergencyStop ) { StopLoading( EOOM_PriorityHigh ); iNextStop &= ~EEmergencyStop; } - CheckMemoryDefered( KMemoryCheckIntervalFast ); + CheckMemoryDefered( KMemoryCheckIntervalSlow ); // need to restore colectors later } } } @@ -134,6 +141,7 @@ //----------------------------------------------------------------------------- void CStopScheduler::StopLoading( TOOMPriority aPriority ) { + MEM_LOG("CStopScheduler::StopLoading - run"); // stop operations for( TInt i=0; iPriority() == aPriority ) stopper->Stop(); } + iMemoryPool.CollectMemory(2*KGoodMemoryThreshold); // try to collect memory iMemoryPool.SetStopping( EFalse ); } diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/MemoryManager/Src/SymbianDLAllocatorWrapper.cpp --- a/webengine/osswebengine/MemoryManager/Src/SymbianDLAllocatorWrapper.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/MemoryManager/Src/SymbianDLAllocatorWrapper.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -32,7 +32,7 @@ RSymbianDlAllocatorWrapper::~RSymbianDlAllocatorWrapper() { #ifdef OOM_LOGGING - iPool->DumpHeapLogs(); + iPool->DumpHeapLogs(0); #endif } diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/MemoryManager/Src/fast_malloc.cpp --- a/webengine/osswebengine/MemoryManager/Src/fast_malloc.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/MemoryManager/Src/fast_malloc.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -3677,7 +3677,7 @@ return chunk2mem(v); } } - CORRUPTION_ERROR_ACTION(m); +// CORRUPTION_ERROR_ACTION(m); } return 0; } @@ -3716,9 +3716,8 @@ return chunk2mem(v); } } - - CORRUPTION_ERROR_ACTION(m); - return 0; + //CORRUPTION_ERROR_ACTION(m); + //return 0; } /* --------------------------- realloc support --------------------------- */ diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/MemoryManager/Src/heap.cpp --- a/webengine/osswebengine/MemoryManager/Src/heap.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/MemoryManager/Src/heap.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -17,6 +17,8 @@ */ #include "common.h" +#include "StopScheduler.h" +#include #ifdef TRACE_CHUNK_USAGE void TraceChunkUsage(TInt aChunkHandle, TUint8* aBase, TInt aChunkSize) @@ -263,20 +265,22 @@ } iPageSize = 0; iFlags = aSingleThread ? (ESingleThreaded|EFixedSize) : EFixedSize; + isLowSystemMemory = 0; Init(0, 0, 0); } UEXPORT_C RSymbianDLHeap::RSymbianDLHeap(TInt aChunkHandle, TInt aOffset, TInt aMinLength, TInt aMaxLength, TInt aGrowBy, TInt aAlign, TBool aSingleThread) - : iMinLength(aMinLength), iMaxLength(aMaxLength), iOffset(aOffset), iChunkHandle(aChunkHandle), iNestingLevel(0), iAllocCount(0), - iAlign(aAlign),iFailType(ENone), iTestData(NULL), iChunkSize(aMinLength) + : iMinLength(aMinLength), iMaxLength(aMaxLength), iOffset(aOffset), iChunkHandle(aChunkHandle), + iAlign(aAlign), iNestingLevel(0), iAllocCount(0), iFailType(ENone), iTestData(NULL), iChunkSize(aMinLength) { // TODO: Locked the page size to 4 KB - change this to pick up from the OS GET_PAGE_SIZE(iPageSize); __ASSERT_ALWAYS(aOffset >=0, User::Panic(KDLHeapPanicCategory, ETHeapNewBadOffset)); iGrowBy = _ALIGN_UP(aGrowBy, iPageSize); iFlags = aSingleThread ? ESingleThreaded : 0; + isLowSystemMemory = 0; // Initialise // if the heap is created with aMinLength==aMaxLength then it cannot allocate slab or page memory @@ -657,7 +661,7 @@ return chunk2mem(v); } } - CORRUPTION_ERROR_ACTION(m); + //CORRUPTION_ERROR_ACTION(m); } return 0; } @@ -703,8 +707,8 @@ return chunk2mem(v); } } - CORRUPTION_ERROR_ACTION(m); - return 0; + //CORRUPTION_ERROR_ACTION(m); + //return 0; } inline void RSymbianDLHeap::init_top(mstate m, mchunkptr p, size_t psize) @@ -795,7 +799,7 @@ return newmem; } } - return 0; + //return 0; } /* ----------------------------- statistics ------------------------------ */ mallinfo RSymbianDLHeap::internal_mallinfo(mstate m) { @@ -808,7 +812,7 @@ size_t mfree = m->topsize + TOP_FOOT_SIZE; size_t sum = mfree; msegmentptr s = &m->seg; - TInt tmp = (TUint8*)m->top - (TUint8*)s->base; + // TInt tmp = (TUint8*)m->top - (TUint8*)s->base; while (s != 0) { mchunkptr q = align_as_chunk(s->base); chunkCnt++; @@ -840,13 +844,11 @@ void RSymbianDLHeap::internal_malloc_stats(mstate m) { if (!PREACTION(m)) { - size_t maxfp = 0; size_t fp = 0; size_t used = 0; check_malloc_state(m); if (is_initialized(m)) { msegmentptr s = &m->seg; - maxfp = m->max_footprint; fp = m->footprint; used = fp - (m->topsize + TOP_FOOT_SIZE); @@ -1738,7 +1740,7 @@ return mem; } - return 0; + //return 0; } void RSymbianDLHeap::dlfree(void* mem) { @@ -1827,9 +1829,9 @@ else { size_t nsize = chunksize(next); - int next_chunk_unmapped = 0; + //int next_chunk_unmapped = 0; if( page_not_in_memory(next, nsize) ) { - next_chunk_unmapped = 1; + // next_chunk_unmapped = 1; unmapped_pages += ((tchunkptr)next)->npages; } @@ -2298,9 +2300,24 @@ // otherwise commit the pages specified // { -ASSERT(p == floor(p, pagesize)); -ASSERT(sz == ceiling(sz, pagesize)); -ASSERT(sz > 0); + // Check for min threshold in system RAM to be left free + TInt sysFreeRAM = 0; + if(HAL::Get(HALData::EMemoryRAMFree, sysFreeRAM) == KErrNone) + { + if(sysFreeRAM < KStopThreshold) // 1MB + return 0; + + // check system memory level + if(sysFreeRAM < KGoodMemoryThreshold) + isLowSystemMemory = 1; + else + isLowSystemMemory = 0; + } + + + ASSERT(p == floor(p, pagesize)); + ASSERT(sz == ceiling(sz, pagesize)); + ASSERT(sz > 0); if (iChunkSize + sz > iMaxLength) return 0; diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebCore/html/HTMLTokenizer.cpp --- a/webengine/osswebengine/WebCore/html/HTMLTokenizer.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebCore/html/HTMLTokenizer.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -1425,7 +1425,7 @@ if (m_parserStopped) return false; #if PLATFORM(SYMBIAN) - OOM_PRE_CHECK((src.length() + str.length()) * 16, 0, "HTMLTokenizer::write") + OOM_PRE_CHECK((src.length() + str.length()) * 4, 0, "HTMLTokenizer::write") #endif SegmentedString source(str); if (m_executingScript) diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebCore/loader/Cache.cpp --- a/webengine/osswebengine/WebCore/loader/Cache.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebCore/loader/Cache.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -38,7 +38,7 @@ namespace WebCore { -static const int cDefaultCacheCapacity = 8192 * 1024; +static const int cDefaultCacheCapacity = 4*1024*1024; // 4MB static const double cMinDelayBeforeLiveDecodedPrune = 1; // Seconds. static const float cTargetPrunePercentage = .95f; // Percentage of capacity toward which we prune, to avoid immediately pruning again. diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebCore/loader/DocumentLoader.cpp --- a/webengine/osswebengine/WebCore/loader/DocumentLoader.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebCore/loader/DocumentLoader.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -357,7 +357,7 @@ if (FrameLoader* frameLoader = DocumentLoader::frameLoader()) #if PLATFORM(SYMBIAN) { - unsigned int needMemory = length * 16; + unsigned int needMemory = length * 4; if(needMemory >= 1024*1024) { OOM_PRE_CHECK(needMemory, 0, "DocumentLoader::commitLoad"); #endif diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebCore/loader/FrameLoader.cpp --- a/webengine/osswebengine/WebCore/loader/FrameLoader.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebCore/loader/FrameLoader.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -1518,23 +1518,16 @@ RenderObject* renderer; IntRect rect; if (!anchorNode) + { renderer = m_frame->document()->renderer(); // top of document + rect = m_frame->document()->getRect(); + } else { renderer = anchorNode->renderer(); rect = anchorNode->getRect(); } if (renderer) - { - if(!anchorNode) - { - renderer->enclosingLayer()->scrollRectToVisible(rect, RenderLayer::gAlignToEdgeIfNeeded, RenderLayer::gAlignToEdgeIfNeeded); - } - else - { renderer->enclosingLayer()->scrollRectToVisible(rect, RenderLayer::gAlignToEdgeIfNeeded, RenderLayer::gAlignTopAlways); - } - - } return true; } diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebCore/page/FrameView.cpp --- a/webengine/osswebengine/WebCore/page/FrameView.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebCore/page/FrameView.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -298,7 +298,7 @@ void FrameView::layout(bool allowSubtree) { #if PLATFORM(SYMBIAN) - OOM_PRE_CHECK(1024*1024*2, 0, "FrameView::layout") + OOM_PRE_CHECK(1024*1024, 0, "FrameView::layout") #endif if (d->midLayout) return; diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebCore/platform/network/symbian/HttpRequestHeaderManager.cpp --- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpRequestHeaderManager.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpRequestHeaderManager.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -41,6 +41,8 @@ _LIT8( KOnlyIfCached, "only-if-cached" ); _LIT8( KQHalfValue, ";q=0.5" ); _LIT8( KQWholeValue, ";q=1.0" ); +_LIT8( KAccept, "Accept" ); +_LIT ( AcceptHeader, "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,image/png,*/*;q=0.5" ); const TUint KDefBufSize = 512; const TInt KLangStrLen = 10; const TUint KCharsetUidDef = KCharacterSetIdentifierIso88591; @@ -543,7 +545,51 @@ strValueBuf->Des().Copy(strValuePtr); RStringF strValue = m_StringPool.OpenFStringL( strValueBuf->Des() ); CleanupClosePushL(strValue ); + + HBufC8* headerBuf = NULL; + // Check for Accept Header + if ((strNameBuf->Des().Compare(KAccept)) == 0) + { + THTTPHdrVal headerVal; + // Store the Accept Header value from aHeaders in headerVal + aHeaders.GetField(strName, 0, headerVal); + headerBuf = HBufC8::NewLC( headerVal.StrF().DesC().Length() ); + // Copy accept header value from headerVal + headerBuf->Des().Copy(headerVal.StrF().DesC()); + TPtrC httpAccept(AcceptHeader); + TInt httpAcceptLen(httpAccept.Length()); + if (httpAcceptLen) + { + // Find the Hardcoded accept header value in the header value received from aRequest + TInt httpAcceptPos = strValuePtr.Find(httpAccept); + TBool deleted(EFalse); + if(httpAcceptPos != KErrNotFound) + { + // Delete the Accept header from the header Value of aRequest to avoid duplication + strValueBuf->Des().Delete( httpAcceptPos, httpAcceptLen); + deleted =ETrue; + } + //Incase the aRequest header value is different from the hardcoded accept header value + //Compare the aRequest accept header value with accept header value of headerVal + // + if((deleted && strValueBuf->Length()) || (strValueBuf->Length() && strValueBuf->Compare(headerVal.StrF().DesC()) != 0)) + { + CleanupStack::Pop(headerBuf); + //Reallocate the buffer size based on strValueBuf value + //and append content of strValueBuf to headerBuf + headerBuf = headerBuf->ReAllocL( headerVal.StrF().DesC().Length() + strValueBuf->Length() + 1); + CleanupStack::PushL(headerBuf); + headerBuf->Des().Append(KCommaSeperator); + headerBuf->Des().Append(strValueBuf->Des()); + + } + // Store the full accept header value to strValue + strValue = m_StringPool.OpenFStringL( headerBuf->Des() ); + } + } + + // Remove the Accept header value from aHeaders to avoid duplication aHeaders.RemoveField(strName); if (strName == m_StringPool.StringF(HTTP::EIfModifiedSince, RHTTPSession::GetTable()) || @@ -557,9 +603,17 @@ } else { - aHeaders.SetFieldL(strName, strValue); + aHeaders.SetFieldL(strName, strValue); + } + if ( headerBuf ) + { + CleanupStack::PopAndDestroy(headerBuf); } - CleanupStack::PopAndDestroy(4); + + CleanupStack::PopAndDestroy(&strValue); + CleanupStack::PopAndDestroy(strValueBuf); + CleanupStack::PopAndDestroy(&strName); + CleanupStack::PopAndDestroy(strNameBuf); } } // End of File diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebCore/platform/symbian/FontDataSymbian.cpp --- a/webengine/osswebengine/WebCore/platform/symbian/FontDataSymbian.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/FontDataSymbian.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -42,7 +42,8 @@ { const CFont& font( m_font ); TLanguage language = User::Language(); - if (language == ELangPrcChinese ) { + if (language == ELangTaiwanChinese || language == ELangHongKongChinese || language == ELangPrcChinese || + language == ELangEnglish_Taiwan || language == ELangEnglish_HongKong || language == ELangEnglish_Prc) { m_ascent = font.AscentInPixels(); m_descent = font.DescentInPixels(); } else { diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebCore/platform/symbian/bitmap/AnimationDecoderWrapped.cpp --- a/webengine/osswebengine/WebCore/platform/symbian/bitmap/AnimationDecoderWrapped.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/bitmap/AnimationDecoderWrapped.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -548,7 +548,8 @@ if( frameInfo.iFlags & TFrameInfo::ETransparencyPossible ) { if( frameInfo.iFlags & TFrameInfo::EAlphaChannel && (frameInfo.iFlags & TFrameInfo::ECanDither)) maskDisplayMode = EGray256; - maskDisplayMode = EGray2; + else + maskDisplayMode = EGray2; User::LeaveIfError(animMask.Create(frameInfo.iOverallSizeInPixels, maskDisplayMode)); iDecoder->Convert( &iStatus, animBitmap, animMask, aFrameIndex ); diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebCore/platform/symbian/bitmap/AnimationDecoderWrapped.h --- a/webengine/osswebengine/WebCore/platform/symbian/bitmap/AnimationDecoderWrapped.h Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/bitmap/AnimationDecoderWrapped.h Thu Jul 15 19:53:20 2010 +0300 @@ -77,10 +77,12 @@ _LIT(KMimeICO, "image/x-icon"); _LIT(KMimeDRM, "application/vnd.oma.drm.content"); -//const TDisplayMode KMaxDepth = EColor64K; - // FIXME: we should move this back to EColor64K after Symbian fix their Gif image decoder bug. +#ifdef BRDO_PERF_IMPROVEMENTS_ENABLED_FF +const TDisplayMode KMaxDepth = EColor64K; +#else const TDisplayMode KMaxDepth = EColor16M; +#endif // CLASS DECLARATION /** * CAnimationDecoderWrapped diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebCore/rendering/RenderBR.cpp --- a/webengine/osswebengine/WebCore/rendering/RenderBR.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebCore/rendering/RenderBR.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -45,7 +45,9 @@ // We only treat a box as text for a
if we are on a line by ourself or in strict mode // (Note the use of strict mode. In "almost strict" mode, we don't treat the box for
as text.) InlineTextBox* box = static_cast(RenderText::createInlineBox(makePlaceholder, isRootLineBox, isOnlyRun)); - box->setIsText(isOnlyRun || document()->inStrictMode()); + if ( box ) { + box->setIsText(isOnlyRun || document()->inStrictMode()); + } return box; } diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebKit/s60/plugins/NpnImplementation.cpp --- a/webengine/osswebengine/WebKit/s60/plugins/NpnImplementation.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/NpnImplementation.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -332,13 +332,13 @@ case NPNVPluginElementNPObject: { PluginWin* pluginWin = (PluginWin*)aInstance->ndata; - WebCore::Element* pluginElement; + WebCore::Element* pluginElement = NULL; if (pluginWin) { pluginElement = pluginWin->pluginSkin()->getElement(); } NPObject* pluginScriptObject = 0; - if (pluginElement->hasTagName(appletTag) || pluginElement->hasTagName(embedTag) || pluginElement->hasTagName(objectTag)) + if (pluginElement && (pluginElement->hasTagName(appletTag) || pluginElement->hasTagName(embedTag) || pluginElement->hasTagName(objectTag))) pluginScriptObject = static_cast(pluginElement)->getNPObject(); if (pluginScriptObject) @@ -369,13 +369,14 @@ case NPNVisOfflineBool: // Tells whether offline mode is enabled; // true=offline mode enabled, false=not enabled - case NPNNetworkAccess: + case NPNNetworkAccess: { PluginWin* pluginWin = (PluginWin*)aInstance->ndata; TInt apId = -1; if (pluginWin) { apId = pluginWin->pluginSkin()->handleNetworkAccess(); } *((TInt*) aRetValue) = apId; + } break; case NPNVGenericParameter: { @@ -478,6 +479,7 @@ break; } case NPPVPluginBitmap : + { PluginWin* pluginWin = (PluginWin*)aInstance->ndata; if (pluginWin) { TInt* bitMapHandle = (TInt*)aSetValue; @@ -489,6 +491,7 @@ { pluginWin->SetBitmapFromPlugin(KErrNone); } + } } break; case NPPVPluginDeactivate: diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebKit/s60/plugins/PluginHandler.cpp --- a/webengine/osswebengine/WebKit/s60/plugins/PluginHandler.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/PluginHandler.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -157,7 +157,7 @@ { TUint i; TUint count; - HBufC* entry; + HBufC* entry = NULL; m_mimeTypes.ResetAndDestroy(); m_mimeExtensionToTypeMap.Reset(); diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp --- a/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -162,14 +162,14 @@ m_canInteract( EFalse ), m_rect(TRect(0,0,0,0)), m_ref(1), + m_oldRect(TRect(0,0,0,0)), + m_oldViewport(TRect(0,0,0,0)), + m_loadmode(ELoadModeNone), + m_NPObject(0), m_handle(-1), m_instance(0), m_pluginfuncs(0), - m_resized(false), - m_oldRect(TRect(0,0,0,0)), - m_oldViewport(TRect(0,0,0,0)), - m_loadmode(ELoadModeNone), - m_NPObject(0) + m_resized(false) { } @@ -409,7 +409,12 @@ delete m_attributeNames; m_attributeNames = 0; delete m_attributeValues; m_attributeValues = 0; delete m_url; m_url = 0; - delete iJavascriptTimer; iJavascriptTimer = 0; + if(iJavascriptTimer) + { + iJavascriptTimer->Cancel(); + delete iJavascriptTimer; + iJavascriptTimer = 0; + } m_pluginfuncs = 0; m_pluginSupported = EFalse; m_pluginClosed = true; @@ -475,7 +480,9 @@ CFbsBitmap* bitmap = m_cannedimg.m_img; TSize bmpSize( bitmap->SizeInPixels() ); - if ( !m_pluginwin && newRect.Height() >= bmpSize.iHeight && newRect.Width() >= bmpSize.iWidth ) + CWidgetExtension* wdgtExt = control(this->frame()) ? control(this->frame())->getWidgetExt(): NULL; + + if ( !wdgtExt && !m_pluginwin && newRect.Height() >= bmpSize.iHeight && newRect.Width() >= bmpSize.iWidth ) { // The inner rect is big enough, draw the placeholder image TPoint bitmapStartPoint( newRect.Center() ); diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h --- a/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h Thu Jul 15 19:53:20 2010 +0300 @@ -439,6 +439,8 @@ void setPluginWinClipedRect(); TBool IsCollectBitmapSupported(); WebFrame* getWebFrame() const {return m_frame;} + void activateVisiblePlugins(); + private: // private member data TRect frameVisibleRect() const; @@ -447,7 +449,6 @@ const TDesC& GetExecutionMode(); void setupGenericElementArrrayL(); void addWidgetAttributesL(); - void activateVisiblePlugins(); // Window-owning CoeControl which wraps the CoeControl created by the plugin PluginWin* m_pluginwin; WebFrame* m_frame; // not owned diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp --- a/webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -498,6 +498,11 @@ void PluginWin::HandleGainingForeground() { if (m_notifier) { + if(m_pluginHasBitmap) + { + ClearPluginBitmap(); + m_pluginskin->activateVisiblePlugins(); + } TRAP_IGNORE(m_notifier->NotifyL(MPluginNotifier::EApplicationFocusChanged, (void*)1)); } } @@ -611,6 +616,7 @@ TPoint newPos ((aOffset.iX * 100)/zoomlevel, (aOffset.iY * 100)/zoomlevel); c->offsetCursor( aOffset ); mf->frameView()->scrollTo(oldPos + newPos); + view->scrollStatus(false); c->cursorUpdate(EFalse); } diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebKit/s60/webcoresupport/WebFrameLoaderClient.cpp --- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebFrameLoaderClient.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebFrameLoaderClient.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -147,7 +147,9 @@ brctl(m_webFrame)->setWmlDispatcher(m_WmlContentListener); } } - TRAPD(err,m_WmlContentListener->HeadersL( 0, m_response )); + if ( m_WmlContentListener ) { + TRAPD(err,m_WmlContentListener->HeadersL( 0, m_response )); + } } else{ if (m_WmlContentListener) { diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp --- a/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -808,7 +808,7 @@ //Disable the zooming bar when it goes to background m_webView->hideZoomSliderL(); - + m_webView->scrollStatus(false); // Instruct JS to garbage collect WebCore::gcController().garbageCollectSoon(); break; @@ -1033,7 +1033,20 @@ { StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager()->cancelQueuedTransactions(); break; - } + } + + // Messages sent by OOM monitor + case TBrCtlDefs::ECommandFreeMemory: + { + //MemoryManager::FreeRam(); // invoke memory collect operation - enable later, causes BC break + break; + } + case TBrCtlDefs::ECommandMemoryGood: + { + //MemoryManager::RestoreCollectors(); // restore collectors - enable later, causes BC break + break; + } + default: { if ( m_wmlEngineInterface && @@ -1241,7 +1254,7 @@ } int after = aAfter == -1 ? aAfter :0; - TBrCtlDefs::TBrCtlElementType focusedElementType; + TBrCtlDefs::TBrCtlElementType focusedElementType = TBrCtlDefs::EElementNone; if(m_webView) focusedElementType = FocusedElementType(); @@ -2551,6 +2564,13 @@ } } +CWidgetExtension* CBrCtl::getWidgetExt() +{ + if ( m_webView) { + return m_webView->widgetExtension(); + } + return NULL; +} int CBrCtl::getMainScrollbarWidth() const { diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebKit/s60/webview/BrCtl.h --- a/webengine/osswebengine/WebKit/s60/webview/BrCtl.h Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/BrCtl.h Thu Jul 15 19:53:20 2010 +0300 @@ -57,6 +57,7 @@ class CWmlDispatcher; class CWmlContentInterface; class CUserAgent; +class CWidgetExtension; namespace WebCore { class FormData; @@ -160,6 +161,7 @@ TBrCtlWmlServiceOption* firstPrevDoElement() const { return m_firstPrevDoElement; } HBufC* fileNameToUrlLC(const TDesC& aFileName); void SetScriptLogMode(TInt aMode); + CWidgetExtension* getWidgetExt(); public: // Methods from CBrCtlInterface diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebKit/s60/webview/WebFrameView.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebFrameView.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebFrameView.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -420,8 +420,11 @@ //maybe the content got smaller and we need to scroll back to view? TPoint p( nearestPointInFrame(m_contentPos) ); if (p!=m_contentPos) + { // this will also update scrollbars is necessary scrollTo(p); + m_topView->scrollStatus(false); + } else if (!m_parent) { // top level m_topView->updateScrollbars(m_contentSize.iHeight, m_contentPos.iY, m_contentSize.iWidth, m_contentPos.iX); diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -60,10 +60,10 @@ WebScrollbarDrawer::WebScrollbarDrawer(): - m_webView(NULL), + m_webView(NULL), m_spriteV(NULL), m_spriteH(NULL), m_scrollBarTransparency(KMinScrollBarTransparency), m_scrollBarWidth(KMinScrollbarWidth), - m_dX(0), m_dY(0), m_spriteV(NULL), m_spriteH(NULL) + m_dY(0), m_dX(0) { } diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebKit/s60/webview/WebScrollingDeceleratorGH.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebScrollingDeceleratorGH.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebScrollingDeceleratorGH.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -42,7 +42,11 @@ const int KScrollIntervalTimeout = 60000; // scroll timer interval in microseconds #endif +#ifdef BRDO_MULTITOUCH_ENABLED_FF +const float KDecceleration = -1300.0; +#else const float KDecceleration = -750.0; +#endif const float KSpeedHigh = 2000.0; int decelTimerCB(TAny* ptr); diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebKit/s60/webview/WebSprite.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebSprite.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebSprite.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -101,8 +101,8 @@ // ====================================================================== CWebSprite::CWebSprite(CCoeControl* aParent, CFbsBitmap* aBitmap, CFbsBitmap* aMask, TBool aInvertMask) : - iParent(aParent), iBitmap(aBitmap), iMask(aMask), - iInvertMask(aInvertMask), iWin(NULL) + iBitmap(aBitmap), iMask(aMask), + iInvertMask(aInvertMask), iWin(NULL), iParent(aParent) { } diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebKit/s60/webview/WebSurface.h --- a/webengine/osswebengine/WebKit/s60/webview/WebSurface.h Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebSurface.h Thu Jul 15 19:53:20 2010 +0300 @@ -21,6 +21,7 @@ #ifndef __WEBKITSURFACE_H__ #define __WEBKITSURFACE_H__ +#include #include #include @@ -30,10 +31,16 @@ class CBitmapContext; class WebView; +#ifdef BRDO_PERF_IMPROVEMENTS_ENABLED_FF +const TDisplayMode KDisplayMode = EColor64K; +#else +const TDisplayMode KDisplayMode = EColor16MU; +#endif + class WebSurface : public CBase { public: - static WebSurface* NewL( TDisplayMode mode = EColor16MU ); + static WebSurface* NewL( TDisplayMode mode = KDisplayMode ); ~WebSurface(); diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/WebKit/s60/webview/WebView.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebView.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebView.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -397,8 +397,10 @@ MakeViewVisible(ETrue); CCoeControl::SetFocus(ETrue); - + +#ifndef BRDO_PERF_IMPROVEMENTS_ENABLED_FF cache()->setCapacities(0, 0, defaultCacheCapacity); +#endif m_waiter = new(ELeave) CActiveSchedulerWait(); @@ -1199,9 +1201,34 @@ consumed = downEventConsumed || handleTabbedNavigation(m_currentEventKey, m_currentEventCode); } else { - consumed = (!m_isEditable && //avoid showing the cursor when we are in the input box - handleKeyNavigation(keyevent, eventcode, frame)) || - downEventConsumed; + //Check is editable node and couples of NULL checking + if( m_isEditable && frame && frame->document() && frame->document()->focusedNode() ) { + //Is inputTag + TBool isInputTag = frame->document()->focusedNode()->hasTagName(inputTag); + HTMLInputElement* ie = static_cast(frame->document()->focusedNode()); + TInt length = 0; + //Null checking etc. + if( ie && isInputTag ) { + //Get length of inputelement string + length = ie->value().length(); + } + //Check is there data in input field + if( length > 0 || !ie ) { + //If there is data, do the old thing + consumed = ( !m_isEditable && //avoid showing the cursor when we are in the input box + handleKeyNavigation(keyevent, eventcode, frame)) || + downEventConsumed; + } + else { + //else continue navigation and avoid jamming in some inputboxes + consumed = handleKeyNavigation( keyevent, eventcode, frame ); + } + } + else { + consumed = ( !m_isEditable && //avoid showing the cursor when we are in the input box + handleKeyNavigation(keyevent, eventcode, frame)) || + downEventConsumed; + } } return consumed; } diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/cache/inc/HttpCacheUtil.h --- a/webengine/osswebengine/cache/inc/HttpCacheUtil.h Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/cache/inc/HttpCacheUtil.h Thu Jul 15 19:53:20 2010 +0300 @@ -360,6 +360,24 @@ */ static TInt ExtractCacheControlDirectiveValue( RStringPool aStrP, RStringF& aDirective, TDesC8& aValue, TInt64* aDirectiveValue, char** aExtraValue ); + + /** + * + * @since 3.1 + * @param + * @return + */ + static TInt ExtractCacheControlDirectivePairValue(const RHTTPHeaders& aHeaders,RStringPool aStrP,RStringF& aDirective, + TInt64* aDirectiveValue,TInt aIndex); + + /** + * + * @since 3.1 + * @param + * @return + */ + static TInt ExtractCacheControlDirectiveValueforParam(const RHTTPHeaders& aHeaders,RStringPool aStrP,TInt64* aDirectiveValue, + RStringF& aFieldParam,RStringF& aDirective,TInt aIndex); }; NONSHARABLE_CLASS( TFileInfo ) diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/cache/src/HttpCacheEntry.cpp --- a/webengine/osswebengine/cache/src/HttpCacheEntry.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/cache/src/HttpCacheEntry.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -166,7 +166,7 @@ delete iFileName; iFileName = NULL; - iFileName = aFileName.AllocL(); + iFileName = aFileName.AllocL(); } diff -r 800203832575 -r 30342f40acbf webengine/osswebengine/cache/src/HttpCacheUtil.cpp --- a/webengine/osswebengine/cache/src/HttpCacheUtil.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/osswebengine/cache/src/HttpCacheUtil.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -27,6 +27,7 @@ #include "TInternetdate.h" #include "httpfiltercommonstringsext.h" #include "HttpCacheEntry.h" +#include // EXTERNAL DATA STRUCTURES @@ -1640,6 +1641,11 @@ // init the field name fieldName = aStrP.StringF( HTTP::ECacheControl, RHTTPSession::GetTable() ); TRAP( status, cacheCount = aHeaders.FieldPartsL( fieldName ) ); + +#ifdef __CACHELOG__ + HttpCacheUtil::WriteLog(0,_L("cacheCount ="),cacheCount); +#endif + if( status == KErrNone ) { for( i = 0; i < cacheCount; i++ ) @@ -1722,12 +1728,38 @@ // Get the cache-control from the headers fieldName = aStrP.StringF( HTTP::ECacheControl, RHTTPSession::GetTable() ); + aHeaders.GetField( fieldName, aIndex, hdrVal ); - + +#ifdef __CACHELOG__ + HttpCacheUtil::WriteLog(0,_L("In GetCacheControlDirective Printing fieldName")); + HttpCacheUtil::WriteUrlToLog( 0, fieldName.DesC().Left(fieldName.DesC().Length()) ); +#endif + if( hdrVal.Type() == THTTPHdrVal::KStrVal || hdrVal.Type() == THTTPHdrVal::KStrFVal ) { RStringF cacheDir = hdrVal.StrF(); - + +#ifdef __CACHELOG__ + HttpCacheUtil::WriteLog(0,_L("In GetCacheControlDirective Printing hdrVal.StrF()")); + HttpCacheUtil::WriteUrlToLog( 0, hdrVal.StrF().DesC().Left(hdrVal.StrF().DesC().Length()) ); + + HttpCacheUtil::WriteLog(0,_L("In GetCacheControlDirective Printing cacheDir")); + HttpCacheUtil::WriteUrlToLog( 0, cacheDir.DesC().Left(cacheDir.DesC().Length()) ); +#endif + +#ifdef BRDO_CACHE_MAX_AGE + + //If the cache-control is key value pair + if(cacheDir.DesC().Length() == NULL) + { + + err = ExtractCacheControlDirectivePairValue(aHeaders,aStrP,aDirective,aDirectiveValue,aIndex); +#ifdef __CACHELOG__ + HttpCacheUtil::WriteLog(0,_L("In GetCacheControlDirective Printing aDirective")); + HttpCacheUtil::WriteUrlToLog(0, aDirective.DesC().Left(aDirective.DesC().Length()) ); +#endif +#else TInt endPos; _LIT8(KFind, "="); @@ -1741,16 +1773,29 @@ } TPtrC8 value = cacheDir.DesC().Right( cacheDir.DesC().Length() - endPos - 1 ); err = ExtractCacheControlDirectiveValue( aStrP, aDirective, value, aDirectiveValue, aExtraValue ); + +#ifdef __CACHELOG__ + HttpCacheUtil::WriteLog(0,_L("In GetCacheControlDirective Printing aDirective")); + HttpCacheUtil::WriteUrlToLog(0, aDirective.DesC().Left(aDirective.DesC().Length()) ); +#endif + if( err != KErrNone ) { aDirective.Close(); return err; } +#endif } + //If the cache-control is a normal value else { aDirective = cacheDir.Copy(); - // Directives which MUST have values + +#ifdef __CACHELOG__ + HttpCacheUtil::WriteLog(0,_L("In GetCacheControlDirective Printing aDirective")); + HttpCacheUtil::WriteUrlToLog(0, aDirective.DesC().Left(aDirective.DesC().Length()) ); +#endif + if( ( aDirective == aStrP.StringF( HTTP::EMaxAge, RHTTPSession::GetTable() ) ) || ( aDirective == aStrP.StringF( HTTP::EMinFresh, RHTTPSession::GetTable() ) ) || ( aDirective == aStrP.StringF( HTTP::ESMaxAge, RHTTPSession::GetTable() ) ) ) @@ -1758,16 +1803,142 @@ aDirective.Close(); return KErrGeneral; } +#ifdef BRDO_CACHE_MAX_AGE + err = KErrNone; + } + } + return err; +#else } } return KErrNone; +#endif } +#ifdef BRDO_CACHE_MAX_AGE +// ----------------------------------------------------------------------------- +// HttpCacheUtil::ExtractCacheControlDirectivePairValue +// +// ----------------------------------------------------------------------------- +// + +TInt HttpCacheUtil::ExtractCacheControlDirectivePairValue( + const RHTTPHeaders& aHeaders, + RStringPool aStrP, + RStringF& aDirective, + TInt64* aDirectiveValue, + TInt aIndex) + { + RStringF fieldName; + THTTPHdrVal hdrVal; + + // Get the cache-control from the headers + fieldName = aStrP.StringF( HTTP::ECacheControl, RHTTPSession::GetTable() ); + +#ifdef __CACHELOG__ + HttpCacheUtil::WriteLog(0,_L("In ExtractCacheControlDirectivePairValue Printing fieldName")); + HttpCacheUtil::WriteUrlToLog(0, fieldName.DesC().Left(fieldName.DesC().Length()) ); +#endif + + //Get the param name + RStringF paramName = aStrP.StringF( HTTP::EMaxAge, RHTTPSession::GetTable() ); + + if(KErrNone != ExtractCacheControlDirectiveValueforParam(aHeaders,aStrP,aDirectiveValue,paramName,aDirective,aIndex)) + { + paramName.Close(); + paramName = aStrP.StringF( HTTP::EMaxStale, RHTTPSession::GetTable() ); + if(KErrNone != ExtractCacheControlDirectiveValueforParam(aHeaders,aStrP,aDirectiveValue,paramName,aDirective,aIndex)) + { + paramName.Close(); + paramName = aStrP.StringF( HTTP::EMinFresh, RHTTPSession::GetTable() ); + if(KErrNone != ExtractCacheControlDirectiveValueforParam(aHeaders,aStrP,aDirectiveValue,paramName,aDirective,aIndex)) + { + paramName.Close(); + paramName = aStrP.StringF( HTTP::EMustRevalidate, RHTTPSession::GetTable() ); + if(KErrNone != ExtractCacheControlDirectiveValueforParam(aHeaders,aStrP,aDirectiveValue,paramName,aDirective,aIndex)) + { + paramName.Close(); + paramName = aStrP.StringF( HTTP::ENoCache, RHTTPSession::GetTable() ); + if(KErrNone != ExtractCacheControlDirectiveValueforParam(aHeaders,aStrP,aDirectiveValue,paramName,aDirective,aIndex)) + { + paramName.Close(); + paramName = aStrP.StringF( HTTP::ENoStore, RHTTPSession::GetTable() ); + if(KErrNone != ExtractCacheControlDirectiveValueforParam(aHeaders,aStrP,aDirectiveValue,paramName,aDirective,aIndex)) + { + return KErrGeneral; + } + } + } + } + } + } + + return KErrNone; + } +// ----------------------------------------------------------------------------- +// HttpCacheUtil::ExtractCacheControlDirectiveValueforParam +// +// ----------------------------------------------------------------------------- +// +TInt HttpCacheUtil::ExtractCacheControlDirectiveValueforParam( + const RHTTPHeaders& aHeaders, + RStringPool aStrP, + TInt64* aDirectiveValue, + RStringF& aFieldParam, + RStringF& aDirective, + TInt aIndex) + { + + RStringF fieldName; + THTTPHdrVal hdrVal; + + // Get the cache-control from the headers + fieldName = aStrP.StringF( HTTP::ECacheControl, RHTTPSession::GetTable() ); + + aHeaders.GetParam(fieldName,aFieldParam,hdrVal,aIndex); +#ifdef __CACHELOG__ + HttpCacheUtil::WriteLog(0,_L("In ExtractCacheControlDirectiveValueforParam Printing fieldName")); + HttpCacheUtil::WriteUrlToLog( 0, fieldName.DesC().Left(fieldName.DesC().Length()) ); + HttpCacheUtil::WriteLog(0,_L("In ExtractCacheControlDirectiveValueforParam Printing aFieldParam")); + HttpCacheUtil::WriteUrlToLog( 0, aFieldParam.DesC().Left(aFieldParam.DesC().Length()) ); +#endif + + //If the field param does not exist + if(hdrVal.Type() == THTTPHdrVal::KNoType) + { + return KErrGeneral; + } + else if( hdrVal.Type() == THTTPHdrVal::KTIntVal ) + { + if( !(( aFieldParam == aStrP.StringF( HTTP::EMaxAge, RHTTPSession::GetTable() ) ) || + ( aFieldParam == aStrP.StringF( HTTP::EMinFresh, RHTTPSession::GetTable() ) ) || + ( aFieldParam == aStrP.StringF( HTTP::ESMaxAge, RHTTPSession::GetTable() ) ) ) ) + { + return KErrGeneral; + } + TInt value = hdrVal.Int(); + *aDirectiveValue = (TInt64)value; + } + else + { + if( !(( aFieldParam == aStrP.StringF( HTTP::ENoCache, RHTTPSession::GetTable() ) ) || + ( aFieldParam == aStrP.StringF( HTTP::EPrivate, RHTTPSession::GetTable() ) ) || + ( aFieldParam == aStrP.StringF( HTTP::EMustRevalidate, RHTTPSession::GetTable() ) )) ) + { + return KErrGeneral; + } + } + aDirective = aFieldParam.Copy(); + return KErrNone; + } + +#else // ----------------------------------------------------------------------------- // HttpCacheUtil::ExtractCacheControlDirectiveValue // // ----------------------------------------------------------------------------- // + TInt HttpCacheUtil::ExtractCacheControlDirectiveValue( RStringPool aStrP, RStringF& aDirective, @@ -1779,6 +1950,10 @@ TInt temp; char* errorIfNull; +#ifdef __CACHELOG__ + HttpCacheUtil::WriteLog(0,_L("In ExtractCacheControlDirectiveValue ")); +#endif + *aDirectiveValue = -1; *aExtraValue = NULL; char* valuestr = (char*)User::Alloc( aValue.Length() + 1 ); @@ -1829,8 +2004,7 @@ User::Free( valuestr ); return status; } - - +#endif // ----------------------------------------------------------------------------- // FilePathHash // Hash function for Symbian file paths: discards case first diff -r 800203832575 -r 30342f40acbf webengine/webkitutils/stmgesturefw/src/stateengine.cpp --- a/webengine/webkitutils/stmgesturefw/src/stateengine.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/webkitutils/stmgesturefw/src/stateengine.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -449,6 +449,7 @@ /*! * stateNames are used in the logging */ +#ifdef GESTURE_LOGGING const char* const stateNames[8] = { "Ignore", @@ -471,6 +472,7 @@ "EHoldTimer", "ESuppressTimer" } ; +#endif /*! CStateEngine contains the methods used in the state machine implementation. * diff -r 800203832575 -r 30342f40acbf webengine/webkitutils/stmgesturefw/src/statemachine.cpp --- a/webengine/webkitutils/stmgesturefw/src/statemachine.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/webkitutils/stmgesturefw/src/statemachine.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -32,6 +32,7 @@ GLREF_D const char* stateNames[8] ; +#ifdef GESTURE_LOGGING const char* const ttypeNames[] = { // for debugging purposes define the names of the pointer events "EButton1Down ", "EButton1Up ", @@ -49,6 +50,7 @@ "EEnterHighPressure ", "EExitHighPressure " }; +#endif /// Fast integer distance int stmUiEventEngine::Distance(int x, int y) @@ -745,7 +747,9 @@ } else if (Rng(edge, wY, sz.iHeight - edge)) { +#ifdef GESTURE_LOGGING int from = newPos.iY ; +#endif newPos.iY -= m_3mminpixels ; if (m_loggingenabled) { diff -r 800203832575 -r 30342f40acbf webengine/widgetinstaller/Src/WidgetInstaller.cpp --- a/webengine/widgetinstaller/Src/WidgetInstaller.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/widgetinstaller/Src/WidgetInstaller.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -472,14 +472,16 @@ break; case EWidgetPropTypeInt: - TLex toInt( value->Des() ); - TInt k; - if ( KErrNone != toInt.Val( k ) ) - { - User::Leave( KErrCorrupt ); - } - if ( propId == EBlanketPermGranted ) - backupBlanketPerm = k; + { + TLex toInt( value->Des() ); + TInt k; + if ( KErrNone != toInt.Val( k ) ) + { + User::Leave( KErrCorrupt ); + } + if ( propId == EBlanketPermGranted ) + backupBlanketPerm = k; + } break; case EWidgetPropTypeString: diff -r 800203832575 -r 30342f40acbf webengine/widgetregistry/Server/src/WidgetEntry.cpp --- a/webengine/widgetregistry/Server/src/WidgetEntry.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/widgetregistry/Server/src/WidgetEntry.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -125,9 +125,9 @@ // CWidgetEntry::CWidgetEntry() : iPropertyValues( EWidgetPropertyIdCount ), - iBlanketPermGranted ( EFalse), + iMiniView ( EFalse), iFullView ( EFalse), - iMiniView ( EFalse) + iBlanketPermGranted ( EFalse) { } @@ -436,7 +436,6 @@ CWidgetRegistryXml* aXmlProcessor, RFs& aFileSession ) { - xmlDocPtr doc = NULL; // not really used TInt i = 0; // For each property, write an XML entry for ( ; i < EWidgetPropertyIdCount; ++i ) @@ -692,7 +691,8 @@ break; case KWidgetPropertyListVersion71: // Go from PropertlyListVersion71 to PropertyListVersion71CWRT - // 1) add ProcessUid for WRT (wgz) widgets + // 1) add ProcessUid for WRT (wgz) widgets + { (*this)[EProcessUid] = KUidWidgetUi.iUid; // 2) add MIMEType @@ -703,6 +703,7 @@ CleanupStack::PopAndDestroy(); currentVersion = KWidgetPropertyListVersion71CWRT; + } break; default: // Trouble diff -r 800203832575 -r 30342f40acbf webengine/wmlengine/src/ImageCH/src/Epoc32ImageContentHandler.cpp --- a/webengine/wmlengine/src/ImageCH/src/Epoc32ImageContentHandler.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/wmlengine/src/ImageCH/src/Epoc32ImageContentHandler.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -436,9 +436,8 @@ // make sure that the image has been created when the first // chunk came in NW_THROW_ON_NULL(thisObj->image, status, KBrsrUnexpectedError); - - NW_ASSERT(NW_Object_IsInstanceOf(thisObj->image, - &NW_Image_Epoc32Simple_Class)); + if ( NW_Object_IsInstanceOf(thisObj->image, &NW_Image_Epoc32Simple_Class)) + { simpleImage = NW_Image_Epoc32SimpleOf(thisObj->image); //Checking is simpleimage valid for decoding @@ -450,7 +449,7 @@ status = NW_Image_Epoc32Simple_PartialNextChunk(NW_Image_AbstractImageOf(simpleImage), response->body); } - + } // NW_Image_Epoc32Simple_PartialNextChunk takes body ownership response->body = NULL; diff -r 800203832575 -r 30342f40acbf webengine/wmlengine/src/image/src/Epoc32ImageDecoder.cpp --- a/webengine/wmlengine/src/image/src/Epoc32ImageDecoder.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/wmlengine/src/image/src/Epoc32ImageDecoder.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -1092,17 +1092,16 @@ { iFrameInfo = iImageConverter->FrameInfo( iCurrentFrame ); if(iImage->bitmap == NULL ){ - TInt error; NW_Bool actualSizing; TFrameInfo aFrameInfo = iImageConverter->FrameInfo(0); actualSizing = ImageSizeCheck(aFrameInfo.iOverallSizeInPixels, &currSize); CFbsBitmap* pDestBitmap = new (ELeave) CFbsBitmap(); if(actualSizing == NW_TRUE) { - error = pDestBitmap->Create( currSize, GetDisplayMode(aFrameInfo) ); + pDestBitmap->Create( currSize, GetDisplayMode(aFrameInfo) ); } else{ - error = pDestBitmap->Create( aFrameInfo.iOverallSizeInPixels, GetDisplayMode(aFrameInfo) ); + pDestBitmap->Create( aFrameInfo.iOverallSizeInPixels, GetDisplayMode(aFrameInfo) ); } iImage->bitmap = pDestBitmap; if(iImage->mask == NULL && aFrameInfo.iFlags & TFrameInfo::ETransparencyPossible ){ diff -r 800203832575 -r 30342f40acbf webengine/wrtharvester/group/wrtharvester.mmp --- a/webengine/wrtharvester/group/wrtharvester.mmp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/wrtharvester/group/wrtharvester.mmp Thu Jul 15 19:53:20 2010 +0300 @@ -70,5 +70,6 @@ LIBRARY CommonEngine.lib LIBRARY ws32.lib LIBRARY PlatformEnv.lib +LIBRARY oommonitor.lib //end of file diff -r 800203832575 -r 30342f40acbf webengine/wrtharvester/src/wrtharvester.cpp --- a/webengine/wrtharvester/src/wrtharvester.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/webengine/wrtharvester/src/wrtharvester.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -45,6 +45,12 @@ #include #include #include +#include + +#ifndef BRDO_OOM_MONITOR2_COMPONENT_FF +#include +#endif +#include "browser_platform_variant.hrh" // CONSTANTS _LIT( KResourceFileName, "\\resource\\wrtharvester.rsc" ); @@ -54,6 +60,38 @@ _LIT( KOpenPar, "("); _LIT( KClosePar, ")"); _LIT8( KWidgetIcon, "widget_icon"); +#define KUidWidgetOOMPlugin 0x10282855 +const TInt KMemoryToLaunchWidgetUi = 17*1024*1024; + + + +/** +* Launch or bring foreground the asked widget. +* +* Launch widget. +* @param aUid UID of the widget. +* @param aOperation Operation to perform. +*/ +static void LaunchWidgetL( const TUid& aUid, TUint32 aOperation ); + +/** +* In case the widget cannot be launched because of OOM +* Notify harvester and Clear event Queue +* @return void +*/ +static void NotifyCommandAndCleanUp(); + +/** +* Launch new widget. +* +* Launch new widget. +* @param aUid UID of the widget. +* @param aOperation Operation to perform. +*/ +static void LaunchWidgetUIL( + const TUid& aUid, + const TDesC8& aMessage, + TUint32 aOperation ); /** * Utility class to show the prompt for platform security access. @@ -136,6 +174,7 @@ // Returns the app full name // ---------------------------------------------------------------------------- // +/* static HBufC* GetAppNameLC( RApaLsSession& aSession, const TUid& aUid ) { TApaAppInfo info; @@ -143,52 +182,8 @@ return info.iFullName.AllocLC(); } - - -// ---------------------------------------------------------------------------- -// Sends the command to Widget launcher -// ---------------------------------------------------------------------------- -// -static void HandleWidgetCommandL( - RApaLsSession& aSession, - const TDesC& aWidget, - const TUid& aUid, - TUint32 aOperation ) - { - const TInt size( 2* aWidget.Length() + 3*sizeof( TUint32 ) ); - - // Message format is - CApaCommandLine* cmd( CApaCommandLine::NewLC() ); - HBufC8* opaque( HBufC8::NewLC( size ) ); - - RDesWriteStream stream; - TPtr8 des( opaque->Des() ); +*/ - stream.Open( des ); - CleanupClosePushL( stream ); - - // Generate the command. - stream.WriteUint32L( aUid.iUid ); - stream.WriteUint32L( aWidget.Length() ); - stream.WriteL( reinterpret_cast< const TUint8* >( aWidget.Ptr() ), - aWidget.Size() ); - - stream.WriteInt32L( aOperation ); - - CleanupStack::PopAndDestroy( &stream ); - - // Generate command. - cmd->SetCommandL( EApaCommandBackgroundAndWithoutViews ); - cmd->SetOpaqueDataL( *opaque ); - - CleanupStack::PopAndDestroy( opaque ); - - cmd->SetExecutableNameL( KLauncherApp ); - - User::LeaveIfError( aSession.StartApp( *cmd ) ); - CleanupStack::PopAndDestroy( cmd ); - } - // Map the interface UIDs to implementation factory functions const TImplementationProxy ImplementationTable[] = { @@ -901,9 +896,7 @@ // void CWrtHarvester::LaunchWidgetOperationL( SWidgetOperation aOperation ) { - HBufC* widgetName( GetAppNameLC( iApaSession, aOperation.iUid) ); - HandleWidgetCommandL( iApaSession, *widgetName, aOperation.iUid, aOperation.iOperation ); - CleanupStack::PopAndDestroy( widgetName ); + LaunchWidgetL (aOperation.iUid, aOperation.iOperation ); } // ---------------------------------------------------------------------------- @@ -1160,5 +1153,147 @@ aMessage, aSoftkeys); } +//====================================================================== +// Launch widget. +//=========================================================================== +// +void LaunchWidgetL( const TUid& aUid, TUint32 aOperation ) + { + __UHEAP_MARK; + + TUid widgetAppUid( TUid::Uid( KWidgetAppUid ) ); + + RWsSession wsSession; + ROomMonitorSession monitorSession; + TApaTaskList taskList( wsSession ); + HBufC8* message( HBufC8::NewLC( KWidgetUiMaxMessageLength ) ); + TPtr8 des( message->Des() ); + TInt err(KErrNone); + RDesWriteStream stream( des ); + + CleanupClosePushL( stream ); + + // Make the message to be sent. + stream.WriteUint32L( 1 ); + stream.WriteUint32L( aUid.iUid ); + stream.WriteInt32L( aOperation ); + + CleanupStack::PopAndDestroy( &stream ); + + // Create Window server session + User::LeaveIfError( wsSession.Connect() ); + User::LeaveIfError( monitorSession.Connect() ); + CleanupClosePushL( wsSession ); + // Get the task list + // Try to find out if stub ui is already running + TApaTask task = taskList.FindApp( widgetAppUid ); + + if ( task.Exists() ) + { + // TODO make something here, or not... + widgetAppUid = TUid::Uid( 1 ); + if ( aOperation == WidgetSelect ) + { + task.BringToForeground(); + } + task.SendMessage( widgetAppUid, des ); + } + else + { + // TODO CONST + if ( aOperation == LaunchMiniview || + aOperation == WidgetSelect || + aOperation == WidgetResume || + aOperation == WidgetRestart ) //WidgetUI has died -> re-launch + { + TInt bytesAvailaible(0); + if (aOperation != WidgetSelect ) + { +#ifdef BRDO_OOM_MONITOR2_COMPONENT_FF + err = monitorSession.RequestOptionalRam(KMemoryToLaunchWidgetUi, KMemoryToLaunchWidgetUi,KUidWidgetOOMPlugin, bytesAvailaible); +#else + TMemoryInfoV1Buf info; + UserHal::MemoryInfo(info); + err = info().iFreeRamInBytes > KMemoryToLaunchWidgetUi + KRAMGOODTHRESHOLD ? KErrNone : KErrNoMemory; +#endif + if( err == KErrNone) + { + LaunchWidgetUIL( widgetAppUid, *message, aOperation ); + } + } + else + { + //The modification is related to the manual starting of WRT widgets from HS. After noticing an issue when + //the user taps manually a WRT widget from the HS. + //If RAM is not available with RequestOptionalRam() API, the manual tapping does nothing + //and that is incorrect behaviour. Therefore if widgetSelect -event is sent to the launcher we are using RequestFreeMemory() instead of using RequestOptionalRam() API. + //This means that we apply mandatory RAM allocation when a widget is started manually from HS in order to make sure that RAM is released properly + err = monitorSession.RequestFreeMemory( KMemoryToLaunchWidgetUi ); + if( err == KErrNone) + { + LaunchWidgetUIL( widgetAppUid, *message, aOperation ); + } + } + if(err != KErrNone) + NotifyCommandAndCleanUp(); + } + else + { + NotifyCommandAndCleanUp(); + } + + } + + CleanupStack::PopAndDestroy( 2, message ); + monitorSession.Close(); + __UHEAP_MARKEND; + } + +//=========================================================================== +// Launch Widget UI. +//=========================================================================== +void LaunchWidgetUIL( + const TUid& aUid, + const TDesC8& aMessage, + TUint32 aOperation ) + { + HBufC* document( NULL ); + CApaCommandLine* line( CApaCommandLine::NewLC() ); + TApaAppInfo info; + RApaLsSession session; + + User::LeaveIfError( session.Connect() ); + CleanupClosePushL( session ); + + User::LeaveIfError( session.GetAppInfo( info, aUid ) ); + + document = HBufC::NewMaxLC( TReal( TReal( aMessage.Length() ) / 2.0 ) + 0.5 ); + + Mem::Copy( + reinterpret_cast< TUint8* >( const_cast< TUint16* >( document->Ptr() ) ), + aMessage.Ptr(), + KWidgetUiMaxMessageLength ); + + line->SetDocumentNameL( *document ); + line->SetExecutableNameL( info.iFullName ); + + // TODO make const definitions. + if ( aOperation == 1 || aOperation == 3 ) + { + line->SetCommandL( EApaCommandBackground ); + } + + session.StartApp( *line ); + + CleanupStack::PopAndDestroy( 3, line ); + } + +void NotifyCommandAndCleanUp() + { + const TUid KMyPropertyCat = { 0x10282E5A }; + enum TMyPropertyKeys { EWidgetUIState = 109 }; + TInt state( 2 ); + RProperty::Set( KMyPropertyCat, EWidgetUIState , state ); + } // End of File diff -r 800203832575 -r 30342f40acbf widgets/widgetapp/src/WidgetUiAppUi.cpp --- a/widgets/widgetapp/src/WidgetUiAppUi.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/widgets/widgetapp/src/WidgetUiAppUi.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -304,6 +304,16 @@ if ( aEvent.Type() == KAknUidValueEndKeyCloseEvent ) { + +#ifdef BRDO_MULTITOUCH_ENABLED_FF + if( IsDisplayingDialog() ) + { + //Get the top dialog + CCoeControl* control = TopFocusedControl(); + delete control; + control = NULL; + } +#endif // Close the current active widget iWindowManager->CloseWindowsAsync(EFalse); return; @@ -378,7 +388,7 @@ { #ifdef OOM_WIDGET_CLOSEALL CloseAllWidgetsAndExit(); -#else if // OOM_WIDGET_CLOSEALL +#else //if OOM_WIDGET_CLOSEALL iWindowManager->HandleOOMEventL(iIsForeground); CloseAndExitIfNoneLeft(); #endif @@ -558,7 +568,7 @@ TUint32& aOperation ) { __UHEAP_MARK; - TUint32 version( -1 ); + TUint32 version( 0 ); TPtrC ptr( NULL, 0 ); RDesReadStream stream( aLine ); diff -r 800203832575 -r 30342f40acbf widgets/widgetapp/src/WidgetUiWindow.cpp --- a/widgets/widgetapp/src/WidgetUiWindow.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/widgets/widgetapp/src/WidgetUiWindow.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -98,8 +98,8 @@ : iWindowManager( aWindowManager ), iCpsPublisher( aCpsPublisher ), iNetworkAccessGrant(EInvalid), iPreferredOrientation(TBrCtlDefs::EOrientationUndefined), iIsCurrent(EFalse), iShowSoftkeys(EFalse), iWidgetLoaded(EFalse), - iSchemeProcessing (EFalse),iClickCount(0), iWidgetLoadStarted(EFalse), - iNetworkState(ENetworkNotAllowed), iUserPermission(ETrue) + iSchemeProcessing (EFalse), iNetworkState(ENetworkNotAllowed), iUserPermission(ETrue), + iClickCount(0), iWidgetLoadStarted(EFalse) { } @@ -561,7 +561,7 @@ UpdateCba(); Engine()->MakeVisible( iWidgetLoaded ); // redraw incase the orientation changed while in the background - RelayoutL(); + RelayoutL(KEikDynamicLayoutVariantSwitch); } else { diff -r 800203832575 -r 30342f40acbf widgets/widgetapp/src/WidgetUiWindowContainer.cpp --- a/widgets/widgetapp/src/WidgetUiWindowContainer.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/widgets/widgetapp/src/WidgetUiWindowContainer.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -154,8 +154,6 @@ // void CWidgetUiWindowContainer::SizeChanged() { - TInt offset( 0 ); - if( Engine() && (Engine()->Rect() != Rect()) ) { TRect rect( Rect() ); @@ -291,16 +289,12 @@ if (Engine()) { - TBool showStausPane(EFalse); TBrCtlDefs::TBrCtlElementType eType = Engine()->FocusedElementType(); switch(eType) { case TBrCtlDefs::EElementInputBox: case TBrCtlDefs::EElementActivatedInputBox: case TBrCtlDefs::EElementTextAreaBox: - // status pane is needed for editing - showStausPane = ETrue; - // fall through case TBrCtlDefs::EElementObjectBox: case TBrCtlDefs::EElementActivatedObjectBox: { diff -r 800203832575 -r 30342f40acbf widgets/widgetapp/src/WidgetUiWindowManager.cpp --- a/widgets/widgetapp/src/WidgetUiWindowManager.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/widgets/widgetapp/src/WidgetUiWindowManager.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -228,8 +228,18 @@ iCenrepNotifyHandler->DoCancel(); delete iCenrepNotifyHandler; #endif - iActiveFsWindow = NULL; - + + iActiveFsWindow = NULL; + +#ifdef BRDO_OCC_ENABLED_FF + if ( iRetryConnectivity) + { + iRetryConnectivity->Cancel(); + delete iRetryConnectivity; + iRetryConnectivity = NULL; + } +#endif + iWindowList.ResetAndDestroy(); #ifdef BRDO_WRT_HS_FF @@ -256,14 +266,6 @@ delete iCpsPublisher; #endif delete iDb; -#ifdef BRDO_OCC_ENABLED_FF - if ( iRetryConnectivity) - { - iRetryConnectivity->Cancel(); - delete iRetryConnectivity; - iRetryConnectivity = NULL; - } -#endif } // ----------------------------------------------------------------------------- @@ -764,9 +766,8 @@ } delete aWidgetWindow; } - return EFalse; } - + return EFalse; } // ============================================================================= @@ -1616,9 +1617,9 @@ CRequestRAM::CRequestRAM(CWidgetUiWindowManager* aWidgetUiWindowManager, const TUid& aUid, TUint32 aOperation): CActive( EPriorityStandard ), - iOperation(aOperation), + iWidgetUiWindowManager(aWidgetUiWindowManager), iUid(aUid), - iWidgetUiWindowManager(aWidgetUiWindowManager) + iOperation(aOperation) { } @@ -1780,7 +1781,7 @@ StartObservingL(); } -CCenrepNotifyHandler::CCenrepNotifyHandler(MCenrepWatcher& aObserver) : iObserver(aObserver), CActive (EPriorityLow) +CCenrepNotifyHandler::CCenrepNotifyHandler(MCenrepWatcher& aObserver) : CActive (EPriorityLow),iObserver(aObserver) { } diff -r 800203832575 -r 30342f40acbf widgets/widgetapp/src/cpspublisher.cpp --- a/widgets/widgetapp/src/cpspublisher.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/widgets/widgetapp/src/cpspublisher.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -29,7 +29,6 @@ // TODO use global definitions! -_LIT( KWidgetBitmap, "widget_bitmap" ); _LIT8( KWidgetId, "widget_id"); _LIT8( KBitmapHandle, "bitmap_handle"); _LIT8( KDelete, "Delete" ); diff -r 800203832575 -r 30342f40acbf widgets/widgetinstaller/src/WidgetUIOperationsWatcher.cpp --- a/widgets/widgetinstaller/src/WidgetUIOperationsWatcher.cpp Mon Jun 21 16:54:17 2010 +0300 +++ b/widgets/widgetinstaller/src/WidgetUIOperationsWatcher.cpp Thu Jul 15 19:53:20 2010 +0300 @@ -305,7 +305,7 @@ if ( !iSilent ) { iUIHandler->DisplayCancelL(); } TRequestStatus* status = &aRequestStatus; - User::RequestComplete( status, KErrNone ); + User::RequestComplete( status, KErrCancel ); } }