+ /**
+ * @brief Enable/Disable video hole for video playing.
+ * @param[in] enabled True if video hole is enabled, false otherwise.
+ */
+ void EnableVideoHole(bool enabled);
+
+ /**
+ * @brief Enable blend mode.
+ * @param[in] blendEnabled True if turn on blend mode, false otherwise.
+ */
+ void EnableBlendMode(bool blendEnabled);
+
+ /**
+ * @brief Enable/disable mouse events. The default is enabled.
+ *
+ * @param[in] enabled True if mouse events are enabled, false otherwise
+ */
+ void EnableMouseEvents(bool enabled);
+
+ /**
+ * @brief Enable/disable key events. The default is enabled.
+ *
+ * @param[in] enabled True if key events enabled, false otherwise
+ */
+ void EnableKeyEvents(bool enabled);
+
+ /**
+ * @brief Create image view by pixel data.
+ * @param[in] pixel Pixel data
+ * @return The new image view
+ */
+ Dali::Toolkit::ImageView CreateImageView(Dali::PixelData pixel) const;
+
+ /**
+ * @brief Signal occurs when the Web View has been touched.
+ * @param[in] actor The Actor Touched
+ * @param[in] touch The Touch Data.
+ * @return Whether to consume event or not.
+ */
+ bool OnTouchEvent(Actor actor, const Dali::TouchEvent& touch);
+
+ /**
+ * @brief Signal occurs when the Web View has been hovered.
+ * @param[in] actor The Actor Hovered
+ * @param[in] hover The Hover Data.
+ * @return Whether to consume event or not.
+ */
+ bool OnHoverEvent(Actor actor, const Dali::HoverEvent& hover);
+
+ /**
+ * @brief Signal occurs when the Web View receives wheel event.
+ * @param[in] actor The Actor that receives Wheel event.
+ * @param[in] wheel The Wheel Data.
+ * @return Whether to consume event or not.
+ */
+ bool OnWheelEvent(Actor actor, const Dali::WheelEvent& wheel);
+
+ /**
+ * @brief Callback function to be called when frame is rendered.
+ */
+ void OnFrameRendered();
+
+ /**
+ * @brief Callback function to be called when frame is rendered. This is to check initial buffer is ready.
+ */
+ void OnInitialFrameRendered();
+
+ /**
+ * @brief Callback function to be called when visibility is changed.
+ * @param[in] actor The actor, or child of actor, whose visibility has changed
+ * @param[in] isVisible Whether the actor is now visible or not
+ * @param[in] type, Whether the actor's visible property has changed or a parent's
+ */
+ void OnVisibilityChanged(Actor actor, bool isVisible, Dali::DevelActor::VisibilityChange::Type type);
+
+ /**
+ * @brief callback for screen shot captured.
+ * @param[in] pixel Pixel data of screen shot.
+ */
+ void OnScreenshotCaptured(Dali::PixelData pixel);
+
+private:
+ Dali::Toolkit::Visual::Base mVisual;
+ Dali::Size mWebViewSize;
+ Dali::WebEngine mWebEngine;
+
+ std::unique_ptr<Dali::Toolkit::WebContext> mWebContext;
+ std::unique_ptr<Dali::Toolkit::WebCookieManager> mWebCookieManager;
+ std::unique_ptr<Dali::Toolkit::WebSettings> mWebSettings;
+ std::unique_ptr<Dali::Toolkit::WebBackForwardList> mWebBackForwardList;
+
+ Dali::PropertyNotification mPositionUpdateNotification;
+ Dali::PropertyNotification mSizeUpdateNotification;
+ Dali::PropertyNotification mScaleUpdateNotification;
+ Dali::Rect<int32_t> mWebViewArea;
+ bool mVideoHoleEnabled;
+ bool mMouseEventsEnabled;
+ bool mKeyEventsEnabled;
+
+ Dali::Toolkit::WebView::WebViewScreenshotCapturedCallback mScreenshotCapturedCallback;
+ Dali::WebEnginePlugin::WebEngineFrameRenderedCallback mFrameRenderedCallback;