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 |