From f793f069aa8fe79dc8fcff9d3b0173b2417388d2 Mon Sep 17 00:00:00 2001 From: Arnaud Renevier Date: Thu, 23 Apr 2015 14:52:33 -0700 Subject: [PATCH] WebViewEvasEventHandler does not rely on tizen_webview::WebView anymore WebViewEvasEventHandler will use EWebView directly This patch also renames SelectionControllerEfl::HideHandle to SelectionControllerEfl::HideHandles (because there are two handles) Change-Id: I47e5729c6918ec3188b837c93af7be693a073f80 Signed-off-by: Arnaud Renevier --- .../efl_integration/context_menu_controller_efl.cc | 2 +- tizen_src/ewk/efl_integration/eweb_view.cc | 8 +++-- tizen_src/ewk/efl_integration/eweb_view.h | 6 +++- .../efl_integration/private/ewk_view_private.cc | 5 ---- .../ewk/efl_integration/private/ewk_view_private.h | 1 - .../private/webview_delegate_ewk.cc | 34 ++++++++++++---------- .../efl_integration/private/webview_delegate_ewk.h | 16 +++++----- .../efl_integration/selection_controller_efl.cc | 4 +-- .../ewk/efl_integration/selection_controller_efl.h | 2 +- .../tizen_webview/public/tw_webview.cc | 16 ++++------ .../tizen_webview/public/tw_webview_delegate.h | 18 +++++++----- .../public/tw_webview_evas_event_handler.cc | 9 ++++-- .../public/tw_webview_evas_event_handler.h | 7 +++-- 13 files changed, 67 insertions(+), 61 deletions(-) diff --git a/tizen_src/ewk/efl_integration/context_menu_controller_efl.cc b/tizen_src/ewk/efl_integration/context_menu_controller_efl.cc index 6c1cf94..1980066 100644 --- a/tizen_src/ewk/efl_integration/context_menu_controller_efl.cc +++ b/tizen_src/ewk/efl_integration/context_menu_controller_efl.cc @@ -471,7 +471,7 @@ bool ContextMenuControllerEfl::ShowContextMenu() { void ContextMenuControllerEfl::HideSelectionHandle() { SelectionControllerEfl* controller = webview_->GetSelectionController(); if (controller) - controller->HideHandle(); + controller->HideHandles(); } void ContextMenuControllerEfl::ShowSelectionHandleAndContextMenu() { diff --git a/tizen_src/ewk/efl_integration/eweb_view.cc b/tizen_src/ewk/efl_integration/eweb_view.cc index 3723387..600b5ed 100644 --- a/tizen_src/ewk/efl_integration/eweb_view.cc +++ b/tizen_src/ewk/efl_integration/eweb_view.cc @@ -321,7 +321,7 @@ void EWebView::Initialize() { InitializeContent(); selection_controller_.reset(new content::SelectionControllerEfl(this, *web_contents_.get())); - evas_event_handler_ = new tizen_webview::WebViewEvasEventHandler(public_webview_); + evas_event_handler_ = new tizen_webview::WebViewEvasEventHandler(this); scroll_detector_.reset(new ScrollDetector(this)); @@ -421,6 +421,10 @@ void EWebView::ReleasePopupMenuList() { popupMenuItems_ = 0; } +void EWebView::ResetContextMenuController() { + return context_menu_.reset(); +} + void EWebView::SetFocus(Eina_Bool focus) { if (HasFocus() != focus) @@ -747,7 +751,7 @@ void EWebView::DispatchPostponedGestureEvent(ui::GestureEvent* event) { LOG(INFO) << "DispatchPostponedGestureEvent :: EWK_HIT_TEST_RESULT_CONTEXT_EDITABLE"; selection_controller_->SetSelectionStatus(true); if (selection_controller_->GetSelectionEditable()) { - selection_controller_->HideHandle(); + selection_controller_->HideHandles(); selection_controller_->SetCaretSelectionStatus(true); } else selection_controller_->SetSelectionEditable(true); diff --git a/tizen_src/ewk/efl_integration/eweb_view.h b/tizen_src/ewk/efl_integration/eweb_view.h index 5f04a2b..17d8fdc 100644 --- a/tizen_src/ewk/efl_integration/eweb_view.h +++ b/tizen_src/ewk/efl_integration/eweb_view.h @@ -429,6 +429,11 @@ class EWebView { gfx::Point GetContextMenuPosition() const; + content::ContextMenuControllerEfl* GetContextMenuController() { + return context_menu_.get(); + } + void ResetContextMenuController(); + /// ---- Event handling bool HandleShow(); bool HandleHide(); @@ -551,7 +556,6 @@ private: EWebView(tizen_webview::WebView* owner, tizen_webview::WebContext*, Evas_Object* smart_object); ~EWebView(); friend class tizen_webview::WebView; - friend class tizen_webview::WebViewEvasEventHandler; }; namespace tizen_webview { diff --git a/tizen_src/ewk/efl_integration/private/ewk_view_private.cc b/tizen_src/ewk/efl_integration/private/ewk_view_private.cc index 518fed5..74d3085 100644 --- a/tizen_src/ewk/efl_integration/private/ewk_view_private.cc +++ b/tizen_src/ewk/efl_integration/private/ewk_view_private.cc @@ -226,11 +226,6 @@ Ewk_View_Smart_Data* GetEwkViewSmartDataFromEvasObject(const Evas_Object* evas_o return static_cast(evas_object_smart_data_get(evas_object)); } -Ewk_View_Smart_Data* GetEwkViewSmartDataFromWebView(tizen_webview::WebView* wv) { - assert(wv); - return GetEwkViewSmartDataFromEvasObject(wv->AsEvasObject()); -} - WebView* GetWebViewFromSmartData(const Ewk_View_Smart_Data* smartData) { if (smartData && smartData->priv) { diff --git a/tizen_src/ewk/efl_integration/private/ewk_view_private.h b/tizen_src/ewk/efl_integration/private/ewk_view_private.h index 30f2c09..3c18284 100644 --- a/tizen_src/ewk/efl_integration/private/ewk_view_private.h +++ b/tizen_src/ewk/efl_integration/private/ewk_view_private.h @@ -21,7 +21,6 @@ const char EwkViewSmartClassName[] = "EWebView"; // type conversion utility bool IsWebViewObject(const Evas_Object* evas_object); Ewk_View_Smart_Data* GetEwkViewSmartDataFromEvasObject(const Evas_Object* evas_object); -Ewk_View_Smart_Data* GetEwkViewSmartDataFromWebView(tizen_webview::WebView* wv); tizen_webview::WebView* GetWebViewFromSmartData(const Ewk_View_Smart_Data* smartData); tizen_webview::WebView* GetWebViewFromEvasObject(const Evas_Object* eo); diff --git a/tizen_src/ewk/efl_integration/private/webview_delegate_ewk.cc b/tizen_src/ewk/efl_integration/private/webview_delegate_ewk.cc index e86ac78..423e6dd 100644 --- a/tizen_src/ewk/efl_integration/private/webview_delegate_ewk.cc +++ b/tizen_src/ewk/efl_integration/private/webview_delegate_ewk.cc @@ -3,7 +3,9 @@ // found in the LICENSE file. #include "webview_delegate_ewk.h" + #include +#include "eweb_view.h" #include "public/ewk_view.h" #include "private/ewk_view_private.h" @@ -44,8 +46,8 @@ Eina_Rectangle WebViewDelegateEwk::GetLastUsedViewPortArea( return result; } -bool WebViewDelegateEwk::RequestHandleEvent_FocusIn(WebView* wv) { - Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromWebView(wv); +bool WebViewDelegateEwk::RequestHandleEvent_FocusIn(EWebView* wv) { + Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromEvasObject(wv->evas_object()); if (sd && sd->api && sd->api->focus_in) { // XXX: is it what we want, or do we want to return false if api->focus_in // returns false? @@ -55,8 +57,8 @@ bool WebViewDelegateEwk::RequestHandleEvent_FocusIn(WebView* wv) { return false; } -bool WebViewDelegateEwk::RequestHandleEvent_FocusOut(WebView* wv) { - Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromWebView(wv); +bool WebViewDelegateEwk::RequestHandleEvent_FocusOut(EWebView* wv) { + Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromEvasObject(wv->evas_object()); if (sd && sd->api && sd->api->focus_out) { // XXX: is it what we want, or do we want to return false if api->focus_out // returns false? @@ -66,9 +68,9 @@ bool WebViewDelegateEwk::RequestHandleEvent_FocusOut(WebView* wv) { return false; } -bool WebViewDelegateEwk::RequestHandleEvent_MouseUp(WebView* wv, +bool WebViewDelegateEwk::RequestHandleEvent_MouseUp(EWebView* wv, const Evas_Event_Mouse_Up* event_info) { - Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromWebView(wv); + Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromEvasObject(wv->evas_object()); if (sd && sd->api && sd->api->mouse_up) { // XXX: is it what we want, or do we want to return false if api->mouse_up // returns false? @@ -78,9 +80,9 @@ bool WebViewDelegateEwk::RequestHandleEvent_MouseUp(WebView* wv, return false; } -bool WebViewDelegateEwk::RequestHandleEvent_MouseDown(WebView* wv, +bool WebViewDelegateEwk::RequestHandleEvent_MouseDown(EWebView* wv, const Evas_Event_Mouse_Down* event_info) { - Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromWebView(wv); + Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromEvasObject(wv->evas_object()); if (sd && sd->api && sd->api->mouse_down) { // XXX: is it what we want, or do we want to return false if api->mouse_down // returns false? @@ -90,9 +92,9 @@ bool WebViewDelegateEwk::RequestHandleEvent_MouseDown(WebView* wv, return false; } -bool WebViewDelegateEwk::RequestHandleEvent_MouseMove(WebView* wv, +bool WebViewDelegateEwk::RequestHandleEvent_MouseMove(EWebView* wv, const Evas_Event_Mouse_Move* event_info) { - Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromWebView(wv); + Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromEvasObject(wv->evas_object()); if (sd && sd->api && sd->api->mouse_move) { // XXX: is it what we want, or do we want to return false if api->mouse_move // returns false? @@ -102,9 +104,9 @@ bool WebViewDelegateEwk::RequestHandleEvent_MouseMove(WebView* wv, return false; } -bool WebViewDelegateEwk::RequestHandleEvent_MouseWheel(WebView* wv, +bool WebViewDelegateEwk::RequestHandleEvent_MouseWheel(EWebView* wv, const Evas_Event_Mouse_Wheel* event_info) { - Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromWebView(wv); + Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromEvasObject(wv->evas_object()); if (sd && sd->api && sd->api->mouse_wheel) { // XXX: is it what we want, or do we want to return false if api->mouse_wheel // returns false? @@ -114,9 +116,9 @@ bool WebViewDelegateEwk::RequestHandleEvent_MouseWheel(WebView* wv, return false; } -bool WebViewDelegateEwk::RequestHandleEvent_KeyUp(WebView* wv, +bool WebViewDelegateEwk::RequestHandleEvent_KeyUp(EWebView* wv, const Evas_Event_Key_Up* event_info) { - Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromWebView(wv); + Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromEvasObject(wv->evas_object()); if (sd && sd->api && sd->api->key_up) { // XXX: is it what we want, or do we want to return false if api->key_up // returns false? @@ -126,9 +128,9 @@ bool WebViewDelegateEwk::RequestHandleEvent_KeyUp(WebView* wv, return false; } -bool WebViewDelegateEwk::RequestHandleEvent_KeyDown(WebView* wv, +bool WebViewDelegateEwk::RequestHandleEvent_KeyDown(EWebView* wv, const Evas_Event_Key_Down* event_info) { - Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromWebView(wv); + Ewk_View_Smart_Data* sd = GetEwkViewSmartDataFromEvasObject(wv->evas_object()); if (sd && sd->api && sd->api->key_down) { // XXX: is it what we want, or do we want to return false if api->key_down // returns false? diff --git a/tizen_src/ewk/efl_integration/private/webview_delegate_ewk.h b/tizen_src/ewk/efl_integration/private/webview_delegate_ewk.h index 5609bab..1c5760e 100644 --- a/tizen_src/ewk/efl_integration/private/webview_delegate_ewk.h +++ b/tizen_src/ewk/efl_integration/private/webview_delegate_ewk.h @@ -22,14 +22,14 @@ struct WebViewDelegateEwk : public WebViewDelegate { Eina_Rectangle GetLastUsedViewPortArea(Evas_Object* evas_object); // Event handlers - bool RequestHandleEvent_FocusIn(WebView* wv); - bool RequestHandleEvent_FocusOut(WebView* wv); - bool RequestHandleEvent_MouseUp(WebView* wv, const Evas_Event_Mouse_Up* event_info); - bool RequestHandleEvent_MouseDown(WebView* wv, const Evas_Event_Mouse_Down* event_info); - bool RequestHandleEvent_MouseMove(WebView* wv, const Evas_Event_Mouse_Move* event_info); - bool RequestHandleEvent_MouseWheel(WebView* wv, const Evas_Event_Mouse_Wheel* event_info); - bool RequestHandleEvent_KeyUp(WebView* wv, const Evas_Event_Key_Up* event_info); - bool RequestHandleEvent_KeyDown(WebView* wv, const Evas_Event_Key_Down* event_info); + bool RequestHandleEvent_FocusIn(EWebView* wv); + bool RequestHandleEvent_FocusOut(EWebView* wv); + bool RequestHandleEvent_MouseUp(EWebView* wv, const Evas_Event_Mouse_Up* event_info); + bool RequestHandleEvent_MouseDown(EWebView* wv, const Evas_Event_Mouse_Down* event_info); + bool RequestHandleEvent_MouseMove(EWebView* wv, const Evas_Event_Mouse_Move* event_info); + bool RequestHandleEvent_MouseWheel(EWebView* wv, const Evas_Event_Mouse_Wheel* event_info); + bool RequestHandleEvent_KeyUp(EWebView* wv, const Evas_Event_Key_Up* event_info); + bool RequestHandleEvent_KeyDown(EWebView* wv, const Evas_Event_Key_Down* event_info); private: WebViewDelegateEwk() {} DISALLOW_COPY_AND_ASSIGN(WebViewDelegateEwk); diff --git a/tizen_src/ewk/efl_integration/selection_controller_efl.cc b/tizen_src/ewk/efl_integration/selection_controller_efl.cc index e842fc6..444368f 100644 --- a/tizen_src/ewk/efl_integration/selection_controller_efl.cc +++ b/tizen_src/ewk/efl_integration/selection_controller_efl.cc @@ -309,14 +309,14 @@ void SelectionControllerEfl::ShowHandleAndContextMenuIfRequired( ctx); } -void SelectionControllerEfl::HideHandle() { +void SelectionControllerEfl::HideHandles() { SetCaretSelectionStatus(false); Clear(); } void SelectionControllerEfl::HideHandleAndContextMenu() { parent_view_->CancelContextMenu(0); - HideHandle(); + HideHandles(); } bool SelectionControllerEfl::IsAnyHandleVisible() const { diff --git a/tizen_src/ewk/efl_integration/selection_controller_efl.h b/tizen_src/ewk/efl_integration/selection_controller_efl.h index 773887b..1ed693e 100644 --- a/tizen_src/ewk/efl_integration/selection_controller_efl.h +++ b/tizen_src/ewk/efl_integration/selection_controller_efl.h @@ -79,7 +79,7 @@ class SelectionControllerEfl { void ClearSelection(); bool ClearSelectionViaEWebView(); EWebView* GetParentView() { return parent_view_; } - void HideHandle(); + void HideHandles(); void HideHandleAndContextMenu(); bool IsAnyHandleVisible() const; diff --git a/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview.cc b/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview.cc index fe2eb77..7f9062f 100644 --- a/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview.cc +++ b/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview.cc @@ -14,9 +14,7 @@ #include "private/ewk_history_private.h" #include -namespace { - -} +using content::SelectionControllerEfl; namespace tizen_webview { @@ -76,22 +74,20 @@ Ewk_Settings* WebView::GetSettings() { } content::SelectionControllerEfl* WebView::GetSelectionController() { - return impl_->selection_controller_.get(); + return impl_->GetSelectionController(); } content::ContextMenuControllerEfl* WebView::GetContextMenuController() { - return impl_->context_menu_.get(); + return impl_->GetContextMenuController(); } void WebView::ResetContextMenuController() { - return impl_->context_menu_.reset(); + return impl_->ResetContextMenuController(); } void WebView::HideSelectionHandlers() { -#if defined(OS_TIZEN) - if (impl_->selection_controller_.get()) - impl_->selection_controller_->HideHandle(); -#endif + if (SelectionControllerEfl* selection_controller = GetSelectionController()) + selection_controller->HideHandles(); } _Ewk_Frame* WebView::GetMainFrame() { diff --git a/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_delegate.h b/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_delegate.h index e266277..30a8f8f 100644 --- a/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_delegate.h +++ b/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_delegate.h @@ -9,6 +9,8 @@ #include #include +class EWebView; + namespace tizen_webview { class WebView; @@ -47,20 +49,20 @@ class WebViewDelegate { // ---- Custom Event handlers // Give opportunity for client to process event. // [Note] return true if handled, false otherwise. - virtual bool RequestHandleEvent_FocusIn(WebView* wv) { return false; } - virtual bool RequestHandleEvent_FocusOut(WebView* wv) { return false; } + virtual bool RequestHandleEvent_FocusIn(EWebView* wv) { return false; } + virtual bool RequestHandleEvent_FocusOut(EWebView* wv) { return false; } virtual bool RequestHandleEvent_MouseUp( - WebView* wv, const Evas_Event_Mouse_Up* event_info) { return false; } + EWebView* wv, const Evas_Event_Mouse_Up* event_info) { return false; } virtual bool RequestHandleEvent_MouseDown( - WebView* wv, const Evas_Event_Mouse_Down* event_info) { return false; } + EWebView* wv, const Evas_Event_Mouse_Down* event_info) { return false; } virtual bool RequestHandleEvent_MouseMove( - WebView* wv, const Evas_Event_Mouse_Move* event_info) { return false; } + EWebView* wv, const Evas_Event_Mouse_Move* event_info) { return false; } virtual bool RequestHandleEvent_MouseWheel( - WebView* wv, const Evas_Event_Mouse_Wheel* event_info) { return false; } + EWebView* wv, const Evas_Event_Mouse_Wheel* event_info) { return false; } virtual bool RequestHandleEvent_KeyUp( - WebView* wv, const Evas_Event_Key_Up* event_info) { return false; } + EWebView* wv, const Evas_Event_Key_Up* event_info) { return false; } virtual bool RequestHandleEvent_KeyDown( - WebView* wv, const Evas_Event_Key_Down* event_info) { return false; } + EWebView* wv, const Evas_Event_Key_Down* event_info) { return false; } }; } // namespace tizen_webview diff --git a/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_evas_event_handler.cc b/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_evas_event_handler.cc index 7cbc471..559dca3 100644 --- a/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_evas_event_handler.cc +++ b/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_evas_event_handler.cc @@ -9,6 +9,8 @@ #include "eweb_view.h" +using content::SelectionControllerEfl; + namespace { inline bool isHardwareBackKey(const Evas_Event_Key_Down *event) { #ifdef OS_TIZEN @@ -21,7 +23,7 @@ inline bool isHardwareBackKey(const Evas_Event_Key_Down *event) { } namespace tizen_webview { -WebViewEvasEventHandler::WebViewEvasEventHandler(WebView* wv) +WebViewEvasEventHandler::WebViewEvasEventHandler(EWebView* wv) : webview_ (wv) { } @@ -53,12 +55,13 @@ bool WebViewEvasEventHandler::HandleEvent_KeyDown(const Evas_Event_Key_Down* eve if (webview_->GetContextMenuController()) { DVLOG(1) << "Hiding context menu due to back key press"; webview_->ResetContextMenuController(); - webview_->HideSelectionHandlers(); + if (SelectionControllerEfl* selection_controller = webview_->GetSelectionController()) + selection_controller->HideHandles(); handled = true; } if (webview_->GetSelectionController()->IsAnyHandleVisible()) { DVLOG(1) << "Clearing text selection due to back key press"; - webview_->ClearSelection(); + webview_->GetSelectionController()->ClearSelection(); handled = true; } } diff --git a/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_evas_event_handler.h b/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_evas_event_handler.h index c6affc8..1a295a4 100644 --- a/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_evas_event_handler.h +++ b/tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_evas_event_handler.h @@ -8,12 +8,13 @@ #include "content/browser/renderer_host/evas_event_handler.h" +class EWebView; + namespace tizen_webview { -class WebView; class WebViewEvasEventHandler: public content::EvasEventHandler { public: - explicit WebViewEvasEventHandler(WebView*); + explicit WebViewEvasEventHandler(EWebView*); // ---- event handlers bool HandleEvent_FocusIn() override; @@ -26,7 +27,7 @@ class WebViewEvasEventHandler: public content::EvasEventHandler { bool HandleEvent_MouseWheel(const Evas_Event_Mouse_Wheel*) override; private: - WebView* webview_; + EWebView* webview_; }; } // namespace tizen_webview -- 2.7.4