WebViewEvasEventHandler does not rely on tizen_webview::WebView anymore
authorArnaud Renevier <a.renevier@samsung.com>
Thu, 23 Apr 2015 21:52:33 +0000 (14:52 -0700)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 06:57:09 +0000 (06:57 +0000)
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 <a.renevier@samsung.com>
13 files changed:
tizen_src/ewk/efl_integration/context_menu_controller_efl.cc
tizen_src/ewk/efl_integration/eweb_view.cc
tizen_src/ewk/efl_integration/eweb_view.h
tizen_src/ewk/efl_integration/private/ewk_view_private.cc
tizen_src/ewk/efl_integration/private/ewk_view_private.h
tizen_src/ewk/efl_integration/private/webview_delegate_ewk.cc
tizen_src/ewk/efl_integration/private/webview_delegate_ewk.h
tizen_src/ewk/efl_integration/selection_controller_efl.cc
tizen_src/ewk/efl_integration/selection_controller_efl.h
tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview.cc
tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_delegate.h
tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_evas_event_handler.cc
tizen_src/ewk/efl_integration/tizen_webview/public/tw_webview_evas_event_handler.h

index 6c1cf94..1980066 100644 (file)
@@ -471,7 +471,7 @@ bool ContextMenuControllerEfl::ShowContextMenu() {
 void ContextMenuControllerEfl::HideSelectionHandle() {
   SelectionControllerEfl* controller = webview_->GetSelectionController();
   if (controller)
-    controller->HideHandle();
+    controller->HideHandles();
 }
 
 void ContextMenuControllerEfl::ShowSelectionHandleAndContextMenu() {
index 3723387..600b5ed 100644 (file)
@@ -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);
index 5f04a2b..17d8fdc 100644 (file)
@@ -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 {
index 518fed5..74d3085 100644 (file)
@@ -226,11 +226,6 @@ Ewk_View_Smart_Data* GetEwkViewSmartDataFromEvasObject(const Evas_Object* evas_o
   return static_cast<Ewk_View_Smart_Data*>(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) {
index 30f2c09..3c18284 100644 (file)
@@ -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);
 
index e86ac78..423e6dd 100644 (file)
@@ -3,7 +3,9 @@
 // found in the LICENSE file.
 
 #include "webview_delegate_ewk.h"
+
 #include <cassert>
+#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?
index 5609bab..1c5760e 100644 (file)
@@ -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);
index e842fc6..444368f 100644 (file)
@@ -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 {
index 773887b..1ed693e 100644 (file)
@@ -79,7 +79,7 @@ class SelectionControllerEfl {
   void ClearSelection();
   bool ClearSelectionViaEWebView();
   EWebView* GetParentView() { return parent_view_; }
-  void HideHandle();
+  void HideHandles();
   void HideHandleAndContextMenu();
   bool IsAnyHandleVisible() const;
 
index fe2eb77..7f9062f 100644 (file)
@@ -14,9 +14,7 @@
 #include "private/ewk_history_private.h"
 #include <tizen_webview/public/tw_webview_delegate.h>
 
-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() {
index e266277..30a8f8f 100644 (file)
@@ -9,6 +9,8 @@
 #include <Evas.h>
 #include <eina_rectangle.h>
 
+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
index 7cbc471..559dca3 100644 (file)
@@ -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;
     }
   }
index c6affc8..1a295a4 100644 (file)
@@ -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