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