[ATSPI] Lazily embed the web content subtree 55/285555/5
authorLukasz Oleksak <l.oleksak@samsung.com>
Wed, 14 Dec 2022 13:34:20 +0000 (14:34 +0100)
committerLukasz Oleksak <l.oleksak@samsung.com>
Wed, 28 Dec 2022 10:09:00 +0000 (11:09 +0100)
Delays necessity to make synchronous call on dbus, what reduces chances
for deadlock.

Change-Id: Ica669ca490619ca0906cc0c14c8f7dfde0925023

dali-toolkit/internal/controls/web-view/web-view-impl.cpp

index 68aec5e..ded91c5 100755 (executable)
@@ -1304,6 +1304,9 @@ void WebView::WebViewAccessible::DoGetChildren(std::vector<Dali::Accessibility::
 {
   if(mRemoteChild.GetAddress())
   {
+    // DoGetChildren is called at most once per every OnChildrenChanged.
+    // We have only one OnChildrenChanged in this case, so EmbedAtkSocket will be called only once.
+    Accessibility::Bridge::GetCurrentBridge()->EmbedAtkSocket(GetAddress(), mRemoteChild.GetAddress());
     children.push_back(&mRemoteChild);
   }
 }
@@ -1334,11 +1337,6 @@ void WebView::WebViewAccessible::SetRemoteChildAddress(Dali::Accessibility::Addr
 {
   mRemoteChild.SetAddress(address);
   OnChildrenChanged();
-
-  if(address)
-  {
-    Accessibility::Bridge::GetCurrentBridge()->EmbedAtkSocket(GetAddress(), address);
-  }
 }
 
 #undef GET_ENUM_STRING