}
+result
+FireWebPageBlockSelectedEvent(_WebImpl* pImpl)
+{
+ result r = E_SUCCESS;
+
+ std::unique_ptr<Point> startPoint(new (std::nothrow) Point());
+ std::unique_ptr<Point> endPoint(new (std::nothrow) Point());
+ SysTryReturnResult(NID_WEB_CTRL, startPoint.get() && endPoint.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
+
+ pImpl->GetBlockRange(*startPoint.get(), *endPoint.get());
+
+ std::unique_ptr<_WebUiEventArg> pEventArg(new (std::nothrow) _WebUiEventArg(WEB_EVENT_WEBUIEVENTLISTENER_PAGE_BLOCK_SELECTED));
+ SysTryReturnResult(NID_WEB_CTRL, pEventArg.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
+
+ r = pEventArg->SetEventInfo(_WebUiEventArg::BLOCK_START, *startPoint.get());
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+ startPoint.release();
+
+ r = pEventArg->SetEventInfo(_WebUiEventArg::BLOCK_END, *endPoint.get());
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+ endPoint.release();
+
+ r = pImpl->GetWebEvent()->FireAsync(*pEventArg.get());
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+ pEventArg.release();
+
+ return E_SUCCESS;
+}
+
+
+result
+FireWebPageBlockSelectedEventF(_WebImpl* pImpl)
+{
+ result r = E_SUCCESS;
+
+ std::unique_ptr<FloatPoint> startPoint(new (std::nothrow) FloatPoint());
+ std::unique_ptr<FloatPoint> endPoint(new (std::nothrow) FloatPoint());
+
+ SysTryReturnResult(NID_WEB_CTRL, startPoint.get() && endPoint.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
+
+ pImpl->GetBlockRange(*startPoint.get(), *endPoint.get());
+
+ std::unique_ptr<_WebUiEventArg> pEventArg(new (std::nothrow) _WebUiEventArg(WEB_EVENT_WEBUIEVENTLISTENER_PAGE_BLOCK_SELECTED_FLOAT));
+ SysTryReturnResult(NID_WEB_CTRL, pEventArg.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
+
+ r = pEventArg->SetEventInfo(_WebUiEventArg::BLOCK_START, *startPoint.get());
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+ startPoint.release();
+
+ r = pEventArg->SetEventInfo(_WebUiEventArg::BLOCK_END, *endPoint.get());
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+ endPoint.release();
+
+ r = pImpl->GetWebEvent()->FireAsync(*pEventArg.get());
+ SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+ pEventArg.release();
+
+ return E_SUCCESS;
+}
+
+
+void
+OnWebPageBlockSelected(void* pUserData, Evas_Object* pView, void* pEventInfo)
+{
+ _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
+ Ewk_Text_Style* pStyle = reinterpret_cast< Ewk_Text_Style* >(pEventInfo);
+ SysAssertf(pImpl && pStyle, "Failed to request");
+
+ if (pImpl->GetUiEventListener())
+ {
+ result r = E_SUCCESS;
+
+ r = FireWebPageBlockSelectedEvent(pImpl);
+ SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+ }
+ if (pImpl->GetUiEventListenerF())
+ {
+ result r = E_SUCCESS;
+
+ r = FireWebPageBlockSelectedEventF(pImpl);
+ SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+ }
+}
+
+
Eina_Bool
OnSelectUploadFile(Evas_Object* pView, Eina_Bool multipleFile, Eina_List* pAcceptTypes, const char* pCapture, void* pUserData)
{
, __pUserKeypadEventListener(null)
, __pTextSearchListener(null)
, __pKeypad(null)
- , __pWebSetting(null)
, __pJsBridgeList(null)
, __pJsProvider(null)
, __pJsComparer(null)
r = __textSearch.__searchQueue.Construct();
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
- __pWebSetting = std::unique_ptr<WebSetting>(new (std::nothrow) WebSetting());
- SysTryReturn(NID_WEB_CTRL, __pWebSetting.get(), E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
-
r = InitJsBridgeList();
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
__pWebCore = dynamic_cast< _Web* >(&(GetCore()));
SysTryReturnResult(NID_WEB_CTRL, __pWebCore, E_SYSTEM, "A system error has been occurred. Failed to get web control");
- __pWebCore->SetWebSettingImpl(_WebSettingImpl::GetInstance(__pWebSetting.get()));
-
return E_SUCCESS;
}
{
result r = E_SUCCESS;
- r = SetSetting(*__pWebSetting.get());
+ r = SetSetting(*__pWebCore->GetSetting());
SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
- SetCookieEnabled(_WebSettingImpl::GetInstance(__pWebSetting.get())->IsCookieEnabled());
- SetPrivateBrowsingEnabled(_WebSettingImpl::GetInstance(__pWebSetting.get())->IsPrivateBrowsingEnabled());
- SetZoomLevel(_WebSettingImpl::GetInstance(__pWebSetting.get())->GetZoomLevel());
+ _WebSettingImpl* pWebSettingImpl = _WebSettingImpl::GetInstance(__pWebCore->GetSetting());
+
+ SetCookieEnabled(pWebSettingImpl->IsCookieEnabled());
+ SetPrivateBrowsingEnabled(pWebSettingImpl->IsPrivateBrowsingEnabled());
+ SetZoomLevel(pWebSettingImpl->GetZoomLevel());
SetEventListenerCallback();
ewk_settings_autofill_password_form_enabled_set(pSettings, static_cast< Eina_Bool >(setting.IsAutoLoginFormFillEnabled()));
}
- __pWebSetting->SetCertificateErrorHandlingMode(setting.GetCertificateErrorHandlingMode());
- __pWebSetting->SetDefaultTextEncoding(setting.GetDefaultTextEncoding());
- __pWebSetting->SetCacheControl(setting.GetCacheControl());
- __pWebSetting->SetFontSize(setting.GetFontSize());
- __pWebSetting->SetJavascriptEnabled(setting.IsJavascriptEnabled());
- __pWebSetting->SetAutoImageLoadEnabled(setting.IsAutoImageLoadEnabled());
- __pWebSetting->SetInputStyle(setting.GetInputStyle());
- __pWebSetting->SetUserAgent(setting.GetUserAgent());
- __pWebSetting->SetAutoFittingEnabled(setting.IsAutoFittingEnabled());
- __pWebSetting->SetJavaScriptPopupEnabled(setting.IsJavaScriptPopupEnabled());
- __pWebSetting->SetGeolocationEnabled(setting.IsGeolocationEnabled());
- __pWebSetting->SetAutoFormDataShowEnabled(setting.IsAutoFormDataShowEnabled());
- __pWebSetting->SetAutoLoginFormFillEnabled(setting.IsAutoLoginFormFillEnabled());
+ _WebSettingImpl* pWebSettingImpl = _WebSettingImpl::GetInstance(__pWebCore->GetSetting());
+
+ pWebSettingImpl->SetCertificateErrorHandlingMode(setting.GetCertificateErrorHandlingMode());
+ pWebSettingImpl->SetDefaultTextEncoding(setting.GetDefaultTextEncoding());
+ pWebSettingImpl->SetCacheControl(setting.GetCacheControl());
+ pWebSettingImpl->SetFontSize(setting.GetFontSize());
+ pWebSettingImpl->SetJavascriptEnabled(setting.IsJavascriptEnabled());
+ pWebSettingImpl->SetAutoImageLoadEnabled(setting.IsAutoImageLoadEnabled());
+ pWebSettingImpl->SetInputStyle(setting.GetInputStyle());
+ pWebSettingImpl->SetUserAgent(setting.GetUserAgent());
+ pWebSettingImpl->SetAutoFittingEnabled(setting.IsAutoFittingEnabled());
+ pWebSettingImpl->SetJavaScriptPopupEnabled(setting.IsJavaScriptPopupEnabled());
+ pWebSettingImpl->SetGeolocationEnabled(setting.IsGeolocationEnabled());
+ pWebSettingImpl->SetAutoFormDataShowEnabled(setting.IsAutoFormDataShowEnabled());
+ pWebSettingImpl->SetAutoLoginFormFillEnabled(setting.IsAutoLoginFormFillEnabled());
return E_SUCCESS;
}
WebSetting
_WebImpl::GetSetting(void) const
{
- return *__pWebSetting;
+ return *__pWebCore->GetSetting();
}
{
if (__pWebCore->GetWebNativeNode() == null)
{
- return _WebSettingImpl::GetInstance(__pWebSetting.get())->IsPrivateBrowsingEnabled();
+ return _WebSettingImpl::GetInstance(__pWebCore->GetSetting())->IsPrivateBrowsingEnabled();
}
Ewk_Settings* pSettings = ewk_view_settings_get(__pWebCore->GetWebNativeNode());
{
if (__pWebCore->GetWebNativeNode() == null)
{
- _WebSettingImpl::GetInstance(__pWebSetting.get())->SetPrivateBrowsingEnabled(enable);
+ _WebSettingImpl::GetInstance(__pWebCore->GetSetting())->SetPrivateBrowsingEnabled(enable);
return;
}
{
if (__pWebCore->GetWebNativeNode() == null)
{
- return _WebSettingImpl::GetInstance(__pWebSetting.get())->IsCookieEnabled();
+ return _WebSettingImpl::GetInstance(__pWebCore->GetSetting())->IsCookieEnabled();
}
Ewk_Context* pContext = ewk_view_context_get(__pWebCore->GetWebNativeNode());
{
if (__pWebCore->GetWebNativeNode() == null)
{
- _WebSettingImpl::GetInstance(__pWebSetting.get())->SetCookiEnabled(enable);
+ _WebSettingImpl::GetInstance(__pWebCore->GetSetting())->SetCookiEnabled(enable);
return;
}
void
_WebImpl::SetScrollEnabled(bool enable)
{
- _WebSettingImpl::GetInstance(__pWebSetting.get())->SetScrollEnabled(enable);
+ _WebSettingImpl::GetInstance(__pWebCore->GetSetting())->SetScrollEnabled(enable);
}
bool
_WebImpl::IsScrollEnabled(void) const
{
- return _WebSettingImpl::GetInstance(__pWebSetting.get())->IsScrollEnabled();
+ return _WebSettingImpl::GetInstance(__pWebCore->GetSetting())->IsScrollEnabled();
}
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, "text,style,state", OnWebPageBlockSelected, 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));
evas_object_smart_callback_del(pWebNativeNode, "touchmove,handled", OnWebPreventDefaultTriggered);
evas_object_smart_callback_del(pWebNativeNode, "icon,received", OnFaviconReceived);
+ evas_object_smart_callback_del(pWebNativeNode, "text,style,state", OnWebPageBlockSelected);
+
ewk_view_open_panel_callback_set(null, null, null);
evas_object_event_callback_del(pWebNativeNode, EVAS_CALLBACK_FOCUS_IN, OnWebNativeNodeFocusGained);
SysTryReturnResult(NID_WEB_CTRL, GetTextFromBlock().GetLength() > 0, E_INVALID_ARG, "Failed to set text selection up.");
- if (__pUserUiListener)
- {
- FireWebPageBlockSelectedEvent();
- }
-
return E_SUCCESS;
}
result
_WebImpl::SetBlockSelectionPosition(const FloatPoint& startPoint)
{
- Evas_Object* pWebNativeNode = __pWebCore->GetWebNativeNode();
-
- Ewk_View_Smart_Data* pSmartData = (Ewk_View_Smart_Data*) evas_object_smart_data_get(pWebNativeNode);
- SysAssertf(pSmartData, "Failed to request");
-
- Point absPoint(__pWebCore->GetAbsoluteCoordinate(_CoordinateSystemUtils::ConvertToInteger(startPoint)));
-
- pSmartData->api->text_selection_down(pSmartData, absPoint.x, absPoint.y);
- pSmartData->api->text_selection_up(pSmartData, absPoint.x, absPoint.y);
-
- ewk_view_command_execute(pWebNativeNode, "SelectWord", 0);
-
- SysTryReturnResult(NID_WEB_CTRL, GetTextFromBlock().GetLength() > 0, E_INVALID_ARG, "Failed to set text selection up.");
-
- if (__pUserUiListenerF)
- {
- FireWebPageBlockSelectedEventF();
- }
-
- return E_SUCCESS;
-}
-
-
-void
-_WebImpl::FireWebPageBlockSelectedEvent(void) const
-{
- result r = E_SUCCESS;
-
- std::unique_ptr<Point> startPoint(new (std::nothrow) Point());
- std::unique_ptr<Point> endPoint(new (std::nothrow) Point());
- SysTryReturnVoidResult(NID_WEB_CTRL, startPoint.get() && endPoint.get(), E_OUT_OF_MEMORY, "[%s] Memory Allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
-
- GetBlockRange(*startPoint.get(), *endPoint.get());
-
- std::unique_ptr<_WebUiEventArg> pEventArg(new (std::nothrow) _WebUiEventArg(WEB_EVENT_WEBUIEVENTLISTENER_PAGE_BLOCK_SELECTED));
- SysTryReturnVoidResult(NID_WEB_CTRL, pEventArg.get(), E_OUT_OF_MEMORY, "[%s] Memory Allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
-
- r = pEventArg->SetEventInfo(_WebUiEventArg::BLOCK_START, *startPoint.get());
- SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
- startPoint.release();
-
- r = pEventArg->SetEventInfo(_WebUiEventArg::BLOCK_END, *endPoint.get());
- SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
- endPoint.release();
-
- r = __pWebEvent->FireAsync(*pEventArg.get());
- SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
- pEventArg.release();
-}
-
-
-void
-_WebImpl::FireWebPageBlockSelectedEventF(void) const
-{
- result r = E_SUCCESS;
-
- std::unique_ptr<FloatPoint> startPoint(new (std::nothrow) FloatPoint());
- std::unique_ptr<FloatPoint> endPoint(new (std::nothrow) FloatPoint());
- SysTryReturnVoidResult(NID_WEB_CTRL, startPoint.get() && endPoint.get(), E_OUT_OF_MEMORY, "[%s] Memory Allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
-
- GetBlockRange(*startPoint.get(), *endPoint.get());
-
- std::unique_ptr<_WebUiEventArg> pEventArg(new (std::nothrow) _WebUiEventArg(WEB_EVENT_WEBUIEVENTLISTENER_PAGE_BLOCK_SELECTED_FLOAT));
- SysTryReturnVoidResult(NID_WEB_CTRL, pEventArg.get(), E_OUT_OF_MEMORY, "[%s] Memory Allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
-
- r = pEventArg->SetEventInfo(_WebUiEventArg::BLOCK_START, *startPoint.get());
- SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
- startPoint.release();
-
- r = pEventArg->SetEventInfo(_WebUiEventArg::BLOCK_END, *endPoint.get());
- SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
- endPoint.release();
-
- r = __pWebEvent->FireAsync(*pEventArg.get());
- SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
- pEventArg.release();
+ return SetBlockSelectionPosition(_CoordinateSystemUtils::ConvertToInteger(startPoint));
}
void
_WebImpl::GetBlockRange(Point& startPoint, Point& endPoint) const
{
- Eina_Rectangle leftHandle;
- Eina_Rectangle rightHandle;
-
- ewk_view_text_selection_range_get(__pWebCore->GetWebNativeNode(), &leftHandle, &rightHandle);
+ FloatPoint tempStartPoint;
+ FloatPoint tempEndPoint;
- startPoint.x = leftHandle.x;
- startPoint.y = leftHandle.y;
- endPoint.x = rightHandle.x + rightHandle.w;
- endPoint.y = rightHandle.y + rightHandle.h;
+ GetBlockRange(tempStartPoint, tempEndPoint);
- if ((endPoint.x != 0) && (endPoint.y != 0))
- {
- startPoint = __pWebCore->GetRelativeCoordinate(startPoint);
- endPoint = __pWebCore->GetRelativeCoordinate(endPoint);
- }
+ startPoint = _CoordinateSystemUtils::ConvertToInteger(tempStartPoint);
+ endPoint = _CoordinateSystemUtils::ConvertToInteger(tempEndPoint);
}
endPoint.x = _CoordinateSystemUtils::ConvertToFloat(rightHandle.x + rightHandle.w);
endPoint.y = _CoordinateSystemUtils::ConvertToFloat(rightHandle.y + rightHandle.h);
- if ((endPoint.x != 0) && (endPoint.y != 0))
+ if ((endPoint.x != 0.0f) && (endPoint.y != 0.0f))
{
startPoint = __pWebCore->GetRelativeCoordinate(startPoint);
endPoint = __pWebCore->GetRelativeCoordinate(endPoint);