Use WebContentsViewDelegate to delegate popup handling to the app
authorPiotr Tworek <p.tworek@samsung.com>
Wed, 11 Mar 2015 11:59:34 +0000 (12:59 +0100)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 06:57:09 +0000 (06:57 +0000)
We can't use the old code which expected it always got EFL version of
WebContentsDelegate class. We can however use WebContentsViewDelegate
which with an additional patch to src/ gains support for informing the
app about the need for a popup menu.

Change-Id: I7df5e53ebdc6db1be93388c3db8d82db5b3a9050
Signed-off-by: Piotr Tworek <p.tworek@samsung.com>
tizen_src/chromium_impl/content/browser/web_contents/web_contents_view_efl.cc
tizen_src/chromium_impl/content/browser/web_contents/web_contents_view_efl.h

index 9902567..6c75935 100644 (file)
@@ -184,8 +184,9 @@ DropData* WebContentsViewEfl::GetDropData() const {
 }
 
 gfx::Rect WebContentsViewEfl::GetViewBounds() const {
-  NOTIMPLEMENTED();
-  return gfx::Rect();
+  int x, y, w, h;
+  evas_object_geometry_get(native_view_, &x, &y, &w, &h);
+  return gfx::Rect(x, y, w, h);
 }
 
 void WebContentsViewEfl::ShowContextMenu(RenderFrameHost* render_frame_host,
@@ -194,29 +195,25 @@ void WebContentsViewEfl::ShowContextMenu(RenderFrameHost* render_frame_host,
     delegate_->ShowContextMenu(render_frame_host, params);
 }
 
-#if 0
-void WebContentsViewEfl::ShowPopupMenu(RenderFrameHost* render_frame_host,
-                                       const gfx::Rect& bounds,
-                                       int item_height,
-                                       double item_font_size,
-                                       int selected_item,
-                                       const std::vector<MenuItem>& items,
-                                       bool right_aligned,
-                                       bool allow_multiple_selection) {
-  WebContentsDelegateEfl* delegate =
-      static_cast<WebContentsDelegateEfl*>(web_contents_->GetDelegate());
-  if (delegate) {
-    delegate->ShowPopupMenu(render_frame_host,
-                            bounds,
-                            blink::TextDirection(right_aligned),
-                            0,
-                            items,
-                            0,
-                            selected_item,
-                            allow_multiple_selection);
-  }
+void WebContentsViewEfl::ShowPopupMenu(
+    RenderFrameHost* render_frame_host,
+    const gfx::Rect& bounds,
+    int item_height,
+    double item_font_size,
+    int selected_item,
+    const std::vector<MenuItem>& items,
+    bool right_aligned,
+    bool allow_multiple_selection) {
+  if (delegate_)
+    delegate_->ShowPopupMenu(render_frame_host, bounds,
+        item_height, item_font_size, selected_item, items,
+        right_aligned, allow_multiple_selection);
+}
+
+void WebContentsViewEfl::HidePopupMenu() {
+  if (delegate_)
+    delegate_->HidePopupMenu();
 }
-#endif
 
 void WebContentsViewEfl::SetOrientation(int orientation) {
   RenderWidgetHostViewEfl* rwhv = static_cast<RenderWidgetHostViewEfl*>(
index 5392478..eb99f42 100644 (file)
@@ -8,9 +8,9 @@
 
 #include <Evas.h>
 
-#include "content/browser/web_contents/web_drag_dest_efl.h"
 #include "content/browser/renderer_host/render_view_host_delegate_view.h"
 #include "content/browser/web_contents/web_contents_view.h"
+#include "content/browser/web_contents/web_drag_dest_efl.h"
 
 namespace content {
 
@@ -48,8 +48,8 @@ class WebContentsViewEfl
   gfx::Rect GetViewBounds() const override;
 
   // content::RenderViewHostDelegateView implementation.
-  void ShowContextMenu(RenderFrameHost* render_frame_host, const ContextMenuParams& params) override;
-#if 0
+  void ShowContextMenu(RenderFrameHost* render_frame_host,
+                       const ContextMenuParams& params) override;
   void ShowPopupMenu(RenderFrameHost* render_frame_host,
                      const gfx::Rect& bounds,
                      int item_height,
@@ -58,7 +58,7 @@ class WebContentsViewEfl
                      const std::vector<MenuItem>& items,
                      bool right_aligned,
                      bool allow_multiple_selection) override;
-#endif
+  void HidePopupMenu() override;
   void UpdateDragDest(RenderViewHost* host);
 
   void SetOrientation(int orientation);