webengine/osswebengine/WebKit/s60/webview/WidgetExtension.cpp
changeset 10 a359256acfc6
parent 5 10e98eab6f85
child 40 8bfb9186a8b8
equal deleted inserted replaced
5:10e98eab6f85 10:a359256acfc6
    31 #include "Settings.h"
    31 #include "Settings.h"
    32 #include "WebCoreFrameBridge.h"
    32 #include "WebCoreFrameBridge.h"
    33 #include "BrCtl.h"
    33 #include "BrCtl.h"
    34 #include "WebCursor.h"
    34 #include "WebCursor.h"
    35 #include "SettingsContainer.h"
    35 #include "SettingsContainer.h"
       
    36 #include "Document.h"
       
    37 #include "EventNames.h"
    36 
    38 
    37 // LOCAL FUNCTION PROTOTYPES
    39 // LOCAL FUNCTION PROTOTYPES
    38 
    40 
    39 // ----------------------------------------------------------------------------
    41 // ----------------------------------------------------------------------------
    40 // CWidgetExtension::NewL
    42 // CWidgetExtension::NewL
    61 //
    63 //
    62 CWidgetExtension::CWidgetExtension(WebView& aWebKitView) : 
    64 CWidgetExtension::CWidgetExtension(WebView& aWebKitView) : 
    63                             m_webview(&aWebKitView), 
    65                             m_webview(&aWebKitView), 
    64                             m_isWidgetPublishing ( false)
    66                             m_isWidgetPublishing ( false)
    65 {
    67 {
       
    68     m_topLevelLoadedpage = 0;
       
    69     m_widgetNetState = ENetworkNotAllowed;
    66 }
    70 }
    67 
    71 
    68 
    72 
    69 CWidgetExtension::~CWidgetExtension()
    73 CWidgetExtension::~CWidgetExtension()
    70 {
    74 {
    76 
    80 
    77 void CWidgetExtension::ConstructL(MWidgetCallback& aWidgetCallback)
    81 void CWidgetExtension::ConstructL(MWidgetCallback& aWidgetCallback)
    78 {
    82 {
    79     if (!m_widgetengine) {
    83     if (!m_widgetengine) {
    80 
    84 
    81         m_widgetengine = WebCore::StaticObjectsContainer::instance()->getWidgetEngineBridgeL();
    85         RLibrary& widgetLib = WebCore::StaticObjectsContainer::instance()->getWidgetEngineBridgeLibL();
       
    86         TLibraryFunction entry = widgetLib.Lookup(1);
       
    87         if (entry) {
       
    88             m_widgetengine = (MWidgetEngineBridge*) entry(); 
       
    89         }
    82         if(!m_widgetengine) {
    90         if(!m_widgetengine) {
    83             User::Leave(KErrNotFound);
    91             User::Leave(KErrNotFound);
    84         }
    92         }
    85             
    93             
    86         m_widgetcallback = &aWidgetCallback;
    94         m_widgetcallback = &aWidgetCallback;
    87 
    95 
       
    96         if (m_widgetengine) {
       
    97             AddJSExtension(_L("widget"),m_widgetengine->Widget(*m_widgetcallback, *this));
       
    98             AddJSExtension(_L("menu"),m_widgetengine->Menu(*m_widgetcallback, *this));
       
    99             AddJSExtension(_L("MenuItem"),m_widgetengine->MenuItem(*m_widgetcallback, *this));
       
   100         }
    88 
   101 
    89 #if defined(BRDO_LIW_FF)
   102 #if defined(BRDO_LIW_FF)
    90         // device for SAPI
   103         // device for SAPI
    91         
   104         RLibrary& deviceLib = WebCore::StaticObjectsContainer::instance()->getDeviceBridgeLibL();
    92         m_deviceBridge = WebCore::StaticObjectsContainer::instance()->getDeviceBridgeL();
   105         TLibraryFunction device_entry = deviceLib.Lookup(1);
       
   106         if (device_entry) {
       
   107             m_deviceBridge = (MDeviceBridge*) device_entry();
       
   108         }
    93         if (!m_deviceBridge) {
   109         if (!m_deviceBridge) {
    94             User::Leave(KErrNotFound);
   110             User::Leave(KErrNotFound);
    95         }
   111         }
    96         
   112         
       
   113         if (m_deviceBridge) {
       
   114             AddJSExtension(_L("device"), m_deviceBridge->Device(0));
       
   115         }
       
   116         m_securitySession = m_deviceBridge->GetSecuritySession();
    97 #endif
   117 #endif
    98 
   118 
    99         if (m_webview && m_webview->page()) {
   119         if (m_webview && m_webview->page()) {
   100             WebCore::Settings* settings = m_webview->page()->settings();
   120             WebCore::Settings* settings = m_webview->page()->settings();
   101             if (settings) {
   121             if (settings) {
   151     }
   171     }
   152 }
   172 }
   153 
   173 
   154 void CWidgetExtension::SetParamL(TBrCtlDefs::TBrCtlWidgetParams aParam, TUint aValue)
   174 void CWidgetExtension::SetParamL(TBrCtlDefs::TBrCtlWidgetParams aParam, TUint aValue)
   155 {
   175 {
       
   176     if ( aParam == TBrCtlDefs::EWidgetNetworkState )
       
   177         {
       
   178         m_widgetNetState = (TNetworkState)aValue;
       
   179         DispatchNetworkStateChangeEvent();
       
   180         return;
       
   181         }
       
   182     
   156     if ( aParam == TBrCtlDefs::EWidgetPublishState)  {
   183     if ( aParam == TBrCtlDefs::EWidgetPublishState)  {
   157         m_isWidgetPublishing = aValue;
   184         m_isWidgetPublishing = aValue;
   158         return ; 
   185         return ; 
   159     }
   186     }
   160     if (m_widgetengine) {
   187     if (m_widgetengine) {
   226     WebCore::StaticObjectsContainer::instance()->webCursor()->cursorUpdate(true);
   253     WebCore::StaticObjectsContainer::instance()->webCursor()->cursorUpdate(true);
   227 }
   254 }
   228 
   255 
   229 void CWidgetExtension::windowObjectCleared()
   256 void CWidgetExtension::windowObjectCleared()
   230 {
   257 {
   231     if (m_widgetengine) {
   258     m_topLevelLoadedpage++;
   232         m_widgetengine->Clear();
   259     if (m_topLevelLoadedpage > 1) {
   233         AddJSExtension(_L("widget"),m_widgetengine->Widget(*m_widgetcallback, *this));
   260         if (m_widgetengine) {
   234         AddJSExtension(_L("menu"),m_widgetengine->Menu(*m_widgetcallback, *this));
   261             m_widgetengine->Clear();
   235         AddJSExtension(_L("MenuItem"),m_widgetengine->MenuItem(*m_widgetcallback, *this));
   262             AddJSExtension(_L("widget"),m_widgetengine->Widget(*m_widgetcallback, *this));
   236     }
   263             AddJSExtension(_L("menu"),m_widgetengine->Menu(*m_widgetcallback, *this));
       
   264             AddJSExtension(_L("MenuItem"),m_widgetengine->MenuItem(*m_widgetcallback, *this));
       
   265         }
   237 
   266 
   238 #if defined(BRDO_LIW_FF)
   267 #if defined(BRDO_LIW_FF)
   239     if (m_deviceBridge) {
   268     if (m_deviceBridge) {
   240         m_deviceBridge->Clear();
   269         m_deviceBridge->Clear();
   241         AddJSExtension(_L("device"), m_deviceBridge->Device(0));
   270         AddJSExtension(_L("device"), m_deviceBridge->Device(0));
   242         m_deviceBridge->SetUid( iWidgetId);
   271         m_deviceBridge->SetUid( iWidgetId);
   243     }
   272     }
   244 #endif
   273 #endif
   245 }
   274 }
       
   275 }
       
   276 
       
   277 TInt CWidgetExtension::widgetNetworkConstants(TInt aId)
       
   278     {
       
   279     switch (aId)
       
   280         {
       
   281         case 0:
       
   282             return ENetworkNotAllowed;
       
   283         case 1:
       
   284             return ENetworkAccessAllowed;
       
   285         case 2:
       
   286             return ENetworkAccessible;
       
   287         default:
       
   288             return 0;
       
   289         }
       
   290     }
       
   291 
       
   292 void CWidgetExtension::DispatchNetworkStateChangeEvent()
       
   293 {
       
   294     if ( m_widgetNetState == ENetworkNotAllowed)
       
   295     {
       
   296         // fire offline event
       
   297         m_webview->page()->mainFrame()->document()->handleNetworkEvent(WebCore::EventNames::onofflineEvent, -1);
       
   298     }
       
   299     else
       
   300     {
       
   301         // fire online event
       
   302         m_webview->page()->mainFrame()->document()->handleNetworkEvent(WebCore::EventNames::ononlineEvent, (TInt)m_widgetNetState);
       
   303     }
       
   304 }
   246 
   305 
   247 //END OF FILE
   306 //END OF FILE
   248 
   307 
   249 
   308 
   250 
   309