X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fweb-engine%2Fcommon%2Fweb-engine-impl.cpp;h=f4753f0700d36ac24abede7e7bdebab5beb15580;hb=7f9f13e07e11fb8acbe4d0efdd04a5fa24b01348;hp=b727a48c3c37b33ffeb0b2de7b6bd81b94a14cac;hpb=6615c344f7515fa67e8d8b769290fef5140d8e9a;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 100644 new mode 100755 index b727a48..f4753f0 --- 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) 2018 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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,41 +19,49 @@ #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 namespace Dali { - namespace Internal { - namespace Adaptor { - namespace // unnamed namespace { - -constexpr char const * const kPluginFullNamePrefix = "libdali-web-engine-"; -constexpr char const * const kPluginFullNamePostfix = "-plugin.so"; -constexpr char const * const kPluginFullNameDefault = "libdali-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() @@ -61,69 +69,67 @@ 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); } // unnamed namespace WebEnginePtr WebEngine::New() { - WebEnginePtr ptr; - WebEngine* engine = new WebEngine(); + WebEngine* instance = new WebEngine(); - if ( !engine->Initialize() ) + if(!instance->Initialize()) { - delete engine; - engine = nullptr; + delete instance; + return nullptr; } - ptr = engine; - return ptr; + return instance; } WebEngine::WebEngine() -: mPlugin( NULL ), - mHandle( NULL ), - mCreateWebEnginePtr( NULL ), - mDestroyWebEnginePtr( NULL ) +: mPlugin(NULL), + mHandle(NULL), + mCreateWebEnginePtr(NULL), + mDestroyWebEnginePtr(NULL) { } WebEngine::~WebEngine() { - if( mHandle != NULL ) + if(mHandle != NULL) { - if( mDestroyWebEnginePtr != NULL ) + if(mDestroyWebEnginePtr != NULL) { mPlugin->Destroy(); - mDestroyWebEnginePtr( mPlugin ); + mDestroyWebEnginePtr(mPlugin); } - dlclose( mHandle ); + dlclose(mHandle); } } bool WebEngine::InitializePluginHandle() { - if ( pluginName.length() == 0 ) + if(pluginName.length() == 0) { // pluginName is not initialized yet. - const char* name = EnvironmentVariable::GetEnvironmentVariable( DALI_ENV_WEB_ENGINE_NAME ); - if ( name ) + const char* name = EnvironmentVariable::GetEnvironmentVariable(DALI_ENV_WEB_ENGINE_NAME); + if(name) { - pluginName = MakePluginName( name ); - mHandle = dlopen( pluginName.c_str(), RTLD_LAZY ); - if ( mHandle ) + pluginName = MakePluginName(name); + mHandle = dlopen(pluginName.c_str(), RTLD_LAZY); + if(mHandle) { return true; } } - pluginName = std::string( kPluginFullNameDefault ); + pluginName = std::string(kPluginFullNameDefault); } - mHandle = dlopen( pluginName.c_str(), RTLD_LAZY ); - if ( !mHandle ) + mHandle = dlopen(pluginName.c_str(), RTLD_LAZY); + if(!mHandle) { - DALI_LOG_ERROR( "Can't load %s : %s\n", pluginName.c_str(), dlerror() ); + DALI_LOG_ERROR("Can't load %s : %s\n", pluginName.c_str(), dlerror()); return false; } @@ -134,52 +140,50 @@ bool WebEngine::Initialize() { char* error = NULL; - if ( !InitializePluginHandle() ) + if(!InitializePluginHandle()) { return false; } - mCreateWebEnginePtr = reinterpret_cast< CreateWebEngineFunction >( dlsym( mHandle, "CreateWebEnginePlugin" ) ); - if( mCreateWebEnginePtr == NULL ) + mCreateWebEnginePtr = reinterpret_cast(dlsym(mHandle, "CreateWebEnginePlugin")); + if(mCreateWebEnginePtr == NULL) { - DALI_LOG_ERROR( "Can't load symbol CreateWebEnginePlugin(), error: %s\n", error ); + DALI_LOG_ERROR("Can't load symbol CreateWebEnginePlugin(), error: %s\n", error); return false; } - mPlugin = mCreateWebEnginePtr(); + mDestroyWebEnginePtr = reinterpret_cast(dlsym(mHandle, "DestroyWebEnginePlugin")); - if( mPlugin == NULL ) + if(mDestroyWebEnginePtr == NULL) { - DALI_LOG_ERROR( "Can't create the WebEnginePlugin object\n" ); + DALI_LOG_ERROR("Can't load symbol DestroyWebEnginePlugin(), error: %s\n", error); return false; } - mDestroyWebEnginePtr = reinterpret_cast< DestroyWebEngineFunction >( dlsym( mHandle, "DestroyWebEnginePlugin" ) ); + mPlugin = mCreateWebEnginePtr(); - if( mDestroyWebEnginePtr == NULL ) + if(mPlugin == NULL) { - - DALI_LOG_ERROR( "Can't load symbol DestroyWebEnginePlugin(), error: %s\n", error ); + 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) { - if( mPlugin != NULL ) - { - mPlugin->Create( width, height, locale, timezoneId ); - } + mPlugin->Create(width, height, locale, timezoneId); +} + +void WebEngine::Create(uint32_t width, uint32_t height, uint32_t argc, char** argv) +{ + mPlugin->Create(width, height, argc, argv); } void WebEngine::Destroy() { - if( mPlugin != NULL ) - { - mPlugin->Destroy(); - } + mPlugin->Destroy(); } Dali::NativeImageInterfacePtr WebEngine::GetNativeImageSource() @@ -187,149 +191,471 @@ Dali::NativeImageInterfacePtr WebEngine::GetNativeImageSource() return mPlugin->GetNativeImageSource(); } -void WebEngine::LoadUrl( const std::string& url ) +Dali::WebEngineSettings& WebEngine::GetSettings() const { - if( mPlugin != NULL ) - { - mPlugin->LoadUrl( url ); - } + return mPlugin->GetSettings(); } -const std::string& WebEngine::GetUrl() +Dali::WebEngineContext& WebEngine::GetContext() const { - static std::string emptyUrl; - return mPlugin ? mPlugin->GetUrl() : emptyUrl; + return mPlugin->GetContext(); } -void WebEngine::LoadHTMLString( const std::string& htmlString ) +Dali::WebEngineCookieManager& WebEngine::GetCookieManager() const { - if( mPlugin != NULL ) - { - mPlugin->LoadHTMLString( htmlString ); - } + return mPlugin->GetCookieManager(); +} + +Dali::WebEngineBackForwardList& WebEngine::GetBackForwardList() const +{ + return mPlugin->GetBackForwardList(); +} + +void WebEngine::LoadUrl(const std::string& url) +{ + mPlugin->LoadUrl(url); +} + +std::string WebEngine::GetTitle() const +{ + return mPlugin->GetTitle(); +} + +Dali::PixelData WebEngine::GetFavicon() const +{ + return mPlugin->GetFavicon(); +} + +std::string WebEngine::GetUrl() const +{ + return mPlugin->GetUrl(); +} + +std::string WebEngine::GetUserAgent() const +{ + return mPlugin->GetUserAgent(); +} + +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) +{ + return mPlugin->LoadHtmlStringOverrideCurrentEntry(html, basicUri, unreachableUrl); +} + +bool WebEngine::LoadContents(const std::string& contents, uint32_t contentSize, const std::string& mimeType, const std::string& encoding, const std::string& baseUri) +{ + return mPlugin->LoadContents(contents, contentSize, mimeType, encoding, baseUri); } void WebEngine::Reload() { - if( mPlugin != NULL ) - { - mPlugin->Reload(); - } + mPlugin->Reload(); +} + +bool WebEngine::ReloadWithoutCache() +{ + return mPlugin->ReloadWithoutCache(); } void WebEngine::StopLoading() { - if( mPlugin != NULL ) - { - mPlugin->StopLoading(); - } + mPlugin->StopLoading(); +} + +void WebEngine::Suspend() +{ + mPlugin->Suspend(); +} + +void WebEngine::Resume() +{ + mPlugin->Resume(); +} + +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->RegisterJavaScriptConfirmCallback(callback); +} + +void WebEngine::JavaScriptConfirmReply(bool confirmed) +{ + mPlugin->JavaScriptConfirmReply(confirmed); +} + +void WebEngine::RegisterJavaScriptPromptCallback(Dali::WebEnginePlugin::JavaScriptPromptCallback callback) +{ + mPlugin->RegisterJavaScriptPromptCallback(callback); +} + +void WebEngine::JavaScriptPromptReply(const std::string& result) +{ + mPlugin->JavaScriptPromptReply(result); +} + +std::unique_ptr WebEngine::CreateHitTest(int32_t x, int32_t y, Dali::WebEngineHitTest::HitTestMode mode) +{ + 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() { - return mPlugin ? mPlugin->CanGoForward() : false; + return mPlugin->CanGoForward(); } void WebEngine::GoForward() { - if( mPlugin != NULL ) - { - mPlugin->GoForward(); - } + mPlugin->GoForward(); } bool WebEngine::CanGoBack() { - return mPlugin ? mPlugin->CanGoBack() : false; + return mPlugin->CanGoBack(); } void WebEngine::GoBack() { - if( mPlugin != NULL ) - { - mPlugin->GoBack(); - } + mPlugin->GoBack(); } -void WebEngine::EvaluateJavaScript( const std::string& script ) +void WebEngine::EvaluateJavaScript(const std::string& script, Dali::WebEnginePlugin::JavaScriptMessageHandlerCallback resultHandler) { - if( mPlugin != NULL ) - { - mPlugin->EvaluateJavaScript( script ); - } + mPlugin->EvaluateJavaScript(script, resultHandler); } -void WebEngine::AddJavaScriptInterface( const std::string& exposedObjectName, const std::string& jsFunctionName, std::function< std::string(const std::string&) > cb ) +void WebEngine::AddJavaScriptMessageHandler(const std::string& exposedObjectName, Dali::WebEnginePlugin::JavaScriptMessageHandlerCallback handler) { - if( mPlugin != NULL ) - { - mPlugin->AddJavaScriptInterface( exposedObjectName, jsFunctionName, cb ); - } + mPlugin->AddJavaScriptMessageHandler(exposedObjectName, handler); } -void WebEngine::RemoveJavascriptInterface( const std::string& exposedObjectName, const std::string& jsFunctionName ) +void WebEngine::ClearAllTilesResources() { - if( mPlugin != NULL ) - { - mPlugin->RemoveJavascriptInterface( exposedObjectName, jsFunctionName ); - } + mPlugin->ClearAllTilesResources(); } void WebEngine::ClearHistory() { - if( mPlugin != NULL ) - { - mPlugin->ClearHistory(); - } + mPlugin->ClearHistory(); } -void WebEngine::ClearCache() +void WebEngine::SetSize(uint32_t width, uint32_t height) { - if( mPlugin != NULL ) - { - mPlugin->ClearCache(); - } + mPlugin->SetSize(width, height); } -void WebEngine::SetSize( int width, int height ) +void WebEngine::EnableMouseEvents(bool enabled) { - if( mPlugin != NULL ) - { - mPlugin->SetSize( width, height ); - } + mPlugin->EnableMouseEvents(enabled); } -bool WebEngine::SendTouchEvent( const Dali::TouchData& touch ) +void WebEngine::EnableKeyEvents(bool enabled) { - if( mPlugin != NULL ) - { - return mPlugin->SendTouchEvent( touch ); - } + mPlugin->EnableKeyEvents(enabled); +} - return false; +bool WebEngine::SendTouchEvent(const Dali::TouchEvent& touch) +{ + return mPlugin->SendTouchEvent(touch); } -bool WebEngine::SendKeyEvent( const Dali::KeyEvent& event ) +bool WebEngine::SendKeyEvent(const Dali::KeyEvent& event) { - if( mPlugin != NULL ) - { - return mPlugin->SendKeyEvent( 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 +{ + return mPlugin->GetTextZoomFactor(); +} + +float WebEngine::GetLoadProgressPercentage() const +{ + return mPlugin->GetLoadProgressPercentage(); +} + +void WebEngine::SetScaleFactor(float scaleFactor, Dali::Vector2 point) +{ + mPlugin->SetScaleFactor(scaleFactor, point); +} - return false; +float WebEngine::GetScaleFactor() const +{ + return mPlugin->GetScaleFactor(); +} + +void WebEngine::ActivateAccessibility(bool activated) +{ + mPlugin->ActivateAccessibility(activated); +} + +bool WebEngine::SetVisibility(bool visible) +{ + return mPlugin->SetVisibility(visible); +} + +bool WebEngine::HighlightText(const std::string& text, Dali::WebEnginePlugin::FindOption options, uint32_t maxMatchCount) +{ + return mPlugin->HighlightText(text, options, maxMatchCount); +} + +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); } -Dali::WebEnginePlugin::WebEngineSignalType& WebEngine::PageLoadStartedSignal() +bool WebEngine::GetScreenshotAsynchronously(Dali::Rect viewArea, float scaleFactor, Dali::WebEnginePlugin::ScreenshotCapturedCallback callback) { - return mPlugin->PageLoadStartedSignal(); + return mPlugin->GetScreenshotAsynchronously(viewArea, scaleFactor, callback); } -Dali::WebEnginePlugin::WebEngineSignalType& WebEngine::PageLoadFinishedSignal() +bool WebEngine::CheckVideoPlayingAsynchronously(Dali::WebEnginePlugin::VideoPlayingCallback callback) { - return mPlugin->PageLoadFinishedSignal(); + return mPlugin->CheckVideoPlayingAsynchronously(callback); } -} // namespace Adaptor; -} // namespace Internal; -} // namespace Dali; +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); +} + +Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& WebEngine::FrameRenderedSignal() +{ + return mPlugin->FrameRenderedSignal(); +} + +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::RegisterRequestInterceptorCallback(Dali::WebEnginePlugin::WebEngineRequestInterceptorCallback callback) +{ + mPlugin->RegisterRequestInterceptorCallback(callback); +} + +void WebEngine::RegisterConsoleMessageReceivedCallback(Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback callback) +{ + mPlugin->RegisterConsoleMessageReceivedCallback(callback); +} + +void WebEngine::RegisterResponsePolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback callback) +{ + mPlugin->RegisterResponsePolicyDecidedCallback(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