Revert "Update the bridge to own accessible objects" 28/317028/1
authorYoungsun Suh <youngsun.suh@samsung.com>
Tue, 3 Sep 2024 05:08:46 +0000 (05:08 +0000)
committerYoungsun Suh <youngsun.suh@samsung.com>
Tue, 3 Sep 2024 05:08:46 +0000 (05:08 +0000)
This reverts commit f654d0b8ede636e38cb19a5e4db94a5ba8d7e9e6.

Reason for revert: <INSERT REASONING HERE>

Change-Id: Ie9c5228484299ea289ad888e5d3cd21bcb2081d7

automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls-BridgeUp.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-test-application.cpp
dali-toolkit/internal/controls/control/control-data-impl.cpp
dali-toolkit/internal/controls/control/control-data-impl.h

index b703dcfe06690df84ed3526d89809ae2f6d880e2..6822a3d9f8b58c527717217d845063b637a65275 100644 (file)
@@ -1933,85 +1933,5 @@ int UtcDaliEmitAccessibilityStateChanged(void)
   DALI_TEST_CHECK(Dali::Accessibility::TestStateChangedResult("showing", 1));
   DALI_TEST_CHECK(Accessibility::Bridge::GetCurrentBridge()->GetDefaultLabel(rootAccessible) != buttonAccessible);
 
-  Dali::Accessibility::TestEnableSC(false);
-
-  END_TEST;
-}
-
-int UtcDaliGetAcessibleTestWithSceneConnection(void)
-{
-  ToolkitTestApplication application;
-
-  Dali::Accessibility::TestEnableSC(true);
-
-  auto layer = Layer::New();
-
-  auto container = Control::New();
-  container.SetProperty(Actor::Property::SIZE, Vector2(300, 300));
-  container.SetProperty(DevelControl::Property::ACCESSIBILITY_ROLE, DevelControl::AccessibilityRole::CONTAINER);
-  layer.Add(container);
-
-  auto button = Control::New();
-  button.SetProperty(Actor::Property::SIZE, Vector2(20, 20));
-  button.SetProperty(DevelControl::Property::ACCESSIBILITY_ROLE, DevelControl::AccessibilityRole::BUTTON);
-  container.Add(button);
-
-  application.GetScene().Add(layer);
-  Wait(application);
-
-  auto layerAccessible_1     = Accessibility::Accessible::Get(layer);     // AdaptorAccessible
-  auto containerAccessible_1 = Accessibility::Accessible::Get(container); // ControlAccessible
-  auto buttonAccessible_1    = Accessibility::Accessible::Get(button);    // ControlAccessible
-  DALI_TEST_CHECK(layerAccessible_1);
-  DALI_TEST_CHECK(containerAccessible_1);
-  DALI_TEST_CHECK(buttonAccessible_1);
-
-  // Test Getting already added accessible from the map
-  auto layerAccessible_1_1     = Accessibility::Accessible::Get(layer);
-  auto containerAccessible_1_1 = Accessibility::Accessible::Get(container);
-  auto buttonAccessible_1_1    = Accessibility::Accessible::Get(button);
-  DALI_TEST_CHECK(layerAccessible_1_1 == layerAccessible_1);
-  DALI_TEST_CHECK(containerAccessible_1_1 == containerAccessible_1);
-  DALI_TEST_CHECK(buttonAccessible_1_1 == buttonAccessible_1);
-
-  // Test ControlAccessible Removal on SceneDisconnection and recreation on next Get
-  {
-    layer.Remove(container);
-    Wait(application);
-
-    // Create dummy to make sure new accessible is create in new memory position
-    auto dummy           = Control::New();
-    auto dummyAccessible = Accessibility::Accessible::Get(dummy);
-    DALI_TEST_CHECK(dummyAccessible);
-
-    auto layerAccessible_2     = Accessibility::Accessible::Get(layer);
-    auto containerAccessible_2 = Accessibility::Accessible::Get(container);
-    auto buttonAccessible_2    = Accessibility::Accessible::Get(button);
-
-    DALI_TEST_CHECK(containerAccessible_2);
-    DALI_TEST_CHECK(buttonAccessible_2);
-
-    DALI_TEST_CHECK(layerAccessible_2 == layerAccessible_1); // layer accessible unchanged
-    DALI_TEST_CHECK(containerAccessible_2 != containerAccessible_1);
-    DALI_TEST_CHECK(buttonAccessible_2 != buttonAccessible_1);
-  }
-
-  // Test AdaptorAccessibleRemoval on SceneDisconnection and reacreation on next Get
-  {
-    application.GetScene().Remove(layer);
-    Wait(application);
-
-    // Create dummy to make sure new accessible is create in new memory position
-    auto dummy           = Control::New();
-    auto dummyAccessible = Accessibility::Accessible::Get(dummy);
-    DALI_TEST_CHECK(dummyAccessible);
-
-    auto layerAccessible_3 = Accessibility::Accessible::Get(layer);
-    DALI_TEST_CHECK(layerAccessible_3);
-    DALI_TEST_CHECK(layerAccessible_3 != layerAccessible_1);
-  }
-
-  Dali::Accessibility::TestEnableSC(false);
-
   END_TEST;
 }
index 48091cd4d1a6e5d1c9078effa9c45b5504596625..ce66dae3358b27517b4f0b5483bc57b6b1b7cf52 100644 (file)
@@ -54,6 +54,7 @@ ToolkitTestApplication::ToolkitTestApplication(size_t surfaceWidth, size_t surfa
 
   // Core needs to be initialized next before we start the adaptor
   InitializeCore();
+  Accessibility::Accessible::SetObjectRegistry(mCore->GetObjectRegistry());
 
   // This will also emit the window created signals
   AdaptorImpl::GetImpl(*mAdaptor).Start(mMainWindow);
index e2faac4b27654ccc8d40e209b8923e3df554ef49..985ed9d55777334196d6aaecde443923c3449dc1 100644 (file)
@@ -643,20 +643,16 @@ Control::Impl::Impl(Control& controlImpl)
   mDispatchKeyEvents(true),
   mProcessorRegistered(false)
 {
-  Accessibility::Accessible::RegisterExternalAccessibleGetter([](Dali::Actor actor) -> std::pair<std::shared_ptr<Accessibility::Accessible>, bool> {
+  Accessibility::Accessible::RegisterExternalAccessibleGetter([](Dali::Actor actor) -> std::shared_ptr<Accessibility::Accessible> {
     auto control = Toolkit::Control::DownCast(actor);
     if(!control)
     {
-      return {nullptr, true};
+      return nullptr;
     }
 
     auto& controlImpl = Toolkit::Internal::GetImplementation(control);
-    if(controlImpl.mImpl->IsCreateAccessibleEnabled())
-    {
-      return {std::shared_ptr<DevelControl::ControlAccessible>(controlImpl.CreateAccessibleObject()), true};
-    }
 
-    return {nullptr, false};
+    return controlImpl.GetAccessibleObject();
   });
   mAccessibilityProps.states[DevelControl::AccessibilityState::ENABLED] = true;
 }
@@ -2255,9 +2251,6 @@ void Control::Impl::OnSceneDisconnection()
   {
     (*replacedIter)->pending = false;
   }
-
-  uint32_t actorId = self.GetProperty<int>(Actor::Property::ID);
-  Accessibility::Bridge::GetCurrentBridge()->RemoveAccessible(actorId);
 }
 
 void Control::Impl::SetMargin(Extents margin)
@@ -2449,13 +2442,17 @@ bool Control::Impl::OnIdleCallback()
 
 std::shared_ptr<Toolkit::DevelControl::ControlAccessible> Control::Impl::GetAccessibleObject()
 {
-  return std::dynamic_pointer_cast<DevelControl::ControlAccessible>(Accessibility::Accessible::GetOwningPtr(mControlImpl.Self()));
+  if(mAccessibleCreatable && !mAccessibleObject)
+  {
+    mAccessibleObject.reset(mControlImpl.CreateAccessibleObject());
+  }
+
+  return mAccessibleObject;
 }
 
 bool Control::Impl::IsAccessibleCreated() const
 {
-  uint32_t actorId = mControlImpl.Self().GetProperty<int>(Actor::Property::ID);
-  return !!Accessibility::Bridge::GetCurrentBridge()->GetAccessible(actorId);
+  return !!mAccessibleObject;
 }
 
 void Control::Impl::EnableCreateAccessible(bool enable)
index 71c6d3c69c357c9b762ee308beb821cbdb22a30d..93e25447ed9b642e9739b9c93aba62bd8fb77fb5 100644 (file)
@@ -703,6 +703,8 @@ private:
   bool                                        mIsAccessibilityPropertySetSignalRegistered{false};
   Dali::PropertyNotification                  mAccessibilityPositionNotification;
   Dali::Accessibility::ScreenRelativeMoveType mAccessibilityLastScreenRelativeMoveType{Accessibility::ScreenRelativeMoveType::OUTSIDE};
+
+  std::shared_ptr<Toolkit::DevelControl::ControlAccessible> mAccessibleObject;
 };
 
 } // namespace Internal