From e394d9301dfe0d3cf2ad245113e77695ac355bc9 Mon Sep 17 00:00:00 2001 From: Jinkun Jang Date: Sat, 16 Mar 2013 15:12:35 +0900 Subject: [PATCH] sync with master --- inc/FWebBookmarkItem.h | 15 ++ inc/FWebControls.h | 1 + inc/FWebCtrlIWebUiEventListener.h | 27 +- inc/FWebCtrlIWebUiEventListenerF.h | 28 +- inc/FWebCtrlWebSetting.h | 26 +- inc/FWebWebHistory.h | 4 - src/FWebWebBookmark.cpp | 3 +- src/FWebWebHistory.cpp | 5 +- src/controls/FWebCtrlWeb.cpp | 20 +- src/controls/FWebCtrl_EflWebkit.cpp | 4 +- src/controls/FWebCtrl_IWebEventListener.h | 1 + src/controls/FWebCtrl_WebEvent.cpp | 4 + src/controls/FWebCtrl_WebEventArg.h | 12 +- src/controls/FWebCtrl_WebImpl.cpp | 414 +++++++++++++++++++----------- src/controls/FWebCtrl_WebImpl.h | 13 +- 15 files changed, 366 insertions(+), 211 deletions(-) mode change 100644 => 100755 src/controls/FWebCtrl_IWebEventListener.h diff --git a/inc/FWebBookmarkItem.h b/inc/FWebBookmarkItem.h index 08ef21d..62f0564 100755 --- a/inc/FWebBookmarkItem.h +++ b/inc/FWebBookmarkItem.h @@ -91,6 +91,9 @@ public: * * @since 2.1 * + * @privlevel platform + * @privilege http://tizen.org/privilege/bookmark.read + * * @return The title of the current bookmark item */ Tizen::Base::String GetTitle(void) const; @@ -100,6 +103,9 @@ public: * * @since 2.1 * + * @privlevel platform + * @privilege http://tizen.org/privilege/bookmark.read + * * @return The URL of the current bookmark item @n * If the item type is folder, this method will return the empty string. * @see IsFolder() @@ -113,6 +119,9 @@ public: * * @return The image * + * @privlevel platform + * @privilege http://tizen.org/privilege/bookmark.read + * * @exception E_SUCCESS The method is successful. * @exception E_SYSTEM Either of the following conditions has occurred: @n * - The method cannot proceed due to a severe system error. @n @@ -126,6 +135,9 @@ public: * * @since 2.1 * + * @privlevel platform + * @privilege http://tizen.org/privilege/bookmark.read + * * @return The parent folder id of the current bookmark item @n * If the current bookmark item is the one in topmost level, this method will return ::ROOT_FOLDER_ID. */ @@ -136,6 +148,9 @@ public: * * @since 2.1 * + * @privlevel platform + * @privilege http://tizen.org/privilege/bookmark.read + * * @return @c true if the type of current bookmark item is folder, @n * else @c false */ diff --git a/inc/FWebControls.h b/inc/FWebControls.h index 450316a..6473a43 100755 --- a/inc/FWebControls.h +++ b/inc/FWebControls.h @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include diff --git a/inc/FWebCtrlIWebUiEventListener.h b/inc/FWebCtrlIWebUiEventListener.h index 0f8b087..9662c74 100755 --- a/inc/FWebCtrlIWebUiEventListener.h +++ b/inc/FWebCtrlIWebUiEventListener.h @@ -57,7 +57,7 @@ public: * * @since 2.0 * - * @param[in] source The source of the event + * @param[in] source The source of the event */ virtual void OnWebPageShowRequested(Tizen::Web::Controls::Web& source) = 0; @@ -80,7 +80,7 @@ public: * * @since 2.0 * - * @param[in] source The source of the closing event + * @param[in] source The source of the closing event */ virtual void OnWebWindowCloseRequested(Tizen::Web::Controls::Web& source) = 0; @@ -89,12 +89,24 @@ public: * * @since 2.0 * - * @param[in] source The source of the event + * @param[in] source The source of the event * @param[in] startPoint The starting point of the selected block * @param[in] endPoint The ending point of the selected block */ virtual void OnWebPageBlockSelected(Tizen::Web::Controls::Web& source, Tizen::Graphics::Point& startPoint, Tizen::Graphics::Point& endPoint) = 0; + /** + * Called just after touch move event whether preventDefault() method is triggered or not. @n + * The application which wants to support W3C preventDefault() feature is recommended to use this callback and delay to handle touch move event until receiving this callback if needed. + * + * @since 2.1 + * + * @param[in] source The source of the event + * @param[in] trigger Set to @c true if the preventDefault() method is triggered, @n + * else @c false + * @remarks This callback is always called just after touch move event and return true when preventDefault() is triggered on touch start or touch move event. + */ + virtual void OnWebPreventDefaultTriggered(Tizen::Web::Controls::Web& source, bool trigger) {}; protected: // @@ -104,15 +116,6 @@ protected: // // @since 2.0 // - virtual void IWebUiEventListener_Reserved1(void) {}; - - // - // This method is for internal use only. Using this method can cause behavioral, security-related, and consistency-related issues in the application. - // - // Gets the Impl instance. - // - // @since 2.0 - // virtual void IWebUiEventListener_Reserved2(void) {}; // diff --git a/inc/FWebCtrlIWebUiEventListenerF.h b/inc/FWebCtrlIWebUiEventListenerF.h index 5a3b059..9e819f5 100755 --- a/inc/FWebCtrlIWebUiEventListenerF.h +++ b/inc/FWebCtrlIWebUiEventListenerF.h @@ -57,7 +57,7 @@ public: * * @since 2.1 * - * @param[in] source The source of the event + * @param[in] source The source of the event */ virtual void OnWebPageShowRequested(Tizen::Web::Controls::Web& source) = 0; @@ -78,7 +78,7 @@ public: * * @since 2.1 * - * @param[in] source The source of the closing event + * @param[in] source The source of the closing event */ virtual void OnWebWindowCloseRequested(Tizen::Web::Controls::Web& source) = 0; @@ -87,22 +87,26 @@ public: * * @since 2.1 * - * @param[in] source The source of the event + * @param[in] source The source of the event * @param[in] startPoint The starting point of the selected block * @param[in] endPoint The ending point of the selected block */ virtual void OnWebPageBlockSelected(Tizen::Web::Controls::Web& source, Tizen::Graphics::FloatPoint& startPoint, Tizen::Graphics::FloatPoint& endPoint) = 0; -protected: - // - // This method is for internal use only. Using this method can cause behavioral, security-related, and consistency-related issues in the application. - // - // Gets the Impl instance. - // - // @since 2.1 - // - virtual void IWebUiEventListenerF_Reserved1(void) {}; + /** + * Called just after touch move event whether preventDefault() method is triggered or not. @n + * The application which wants to support W3C preventDefault() feature is recommended to use this callback and delay to handle touch move event until receiving this callback if needed. + * + * @since 2.1 + * + * @param[in] source The source of the event + * @param[in] trigger Set to @c true if the preventDefault() method is triggered, @n + * else @c false + * @remarks This callback is always called just after touch move event and return true when preventDefault() is triggered on touch start or touch move event. + */ + virtual void OnWebPreventDefaultTriggered(Tizen::Web::Controls::Web& source, bool trigger) {}; +protected: // // This method is for internal use only. Using this method can cause behavioral, security-related, and consistency-related issues in the application. // diff --git a/inc/FWebCtrlWebSetting.h b/inc/FWebCtrlWebSetting.h index 9cef0cd..1fe1596 100755 --- a/inc/FWebCtrlWebSetting.h +++ b/inc/FWebCtrlWebSetting.h @@ -101,12 +101,15 @@ public: virtual ~WebSetting(void); /** - * Sets a cache control strategy for a %Web control. - * - * @since 2.0 - * - * @param[in] mode A cache mode - */ + * Sets a cache control strategy for a %Web control. + * + * @since 2.0 + * + * @privlevel public + * @privilege http://tizen.org/privilege/web.service + * + * @param[in] mode A cache mode + */ void SetCacheControl(CacheMode mode); /** @@ -225,6 +228,9 @@ public: * * @since 2.0 * + * @privlevel public + * @privilege http://tizen.org/privilege/web.service + * * @param[in] mode A certificate error handling mode */ void SetCertificateErrorHandlingMode(CertificateErrorHandlingMode mode); @@ -304,6 +310,9 @@ public: * * @since 2.0 * + * @privlevel public + * @privilege http://tizen.org/privilege/web.service + * * @param[in] enable Set to @c true if the %Web control should support html5 geolocation feature, @n * else @c false */ @@ -330,8 +339,6 @@ public: * * @param[in] enable Set to @c true if the %Web control should save form data automatically and supports autocomplete feature, @n * else @c false - * @exception E_SUCCESS The method is successful. - * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. */ void SetAutoFormDataShowEnabled(bool enable); @@ -350,13 +357,12 @@ public: * Decides if a %Web control saves id/password for login form automatically and supports autofill feature. * * @since 2.1 + * * @privlevel public * @privilege http://tizen.org/privilege/web.service * * @param[in] enable Set to @c true if the %Web control should save login id/password automatically and supports autofill feature, @n * else @c false - * @exception E_SUCCESS The method is successful. - * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. */ void SetAutoLoginFormFillEnabled(bool enable); diff --git a/inc/FWebWebHistory.h b/inc/FWebWebHistory.h index 2d316ea..f961b8e 100755 --- a/inc/FWebWebHistory.h +++ b/inc/FWebWebHistory.h @@ -69,13 +69,9 @@ public: * * @since 2.0 * - * @privlevel public - * @privilege http://tizen.org/privilege/web.privacy - * * @return An error code * @exception E_SUCCESS The method is successful. * @exception E_SYSTEM A system error has occurred. - * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method. */ result Construct(void); diff --git a/src/FWebWebBookmark.cpp b/src/FWebWebBookmark.cpp index 93bc54a..84bad03 100755 --- a/src/FWebWebBookmark.cpp +++ b/src/FWebWebBookmark.cpp @@ -68,7 +68,7 @@ WebBookmark::Construct(void) __pWebBookmarkImpl = pWebBookmarkImpl.release(); - return r; + return E_SUCCESS; } @@ -154,6 +154,7 @@ WebBookmark::GetItemCount(void) const { SysAssertf(__pWebBookmarkImpl != null, "Not yet constructed. Construct() should be called before use."); + ClearLastResult(); result r = E_SUCCESS; r = _AccessController::CheckUserPrivilege(_PRV_BOOKMARK_READ); diff --git a/src/FWebWebHistory.cpp b/src/FWebWebHistory.cpp index 5e1cfdf..92d34f8 100755 --- a/src/FWebWebHistory.cpp +++ b/src/FWebWebHistory.cpp @@ -57,9 +57,6 @@ WebHistory::Construct(void) result r = E_SUCCESS; - r = _AccessController::CheckUserPrivilege(_PRV_WEB_PRIVACY); - SysTryReturnResult(NID_WEB, r == E_SUCCESS, E_PRIVILEGE_DENIED, "The application does not have the privilege to call this method."); - std::unique_ptr<_WebHistoryImpl> pWebHistoryImpl(new (std::nothrow) _WebHistoryImpl()); SysTryReturnResult(NID_WEB, pWebHistoryImpl.get(), E_OUT_OF_MEMORY, "Memory allocation failed."); @@ -68,7 +65,7 @@ WebHistory::Construct(void) __pWebHistoryImpl = pWebHistoryImpl.release(); - return r; + return E_SUCCESS; } diff --git a/src/controls/FWebCtrlWeb.cpp b/src/controls/FWebCtrlWeb.cpp index e707326..438b1b6 100755 --- a/src/controls/FWebCtrlWeb.cpp +++ b/src/controls/FWebCtrlWeb.cpp @@ -75,6 +75,7 @@ Web::Construct(const Rectangle& rect) return E_SUCCESS; } + result Web::Construct(const FloatRectangle& rect) { @@ -380,7 +381,9 @@ Web::SetZoomLevel(float level) _WebImpl* pWebImpl = _WebImpl::GetInstance(this); SysAssertf(pWebImpl != null && pWebImpl->HasValidNativeNode(), "Not yet constructed or Not attached to parent control."); - result r = pWebImpl->SetZoomLevel(level); + result r = E_SUCCESS; + + r = pWebImpl->SetZoomLevel(level); SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); SysLog(NID_WEB_CTRL, "The current value of level is %f", level); @@ -505,8 +508,7 @@ Web::ReleaseBlock(void) result r = E_SUCCESS; - r = pWebImpl->ReleaseBlock(); - SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + pWebImpl->ReleaseBlock(); return E_SUCCESS; } @@ -520,8 +522,7 @@ Web::GetBlockRange(Point& startPoint, Point& endPoint) const result r = E_SUCCESS; - r = pWebImpl->GetBlockRange(startPoint, endPoint); - SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + pWebImpl->GetBlockRange(startPoint, endPoint); return E_SUCCESS; } @@ -535,8 +536,7 @@ Web::GetBlockRange(FloatPoint& startPoint, FloatPoint& endPoint) const result r = E_SUCCESS; - r = pWebImpl->GetBlockRange(startPoint, endPoint); - SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + pWebImpl->GetBlockRange(startPoint, endPoint); return E_SUCCESS; } @@ -558,8 +558,7 @@ Web::SetScrollEnabled(bool enable) _WebImpl* pWebImpl = _WebImpl::GetInstance(this); SysAssertf(pWebImpl != null, "Not yet constructed or Not attached to parent control."); - result r = pWebImpl->SetScrollEnabled(enable); - SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + pWebImpl->SetScrollEnabled(enable); SysLog(NID_WEB_CTRL, "The current value of enable is %d", enable); @@ -668,8 +667,7 @@ Web::SetPrivateBrowsingEnabled(bool enable) r = _AccessController::CheckUserPrivilege(_PRV_WEB_SERVICE); SysTryReturnResult(NID_WEB_CTRL, r == E_SUCCESS, E_PRIVILEGE_DENIED, "The application does not have the privilege to call this method."); - r = pWebImpl->SetPrivateBrowsingEnabled(enable); - SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + pWebImpl->SetPrivateBrowsingEnabled(enable); SysLog(NID_WEB_CTRL, "The current value of enable is %d", enable); diff --git a/src/controls/FWebCtrl_EflWebkit.cpp b/src/controls/FWebCtrl_EflWebkit.cpp index df9ade9..6c40b11 100755 --- a/src/controls/FWebCtrl_EflWebkit.cpp +++ b/src/controls/FWebCtrl_EflWebkit.cpp @@ -100,8 +100,6 @@ _EflWebkit::Construct(const Rectangle& rect, VisualElement& containerVisualEleme __pWebFrame = ewk_view_add(pEvas); SysTryReturnResult(NID_WEB_CTRL, __pWebFrame, E_SYSTEM, "A system error has been occurred. Failed to create webkit instance."); - pEflNode->AddNativeSmartObject(containerVisualElement, __pWebFrame); - evas_object_pass_events_set(__pWebFrame, EINA_TRUE); r = SetWebConfiguration(); @@ -113,6 +111,8 @@ _EflWebkit::Construct(const Rectangle& rect, VisualElement& containerVisualEleme evas_object_resize(__pWebFrame, pXformer->TransformHorizontal(rect.width), pXformer->TransformVertical(rect.height)); evas_object_move(__pWebFrame, pXformer->TransformHorizontal(rect.x), pXformer->TransformVertical(rect.y)); + pEflNode->AddNativeSmartObject(containerVisualElement, __pWebFrame); + return E_SUCCESS; } diff --git a/src/controls/FWebCtrl_IWebEventListener.h b/src/controls/FWebCtrl_IWebEventListener.h old mode 100644 new mode 100755 index 23e723b..14114c6 --- a/src/controls/FWebCtrl_IWebEventListener.h +++ b/src/controls/FWebCtrl_IWebEventListener.h @@ -46,6 +46,7 @@ public: virtual result OnHandleLoadingEvent(const Tizen::Base::Runtime::IEventArg& arg) = 0; virtual result OnHandleWebDownloadEvent(const Tizen::Base::Runtime::IEventArg& arg) = 0; virtual result OnHandleWebUiEvent(const Tizen::Base::Runtime::IEventArg& arg) = 0; + virtual result OnHandleWebUiEventF(const Tizen::Base::Runtime::IEventArg& arg) = 0; virtual result OnHandleTextSearchEvent(const Tizen::Base::Runtime::IEventArg& arg) = 0; }; // _IWebEventListener diff --git a/src/controls/FWebCtrl_WebEvent.cpp b/src/controls/FWebCtrl_WebEvent.cpp index 7a45d9f..ad2f1af 100755 --- a/src/controls/FWebCtrl_WebEvent.cpp +++ b/src/controls/FWebCtrl_WebEvent.cpp @@ -94,6 +94,10 @@ _WebEvent::FireImpl(Tizen::Base::Runtime::IEventListener& listener, const Tizen: r = pWebListener->OnHandleWebUiEvent(arg); break; + case WEB_EVENT_WEBUIEVENTLISTENER_FLOAT: + r = pWebListener->OnHandleWebUiEventF(arg); + break; + case WEB_EVENT_TEXTSEARCHLISTENER: r = pWebListener->OnHandleTextSearchEvent(arg); break; diff --git a/src/controls/FWebCtrl_WebEventArg.h b/src/controls/FWebCtrl_WebEventArg.h index c2fd78f..236854b 100755 --- a/src/controls/FWebCtrl_WebEventArg.h +++ b/src/controls/FWebCtrl_WebEventArg.h @@ -69,8 +69,15 @@ enum _WebEventType WEB_EVENT_WEBUIEVENTLISTENER_PAGE_BLOCK_SELECTED, WEB_EVENT_WEBUIEVENTLISTENER_PAGE_SHOW_REQUESTED, WEB_EVENT_WEBUIEVENTLISTENER_WINDOW_CLOSE_REQUSTED, + WEB_EVENT_WEBUIEVENTLISTENER_PREVENT_DEFAULT_TRIGGERED, - WEB_EVENT_TEXTSEARCHLISTENER = 0x500, + WEB_EVENT_WEBUIEVENTLISTENER_FLOAT = 0x500, + WEB_EVENT_WEBUIEVENTLISTENER_PAGE_BLOCK_SELECTED_FLOAT, + WEB_EVENT_WEBUIEVENTLISTENER_PAGE_SHOW_REQUESTED_FLOAT, + WEB_EVENT_WEBUIEVENTLISTENER_WINDOW_CLOSE_REQUSTED_FLOAT, + WEB_EVENT_WEBUIEVENTLISTENER_PREVENT_DEFAULT_TRIGGERED_FLOAT, + + WEB_EVENT_TEXTSEARCHLISTENER = 0x600, WEB_EVENT_TEXTSEARCHLISTENER_TEXT_FOUND }; @@ -185,8 +192,7 @@ public: { BLOCK_START, BLOCK_END, - BLOCK_START_FLOAT, - BLOCK_END_FLOAT + PREVENT_DEFAULT }; result SetEventInfo(EventInfoKey key, const Tizen::Base::Object& value); diff --git a/src/controls/FWebCtrl_WebImpl.cpp b/src/controls/FWebCtrl_WebImpl.cpp index 252ab61..aa75d06 100755 --- a/src/controls/FWebCtrl_WebImpl.cpp +++ b/src/controls/FWebCtrl_WebImpl.cpp @@ -1128,6 +1128,22 @@ OnDidStartDownloadCallback(const char* pUrl, void* pUserData) } +result +FireWebPageShowRequestedEvent(_WebImpl* pImpl, int event) +{ + result r = E_SUCCESS; + + std::unique_ptr<_WebUiEventArg> pEventArg(new (std::nothrow) _WebUiEventArg(event)); + SysTryReturnResult(NID_WEB_CTRL, pEventArg.get(), E_OUT_OF_MEMORY, "Memory allocation failed."); + + 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 OnWebPageShowRequested(void* pUserData, Evas_Object* pView, void* pEventInfo) { @@ -1138,23 +1154,15 @@ OnWebPageShowRequested(void* pUserData, Evas_Object* pView, void* pEventInfo) { result r = E_SUCCESS; - std::unique_ptr<_WebUiEventArg> pEventArg(new (std::nothrow) _WebUiEventArg(WEB_EVENT_WEBUIEVENTLISTENER_PAGE_SHOW_REQUESTED)); - 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()); + r = FireWebPageShowRequestedEvent(pImpl, WEB_EVENT_WEBUIEVENTLISTENER_PAGE_SHOW_REQUESTED); SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); - pEventArg.release(); } if (pImpl->GetUiEventListenerF()) { result r = E_SUCCESS; - std::unique_ptr<_WebUiEventArg> pEventArg(new (std::nothrow) _WebUiEventArg(WEB_EVENT_WEBUIEVENTLISTENER_PAGE_SHOW_REQUESTED)); - 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()); + r = FireWebPageShowRequestedEvent(pImpl, WEB_EVENT_WEBUIEVENTLISTENER_PAGE_SHOW_REQUESTED_FLOAT); SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); - pEventArg.release(); } } @@ -1195,6 +1203,22 @@ OnWebWindowCreateRequested(void* pUserData, Evas_Object* pView, void* pEventInfo } +result +FireWebWindowClosedRequestedEvent(_WebImpl* pImpl, int event) +{ + result r = E_SUCCESS; + + std::unique_ptr<_WebUiEventArg> pEventArg(new (std::nothrow) _WebUiEventArg(event)); + SysTryReturnResult(NID_WEB_CTRL, pEventArg.get(), E_OUT_OF_MEMORY, "Memory allocation failed."); + + 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 OnWebWindowClosedRequested(void* pUserData, Evas_Object* pView, void* pEventInfo) { @@ -1206,23 +1230,58 @@ OnWebWindowClosedRequested(void* pUserData, Evas_Object* pView, void* pEventInfo { result r = E_SUCCESS; - std::unique_ptr<_WebUiEventArg> pEventArg(new (std::nothrow) _WebUiEventArg(WEB_EVENT_WEBUIEVENTLISTENER_WINDOW_CLOSE_REQUSTED)); - SysTryReturnVoidResult(NID_WEB_CTRL, pEventArg.get(), E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY)); - - r = pChildImpl->GetWebEvent()->FireAsync(*pEventArg.get()); + r = FireWebWindowClosedRequestedEvent(pChildImpl, WEB_EVENT_WEBUIEVENTLISTENER_WINDOW_CLOSE_REQUSTED); SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); - pEventArg.release(); } if (pParentImpl->GetUiEventListenerF()) { result r = E_SUCCESS; - std::unique_ptr<_WebUiEventArg> pEventArg(new (std::nothrow) _WebUiEventArg(WEB_EVENT_WEBUIEVENTLISTENER_WINDOW_CLOSE_REQUSTED)); - SysTryReturnVoidResult(NID_WEB_CTRL, pEventArg.get(), E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY)); + r = FireWebWindowClosedRequestedEvent(pChildImpl, WEB_EVENT_WEBUIEVENTLISTENER_WINDOW_CLOSE_REQUSTED_FLOAT); + SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); + } +} + + +result +FireWebPreventDefaultTriggeredEvent(_WebImpl* pImpl, int event, bool trigger) +{ + result r = E_SUCCESS; + + std::unique_ptr pPreventTrigger(new (std::nothrow) Boolean(trigger)); + std::unique_ptr<_WebUiEventArg> pEventArg(new (std::nothrow) _WebUiEventArg(event)); + SysTryReturnResult(NID_WEB_CTRL, pPreventTrigger.get() && pEventArg.get(), E_OUT_OF_MEMORY, " Memory allocation failed." ); + + r = pEventArg->SetEventInfo(_WebUiEventArg::PREVENT_DEFAULT, *pPreventTrigger.get()); + SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + + r = pImpl->GetWebEvent()->FireAsync(*pEventArg.get()); + SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + + return E_SUCCESS; +} + + +void +OnWebPreventDefaultTriggered(void* pUserData, Evas_Object* pView, void* pEventInfo) +{ + _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData); + Eina_Bool* pTrigger = reinterpret_cast< Eina_Bool* >(pEventInfo); + SysAssertf(pImpl && pTrigger, "Failed to request"); + + if (pImpl->GetUiEventListener()) + { + result r = E_SUCCESS; - r = pChildImpl->GetWebEvent()->FireAsync(*pEventArg.get()); + r = FireWebPreventDefaultTriggeredEvent(pImpl, WEB_EVENT_WEBUIEVENTLISTENER_PREVENT_DEFAULT_TRIGGERED, static_cast< bool >(*pTrigger)); + SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); + } + if (pImpl->GetUiEventListenerF()) + { + result r = E_SUCCESS; + + r = FireWebPreventDefaultTriggeredEvent(pImpl, WEB_EVENT_WEBUIEVENTLISTENER_PREVENT_DEFAULT_TRIGGERED_FLOAT, static_cast< bool >(*pTrigger)); SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); - pEventArg.release(); } } @@ -1757,7 +1816,7 @@ _WebImpl::_WebImpl(Web* pWeb, Tizen::Ui::_Control* pCore) __textSearch.__caseSensitive = false; __textSearch.__pending = 0; __textSearch.__currentIndex = 1; - __textSearch.__totalCount -1; + __textSearch.__totalCount = -1; __textSearch.__text = L""; } @@ -2642,7 +2701,10 @@ _WebImpl::GetElementByPointN(const FloatPoint& point) const { const Point integerPoint(_CoordinateSystemUtils::ConvertToInteger(point)); - return GetElementByPointN(integerPoint); + std::unique_ptr pHitElementResult(GetElementByPointN(integerPoint)); + SysTryReturn(NID_WEB_CTRL, pHitElementResult.get(), null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + + return pHitElementResult.release(); } @@ -2684,21 +2746,19 @@ _WebImpl::IsPrivateBrowsingEnabled(void) const } -result +void _WebImpl::SetPrivateBrowsingEnabled(bool enable) { if (__pWebCore->GetWebNativeNode() == null) { _WebSettingImpl::GetInstance(__pWebSetting.get())->SetPrivateBrowsingEnabled(enable); - return E_SUCCESS; + return; } Ewk_Settings* pSettings = ewk_view_settings_get(__pWebCore->GetWebNativeNode()); SysAssertf(pSettings, "Failed to get webkit instance."); ewk_settings_private_browsing_enabled_set(pSettings, static_cast< Eina_Bool >(enable)); - - return E_SUCCESS; } @@ -2901,12 +2961,10 @@ _WebImpl::SetTextSearchListener(ITextSearchListener* pTextSearchListener) } -result +void _WebImpl::SetScrollEnabled(bool enable) { _WebSettingImpl::GetInstance(__pWebSetting.get())->SetScrollEnabled(enable); - - return E_SUCCESS; } @@ -2936,7 +2994,7 @@ _WebImpl::InitJsBridgeList(void) __pJsBridgeList = std::move(pJsBridgeList); - return r; + return E_SUCCESS; } @@ -2951,7 +3009,7 @@ _WebImpl::AddJavaScriptBridge(const IJavaScriptBridge& jsBridge) r = __pJsBridgeList->Add(key, pJsBridge); SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); - return r; + return E_SUCCESS; } @@ -2966,7 +3024,7 @@ _WebImpl::RemoveJavaScriptBridge(const IJavaScriptBridge& jsBridge) r = __pJsBridgeList->Remove(key); SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); - return r; + return E_SUCCESS; } @@ -3109,6 +3167,8 @@ _WebImpl::SetEventListenerCallback(void) const 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); + 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)); @@ -3178,6 +3238,8 @@ _WebImpl::RemoveEventListenerCallback(void) const evas_object_smart_callback_del(pWebNativeNode, "text,found", OnTextFound); + evas_object_smart_callback_del(pWebNativeNode, "touchmove,handled", OnWebPreventDefaultTriggered); + ewk_view_open_panel_callback_set(null, null, null); evas_object_event_callback_del(pWebNativeNode, EVAS_CALLBACK_FOCUS_IN, OnWebNativeNodeFocusGained); @@ -3213,22 +3275,93 @@ _WebImpl::SetBlockSelectionPosition(const Point& startPoint) result _WebImpl::SetBlockSelectionPosition(const FloatPoint& startPoint) { - const Point integerPoint(_CoordinateSystemUtils::ConvertToInteger(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); - return SetBlockSelectionPosition(integerPoint); + 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; } -result +void +_WebImpl::FireWebPageBlockSelectedEvent(void) const +{ + result r = E_SUCCESS; + + std::unique_ptr startPoint(new (std::nothrow) Point()); + std::unique_ptr 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 startPoint(new (std::nothrow) FloatPoint()); + std::unique_ptr 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(); +} + + +void _WebImpl::ReleaseBlock(void) { ewk_view_command_execute(__pWebCore->GetWebNativeNode(), "Unselect", 0); - - return E_SUCCESS; } -result +void _WebImpl::GetBlockRange(Point& startPoint, Point& endPoint) const { Eina_Rectangle leftHandle; @@ -3246,12 +3379,10 @@ _WebImpl::GetBlockRange(Point& startPoint, Point& endPoint) const startPoint = __pWebCore->GetRelativeCoordinate(startPoint); endPoint = __pWebCore->GetRelativeCoordinate(endPoint); } - - return E_SUCCESS; } -result +void _WebImpl::GetBlockRange(FloatPoint& startPoint, FloatPoint& endPoint) const { Eina_Rectangle leftHandle; @@ -3269,8 +3400,6 @@ _WebImpl::GetBlockRange(FloatPoint& startPoint, FloatPoint& endPoint) const startPoint = __pWebCore->GetRelativeCoordinate(startPoint); endPoint = __pWebCore->GetRelativeCoordinate(endPoint); } - - return E_SUCCESS; } @@ -3352,47 +3481,6 @@ _WebImpl::GetPageSize(void) const void -_WebImpl::FireWebPageBlockSelectedEvent(void) const -{ - result r = E_SUCCESS; - - std::unique_ptr startPoint(new (std::nothrow) Point()); - std::unique_ptr endPoint(new (std::nothrow) Point()); - std::unique_ptr startPointF(new (std::nothrow) FloatPoint()); - std::unique_ptr endPointF(new (std::nothrow) FloatPoint()); - SysTryReturnVoidResult(NID_WEB_CTRL, startPoint.get() && endPoint.get() && startPointF.get() && endPointF.get(), E_OUT_OF_MEMORY, "[%s] Memory Allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY)); - - r = GetBlockRange(*startPoint.get(), *endPoint.get()); - SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); - - r = GetBlockRange(*startPointF.get(), *endPointF.get()); - SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); - - 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 = pEventArg->SetEventInfo(_WebUiEventArg::BLOCK_START_FLOAT, *startPointF.get()); - SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); - startPointF.release(); - - r = pEventArg->SetEventInfo(_WebUiEventArg::BLOCK_END_FLOAT, *endPointF.get()); - SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); - endPointF.release(); - - r = __pWebEvent->FireAsync(*pEventArg.get()); - SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r)); - pEventArg.release(); -} - -void _WebImpl::SetLoadingErrorOccurred(bool arg) { __isLoadingErrorOccurred = arg; @@ -3488,6 +3576,7 @@ _WebImpl::LaunchAppControl(const IEventArg& arg) } case WEB_EVENT_REQUEST_UNKNOWN: { + operationId = L"http://tizen.org/appcontrol/operation/view"; break; } default: @@ -3772,92 +3861,123 @@ _WebImpl::OnHandleWebUiEvent(const IEventArg& arg) SysLog(NID_WEB_CTRL, "The current value of event type is %d", pEventArg->GetEventType()); - IWebUiEventListener* pWebUiEventListener = GetUiEventListener(); - IWebUiEventListenerF* pWebUiEventListenerF = GetUiEventListenerF(); - SysTryReturnResult(NID_WEB_CTRL, pWebUiEventListener || pWebUiEventListenerF, E_SYSTEM, "A system error has been occurred. Web UI listener was not set or null."); + SysTryReturnResult(NID_WEB_CTRL, __pUserUiListener, E_SYSTEM, "A system error has been occurred. Web UI listener was not set or null."); - if (pWebUiEventListener) + switch (pEventArg->GetEventType()) { - switch (pEventArg->GetEventType()) - { - case WEB_EVENT_WEBUIEVENTLISTENER_PAGE_BLOCK_SELECTED: - { - Web* pWeb = dynamic_cast< Web* >(&(this->GetPublic())); + case WEB_EVENT_WEBUIEVENTLISTENER_PAGE_BLOCK_SELECTED: + { + Web* pWeb = dynamic_cast< Web* >(&(this->GetPublic())); - Point* pStartPoint = const_cast< Point* >(dynamic_cast< const Point* >(pEventArg->GetEventInfo(_WebUiEventArg::BLOCK_START))); - SysTryReturn(NID_WEB_CTRL, pStartPoint, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + Point* pStartPoint = const_cast< Point* >(dynamic_cast< const Point* >(pEventArg->GetEventInfo(_WebUiEventArg::BLOCK_START))); + SysTryReturn(NID_WEB_CTRL, pStartPoint, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); - Point* pEndPoint = const_cast< Point* >(dynamic_cast< const Point* >(pEventArg->GetEventInfo(_WebUiEventArg::BLOCK_END))); - SysTryReturn(NID_WEB_CTRL, pEndPoint, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + Point* pEndPoint = const_cast< Point* >(dynamic_cast< const Point* >(pEventArg->GetEventInfo(_WebUiEventArg::BLOCK_END))); + SysTryReturn(NID_WEB_CTRL, pEndPoint, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); - pWebUiEventListener->OnWebPageBlockSelected(*pWeb, *pStartPoint, *pEndPoint); - break; - } + __pUserUiListener->OnWebPageBlockSelected(*pWeb, *pStartPoint, *pEndPoint); + break; + } - case WEB_EVENT_WEBUIEVENTLISTENER_PAGE_SHOW_REQUESTED: - { - Web* pWeb = dynamic_cast< Web* >(&(this->GetPublic())); + case WEB_EVENT_WEBUIEVENTLISTENER_PAGE_SHOW_REQUESTED: + { + Web* pWeb = dynamic_cast< Web* >(&(this->GetPublic())); - pWebUiEventListener->OnWebPageShowRequested(*pWeb); - break; - } + __pUserUiListener->OnWebPageShowRequested(*pWeb); + break; + } - case WEB_EVENT_WEBUIEVENTLISTENER_WINDOW_CLOSE_REQUSTED: - { - Web* pWeb = dynamic_cast< Web* >(&(this->GetPublic())); + case WEB_EVENT_WEBUIEVENTLISTENER_WINDOW_CLOSE_REQUSTED: + { + Web* pWeb = dynamic_cast< Web* >(&(this->GetPublic())); - pWebUiEventListener->OnWebWindowCloseRequested(*pWeb); - break; - } + __pUserUiListener->OnWebWindowCloseRequested(*pWeb); + break; + } - default: - { - SysAssert(false); - } - } + case WEB_EVENT_WEBUIEVENTLISTENER_PREVENT_DEFAULT_TRIGGERED: + { + Web* pWeb = dynamic_cast< Web* >(&(this->GetPublic())); + + Boolean* pTrigger = const_cast< Boolean* >(dynamic_cast< const Boolean* >(pEventArg->GetEventInfo(_WebUiEventArg::PREVENT_DEFAULT))); + SysTryReturn(NID_WEB_CTRL, pTrigger, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + + __pUserUiListener->OnWebPreventDefaultTriggered(*pWeb, pTrigger->ToBool()); + break; } - if (pWebUiEventListenerF) + + default: { - switch (pEventArg->GetEventType()) - { - case WEB_EVENT_WEBUIEVENTLISTENER_PAGE_BLOCK_SELECTED: - { - Web* pWeb = dynamic_cast< Web* >(&(this->GetPublic())); + SysAssert(false); + } + } - FloatPoint* pStartPoint = const_cast< FloatPoint* >(dynamic_cast< const FloatPoint* >(pEventArg->GetEventInfo(_WebUiEventArg::BLOCK_START_FLOAT))); - SysTryReturn(NID_WEB_CTRL, pStartPoint, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + return E_SUCCESS; +} - FloatPoint* pEndPoint = const_cast< FloatPoint* >(dynamic_cast< const FloatPoint* >(pEventArg->GetEventInfo(_WebUiEventArg::BLOCK_END_FLOAT))); - SysTryReturn(NID_WEB_CTRL, pEndPoint, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); - pWebUiEventListenerF->OnWebPageBlockSelected(*pWeb, *pStartPoint, *pEndPoint); - break; - } +result +_WebImpl::OnHandleWebUiEventF(const IEventArg& arg) +{ + result r = E_SUCCESS; - case WEB_EVENT_WEBUIEVENTLISTENER_PAGE_SHOW_REQUESTED: - { - Web* pWeb = dynamic_cast< Web* >(&(this->GetPublic())); + const _WebUiEventArg* pEventArg = dynamic_cast< const _WebUiEventArg* >(&arg); + SysTryReturnResult(NID_WEB_CTRL, pEventArg, E_INVALID_ARG, "Invalid argument(s) is used. Type casting failed. argument must be IEventArg type."); - pWebUiEventListenerF->OnWebPageShowRequested(*pWeb); - break; - } + SysLog(NID_WEB_CTRL, "The current value of event type is %d", pEventArg->GetEventType()); - case WEB_EVENT_WEBUIEVENTLISTENER_WINDOW_CLOSE_REQUSTED: - { - Web* pWeb = dynamic_cast< Web* >(&(this->GetPublic())); + SysTryReturnResult(NID_WEB_CTRL, __pUserUiListenerF, E_SYSTEM, "A system error has been occurred. Web UI listener was not set or null."); - pWebUiEventListenerF->OnWebWindowCloseRequested(*pWeb); - break; - } + switch (pEventArg->GetEventType()) + { + case WEB_EVENT_WEBUIEVENTLISTENER_PAGE_BLOCK_SELECTED_FLOAT: + { + Web* pWeb = dynamic_cast< Web* >(&(this->GetPublic())); - default: - { - SysAssert(false); - } - } + FloatPoint* pStartPoint = const_cast< FloatPoint* >(dynamic_cast< const FloatPoint* >(pEventArg->GetEventInfo(_WebUiEventArg::BLOCK_START))); + SysTryReturn(NID_WEB_CTRL, pStartPoint, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + + FloatPoint* pEndPoint = const_cast< FloatPoint* >(dynamic_cast< const FloatPoint* >(pEventArg->GetEventInfo(_WebUiEventArg::BLOCK_END))); + SysTryReturn(NID_WEB_CTRL, pEndPoint, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + + __pUserUiListenerF->OnWebPageBlockSelected(*pWeb, *pStartPoint, *pEndPoint); + break; } - return r; + case WEB_EVENT_WEBUIEVENTLISTENER_PAGE_SHOW_REQUESTED_FLOAT: + { + Web* pWeb = dynamic_cast< Web* >(&(this->GetPublic())); + + __pUserUiListenerF->OnWebPageShowRequested(*pWeb); + break; + } + + case WEB_EVENT_WEBUIEVENTLISTENER_WINDOW_CLOSE_REQUSTED_FLOAT: + { + Web* pWeb = dynamic_cast< Web* >(&(this->GetPublic())); + + __pUserUiListenerF->OnWebWindowCloseRequested(*pWeb); + break; + } + + case WEB_EVENT_WEBUIEVENTLISTENER_PREVENT_DEFAULT_TRIGGERED_FLOAT: + { + Web* pWeb = dynamic_cast< Web* >(&(this->GetPublic())); + + Boolean* pTrigger = const_cast< Boolean* >(dynamic_cast< const Boolean* >(pEventArg->GetEventInfo(_WebUiEventArg::PREVENT_DEFAULT))); + SysTryReturn(NID_WEB_CTRL, pTrigger, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + + __pUserUiListenerF->OnWebPreventDefaultTriggered(*pWeb, pTrigger->ToBool()); + break; + } + + default: + { + SysAssert(false); + } + } + + return E_SUCCESS; } diff --git a/src/controls/FWebCtrl_WebImpl.h b/src/controls/FWebCtrl_WebImpl.h index adaa1d0..280169d 100755 --- a/src/controls/FWebCtrl_WebImpl.h +++ b/src/controls/FWebCtrl_WebImpl.h @@ -178,21 +178,23 @@ public: result SetBlockSelectionPosition(const Tizen::Graphics::FloatPoint& startPoint); - result ReleaseBlock(void); + void ReleaseBlock(void); - result GetBlockRange(Tizen::Graphics::Point& startPoint, Tizen::Graphics::Point& endPoint) const; + void GetBlockRange(Tizen::Graphics::Point& startPoint, Tizen::Graphics::Point& endPoint) const; - result GetBlockRange(Tizen::Graphics::FloatPoint& startPoint, Tizen::Graphics::FloatPoint& endPoint) const; + void GetBlockRange(Tizen::Graphics::FloatPoint& startPoint, Tizen::Graphics::FloatPoint& endPoint) const; void FireWebPageBlockSelectedEvent(void) const; + void FireWebPageBlockSelectedEventF(void) const; + Tizen::Base::String GetTextFromBlock(void) const; Tizen::Base::String* EvaluateJavascriptN(const Tizen::Base::String& scriptCode) const; bool IsPrivateBrowsingEnabled(void) const; - result SetPrivateBrowsingEnabled(bool enable); + void SetPrivateBrowsingEnabled(bool enable); void ClearHistory(void); @@ -263,7 +265,7 @@ public: result RemoveJavaScriptBridge(const IJavaScriptBridge& jsBridge); - result SetScrollEnabled(bool enable); + void SetScrollEnabled(bool enable); bool IsScrollEnabled(void) const; @@ -383,6 +385,7 @@ private: result OnHandleLoadingEvent(const Tizen::Base::Runtime::IEventArg& arg); result OnHandleWebDownloadEvent(const Tizen::Base::Runtime::IEventArg& arg); result OnHandleWebUiEvent(const Tizen::Base::Runtime::IEventArg& arg); + result OnHandleWebUiEventF(const Tizen::Base::Runtime::IEventArg& arg); result OnHandleTextSearchEvent(const Tizen::Base::Runtime::IEventArg& arg); private: -- 2.7.4