From: Youngsun Suh Date: Tue, 3 Sep 2024 05:08:46 +0000 (+0000) Subject: Revert "Update the bridge to own accessible objects" X-Git-Tag: dali_2.3.40~3^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d7334f5f25d69f3231b9ee64d39d02561452afb7;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git Revert "Update the bridge to own accessible objects" This reverts commit f654d0b8ede636e38cb19a5e4db94a5ba8d7e9e6. Reason for revert: Change-Id: Ie9c5228484299ea289ad888e5d3cd21bcb2081d7 --- 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 b703dcfe06..6822a3d9f8 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 @@ -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; } diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-test-application.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-test-application.cpp index 48091cd4d1..ce66dae335 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-test-application.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-test-application.cpp @@ -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); diff --git a/dali-toolkit/internal/controls/control/control-data-impl.cpp b/dali-toolkit/internal/controls/control/control-data-impl.cpp index e2faac4b27..985ed9d557 100644 --- a/dali-toolkit/internal/controls/control/control-data-impl.cpp +++ b/dali-toolkit/internal/controls/control/control-data-impl.cpp @@ -643,20 +643,16 @@ Control::Impl::Impl(Control& controlImpl) mDispatchKeyEvents(true), mProcessorRegistered(false) { - Accessibility::Accessible::RegisterExternalAccessibleGetter([](Dali::Actor actor) -> std::pair, bool> { + Accessibility::Accessible::RegisterExternalAccessibleGetter([](Dali::Actor actor) -> std::shared_ptr { 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(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(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 Control::Impl::GetAccessibleObject() { - return std::dynamic_pointer_cast(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(Actor::Property::ID); - return !!Accessibility::Bridge::GetCurrentBridge()->GetAccessible(actorId); + return !!mAccessibleObject; } void Control::Impl::EnableCreateAccessible(bool enable) diff --git a/dali-toolkit/internal/controls/control/control-data-impl.h b/dali-toolkit/internal/controls/control/control-data-impl.h index 71c6d3c69c..93e25447ed 100644 --- a/dali-toolkit/internal/controls/control/control-data-impl.h +++ b/dali-toolkit/internal/controls/control/control-data-impl.h @@ -703,6 +703,8 @@ private: bool mIsAccessibilityPropertySetSignalRegistered{false}; Dali::PropertyNotification mAccessibilityPositionNotification; Dali::Accessibility::ScreenRelativeMoveType mAccessibilityLastScreenRelativeMoveType{Accessibility::ScreenRelativeMoveType::OUTSIDE}; + + std::shared_ptr mAccessibleObject; }; } // namespace Internal