fix parameter of OnFaviconReceived()
[platform/framework/native/web.git] / src / controls / FWebCtrl_WebImpl.cpp
index aa75d06..c2031f8 100755 (executable)
@@ -1119,6 +1119,27 @@ OnLoadingCommitted(void* pUserData, Evas_Object* pView, void* pEventInfo)
 
 
 void
+OnFaviconReceived(void* pUserData, Evas_Object* pView, void* pEventInfo)
+{
+       _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
+       SysAssertf(pImpl, "Failed to request");
+
+       if (pImpl->GetLoadingListener())
+       {
+               result r = E_SUCCESS;
+
+               std::unique_ptr<_LoadingEventArg> pEventArg(new (std::nothrow) _LoadingEventArg(WEB_EVENT_LOADINGLISTENER_FAVICON_RECEIVED));
+               SysTryReturnVoidResult(NID_WEB_CTRL, pEventArg.get(), E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
+
+               r = pImpl->GetWebEvent()->FireAsync(*pEventArg.get());
+               SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+               pEventArg.release();
+       }
+
+}
+
+
+void
 OnDidStartDownloadCallback(const char* pUrl, void* pUserData)
 {
        _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
@@ -3093,88 +3114,90 @@ void
 _WebImpl::SetEventListenerCallback(void) const
 {
        Evas_Object* pWebNativeNode = __pWebCore->GetWebNativeNode();
-       SysAssertf(pWebNativeNode, "Failed to get Web evas object");
+       if (pWebNativeNode)
+       {
+               _EcoreEvas* pEcoreEvas = GetEcoreEvasMgr()->GetEcoreEvas();
+               SysAssertf(pEcoreEvas, "Failed to get Ui ecore evas");
 
-       _EcoreEvas* pEcoreEvas = GetEcoreEvasMgr()->GetEcoreEvas();
-       SysAssertf(pEcoreEvas, "Failed to get Ui ecore evas");
+               Evas_Object* pWinObject = pEcoreEvas->GetWindowObject();
+               SysAssertf(pWinObject, "Failed to get Ui window evas object");
 
-       Evas_Object* pWinObject = pEcoreEvas->GetWindowObject();
-       SysAssertf(pWinObject, "Failed to get Ui window evas object");
+               Ewk_View_Smart_Data* pSmartData = (Ewk_View_Smart_Data*) evas_object_smart_data_get(pWebNativeNode);
+               SysAssertf(pSmartData, "Failed to request");
 
-       Ewk_View_Smart_Data* pSmartData = (Ewk_View_Smart_Data*) evas_object_smart_data_get(pWebNativeNode);
-       SysAssertf(pSmartData, "Failed to request");
+               Ewk_View_Smart_Class *pSmart = const_cast<Ewk_View_Smart_Class*>(pSmartData->api);
+               SysAssertf(pSmart, "Failed to request");
 
-       Ewk_View_Smart_Class *pSmart = const_cast<Ewk_View_Smart_Class*>(pSmartData->api);
-       SysAssertf(pSmart, "Failed to request");
+               pSmart->popup_menu_show = OnSelectBoxRequested;
+               pSmart->popup_menu_hide = OnSelectBoxClosed;
+               pSmart->popup_menu_update = OnSelectBoxUpdateRequested;
 
-       pSmart->popup_menu_show = OnSelectBoxRequested;
-       pSmart->popup_menu_hide = OnSelectBoxClosed;
-       pSmart->popup_menu_update = OnSelectBoxUpdateRequested;
+               pSmart->input_picker_show = OnDatePickerProviderRequested;
+               pSmart->input_picker_color_request = OnColorPickerProviderRequested;
+               pSmart->input_picker_color_dismiss = OnColorPickerProviderDismissed;
 
-       pSmart->input_picker_show = OnDatePickerProviderRequested;
-       pSmart->input_picker_color_request = OnColorPickerProviderRequested;
-       pSmart->input_picker_color_dismiss = OnColorPickerProviderDismissed;
+               evas_object_data_set(pWebNativeNode, WEB_CTRL, this);
 
-       evas_object_data_set(pWebNativeNode, WEB_CTRL, this);
+               // add loading event callbacks for ILoadingListener
+               evas_object_smart_callback_add(pWebNativeNode, "create,window", OnWebWindowCreateRequested, this);
+               evas_object_smart_callback_add(pWebNativeNode, "close,window", OnWebWindowClosedRequested, this);
 
-       // add loading event callbacks for ILoadingListener
-       evas_object_smart_callback_add(pWebNativeNode, "create,window", OnWebWindowCreateRequested, this);
-       evas_object_smart_callback_add(pWebNativeNode, "close,window", OnWebWindowClosedRequested, this);
+               evas_object_smart_callback_add(pWebNativeNode, "policy,navigation,decide", OnLoadingRequested, this);
+               evas_object_smart_callback_add(pWebNativeNode, "load,started", OnLoadingStarted, this);
+               evas_object_smart_callback_add(pWebNativeNode, "load,finished", OnLoadingCompleted, this);
+               evas_object_smart_callback_add(pWebNativeNode, "load,progress", OnEstimatedProgress, this);
+               evas_object_smart_callback_add(pWebNativeNode, "load,progress,finished", OnProgressCompleted, this);
+               evas_object_smart_callback_add(pWebNativeNode, "load,stop", OnLoadingCanceled, this);
+               evas_object_smart_callback_add(pWebNativeNode, "load,error", OnLoadingErrorOccurred, this);
+               evas_object_smart_callback_add(pWebNativeNode, "title,changed", OnPageTitleReceived, this);
+               evas_object_smart_callback_add(pWebNativeNode, "load,committed", OnLoadingCommitted, this);
 
-       evas_object_smart_callback_add(pWebNativeNode, "policy,navigation,decide", OnLoadingRequested, this);
-       evas_object_smart_callback_add(pWebNativeNode, "load,started", OnLoadingStarted, this);
-       evas_object_smart_callback_add(pWebNativeNode, "load,finished", OnLoadingCompleted, this);
-       evas_object_smart_callback_add(pWebNativeNode, "load,progress", OnEstimatedProgress, this);
-       evas_object_smart_callback_add(pWebNativeNode, "load,progress,finished", OnProgressCompleted, this);
-       evas_object_smart_callback_add(pWebNativeNode, "load,stop", OnLoadingCanceled, this);
-       evas_object_smart_callback_add(pWebNativeNode, "load,error", OnLoadingErrorOccurred, this);
-       evas_object_smart_callback_add(pWebNativeNode, "title,changed", OnPageTitleReceived, this);
-       evas_object_smart_callback_add(pWebNativeNode, "load,committed", OnLoadingCommitted, this);
+               evas_object_smart_callback_add(pWebNativeNode, "requestToNative,json", OnHandleJavaScriptRequest, this);
 
-       evas_object_smart_callback_add(pWebNativeNode, "requestToNative,json", OnHandleJavaScriptRequest, this);
+               evas_object_smart_callback_add(pWinObject, "focus,in", OnWindowObjectFocusGained, this);
 
-       evas_object_smart_callback_add(pWinObject, "focus,in", OnWindowObjectFocusGained, this);
+               evas_object_smart_callback_add(pWebNativeNode, "inputmethod,changed", OnWebKeypadStateChanged, this);
+               evas_object_smart_callback_add(pWebNativeNode, "editorclient,ime,opened", OnWebKeypadOpened, this);
+               evas_object_smart_callback_add(pWebNativeNode, "editorclient,ime,closed", OnWebKeypadClosed, this);
 
-       evas_object_smart_callback_add(pWebNativeNode, "inputmethod,changed", OnWebKeypadStateChanged, this);
-       evas_object_smart_callback_add(pWebNativeNode, "editorclient,ime,opened", OnWebKeypadOpened, this);
-       evas_object_smart_callback_add(pWebNativeNode, "editorclient,ime,closed", OnWebKeypadClosed, this);
+               evas_object_smart_callback_add(pWebNativeNode, "authentication,challenge", OnHttpAuthenticationRequested, this);
+               evas_object_smart_callback_add(pWebNativeNode, "authentication,canceled", OnHttpAuthenticationCanceled, this);
 
-       evas_object_smart_callback_add(pWebNativeNode, "authentication,challenge", OnHttpAuthenticationRequested, this);
-       evas_object_smart_callback_add(pWebNativeNode, "authentication,canceled", OnHttpAuthenticationCanceled, this);
+               evas_object_smart_callback_add(pWebNativeNode, "geolocation,permission,request", OnGeolocationPermissionRequested, this);
 
-       evas_object_smart_callback_add(pWebNativeNode, "geolocation,permission,request", OnGeolocationPermissionRequested, this);
+               ewk_view_javascript_alert_callback_set(pWebNativeNode, OnScriptAlertRequested, const_cast< _WebImpl* >(this));
+               ewk_view_javascript_prompt_callback_set(pWebNativeNode, OnScriptPromptRequested, const_cast< _WebImpl* >(this));
+               ewk_view_javascript_confirm_callback_set(pWebNativeNode, OnScriptConfirmRequested, const_cast< _WebImpl* >(this));
 
-       ewk_view_javascript_alert_callback_set(pWebNativeNode, OnScriptAlertRequested, const_cast< _WebImpl* >(this));
-       ewk_view_javascript_prompt_callback_set(pWebNativeNode, OnScriptPromptRequested, const_cast< _WebImpl* >(this));
-       ewk_view_javascript_confirm_callback_set(pWebNativeNode, OnScriptConfirmRequested, const_cast< _WebImpl* >(this));
+               evas_object_smart_callback_add(pWebNativeNode, "policy,response,decide", OnWebDataReceived, this);
 
-       evas_object_smart_callback_add(pWebNativeNode, "policy,response,decide", OnWebDataReceived, this);
+               evas_object_smart_callback_add(pWebNativeNode, "load,nonemptylayout,finished", OnWebPageShowRequested, this);
+               evas_object_smart_callback_add(pWebNativeNode, "request,certificate,confirm", OnCertificateRequested, this);
+               evas_object_smart_callback_add(pWebNativeNode, "usermedia,permission,request", OnGetUserMediaPermissionRequsted, this);
 
-       evas_object_smart_callback_add(pWebNativeNode, "load,nonemptylayout,finished", OnWebPageShowRequested, this);
-       evas_object_smart_callback_add(pWebNativeNode, "request,certificate,confirm", OnCertificateRequested, this);
-       evas_object_smart_callback_add(pWebNativeNode, "usermedia,permission,request", OnGetUserMediaPermissionRequsted, this);
+               evas_object_smart_callback_add(pWebNativeNode, "notification,permission,request", OnNotificationPermissionRequested, this);
+               evas_object_smart_callback_add(pWebNativeNode, "notification,show", OnNotificationShow, this);
+               evas_object_smart_callback_add(pWebNativeNode, "notification,cancel", OnNotificationCancel, this);
 
-       evas_object_smart_callback_add(pWebNativeNode, "notification,permission,request", OnNotificationPermissionRequested, this);
-       evas_object_smart_callback_add(pWebNativeNode, "notification,show", OnNotificationShow, this);
-       evas_object_smart_callback_add(pWebNativeNode, "notification,cancel", OnNotificationCancel, this);
+               evas_object_smart_callback_add(pWebNativeNode, "protocolhandler,registration,requested", OnProtocolHandlerRegistrationRequested, this);
+               evas_object_smart_callback_add(pWebNativeNode, "protocolhandler,isregistered", OnIsProtocolHandlerRegistered, this);
+               evas_object_smart_callback_add(pWebNativeNode, "protocolhandler,unregistration,requested", OnProtocolHandlerUnregistrationRequested, this);
 
-       evas_object_smart_callback_add(pWebNativeNode, "protocolhandler,registration,requested", OnProtocolHandlerRegistrationRequested, this);
-       evas_object_smart_callback_add(pWebNativeNode, "protocolhandler,isregistered", OnIsProtocolHandlerRegistered, this);
-       evas_object_smart_callback_add(pWebNativeNode, "protocolhandler,unregistration,requested", OnProtocolHandlerUnregistrationRequested, this);
+               evas_object_smart_callback_add(pWebNativeNode, "contenthandler,registration,requested", OnContentHandlerRegistrationRequested, this);
+               evas_object_smart_callback_add(pWebNativeNode, "contenthandler,isregistered", OnIsContentHandlerRegistered, this);
+               evas_object_smart_callback_add(pWebNativeNode, "contenthandler,unregistration,requested", OnContentHandlerUnregistrationRequested, this);
+               evas_object_smart_callback_add(pWebNativeNode, "text,found", OnTextFound, this);
 
-       evas_object_smart_callback_add(pWebNativeNode, "contenthandler,registration,requested", OnContentHandlerRegistrationRequested, this);
-       evas_object_smart_callback_add(pWebNativeNode, "contenthandler,isregistered", OnIsContentHandlerRegistered, this);
-       evas_object_smart_callback_add(pWebNativeNode, "contenthandler,unregistration,requested", OnContentHandlerUnregistrationRequested, this);
-       evas_object_smart_callback_add(pWebNativeNode, "text,found", OnTextFound, this);
+               evas_object_smart_callback_add(pWebNativeNode, "touchmove,handled", OnWebPreventDefaultTriggered, this);
+               evas_object_smart_callback_add(pWebNativeNode, "icon,received", OnFaviconReceived, this);
 
-       evas_object_smart_callback_add(pWebNativeNode, "touchmove,handled", OnWebPreventDefaultTriggered, this);
-
-       Ewk_Context* pContext = ewk_view_context_get(pWebNativeNode);
-       SysAssertf(pContext, "Failed to get webkit instance.");
-       ewk_context_did_start_download_callback_set(pContext, OnDidStartDownloadCallback, const_cast< _WebImpl* >(this));
-       ewk_view_open_panel_callback_set(pWebNativeNode, OnSelectUploadFile, const_cast< _WebImpl* >(this));
+               Ewk_Context* pContext = ewk_view_context_get(pWebNativeNode);
+               SysAssertf(pContext, "Failed to get webkit instance.");
+               ewk_context_did_start_download_callback_set(pContext, OnDidStartDownloadCallback, const_cast< _WebImpl* >(this));
+               ewk_view_open_panel_callback_set(pWebNativeNode, OnSelectUploadFile, const_cast< _WebImpl* >(this));
 
-       evas_object_event_callback_add(pWebNativeNode, EVAS_CALLBACK_FOCUS_IN, OnWebNativeNodeFocusGained, this);
+               evas_object_event_callback_add(pWebNativeNode, EVAS_CALLBACK_FOCUS_IN, OnWebNativeNodeFocusGained, this);
+       }
 }
 
 
@@ -3182,67 +3205,69 @@ void
 _WebImpl::RemoveEventListenerCallback(void) const
 {
        Evas_Object* pWebNativeNode = __pWebCore->GetWebNativeNode();
-       SysTryReturnVoidResult(NID_WEB_CTRL, pWebNativeNode, E_SYSTEM, "[%s] Failed to get Web evas object.", GetErrorMessage(E_SYSTEM));
-
-       _EcoreEvas* pEcoreEvas = GetEcoreEvasMgr()->GetEcoreEvas();
-       SysAssertf(pEcoreEvas, "Failed to get Ui ecore evas");
+       if (pWebNativeNode)
+       {
+               _EcoreEvas* pEcoreEvas = GetEcoreEvasMgr()->GetEcoreEvas();
+               SysAssertf(pEcoreEvas, "Failed to get Ui ecore evas");
 
-       Evas_Object* pWinObject = pEcoreEvas->GetWindowObject();
-       SysAssertf(pWinObject, "Failed to get Ui window evas object");
+               Evas_Object* pWinObject = pEcoreEvas->GetWindowObject();
+               SysAssertf(pWinObject, "Failed to get Ui window evas object");
 
-       evas_object_smart_callback_del(pWebNativeNode, "create,window", OnWebWindowCreateRequested);
-       evas_object_smart_callback_del(pWebNativeNode, "close,window", OnWebWindowClosedRequested);
+               evas_object_smart_callback_del(pWebNativeNode, "create,window", OnWebWindowCreateRequested);
+               evas_object_smart_callback_del(pWebNativeNode, "close,window", OnWebWindowClosedRequested);
 
-       evas_object_smart_callback_del(pWebNativeNode, "policy,navigation,decide", OnLoadingRequested);
-       evas_object_smart_callback_del(pWebNativeNode, "load,started", OnLoadingStarted);
-       evas_object_smart_callback_del(pWebNativeNode, "load,finished", OnLoadingCompleted);
-       evas_object_smart_callback_del(pWebNativeNode, "load,progress", OnEstimatedProgress);
-       evas_object_smart_callback_del(pWebNativeNode, "load,progress,finished", OnProgressCompleted);
-       evas_object_smart_callback_del(pWebNativeNode, "load,stop", OnLoadingCanceled);
-       evas_object_smart_callback_del(pWebNativeNode, "load,error", OnLoadingErrorOccurred);
-       evas_object_smart_callback_del(pWebNativeNode, "title,changed", OnPageTitleReceived);
+               evas_object_smart_callback_del(pWebNativeNode, "policy,navigation,decide", OnLoadingRequested);
+               evas_object_smart_callback_del(pWebNativeNode, "load,started", OnLoadingStarted);
+               evas_object_smart_callback_del(pWebNativeNode, "load,finished", OnLoadingCompleted);
+               evas_object_smart_callback_del(pWebNativeNode, "load,progress", OnEstimatedProgress);
+               evas_object_smart_callback_del(pWebNativeNode, "load,progress,finished", OnProgressCompleted);
+               evas_object_smart_callback_del(pWebNativeNode, "load,stop", OnLoadingCanceled);
+               evas_object_smart_callback_del(pWebNativeNode, "load,error", OnLoadingErrorOccurred);
+               evas_object_smart_callback_del(pWebNativeNode, "title,changed", OnPageTitleReceived);
 
-       evas_object_smart_callback_del(pWebNativeNode, "requestToNative,json", OnHandleJavaScriptRequest);
+               evas_object_smart_callback_del(pWebNativeNode, "requestToNative,json", OnHandleJavaScriptRequest);
 
-       evas_object_smart_callback_del(pWinObject, "focus,in", OnWindowObjectFocusGained);
+               evas_object_smart_callback_del(pWinObject, "focus,in", OnWindowObjectFocusGained);
 
-       evas_object_smart_callback_del(pWebNativeNode, "inputmethod,changed", OnWebKeypadStateChanged);
-       evas_object_smart_callback_del(pWebNativeNode, "editorclient,ime,opened", OnWebKeypadOpened);
-       evas_object_smart_callback_del(pWebNativeNode, "editorclient,ime,closed", OnWebKeypadClosed);
+               evas_object_smart_callback_del(pWebNativeNode, "inputmethod,changed", OnWebKeypadStateChanged);
+               evas_object_smart_callback_del(pWebNativeNode, "editorclient,ime,opened", OnWebKeypadOpened);
+               evas_object_smart_callback_del(pWebNativeNode, "editorclient,ime,closed", OnWebKeypadClosed);
 
-       evas_object_smart_callback_del(pWebNativeNode, "authentication,challenge", OnHttpAuthenticationRequested);
-       evas_object_smart_callback_del(pWebNativeNode, "authentication,canceled", OnHttpAuthenticationCanceled);
+               evas_object_smart_callback_del(pWebNativeNode, "authentication,challenge", OnHttpAuthenticationRequested);
+               evas_object_smart_callback_del(pWebNativeNode, "authentication,canceled", OnHttpAuthenticationCanceled);
 
-       evas_object_smart_callback_del(pWebNativeNode, "geolocation,permission,request", OnGeolocationPermissionRequested);
+               evas_object_smart_callback_del(pWebNativeNode, "geolocation,permission,request", OnGeolocationPermissionRequested);
 
-       ewk_view_javascript_alert_callback_set(null, null, null);
-       ewk_view_javascript_prompt_callback_set(null, null, null);
-       ewk_view_javascript_confirm_callback_set(null, null, null);
+               ewk_view_javascript_alert_callback_set(null, null, null);
+               ewk_view_javascript_prompt_callback_set(null, null, null);
+               ewk_view_javascript_confirm_callback_set(null, null, null);
 
-       evas_object_smart_callback_del(pWebNativeNode, "policy,response,decide", OnWebDataReceived);
+               evas_object_smart_callback_del(pWebNativeNode, "policy,response,decide", OnWebDataReceived);
 
-       evas_object_smart_callback_del(pWebNativeNode, "load,nonemptylayout,finished", OnWebPageShowRequested);
-       evas_object_smart_callback_del(pWebNativeNode, "request,certificate,confirm", OnCertificateRequested);
-       evas_object_smart_callback_del(pWebNativeNode, "usermedia,permission,request", OnGetUserMediaPermissionRequsted);
+               evas_object_smart_callback_del(pWebNativeNode, "load,nonemptylayout,finished", OnWebPageShowRequested);
+               evas_object_smart_callback_del(pWebNativeNode, "request,certificate,confirm", OnCertificateRequested);
+               evas_object_smart_callback_del(pWebNativeNode, "usermedia,permission,request", OnGetUserMediaPermissionRequsted);
 
-       evas_object_smart_callback_del(pWebNativeNode, "notification,permission,request", OnNotificationPermissionRequested);
-       evas_object_smart_callback_del(pWebNativeNode, "notification,show", OnNotificationShow);
-       evas_object_smart_callback_del(pWebNativeNode, "notification,cancel", OnNotificationCancel);
-       evas_object_smart_callback_del(pWebNativeNode, "protocolhandler,registration,requested", OnProtocolHandlerRegistrationRequested);
-       evas_object_smart_callback_del(pWebNativeNode, "protocolhandler,isregistered", OnIsProtocolHandlerRegistered);
-       evas_object_smart_callback_del(pWebNativeNode, "protocolhandler,unregistration,requested", OnProtocolHandlerUnregistrationRequested);
+               evas_object_smart_callback_del(pWebNativeNode, "notification,permission,request", OnNotificationPermissionRequested);
+               evas_object_smart_callback_del(pWebNativeNode, "notification,show", OnNotificationShow);
+               evas_object_smart_callback_del(pWebNativeNode, "notification,cancel", OnNotificationCancel);
+               evas_object_smart_callback_del(pWebNativeNode, "protocolhandler,registration,requested", OnProtocolHandlerRegistrationRequested);
+               evas_object_smart_callback_del(pWebNativeNode, "protocolhandler,isregistered", OnIsProtocolHandlerRegistered);
+               evas_object_smart_callback_del(pWebNativeNode, "protocolhandler,unregistration,requested", OnProtocolHandlerUnregistrationRequested);
 
-       evas_object_smart_callback_del(pWebNativeNode, "contenthandler,registration,requested", OnContentHandlerRegistrationRequested);
-       evas_object_smart_callback_del(pWebNativeNode, "contenthandler,isregistered", OnIsContentHandlerRegistered);
-       evas_object_smart_callback_del(pWebNativeNode, "contenthandler,unregistration,requested", OnContentHandlerUnregistrationRequested);
+               evas_object_smart_callback_del(pWebNativeNode, "contenthandler,registration,requested", OnContentHandlerRegistrationRequested);
+               evas_object_smart_callback_del(pWebNativeNode, "contenthandler,isregistered", OnIsContentHandlerRegistered);
+               evas_object_smart_callback_del(pWebNativeNode, "contenthandler,unregistration,requested", OnContentHandlerUnregistrationRequested);
 
-       evas_object_smart_callback_del(pWebNativeNode, "text,found", OnTextFound);
+               evas_object_smart_callback_del(pWebNativeNode, "text,found", OnTextFound);
 
-       evas_object_smart_callback_del(pWebNativeNode, "touchmove,handled", OnWebPreventDefaultTriggered);
+               evas_object_smart_callback_del(pWebNativeNode, "touchmove,handled", OnWebPreventDefaultTriggered);
+               evas_object_smart_callback_del(pWebNativeNode, "icon,received", OnFaviconReceived);
 
-       ewk_view_open_panel_callback_set(null, null, null);
+               ewk_view_open_panel_callback_set(null, null, null);
 
-       evas_object_event_callback_del(pWebNativeNode, EVAS_CALLBACK_FOCUS_IN, OnWebNativeNodeFocusGained);
+               evas_object_event_callback_del(pWebNativeNode, EVAS_CALLBACK_FOCUS_IN, OnWebNativeNodeFocusGained);
+       }
 }
 
 
@@ -3790,6 +3815,15 @@ _WebImpl::OnHandleLoadingEvent(const IEventArg& arg)
                break;
        }
 
+       case WEB_EVENT_LOADINGLISTENER_FAVICON_RECEIVED:
+       {
+               std::unique_ptr<Bitmap> pFavicon(GetFaviconN());
+               SysTryReturn(NID_WEB_CTRL, pFavicon.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+               pLoadingListner->OnFaviconReceived(*pFavicon.get());
+               break;
+       }
+
        default:
        {
                SysAssert(false);