[Tizen] Update position & size of web engine plugin. 87/252887/1 accepted/tizen/6.0/unified/20210205.032629 submit/tizen_6.0/20210204.105950
authorhuayong.xu <huayong.xu@samsung.com>
Mon, 9 Nov 2020 10:27:45 +0000 (18:27 +0800)
committerJiyun Yang <ji.yang@samsung.com>
Wed, 3 Feb 2021 03:56:04 +0000 (12:56 +0900)
Originally position of web view is not changed.
This patch is to update position & size of web engine plugin when NUI
web view is moved.

Change-Id: I543deab14407262bd1e7d38a631fc608ad06d71c

dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp
dali-extension/web-engine-chromium/tizen-web-engine-chromium.h
dali-extension/web-engine-lwe/tizen-web-engine-lwe.cpp
dali-extension/web-engine-lwe/tizen-web-engine-lwe.h

index c7bd692..b73d494 100755 (executable)
@@ -24,6 +24,7 @@
 
 #include <Ecore.h>
 #include <Ecore_Evas.h>
+#include <Ecore_Wl2.h>
 #include <Evas.h>
 #include <Elementary.h>
 
@@ -174,7 +175,9 @@ public:
     ewk_context_max_refresh_rate_set( context, 60 );
     mWebView = ewk_view_add( ecore_evas_get( WebEngineManager::Get().GetWindow() ) );
     ewk_view_offscreen_rendering_enabled_set( mWebView, true );
+    ecore_wl2_window_alpha_set( win, false );
     ewk_view_ime_window_set( mWebView, win );
+    ewk_view_set_support_video_hole( mWebView, win, EINA_TRUE, EINA_FALSE );
 
     Ewk_Settings* settings = ewk_view_settings_get( mWebView );
     mWebEngineSettings = TizenWebEngineSettings( settings );
@@ -476,6 +479,20 @@ public:
     ewk_view_focus_set( mWebView, focused );
   }
 
+  void UpdateDisplayArea( Dali::Rect< int > displayArea )
+  {
+    evas_object_move( mWebView, displayArea.x, displayArea.y );
+    SetSize( displayArea.width, displayArea.height );
+    evas_object_geometry_set ( mWebView, displayArea.x, displayArea.y, displayArea.width, displayArea.height );
+  }
+
+  void EnableVideoHole( bool enabled )
+  {
+    Ecore_Wl2_Window* win = AnyCast< Ecore_Wl2_Window* >( Adaptor::Get().GetNativeWindowHandle() );
+    ewk_view_set_support_video_hole( mWebView, win, enabled, EINA_FALSE );
+    ecore_wl2_window_alpha_set( win, !enabled );
+  }
+
 private:
   static void OnFrameRendered( void* data, Evas_Object*, void* buffer )
   {
@@ -929,6 +946,22 @@ void TizenWebEngineChromium::SetFocus( bool focused )
   }
 }
 
+void TizenWebEngineChromium::UpdateDisplayArea( Dali::Rect< int > displayArea )
+{
+  if( mWebViewContainer )
+  {
+    mWebViewContainer->UpdateDisplayArea( displayArea );
+  }
+}
+
+void TizenWebEngineChromium::EnableVideoHole( bool enabled )
+{
+  if( mWebViewContainer )
+  {
+    return mWebViewContainer->EnableVideoHole( enabled );
+  }
+}
+
 Dali::WebEnginePlugin::WebEnginePageLoadSignalType& TizenWebEngineChromium::PageLoadStartedSignal()
 {
   return mLoadStartedSignal;
index acf87ba..c1ff147 100755 (executable)
@@ -291,10 +291,24 @@ public:
 
   /**
    * @copydoc Dali::WebEnginePlugin::SetFocus()
+   * @param[in] focused True if web view is focused, false otherwise.
    */
   void SetFocus( bool focused ) override;
 
   /**
+   * @copydoc Dali::WebEnginePlugin::UpdateDisplayArea()
+   * @brief Update display area.
+   * @param[in] displayArea A display area to be updated.
+   */
+  void UpdateDisplayArea( Dali::Rect< int > displayArea ) override;
+
+  /**
+   * @copydoc Dali::WebEnginePlugin::EnableVideoHole()
+   * @param[in] enabled True if video hole is enabled, false otherwise.
+   */
+  void EnableVideoHole( bool enabled ) override;
+
+  /**
    * @copydoc Dali::WebEnginePlugin::PageLoadStartedSignal()
    */
   Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadStartedSignal() override;
index df2483b..80e9071 100755 (executable)
@@ -884,6 +884,16 @@ void TizenWebEngineLWE::SetFocus( bool focused )
   // NOT IMPLEMENTED
 }
 
+void TizenWebEngineLWE::UpdateDisplayArea( Dali::Rect< int > displayArea )
+{
+  // NOT IMPLEMENTED
+}
+
+void TizenWebEngineLWE::EnableVideoHole( bool enabled )
+{
+  // NOT IMPLEMENTED
+}
+
 } // namespace Plugin
 } // namespace Dali
 
index 98072b0..37650f2 100755 (executable)
@@ -245,6 +245,18 @@ public:
   void SetFocus( bool focused ) override;
 
   /**
+   * @brief Update display area.
+   * @param[in] displayArea A display area to be updated.
+   */
+  void UpdateDisplayArea( Dali::Rect< int > displayArea ) override;
+
+  /**
+   * @copydoc Dali::WebEnginePlugin::EnableVideoHole()
+   * @param[in] enabled True if video hole is enabled, false otherwise.
+   */
+  void EnableVideoHole( bool enabled ) override;
+
+  /**
    * @copydoc Dali::WebEnginePlugin::PageLoadStartedSignal()
    */
   Dali::WebEnginePlugin::WebEnginePageLoadSignalType& PageLoadStartedSignal() override