From becd2ca6f594135d2c78d32a60f1cbb05c887cb0 Mon Sep 17 00:00:00 2001 From: "dongsug.song" Date: Fri, 25 Apr 2025 14:04:04 +0900 Subject: [PATCH] Add OverScrolled in WebView Change-Id: I452be9ae9ff65a6a03f7febc5a211d892aae92b2 --- .../dali-toolkit-test-utils/toolkit-web-engine.cpp | 14 ++++++++++++++ .../src/dali-toolkit/utc-Dali-WebView.cpp | 9 +++++++++ .../devel-api/controls/web-view/web-view.cpp | 5 +++++ .../devel-api/controls/web-view/web-view.h | 7 +++++++ .../internal/controls/web-view/web-view-impl.cpp | 8 ++++++++ .../internal/controls/web-view/web-view-impl.h | 5 +++++ 6 files changed, 48 insertions(+) diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-web-engine.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-web-engine.cpp index 759e6e872d..df12ce5405 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-web-engine.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-web-engine.cpp @@ -1478,6 +1478,9 @@ public: void RegisterScrollEdgeReachedCallback(WebEngineScrollEdgeReachedCallback callback) override { } + void RegisterOverScrolledCallback(WebEngineOverScrolledCallback callback) override + { + } void RegisterUrlChangedCallback(WebEngineUrlChangedCallback callback) override { } @@ -1968,6 +1971,11 @@ public: mScrollEdgeReachedCallback = callback; } + void RegisterOverScrolledCallback(Dali::WebEnginePlugin::WebEngineOverScrolledCallback callback) + { + mOverScrolledCallback = callback; + } + void RegisterUrlChangedCallback(Dali::WebEnginePlugin::WebEngineUrlChangedCallback callback) { mUrlChangedCallback = callback; @@ -2122,6 +2130,7 @@ public: Dali::WebEnginePlugin::WebEnginePageLoadCallback mPageLoadFinishedCallback; Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback mPageLoadErrorCallback; Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback mScrollEdgeReachedCallback; + Dali::WebEnginePlugin::WebEngineOverScrolledCallback mOverScrolledCallback; Dali::WebEnginePlugin::WebEngineUrlChangedCallback mUrlChangedCallback; Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback mFormRepostDecidedCallback; Dali::WebEnginePlugin::WebEngineFrameRenderedCallback mFrameRenderedCallback; @@ -3010,6 +3019,11 @@ void WebEngine::RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngi Internal::Adaptor::GetImplementation(*this).RegisterScrollEdgeReachedCallback(callback); } +void WebEngine::RegisterOverScrolledCallback(Dali::WebEnginePlugin::WebEngineOverScrolledCallback callback) +{ + Internal::Adaptor::GetImplementation(*this).RegisterOverScrolledCallback(callback); +} + void WebEngine::RegisterUrlChangedCallback(Dali::WebEnginePlugin::WebEngineUrlChangedCallback callback) { Internal::Adaptor::GetImplementation(*this).RegisterUrlChangedCallback(callback); diff --git a/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp index a5639b1ae7..c6dc38cecf 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp @@ -62,6 +62,7 @@ static int gPageL static int gPageLoadErrorCallbackCalled = 0; static std::unique_ptr gPageLoadErrorInstance = nullptr; static int gScrollEdgeReachedCallbackCalled = 0; +static int gOverScrolledCallbackCalled = 0; static int gUrlChangedCallbackCalled = 0; static int gEvaluateJavaScriptCallbackCalled = 0; static int gJavaScriptAlertCallbackCalled = 0; @@ -164,6 +165,11 @@ static void OnNewWindowCreated(Dali::WebEnginePlugin*& outPlugin) outPlugin = newView.GetPlugin(); } +static void OnOverScrolled(Dali::WebEnginePlugin::OverScrolled over) +{ + gOverScrolledCallbackCalled++; +} + static void OnUrlChanged(const std::string& url) { gUrlChangedCallbackCalled++; @@ -1200,6 +1206,9 @@ int UtcDaliWebViewScrollBy(void) DALI_TEST_CHECK(output.x == 200 && output.y == 200); DALI_TEST_EQUALS(gScrollEdgeReachedCallbackCalled, 2, TEST_LOCATION); + view.RegisterOverScrolledCallback(&OnOverScrolled); + DALI_TEST_EQUALS(gOverScrolledCallbackCalled, 0, TEST_LOCATION); + END_TEST; } diff --git a/dali-toolkit/devel-api/controls/web-view/web-view.cpp b/dali-toolkit/devel-api/controls/web-view/web-view.cpp index 27fe02612b..3d145b6e70 100755 --- a/dali-toolkit/devel-api/controls/web-view/web-view.cpp +++ b/dali-toolkit/devel-api/controls/web-view/web-view.cpp @@ -379,6 +379,11 @@ void WebView::RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngine Dali::Toolkit::GetImpl(*this).RegisterScrollEdgeReachedCallback(callback); } +void WebView::RegisterOverScrolledCallback(Dali::WebEnginePlugin::WebEngineOverScrolledCallback callback) +{ + Dali::Toolkit::GetImpl(*this).RegisterOverScrolledCallback(callback); +} + void WebView::RegisterUrlChangedCallback(Dali::WebEnginePlugin::WebEngineUrlChangedCallback callback) { Dali::Toolkit::GetImpl(*this).RegisterUrlChangedCallback(callback); diff --git a/dali-toolkit/devel-api/controls/web-view/web-view.h b/dali-toolkit/devel-api/controls/web-view/web-view.h index 3719c79d9b..7c8927fa0e 100755 --- a/dali-toolkit/devel-api/controls/web-view/web-view.h +++ b/dali-toolkit/devel-api/controls/web-view/web-view.h @@ -709,6 +709,13 @@ public: */ void RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback callback); + /** + * @brief Callback to be called when over scrolled. + * + * @param[in] callback + */ + void RegisterOverScrolledCallback(Dali::WebEnginePlugin::WebEngineOverScrolledCallback callback); + /** * @brief Callback to be called when url is changed. * diff --git a/dali-toolkit/internal/controls/web-view/web-view-impl.cpp b/dali-toolkit/internal/controls/web-view/web-view-impl.cpp index 445c2a4523..243aaaf537 100644 --- a/dali-toolkit/internal/controls/web-view/web-view-impl.cpp +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.cpp @@ -830,6 +830,14 @@ void WebView::RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngine } } +void WebView::RegisterOverScrolledCallback(Dali::WebEnginePlugin::WebEngineOverScrolledCallback callback) +{ + if(mWebEngine) + { + mWebEngine.RegisterOverScrolledCallback(callback); + } +} + void WebView::RegisterUrlChangedCallback(Dali::WebEnginePlugin::WebEngineUrlChangedCallback callback) { if(mWebEngine) diff --git a/dali-toolkit/internal/controls/web-view/web-view-impl.h b/dali-toolkit/internal/controls/web-view/web-view-impl.h index ba517780f6..64c343b899 100644 --- a/dali-toolkit/internal/controls/web-view/web-view-impl.h +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.h @@ -377,6 +377,11 @@ public: */ void RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback callback); + /** + * @copydoc Dali::Toolkit::WebView::RegisterOverScrolledCallback() + */ + void RegisterOverScrolledCallback(Dali::WebEnginePlugin::WebEngineOverScrolledCallback callback); + /** * @copydoc Dali::Toolkit::WebView::RegisterUrlChangedCallback() */ -- 2.34.1