END_TEST;
}
+int UtcDaliAccessibleDefaultLabel(void)
+{
+ ToolkitTestApplication application;
+
+ Dali::Accessibility::TestEnableSC(true);
+
+ auto root = Control::New();
+ auto rootAccessible = Accessibility::Accessible::Get(root);
+
+ auto control1 = Control::New();
+ auto control2 = Control::New();
+
+ application.GetScene().Add(root);
+ application.SendNotification();
+ application.Render();
+
+ auto bridge = Accessibility::Bridge::GetCurrentBridge();
+
+ // control1 is off scene: not registered as default label
+ bridge->RegisterDefaultLabel(control1);
+ DALI_TEST_CHECK(bridge->GetDefaultLabel(rootAccessible) == rootAccessible);
+
+ // Add control1 and control2 to the scene
+ root.Add(control1);
+ root.Add(control2);
+ application.SendNotification();
+ application.Render();
+
+ // control1 is on scene; registered as default label
+ bridge->RegisterDefaultLabel(control1);
+ DALI_TEST_CHECK(bridge->GetDefaultLabel(rootAccessible) == Accessibility::Accessible::Get(control1));
+
+ // control2 is on scene; registered as default label; GetDefaultLabel returns the last added default label.
+ bridge->RegisterDefaultLabel(control2);
+ DALI_TEST_CHECK(bridge->GetDefaultLabel(rootAccessible) == Accessibility::Accessible::Get(control2));
+
+ // Remove and Reset control2
+ root.Remove(control2);
+ control2.Reset();
+ application.SendNotification();
+ application.Render();
+
+ // GetDefaultLabel returns control1 as control2 becomes unavailable.
+ DALI_TEST_CHECK(bridge->GetDefaultLabel(rootAccessible) == Accessibility::Accessible::Get(control1));
+
+ // UnregisterDefaultLabel immediately remove the control1 from the list.
+ bridge->UnregisterDefaultLabel(control1);
+ DALI_TEST_CHECK(bridge->GetDefaultLabel(rootAccessible) == rootAccessible);
+
+ // Does not crash when unregistering already unregistered actors.
+ bridge->UnregisterDefaultLabel(control1);
+ bridge->UnregisterDefaultLabel(control2);
+
+ // GetDefaultLabel returns nullptr if nullptr is passed.
+ DALI_TEST_CHECK(bridge->GetDefaultLabel(nullptr) == nullptr);
+
+ Dali::Accessibility::TestEnableSC(false);
+
+ END_TEST;
+}
+
int UtcDaliAccessibleRemovalOnActorDestoyed(void)
{
ToolkitTestApplication application;
void EmitAccessibilityStateChanged(Dali::Actor actor, Accessibility::State state, int newValue)
{
- auto accessible = Accessibility::Accessible::GetOwningPtr(actor);
- if(DALI_LIKELY(accessible))
+ auto bridge = Accessibility::Bridge::GetCurrentBridge();
+ auto control = Toolkit::Control::DownCast(actor);
+ if(DALI_LIKELY(control))
{
- auto control = Toolkit::Control::DownCast(actor);
- if(DALI_LIKELY(control))
+ if(state == Accessibility::State::SHOWING)
{
- if(state == Accessibility::State::SHOWING)
+ bool isModal = ControlAccessible::IsModal(control);
+ if(isModal)
{
- bool isModal = ControlAccessible::IsModal(control);
- if(isModal)
+ if(newValue == 1)
{
- if(newValue == 1)
- {
- Accessibility::Bridge::GetCurrentBridge()->RegisterDefaultLabel(accessible);
- }
- else
- {
- Accessibility::Bridge::GetCurrentBridge()->UnregisterDefaultLabel(accessible);
- }
+ bridge->RegisterDefaultLabel(actor);
+ }
+ else
+ {
+ bridge->UnregisterDefaultLabel(actor);
}
}
}
+ }
- accessible->EmitStateChanged(state, newValue, 0);
+ if(bridge->IsUp())
+ {
+ auto accessible = Accessibility::Accessible::Get(actor);
+ if(DALI_LIKELY(accessible))
+ {
+ accessible->EmitStateChanged(state, newValue, 0);
+ }
}
}