From 26cd41d4b23cb268d5d12795d429374a8227cec2 Mon Sep 17 00:00:00 2001 From: "huayong.xu" Date: Wed, 22 Dec 2021 19:00:28 +0800 Subject: [PATCH] Add a callback for navigation policy in web engine plugin. Change-Id: Ie70b47f3a5bc093e874f7b3d6aeb192dffc28976 --- .../tizen-web-engine-chromium.cpp | 22 +++++++ .../tizen-web-engine-chromium.h | 64 ++++++++++++------- .../web-engine-lwe/tizen-web-engine-lwe.cpp | 5 ++ .../web-engine-lwe/tizen-web-engine-lwe.h | 5 ++ 4 files changed, 73 insertions(+), 23 deletions(-) diff --git a/dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp b/dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp index 82075f03..ef7d915e 100755 --- a/dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp +++ b/dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp @@ -297,6 +297,9 @@ public: evas_object_smart_callback_add(mWebView, "policy,response,decide", &WebViewContainerForDali::OnResponsePolicyDecided, &mClient); + evas_object_smart_callback_add(mWebView, "policy,navigation,decide", + &WebViewContainerForDali::OnNavigationPolicyDecided, + &mClient); evas_object_smart_callback_add(mWebView, "request,certificate,confirm", &WebViewContainerForDali::OnCertificateConfirmed, &mClient); @@ -929,6 +932,14 @@ private: client->ResponsePolicyDecided(std::move(webPolicyDecision)); } + static void OnNavigationPolicyDecided(void* data, Evas_Object*, void* policy) + { + auto client = static_cast(data); + Ewk_Policy_Decision* policyDecision = static_cast(policy); + std::unique_ptr webPolicyDecision(new TizenWebEnginePolicyDecision(policyDecision)); + client->NavigationPolicyDecided(std::move(webPolicyDecision)); + } + static void OnCertificateConfirmed(void* data, Evas_Object*, void* eventInfo) { auto client = static_cast(data); @@ -1929,6 +1940,11 @@ void TizenWebEngineChromium::RegisterResponsePolicyDecidedCallback(WebEngineResp mResponsePolicyDecidedCallback = callback; } +void TizenWebEngineChromium::RegisterNavigationPolicyDecidedCallback(WebEngineNavigationPolicyDecidedCallback callback) +{ + mNavigationPolicyDecidedCallback = callback; +} + void TizenWebEngineChromium::RegisterCertificateConfirmedCallback(WebEngineCertificateCallback callback) { mCertificateConfirmedCallback = callback; @@ -2031,6 +2047,12 @@ void TizenWebEngineChromium::ResponsePolicyDecided(std::unique_ptr decision) +{ + DALI_LOG_RELEASE_INFO("#NavigationPolicyDecided.\n"); + ExecuteCallback(mNavigationPolicyDecidedCallback, std::move(decision)); +} + void TizenWebEngineChromium::CertificateConfirmed(std::unique_ptr confirm) { DALI_LOG_RELEASE_INFO("#CertificateConfirmed.\n"); diff --git a/dali-extension/web-engine-chromium/tizen-web-engine-chromium.h b/dali-extension/web-engine-chromium/tizen-web-engine-chromium.h index 8848e329..1fdfc401 100755 --- a/dali-extension/web-engine-chromium/tizen-web-engine-chromium.h +++ b/dali-extension/web-engine-chromium/tizen-web-engine-chromium.h @@ -105,12 +105,19 @@ public: virtual void ConsoleMessageReceived(std::unique_ptr message) = 0; /** - * @brief Callback function to be called by WebViewContainer when new window + * @brief Callback function to be called by WebViewContainer when http response * policy would be decided. * @param [in] decision Policy need be decided. */ virtual void ResponsePolicyDecided(std::unique_ptr decision) = 0; + /** + * @brief Callback function to be called by WebViewContainer when navigation + * policy would be decided. + * @param [in] decision Policy need be decided. + */ + virtual void NavigationPolicyDecided(std::unique_ptr decision) = 0; + /** * @brief Callback function to be called by WebViewContainer when certificate * need be confirmed. @@ -695,6 +702,11 @@ public: */ void RegisterResponsePolicyDecidedCallback(WebEngineResponsePolicyDecidedCallback callback) override; + /** + * @copydoc Dali::WebEnginePlugin::RegisterNavigationPolicyDecidedCallback() + */ + void RegisterNavigationPolicyDecidedCallback(WebEngineNavigationPolicyDecidedCallback callback) override; + /** * @copydoc Dali::WebEnginePlugin::RegisterCertificateConfirmedCallback() */ @@ -767,6 +779,11 @@ public: */ void ResponsePolicyDecided(std::unique_ptr policy) override; + /** + * @copydoc Dali::Plugin::WebViewContainerClient::NavigationPolicyDecided() + */ + void NavigationPolicyDecided(std::unique_ptr policy) override; + /** * @copydoc Dali::Plugin::WebViewContainerClient::UrlChanged() */ @@ -861,28 +878,29 @@ private: WebEngineFrameRenderedSignalType mFrameRenderedSignal; - WebEnginePageLoadCallback mLoadStartedCallback; - WebEnginePageLoadCallback mLoadInProgressCallback; - WebEnginePageLoadCallback mLoadFinishedCallback; - WebEnginePageLoadErrorCallback mLoadErrorCallback; - WebEngineUrlChangedCallback mUrlChangedCallback; - WebEngineScrollEdgeReachedCallback mScrollEdgeReachedCallback; - WebEngineFormRepostDecidedCallback mFormRepostDecidedCallback; - WebEngineConsoleMessageReceivedCallback mConsoleMessageReceivedCallback; - WebEngineResponsePolicyDecidedCallback mResponsePolicyDecidedCallback; - WebEngineCertificateCallback mCertificateConfirmedCallback; - WebEngineCertificateCallback mSslCertificateChangedCallback; - WebEngineHttpAuthHandlerCallback mHttpAuthHandlerCallback; - WebEngineContextMenuShownCallback mContextMenuShownCallback; - WebEngineContextMenuHiddenCallback mContextMenuHiddenCallback; - WebEngineHitTestCreatedCallback mHitTestCreatedCallback; - JavaScriptAlertCallback mJavaScriptAlertCallback; - JavaScriptConfirmCallback mJavaScriptConfirmCallback; - JavaScriptPromptCallback mJavaScriptPromptCallback; - ScreenshotCapturedCallback mScreenshotCapturedCallback; - VideoPlayingCallback mVideoPlayingCallback; - GeolocationPermissionCallback mGeolocationPermissionCallback; - PlainTextReceivedCallback mPlainTextReceivedCallback; + WebEnginePageLoadCallback mLoadStartedCallback; + WebEnginePageLoadCallback mLoadInProgressCallback; + WebEnginePageLoadCallback mLoadFinishedCallback; + WebEnginePageLoadErrorCallback mLoadErrorCallback; + WebEngineUrlChangedCallback mUrlChangedCallback; + WebEngineScrollEdgeReachedCallback mScrollEdgeReachedCallback; + WebEngineFormRepostDecidedCallback mFormRepostDecidedCallback; + WebEngineConsoleMessageReceivedCallback mConsoleMessageReceivedCallback; + WebEngineResponsePolicyDecidedCallback mResponsePolicyDecidedCallback; + WebEngineNavigationPolicyDecidedCallback mNavigationPolicyDecidedCallback; + WebEngineCertificateCallback mCertificateConfirmedCallback; + WebEngineCertificateCallback mSslCertificateChangedCallback; + WebEngineHttpAuthHandlerCallback mHttpAuthHandlerCallback; + WebEngineContextMenuShownCallback mContextMenuShownCallback; + WebEngineContextMenuHiddenCallback mContextMenuHiddenCallback; + WebEngineHitTestCreatedCallback mHitTestCreatedCallback; + JavaScriptAlertCallback mJavaScriptAlertCallback; + JavaScriptConfirmCallback mJavaScriptConfirmCallback; + JavaScriptPromptCallback mJavaScriptPromptCallback; + ScreenshotCapturedCallback mScreenshotCapturedCallback; + VideoPlayingCallback mVideoPlayingCallback; + GeolocationPermissionCallback mGeolocationPermissionCallback; + PlainTextReceivedCallback mPlainTextReceivedCallback; std::unordered_map mJavaScriptEvaluationResultHandlers; std::unordered_map mJavaScriptMessageHandlers; diff --git a/dali-extension/web-engine-lwe/tizen-web-engine-lwe.cpp b/dali-extension/web-engine-lwe/tizen-web-engine-lwe.cpp index 5912f887..9ed20850 100755 --- a/dali-extension/web-engine-lwe/tizen-web-engine-lwe.cpp +++ b/dali-extension/web-engine-lwe/tizen-web-engine-lwe.cpp @@ -1270,6 +1270,11 @@ void TizenWebEngineLWE::RegisterResponsePolicyDecidedCallback(WebEngineResponseP // NOT IMPLEMENTED } +void TizenWebEngineLWE::RegisterNavigationPolicyDecidedCallback(WebEngineNavigationPolicyDecidedCallback callback) +{ + // NOT IMPLEMENTED +} + void TizenWebEngineLWE::RegisterCertificateConfirmedCallback(WebEngineCertificateCallback callback) { // NOT IMPLEMENTED diff --git a/dali-extension/web-engine-lwe/tizen-web-engine-lwe.h b/dali-extension/web-engine-lwe/tizen-web-engine-lwe.h index 9c790183..8a6fcd2e 100755 --- a/dali-extension/web-engine-lwe/tizen-web-engine-lwe.h +++ b/dali-extension/web-engine-lwe/tizen-web-engine-lwe.h @@ -518,6 +518,11 @@ public: */ void RegisterResponsePolicyDecidedCallback(WebEngineResponsePolicyDecidedCallback callback) override; + /** + * @copydoc Dali::WebEnginePlugin::RegisterNavigationPolicyDecidedCallback() + */ + void RegisterNavigationPolicyDecidedCallback(WebEngineNavigationPolicyDecidedCallback callback) override; + /** * @copydoc Dali::WebEnginePlugin::RegisterCertificateConfirmedCallback() */ -- 2.34.1