webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp
changeset 10 a359256acfc6
parent 5 10e98eab6f85
child 11 c8a366e56285
equal deleted inserted replaced
5:10e98eab6f85 10:a359256acfc6
    75 #include "page.h"
    75 #include "page.h"
    76 #include "range.h"
    76 #include "range.h"
    77 #include "focusController.h"
    77 #include "focusController.h"
    78 #include "IconDatabase.h"
    78 #include "IconDatabase.h"
    79 #include "httpDownload.h"
    79 #include "httpDownload.h"
       
    80 #include "BrCtlSoftkeysObserverImpl.h"
       
    81 #include "BrCtlSpecialLoadObserverImpl.h"
    80 #include "BrCtlLayoutObserverImpl.h"
    82 #include "BrCtlLayoutObserverImpl.h"
       
    83 #include "BrCtlWindowObserverImpl.h"
    81 #include "WidgetExtension.h"
    84 #include "WidgetExtension.h"
    82 #include "PluginSkin.h"
    85 #include "PluginSkin.h"
    83 #include "HttpUiCallbacks.h"
    86 #include "HttpUiCallbacks.h"
    84 #include "PluginWin.h"
    87 #include "PluginWin.h"
    85 #include <BrowserVersion.h>
    88 #include <BrowserVersion.h>
   408    , m_commandIdBase(aCommandIdBase)
   411    , m_commandIdBase(aCommandIdBase)
   409    , m_capabilities(aBrCtlCapabilities)
   412    , m_capabilities(aBrCtlCapabilities)
   410    , m_suspendTimers(false)
   413    , m_suspendTimers(false)
   411    , m_wmlEngineInterface(NULL)
   414    , m_wmlEngineInterface(NULL)
   412    , m_brCtlDownloadObserver(aBrCtlDownloadObserver)
   415    , m_brCtlDownloadObserver(aBrCtlDownloadObserver)
       
   416    , m_windoCloseTimer(NULL)
   413 {
   417 {
   414     m_documentHeight = 0;
   418     m_documentHeight = 0;
   415     m_displayHeight = 0;
   419     m_displayHeight = 0;
   416     m_displayPosY = 0;
   420     m_displayPosY = 0;
   417     m_documentWidth = 0;
   421     m_documentWidth = 0;
   418     m_displayWidth = 0;
   422     m_displayWidth = 0;
   419     m_displayPosX = 0;
   423     m_displayPosX = 0;
   420     m_hasHorizontalScrollbar = false;
   424     m_hasHorizontalScrollbar = false;
       
   425     m_ownsSpecialLoadObserver = false;
       
   426     m_ownsSoftkeysObserver = false;    
   421     m_ownsLayoutObserver = false;
   427     m_ownsLayoutObserver = false;
   422     m_ownsDialogsProvider = false;
   428     m_ownsDialogsProvider = false;
       
   429     m_ownsWindowObserver = false;
   423 }
   430 }
   424 
   431 
   425 // -----------------------------------------------------------------------------
   432 // -----------------------------------------------------------------------------
   426 // CBrCtl::ConstructL
   433 // CBrCtl::ConstructL
   427 // Symbian 2nd phase constructor can leave.
   434 // Symbian 2nd phase constructor can leave.
   446     m_settingsContainer = new (ELeave) SettingsContainer(m_webView, m_historyHandler->historyController());
   453     m_settingsContainer = new (ELeave) SettingsContainer(m_webView, m_historyHandler->historyController());
   447     m_settingsContainer->setNavigationType((capabilities()&TBrCtlDefs::ECapabilityCursorNavigation) ? SettingsContainer::NavigationTypeCursor : SettingsContainer::NavigationTypeTabbed);
   454     m_settingsContainer->setNavigationType((capabilities()&TBrCtlDefs::ECapabilityCursorNavigation) ? SettingsContainer::NavigationTypeCursor : SettingsContainer::NavigationTypeTabbed);
   448 
   455 
   449     m_usrAgnt = CUserAgent::NewL();
   456     m_usrAgnt = CUserAgent::NewL();
   450 
   457 
       
   458     // Create and initialize the Special Load Observer
       
   459     if (m_brCtlSpecialLoadObserver == NULL)
       
   460         {
       
   461         m_brCtlSpecialLoadObserver = new (ELeave) CBrCtlSpecialLoadObserver();
       
   462         m_ownsSpecialLoadObserver = true;
       
   463         }
       
   464         
       
   465         
       
   466     // Setup default support, if it wasn't passed into the constructor...
       
   467     // Create and initialize the Softkey Observer
       
   468     if (m_brCtlSoftkeysObserver == NULL)
       
   469         {
       
   470         m_brCtlSoftkeysObserver = new (ELeave) CBrCtlSoftkeysObserver();
       
   471         m_ownsSoftkeysObserver = true;
       
   472         }
       
   473         
       
   474     // Create and initialize the Layout Observer
   451     if (m_brCtlLayoutObserver == NULL)
   475     if (m_brCtlLayoutObserver == NULL)
   452         {
   476         {
   453         m_brCtlLayoutObserver = new (ELeave) CBrCtlLayoutObserver();
   477         m_brCtlLayoutObserver = new (ELeave) CBrCtlLayoutObserver();
   454         m_ownsLayoutObserver = true;
   478         m_ownsLayoutObserver = true;
   455         }
   479         }
       
   480     // Create and initialize the Dialog Provider
   456     if (m_brCtlDialogsProvider == NULL)
   481     if (m_brCtlDialogsProvider == NULL)
   457         {
   482         {
   458         m_brCtlDialogsProvider = CBrowserDialogsProvider::NewL(NULL);
   483         m_brCtlDialogsProvider = CBrowserDialogsProvider::NewL(NULL);
   459         m_ownsDialogsProvider = true;
   484         m_ownsDialogsProvider = true;
   460         }
   485         }
       
   486         
       
   487   // window observer
       
   488     if(m_brCtlWindowObserver == NULL)
       
   489         {
       
   490         m_brCtlWindowObserver = new (ELeave) CBrCtlWindowObserver();
       
   491         m_ownsWindowObserver = true;
       
   492         }
       
   493     
   461     LoadResourceFileL();
   494     LoadResourceFileL();
   462     // Set the rect for BrowserControl (a CCoeControl).
   495     // Set the rect for BrowserControl (a CCoeControl).
   463     SetRect(aRect);
   496     SetRect(aRect);
   464     CCoeEnv::Static()->DisableExitChecks(true);
   497     CCoeEnv::Static()->DisableExitChecks(true);
   465     Window().AllocPointerMoveBuffer(256, 0);
   498     Window().AllocPointerMoveBuffer(256, 0);
   476 EXPORT_C CBrCtl::~CBrCtl()
   509 EXPORT_C CBrCtl::~CBrCtl()
   477 {
   510 {
   478     iLoadEventObserversArray.Close();
   511     iLoadEventObserversArray.Close();
   479     iLoadEventObserversArray.Close();
   512     iLoadEventObserversArray.Close();
   480     m_stateChangeObserverArray.Close();
   513     m_stateChangeObserverArray.Close();
   481     m_commandObserverArray.ResetAndDestroy();
       
   482     m_commandObserverArray.Close();
   514     m_commandObserverArray.Close();
   483     m_subscribeToItems.ResetAndDestroy();
   515     m_subscribeToItems.ResetAndDestroy();
   484     m_subscribeToItems.Close();
   516     m_subscribeToItems.Close();
   485     m_subscribeToUrls.ResetAndDestroy();
   517     m_subscribeToUrls.ResetAndDestroy();
   486     m_subscribeToUrls.Close();
   518     m_subscribeToUrls.Close();
   487 
   519 
   488     delete m_webView;
   520     delete m_webView;
   489     delete m_historyHandler;
   521     delete m_historyHandler;
   490     delete m_settingsContainer;
   522     delete m_settingsContainer;
   491     delete m_usrAgnt;
   523     delete m_usrAgnt;
       
   524     
       
   525     if (m_ownsSpecialLoadObserver) {
       
   526         delete (CBrCtlSpecialLoadObserver*)m_brCtlSpecialLoadObserver;
       
   527     }
       
   528     
       
   529     if (m_ownsSoftkeysObserver) {
       
   530         delete (CBrCtlSoftkeysObserver*)m_brCtlSoftkeysObserver;
       
   531     }
       
   532     
       
   533     if (m_ownsWindowObserver) {
       
   534         delete (CBrCtlWindowObserver*)m_brCtlWindowObserver;
       
   535     }
   492 
   536 
   493     if (m_ownsLayoutObserver) {
   537     if (m_ownsLayoutObserver) {
   494         delete (CBrCtlLayoutObserver*)m_brCtlLayoutObserver;
   538         delete (CBrCtlLayoutObserver*)m_brCtlLayoutObserver;
   495     }
   539     }
   496     if (m_ownsDialogsProvider) {
   540     if (m_ownsDialogsProvider) {
   498     }
   542     }
   499     if (m_timer) {
   543     if (m_timer) {
   500         m_timer->Cancel();
   544         m_timer->Cancel();
   501         delete m_timer;
   545         delete m_timer;
   502     }
   546     }
       
   547     if (m_windoCloseTimer) {
       
   548         m_windoCloseTimer->Cancel();
       
   549         delete m_windoCloseTimer;
       
   550     }
       
   551     
   503     if (m_dataLoadConsumer) {
   552     if (m_dataLoadConsumer) {
   504         m_dataLoadConsumer->stopDataLoad();
   553         m_dataLoadConsumer->stopDataLoad();
   505         endLoadData();
   554         endLoadData();
   506     }
   555     }
   507     m_brCtlLayoutObserver = NULL;
   556     m_brCtlLayoutObserver = NULL;
   508     m_brCtlDialogsProvider = NULL;
   557     m_brCtlDialogsProvider = NULL;
   509     m_brCtlDownloadObserver = NULL;
   558     m_brCtlDownloadObserver = NULL;
       
   559     m_brCtlWindowObserver = NULL;
       
   560     m_brCtlSoftkeysObserver = NULL; 
       
   561     m_brCtlSpecialLoadObserver = NULL;
   510 
   562 
   511     UnloadDllWmlEngine();
   563     UnloadDllWmlEngine();
   512 
   564 
   513     // remove resource file
   565     // remove resource file
   514     CCoeEnv::Static()->DeleteResourceFile(m_resourceFile);
   566     CCoeEnv::Static()->DeleteResourceFile(m_resourceFile);
   543             if (m_wmlUnloadPending)
   595             if (m_wmlUnloadPending)
   544                 {
   596                 {
   545                 UnloadDllWmlEngine();
   597                 UnloadDllWmlEngine();
   546             }
   598             }
   547 #endif
   599 #endif
       
   600             if (m_webView->formFillPopup() && m_webView->formFillPopup()->IsVisible()) 
       
   601                 m_webView->formFillPopup()->handleCommandL(TBrCtlDefs::ECommandCancel);    
   548             break;
   602             break;
   549     }
   603     }
   550 }
   604 }
   551 
   605 
   552 ////////////////////////////////////////////////////////////////////////////////////////
   606 ////////////////////////////////////////////////////////////////////////////////////////
  2034     }
  2088     }
  2035 }
  2089 }
  2036 
  2090 
  2037 void CBrCtl::closeWindowSoon()
  2091 void CBrCtl::closeWindowSoon()
  2038 {
  2092 {
  2039     m_timer = CPeriodic::NewL(CActive::EPriorityIdle);
  2093     if( m_windoCloseTimer ) {
  2040     m_timer->Start( 20, 0, TCallBack( &doCloseCb, this ) );
  2094         m_windoCloseTimer->Cancel();
       
  2095     }
       
  2096     else {
       
  2097         m_windoCloseTimer = CPeriodic::NewL(CActive::EPriorityIdle);
       
  2098     }
       
  2099     
       
  2100     m_windoCloseTimer->Start( 20, 0, TCallBack( &doCloseCb, this ) );
  2041 }
  2101 }
  2042 
  2102 
  2043 void CBrCtl::doCloseWindowSoon()
  2103 void CBrCtl::doCloseWindowSoon()
  2044 {
  2104 {
  2045     m_timer->Cancel();
  2105     m_windoCloseTimer->Cancel();
  2046     if (brCtlWindowObserver())
  2106     if (brCtlWindowObserver())
  2047         TRAP_IGNORE(brCtlWindowObserver()->HandleWindowCommandL(KNullDesC(), ECloseWindow));
  2107         TRAP_IGNORE(brCtlWindowObserver()->HandleWindowCommandL(KNullDesC(), ECloseWindow));
  2048 }
  2108 }
  2049 
  2109 
  2050 TBool CBrCtl::sendCommandsToClient(
  2110 TBool CBrCtl::sendCommandsToClient(