webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp
branchRCL_3
changeset 94 919f36ff910f
parent 93 79859ed3eea9
child 99 ca6d8a014f4b
equal deleted inserted replaced
93:79859ed3eea9 94:919f36ff910f
    14 * Description:   Implementation of the Browser Control
    14 * Description:   Implementation of the Browser Control
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 // INCLUDE FILES
    18 // INCLUDE FILES
    19 #include <Browser_platform_variant.hrh>
    19 #include <browser_platform_variant.hrh>
    20 #include <../bidi.h>
    20 #include <../bidi.h>
    21 #include <avkon.hrh>
    21 #include <avkon.hrh>
    22 #include <apmrec.h>
    22 #include <apmrec.h>
    23 #include <apgcli.h>
    23 #include <apgcli.h>
    24 #include <badesca.h>
    24 #include <badesca.h>
    28 #if defined(__BROWSER_SDK)
    28 #if defined(__BROWSER_SDK)
    29 #include <webkit_sdk.rsg>
    29 #include <webkit_sdk.rsg>
    30 #else
    30 #else
    31 #include <Webkit.rsg>
    31 #include <Webkit.rsg>
    32 #endif
    32 #endif
    33 #include <gulicon.h>
    33 #include <GULICON.h>
    34 #include <e32uid.h>
    34 #include <e32uid.h>
    35 #include <BrowserDialogsProvider.h>
    35 #include <browserdialogsprovider.h>
    36 //tot:fixme
    36 //tot:fixme
    37 //#include <oom.h>
    37 //#include "oom.h"
    38 
    38 
    39 #include "config.h"
    39 #include "config.h"
    40 #include "BrCtl.h"
    40 #include "BrCtl.h"
    41 #include "WebView.h"
    41 #include "WebView.h"
    42 #include "WebFrame.h"
    42 #include "WebFrame.h"
    43 #include "WebFrameView.h"
    43 #include "WebFrameView.h"
    44 #include "WebDataLoadConsumer.h"
    44 #include "WebDataLoadConsumer.h"
    45 #include "WebFormFillPopup.h"
    45 #include "WebFormFillPopup.h"
    46 #include "WebPageFullScreenHandler.h"
    46 #include "WebPageFullScreenHandler.h"
    47 #include "pagescaler.h"
    47 #include "PageScaler.h"
       
    48 #include "ThumbnailGenerator.h"
    48 #include "HistoryController.h"
    49 #include "HistoryController.h"
    49 #include "HistoryEntry.h"
    50 #include "HistoryEntry.h"
    50 #include "HistoryInterface.h"
    51 #include "HistoryInterface.h"
    51 #include "HistoryView.h"
    52 #include "HistoryView.h"
    52 #include "FormData.h"
    53 #include "FormData.h"
    69 #include "WebUtil.h"
    70 #include "WebUtil.h"
    70 #include "WebCharsetData.h"
    71 #include "WebCharsetData.h"
    71 #include "httpcachemanager.h"
    72 #include "httpcachemanager.h"
    72 #include "ResourceLoaderDelegate.h"
    73 #include "ResourceLoaderDelegate.h"
    73 #include "EventHandler.h"
    74 #include "EventHandler.h"
    74 #include "Timer.h"
    75 #include "timer.h"
    75 #include "Page.h"
    76 #include "page.h"
    76 #include "Range.h"
    77 #include "range.h"
    77 #include "FocusController.h"
    78 #include "focusController.h"
    78 #include "IconDatabase.h"
    79 #include "IconDatabase.h"
    79 #include "HttpDownload.h"
    80 #include "httpDownload.h"
    80 #include "BrCtlSoftkeysObserverImpl.h"
    81 #include "BrCtlSoftkeysObserverImpl.h"
    81 #include "BrCtlSpecialLoadObserverImpl.h"
    82 #include "BrCtlSpecialLoadObserverImpl.h"
       
    83 #include "WebFrameBridge.h"
    82 #include "BrCtlLayoutObserverImpl.h"
    84 #include "BrCtlLayoutObserverImpl.h"
    83 #include "BrCtlWindowObserverImpl.h"
    85 #include "BrCtlWindowObserverImpl.h"
    84 #include "WidgetExtension.h"
    86 #include "WidgetExtension.h"
    85 #include "PluginSkin.h"
    87 #include "PluginSkin.h"
    86 #include "HttpUiCallbacks.h"
    88 #include "HttpUiCallbacks.h"
    87 #include "PluginWin.h"
    89 #include "PluginWin.h"
    88 #include <CUserAgent.h>
    90 #include "GCController.h"
       
    91 #include <BrowserVersion.h>
       
    92 #include <cuseragent.h>
       
    93 #include "kjs_window.h" 
    89 
    94 
    90 #ifndef BRDO_WML_DISABLED_FF
    95 #ifndef BRDO_WML_DISABLED_FF
    91 #include "WmlInterface.h"
    96 #include "wmlinterface.h"
    92 #include "WmlInterfaceImpl.h"
    97 #include "WmlInterfaceImpl.h"
    93 #include "WmlEngineInterface.h"
    98 #include "WmlEngineInterface.h"
    94 #endif
    99 #endif
    95 #include "WmlDispatcher.h"
   100 #include "WmlDispatcher.h"
    96 
   101 
   411    , m_brCtlSoftkeysObserver(aBrCtlSoftkeysObserver)
   416    , m_brCtlSoftkeysObserver(aBrCtlSoftkeysObserver)
   412    , m_brCtlLayoutObserver(aBrCtlLayoutObserver)
   417    , m_brCtlLayoutObserver(aBrCtlLayoutObserver)
   413    , m_commandIdBase(aCommandIdBase)
   418    , m_commandIdBase(aCommandIdBase)
   414    , m_capabilities(aBrCtlCapabilities)
   419    , m_capabilities(aBrCtlCapabilities)
   415    , m_suspendTimers(false)
   420    , m_suspendTimers(false)
       
   421    , m_pageLoadFinished(false)
   416    , m_wmlEngineInterface(NULL)
   422    , m_wmlEngineInterface(NULL)
   417    , m_brCtlDownloadObserver(aBrCtlDownloadObserver)
   423    , m_brCtlDownloadObserver(aBrCtlDownloadObserver)
   418    , m_windoCloseTimer(NULL)
   424    , m_windoCloseTimer(NULL)
       
   425    , m_didFirstLayout(false)
       
   426    , m_NotifyPluginFocusChangeEvent(false)
   419 {
   427 {
   420     m_documentHeight = 0;
   428     m_documentHeight = 0;
   421     m_displayHeight = 0;
   429     m_displayHeight = 0;
   422     m_displayPosY = 0;
   430     m_displayPosY = 0;
   423     m_documentWidth = 0;
   431     m_documentWidth = 0;
   474         }
   482         }
   475         
   483         
   476     // Create and initialize the Layout Observer
   484     // Create and initialize the Layout Observer
   477     if (m_brCtlLayoutObserver == NULL)
   485     if (m_brCtlLayoutObserver == NULL)
   478         {
   486         {
   479         m_brCtlLayoutObserver = new (ELeave) CBrCtlLayoutObserver();
   487         m_brCtlLayoutObserver = new (ELeave) CBrCtlLayoutObserver(m_webView);
   480         m_ownsLayoutObserver = true;
   488         m_ownsLayoutObserver = true;
   481         }
   489         }
   482     // Create and initialize the Dialog Provider
   490     // Create and initialize the Dialog Provider
   483     if (m_brCtlDialogsProvider == NULL)
   491     if (m_brCtlDialogsProvider == NULL)
   484         {
   492         {
   492         m_brCtlWindowObserver = new (ELeave) CBrCtlWindowObserver();
   500         m_brCtlWindowObserver = new (ELeave) CBrCtlWindowObserver();
   493         m_ownsWindowObserver = true;
   501         m_ownsWindowObserver = true;
   494         }
   502         }
   495     
   503     
   496     LoadResourceFileL();
   504     LoadResourceFileL();
       
   505 
       
   506     MemoryManager::InitOOMDialog();
       
   507     
   497     // Set the rect for BrowserControl (a CCoeControl).
   508     // Set the rect for BrowserControl (a CCoeControl).
   498     SetRect(aRect);
   509     SetRect(aRect);
   499     CCoeEnv::Static()->DisableExitChecks(true);
   510     CCoeEnv::Static()->DisableExitChecks(true);
   500     Window().AllocPointerMoveBuffer(256, 0);
       
   501     Window().DisablePointerMoveBuffer();
       
   502     Window().PointerFilter(EPointerFilterMove | EPointerFilterDrag | EPointerFilterEnterExit, 0);
   511     Window().PointerFilter(EPointerFilterMove | EPointerFilterDrag | EPointerFilterEnterExit, 0);
   503     ActivateL();
   512     ActivateL();
   504 }
   513 }
   505 
   514 
   506 // -----------------------------------------------------------------------------
   515 // -----------------------------------------------------------------------------
   580     for (int i = 0; i < iLoadEventObserversArray.Count(); i++)
   589     for (int i = 0; i < iLoadEventObserversArray.Count(); i++)
   581         iLoadEventObserversArray[i]->HandleBrowserLoadEventL(aLoadEvent, aSize, aTransactionId);
   590         iLoadEventObserversArray[i]->HandleBrowserLoadEventL(aLoadEvent, aSize, aTransactionId);
   582 
   591 
   583     switch (aLoadEvent) {
   592     switch (aLoadEvent) {
   584         case TBrCtlDefs::EEventNewContentStart:
   593         case TBrCtlDefs::EEventNewContentStart:
       
   594             m_pageLoadFinished = false;
   585             if (m_webView->pageScalerEnabled())
   595             if (m_webView->pageScalerEnabled())
   586                 m_webView->pageScaler()->DocumentStarted();
   596                 m_webView->pageScaler()->DocumentStarted();
   587             if (m_webView->formFillPopup() && m_webView->formFillPopup()->IsVisible()) 
   597             if (m_webView->formFillPopup() && m_webView->formFillPopup()->IsVisible()) 
   588                 m_webView->formFillPopup()->handleCommandL(TBrCtlDefs::ECommandCancel);            
   598                 m_webView->formFillPopup()->handleCommandL(TBrCtlDefs::ECommandCancel);            
   589             break;
   599             break;
       
   600         case TBrCtlDefs::EEventNewContentDisplayed:
       
   601             if(m_brCtlLayoutObserver && m_webView && !m_didFirstLayout)  {
       
   602                 m_brCtlLayoutObserver->NotifyLayoutChange( (webView()->mainFrame()->bridge()->m_rtl ? EOriginTopRight : EOriginTopLeft));
       
   603                 m_didFirstLayout = true;
       
   604             }
       
   605             break;
   590         case TBrCtlDefs::EEventContentFinished:
   606         case TBrCtlDefs::EEventContentFinished:
   591         case TBrCtlDefs::EEventUploadFinished:
   607         case TBrCtlDefs::EEventUploadFinished:
       
   608             m_pageLoadFinished = true;
       
   609             m_didFirstLayout= false;
   592             if (m_suspendTimers) {
   610             if (m_suspendTimers) {
   593                 m_suspendTimers = false;
   611                 m_suspendTimers = false;                
   594                 HandleCommandL(TBrCtlDefs::ECommandAppBackground);
   612                 m_webView->pauseJsTimers();
   595             }
   613             }
   596 #ifndef BRDO_WML_DISABLED_FF
   614 #ifndef BRDO_WML_DISABLED_FF
   597             if (m_wmlUnloadPending)
   615             if (m_wmlUnloadPending)
   598                 {
   616                 {
   599                 UnloadDllWmlEngine();
   617                 UnloadDllWmlEngine();
   651                 else if (FocusedElementType() == TBrCtlDefs::EElementActivatedObjectBox) {
   669                 else if (FocusedElementType() == TBrCtlDefs::EElementActivatedObjectBox) {
   652                     Frame* coreFrame = m_webView->page()->focusController()->focusedOrMainFrame();
   670                     Frame* coreFrame = m_webView->page()->focusController()->focusedOrMainFrame();
   653                     if (coreFrame)
   671                     if (coreFrame)
   654                         coreFrame->eventHandler()->deactivatedEvent();
   672                         coreFrame->eventHandler()->deactivatedEvent();
   655                 }
   673                 }
       
   674                 m_webView->setEditable(EFalse);
   656                 break;
   675                 break;
   657             }
   676             }
   658         case TBrCtlDefs::ECommandCancelFetch:
   677         case TBrCtlDefs::ECommandCancelFetch:
   659             {
   678             {
   660                 m_webView->mainFrame()->stopLoading();
   679                 m_webView->Stop();
       
   680                 break;
       
   681             }
       
   682 
       
   683         case TBrCtlDefs::ECommandOOMExit:
       
   684             {
       
   685                 WebCore::gcController().startedExit(true); 
       
   686                 KJS::setDeferringJSTimers(true); 
   661                 break;
   687                 break;
   662             }
   688             }
   663 
   689 
   664         case TBrCtlDefs::ECommandShowThumbnailView:
   690         case TBrCtlDefs::ECommandShowThumbnailView:
   665             {
   691             {
   690             }
   716             }
   691         case TBrCtlDefs::ECommandOpen:
   717         case TBrCtlDefs::ECommandOpen:
   692             {
   718             {
   693                 if (m_webView->pageView()) {
   719                 if (m_webView->pageView()) {
   694                     m_webView->closePageView();
   720                     m_webView->closePageView();
       
   721                     PluginSkin* plugin = m_webView->mainFrame()->focusedPlugin();
       
   722 					if(plugin)
       
   723 						plugin->setPluginWinClipedRect();
   695                 } else {
   724                 } else {
   696                     if (m_historyHandler->historyController()->historyView()) {
   725                     if (m_historyHandler->historyController()->historyView()) {
   697                         // this is a weird way of managing history view. needs fixing
   726                         // this is a weird way of managing history view. needs fixing
   698                         TKeyEvent keyEvent;
   727                         TKeyEvent keyEvent;
   699                         keyEvent.iCode = EKeyDevice3;
   728                         keyEvent.iCode = EKeyDevice3;
   761 #ifndef PERF_REGRESSION_LOG
   790 #ifndef PERF_REGRESSION_LOG
   762                 if (isDeferringTimers())
   791                 if (isDeferringTimers())
   763                     setDeferringTimers(false);
   792                     setDeferringTimers(false);
   764                 m_suspendTimers = false;
   793                 m_suspendTimers = false;
   765 #endif
   794 #endif
   766 
   795                 m_webView->resumeJsTimers();
   767                 break;
   796                 break;
   768             }
   797             }
   769         case TBrCtlDefs::ECommandAppBackground:
   798         case TBrCtlDefs::ECommandAppBackground:
   770             {
   799             {
   771 #ifndef PERF_REGRESSION_LOG
   800 #ifndef PERF_REGRESSION_LOG
   772                 if (m_webView->isLoading())
   801                 if(m_webView->widgetExtension())
   773                     m_suspendTimers = true;
   802                     {
   774                 else if (!isDeferringTimers())
   803                     if(m_pageLoadFinished)
   775                     setDeferringTimers(true);
   804                         m_webView->pauseJsTimers();                        
       
   805                     else 
       
   806                         m_suspendTimers = true;
       
   807                     }
       
   808                 else
       
   809                     {
       
   810                     if (m_webView->isLoading())
       
   811                         m_suspendTimers = true;
       
   812                     else 
       
   813                         m_webView->pauseJsTimers();                        
       
   814                         
       
   815                     }
   776 #endif
   816 #endif
   777 
   817 
   778                 //Disable the zooming bar when it goes to background
   818                 //Disable the zooming bar when it goes to background
   779                 m_webView->hideZoomSliderL();
   819                 m_webView->hideZoomSliderL();
       
   820                 m_webView->scrollStatus(false); 
       
   821                 // Instruct JS to garbage collect
       
   822                 WebCore::gcController().garbageCollectSoon();                
   780                 break;
   823                 break;
   781             }
   824             }
   782         case TBrCtlDefs::ECommandClearAutoFormFillData:
   825         case TBrCtlDefs::ECommandClearAutoFormFillData:
   783             {
   826             {
   784                 StaticObjectsContainer::instance()->formFillController()->clearFormData();
   827                 StaticObjectsContainer::instance()->formFillController()->clearFormData();
   930             break;
   973             break;
   931             }
   974             }
   932 
   975 
   933        case TBrCtlDefs::ECommandEnterFullscreenBrowsing:
   976        case TBrCtlDefs::ECommandEnterFullscreenBrowsing:
   934             {
   977             {
       
   978              m_webView->resumeJsTimers();
   935              m_webView->EnterFullscreenBrowsingL();
   979              m_webView->EnterFullscreenBrowsingL();
   936              break;
   980              break;
   937             }
   981             }
   938 
   982 
   939        case TBrCtlDefs::ECommandLeaveFullscreenBrowsing:
   983        case TBrCtlDefs::ECommandLeaveFullscreenBrowsing:
   940             {
   984             {
   941              m_webView->LeaveFullscreenBrowsingL();
   985              m_webView->LeaveFullscreenBrowsingL();
   942              break;
   986              break;
   943             }
   987             }
   944 
   988 
       
   989        case TBrCtlDefs::ECommandSetRetryConnectivityFlag:
       
   990             {
       
   991             StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager()->setRetryConnectivityFlag();
       
   992             break;
       
   993             }
       
   994        case TBrCtlDefs::ECommandUnSetRetryConnectivityFlag:
       
   995             {
       
   996             StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager()->unSetRetryConnectivityFlag();
       
   997             break;
       
   998             }
       
   999        case TBrCtlDefs::ECommandRetryTransactions:
       
  1000             {
       
  1001              StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager()->retryTransactions();
       
  1002              m_webView->mainFrame()->reCreatePlugins(); 
       
  1003              break;
       
  1004             }
       
  1005        case TBrCtlDefs::ECommandClearQuedTransactions:
       
  1006            {
       
  1007            StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager()->handleError(KErrCancel);
       
  1008            break;
       
  1009            }
       
  1010        case TBrCtlDefs::ECommandConnToDownloadManager:
       
  1011            {
       
  1012            TInt connectionPtr = 0;
       
  1013            TInt sockSvrHandle = 0;
       
  1014            TBool newConn = ETrue;
       
  1015            TApBearerType bearerType;
       
  1016            TInt error = KErrNone;
       
  1017            
       
  1018            TRAP(error, m_brCtlSpecialLoadObserver->NetworkConnectionNeededL(&connectionPtr, &sockSvrHandle, &newConn, &bearerType));
       
  1019            if( error == KErrNone && connectionPtr ) 
       
  1020                {
       
  1021                RConnection* connPtr = REINTERPRET_CAST( RConnection*, connectionPtr );
       
  1022                TName name;
       
  1023                connPtr->Name( name );
       
  1024                StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager()->httpDownload()->connect(name);
       
  1025                }
       
  1026            break;
       
  1027            }
       
  1028        case TBrCtlDefs::ECommandLoseFocus:
       
  1029        case TBrCtlDefs::ECommandPauseScriptTimers:
       
  1030            {
       
  1031            m_webView->pauseJsTimers();
       
  1032            break;
       
  1033            }
       
  1034            
       
  1035        case TBrCtlDefs::ECommandGainFocus:
       
  1036        case TBrCtlDefs::ECommandResumeScriptTimers:
       
  1037            {
       
  1038            m_webView->resumeJsTimers();
       
  1039            break;
       
  1040            }
       
  1041        case TBrCtlDefs::ECommandCancelQueuedTransactions:
       
  1042            {
       
  1043            StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager()->cancelQueuedTransactions();
       
  1044 		   break;
       
  1045            }
       
  1046 
       
  1047 	   // Messages sent by OOM monitor
       
  1048        case TBrCtlDefs::ECommandFreeMemory:
       
  1049            {
       
  1050            MemoryManager::FreeRam(); // invoke memory collect operation
       
  1051            break;
       
  1052            }
       
  1053        case TBrCtlDefs::ECommandMemoryGood:
       
  1054            {
       
  1055            MemoryManager::RestoreCollectors(); // restore collectors
       
  1056            break;
       
  1057            }
       
  1058        case TBrCtlDefs::ECommandNotifyPluginFocusChangeEvent:
       
  1059            {
       
  1060            m_NotifyPluginFocusChangeEvent = true;
       
  1061            break;
       
  1062            }
       
  1063                   
   945       default:
  1064       default:
   946             {
  1065             {
   947             if ( m_wmlEngineInterface &&
  1066             if ( m_wmlEngineInterface &&
   948                  (TUint)aCommand >= m_commandIdBase + TBrCtlDefs::ECommandIdWMLBase &&
  1067                  (TUint)aCommand >= m_commandIdBase + TBrCtlDefs::ECommandIdWMLBase &&
   949                  (TUint)aCommand <= m_commandIdBase + TBrCtlDefs::ECommandIdRange )
  1068                  (TUint)aCommand <= m_commandIdBase + TBrCtlDefs::ECommandIdRange )
   972                 }
  1091                 }
   973             }
  1092             }
   974         }
  1093         }
   975 }
  1094 }
   976 
  1095 
       
  1096 
       
  1097 EXPORT_C TBool CBrCtl::IsSynchRequestPending()
       
  1098     {
       
  1099     return m_webView->isSynchRequestPending();
       
  1100     }
       
  1101 
       
  1102 
   977 // -----------------------------------------------------------------------------
  1103 // -----------------------------------------------------------------------------
   978 // CBrCtl::HandleDownloadCommandL
  1104 // CBrCtl::HandleDownloadCommandL
   979 // This method calls to download manager in order to send commands to the DlMgr
  1105 // This method calls to download manager in order to send commands to the DlMgr
   980 // -----------------------------------------------------------------------------
  1106 // -----------------------------------------------------------------------------
   981 //
  1107 //
  1147         m_webView->widgetExtension()->AddOptionMenuItemsL( aMenuPane, aResourceId );
  1273         m_webView->widgetExtension()->AddOptionMenuItemsL( aMenuPane, aResourceId );
  1148         return;
  1274         return;
  1149     }
  1275     }
  1150 
  1276 
  1151     int after = aAfter == -1 ? aAfter :0;
  1277     int after = aAfter == -1 ? aAfter :0;
  1152     TBrCtlDefs::TBrCtlElementType focusedElementType = FocusedElementType();
  1278     TBrCtlDefs::TBrCtlElementType focusedElementType = TBrCtlDefs::EElementNone;
       
  1279     if(m_webView)
       
  1280        focusedElementType = FocusedElementType();
  1153 
  1281 
  1154     int count = sizeof(commandsArray) / sizeof(TCommandsArray);
  1282     int count = sizeof(commandsArray) / sizeof(TCommandsArray);
  1155     bool found = false;
  1283     bool found = false;
  1156     int i;
  1284     int i;
  1157     for (i = count - 1; i >= 0; i--) {
  1285     for (i = count - 1; i >= 0; i--) {
  1173     // Give the plugin a chance to add its option menu items, send the Command Id
  1301     // Give the plugin a chance to add its option menu items, send the Command Id
  1174     // Base we're using for the plug-ins
  1302     // Base we're using for the plug-ins
  1175     // tot fixme
  1303     // tot fixme
  1176     //TPluginControl pluginControl(*iWebKitControl);
  1304     //TPluginControl pluginControl(*iWebKitControl);
  1177     //pluginControl.AddPluginOptionMenuItemsL(aMenuPane, TBrCtlDefs::ECommandIdPluginBase, aAfter);
  1305     //pluginControl.AddPluginOptionMenuItemsL(aMenuPane, TBrCtlDefs::ECommandIdPluginBase, aAfter);
  1178     PluginSkin* plugin = m_webView->mainFrame()->focusedPlugin();
  1306     if(m_webView) {
  1179     if(plugin && plugin->pluginWin())
  1307         PluginSkin* plugin = m_webView->mainFrame()->focusedPlugin();
  1180         plugin->pluginWin()->addPluginOptionsL(aMenuPane, TBrCtlDefs::ECommandIdPluginBase, aAfter );
  1308         if(plugin && plugin->pluginWin())
       
  1309             plugin->pluginWin()->addPluginOptionsL(aMenuPane, TBrCtlDefs::ECommandIdPluginBase, aAfter );
       
  1310     }
  1181 
  1311 
  1182 }
  1312 }
  1183 
  1313 
  1184 // -----------------------------------------------------------------------------
  1314 // -----------------------------------------------------------------------------
  1185 // CBrCtl::ClearCache
  1315 // CBrCtl::ClearCache
  1500           HBufC* versionInfo = HBufC::NewLC( versionPtr.Length() );
  1630           HBufC* versionInfo = HBufC::NewLC( versionPtr.Length() );
  1501           versionInfo->Des().Copy(versionPtr);
  1631           versionInfo->Des().Copy(versionPtr);
  1502           return versionInfo;
  1632           return versionInfo;
  1503           }
  1633           }
  1504 
  1634 
  1505       /*case TBrCtlDefs::EVersionInfoBuild:
  1635       case TBrCtlDefs::EVersionInfoBuild:
  1506           {
  1636           {
  1507           return MobileBrowserBuild.AllocLC();
  1637           return MobileBrowserBuild.AllocLC();
  1508           }*/
  1638           }
  1509 
  1639 
  1510         case TBrCtlDefs::EBrowserVersion:
  1640         case TBrCtlDefs::EBrowserVersion:
  1511           {
  1641           {
  1512           TPtr nameAndVersionPtr = m_usrAgnt->BrowserNameAndVersionL()->Des();
  1642           TPtr nameAndVersionPtr = m_usrAgnt->BrowserNameAndVersionL()->Des();
  1513           HBufC* nameAndVersionInfo = HBufC::NewLC( nameAndVersionPtr.Length() );
  1643           HBufC* nameAndVersionInfo = HBufC::NewLC( nameAndVersionPtr.Length() );
  1649     // Check that we got a valid url
  1779     // Check that we got a valid url
  1650     if (url.Ptr() == NULL || url.Length() == 0)
  1780     if (url.Ptr() == NULL || url.Length() == 0)
  1651         User::Leave(KErrArgument);
  1781         User::Leave(KErrArgument);
  1652     // convert to 8
  1782     // convert to 8
  1653 
  1783 
       
  1784     // reset timers ptr, if paused from last page
       
  1785     m_webView->resetJsTimers();
       
  1786         
  1654     _LIT(KJs, "javascript:");
  1787     _LIT(KJs, "javascript:");
  1655     if (url.Length() > KJs().Length()) {
  1788     if (url.Length() > KJs().Length()) {
  1656         if (url.Left(KJs().Length()).FindF(KJs) == 0) {
  1789         if (url.Left(KJs().Length()).FindF(KJs) == 0) {
  1657             core(m_webView->mainFrame())->loader()->executeScript(String(url.Mid(KJs().Length())), true);
  1790             core(m_webView->mainFrame())->loader()->executeScript(String(url.Mid(KJs().Length())), true);
  1658             return;
  1791             return;
  1774         if(!visible){
  1907         if(!visible){
  1775         m_webView->mainFrame()->frameLoader()->stopRedirectionTimerNow();
  1908         m_webView->mainFrame()->frameLoader()->stopRedirectionTimerNow();
  1776         }
  1909         }
  1777         else if(m_webView->mainFrame()->frameLoader()->checkScheduledRedirection())
  1910         else if(m_webView->mainFrame()->frameLoader()->checkScheduledRedirection())
  1778           m_webView->mainFrame()->frameLoader()->startRedirectionTimerNow();
  1911           m_webView->mainFrame()->frameLoader()->startRedirectionTimerNow();
       
  1912         
       
  1913         if( m_NotifyPluginFocusChangeEvent ) {
       
  1914            m_NotifyPluginFocusChangeEvent = false; 
       
  1915            webView()->mainFrame()->notifyPluginFocusChangeEvent(visible);
       
  1916           }
  1779         m_webView->MakeVisible(visible);
  1917         m_webView->MakeVisible(visible);
  1780     }
  1918     }
  1781 
  1919 
  1782     if( visible && !isvisible && m_webView ) {
  1920     if( visible && !isvisible && m_webView ) {
  1783         m_webView->checkForZoomChange();
  1921         m_webView->checkForZoomChange();
  1784     }
  1922     }
  1785 
  1923 
  1786     if( m_webView->pageFullScreenHandler() && m_webView->pageFullScreenHandler()->isFullScreenMode() ) {
  1924     if(m_webView && m_webView->pageFullScreenHandler() && m_webView->pageFullScreenHandler()->isFullScreenMode() ) {
  1787         if (visible)
  1925         if (visible)
  1788             m_webView->pageFullScreenHandler()->showEscBtnL();
  1926             m_webView->pageFullScreenHandler()->showEscBtnL();
  1789         else
  1927         else
  1790             m_webView->pageFullScreenHandler()->hideEscBtnL();
  1928             m_webView->pageFullScreenHandler()->hideEscBtnL();
  1791     }
  1929     }
  2005     return m_webView->focusedImageLC();
  2143     return m_webView->focusedImageLC();
  2006 }
  2144 }
  2007 
  2145 
  2008 EXPORT_C TBool CBrCtl::OkToExit()
  2146 EXPORT_C TBool CBrCtl::OkToExit()
  2009 {
  2147 {
  2010     return WebCore::StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager()->httpDownload()->okToExit();
  2148     HttpDownload* httpDownload = WebCore::StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager()->httpDownload();
       
  2149     if ( httpDownload )
       
  2150         {
       
  2151         return httpDownload->okToExit();
       
  2152         }
       
  2153     return ETrue;
  2011 }
  2154 }
  2012 
  2155 
  2013 EXPORT_C CGulIcon* CBrCtl::GetBitmapData(const TDesC& aUrl, TBrCtlDefs::TBrCtlBitmapInfo aBitmapInfo)
  2156 EXPORT_C CGulIcon* CBrCtl::GetBitmapData(const TDesC& aUrl, TBrCtlDefs::TBrCtlBitmapInfo aBitmapInfo)
  2014 {
  2157 {
  2015     CGulIcon* icon = NULL;
  2158     CGulIcon* icon = NULL;
  2019             {
  2162             {
  2020                 HistoryEntry* entry = m_historyHandler->historyController()->entry(EHistoryStackDirectionCurrent);
  2163                 HistoryEntry* entry = m_historyHandler->historyController()->entry(EHistoryStackDirectionCurrent);
  2021                 if ( entry ) {
  2164                 if ( entry ) {
  2022                     CFbsBitmap* bitmap = entry->thumbnail();
  2165                     CFbsBitmap* bitmap = entry->thumbnail();
  2023                     if(!bitmap) {
  2166                     if(!bitmap) {
  2024                         // get scaled page from PageScaler;
  2167                         if(m_webView->pageThumbnailGenerator()) {
  2025                         bitmap = m_webView->pageScaler()->ScaledPage();
  2168                             //get the page thumbnail  
       
  2169                             bitmap = m_webView->pageThumbnailGenerator()->PageThumbnail();
       
  2170                         }
       
  2171                         else {
       
  2172                            // get scaled page from PageScaler;
       
  2173                            bitmap = m_webView->pageScaler()->ScaledPage();
       
  2174                         }
  2026                     }
  2175                     }
  2027                     if(bitmap) {
  2176                     if(bitmap) {
  2028                         // update the history with new bitmap
  2177                         // update the history with new bitmap
  2029                         TRAP_IGNORE(m_historyHandler->historyController()->updateHistoryEntryThumbnailL(bitmap));
  2178                         TRAP_IGNORE(m_historyHandler->historyController()->updateHistoryEntryThumbnailL(bitmap));
  2030                         TRAP_IGNORE(icon = CGulIcon::NewL(bitmap, NULL));
  2179                         TRAP_IGNORE(icon = CGulIcon::NewL(bitmap, NULL));
  2073         if (!newBrctl)
  2222         if (!newBrctl)
  2074         {
  2223         {
  2075          if(StaticObjectsContainer::instance()->isPluginFullscreen())
  2224          if(StaticObjectsContainer::instance()->isPluginFullscreen())
  2076          {
  2225          {
  2077             PluginSkin* plugin=m_webView->mainFrame()->focusedPlugin();
  2226             PluginSkin* plugin=m_webView->mainFrame()->focusedPlugin();
       
  2227             if(plugin)
  2078             plugin->deActivate();
  2228             plugin->deActivate();
  2079          }
  2229          }
  2080          newBrctl = m_brCtlWindowObserver->OpenWindowL(emptyUrl, &windowName, userGesture, 0);            
  2230          newBrctl = m_brCtlWindowObserver->OpenWindowL(emptyUrl, &windowName, userGesture, 0);            
  2081         }
  2231         }
  2082     }
  2232     }
  2104 
  2254 
  2105 void CBrCtl::doCloseWindowSoon()
  2255 void CBrCtl::doCloseWindowSoon()
  2106 {
  2256 {
  2107     m_windoCloseTimer->Cancel();
  2257     m_windoCloseTimer->Cancel();
  2108     if (brCtlWindowObserver())
  2258     if (brCtlWindowObserver())
  2109         TRAP_IGNORE(brCtlWindowObserver()->HandleWindowCommandL(KNullDesC(), ECloseWindow));
  2259         {
       
  2260         TRAPD(err,brCtlWindowObserver()->HandleWindowCommandL(KNullDesC(), ECloseWindow));
       
  2261 		if ( err == KLeaveExit )
       
  2262 		    { // while we exit the browser it actually leaves with KLeaveExit from the system.
       
  2263 		      // If we block this here then the exit would not happen so propogate the leave 
       
  2264 		      // condition to the system for handling
       
  2265 		    User::Leave(KLeaveExit);
       
  2266 		    }        
       
  2267         }
  2110 }
  2268 }
  2111 
  2269 
  2112 TBool CBrCtl::sendCommandsToClient(
  2270 TBool CBrCtl::sendCommandsToClient(
  2113     TBrCtlDefs::TBrCtlClientCommands aCommand,
  2271     TBrCtlDefs::TBrCtlClientCommands aCommand,
  2114     const CArrayFix<TPtrC>& aAttributesNames,
  2272     const CArrayFix<TPtrC>& aAttributesNames,
  2432     for (TInt i=0; i<m_stateChangeObserverArray.Count(); i++) {
  2590     for (TInt i=0; i<m_stateChangeObserverArray.Count(); i++) {
  2433         m_stateChangeObserverArray[i]->StateChanged(TBrCtlDefs::EStateScriptLog, aMode);
  2591         m_stateChangeObserverArray[i]->StateChanged(TBrCtlDefs::EStateScriptLog, aMode);
  2434     }
  2592     }
  2435 }
  2593 }
  2436 
  2594 
       
  2595 CWidgetExtension* CBrCtl::getWidgetExt()
       
  2596 {
       
  2597     if ( m_webView) {
       
  2598         return m_webView->widgetExtension();
       
  2599     }
       
  2600     return NULL;
       
  2601 }
  2437 
  2602 
  2438 int CBrCtl::getMainScrollbarWidth() const
  2603 int CBrCtl::getMainScrollbarWidth() const
  2439 {
  2604 {
  2440   return 0;
  2605   return 0;
  2441 }
  2606 }
  2448     return m_brCtlDownloadObserver;
  2613     return m_brCtlDownloadObserver;
  2449 }
  2614 }
  2450 
  2615 
  2451 
  2616 
  2452 
  2617 
  2453 void CBrCtl::HandlePointerBufferReadyL()
  2618 
  2454 {
  2619 
  2455     m_webView->HandlePointerBufferReadyL();
  2620 
  2456 }
  2621 
  2457 
       
  2458