// EXTERNAL INCLUDES
#include <dali/public-api/images/native-image-interface.h>
#include <dali/public-api/math/rect.h>
-#include <dali/public-api/signals/dali-signal.h>
#include <functional>
#include <memory>
class WebEngineBackForwardList;
class WebEngineCertificate;
class WebEngineConsoleMessage;
-class WebEngineContext;
class WebEngineContextMenu;
-class WebEngineCookieManager;
class WebEngineFormRepostDecision;
class WebEngineHitTest;
class WebEngineHttpAuthHandler;
{
public:
/**
- * @brief WebView signal type related with frame rendered.
- */
- using WebEngineFrameRenderedSignalType = Signal<void(void)>;
-
- /**
* @brief WebEngine callback related with page loading.
*/
using WebEnginePageLoadCallback = std::function<void(const std::string&)>;
using WebEngineNavigationPolicyDecidedCallback = std::function<void(std::unique_ptr<Dali::WebEnginePolicyDecision>)>;
/**
+ * @brief WebView callback related with a new window would be created.
+ */
+ using WebEngineNewWindowCreatedCallback = std::function<void(Dali::WebEnginePlugin*&)>;
+
+ /**
* @brief Hit test callback called after hit test is created asynchronously.
*/
using WebEngineHitTestCreatedCallback = std::function<bool(std::unique_ptr<Dali::WebEngineHitTest>)>;
virtual bool SendWheelEvent(const WheelEvent& event) = 0;
/**
- * @brief Connect to this signal to be notified when frame is rendered.
+ * @brief Callback to be called when frame would be rendered.
*
- * @return A signal object to connect with.
+ * @param[in] callback
*/
- virtual WebEngineFrameRenderedSignalType& FrameRenderedSignal() = 0;
+ virtual void RegisterFrameRenderedCallback(WebEngineFrameRenderedCallback callback) = 0;
/**
* @brief Callback to be called when page loading is started.
virtual void RegisterNavigationPolicyDecidedCallback(WebEngineNavigationPolicyDecidedCallback callback) = 0;
/**
+ * @brief Callback to be called when a new window would be created.
+ *
+ * @param[in] callback
+ */
+ virtual void RegisterNewWindowCreatedCallback(WebEngineNewWindowCreatedCallback callback) = 0;
+
+ /**
* @brief Callback to be called when certificate need be confirmed.
*
* @param[in] callback
GetImplementation(*this).EnableVideoHole(enabled);
}
-Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& WebEngine::FrameRenderedSignal()
+void WebEngine::RegisterFrameRenderedCallback(Dali::WebEnginePlugin::WebEngineFrameRenderedCallback callback)
{
- return GetImplementation(*this).FrameRenderedSignal();
+ GetImplementation(*this).RegisterFrameRenderedCallback(callback);
}
void WebEngine::RegisterPageLoadStartedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
GetImplementation(*this).RegisterNavigationPolicyDecidedCallback(callback);
}
+void WebEngine::RegisterNewWindowCreatedCallback(Dali::WebEnginePlugin::WebEngineNewWindowCreatedCallback callback)
+{
+ GetImplementation(*this).RegisterNewWindowCreatedCallback(callback);
+}
+
void WebEngine::RegisterCertificateConfirmedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
{
GetImplementation(*this).RegisterCertificateConfirmedCallback(callback);
namespace Dali
{
+class WebEngineContext;
+class WebEngineCookieManager;
+
namespace Internal
{
namespace Adaptor
bool SendWheelEvent(const WheelEvent& event);
/**
- * @brief Connect to this signal to be notified when frame is rendered.
+ * @brief Callback to be called when frame would be rendered.
*
- * @return A signal object to connect with.
+ * @param[in] callback
*/
- Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& FrameRenderedSignal();
+ void RegisterFrameRenderedCallback(Dali::WebEnginePlugin::WebEngineFrameRenderedCallback callback);
/**
* @brief Callback to be called when page loading is started.
void RegisterNavigationPolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineNavigationPolicyDecidedCallback callback);
/**
+ * @brief Callback to be called when a new window would be created.
+ *
+ * @param[in] callback
+ */
+ void RegisterNewWindowCreatedCallback(Dali::WebEnginePlugin::WebEngineNewWindowCreatedCallback callback);
+
+ /**
* @brief Callback to be called when certificate need be confirmed.
*
* @param[in] callback
*/
explicit operator bool() const
{
- return mLoadSuccess;
+ return mLoadSucceeded;
}
bool InitializeContextHandle()
if(!mGetWebEngineContextPtr)
{
mGetWebEngineContextPtr = reinterpret_cast<GetWebEngineContext>(dlsym(mHandle, "GetWebEngineContext"));
-
if(!mGetWebEngineContextPtr)
{
DALI_LOG_ERROR("Can't load symbol GetWebEngineContext(), error: %s\n", dlerror());
if(!mGetWebEngineCookieManagerPtr)
{
mGetWebEngineCookieManagerPtr = reinterpret_cast<GetWebEngineCookieManager>(dlsym(mHandle, "GetWebEngineCookieManager"));
-
if(!mGetWebEngineCookieManagerPtr)
{
DALI_LOG_ERROR("Can't load symbol GetWebEngineCookieManager(), error: %s\n", dlerror());
private:
// Private constructor / destructor
WebEnginePluginObject()
- : mPluginName{},
- mLoadSuccess{false},
+ : mLoadSucceeded{false},
mHandle{nullptr},
mCreateWebEnginePtr{nullptr},
mDestroyWebEnginePtr{nullptr},
mGetWebEngineContextPtr{nullptr},
mGetWebEngineCookieManagerPtr{nullptr}
{
- if(mPluginName.length() == 0)
+ std::string pluginName;
+ const char* name = EnvironmentVariable::GetEnvironmentVariable(DALI_ENV_WEB_ENGINE_NAME);
+ if(name)
{
- // mPluginName is not initialized yet.
- const char* name = EnvironmentVariable::GetEnvironmentVariable(DALI_ENV_WEB_ENGINE_NAME);
- if(name)
- {
- mPluginName = MakePluginName(name);
- }
- else
- {
- mPluginName = std::string(kPluginFullNameDefault);
- }
+ pluginName = MakePluginName(name);
+ }
+ else
+ {
+ pluginName = std::string(kPluginFullNameDefault);
}
- mHandle = dlopen(mPluginName.c_str(), RTLD_LAZY);
+ mHandle = dlopen(pluginName.c_str(), RTLD_LAZY);
if(!mHandle)
{
- DALI_LOG_ERROR("Can't load %s : %s\n", mPluginName.c_str(), dlerror());
+ DALI_LOG_ERROR("Can't load %s : %s\n", pluginName.c_str(), dlerror());
return;
}
return;
}
- mLoadSuccess = true;
+ mLoadSucceeded = true;
}
~WebEnginePluginObject()
if(mHandle)
{
dlclose(mHandle);
- mHandle = nullptr;
- mLoadSuccess = false;
+ mHandle = nullptr;
+ mLoadSucceeded = false;
}
}
WebEnginePluginObject& operator=(WebEnginePluginObject&&) = delete;
private:
- std::string mPluginName; ///< Name of web engine plugin
- /// 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.
-
- bool mLoadSuccess; ///< True if library loaded successfully. False otherwise.
+ bool mLoadSucceeded; ///< True if library loaded successfully. False otherwise.
public:
using CreateWebEngineFunction = Dali::WebEnginePlugin* (*)();
return mPlugin->SendWheelEvent(event);
}
-Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& WebEngine::FrameRenderedSignal()
+void WebEngine::RegisterFrameRenderedCallback(Dali::WebEnginePlugin::WebEngineFrameRenderedCallback callback)
{
- return mPlugin->FrameRenderedSignal();
+ mPlugin->RegisterFrameRenderedCallback(callback);
}
void WebEngine::RegisterPageLoadStartedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
mPlugin->RegisterNavigationPolicyDecidedCallback(callback);
}
+void WebEngine::RegisterNewWindowCreatedCallback(Dali::WebEnginePlugin::WebEngineNewWindowCreatedCallback callback)
+{
+ mPlugin->RegisterNewWindowCreatedCallback(callback);
+}
+
void WebEngine::RegisterCertificateConfirmedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
{
mPlugin->RegisterCertificateConfirmedCallback(callback);
bool SendWheelEvent(const Dali::WheelEvent& event);
/**
- * @copydoc Dali::WebEngine::FrameRenderedSignal()
+ @copydoc Dali::WebEngine::RegisterFrameRenderedCallback()
*/
- Dali::WebEnginePlugin::WebEngineFrameRenderedSignalType& FrameRenderedSignal();
+ void RegisterFrameRenderedCallback(Dali::WebEnginePlugin::WebEngineFrameRenderedCallback callback);
/**
* @copydoc Dali::WebEngine::RegisterPageLoadStartedCallback()
void RegisterNavigationPolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineNavigationPolicyDecidedCallback callback);
/**
+ @copydoc Dali::WebEngine::RegisterNewWindowCreatedCallback()
+ */
+ void RegisterNewWindowCreatedCallback(Dali::WebEnginePlugin::WebEngineNewWindowCreatedCallback callback);
+
+ /**
* @copydoc Dali::WebEngine::RegisterCertificateConfirmedCallback()
*/
void RegisterCertificateConfirmedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback);