[M120 Migration][NUI] Add internal mouse event API for NUI.
[platform/framework/web/chromium-efl.git] / tizen_src / ewk / efl_integration / public / ewk_view.cc
index 58518f7..f9bc785 100644 (file)
@@ -83,7 +83,7 @@ Evas_Object* ewk_view_add_with_session_data(Evas* canvas, const char* data, unsi
 
   Evas_Object* ret = ewk_view_add(canvas);
 
-  EWebView *webView = GetWebViewFromEvasObject(ret);
+  EWebView* webView = GetEWebViewFromEwkView(ret);
 
   if (!webView || !data || !length)
     return ret;
@@ -600,21 +600,36 @@ Eina_Bool ewk_view_web_application_capable_get(Evas_Object* ewkView, Ewk_Web_App
 {
   EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
   EINA_SAFETY_ON_NULL_RETURN_VAL(callback, EINA_FALSE);
+#if !defined(EWK_BRINGUP)  // FIXME::M94 Bringup IPC to MOJO conversion in
+                           // WebAppCapableGet
   return impl->WebAppCapableGet(callback, userData) ? EINA_TRUE : EINA_FALSE;
+#else
+  return EINA_FALSE;
+#endif
 }
 
 Eina_Bool ewk_view_web_application_icon_url_get(Evas_Object* ewkView, Ewk_Web_App_Icon_URL_Get_Callback callback, void* userData)
 {
   EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
   EINA_SAFETY_ON_NULL_RETURN_VAL(callback, EINA_FALSE);
+#if !defined(EWK_BRINGUP)  // FIXME::M94 Bringup IPC to MOJO conversion in
+                           // WebAppIconUrlGet
   return impl->WebAppIconUrlGet(callback, userData) ? EINA_TRUE : EINA_FALSE;
+#else
+  return EINA_FALSE;
+#endif
 }
 
 Eina_Bool ewk_view_web_application_icon_urls_get(Evas_Object* ewkView, Ewk_Web_App_Icon_URLs_Get_Callback callback, void* userData)
 {
   EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
   EINA_SAFETY_ON_NULL_RETURN_VAL(callback, EINA_FALSE);
+#if !defined(EWK_BRINGUP)  // FIXME::M94 Bringup IPC to MOJO conversion in
+                           // WebAppIconUrlsGet
   return impl->WebAppIconUrlsGet(callback, userData) ? EINA_TRUE : EINA_FALSE;
+#else
+  return EINA_FALSE;
+#endif
 }
 
 Eina_Bool ewk_view_command_execute(Evas_Object* view, const char* command, const char* value)
@@ -661,7 +676,6 @@ Eina_Bool ewk_view_script_execute(Evas_Object* ewkView, const char* script, Ewk_
   return false;
 }
 
-
 Eina_Bool ewk_view_plain_text_get(Evas_Object* view, Ewk_View_Plain_Text_Get_Callback callback, void* user_data)
 {
   EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
@@ -926,6 +940,16 @@ void ewk_view_unfocus_allow_callback_set(Evas_Object* ewkView, Ewk_View_Unfocus_
   impl->SetViewUnfocusAllowCallback(callback, user_data);
 }
 
+void ewk_view_smartrc_show_mic_notification_callback_set(Evas_Object* ewkView, Ewk_View_SmartRC_Mic_Notification_Callback callback, void* user_data)
+{
+#if BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
+  impl->SetViewSmartrcMicNotificationCallback(callback, user_data);
+#else
+  LOG_EWK_API_MOCKUP("This API is only available in Tizen TV product.");
+#endif
+}
+
 void ewk_view_geolocation_permission_callback_set(Evas_Object* ewk_view, Ewk_View_Geolocation_Permission_Callback callback, void* user_data)
 {
   EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
@@ -1010,6 +1034,7 @@ char* ewk_view_get_cookies_for_url(Evas_Object* view, const char* url)
   EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, 0);
   EINA_SAFETY_ON_NULL_RETURN_VAL(url, 0);
   EINA_SAFETY_ON_NULL_RETURN_VAL(impl->context(), 0);
+  EINA_SAFETY_ON_NULL_RETURN_VAL(impl->context()->cookieManager(), 0);
   std::string cookiesForURL =
       impl->context()->cookieManager()->GetCookiesForURL(std::string(url));
   if (cookiesForURL.empty())
@@ -1028,8 +1053,7 @@ Eina_Bool ewk_view_fullscreen_exit(Evas_Object* view)
 Eina_Bool ewk_view_draws_transparent_background_set(Evas_Object *view, Eina_Bool enabled)
 {
   EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
-  impl->SetDrawsTransparentBackground(enabled);
-  return EINA_TRUE;
+  return impl->SetDrawsTransparentBackground(!!enabled);
 }
 
 void ewk_view_browser_font_set(Evas_Object* ewkView)
@@ -1043,7 +1067,7 @@ void ewk_view_session_data_get(Evas_Object* ewkView, const char** data, unsigned
   EINA_SAFETY_ON_NULL_RETURN(data);
   EINA_SAFETY_ON_NULL_RETURN(length);
 
-  EWebView* impl = GetWebViewFromEvasObject(ewkView);
+  EWebView* impl = GetEWebViewFromEwkView(ewkView);
   if (!impl) {
     *data = NULL;
     *length = 0;
@@ -1154,7 +1178,9 @@ void ewk_view_quota_permission_request_reply(const Ewk_Quota_Permission_Request*
   EINA_SAFETY_ON_NULL_RETURN(request);
   Evas_Object* ewkView = request->getView();
   EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
+#if !defined(EWK_BRINGUP)  // FIXME: m114 bringup
   impl->QuotaRequestReply(request, allow == EINA_TRUE);
+#endif
 }
 
 void ewk_view_quota_permission_request_cancel(const Ewk_Quota_Permission_Request* request)
@@ -1162,7 +1188,9 @@ void ewk_view_quota_permission_request_cancel(const Ewk_Quota_Permission_Request
   EINA_SAFETY_ON_NULL_RETURN(request);
   Evas_Object* ewkView = request->getView();
   EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
+#if !defined(EWK_BRINGUP)  // FIXME: m114 bringup
   impl->QuotaRequestCancel(request);
+#endif
 }
 
 Eina_Bool ewk_view_focus_set(const Evas_Object* view, Eina_Bool focused)
@@ -1201,8 +1229,8 @@ Evas_Object* ewk_view_widget_get(Evas_Object* view)
 
 Eina_Bool ewk_view_draws_transparent_background_get(Evas_Object* o)
 {
-  LOG_EWK_API_MOCKUP();
-  return false;
+  EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, EINA_FALSE);
+  return impl->GetDrawsTransparentBackground();
 }
 
 Eina_Bool ewk_view_did_change_theme_color_callback_set(
@@ -1266,13 +1294,83 @@ Eina_Bool ewk_view_set_custom_device_pixel_ratio(Evas_Object* ewkView, Eina_Bool
   return false;
 }
 
-#if BUILDFLAG(IS_TIZEN_TV)
-Eina_Bool ewk_media_translated_url_set(Evas_Object* ewkView, const char* url)
+Ewk_Board_Decoding_Capabilities ewk_view_board_decoding_capabilities_get(
+  const Evas_Object* view)
+{
+  LOG_EWK_API_MOCKUP();
+  return EWK_BOARD_DECODING_CAPABILITIES_UNKNOWN;
+}
+
+void ewk_view_next_player_for_media_switch_set(
+  Evas_Object* view,
+  int player_id)
+{
+  LOG_EWK_API_MOCKUP();
+}
+
+void ewk_view_sw_audio_decoding_set(
+  Evas_Object* view,
+  Eina_Bool use_sw_audio_decoder)
+{
+  LOG_EWK_API_MOCKUP();
+}
+
+void ewk_view_set_video_geometry(
+  Evas_Object* view,
+  Eina_Rectangle v_area)
+{
+  LOG_EWK_API_MOCKUP();
+}
+
+void ewk_view_release_players(
+  Evas_Object* view)
+{
+  LOG_EWK_API_MOCKUP();
+}
+
+void ewk_view_player_set_visibility(
+  Evas_Object* view,
+  int video_id,
+  bool visibility)
+{
+  LOG_EWK_API_MOCKUP();
+}
+
+void ewk_view_broadcast_set_visibility(
+  Evas_Object* view,
+  bool visibility)
 {
   LOG_EWK_API_MOCKUP();
+}
+
+void ewk_view_player_play(
+  Evas_Object* view,
+  int video_id)
+{
+  LOG_EWK_API_MOCKUP();
+}
+
+void ewk_view_player_pause(
+  Evas_Object* view,
+  int video_id)
+{
+  LOG_EWK_API_MOCKUP();
+}
+
+Eina_Bool ewk_media_translated_url_set(Evas_Object* ewkView, const char* url)
+{
+#if BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
+  EINA_SAFETY_ON_NULL_RETURN_VAL(url, EINA_FALSE);
+  impl->SetTranslatedURL(url);
+  return EINA_TRUE;
+#else
+  LOG_EWK_API_MOCKUP("Only for Tizen TV.");
   return false;
+#endif
 }
 
+#if BUILDFLAG(IS_TIZEN_TV)
 Eina_Bool ewk_view_app_preload_set(Evas_Object* ewkView, Eina_Bool is_preload)
 {
   LOG_EWK_API_MOCKUP();
@@ -1290,8 +1388,15 @@ Evas_Object* ewk_view_favicon_get(const Evas_Object* ewkView)
 
 Eina_Bool ewk_view_html_string_override_current_entry_load(Evas_Object* view, const char* html, const char* base_uri, const char* unreachable_url)
 {
-  LOG_EWK_API_MOCKUP();
-  return false;
+#if BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(view, impl, EINA_FALSE);
+  EINA_SAFETY_ON_NULL_RETURN_VAL(html, EINA_FALSE);
+  impl->LoadHTMLStringOverridingCurrentEntry(html, base_uri, unreachable_url);
+  return EINA_TRUE;
+#else
+  LOG_EWK_API_MOCKUP("Only for Tizen TV.");
+  return EINA_FALSE;
+#endif
 }
 
 Eina_Bool ewk_view_text_matches_count(Evas_Object* o, const char* text, Ewk_Find_Options options, unsigned max_match_count)
@@ -1307,12 +1412,23 @@ void ewk_view_mirrored_blur_set(Evas_Object* o, Eina_Bool state)
 
 void ewk_view_add_dynamic_certificate_path(const Evas_Object *ewkView, const char* host, const char* cert_path)
 {
+#if BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
+  impl->AddDynamicCertificatePath(std::string(host), std::string(cert_path));
+#else
   LOG_EWK_API_MOCKUP();
+#endif
 }
 
 void ewk_view_atk_deactivation_by_app(Evas_Object* view, Eina_Bool enable)
 {
+#if BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
+  LOG(INFO)<< "ewk_view_atk_deactivation_by_app, enable: " << (bool)enable;
+  impl->DeactivateAtk(enable == EINA_FALSE);
+#else
   LOG_EWK_API_MOCKUP();
+#endif
 }
 
 char* ewk_view_cookies_get(Evas_Object* o, const char* url)
@@ -1349,8 +1465,13 @@ void ewk_view_force_layout(const Evas_Object* o)
 }
 
 Eina_Bool ewk_view_send_key_event(Evas_Object* ewk_view, void* key_event, Eina_Bool is_press) {
-  LOG_EWK_API_MOCKUP();
-  return false;
+  EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl, EINA_FALSE);
+  EINA_SAFETY_ON_NULL_RETURN_VAL(key_event, EINA_FALSE);
+#if BUILDFLAG(IS_TIZEN_TV)
+  LOG(INFO) << "view: " << ewk_view << ", is_press :" << (bool)is_press;
+#endif
+  impl->SendKeyEvent(ewk_view, key_event, !!is_press);
+  return EINA_TRUE;
 }
 
 Eina_Bool ewk_view_tts_mode_set(Evas_Object* view, ewk_tts_mode tts_mode) {
@@ -1437,13 +1558,25 @@ void ewk_view_app_installation_request_callback_set(Evas_Object* o, Ewk_App_Inst
 }
 
 Eina_Bool ewk_view_bg_color_set(Evas_Object* o, int r, int g, int b, int a) {
-  LOG_EWK_API_MOCKUP("This will be implemented soon");
-  return false;
+  EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, EINA_FALSE);
+  if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255 || a < 0 ||
+    a > 255) {
+    LOG(ERROR) << "Invalid background color";
+    return EINA_FALSE;
+  }
+  return impl->SetBackgroundColor(r, g, b, a);
 }
 
 Eina_Bool ewk_view_key_events_enabled_set(Evas_Object* o, Eina_Bool enabled) {
-  LOG_EWK_API_MOCKUP();
-  return false;
+#if BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, EINA_FALSE);
+  LOG(INFO)<< "ewk_view_key_events_enabled_set, enabled: " << (bool)enabled;
+  return impl->SetKeyEventsEnabled(!!enabled);
+#else
+  LOG_EWK_API_MOCKUP("This API is only available in Tizen TV product.");
+  return EINA_FALSE;
+#endif
+
 }
 
 Eina_Bool ewk_view_bg_color_get(Evas_Object* view,
@@ -1466,7 +1599,14 @@ void ewk_view_clear_all_tiles_resources(Evas_Object* ewkView) {
 Eina_Bool ewk_view_edge_scroll_by(Evas_Object *ewkView, int dx, int dy)
 {
   LOG_EWK_API_MOCKUP();
+#if BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
+  LOG(INFO) << "view: " << ewkView << ", dx:" << dx << ", dy:" << dy;
+  return impl->EdgeScrollBy(dx, dy);
+#else
+  LOG_EWK_API_MOCKUP("edge_scroll_by feature is not enabled");
   return EINA_FALSE;
+#endif
 }
 
 Eina_Bool ewk_view_set_support_video_hole(Evas_Object* ewkView,
@@ -1477,7 +1617,12 @@ Eina_Bool ewk_view_set_support_video_hole(Evas_Object* ewkView,
 #if defined(TIZEN_VIDEO_HOLE)
   EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl, EINA_FALSE);
   LOG(INFO) << "view: " << ewkView << ", enable:" << (bool)enable;
-  impl->SetVideoHoleSupport(enable);
+  // Video hole is set false by default. So further calls are not needed
+  // if |enable| is false.
+  if (enable == EINA_FALSE)
+    return EINA_FALSE;
+
+  impl->EnableVideoHoleSupport();
   media::VideoPlaneController::SetSharedVideoWindowHandle(
       window,
       static_cast<media::VideoPlaneController::RenderingMode>(isVideoWindow));
@@ -1491,24 +1636,61 @@ Eina_Bool ewk_view_set_support_video_hole(Evas_Object* ewkView,
 void ewk_view_set_cursor_by_client(Evas_Object* ewkView, Eina_Bool enable) {}
 
 void ewk_view_widget_pepper_extension_callback_set(Evas_Object* ewk_view, Generic_Sync_Call_Callback cb, void* user_data) {
-  LOG_EWK_API_MOCKUP();
+#if defined(TIZEN_PEPPER_EXTENSIONS) && BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
+  impl->SetPepperExtensionCallback(cb, user_data);
+#else
+  NOTIMPLEMENTED() << "This API is only available with TIZEN_PEPPER_EXTENSIONS"
+                   << " macro on TIZEN_TV products.";
+#endif
 }
 
 void ewk_view_widget_pepper_extension_info_set(Evas_Object* ewk_view, Ewk_Value widget_pepper_ext_info) {
-  LOG_EWK_API_MOCKUP();
+#if defined(TIZEN_PEPPER_EXTENSIONS) && BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
+  impl->SetPepperExtensionWidgetInfo(widget_pepper_ext_info);
+#else
+  NOTIMPLEMENTED() << "This API is only available with TIZEN_PEPPER_EXTENSIONS"
+                   << " macro on TIZEN_TV products.";
+#endif
 }
 
-void ewk_view_offscreen_rendering_enabled_set(Evas_Object* o, Eina_Bool enabled)
+void ewk_view_resume_network_loading(Evas_Object* ewk_view)
 {
-  LOG_EWK_API_MOCKUP();
+#if BUILDFLAG(IS_TIZEN_TV)
+  LOG(INFO) << "view : " << ewk_view;
+  EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
+  impl->ResumeNetworkLoading();
+#else
+  LOG_EWK_API_MOCKUP("Only for Tizen TV Browser");
+#endif
 }
 
-void ewk_view_ime_window_set(Evas_Object* o, void* window)
+void ewk_view_suspend_network_loading(Evas_Object* ewk_view)
 {
+#if BUILDFLAG(IS_TIZEN_TV)
+  LOG(INFO) << "view : " << ewk_view;
+  EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
+  impl->SuspendNetworkLoading();
+#else
+  LOG_EWK_API_MOCKUP("Only for Tizen TV Browser");
+#endif
+}
+
+void ewk_view_offscreen_rendering_enabled_set(Evas_Object* o, Eina_Bool enabled)
+{
+#if defined(TIZEN_TBM_SUPPORT)
+  EWK_VIEW_IMPL_GET_OR_RETURN(o, impl);
+  impl->SetOffscreenRendering(enabled);
+#if defined(TIZEN_VIDEO_HOLE)
+  media::VideoPlaneController::set_use_wayland_window(true);
+#endif
+#else
   LOG_EWK_API_MOCKUP();
+#endif
 }
 
-void ewk_view_smartrc_show_mic_notification_callback_set(Evas_Object* o, Ewk_View_SmartRC_Mic_Notification_Callback callback, void* user_data)
+void ewk_view_ime_window_set(Evas_Object* o, void* window)
 {
   LOG_EWK_API_MOCKUP();
 }
@@ -1538,6 +1720,19 @@ Eina_Bool ewk_view_key_system_whitelist_set(Evas_Object* ewkView, const char** l
 
 Eina_Bool ewk_view_is_video_playing(Evas_Object* o, Ewk_Is_Video_Playing_Callback callback, void* user_data)
 {
+#if BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, EINA_FALSE);
+  EINA_SAFETY_ON_NULL_RETURN_VAL(callback, EINA_FALSE);
+  LOG(INFO) << __func__;
+  return impl->IsVideoPlaying(callback, user_data) ? EINA_TRUE : EINA_FALSE;
+#else
+  LOG_EWK_API_MOCKUP("Only for Tizen TV.");
+  return EINA_FALSE;
+#endif
+}
+
+Eina_Bool ewk_view_stop_video(Evas_Object* o, Ewk_Stop_Video_Callback callback, void* user_data)
+{
   LOG_EWK_API_MOCKUP();
   return EINA_FALSE;
 }
@@ -1563,23 +1758,43 @@ void ewk_view_broadcast_decoder_set(
 
 void ewk_media_set_subtitle_lang(Evas_Object* ewkView, const char* lang_list)
 {
-  LOG_EWK_API_MOCKUP();
+#if BUILDFLAG(IS_TIZEN_TV)
+    EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
+    impl->SetPreferSubtitleLang(lang_list);
+#else
+    LOG_EWK_API_MOCKUP("Only for Tizen TV.");
+#endif
 }
 
 void ewk_media_set_parental_rating_result(Evas_Object* ewkView, const char* url, Eina_Bool is_pass)
 {
-  LOG_EWK_API_MOCKUP();
+#if BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
+  impl->SetParentalRatingResult(url, is_pass);
+#else
+  LOG_EWK_API_MOCKUP("Only for Tizen TV.");
+#endif
 }
 
-void ewk_media_start_with_high_bit_rate(Evas_Object* ewkView, Eina_Bool is_high_bitrate)
+void ewk_media_start_with_high_bit_rate(Evas_Object* ewkView, Eina_Bool high_bitrate)
 {
-  LOG_EWK_API_MOCKUP();
+#if BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(ewkView, impl);
+  impl->SetHighBitRate(high_bitrate);
+#else
+  LOG_EWK_API_MOCKUP("Only for Tizen TV.");
+#endif
 }
 
 double ewk_view_media_current_time_get(const Evas_Object *o)
 {
-  LOG_EWK_API_MOCKUP();
+#if BUILDFLAG(IS_TIZEN_TV)
+  EWK_VIEW_IMPL_GET_OR_RETURN(o, impl, 0);
+  return impl->GetCurrentTime();
+#else
+  LOG_EWK_API_MOCKUP("Only for Tizen TV.");
   return 0;
+#endif
 }
 
 void ewk_view_request_canvas_fullscreen(Evas_Object* ewkView)
@@ -1643,10 +1858,12 @@ void ewk_view_voicemanager_labels_clear(Evas_Object* view) {
 #endif
 }
 
-void ewk_view_floating_window_state_changed(const Evas_Object *o, Eina_Bool status)
+void ewk_view_floating_window_state_changed(const Evas_Object *view, Eina_Bool status)
 {
 #if BUILDFLAG(IS_TIZEN_TV)
-  EWK_VIEW_IMPL_GET_OR_RETURN(o, impl);
+  EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
+  LOG(INFO) << __FUNCTION__ << ", view: "<< view << ", status: " << status;
+  impl->SetFloatVideoWindowState(status);
 #else
   LOG_EWK_API_MOCKUP();
 #endif
@@ -1656,18 +1873,22 @@ void ewk_view_feed_mouse_down(Evas_Object* view,
                               Ewk_Mouse_Button_Type button,
                               int x,
                               int y) {
-  LOG_EWK_API_MOCKUP("NUI feature is not enabled");
+  EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
+  LOG(INFO) << "ewk_view_feed_mouse_down";
+  impl->SendMouseDown(button, x, y);
 }
 
 void ewk_view_feed_mouse_up(Evas_Object* view,
                             Ewk_Mouse_Button_Type button,
                             int x,
                             int y) {
-  LOG_EWK_API_MOCKUP("NUI feature is not enabled");
+  EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
+  impl->SendMouseUp(button, x, y);
 }
 
 void ewk_view_feed_mouse_move(Evas_Object* view, int x, int y) {
-  LOG_EWK_API_MOCKUP("NUI feature is not enabled");
+  EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
+  impl->SendMouseMove(x, y);
 }
 
 void ewk_view_feed_mouse_wheel(Evas_Object* view,
@@ -1675,12 +1896,17 @@ void ewk_view_feed_mouse_wheel(Evas_Object* view,
                                int step,
                                int x,
                                int y) {
-  LOG_EWK_API_MOCKUP("NUI feature is not enabled");
+  EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
+  impl->SendMouseWheel(!!y_direction, step, x, y);
 }
 
+void ewk_view_feed_mouse_out(Evas_Object* view) {
+  EWK_VIEW_IMPL_GET_OR_RETURN(view, impl);
+  impl->SendMouseOut();
+}
 void ewk_view_auto_login(Evas_Object *view, const char* user_name, const char* password)
 {
-  LOG_EWK_API_MOCKUP();
+  LOG_EWK_API_MOCKUP("This API is not supported.");
 }
 
 void ewk_view_request_manifest(Evas_Object* o,
@@ -1691,13 +1917,27 @@ void ewk_view_request_manifest(Evas_Object* o,
 }
 
 void ewk_view_media_device_list_get(Evas_Object* o, Ewk_Media_Device_List_Get_Callback callback, void* user_data) {
-  //TODO
+#if BUILDFLAG(IS_TIZEN_TV)
+  LOG(INFO) << "ewk_view_media_device_list_get called";
+  EWK_VIEW_IMPL_GET_OR_RETURN(o, impl);
+  EINA_SAFETY_ON_NULL_RETURN(callback);
+  impl->GetMediaDeviceList(callback, user_data);
+#else
+  LOG_EWK_API_MOCKUP("Only for Tizen TV.");
+#endif
 }
+
 void ewk_view_run_mixed_content_confirm_callback_set(
     Evas_Object* /* ewkView */,
     Ewk_View_Run_Mixed_Content_Confirm_Callback /* callback */,
     void* /* user_data */) {}
-void ewk_view_error_page_load_callback_set(Evas_Object* ewk_view, Ewk_View_Error_Page_Load_Callback callback, void* user_data) {}
+
+void ewk_view_error_page_load_callback_set(Evas_Object* ewk_view, Ewk_View_Error_Page_Load_Callback callback, void* user_data)
+{
+  EWK_VIEW_IMPL_GET_OR_RETURN(ewk_view, impl);
+  EINA_SAFETY_ON_NULL_RETURN(callback);
+  impl->SetViewLoadErrorPageCallback(callback, user_data);
+}
 
 Eina_Bool ewk_view_add_item_to_back_forward_list(Evas_Object* o, const Ewk_Back_Forward_List_Item* item)
 {