X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fweb-engine%2Fcommon%2Fweb-engine-impl.cpp;h=87e1f6e68c8376939a4f61a97b16635e2b9f5160;hb=39e92ce9125526ae5d32882de44f01b03d27dc5a;hp=09433876ee1075d39880844aa1be01830e63c200;hpb=5d11067fb8e95084f6f4b93f94c5d8a482da3525;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/web-engine/common/web-engine-impl.cpp b/dali/internal/web-engine/common/web-engine-impl.cpp old mode 100755 new mode 100644 index 0943387..87e1f6e --- a/dali/internal/web-engine/common/web-engine-impl.cpp +++ b/dali/internal/web-engine/common/web-engine-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 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. @@ -19,46 +19,44 @@ #include // EXTERNAL INCLUDES -#include #include #include +#include #include // INTERNAL INCLUDES #include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include namespace Dali { - namespace Internal { - namespace Adaptor { - namespace // unnamed namespace { +constexpr char const* const kPluginFullNamePrefix = "libdali2-web-engine-"; +constexpr char const* const kPluginFullNamePostfix = "-plugin.so"; +constexpr char const* const kPluginFullNameDefault = "libdali2-web-engine-plugin.so"; -constexpr char const * const kPluginFullNamePrefix = "libdali2-web-engine-"; -constexpr char const * const kPluginFullNamePostfix = "-plugin.so"; -constexpr char const * const kPluginFullNameDefault = "libdali2-web-engine-plugin.so"; - -// Note: Dali WebView policy does not allow to use multiple web engines in an application. -// So once pluginName is set to non-empty string, it will not change. -std::string pluginName; - -std::string MakePluginName( const char* environmentName ) +std::string MakePluginName(const char* environmentName) { std::stringstream fullName; fullName << kPluginFullNamePrefix << environmentName << kPluginFullNamePostfix; - return std::move( fullName.str() ); + return std::move(fullName.str()); } Dali::BaseHandle Create() @@ -66,15 +64,158 @@ Dali::BaseHandle Create() return Dali::WebEngine::New(); } -Dali::TypeRegistration type( typeid( Dali::WebEngine ), typeid( Dali::BaseHandle ), Create ); +Dali::TypeRegistration type(typeid(Dali::WebEngine), typeid(Dali::BaseHandle), Create); + +/** + * @brief Control the WebEnginePlugin library lifecycle. + * Hold the plugin library handle in static singletone. + * It will makes library handle alives during all WebEngine resources create & destory. + */ +struct WebEnginePluginObject +{ +public: + static WebEnginePluginObject& GetInstance() + { + static WebEnginePluginObject gPluginHandle; + return gPluginHandle; + } + + /** + * @brief Converts an handle to a bool. + * + * This is useful for checking whether the WebEnginePluginObject succes to load library. + * @note We don't check mHandle because it is possible that mHandle load is success but + * Create/Destroy API load failed. + */ + explicit operator bool() const + { + return mLoadSucceeded; + } + + bool InitializeContextHandle() + { + if(!mHandle) + { + return false; + } + + if(!mGetWebEngineContextPtr) + { + mGetWebEngineContextPtr = reinterpret_cast(dlsym(mHandle, "GetWebEngineContext")); + if(!mGetWebEngineContextPtr) + { + DALI_LOG_ERROR("Can't load symbol GetWebEngineContext(), error: %s\n", dlerror()); + return false; + } + } + + return true; + } + + bool InitializeCookieManagerHandle() + { + if(!mHandle) + { + return false; + } + + if(!mGetWebEngineCookieManagerPtr) + { + mGetWebEngineCookieManagerPtr = reinterpret_cast(dlsym(mHandle, "GetWebEngineCookieManager")); + if(!mGetWebEngineCookieManagerPtr) + { + DALI_LOG_ERROR("Can't load symbol GetWebEngineCookieManager(), error: %s\n", dlerror()); + return false; + } + } + + return true; + } + +private: + // Private constructor / destructor + WebEnginePluginObject() + : mLoadSucceeded{false}, + mHandle{nullptr}, + mCreateWebEnginePtr{nullptr}, + mDestroyWebEnginePtr{nullptr}, + mGetWebEngineContextPtr{nullptr}, + mGetWebEngineCookieManagerPtr{nullptr} + { + std::string pluginName; + const char* name = EnvironmentVariable::GetEnvironmentVariable(DALI_ENV_WEB_ENGINE_NAME); + if(name) + { + pluginName = MakePluginName(name); + } + else + { + pluginName = std::string(kPluginFullNameDefault); + } + + mHandle = dlopen(pluginName.c_str(), RTLD_LAZY); + if(!mHandle) + { + DALI_LOG_ERROR("Can't load %s : %s\n", pluginName.c_str(), dlerror()); + return; + } + + mCreateWebEnginePtr = reinterpret_cast(dlsym(mHandle, "CreateWebEnginePlugin")); + if(mCreateWebEnginePtr == nullptr) + { + DALI_LOG_ERROR("Can't load symbol CreateWebEnginePlugin(), error: %s\n", dlerror()); + return; + } + + mDestroyWebEnginePtr = reinterpret_cast(dlsym(mHandle, "DestroyWebEnginePlugin")); + if(mDestroyWebEnginePtr == nullptr) + { + DALI_LOG_ERROR("Can't load symbol DestroyWebEnginePlugin(), error: %s\n", dlerror()); + return; + } + + mLoadSucceeded = true; + } + + ~WebEnginePluginObject() + { + if(mHandle) + { + dlclose(mHandle); + mHandle = nullptr; + mLoadSucceeded = false; + } + } + + WebEnginePluginObject(const WebEnginePluginObject&) = delete; + WebEnginePluginObject(WebEnginePluginObject&&) = delete; + WebEnginePluginObject& operator=(const WebEnginePluginObject&) = delete; + WebEnginePluginObject& operator=(WebEnginePluginObject&&) = delete; + +private: + bool mLoadSucceeded; ///< True if library loaded successfully. False otherwise. + +public: + using CreateWebEngineFunction = Dali::WebEnginePlugin* (*)(); + using DestroyWebEngineFunction = void (*)(Dali::WebEnginePlugin* plugin); + + using GetWebEngineContext = Dali::WebEngineContext* (*)(); + using GetWebEngineCookieManager = Dali::WebEngineCookieManager* (*)(); + + void* mHandle; ///< Handle for the loaded library + CreateWebEngineFunction mCreateWebEnginePtr; ///< Function to create plugin instance + DestroyWebEngineFunction mDestroyWebEnginePtr; ///< Function to destroy plugin instance + + GetWebEngineContext mGetWebEngineContextPtr; ///< Function to get WebEngineContext + GetWebEngineCookieManager mGetWebEngineCookieManagerPtr; ///< Function to get WebEngineCookieManager +}; } // unnamed namespace WebEnginePtr WebEngine::New() { WebEngine* instance = new WebEngine(); - - if( !instance->Initialize() ) + if(!instance->Initialize()) { delete instance; return nullptr; @@ -83,99 +224,80 @@ WebEnginePtr WebEngine::New() return instance; } -WebEngine::WebEngine() -: mPlugin( NULL ), - mHandle( NULL ), - mCreateWebEnginePtr( NULL ), - mDestroyWebEnginePtr( NULL ) +Dali::WebEngineContext* WebEngine::GetContext() { -} - -WebEngine::~WebEngine() -{ - if( mHandle != NULL ) + if(!WebEnginePluginObject::GetInstance().InitializeContextHandle()) { - if( mDestroyWebEnginePtr != NULL ) - { - mPlugin->Destroy(); - mDestroyWebEnginePtr( mPlugin ); - } + return nullptr; + } - dlclose( mHandle ); + if(WebEnginePluginObject::GetInstance().mGetWebEngineContextPtr) + { + return WebEnginePluginObject::GetInstance().mGetWebEngineContextPtr(); } + + return nullptr; } -bool WebEngine::InitializePluginHandle() +Dali::WebEngineCookieManager* WebEngine::GetCookieManager() { - if( pluginName.length() == 0 ) + if(!WebEnginePluginObject::GetInstance().InitializeCookieManagerHandle()) { - // pluginName is not initialized yet. - const char* name = EnvironmentVariable::GetEnvironmentVariable( DALI_ENV_WEB_ENGINE_NAME ); - if( name ) - { - pluginName = MakePluginName( name ); - mHandle = dlopen( pluginName.c_str(), RTLD_LAZY ); - if( mHandle ) - { - return true; - } - } - pluginName = std::string( kPluginFullNameDefault ); + return nullptr; } - mHandle = dlopen( pluginName.c_str(), RTLD_LAZY ); - if( !mHandle ) + if(WebEnginePluginObject::GetInstance().mGetWebEngineCookieManagerPtr) { - DALI_LOG_ERROR( "Can't load %s : %s\n", pluginName.c_str(), dlerror() ); - return false; + return WebEnginePluginObject::GetInstance().mGetWebEngineCookieManagerPtr(); } - return true; + return nullptr; } -bool WebEngine::Initialize() +WebEngine::WebEngine() +: mPlugin(nullptr) { - char* error = NULL; - - if( !InitializePluginHandle() ) - { - return false; - } +} - mCreateWebEnginePtr = reinterpret_cast< CreateWebEngineFunction >( dlsym( mHandle, "CreateWebEnginePlugin" ) ); - if( mCreateWebEnginePtr == NULL ) +WebEngine::~WebEngine() +{ + if(mPlugin != nullptr) { - DALI_LOG_ERROR( "Can't load symbol CreateWebEnginePlugin(), error: %s\n", error ); - return false; + mPlugin->Destroy(); + // Check whether plugin load sccess or not. + if(DALI_LIKELY(WebEnginePluginObject::GetInstance())) + { + WebEnginePluginObject::GetInstance().mDestroyWebEnginePtr(mPlugin); + } + mPlugin = nullptr; } +} - mDestroyWebEnginePtr = reinterpret_cast< DestroyWebEngineFunction >( dlsym( mHandle, "DestroyWebEnginePlugin" ) ); - - if( mDestroyWebEnginePtr == NULL ) +bool WebEngine::Initialize() +{ + // Check whether plugin load sccess or not. + if(!WebEnginePluginObject::GetInstance()) { - DALI_LOG_ERROR( "Can't load symbol DestroyWebEnginePlugin(), error: %s\n", error ); return false; } - mPlugin = mCreateWebEnginePtr(); - - if( mPlugin == NULL ) + mPlugin = WebEnginePluginObject::GetInstance().mCreateWebEnginePtr(); + if(mPlugin == nullptr) { - DALI_LOG_ERROR( "Can't create the WebEnginePlugin object\n" ); + DALI_LOG_ERROR("Can't create the WebEnginePlugin object\n"); return false; } - return true; } -void WebEngine::Create( int width, int height, const std::string& locale, const std::string& timezoneId ) +void WebEngine::Create(uint32_t width, uint32_t height, const std::string& locale, const std::string& timezoneId) { - mPlugin->Create( width, height, locale, timezoneId ); + mPlugin->Create(width, height, locale, timezoneId); } -void WebEngine::Create( int width, int height, int argc, char** argv ) +void WebEngine::Create(uint32_t width, uint32_t height, uint32_t argc, char** argv) { - mPlugin->Create( width, height, argc, argv ); + mPlugin->Create(width, height, argc, argv); } void WebEngine::Destroy() @@ -183,24 +305,19 @@ void WebEngine::Destroy() mPlugin->Destroy(); } -Dali::NativeImageInterfacePtr WebEngine::GetNativeImageSource() +Dali::WebEnginePlugin* WebEngine::GetPlugin() const { - return mPlugin->GetNativeImageSource(); -} - -Dali::WebEngineSettings& WebEngine::GetSettings() const -{ - return mPlugin->GetSettings(); + return mPlugin; } -Dali::WebEngineContext& WebEngine::GetContext() const +Dali::NativeImageSourcePtr WebEngine::GetNativeImageSource() { - return mPlugin->GetContext(); + return mPlugin->GetNativeImageSource(); } -Dali::WebEngineCookieManager& WebEngine::GetCookieManager() const +Dali::WebEngineSettings& WebEngine::GetSettings() const { - return mPlugin->GetCookieManager(); + return mPlugin->GetSettings(); } Dali::WebEngineBackForwardList& WebEngine::GetBackForwardList() const @@ -208,9 +325,9 @@ Dali::WebEngineBackForwardList& WebEngine::GetBackForwardList() const return mPlugin->GetBackForwardList(); } -void WebEngine::LoadUrl( const std::string& url ) +void WebEngine::LoadUrl(const std::string& url) { - mPlugin->LoadUrl( url ); + mPlugin->LoadUrl(url); } std::string WebEngine::GetTitle() const @@ -223,24 +340,34 @@ Dali::PixelData WebEngine::GetFavicon() const return mPlugin->GetFavicon(); } -const std::string& WebEngine::GetUrl() +std::string WebEngine::GetUrl() const { return mPlugin->GetUrl(); } -const std::string& WebEngine::GetUserAgent() const +std::string WebEngine::GetUserAgent() const { return mPlugin->GetUserAgent(); } -void WebEngine::SetUserAgent( const std::string& userAgent ) +void WebEngine::SetUserAgent(const std::string& userAgent) +{ + mPlugin->SetUserAgent(userAgent); +} + +void WebEngine::LoadHtmlString(const std::string& htmlString) +{ + mPlugin->LoadHtmlString(htmlString); +} + +bool WebEngine::LoadHtmlStringOverrideCurrentEntry(const std::string& html, const std::string& basicUri, const std::string& unreachableUrl) { - mPlugin->SetUserAgent( userAgent ); + return mPlugin->LoadHtmlStringOverrideCurrentEntry(html, basicUri, unreachableUrl); } -void WebEngine::LoadHtmlString( const std::string& htmlString ) +bool WebEngine::LoadContents(const int8_t* contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri) { - mPlugin->LoadHtmlString( htmlString ); + return mPlugin->LoadContents(contents, contentSize, mimeType, encoding, baseUri); } void WebEngine::Reload() @@ -248,6 +375,11 @@ void WebEngine::Reload() mPlugin->Reload(); } +bool WebEngine::ReloadWithoutCache() +{ + return mPlugin->ReloadWithoutCache(); +} + void WebEngine::StopLoading() { mPlugin->StopLoading(); @@ -263,29 +395,104 @@ void WebEngine::Resume() mPlugin->Resume(); } -void WebEngine::ScrollBy( int deltaX, int deltaY ) +void WebEngine::SuspendNetworkLoading() +{ + mPlugin->SuspendNetworkLoading(); +} + +void WebEngine::ResumeNetworkLoading() +{ + mPlugin->ResumeNetworkLoading(); +} + +bool WebEngine::AddCustomHeader(const std::string& name, const std::string& value) +{ + return mPlugin->AddCustomHeader(name, value); +} + +bool WebEngine::RemoveCustomHeader(const std::string& name) +{ + return mPlugin->RemoveCustomHeader(name); +} + +uint32_t WebEngine::StartInspectorServer(uint32_t port) +{ + return mPlugin->StartInspectorServer(port); +} + +bool WebEngine::StopInspectorServer() +{ + return mPlugin->StopInspectorServer(); +} + +void WebEngine::ScrollBy(int32_t deltaX, int32_t deltaY) +{ + mPlugin->ScrollBy(deltaX, deltaY); +} + +bool WebEngine::ScrollEdgeBy(int32_t deltaX, int32_t deltaY) +{ + return mPlugin->ScrollEdgeBy(deltaX, deltaY); +} + +void WebEngine::SetScrollPosition(int32_t x, int32_t y) +{ + mPlugin->SetScrollPosition(x, y); +} + +Dali::Vector2 WebEngine::GetScrollPosition() const +{ + return mPlugin->GetScrollPosition(); +} + +Dali::Vector2 WebEngine::GetScrollSize() const +{ + return mPlugin->GetScrollSize(); +} + +Dali::Vector2 WebEngine::GetContentSize() const +{ + return mPlugin->GetContentSize(); +} + +void WebEngine::RegisterJavaScriptAlertCallback(Dali::WebEnginePlugin::JavaScriptAlertCallback callback) +{ + mPlugin->RegisterJavaScriptAlertCallback(callback); +} + +void WebEngine::JavaScriptAlertReply() +{ + mPlugin->JavaScriptAlertReply(); +} + +void WebEngine::RegisterJavaScriptConfirmCallback(Dali::WebEnginePlugin::JavaScriptConfirmCallback callback) { - mPlugin->ScrollBy( deltaX, deltaY ); + mPlugin->RegisterJavaScriptConfirmCallback(callback); } -void WebEngine::SetScrollPosition( int x, int y ) +void WebEngine::JavaScriptConfirmReply(bool confirmed) { - mPlugin->SetScrollPosition( x, y ); + mPlugin->JavaScriptConfirmReply(confirmed); } -void WebEngine::GetScrollPosition( int& x, int& y ) const +void WebEngine::RegisterJavaScriptPromptCallback(Dali::WebEnginePlugin::JavaScriptPromptCallback callback) { - mPlugin->GetScrollPosition( x, y ); + mPlugin->RegisterJavaScriptPromptCallback(callback); } -void WebEngine::GetScrollSize( int& width, int& height ) const +void WebEngine::JavaScriptPromptReply(const std::string& result) { - mPlugin->GetScrollSize( width, height ); + mPlugin->JavaScriptPromptReply(result); } -void WebEngine::GetContentSize( int& width, int& height ) const +std::unique_ptr WebEngine::CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode) { - mPlugin->GetContentSize( width, height ); + return mPlugin->CreateHitTest(x, y, mode); +} + +bool WebEngine::CreateHitTestAsynchronously(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode, Dali::WebEnginePlugin::WebEngineHitTestCreatedCallback callback) +{ + return mPlugin->CreateHitTestAsynchronously(x, y, mode, callback); } bool WebEngine::CanGoForward() @@ -308,14 +515,14 @@ void WebEngine::GoBack() mPlugin->GoBack(); } -void WebEngine::EvaluateJavaScript( const std::string& script, std::function< void( const std::string& ) > resultHandler ) +void WebEngine::EvaluateJavaScript(const std::string& script, Dali::WebEnginePlugin::JavaScriptMessageHandlerCallback resultHandler) { - mPlugin->EvaluateJavaScript( script, resultHandler ); + mPlugin->EvaluateJavaScript(script, resultHandler); } -void WebEngine::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler ) +void WebEngine::AddJavaScriptMessageHandler(const std::string& exposedObjectName, Dali::WebEnginePlugin::JavaScriptMessageHandlerCallback handler) { - mPlugin->AddJavaScriptMessageHandler( exposedObjectName, handler ); + mPlugin->AddJavaScriptMessageHandler(exposedObjectName, handler); } void WebEngine::ClearAllTilesResources() @@ -328,48 +535,251 @@ void WebEngine::ClearHistory() mPlugin->ClearHistory(); } -void WebEngine::SetSize( int width, int height ) +void WebEngine::SetSize(uint32_t width, uint32_t height) +{ + mPlugin->SetSize(width, height); +} + +void WebEngine::EnableMouseEvents(bool enabled) +{ + mPlugin->EnableMouseEvents(enabled); +} + +void WebEngine::EnableKeyEvents(bool enabled) +{ + mPlugin->EnableKeyEvents(enabled); +} + +bool WebEngine::SendTouchEvent(const Dali::TouchEvent& touch) +{ + return mPlugin->SendTouchEvent(touch); +} + +bool WebEngine::SendKeyEvent(const Dali::KeyEvent& event) +{ + return mPlugin->SendKeyEvent(event); +} + +void WebEngine::SetFocus(bool focused) +{ + mPlugin->SetFocus(focused); +} + +void WebEngine::SetDocumentBackgroundColor(Dali::Vector4 color) +{ + mPlugin->SetDocumentBackgroundColor(color); +} + +void WebEngine::ClearTilesWhenHidden(bool cleared) +{ + mPlugin->ClearTilesWhenHidden(cleared); +} + +void WebEngine::SetTileCoverAreaMultiplier(float multiplier) +{ + mPlugin->SetTileCoverAreaMultiplier(multiplier); +} + +void WebEngine::EnableCursorByClient(bool enabled) +{ + mPlugin->EnableCursorByClient(enabled); +} + +std::string WebEngine::GetSelectedText() const +{ + return mPlugin->GetSelectedText(); +} + +void WebEngine::SetPageZoomFactor(float zoomFactor) +{ + mPlugin->SetPageZoomFactor(zoomFactor); +} + +float WebEngine::GetPageZoomFactor() const +{ + return mPlugin->GetPageZoomFactor(); +} + +void WebEngine::SetTextZoomFactor(float zoomFactor) +{ + mPlugin->SetTextZoomFactor(zoomFactor); +} + +float WebEngine::GetTextZoomFactor() const { - mPlugin->SetSize( width, height ); + return mPlugin->GetTextZoomFactor(); } -bool WebEngine::SendTouchEvent( const Dali::TouchEvent& touch ) +float WebEngine::GetLoadProgressPercentage() const { - return mPlugin->SendTouchEvent( touch ); + return mPlugin->GetLoadProgressPercentage(); } -bool WebEngine::SendKeyEvent( const Dali::KeyEvent& event ) +void WebEngine::SetScaleFactor(float scaleFactor, Dali::Vector2 point) { - return mPlugin->SendKeyEvent( event ); + mPlugin->SetScaleFactor(scaleFactor, point); } -void WebEngine::SetFocus( bool focused ) +float WebEngine::GetScaleFactor() const { - mPlugin->SetFocus( focused ); + return mPlugin->GetScaleFactor(); } -Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadStartedSignal() +void WebEngine::ActivateAccessibility(bool activated) { - return mPlugin->PageLoadStartedSignal(); + mPlugin->ActivateAccessibility(activated); } -Dali::WebEnginePlugin::WebEnginePageLoadSignalType& WebEngine::PageLoadFinishedSignal() +Accessibility::Address WebEngine::GetAccessibilityAddress() { - return mPlugin->PageLoadFinishedSignal(); + return mPlugin->GetAccessibilityAddress(); } -Dali::WebEnginePlugin::WebEnginePageLoadErrorSignalType& WebEngine::PageLoadErrorSignal() +bool WebEngine::SetVisibility(bool visible) { - return mPlugin->PageLoadErrorSignal(); + return mPlugin->SetVisibility(visible); } -Dali::WebEnginePlugin::WebEngineScrollEdgeReachedSignalType& WebEngine::ScrollEdgeReachedSignal() +bool WebEngine::HighlightText(const std::string& text, Dali::WebEnginePlugin::FindOption options, uint32_t maxMatchCount) { - return mPlugin->ScrollEdgeReachedSignal(); + return mPlugin->HighlightText(text, options, maxMatchCount); } -} // namespace Adaptor; -} // namespace Internal; -} // namespace Dali; +void WebEngine::AddDynamicCertificatePath(const std::string& host, const std::string& certPath) +{ + mPlugin->AddDynamicCertificatePath(host, certPath); +} + +Dali::PixelData WebEngine::GetScreenshot(Dali::Rect viewArea, float scaleFactor) +{ + return mPlugin->GetScreenshot(viewArea, scaleFactor); +} + +bool WebEngine::GetScreenshotAsynchronously(Dali::Rect viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback) +{ + return mPlugin->GetScreenshotAsynchronously(viewArea, scaleFactor, callback); +} +bool WebEngine::CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback) +{ + return mPlugin->CheckVideoPlayingAsynchronously(callback); +} + +void WebEngine::RegisterGeolocationPermissionCallback(Dali::WebEnginePlugin::GeolocationPermissionCallback callback) +{ + mPlugin->RegisterGeolocationPermissionCallback(callback); +} + +void WebEngine::UpdateDisplayArea(Dali::Rect displayArea) +{ + mPlugin->UpdateDisplayArea(displayArea); +} + +void WebEngine::EnableVideoHole(bool enabled) +{ + mPlugin->EnableVideoHole(enabled); +} + +bool WebEngine::SendHoverEvent(const Dali::HoverEvent& event) +{ + return mPlugin->SendHoverEvent(event); +} + +bool WebEngine::SendWheelEvent(const Dali::WheelEvent& event) +{ + return mPlugin->SendWheelEvent(event); +} + +void WebEngine::RegisterFrameRenderedCallback(Dali::WebEnginePlugin::WebEngineFrameRenderedCallback callback) +{ + mPlugin->RegisterFrameRenderedCallback(callback); +} + +void WebEngine::RegisterPageLoadStartedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback) +{ + mPlugin->RegisterPageLoadStartedCallback(callback); +} + +void WebEngine::RegisterPageLoadInProgressCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback) +{ + mPlugin->RegisterPageLoadInProgressCallback(callback); +} + +void WebEngine::RegisterPageLoadFinishedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback) +{ + mPlugin->RegisterPageLoadFinishedCallback(callback); +} + +void WebEngine::RegisterPageLoadErrorCallback(Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback callback) +{ + mPlugin->RegisterPageLoadErrorCallback(callback); +} + +void WebEngine::RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback callback) +{ + mPlugin->RegisterScrollEdgeReachedCallback(callback); +} + +void WebEngine::RegisterUrlChangedCallback(Dali::WebEnginePlugin::WebEngineUrlChangedCallback callback) +{ + mPlugin->RegisterUrlChangedCallback(callback); +} + +void WebEngine::RegisterFormRepostDecidedCallback(Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback callback) +{ + mPlugin->RegisterFormRepostDecidedCallback(callback); +} + +void WebEngine::RegisterConsoleMessageReceivedCallback(Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback callback) +{ + mPlugin->RegisterConsoleMessageReceivedCallback(callback); +} + +void WebEngine::RegisterResponsePolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback callback) +{ + mPlugin->RegisterResponsePolicyDecidedCallback(callback); +} + +void WebEngine::RegisterNavigationPolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineNavigationPolicyDecidedCallback callback) +{ + mPlugin->RegisterNavigationPolicyDecidedCallback(callback); +} + +void WebEngine::RegisterNewWindowCreatedCallback(Dali::WebEnginePlugin::WebEngineNewWindowCreatedCallback callback) +{ + mPlugin->RegisterNewWindowCreatedCallback(callback); +} + +void WebEngine::RegisterCertificateConfirmedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback) +{ + mPlugin->RegisterCertificateConfirmedCallback(callback); +} + +void WebEngine::RegisterSslCertificateChangedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback) +{ + mPlugin->RegisterSslCertificateChangedCallback(callback); +} + +void WebEngine::RegisterHttpAuthHandlerCallback(Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback callback) +{ + mPlugin->RegisterHttpAuthHandlerCallback(callback); +} + +void WebEngine::RegisterContextMenuShownCallback(Dali::WebEnginePlugin::WebEngineContextMenuShownCallback callback) +{ + mPlugin->RegisterContextMenuShownCallback(callback); +} + +void WebEngine::RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback callback) +{ + mPlugin->RegisterContextMenuHiddenCallback(callback); +} + +void WebEngine::GetPlainTextAsynchronously(Dali::WebEnginePlugin::PlainTextReceivedCallback callback) +{ + mPlugin->GetPlainTextAsynchronously(callback); +} +} // namespace Adaptor +} // namespace Internal +} // namespace Dali