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;
}
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;
}
{
(*replacedIter)->pending = false;
}
-
- uint32_t actorId = self.GetProperty<int>(Actor::Property::ID);
- Accessibility::Bridge::GetCurrentBridge()->RemoveAccessible(actorId);
}
void Control::Impl::SetMargin(Extents margin)
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)