X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fweb-view%2Fweb-view-impl.h;h=fc5d06a1b2bad24073648da0e1ed10f7be39cf1e;hb=HEAD;hp=61834a2d0604bdf2b389467b6ce36ce8387142b6;hpb=78ccdb8bc480eba0192d871d284aac3a226f0848;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/web-view/web-view-impl.h b/dali-toolkit/internal/controls/web-view/web-view-impl.h old mode 100755 new mode 100644 index 61834a2..6415a8b --- a/dali-toolkit/internal/controls/web-view/web-view-impl.h +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_INTERNAL_WEB_VIEW_H /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -125,7 +125,7 @@ public: /** * @copydoc Dali::WebEngine::LoadContents() */ - bool LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri); + bool LoadContents(const int8_t* contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri); /** * @copydoc Dali::Toolkit::WebView::Reload() @@ -443,6 +443,11 @@ private: // From Control DevelControl::ControlAccessible* CreateAccessibleObject() override; /** + * @copydoc Toolkit::Internal::Control::OnRelayout() + */ + void OnRelayout(const Vector2& size, RelayoutContainer& container) override; + + /** * @copydoc Toolkit::Control::GetNaturalSize */ Vector3 GetNaturalSize() override; @@ -467,6 +472,11 @@ private: // From Control */ void OnSceneConnection(int depth) override; + /** + * @copydoc Toolkit::Control::OnSceneDisconnection() + */ + void OnSceneDisconnection() override; + private: // Undefined WebView(const WebView& webView); @@ -673,11 +683,31 @@ private: void OnVisibilityChanged(Actor actor, bool isVisible, Dali::DevelActor::VisibilityChange::Type type); /** + * @brief Callback when the visibility of the window is changed. + * @param[in] window The window whose visibility has changed + * @param[in] visible Whether the window is now visible or not + */ + void OnWindowVisibilityChanged(Window window, bool visible); + + /** * @brief callback for screen shot captured. * @param[in] pixel Pixel data of screen shot. */ void OnScreenshotCaptured(Dali::PixelData pixel); + /** + * @brief Set DisplayArea by input value. + * It will send changes area infomations to webengine internally. + * + * @param[in] displayArea The display area for current webview want to show. + */ + void SetDisplayArea(const Dali::Rect& displayArea); + + /** + * @brief Apply self visibility state and send visibility chagend to web engine. + */ + void ApplyVisibilityCheck(); + protected: class WebViewAccessible : public DevelControl::ControlAccessible { @@ -711,6 +741,22 @@ private: Dali::Size mWebViewSize; Dali::WebEngine mWebEngine; + uint32_t mLastRenderedNativeImageWidth; + uint32_t mLastRenderedNativeImageHeight; + + enum WebViewVisibleStateFlag + { + NONE = 0, + SCENE_ON = 1 << 0, + WINDOW_SHOW = 1 << 1, + SELF_SHOW = 1 << 2, + PARENT_SHOW = 1 << 3, + + VISIBLE = SCENE_ON | WINDOW_SHOW | SELF_SHOW | PARENT_SHOW, + }; + uint32_t mWebViewVisibleState{WebViewVisibleStateFlag::NONE}; /// Flag of web view visible. + WeakHandle mPlacementWindow; + std::unique_ptr mWebSettings; std::unique_ptr mWebBackForwardList; @@ -722,6 +768,8 @@ private: bool mMouseEventsEnabled; bool mKeyEventsEnabled; + bool mVisualChangeRequired; + Dali::Toolkit::WebView::WebViewScreenshotCapturedCallback mScreenshotCapturedCallback; Dali::WebEnginePlugin::WebEngineFrameRenderedCallback mFrameRenderedCallback; };