Changeset 20911 for S60/trunk/WebKit

Show
Ignore:
Timestamp:
04/16/07 13:29:20 (21 months ago)
Author:
spadma
Message:

2007-04-16 hongzhao <set EMAIL_ADDRESS environment variable>

Reviewed by Sachin.
DESC: [S60] Browser crashes if original page is closed and user downloads something after closing in 3.1m.
Fix: Make CBrCtlDownloadObserver a singleton class to support multiple windows download.
http://bugs.webkit.org/show_bug.cgi?id=13296

  • BrowserControl/inc/BrCtl.h:
  • BrowserControl/src/BrCtl.cpp: (CBrCtl::ConstructL): (CBrCtl::~CBrCtl): (CBrCtl::SendCommandsToClient): (CBrCtl::BrCtlDownloadObserver):
  • BrowserView/inc/WebKitControl.h:
  • BrowserView/src/WebKitControl.cpp: (CStaticObjectContainer::~CStaticObjectContainer): (CStaticObjectContainer::DownloadObserver): (CStaticObjectContainer::InitializeFactoryObjectsL):
Location:
S60/trunk/WebKit
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • S60/trunk/WebKit/BrowserControl/inc/BrCtl.h

    r18891 r20911  
    244244        * @since 3.0 
    245245        */ 
    246         MBrCtlDownloadObserver* BrCtlDownloadObserver() {return iBrCtlDownloadObserver;} 
     246        MBrCtlDownloadObserver* BrCtlDownloadObserver(); 
    247247 
    248248        /** 
  • S60/trunk/WebKit/BrowserControl/src/BrCtl.cpp

    r20859 r20911  
    361361    if( !iBrCtlDownloadObserver ) 
    362362        { 
    363         iBrCtlDownloadObserver = new(ELeave) CBrCtlDownloadObserver; 
    364363        iOwnDownloadObserver = ETrue; 
    365364        } 
     
    441440        } 
    442441 
    443     if (iOwnDownloadObserver) 
    444         { 
    445         delete (CBrCtlDownloadObserver*)iBrCtlDownloadObserver; 
    446         } 
    447442 
    448443    // Delete our capabilites 
     
    25472542    return WebKitControl()->WebKitView().FocusedImageLC(); 
    25482543    } 
     2544// ----------------------------------------------------------------------------- 
     2545// CBrCtl::BrCtlDownloadObserver 
     2546// 
     2547// ----------------------------------------------------------------------------- 
     2548// 
     2549MBrCtlDownloadObserver* CBrCtl::BrCtlDownloadObserver()  
     2550{ 
     2551    if (iOwnDownloadObserver)  
     2552        { 
     2553        return &CStaticObjectContainer::Instance().DownloadObserver();   
     2554        } 
     2555    else 
     2556        return iBrCtlDownloadObserver; 
     2557} 
    25492558 
    25502559//  End of File 
  • S60/trunk/WebKit/BrowserView/inc/WebKitControl.h

    r20662 r20911  
    8282class TCertInfo; 
    8383class CWebKitSurface; 
     84class CBrCtlDownloadObserver; 
    8485class CWebKitCursor; 
    8586class CWebKitBridge; 
     
    124125        */ 
    125126        CWebKitSurface& SurfaceL(TDisplayMode aMode = EColor16MU); 
     127        /** 
     128        * Returns the download observer 
     129        */ 
     130        CBrCtlDownloadObserver& DownloadObserver(); 
    126131 
    127132        /**Returns the cursor 
     
    209214        CWebKitSurface*     iWebKitSurface; 
    210215        // 
     216        CBrCtlDownloadObserver* iDownloadObserver; 
    211217        CWebKitCursor*          iWebKitCursor; 
    212218        // 
  • S60/trunk/WebKit/BrowserView/src/WebKitControl.cpp

    r20829 r20911  
    7777#include "ImageRendererFactory.h" 
    7878#include "WebKitSurface.h" 
     79#include "BrCtlDownloadObserverImpl.h" 
    7980#include "CookieHandler.h" 
    8081#include "Favicon.h" 
     
    360361    delete iStaticImageDecoder; 
    361362    delete iOOMNotifier; 
     363    delete iDownloadObserver; 
    362364    // important for reentry 
    363365    iInstance = 0; 
     
    519521 
    520522//------------------------------------------------------------------------------- 
     523// CStaticObjectContainer::DownloadObserver 
     524// shared BrCtl DownloadObserver. 
     525// 
     526//------------------------------------------------------------------------------- 
     527CBrCtlDownloadObserver& CStaticObjectContainer::DownloadObserver() 
     528    { 
     529    if( !iDownloadObserver ) 
     530        { 
     531        // init  
     532        iDownloadObserver = new (ELeave) CBrCtlDownloadObserver; 
     533        } 
     534    return *iDownloadObserver; 
     535    } 
     536//------------------------------------------------------------------------------- 
    521537// CStaticObjectContainer::CursorL 
    522538// shared offscreen surface 
     
    570586    // 
    571587    LoaderContainerL( aBrCtl ); 
     588    DownloadObserver();     
    572589    // save pages capability 
    573590    iImgRendererFactory->SetSaveImageData( iLoaderContainer->Capabilities() & TBrCtlDefs::ECapabilitySavedPage );