Try getting accessibility address in DoGetChildren 45/312745/3
authorYoungsun Suh <youngsun.suh@samsung.com>
Thu, 13 Jun 2024 00:57:59 +0000 (09:57 +0900)
committerYoungsun Suh <youngsun.suh@samsung.com>
Fri, 14 Jun 2024 01:50:58 +0000 (10:50 +0900)
Change-Id: I0784218a1ae63d4fab0b99ab9c79afa053633a63

automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-web-engine.cpp
dali-toolkit/internal/controls/web-view/web-view-impl.cpp

index ad2fba7..f0a8b1c 100644 (file)
@@ -17,8 +17,6 @@
 #include <dali/devel-api/common/stage.h>
 #include <cstdlib>
 
-#include <automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/dbus-wrapper.h>
-
 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];
index 19f32b3..cff6ee5 100644 (file)
@@ -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<int32_t> viewArea, float scaleFactor)
@@ -1956,6 +1962,7 @@ public:
   Dali::Vector2             mContentSize;
   WebEngineBackForwardList* mockWebEngineBackForwardList;
   WebEngineSettings*        mockWebEngineSettings;
+  Dali::Accessibility::Address mAccessibilityAddress{};
 
   std::vector<Dali::WebEnginePlugin::JavaScriptMessageHandlerCallback> mResultCallbacks;
 
index 9edac2d..319a7e3 100644 (file)
@@ -36,6 +36,7 @@
 #include <dali/devel-api/common/stage.h>
 #include <dali/devel-api/scripting/enum-helper.h>
 #include <dali/devel-api/scripting/scripting.h>
+#include <dali/integration-api/debug.h>
 #include <dali/public-api/adaptor-framework/native-image-source.h>
 #include <dali/public-api/object/type-registry-helper.h>
 #include <dali/public-api/object/type-registry.h>
@@ -1458,6 +1459,12 @@ Dali::Accessibility::Attributes WebView::WebViewAccessible::GetAttributes() cons
 
 void WebView::WebViewAccessible::DoGetChildren(std::vector<Dali::Accessibility::Accessible*>& 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.