Enable IMContextEfl
authoryh106.jung <yh106.jung@samsung.com>
Mon, 30 Mar 2015 13:45:49 +0000 (22:45 +0900)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 06:57:09 +0000 (06:57 +0000)
This patch makes that IMContextEfl is available for EWK and other
embedders.

Change-Id: I2c997d81edf9897eae599ba9a6fb20012680f713
Signed-off-by: yh106.jung <yh106.jung@samsung.com>
tizen_src/chromium_impl/content/browser/renderer_host/im_context_efl.cc [moved from tizen_src/impl/browser/renderer_host/im_context_efl.cc with 94% similarity]
tizen_src/chromium_impl/content/browser/renderer_host/im_context_efl.h [moved from tizen_src/impl/browser/renderer_host/im_context_efl.h with 98% similarity]
tizen_src/chromium_impl/content/browser/renderer_host/render_widget_host_view_efl.cc
tizen_src/chromium_impl/content/browser/renderer_host/render_widget_host_view_efl.h
tizen_src/chromium_impl/content/content_efl.gypi

@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "browser/renderer_host/im_context_efl.h"
+#include "content/browser/renderer_host/im_context_efl.h"
 
 #include "base/logging.h"
 #include "base/strings/string16.h"
 #include "base/strings/utf_string_conversions.h"
 #include "content/browser/renderer_host/render_widget_host_impl.h"
-#include "browser/renderer_host/render_widget_host_view_efl.h"
+#include "content/browser/renderer_host/render_widget_host_view_efl.h"
 
 #include <Ecore_Evas.h>
 #include <Ecore_IMF_Evas.h>
@@ -309,7 +309,9 @@ void IMContextEfl::ResetIMFContext() {
 void IMContextEfl::CancelComposition() {
   IM_CTX_LOG;
   ClearQueues();
+#if defined(EWK_REFACTOR)
   view_->ClearQueues();
+#endif
 
   ResetIMFContext();
   if (composition_.text.length() > 0) {
@@ -384,15 +386,14 @@ void IMContextEfl::SendFakeCompositionKeyEvent(const base::string16& buf) {
   downEvent.key = str.c_str();
   downEvent.string = str.c_str();
 
-  NativeWebKeyboardEvent n_event = WebEventFactoryEfl::toWebKeyboardEvent(view_->evas(), &downEvent);
-  n_event.type = blink::WebInputEvent::KeyDown;
-
+  NativeWebKeyboardEvent n_event = MakeWebKeyboardEvent(true, &downEvent);
   n_event.isSystemKey = true;
 
   if (!view_->GetRenderWidgetHost())
     return;
-
+#if defined(EWK_REFACTOR)
   view_->KeyUpEventQueuePush(n_event.windowsKeyCode);
+#endif
   view_->GetRenderWidgetHost()->ForwardKeyboardEvent(n_event);
 }
 
@@ -442,12 +443,15 @@ void IMContextEfl::OnPreeditChanged(void* data, Ecore_IMF_Context* context, void
 void IMContextEfl::OnInputPanelStateChanged(int state) {
   if (state == ECORE_IMF_INPUT_PANEL_STATE_SHOW) {
     IM_CTX_LOG << ": show";
-    view_->eweb_view()->SmartCallback<EWebViewCallbacks::IMEInputPanelShow>().call();
-    view_->eweb_view()->ScrollFocusedEditableNode();
-
+    if (view_->smart_parent())
+      evas_object_smart_callback_call(view_->smart_parent(),
+          "editorclient,ime,opened", 0);
+    view_->ScrollFocusedEditableNode();
   } else if (state == ECORE_IMF_INPUT_PANEL_STATE_HIDE) {
     IM_CTX_LOG << ": hide";
-    view_->eweb_view()->SmartCallback<EWebViewCallbacks::IMEInputPanelHide>().call();
+    if (view_->smart_parent())
+      evas_object_smart_callback_call(view_->smart_parent(),
+          "editorclient,ime,closed", 0);
   }
 
   // ignore ECORE_IMF_INPUT_PANEL_WILL_SHOW value
@@ -456,21 +460,27 @@ void IMContextEfl::OnInputPanelStateChanged(int state) {
 void IMContextEfl::OnInputPanelGeometryChanged() {
   Eina_Rectangle rect;
   ecore_imf_context_input_panel_geometry_get(context_, &rect.x, &rect.y, &rect.w, &rect.h);
-  view_->eweb_view()->SmartCallback<EWebViewCallbacks::IMEInputMethodChanged>().call(&rect);
-
+  if (view_->smart_parent())
+    evas_object_smart_callback_call(view_->smart_parent(),
+        "inputmethod,changed", static_cast<void*>(&rect));
   // Scroll to focused editable node if virtual keyboard
   // changed geometry
   if (rect.w > 0 || rect.h > 0)
-    view_->eweb_view()->ScrollFocusedEditableNode();
-
+    view_->ScrollFocusedEditableNode();
   SetIMERect(gfx::Rect(rect.x, rect.y, rect.w, rect.h));
 }
 
 void IMContextEfl::OnCandidateInputPanelStateChanged(int state) {
-  if (state == ECORE_IMF_CANDIDATE_PANEL_SHOW)
-    view_->eweb_view()->SmartCallback<EWebViewCallbacks::IMECandidatePanelShow>().call();
-  else
-    view_->eweb_view()->SmartCallback<EWebViewCallbacks::IMECandidatePanelHide>().call();
+  if (state == ECORE_IMF_CANDIDATE_PANEL_SHOW) {
+    if (view_->smart_parent())
+      evas_object_smart_callback_call(view_->smart_parent(),
+          "editorclient,candidate,opened", 0);
+  }
+  else {
+    if (view_->smart_parent())
+      evas_object_smart_callback_call(view_->smart_parent(),
+          "editorclient,candidate,closed", 0);
+  }
 }
 
 void IMContextEfl::OnCandidateInputPanelGeometryChanged() {
@@ -10,7 +10,7 @@
 #include "ui/base/ime/composition_text.h"
 #include "ui/gfx/rect.h"
 #include "content/public/browser/native_web_keyboard_event.h"
-#include "browser/renderer_host/web_event_factory_efl.h"
+#include "content/browser/renderer_host/web_event_factory_efl.h"
 
 #include <Evas.h>
 
index 3efca43..5f036c6 100644 (file)
@@ -27,6 +27,7 @@
 #include "content/browser/gpu/compositor_util.h"
 #include "content/browser/renderer_host/render_widget_host_impl.h"
 #include "content/browser/renderer_host/ui_events_helper.h"
+#include "content/browser/renderer_host/im_context_efl.h"
 #include "content/browser/renderer_host/edge_effect.h"
 #include "content/browser/renderer_host/event_with_latency_info.h"
 #include "content/browser/renderer_host/disambiguation_popup_efl.h"
@@ -93,6 +94,7 @@ RenderWidgetHostViewEfl::RenderWidgetHostViewEfl(RenderWidgetHost* widget)
   : host_(RenderWidgetHostImpl::From(widget)),
     evas_(NULL),
     parent_view_(NULL),
+    smart_parent_(NULL),
     content_image_(NULL),
     content_image_elm_host_(NULL),
     evas_gl_initialized_(false),
@@ -149,6 +151,7 @@ void RenderWidgetHostViewEfl::InitAsChild(gfx::NativeView parent_view) {
   if (smart_parent) {
     // If our parent is a member of some smart object we also want
     // to join that group.
+    smart_parent_ = smart_parent;
     evas_object_smart_member_add(content_image_elm_host_, smart_parent);
   }
 
@@ -183,11 +186,9 @@ void RenderWidgetHostViewEfl::InitAsChild(gfx::NativeView parent_view) {
   evas_object_event_callback_add(content_image_, EVAS_CALLBACK_KEY_UP,
       OnKeyUp, this);
 
-#if 0
   // IMContext calls evas() getter on 'this' so it needs to be
   // initialized after evas_ is valid
   im_context_ = IMContextEfl::Create(this);
-#endif
 
   edge_effect_.reset(new EdgeEffect(content_image_elm_host_));
 
@@ -199,10 +200,9 @@ void RenderWidgetHostViewEfl::InitAsChild(gfx::NativeView parent_view) {
 }
 
 RenderWidgetHostViewEfl::~RenderWidgetHostViewEfl() {
-#if 0
   if (im_context_)
     delete im_context_;
-#endif
+
   evas_object_event_callback_del(parent_view_, EVAS_CALLBACK_RESIZE,
       OnParentViewResize);
   evas_object_event_callback_del(content_image_, EVAS_CALLBACK_FOCUS_IN,
@@ -682,7 +682,7 @@ void RenderWidgetHostViewEfl::TextInputTypeChanged(ui::TextInputType type,
                                                    ui::TextInputMode input_mode,
                                                    bool can_compose_inline,
                                                    int flags) {
-#if 0
+#if defined(EWK_REFACTOR)
   if (GetSelectionController()) {
     GetSelectionController()->SetSelectionEditable(
         type != ui::TEXT_INPUT_TYPE_NONE);
@@ -692,8 +692,11 @@ void RenderWidgetHostViewEfl::TextInputTypeChanged(ui::TextInputType type,
 
 void RenderWidgetHostViewEfl::OnTextInputStateChanged(
     const ViewHostMsg_TextInputState_Params& params) {
-#if 0
-  if (!params.show_ime_if_needed && !eweb_view()->GetSettings()->useKeyPadWithoutUserAction())
+  if (!params.show_ime_if_needed
+#if defined(EWK_REFACTOR)
+        && !eweb_view()->GetSettings()->useKeyPadWithoutUserAction()
+#endif
+    )
     return;
 
   if (im_context_) {
@@ -705,7 +708,7 @@ void RenderWidgetHostViewEfl::OnTextInputStateChanged(
     // is turned on
     host_->ScrollFocusedEditableNodeIntoRect(gfx::Rect(0, 0, 0, 0));
   }
-
+#if defined(EWK_REFACTOR)
   if (GetSelectionController()) {
     GetSelectionController()->SetSelectionEditable(
         params.type != ui::TEXT_INPUT_TYPE_NONE);
@@ -714,17 +717,15 @@ void RenderWidgetHostViewEfl::OnTextInputStateChanged(
 }
 
 void RenderWidgetHostViewEfl::ImeCancelComposition() {
-#if 0
   if (im_context_)
     im_context_->CancelComposition();
-#endif
 }
 
 void RenderWidgetHostViewEfl::ImeCompositionRangeChanged(
   const gfx::Range& range,
   const std::vector<gfx::Rect>& character_bounds) {
   NOTIMPLEMENTED();
-#if 0
+#if defined(EWK_REFACTOR)
   if (web_view_) {
     SelectionControllerEfl* controller = web_view_->GetSelectionController();
     if (controller) {
@@ -736,7 +737,7 @@ void RenderWidgetHostViewEfl::ImeCompositionRangeChanged(
 }
 
 void RenderWidgetHostViewEfl::FocusedNodeChanged(bool is_editable_node) {
-#if 0
+#if defined(EWK_REFACTOR)
   if (web_view_) {
     SelectionControllerEfl* controller = web_view_->GetSelectionController();
     if (controller) {
@@ -761,10 +762,8 @@ void RenderWidgetHostViewEfl::SetTooltipText(const base::string16& text) {
 void RenderWidgetHostViewEfl::SelectionChanged(const base::string16& text,
   size_t offset,
   const gfx::Range& range) {
-  NOTIMPLEMENTED();
-#if 0
   RenderWidgetHostViewBase::SelectionChanged(text, offset, range);
-
+#if defined(EWK_REFACTOR)
   if (!web_view_)
     return;
 
@@ -782,14 +781,13 @@ void RenderWidgetHostViewEfl::SelectionChanged(const base::string16& text,
 
 void RenderWidgetHostViewEfl::SelectionBoundsChanged(
   const ViewHostMsg_SelectionBounds_Params& params) {
-#if 0
   ViewHostMsg_SelectionBounds_Params guest_params(params);
   guest_params.anchor_rect = ConvertRectToPixel(device_scale_factor_, params.anchor_rect);
   guest_params.focus_rect = ConvertRectToPixel(device_scale_factor_, params.focus_rect);
 
   if (im_context_)
     im_context_->UpdateCaretBounds(gfx::UnionRects(guest_params.anchor_rect, guest_params.focus_rect));
-
+#if defined(EWK_REFACTOR)
   if (GetSelectionController()) {
     GetSelectionController()->UpdateSelectionDataAndShow(
         guest_params.anchor_rect,
@@ -802,8 +800,7 @@ void RenderWidgetHostViewEfl::SelectionBoundsChanged(
 
 void RenderWidgetHostViewEfl::DidStopFlinging() {
   edge_effect_->Hide();
-
-#if 0
+#if defined(EWK_REFACTOR)
   SelectionControllerEfl* controller = GetSelectionController();
   if (!controller)
     return;
@@ -1080,7 +1077,7 @@ gfx::GLSurfaceHandle RenderWidgetHostViewEfl::GetCompositingSurface() {
 }
 
 void RenderWidgetHostViewEfl::ResizeCompositingSurface(const gfx::Size& size) {
-#if 0
+#if defined(EWK_REFACTOR)
   if (web_view_)
     web_view_->DidChangeContentsArea(size.width(), size.height());
 #endif
@@ -1253,7 +1250,7 @@ void RenderWidgetHostViewEfl::ProcessTouchEvents() {
     HandleTouchEvent(&touch_event);
   }
 
-#if 0 //defined(OS_TIZEN)
+#if defined(EWK_REFACTOR) //defined(OS_TIZEN)
   if (count >= 2) {
     state = evas_touch_point_list_nth_state_get(evas_, 0);
     if (state == EVAS_TOUCH_POINT_DOWN) {
@@ -1274,7 +1271,7 @@ void RenderWidgetHostViewEfl::set_magnifier(bool status) {
 }
 
 void RenderWidgetHostViewEfl::FilterInputMotion(const blink::WebGestureEvent& gesture_event) {
-#if 0 //defined(OS_TIZEN)
+#if defined(EWK_REFACTOR) //defined(OS_TIZEN)
   if (gesture_event.type == blink::WebInputEvent::GesturePinchUpdate) {
     Evas_Coord_Point position;
 
@@ -1313,7 +1310,7 @@ void RenderWidgetHostViewEfl::SendGestureEvent(
 
 void RenderWidgetHostViewEfl::HandleGestureBegin() {
   edge_effect_->Enable();
-#if 0
+#if defined(EWK_REFACTOR)
   selection_acked_on_tap_ = false;
   was_scrolled_ = false;
   if (GetSelectionController()) {
@@ -1325,7 +1322,7 @@ void RenderWidgetHostViewEfl::HandleGestureBegin() {
 
 void RenderWidgetHostViewEfl::HandleGestureEnd() {
   edge_effect_->Disable();
-#if 0
+#if defined(EWK_REFACTOR)
   if (GetSelectionController()) {
     if (GetSelectionController()->GetScrollStatus())
       GetSelectionController()->SetScrollStatus(false);
@@ -1349,7 +1346,7 @@ void RenderWidgetHostViewEfl::HandleGestureEnd() {
 
 void RenderWidgetHostViewEfl::HandleGesture(
     blink::WebGestureEvent& event) {
-#if 0
+#if defined(EWK_REFACTOR)
   if (event.type == blink::WebInputEvent::GestureTap) {
     eweb_view()->HandlePostponedGesture(event.x, event.y, ui::ET_GESTURE_TAP);
   } else if (event.type == blink::WebInputEvent::GestureShowPress) {
@@ -1518,7 +1515,7 @@ void RenderWidgetHostViewEfl::OnOrientationChangeEvent(int orientation) {
   current_orientation_ = orientation;
 }
 
-#if 0
+#if defined(EWK_REFACTOR)
 SelectionControllerEfl* RenderWidgetHostViewEfl::GetSelectionController() {
   if (web_view_)
     return web_view_->GetSelectionController();
@@ -1590,4 +1587,8 @@ void RenderWidgetHostViewEfl::OnSwapCompositorFrame(
                                     ack);
 }
 
+void RenderWidgetHostViewEfl::ScrollFocusedEditableNode() {
+  host_->ScrollFocusedEditableNodeIntoRect(gfx::Rect(0, 0, 0, 0));
+}
+
 }  // namespace content
index 34f9abd..a6a966d 100644 (file)
@@ -56,9 +56,7 @@ namespace content {
 
 class DisambiguationPopupEfl;
 class EdgeEffect;
-#if 0
 class IMContextEfl;
-#endif
 class RenderWidgetHostImpl;
 class RenderWidgetHostView;
 class ReadbackYUVInterface;
@@ -169,14 +167,14 @@ class RenderWidgetHostViewEfl
     return evas_;
   }
 
+  Evas_Object* smart_parent() const { return smart_parent_; }
+
   void set_magnifier(bool status);
 
   void Init_EvasGL(int width, int height);
   void CreateNativeSurface(int width, int height);
 
-#if 0
   IMContextEfl* im_context() const { return im_context_; }
-#endif
 
   void HandleGestureBegin();
   void HandleGestureEnd();
@@ -194,6 +192,9 @@ class RenderWidgetHostViewEfl
   void SendGestureEvent(blink::WebGestureEvent& event);
 
   void SetTouchEventsEnabled(bool enabled);
+
+  void ScrollFocusedEditableNode();
+
  protected:
   friend class RenderWidgetHostView;
 
@@ -245,12 +246,10 @@ class RenderWidgetHostViewEfl
   void PaintTextureToSurface(GLuint texture_id);
 
   RenderWidgetHostImpl* host_;
-#if 0
   IMContextEfl* im_context_;
-#endif
-
   Evas* evas_;
   Evas_Object* parent_view_;
+  Evas_Object* smart_parent_;
   Evas_Object* content_image_;
   Evas_Object* content_image_elm_host_;
   bool evas_gl_initialized_;
index ded9a77..c511f22 100644 (file)
           'browser/renderer_host/disambiguation_popup_efl.cc',
           'browser/renderer_host/edge_effect.h',
           'browser/renderer_host/edge_effect.cc',
+          'browser/renderer_host/im_context_efl.h',
+          'browser/renderer_host/im_context_efl.cc',
           'browser/renderer_host/native_web_keyboard_event_efl.cc',
           'browser/renderer_host/render_widget_host_view_efl.h',
           'browser/renderer_host/render_widget_host_view_efl.cc',