From 79b3fca63e98c28fa3a6c8b8dae299b508a38fe0 Mon Sep 17 00:00:00 2001 From: Youngsun Suh Date: Thu, 13 Jun 2024 09:57:59 +0900 Subject: [PATCH] Try getting accessibility address in DoGetChildren Change-Id: I0784218a1ae63d4fab0b99ab9c79afa053633a63 --- .../utc-Dali-Accessibility-Controls-BridgeUp.cpp | 9 +++++++-- .../dali-toolkit/dali-toolkit-test-utils/toolkit-web-engine.cpp | 9 ++++++++- dali-toolkit/internal/controls/web-view/web-view-impl.cpp | 7 +++++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp index ad2fba7..f0a8b1c 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp @@ -17,8 +17,6 @@ #include #include -#include - using namespace Dali::Toolkit; void utc_dali_accessibility_controls_bridge_up_startup(void) @@ -1354,10 +1352,17 @@ int UtcDaliWebViewAccessible(void) DALI_TEST_CHECK(children.empty()); + // Enables accessibility Dali::Accessibility::TestEnableSC(true); + // Assuming the webengine lazy sets accessibility address on LoadUrl children = webViewAccessible->GetChildren(); + DALI_TEST_CHECK(children.empty()); + // our test webengine sets accessibility address here + webView.LoadUrl("http://www.somewhere.valid1.com"); + + children = webViewAccessible->GetChildren(); DALI_TEST_EQUALS(children.size(), 1u, TEST_LOCATION); auto* child = children[0]; 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 19f32b3..cff6ee5 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 @@ -1604,6 +1604,7 @@ public: void LoadUrl(const std::string& url) { mUrl = url; + SetAccessibilityAddress(); ConnectToGlobalSignal(&OnLoadUrl); } @@ -1806,7 +1807,12 @@ public: Dali::Accessibility::Address GetAccessibilityAddress() { - return {":9.99", "root"}; + return mAccessibilityAddress; + } + + void SetAccessibilityAddress() + { + mAccessibilityAddress = {":9.99", "root"}; } Dali::PixelData GetScreenshot(Dali::Rect viewArea, float scaleFactor) @@ -1956,6 +1962,7 @@ public: Dali::Vector2 mContentSize; WebEngineBackForwardList* mockWebEngineBackForwardList; WebEngineSettings* mockWebEngineSettings; + Dali::Accessibility::Address mAccessibilityAddress{}; std::vector mResultCallbacks; 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 9edac2d..319a7e3 100644 --- a/dali-toolkit/internal/controls/web-view/web-view-impl.cpp +++ b/dali-toolkit/internal/controls/web-view/web-view-impl.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -1458,6 +1459,12 @@ Dali::Accessibility::Attributes WebView::WebViewAccessible::GetAttributes() cons void WebView::WebViewAccessible::DoGetChildren(std::vector& children) { + if(Dali::Accessibility::IsUp() && !mRemoteChild.GetAddress()) + { + DALI_LOG_DEBUG_INFO("Try setting address as it has not not been set on initialize.\n"); + SetRemoteChildAddress(mWebEngine.GetAccessibilityAddress()); + } + if(mRemoteChild.GetAddress()) { // DoGetChildren is called at most once per every OnChildrenChanged. -- 2.7.4