From: Eunki, Hong Date: Wed, 8 Nov 2023 13:29:49 +0000 (+0900) Subject: [Tizen] (A11y) Let we make some way to do not create new Accessible X-Git-Tag: accepted/tizen/7.0/unified/20240124.164050~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f0962f129e1ad40a024d766fd01d3be45e5ac61d;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git [Tizen] (A11y) Let we make some way to do not create new Accessible Add some API that we will not create new Accessible() object anymore. It will be useful when we ignore some Disposed view's accessible action. Change-Id: I6186f95eacf3c7d3cdb9c4ff9543edc019096552 Signed-off-by: Eunki, Hong --- diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls.cpp index 29aa513..8b54340 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Accessibility-Controls.cpp @@ -1,7 +1,8 @@ -#include #include +#include #include +#include #include #include #include @@ -29,6 +30,107 @@ void utc_dali_accessibility_controls_cleanup(void) DBusWrapper::Install({}); } +int UtcDaliControlAccessibileGet01(void) +{ + ToolkitTestApplication application; + + auto control = Control::New(); + auto accessible = dynamic_cast(Dali::Accessibility::Accessible::Get(control)); + DALI_TEST_CHECK(accessible); + + END_TEST; +} + +int UtcDaliControlAccessibileGet02(void) +{ + ToolkitTestApplication application; + + auto control = Control::New(); + + // Default is true. + DALI_TEST_EQUALS(DevelControl::IsCreateAccessibleEnabled(control), true, TEST_LOCATION); + DALI_TEST_EQUALS(DevelControl::IsAccessibleCreated(control), false, TEST_LOCATION); + + DevelControl::EnableCreateAccessible(control, false); + DALI_TEST_EQUALS(DevelControl::IsCreateAccessibleEnabled(control), false, TEST_LOCATION); + auto accessible = dynamic_cast(Dali::Accessibility::Accessible::Get(control)); + + // Check that we don't create accessible yet. + DALI_TEST_EQUALS(DevelControl::IsAccessibleCreated(control), false, TEST_LOCATION); + DALI_TEST_CHECK(!accessible); + + DevelControl::EnableCreateAccessible(control, true); + DALI_TEST_EQUALS(DevelControl::IsCreateAccessibleEnabled(control), true, TEST_LOCATION); + accessible = dynamic_cast(Dali::Accessibility::Accessible::Get(control)); + DALI_TEST_EQUALS(DevelControl::IsAccessibleCreated(control), true, TEST_LOCATION); + DALI_TEST_CHECK(accessible); + + DevelControl::EnableCreateAccessible(control, false); + DALI_TEST_EQUALS(DevelControl::IsCreateAccessibleEnabled(control), false, TEST_LOCATION); + accessible = dynamic_cast(Dali::Accessibility::Accessible::Get(control)); + + // Check that we got created accessible well. + DALI_TEST_EQUALS(DevelControl::IsAccessibleCreated(control), true, TEST_LOCATION); + DALI_TEST_CHECK(accessible); + + END_TEST; +} + +int UtcDaliControlAccessibileBlockAccessibleCreation(void) +{ + ToolkitTestApplication application; + + auto control = Control::New(); + + // Default is true. + DALI_TEST_EQUALS(DevelControl::IsCreateAccessibleEnabled(control), true, TEST_LOCATION); + DALI_TEST_EQUALS(DevelControl::IsAccessibleCreated(control), false, TEST_LOCATION); + + DevelControl::EnableCreateAccessible(control, false); + DALI_TEST_EQUALS(DevelControl::IsCreateAccessibleEnabled(control), false, TEST_LOCATION); + + try + { + // Should not throw exception even if accessible is not created. + DALI_TEST_EQUALS(DevelControl::ClearAccessibilityHighlight(control), false, TEST_LOCATION); + DALI_TEST_EQUALS(DevelControl::GrabAccessibilityHighlight(control), false, TEST_LOCATION); + + DevelControl::GetAccessibilityStates(control); + DevelControl::NotifyAccessibilityStateChange(control, Dali::Accessibility::States{}, false); + DevelControl::NotifyAccessibilityStateChange(control, Dali::Accessibility::States{}, true); + DALI_TEST_CHECK(true); + } + catch(...) + { + DALI_TEST_CHECK(false); + } + + // Check that we don't create accessible yet. + DALI_TEST_EQUALS(DevelControl::IsAccessibleCreated(control), false, TEST_LOCATION); + + // Dummy function call - for line coverage + DevelControl::EnableCreateAccessible(control, true); + DALI_TEST_EQUALS(DevelControl::IsCreateAccessibleEnabled(control), true, TEST_LOCATION); + DALI_TEST_EQUALS(DevelControl::IsAccessibleCreated(control), false, TEST_LOCATION); + + try + { + // Should not throw exception even if accessible is not created. + DevelControl::ClearAccessibilityHighlight(control); + DevelControl::GrabAccessibilityHighlight(control); + DevelControl::GetAccessibilityStates(control); + DevelControl::NotifyAccessibilityStateChange(control, Dali::Accessibility::States{}, false); + DevelControl::NotifyAccessibilityStateChange(control, Dali::Accessibility::States{}, true); + DALI_TEST_CHECK(true); + } + catch(...) + { + DALI_TEST_CHECK(false); + } + + END_TEST; +} + int UtcDaliControlPropertyAccessibilityTranslationDomain(void) { ToolkitTestApplication application; @@ -38,11 +140,11 @@ int UtcDaliControlPropertyAccessibilityTranslationDomain(void) auto accessibility_translation_domain = DevelControl::Property::ACCESSIBILITY_TRANSLATION_DOMAIN; DALI_TEST_EQUALS("", control.GetProperty(accessibility_translation_domain), TEST_LOCATION); - control.SetProperty( accessibility_translation_domain, "translation_domain_test_1" ); - DALI_TEST_EQUALS( "translation_domain_test_1" , control.GetProperty( accessibility_translation_domain ).Get< std::string >(), TEST_LOCATION ); + control.SetProperty(accessibility_translation_domain, "translation_domain_test_1"); + DALI_TEST_EQUALS("translation_domain_test_1", control.GetProperty(accessibility_translation_domain).Get(), TEST_LOCATION); - control.SetProperty( accessibility_translation_domain, "translation_domain_test_2" ); - DALI_TEST_EQUALS( "translation_domain_test_2" , control.GetProperty( accessibility_translation_domain ).Get< std::string >(), TEST_LOCATION ); + control.SetProperty(accessibility_translation_domain, "translation_domain_test_2"); + DALI_TEST_EQUALS("translation_domain_test_2", control.GetProperty(accessibility_translation_domain).Get(), TEST_LOCATION); END_TEST; } @@ -52,13 +154,13 @@ int UtcDaliControlPropertyAccessibilityTranslationDomain(void) int UtcDaliControlAccessibilityHighlight(void) { ToolkitTestApplication application; - auto controla = Control::New(); - auto controlb = Control::New(); + auto controla = Control::New(); + auto controlb = Control::New(); - DALI_TEST_EQUALS( false, DevelControl::GrabAccessibilityHighlight(controla), TEST_LOCATION ); - DALI_TEST_EQUALS( false, DevelControl::GrabAccessibilityHighlight(controlb), TEST_LOCATION ); - DALI_TEST_EQUALS( false, DevelControl::ClearAccessibilityHighlight(controla), TEST_LOCATION ); - DALI_TEST_EQUALS( false, DevelControl::ClearAccessibilityHighlight(controlb), TEST_LOCATION ); + DALI_TEST_EQUALS(false, DevelControl::GrabAccessibilityHighlight(controla), TEST_LOCATION); + DALI_TEST_EQUALS(false, DevelControl::GrabAccessibilityHighlight(controlb), TEST_LOCATION); + DALI_TEST_EQUALS(false, DevelControl::ClearAccessibilityHighlight(controla), TEST_LOCATION); + DALI_TEST_EQUALS(false, DevelControl::ClearAccessibilityHighlight(controlb), TEST_LOCATION); END_TEST; } @@ -69,11 +171,11 @@ int UtcDaliAccessibilityToolBarConstructor(void) ToolkitTestApplication application; auto toolbar = ToolBar::New(); - DALI_TEST_CHECK( toolbar ); + DALI_TEST_CHECK(toolbar); - auto accessible = Dali::Accessibility::Accessible::Get( toolbar ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::TOOL_BAR, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(toolbar); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::TOOL_BAR, TEST_LOCATION); END_TEST; } @@ -83,11 +185,11 @@ int UtcDaliAccessibilityPushButtonConstructor(void) ToolkitTestApplication application; auto pushbutton = PushButton::New(); - DALI_TEST_CHECK( pushbutton ); + DALI_TEST_CHECK(pushbutton); - auto accessible = Dali::Accessibility::Accessible::Get( pushbutton ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::PUSH_BUTTON, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(pushbutton); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::PUSH_BUTTON, TEST_LOCATION); END_TEST; } @@ -97,30 +199,40 @@ int UtcDaliAccessibilityPushButtonStates(void) ToolkitTestApplication application; auto pushbutton = PushButton::New(); - DALI_TEST_CHECK( pushbutton ); + DALI_TEST_CHECK(pushbutton); - auto accessible = Dali::Accessibility::Accessible::Get( pushbutton ); - DALI_TEST_CHECK( accessible ); + auto accessible = Dali::Accessibility::Accessible::Get(pushbutton); + DALI_TEST_CHECK(accessible); - Dali::Accessibility::TestEnableSC( true ); + Dali::Accessibility::TestEnableSC(true); /* add to scene and remove from scene to touch AccessibilityDeregister */ - application.GetScene().Add( pushbutton ); + application.GetScene().Add(pushbutton); auto states = accessible->GetStates(); - DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::PRESSED ] ), false, TEST_LOCATION ); + DALI_TEST_EQUALS(static_cast(states[Accessibility::State::PRESSED]), false, TEST_LOCATION); // auto button = dynamic_cast( accessible ) ; - pushbutton.SetProperty( Toolkit::Button::Property::TOGGLABLE, true ); - pushbutton.SetProperty( Toolkit::Button::Property::SELECTED, true ); + pushbutton.SetProperty(Toolkit::Button::Property::TOGGLABLE, true); + pushbutton.SetProperty(Toolkit::Button::Property::SELECTED, true); states = accessible->GetStates(); - DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::PRESSED ] ), true, TEST_LOCATION ); + DALI_TEST_EQUALS(static_cast(states[Accessibility::State::PRESSED]), true, TEST_LOCATION); + + // Grab highlite now. + auto i = dynamic_cast(accessible); + DALI_TEST_CHECK(i); + i->GrabHighlight(); + + pushbutton.SetProperty(Toolkit::Button::Property::SELECTED, false); + + states = accessible->GetStates(); + DALI_TEST_EQUALS(static_cast(states[Accessibility::State::PRESSED]), false, TEST_LOCATION); /* add to scene and remove from scene to touch AccessibilityDeregister */ - application.GetScene().Remove( pushbutton ); + application.GetScene().Remove(pushbutton); - Dali::Accessibility::TestEnableSC( false ); + Dali::Accessibility::TestEnableSC(false); END_TEST; } @@ -131,11 +243,56 @@ int UtcDaliAccessibilityToggleButtonConstructor(void) ToolkitTestApplication application; auto togglebutton = ToggleButton::New(); - DALI_TEST_CHECK( togglebutton ); + DALI_TEST_CHECK(togglebutton); + + auto accessible = Dali::Accessibility::Accessible::Get(togglebutton); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::TOGGLE_BUTTON, TEST_LOCATION); + + END_TEST; +} + +int UtcDaliAccessibilityToggleButtonStates(void) +{ + ToolkitTestApplication application; + + auto togglebutton = ToggleButton::New(); + DALI_TEST_CHECK(togglebutton); + + auto accessible = Dali::Accessibility::Accessible::Get(togglebutton); + DALI_TEST_CHECK(accessible); + + Dali::Accessibility::TestEnableSC(true); + + /* add to scene and remove from scene to touch AccessibilityDeregister */ + application.GetScene().Add(togglebutton); - auto accessible = Dali::Accessibility::Accessible::Get( togglebutton ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::TOGGLE_BUTTON, TEST_LOCATION ); + auto states = accessible->GetStates(); + DALI_TEST_EQUALS(static_cast(states[Accessibility::State::CHECKED]), false, TEST_LOCATION); + + // auto button = dynamic_cast( accessible ) ; + togglebutton.SetProperty(Toolkit::Button::Property::TOGGLABLE, true); + togglebutton.SetProperty(Toolkit::Button::Property::SELECTED, true); + + states = accessible->GetStates(); + DALI_TEST_EQUALS(static_cast(states[Accessibility::State::CHECKED]), true, TEST_LOCATION); + + // Grab highlite now. + auto i = dynamic_cast(accessible); + DALI_TEST_CHECK(i); + i->GrabHighlight(); + + togglebutton.SetProperty(Toolkit::Button::Property::SELECTED, false); + + states = accessible->GetStates(); + DALI_TEST_EQUALS(static_cast(states[Accessibility::State::CHECKED]), false, TEST_LOCATION); + + /* add to scene and remove from scene to touch AccessibilityDeregister */ + application.GetScene().Remove(togglebutton); + + Dali::Accessibility::TestEnableSC(false); + + END_TEST; END_TEST; } @@ -145,12 +302,12 @@ int UtcDaliAccessibilityTextSelectionPopupConstructor(void) { ToolkitTestApplication application; - auto textselectionpopup = TextSelectionPopup::New( NULL ); - DALI_TEST_CHECK( textselectionpopup ); + auto textselectionpopup = TextSelectionPopup::New(NULL); + DALI_TEST_CHECK(textselectionpopup); - auto accessible = Dali::Accessibility::Accessible::Get( textselectionpopup ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::DIALOG, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(textselectionpopup); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::DIALOG, TEST_LOCATION); END_TEST; } @@ -160,11 +317,11 @@ int UtcDaliAccessibilityAlignmentConstructor(void) ToolkitTestApplication application; auto alignment = Alignment::New(); - DALI_TEST_CHECK( alignment ); + DALI_TEST_CHECK(alignment); - auto accessible = Dali::Accessibility::Accessible::Get( alignment ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(alignment); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION); END_TEST; } @@ -174,22 +331,36 @@ int UtcDaliAccessibilityRadioButtonStates(void) ToolkitTestApplication application; auto radiobutton = RadioButton::New(); - DALI_TEST_CHECK( radiobutton ); + DALI_TEST_CHECK(radiobutton); - auto accessible = Dali::Accessibility::Accessible::Get( radiobutton ); - DALI_TEST_CHECK( accessible ); + auto accessible = Dali::Accessibility::Accessible::Get(radiobutton); + DALI_TEST_CHECK(accessible); - Dali::Accessibility::TestEnableSC( true ); + Dali::Accessibility::TestEnableSC(true); + + application.GetScene().Add(radiobutton); auto states = accessible->GetStates(); - DALI_TEST_CHECK( states ); - DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::CHECKED ] ), false, TEST_LOCATION ); - radiobutton.SetProperty( Toolkit::RadioButton::Property::SELECTED, true ); + DALI_TEST_CHECK(states); + DALI_TEST_EQUALS(static_cast(states[Accessibility::State::CHECKED]), false, TEST_LOCATION); + radiobutton.SetProperty(Toolkit::RadioButton::Property::SELECTED, true); states = accessible->GetStates(); - DALI_TEST_CHECK( states ); - DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::CHECKED ] ), true, TEST_LOCATION ); + DALI_TEST_CHECK(states); + DALI_TEST_EQUALS(static_cast(states[Accessibility::State::CHECKED]), true, TEST_LOCATION); - Dali::Accessibility::TestEnableSC( false ); + // Grab highlite now. + auto i = dynamic_cast(accessible); + DALI_TEST_CHECK(i); + i->GrabHighlight(); + + radiobutton.SetProperty(Toolkit::RadioButton::Property::SELECTED, false); + states = accessible->GetStates(); + DALI_TEST_CHECK(states); + DALI_TEST_EQUALS(static_cast(states[Accessibility::State::CHECKED]), false, TEST_LOCATION); + + application.GetScene().Remove(radiobutton); + + Dali::Accessibility::TestEnableSC(false); END_TEST; } @@ -199,11 +370,11 @@ int UtcDaliAccessibilityFlexContainerConstructor(void) ToolkitTestApplication application; auto flexcontainer = FlexContainer::New(); - DALI_TEST_CHECK( flexcontainer ); + DALI_TEST_CHECK(flexcontainer); - auto accessible = Dali::Accessibility::Accessible::Get( flexcontainer ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(flexcontainer); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION); END_TEST; } @@ -213,20 +384,33 @@ int UtcDaliAccessibilityCheckBoxButton(void) ToolkitTestApplication application; auto checkboxbutton = CheckBoxButton::New(); - DALI_TEST_CHECK( checkboxbutton ); + DALI_TEST_CHECK(checkboxbutton); - auto accessible = Dali::Accessibility::Accessible::Get( checkboxbutton ); - DALI_TEST_CHECK( accessible ); + auto accessible = Dali::Accessibility::Accessible::Get(checkboxbutton); + DALI_TEST_CHECK(accessible); - Dali::Accessibility::TestEnableSC( true ); + Dali::Accessibility::TestEnableSC(true); + + application.GetScene().Add(checkboxbutton); auto states = accessible->GetStates(); - DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::CHECKED ] ), false, TEST_LOCATION ); - checkboxbutton.SetProperty( Toolkit::CheckBoxButton::Property::SELECTED, true ); + DALI_TEST_EQUALS(static_cast(states[Accessibility::State::CHECKED]), false, TEST_LOCATION); + checkboxbutton.SetProperty(Toolkit::CheckBoxButton::Property::SELECTED, true); + states = accessible->GetStates(); + DALI_TEST_EQUALS(static_cast(states[Accessibility::State::CHECKED]), true, TEST_LOCATION); + + // Grab highlite now. + auto i = dynamic_cast(accessible); + DALI_TEST_CHECK(i); + i->GrabHighlight(); + + checkboxbutton.SetProperty(Toolkit::CheckBoxButton::Property::SELECTED, false); states = accessible->GetStates(); - DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::CHECKED ] ), true, TEST_LOCATION ); + DALI_TEST_EQUALS(static_cast(states[Accessibility::State::CHECKED]), false, TEST_LOCATION); + + application.GetScene().Remove(checkboxbutton); - Dali::Accessibility::TestEnableSC( false ); + Dali::Accessibility::TestEnableSC(false); END_TEST; } @@ -237,11 +421,11 @@ int UtcDaliAccessibilityTextSelectionConstructor(void) ToolkitTestApplication application; auto textselectiontoolbar = TextSelectionToolbar::New(); - DALI_TEST_CHECK( textselectiontoolbar ); + DALI_TEST_CHECK(textselectiontoolbar); - auto accessible = Dali::Accessibility::Accessible::Get( textselectiontoolbar ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::TOOL_BAR, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(textselectiontoolbar); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::TOOL_BAR, TEST_LOCATION); END_TEST; } @@ -256,43 +440,43 @@ int UtcDaliAccessibilityManager(void) Dali::Accessibility::TestEnableSC(true); auto accessmanager = new Dali::Toolkit::Internal::AccessibilityManager; - auto actor = Control::New(); + auto actor = Control::New(); - const std::string name = "Name"; + const std::string name = "Name"; const std::string descr = "Description"; accessmanager->SetAccessibilityAttribute(actor, attr::ACCESSIBILITY_LABEL, name); - DALI_TEST_EQUALS( accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_LABEL), name, TEST_LOCATION ); - DALI_TEST_EQUALS( actor.GetProperty(DevelControl::Property::ACCESSIBILITY_NAME), name, TEST_LOCATION ); + DALI_TEST_EQUALS(accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_LABEL), name, TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetProperty(DevelControl::Property::ACCESSIBILITY_NAME), name, TEST_LOCATION); accessmanager->SetAccessibilityAttribute(actor, attr::ACCESSIBILITY_TRAIT, "Whatever"); - DALI_TEST_EQUALS( accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_TRAIT), "", TEST_LOCATION ); + DALI_TEST_EQUALS(accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_TRAIT), "", TEST_LOCATION); accessmanager->SetAccessibilityAttribute(actor, attr::ACCESSIBILITY_VALUE, "Whatever"); - DALI_TEST_EQUALS( accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_VALUE), "", TEST_LOCATION ); + DALI_TEST_EQUALS(accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_VALUE), "", TEST_LOCATION); accessmanager->SetAccessibilityAttribute(actor, attr::ACCESSIBILITY_HINT, descr); - DALI_TEST_EQUALS( accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_HINT), descr, TEST_LOCATION ); - DALI_TEST_EQUALS( actor.GetProperty(DevelControl::Property::ACCESSIBILITY_DESCRIPTION), descr, TEST_LOCATION ); + DALI_TEST_EQUALS(accessmanager->GetAccessibilityAttribute(actor, attr::ACCESSIBILITY_HINT), descr, TEST_LOCATION); + DALI_TEST_EQUALS(actor.GetProperty(DevelControl::Property::ACCESSIBILITY_DESCRIPTION), descr, TEST_LOCATION); - DALI_TEST_EQUALS( accessmanager->GetFocusOrder(actor), 0, TEST_LOCATION ); - DALI_TEST_EQUALS( accessmanager->GenerateNewFocusOrder(), 1, TEST_LOCATION ); + DALI_TEST_EQUALS(accessmanager->GetFocusOrder(actor), 0, TEST_LOCATION); + DALI_TEST_EQUALS(accessmanager->GenerateNewFocusOrder(), 1, TEST_LOCATION); accessmanager->SetFocusOrder({}, 0); accessmanager->SetFocusOrder(Control::New(), 1); accessmanager->SetFocusOrder(actor, 2); accessmanager->SetFocusOrder(Control::New(), 3); - DALI_TEST_EQUALS( accessmanager->GetFocusOrder(actor), 2, TEST_LOCATION ); - DALI_TEST_EQUALS( accessmanager->GetActorByFocusOrder(2), actor, TEST_LOCATION ); + DALI_TEST_EQUALS(accessmanager->GetFocusOrder(actor), 2, TEST_LOCATION); + DALI_TEST_EQUALS(accessmanager->GetActorByFocusOrder(2), actor, TEST_LOCATION); accessmanager->SetCurrentFocusActor(actor); - DALI_TEST_EQUALS( accessmanager->GetCurrentFocusActor(), actor, TEST_LOCATION ); - DALI_TEST_EQUALS( accessmanager->GetCurrentFocusOrder(), 2, TEST_LOCATION ); + DALI_TEST_EQUALS(accessmanager->GetCurrentFocusActor(), actor, TEST_LOCATION); + DALI_TEST_EQUALS(accessmanager->GetCurrentFocusOrder(), 2, TEST_LOCATION); accessmanager->MoveFocusForward(); accessmanager->MoveFocusBackward(); - DALI_TEST_EQUALS( accessmanager->GetCurrentFocusActor(), actor, TEST_LOCATION ); + DALI_TEST_EQUALS(accessmanager->GetCurrentFocusActor(), actor, TEST_LOCATION); accessmanager->SetCurrentFocusActor({}); accessmanager->Reset(); @@ -300,15 +484,15 @@ int UtcDaliAccessibilityManager(void) accessmanager->MoveFocusForward(); accessmanager->GetCurrentFocusGroup(); - DALI_TEST_EQUALS( accessmanager->IsFocusGroup(actor), false, TEST_LOCATION ); + DALI_TEST_EQUALS(accessmanager->IsFocusGroup(actor), false, TEST_LOCATION); accessmanager->GetFocusGroup(actor); - DALI_TEST_EQUALS( accessmanager->GetGroupMode(), false, TEST_LOCATION ); - DALI_TEST_EQUALS( accessmanager->GetWrapMode(), true, TEST_LOCATION ); + DALI_TEST_EQUALS(accessmanager->GetGroupMode(), false, TEST_LOCATION); + DALI_TEST_EQUALS(accessmanager->GetWrapMode(), true, TEST_LOCATION); auto vector = accessmanager->GetReadPosition(); - DALI_TEST_EQUALS( vector.x, 0.0f, TEST_LOCATION ); - DALI_TEST_EQUALS( vector.y, 0.0f, TEST_LOCATION ); + DALI_TEST_EQUALS(vector.x, 0.0f, TEST_LOCATION); + DALI_TEST_EQUALS(vector.y, 0.0f, TEST_LOCATION); accessmanager->SetFocusIndicatorActor(Dali::Actor{}); accessmanager->GetFocusIndicatorActor(); @@ -323,11 +507,11 @@ int UtcDaliAccessibilityModel3dViewConstructor(void) ToolkitTestApplication application; auto model3dview = Model3dView::New(); - DALI_TEST_CHECK( model3dview ); + DALI_TEST_CHECK(model3dview); - auto accessible = Dali::Accessibility::Accessible::Get( model3dview ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::IMAGE, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(model3dview); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::IMAGE, TEST_LOCATION); END_TEST; } @@ -337,13 +521,13 @@ int UtcDaliAccessibilityEffectsViewConstructor(void) { ToolkitTestApplication application; - auto etype = Dali::Toolkit::EffectsView::EffectType::DROP_SHADOW; - auto effectsview = EffectsView::New( etype ); - DALI_TEST_CHECK( effectsview ); + auto etype = Dali::Toolkit::EffectsView::EffectType::DROP_SHADOW; + auto effectsview = EffectsView::New(etype); + DALI_TEST_CHECK(effectsview); - auto accessible = Dali::Accessibility::Accessible::Get( effectsview ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(effectsview); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION); END_TEST; } @@ -353,12 +537,12 @@ int UtcDaliAccessibilitySuperBlurViewConstructor(void) { ToolkitTestApplication application; - auto superblurview = SuperBlurView::New( 1 ); - DALI_TEST_CHECK( superblurview ); + auto superblurview = SuperBlurView::New(1); + DALI_TEST_CHECK(superblurview); - auto accessible = Dali::Accessibility::Accessible::Get( superblurview ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(superblurview); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION); END_TEST; } @@ -368,11 +552,11 @@ int UtcDaliAccessibilityImageViewConstructor(void) ToolkitTestApplication application; auto imageview = ImageView::New(); - DALI_TEST_CHECK( imageview ); + DALI_TEST_CHECK(imageview); - auto accessible = Dali::Accessibility::Accessible::Get( imageview ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::IMAGE, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(imageview); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::IMAGE, TEST_LOCATION); END_TEST; } @@ -381,9 +565,8 @@ int UtcDaliAccessibilityImageViewConstructor(void) class TestPageFactory : public PageFactory { public: - - TestPageFactory( bool returnValidTexture = true ) - : mValidTexture( returnValidTexture ) + TestPageFactory(bool returnValidTexture = true) + : mValidTexture(returnValidTexture) { mTotalPageNumber = 100; } @@ -402,18 +585,18 @@ public: * @param[in] pageId The ID of the page to create. * @return An image, or an empty handle if the ID is out of range. */ - virtual Texture NewPage( unsigned int pageId ) + virtual Texture NewPage(unsigned int pageId) { - if( mValidTexture ) + if(mValidTexture) { - return Texture::New( Dali::TextureType::TEXTURE_2D, Pixel::RGB888, 100, 100 ); + return Texture::New(Dali::TextureType::TEXTURE_2D, Pixel::RGB888, 100, 100); } return Texture(); // empty handle } private: - unsigned int mTotalPageNumber; - bool mValidTexture; + unsigned int mTotalPageNumber; + bool mValidTexture; }; #include @@ -421,14 +604,14 @@ int UtcDaliAccessibilityPageTurnViewConstructor(void) { ToolkitTestApplication application; - auto testpagefactory = TestPageFactory(); - auto vector2 = Vector2( 1.0, 1.0 ); - auto pageturnlandscapeview = PageTurnLandscapeView::New( testpagefactory, vector2 ); - DALI_TEST_CHECK( pageturnlandscapeview ); + auto testpagefactory = TestPageFactory(); + auto vector2 = Vector2(1.0, 1.0); + auto pageturnlandscapeview = PageTurnLandscapeView::New(testpagefactory, vector2); + DALI_TEST_CHECK(pageturnlandscapeview); - auto accessible = Dali::Accessibility::Accessible::Get( pageturnlandscapeview ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::PAGE_TAB_LIST, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(pageturnlandscapeview); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::PAGE_TAB_LIST, TEST_LOCATION); END_TEST; } @@ -438,11 +621,11 @@ int UtcDaliAccessibilityGaussianBlurViewConstructor(void) ToolkitTestApplication application; auto gaussianblurview = GaussianBlurView::New(); - DALI_TEST_CHECK( gaussianblurview ); + DALI_TEST_CHECK(gaussianblurview); - auto accessible = Dali::Accessibility::Accessible::Get( gaussianblurview ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(gaussianblurview); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION); END_TEST; } @@ -452,27 +635,27 @@ int UtcDaliAccessibilityShadowViewConstructor(void) ToolkitTestApplication application; auto shadowview = ShadowView::New(); - DALI_TEST_CHECK( shadowview ); + DALI_TEST_CHECK(shadowview); - auto accessible = Dali::Accessibility::Accessible::Get( shadowview ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(shadowview); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION); END_TEST; } -#include #include +#include int UtcDaliAccessibilityScrollableConstructor(void) { ToolkitTestApplication application; auto scrollview = ScrollView::New(); - DALI_TEST_CHECK( scrollview ); + DALI_TEST_CHECK(scrollview); - auto accessible = Dali::Accessibility::Accessible::Get( scrollview ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::SCROLL_PANE, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(scrollview); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::SCROLL_PANE, TEST_LOCATION); END_TEST; } @@ -483,11 +666,11 @@ int UtcDaliAccessibilityMagnifierConstructor(void) ToolkitTestApplication application; auto magnifier = Magnifier::New(); - DALI_TEST_CHECK( magnifier ); + DALI_TEST_CHECK(magnifier); - auto accessible = Dali::Accessibility::Accessible::Get( magnifier ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(magnifier); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::FILLER, TEST_LOCATION); END_TEST; } @@ -496,12 +679,12 @@ int UtcDaliAccessibilityTableViewConstructor(void) { ToolkitTestApplication application; - auto tableview = TableView::New( 10, 10 ); - DALI_TEST_CHECK( tableview ); + auto tableview = TableView::New(10, 10); + DALI_TEST_CHECK(tableview); - auto accessible = Dali::Accessibility::Accessible::Get( tableview ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::TABLE, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(tableview); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::TABLE, TEST_LOCATION); END_TEST; } @@ -512,45 +695,45 @@ int UtcDaliAccessibilityBloomViewConstructor(void) ToolkitTestApplication application; auto bloomview = BloomView::New(); - DALI_TEST_CHECK( bloomview ); + DALI_TEST_CHECK(bloomview); - auto accessible = Dali::Accessibility::Accessible::Get( bloomview ); - DALI_TEST_CHECK( accessible ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::ANIMATION, TEST_LOCATION ); + auto accessible = Dali::Accessibility::Accessible::Get(bloomview); + DALI_TEST_CHECK(accessible); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::ANIMATION, TEST_LOCATION); END_TEST; } -#include #include +#include int UtcDaliAccessibilityTextAnchor(void) { ToolkitTestApplication application; auto textanchor = TextAnchor::New(); - DALI_TEST_CHECK( textanchor ); + DALI_TEST_CHECK(textanchor); auto textlabel = TextLabel::New(); - DALI_TEST_CHECK( textlabel ); + DALI_TEST_CHECK(textlabel); - Dali::Accessibility::TestEnableSC( true ); + Dali::Accessibility::TestEnableSC(true); textlabel.Add(textanchor); - auto accessible = Dali::Accessibility::Accessible::Get( textanchor ); - DALI_TEST_CHECK( accessible ); - auto hyperlink = dynamic_cast< Dali::Accessibility::Hyperlink* >( accessible ); - DALI_TEST_CHECK( hyperlink ); - textanchor.SetProperty( Toolkit::TextAnchor::Property::URI, "https://www.tizen.org" ); - DALI_TEST_EQUALS( hyperlink->IsValid(), true, TEST_LOCATION ); - auto action = dynamic_cast( accessible ); + auto accessible = Dali::Accessibility::Accessible::Get(textanchor); + DALI_TEST_CHECK(accessible); + auto hyperlink = dynamic_cast(accessible); + DALI_TEST_CHECK(hyperlink); + textanchor.SetProperty(Toolkit::TextAnchor::Property::URI, "https://www.tizen.org"); + DALI_TEST_EQUALS(hyperlink->IsValid(), true, TEST_LOCATION); + auto action = dynamic_cast(accessible); // activation of valid hyperlink - DALI_TEST_CHECK( action->DoAction( "accessibilityActivated" ) ); + DALI_TEST_CHECK(action->DoAction("accessibilityActivated")); // making hyperlink invalid - textanchor.SetProperty( Toolkit::TextAnchor::Property::URI, "" ); - DALI_TEST_EQUALS( hyperlink->IsValid(), false, TEST_LOCATION ); - DALI_TEST_CHECK( !action->DoAction( "accessibilityActivated" ) ); + textanchor.SetProperty(Toolkit::TextAnchor::Property::URI, ""); + DALI_TEST_EQUALS(hyperlink->IsValid(), false, TEST_LOCATION); + DALI_TEST_CHECK(!action->DoAction("accessibilityActivated")); - Dali::Accessibility::TestEnableSC( false ); + Dali::Accessibility::TestEnableSC(false); END_TEST; } @@ -560,43 +743,43 @@ int UtcDaliAccessibilityTextField(void) ToolkitTestApplication application; auto textfield = TextField::New(); - DALI_TEST_CHECK( textfield ); + DALI_TEST_CHECK(textfield); - textfield.SetProperty(Actor::Property::NAME, "test" ); - DALI_TEST_EQUALS( textfield.GetProperty(Actor::Property::NAME), "test", TEST_LOCATION ); + textfield.SetProperty(Actor::Property::NAME, "test"); + DALI_TEST_EQUALS(textfield.GetProperty(Actor::Property::NAME), "test", TEST_LOCATION); - auto accessible = Dali::Accessibility::Accessible::Get( textfield ); - DALI_TEST_CHECK( accessible ); + auto accessible = Dali::Accessibility::Accessible::Get(textfield); + DALI_TEST_CHECK(accessible); - DALI_TEST_EQUALS( accessible->GetName(), "", TEST_LOCATION ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::ENTRY, TEST_LOCATION ); + DALI_TEST_EQUALS(accessible->GetName(), "", TEST_LOCATION); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::ENTRY, TEST_LOCATION); auto states = accessible->GetStates(); - DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::EDITABLE ] ), true, TEST_LOCATION ); - - Dali::Accessibility::TestEnableSC( true ); - - textfield.SetProperty( Toolkit::TextField::Property::TEXT, "test" ); - auto text = dynamic_cast< Dali::Accessibility::Text* >( accessible ); - DALI_TEST_CHECK( text ); - DALI_TEST_EQUALS( text->GetText( 0, 10 ), "", TEST_LOCATION ); - DALI_TEST_EQUALS( text->SetCursorOffset(100), false, TEST_LOCATION ); - DALI_TEST_EQUALS( text->SetCursorOffset(2), true, TEST_LOCATION ); - DALI_TEST_EQUALS( text->GetCursorOffset(), 2, TEST_LOCATION ); - - auto editabletext = dynamic_cast< Dali::Accessibility::EditableText* >( accessible ); - DALI_TEST_CHECK( editabletext ); - DALI_TEST_EQUALS( editabletext->CopyText( 3, 1 ), false, TEST_LOCATION ); - DALI_TEST_EQUALS( editabletext->CopyText( 1, 3 ), true, TEST_LOCATION ); - DALI_TEST_EQUALS( editabletext->CutText( 3, 1 ), false, TEST_LOCATION ); - DALI_TEST_EQUALS( editabletext->CutText( 1, 3 ), true, TEST_LOCATION ); - DALI_TEST_EQUALS( text->GetText( 0, 1 ), "t", TEST_LOCATION ); - - auto range = text->GetRangeOfSelection( 1 ); - DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION ); - DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION ); - DALI_TEST_EQUALS( range.content, "", TEST_LOCATION ); - DALI_TEST_EQUALS( text->SetRangeOfSelection( 1, 0, 1 ), false, TEST_LOCATION ); - DALI_TEST_EQUALS( text->RemoveSelection( 1 ), false, TEST_LOCATION ); + DALI_TEST_EQUALS(static_cast(states[Accessibility::State::EDITABLE]), true, TEST_LOCATION); + + Dali::Accessibility::TestEnableSC(true); + + textfield.SetProperty(Toolkit::TextField::Property::TEXT, "test"); + auto text = dynamic_cast(accessible); + DALI_TEST_CHECK(text); + DALI_TEST_EQUALS(text->GetText(0, 10), "", TEST_LOCATION); + DALI_TEST_EQUALS(text->SetCursorOffset(100), false, TEST_LOCATION); + DALI_TEST_EQUALS(text->SetCursorOffset(2), true, TEST_LOCATION); + DALI_TEST_EQUALS(text->GetCursorOffset(), 2, TEST_LOCATION); + + auto editabletext = dynamic_cast(accessible); + DALI_TEST_CHECK(editabletext); + DALI_TEST_EQUALS(editabletext->CopyText(3, 1), false, TEST_LOCATION); + DALI_TEST_EQUALS(editabletext->CopyText(1, 3), true, TEST_LOCATION); + DALI_TEST_EQUALS(editabletext->CutText(3, 1), false, TEST_LOCATION); + DALI_TEST_EQUALS(editabletext->CutText(1, 3), true, TEST_LOCATION); + DALI_TEST_EQUALS(text->GetText(0, 1), "t", TEST_LOCATION); + + auto range = text->GetRangeOfSelection(1); + DALI_TEST_EQUALS(range.startOffset, 0, TEST_LOCATION); + DALI_TEST_EQUALS(range.endOffset, 0, TEST_LOCATION); + DALI_TEST_EQUALS(range.content, "", TEST_LOCATION); + DALI_TEST_EQUALS(text->SetRangeOfSelection(1, 0, 1), false, TEST_LOCATION); + DALI_TEST_EQUALS(text->RemoveSelection(1), false, TEST_LOCATION); // Insert into empty field DALI_TEST_EQUALS(editabletext->SetTextContents(""), true, TEST_LOCATION); @@ -615,52 +798,52 @@ int UtcDaliAccessibilityTextField(void) DALI_TEST_EQUALS(editabletext->DeleteText(1, 5), true, TEST_LOCATION); DALI_TEST_EQUALS(text->GetText(0, 2), "af", TEST_LOCATION); - auto hypertext = dynamic_cast< Dali::Accessibility::Hypertext* >( accessible ); - DALI_TEST_CHECK( hypertext ); + auto hypertext = dynamic_cast(accessible); + DALI_TEST_CHECK(hypertext); // text without the anchors markup and ENABLE_MARKUP property set (by default) to false - DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION ); + DALI_TEST_EQUALS(hypertext->GetLinkCount(), 0, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(0) == nullptr, true, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(5) == nullptr, true, TEST_LOCATION); // text with the anchors markup and ENABLE_MARKUP property set (by default) to false - textfield.SetProperty( Toolkit::TextField::Property::TEXT, "12345anchor112345veryveryveryveryveryveryveryverylonganchor212345anchor312345" ); - DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION ); + textfield.SetProperty(Toolkit::TextField::Property::TEXT, "12345anchor112345veryveryveryveryveryveryveryverylonganchor212345anchor312345"); + DALI_TEST_EQUALS(hypertext->GetLinkCount(), 0, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(0) == nullptr, true, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(5) == nullptr, true, TEST_LOCATION); // text with the anchors markup and ENABLE_MARKUP property set to true - textfield.SetProperty( Toolkit::TextField::Property::ENABLE_MARKUP, true); - DALI_TEST_EQUALS( hypertext->GetLinkCount(), 3, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), 0, TEST_LOCATION ); //1st anchor index - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 17 ), 1, TEST_LOCATION ); //2nd anchor index - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 66 ), 2, TEST_LOCATION ); //3rd anchor index - DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION ); - auto hyperlink = hypertext->GetLink( 0 ); - DALI_TEST_CHECK ( hyperlink ); - DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 5, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 12, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetAnchorCount(), 1, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetAnchorUri( 0 ), "https://www.tizen.org", TEST_LOCATION ); - auto anchorAccessible = hyperlink->GetAnchorAccessible( 0 ); - DALI_TEST_EQUALS( hyperlink == anchorAccessible, true, TEST_LOCATION ); - hyperlink = hypertext->GetLink( 1 ); - DALI_TEST_CHECK ( hyperlink ); - DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 17, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 60, TEST_LOCATION ); - hyperlink = hypertext->GetLink( 2 ); - DALI_TEST_CHECK ( hyperlink ); - DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 65, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 72, TEST_LOCATION ); - - Dali::Accessibility::TestEnableSC( false ); + textfield.SetProperty(Toolkit::TextField::Property::ENABLE_MARKUP, true); + DALI_TEST_EQUALS(hypertext->GetLinkCount(), 3, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), 0, TEST_LOCATION); //1st anchor index + DALI_TEST_EQUALS(hypertext->GetLinkIndex(17), 1, TEST_LOCATION); //2nd anchor index + DALI_TEST_EQUALS(hypertext->GetLinkIndex(66), 2, TEST_LOCATION); //3rd anchor index + DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION); + auto hyperlink = hypertext->GetLink(0); + DALI_TEST_CHECK(hyperlink); + DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 5, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 12, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetAnchorCount(), 1, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetAnchorUri(0), "https://www.tizen.org", TEST_LOCATION); + auto anchorAccessible = hyperlink->GetAnchorAccessible(0); + DALI_TEST_EQUALS(hyperlink == anchorAccessible, true, TEST_LOCATION); + hyperlink = hypertext->GetLink(1); + DALI_TEST_CHECK(hyperlink); + DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 17, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 60, TEST_LOCATION); + hyperlink = hypertext->GetLink(2); + DALI_TEST_CHECK(hyperlink); + DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 65, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 72, TEST_LOCATION); + + Dali::Accessibility::TestEnableSC(false); END_TEST; } @@ -671,43 +854,43 @@ int UtcDaliAccessibilityTextEditor(void) ToolkitTestApplication application; auto texteditor = TextEditor::New(); - DALI_TEST_CHECK( texteditor ); + DALI_TEST_CHECK(texteditor); - texteditor.SetProperty(Actor::Property::NAME, "test" ); - DALI_TEST_EQUALS( texteditor.GetProperty(Actor::Property::NAME), "test", TEST_LOCATION ); + texteditor.SetProperty(Actor::Property::NAME, "test"); + DALI_TEST_EQUALS(texteditor.GetProperty(Actor::Property::NAME), "test", TEST_LOCATION); - auto accessible = Dali::Accessibility::Accessible::Get( texteditor ); - DALI_TEST_CHECK( accessible ); + auto accessible = Dali::Accessibility::Accessible::Get(texteditor); + DALI_TEST_CHECK(accessible); - DALI_TEST_EQUALS( accessible->GetName(), "", TEST_LOCATION ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::ENTRY, TEST_LOCATION ); + DALI_TEST_EQUALS(accessible->GetName(), "", TEST_LOCATION); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::ENTRY, TEST_LOCATION); auto states = accessible->GetStates(); - DALI_TEST_EQUALS( static_cast< unsigned int >( states[ Accessibility::State::EDITABLE ] ), true, TEST_LOCATION ); - - Dali::Accessibility::TestEnableSC( true ); - - texteditor.SetProperty( Toolkit::TextEditor::Property::TEXT, "test" ); - auto text = dynamic_cast< Dali::Accessibility::Text* >( accessible ); - DALI_TEST_CHECK( text ); - DALI_TEST_EQUALS( text->GetText( 0, 10 ), "", TEST_LOCATION ); - DALI_TEST_EQUALS( text->SetCursorOffset(100), false, TEST_LOCATION ); - DALI_TEST_EQUALS( text->SetCursorOffset(2), true, TEST_LOCATION ); - DALI_TEST_EQUALS( text->GetCursorOffset(), 2, TEST_LOCATION ); - - auto editabletext = dynamic_cast< Dali::Accessibility::EditableText* >( accessible ); - DALI_TEST_CHECK( editabletext ); - DALI_TEST_EQUALS( editabletext->CopyText( 3, 1 ), false, TEST_LOCATION ); - DALI_TEST_EQUALS( editabletext->CopyText( 1, 3 ), true, TEST_LOCATION ); - DALI_TEST_EQUALS( editabletext->CutText( 3, 1 ), false, TEST_LOCATION ); - DALI_TEST_EQUALS( editabletext->CutText( 1, 3 ), true, TEST_LOCATION ); - DALI_TEST_EQUALS( text->GetText( 0, 1 ), "t", TEST_LOCATION ); - - auto range = text->GetRangeOfSelection( 1 ); - DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION ); - DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION ); - DALI_TEST_EQUALS( range.content, "", TEST_LOCATION ); - DALI_TEST_EQUALS( text->SetRangeOfSelection( 1, 0, 1 ), false, TEST_LOCATION ); - DALI_TEST_EQUALS( text->RemoveSelection( 1 ), false, TEST_LOCATION ); + DALI_TEST_EQUALS(static_cast(states[Accessibility::State::EDITABLE]), true, TEST_LOCATION); + + Dali::Accessibility::TestEnableSC(true); + + texteditor.SetProperty(Toolkit::TextEditor::Property::TEXT, "test"); + auto text = dynamic_cast(accessible); + DALI_TEST_CHECK(text); + DALI_TEST_EQUALS(text->GetText(0, 10), "", TEST_LOCATION); + DALI_TEST_EQUALS(text->SetCursorOffset(100), false, TEST_LOCATION); + DALI_TEST_EQUALS(text->SetCursorOffset(2), true, TEST_LOCATION); + DALI_TEST_EQUALS(text->GetCursorOffset(), 2, TEST_LOCATION); + + auto editabletext = dynamic_cast(accessible); + DALI_TEST_CHECK(editabletext); + DALI_TEST_EQUALS(editabletext->CopyText(3, 1), false, TEST_LOCATION); + DALI_TEST_EQUALS(editabletext->CopyText(1, 3), true, TEST_LOCATION); + DALI_TEST_EQUALS(editabletext->CutText(3, 1), false, TEST_LOCATION); + DALI_TEST_EQUALS(editabletext->CutText(1, 3), true, TEST_LOCATION); + DALI_TEST_EQUALS(text->GetText(0, 1), "t", TEST_LOCATION); + + auto range = text->GetRangeOfSelection(1); + DALI_TEST_EQUALS(range.startOffset, 0, TEST_LOCATION); + DALI_TEST_EQUALS(range.endOffset, 0, TEST_LOCATION); + DALI_TEST_EQUALS(range.content, "", TEST_LOCATION); + DALI_TEST_EQUALS(text->SetRangeOfSelection(1, 0, 1), false, TEST_LOCATION); + DALI_TEST_EQUALS(text->RemoveSelection(1), false, TEST_LOCATION); // Insert into empty field DALI_TEST_EQUALS(editabletext->SetTextContents(""), true, TEST_LOCATION); @@ -726,52 +909,52 @@ int UtcDaliAccessibilityTextEditor(void) DALI_TEST_EQUALS(editabletext->DeleteText(1, 5), true, TEST_LOCATION); DALI_TEST_EQUALS(text->GetText(0, 2), "af", TEST_LOCATION); - auto hypertext = dynamic_cast< Dali::Accessibility::Hypertext* >( accessible ); - DALI_TEST_CHECK( hypertext ); + auto hypertext = dynamic_cast(accessible); + DALI_TEST_CHECK(hypertext); // text without the anchors markup and ENABLE_MARKUP property set (by default) to false - DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION ); + DALI_TEST_EQUALS(hypertext->GetLinkCount(), 0, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(0) == nullptr, true, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(5) == nullptr, true, TEST_LOCATION); // text with the anchors markup and ENABLE_MARKUP property set (by default) to false - texteditor.SetProperty( Toolkit::TextEditor::Property::TEXT, "12345anchor112345veryveryveryveryveryveryveryverylonganchor212345anchor312345" ); - DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION ); + texteditor.SetProperty(Toolkit::TextEditor::Property::TEXT, "12345anchor112345veryveryveryveryveryveryveryverylonganchor212345anchor312345"); + DALI_TEST_EQUALS(hypertext->GetLinkCount(), 0, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(0) == nullptr, true, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(5) == nullptr, true, TEST_LOCATION); // text with the anchors markup and ENABLE_MARKUP property set to true - texteditor.SetProperty( Toolkit::TextEditor::Property::ENABLE_MARKUP, true); - DALI_TEST_EQUALS( hypertext->GetLinkCount(), 3, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), 0, TEST_LOCATION ); //1st anchor index - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 17 ), 1, TEST_LOCATION ); //2nd anchor index - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 66 ), 2, TEST_LOCATION ); //3rd anchor index - DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION ); - auto hyperlink = hypertext->GetLink( 0 ); - DALI_TEST_CHECK ( hyperlink ); - DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 5, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 12, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetAnchorCount(), 1, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetAnchorUri( 0 ), "https://www.tizen.org", TEST_LOCATION ); - auto anchorAccessible = hyperlink->GetAnchorAccessible( 0 ); - DALI_TEST_EQUALS( hyperlink == anchorAccessible, true, TEST_LOCATION ); - hyperlink = hypertext->GetLink( 1 ); - DALI_TEST_CHECK ( hyperlink ); - DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 17, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 60, TEST_LOCATION ); - hyperlink = hypertext->GetLink( 2 ); - DALI_TEST_CHECK ( hyperlink ); - DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 65, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 72, TEST_LOCATION ); - - Dali::Accessibility::TestEnableSC( false ); + texteditor.SetProperty(Toolkit::TextEditor::Property::ENABLE_MARKUP, true); + DALI_TEST_EQUALS(hypertext->GetLinkCount(), 3, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), 0, TEST_LOCATION); //1st anchor index + DALI_TEST_EQUALS(hypertext->GetLinkIndex(17), 1, TEST_LOCATION); //2nd anchor index + DALI_TEST_EQUALS(hypertext->GetLinkIndex(66), 2, TEST_LOCATION); //3rd anchor index + DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION); + auto hyperlink = hypertext->GetLink(0); + DALI_TEST_CHECK(hyperlink); + DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 5, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 12, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetAnchorCount(), 1, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetAnchorUri(0), "https://www.tizen.org", TEST_LOCATION); + auto anchorAccessible = hyperlink->GetAnchorAccessible(0); + DALI_TEST_EQUALS(hyperlink == anchorAccessible, true, TEST_LOCATION); + hyperlink = hypertext->GetLink(1); + DALI_TEST_CHECK(hyperlink); + DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 17, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 60, TEST_LOCATION); + hyperlink = hypertext->GetLink(2); + DALI_TEST_CHECK(hyperlink); + DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 65, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 72, TEST_LOCATION); + + Dali::Accessibility::TestEnableSC(false); END_TEST; } @@ -781,80 +964,80 @@ int UtcDaliAccessibilityTextLabel(void) ToolkitTestApplication application; auto textlabel = TextLabel::New(); - DALI_TEST_CHECK( textlabel ); - - textlabel.SetProperty(Actor::Property::NAME, "test" ); - DALI_TEST_EQUALS( textlabel.GetProperty(Actor::Property::NAME), "test", TEST_LOCATION ); - - auto accessible = Dali::Accessibility::Accessible::Get( textlabel ); - DALI_TEST_CHECK( accessible ); + DALI_TEST_CHECK(textlabel); - DALI_TEST_EQUALS( accessible->GetName(), "test", TEST_LOCATION ); - DALI_TEST_EQUALS( accessible->GetRole(), Accessibility::Role::LABEL, TEST_LOCATION ); + textlabel.SetProperty(Actor::Property::NAME, "test"); + DALI_TEST_EQUALS(textlabel.GetProperty(Actor::Property::NAME), "test", TEST_LOCATION); - Dali::Accessibility::TestEnableSC( true ); + auto accessible = Dali::Accessibility::Accessible::Get(textlabel); + DALI_TEST_CHECK(accessible); - textlabel.SetProperty( Toolkit::TextLabel::Property::TEXT, "test" ); - auto text = dynamic_cast< Dali::Accessibility::Text* >( accessible ); - DALI_TEST_CHECK( text ); - DALI_TEST_EQUALS( text->GetText( 0, 10 ), "", TEST_LOCATION ); - DALI_TEST_EQUALS( text->GetText( 0, 4 ), "test", TEST_LOCATION ); - DALI_TEST_EQUALS( text->SetCursorOffset(0), false, TEST_LOCATION ); - DALI_TEST_EQUALS( text->GetCursorOffset(), 0, TEST_LOCATION ); + DALI_TEST_EQUALS(accessible->GetName(), "test", TEST_LOCATION); + DALI_TEST_EQUALS(accessible->GetRole(), Accessibility::Role::LABEL, TEST_LOCATION); - auto range = text->GetRangeOfSelection( 1 ); - DALI_TEST_EQUALS( range.startOffset, 0, TEST_LOCATION ); - DALI_TEST_EQUALS( range.endOffset, 0, TEST_LOCATION ); - DALI_TEST_EQUALS( range.content, "", TEST_LOCATION ); - DALI_TEST_EQUALS( text->SetRangeOfSelection( 1, 0, 1 ), false, TEST_LOCATION ); - DALI_TEST_EQUALS( text->RemoveSelection( 1 ), false, TEST_LOCATION ); + Dali::Accessibility::TestEnableSC(true); - auto hypertext = dynamic_cast< Dali::Accessibility::Hypertext* >( accessible ); - DALI_TEST_CHECK( hypertext ); + textlabel.SetProperty(Toolkit::TextLabel::Property::TEXT, "test"); + auto text = dynamic_cast(accessible); + DALI_TEST_CHECK(text); + DALI_TEST_EQUALS(text->GetText(0, 10), "", TEST_LOCATION); + DALI_TEST_EQUALS(text->GetText(0, 4), "test", TEST_LOCATION); + DALI_TEST_EQUALS(text->SetCursorOffset(0), false, TEST_LOCATION); + DALI_TEST_EQUALS(text->GetCursorOffset(), 0, TEST_LOCATION); + + auto range = text->GetRangeOfSelection(1); + DALI_TEST_EQUALS(range.startOffset, 0, TEST_LOCATION); + DALI_TEST_EQUALS(range.endOffset, 0, TEST_LOCATION); + DALI_TEST_EQUALS(range.content, "", TEST_LOCATION); + DALI_TEST_EQUALS(text->SetRangeOfSelection(1, 0, 1), false, TEST_LOCATION); + DALI_TEST_EQUALS(text->RemoveSelection(1), false, TEST_LOCATION); + + auto hypertext = dynamic_cast(accessible); + DALI_TEST_CHECK(hypertext); // text without the anchors markup and ENABLE_MARKUP property set (by default) to false - DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION ); + DALI_TEST_EQUALS(hypertext->GetLinkCount(), 0, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(0) == nullptr, true, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(5) == nullptr, true, TEST_LOCATION); // text with the anchors markup and ENABLE_MARKUP property set (by default) to false - textlabel.SetProperty( Toolkit::TextLabel::Property::TEXT, "12345anchor112345veryveryveryveryveryveryveryverylonganchor212345anchor312345" ); - DALI_TEST_EQUALS( hypertext->GetLinkCount(), 0, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( 0 ) == nullptr, true, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLink( 5 ) == nullptr, true, TEST_LOCATION ); + textlabel.SetProperty(Toolkit::TextLabel::Property::TEXT, "12345anchor112345veryveryveryveryveryveryveryverylonganchor212345anchor312345"); + DALI_TEST_EQUALS(hypertext->GetLinkCount(), 0, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(0) == nullptr, true, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLink(5) == nullptr, true, TEST_LOCATION); // text with the anchors markup and ENABLE_MARKUP property set to true - textlabel.SetProperty( Toolkit::TextLabel::Property::ENABLE_MARKUP, true); - DALI_TEST_EQUALS( hypertext->GetLinkCount(), 3, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( -1 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 0 ), -1, TEST_LOCATION ); - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 5 ), 0, TEST_LOCATION ); //1st anchor index - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 17 ), 1, TEST_LOCATION ); //2nd anchor index - DALI_TEST_EQUALS( hypertext->GetLinkIndex( 66 ), 2, TEST_LOCATION ); //3rd anchor index - DALI_TEST_EQUALS( hypertext->GetLink( -1 ) == nullptr, true, TEST_LOCATION ); - auto hyperlink = hypertext->GetLink( 0 ); - DALI_TEST_CHECK ( hyperlink ); - DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 5, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 12, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetAnchorCount(), 1, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetAnchorUri( 0 ), "https://www.tizen.org", TEST_LOCATION ); - auto anchorAccessible = hyperlink->GetAnchorAccessible( 0 ); - DALI_TEST_EQUALS( hyperlink == anchorAccessible, true, TEST_LOCATION ); - hyperlink = hypertext->GetLink( 1 ); - DALI_TEST_CHECK ( hyperlink ); - DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 17, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 60, TEST_LOCATION ); - hyperlink = hypertext->GetLink( 2 ); - DALI_TEST_CHECK ( hyperlink ); - DALI_TEST_EQUALS( hyperlink->GetStartIndex(), 65, TEST_LOCATION ); - DALI_TEST_EQUALS( hyperlink->GetEndIndex(), 72, TEST_LOCATION ); - - Dali::Accessibility::TestEnableSC( false ); + textlabel.SetProperty(Toolkit::TextLabel::Property::ENABLE_MARKUP, true); + DALI_TEST_EQUALS(hypertext->GetLinkCount(), 3, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(-1), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(0), -1, TEST_LOCATION); + DALI_TEST_EQUALS(hypertext->GetLinkIndex(5), 0, TEST_LOCATION); //1st anchor index + DALI_TEST_EQUALS(hypertext->GetLinkIndex(17), 1, TEST_LOCATION); //2nd anchor index + DALI_TEST_EQUALS(hypertext->GetLinkIndex(66), 2, TEST_LOCATION); //3rd anchor index + DALI_TEST_EQUALS(hypertext->GetLink(-1) == nullptr, true, TEST_LOCATION); + auto hyperlink = hypertext->GetLink(0); + DALI_TEST_CHECK(hyperlink); + DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 5, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 12, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetAnchorCount(), 1, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetAnchorUri(0), "https://www.tizen.org", TEST_LOCATION); + auto anchorAccessible = hyperlink->GetAnchorAccessible(0); + DALI_TEST_EQUALS(hyperlink == anchorAccessible, true, TEST_LOCATION); + hyperlink = hypertext->GetLink(1); + DALI_TEST_CHECK(hyperlink); + DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 17, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 60, TEST_LOCATION); + hyperlink = hypertext->GetLink(2); + DALI_TEST_CHECK(hyperlink); + DALI_TEST_EQUALS(hyperlink->GetStartIndex(), 65, TEST_LOCATION); + DALI_TEST_EQUALS(hyperlink->GetEndIndex(), 72, TEST_LOCATION); + + Dali::Accessibility::TestEnableSC(false); END_TEST; } @@ -865,12 +1048,12 @@ int UtcDaliAccessibilityNavigationViewConstructor(void) ToolkitTestApplication application; auto navigationview = NavigationView::New(); - DALI_TEST_CHECK( navigationview ); + DALI_TEST_CHECK(navigationview); - auto accessible = Dali::Accessibility::Accessible::Get( navigationview ); - DALI_TEST_CHECK( accessible ); + auto accessible = Dali::Accessibility::Accessible::Get(navigationview); + DALI_TEST_CHECK(accessible); - DALI_TEST_EQUALS( accessible->GetRole(), Dali::Accessibility::Role::FILLER, TEST_LOCATION ); + DALI_TEST_EQUALS(accessible->GetRole(), Dali::Accessibility::Role::FILLER, TEST_LOCATION); END_TEST; } @@ -880,12 +1063,12 @@ int UtcDaliAccessibilityVideoViewConstructor(void) ToolkitTestApplication application; auto videoview = VideoView::New(); - DALI_TEST_CHECK( videoview ); + DALI_TEST_CHECK(videoview); - auto accessible = Dali::Accessibility::Accessible::Get( videoview ); - DALI_TEST_CHECK( accessible ); + auto accessible = Dali::Accessibility::Accessible::Get(videoview); + DALI_TEST_CHECK(accessible); - DALI_TEST_EQUALS( accessible->GetRole(), Dali::Accessibility::Role::VIDEO, TEST_LOCATION ); + DALI_TEST_EQUALS(accessible->GetRole(), Dali::Accessibility::Role::VIDEO, TEST_LOCATION); END_TEST; } diff --git a/dali-toolkit/devel-api/controls/control-devel.cpp b/dali-toolkit/devel-api/controls/control-devel.cpp index ef1265b..7aa3ac3 100644 --- a/dali-toolkit/devel-api/controls/control-devel.cpp +++ b/dali-toolkit/devel-api/controls/control-devel.cpp @@ -256,22 +256,56 @@ Dali::Accessibility::ReadingInfoTypes GetAccessibilityReadingInfoType(Toolkit::C bool ClearAccessibilityHighlight(Toolkit::Control control) { - return GetControlImplementation(control).GetAccessibleObject()->ClearHighlight(); + auto* controlAccessible = GetControlImplementation(control).GetAccessibleObject(); + if(DALI_LIKELY(controlAccessible)) + { + return controlAccessible->ClearHighlight(); + } + return false; } bool GrabAccessibilityHighlight(Toolkit::Control control) { - return GetControlImplementation(control).GetAccessibleObject()->GrabHighlight(); + auto* controlAccessible = GetControlImplementation(control).GetAccessibleObject(); + if(DALI_LIKELY(controlAccessible)) + { + return controlAccessible->GrabHighlight(); + } + return false; } Dali::Accessibility::States GetAccessibilityStates(Toolkit::Control control) { - return GetControlImplementation(control).GetAccessibleObject()->GetStates(); + auto* controlAccessible = GetControlImplementation(control).GetAccessibleObject(); + if(DALI_LIKELY(controlAccessible)) + { + return controlAccessible->GetStates(); + } + return Dali::Accessibility::States{}; } void NotifyAccessibilityStateChange(Toolkit::Control control, Dali::Accessibility::States states, bool recurse) { - GetControlImplementation(control).GetAccessibleObject()->NotifyAccessibilityStateChange(std::move(states), recurse); + auto* controlAccessible = GetControlImplementation(control).GetAccessibleObject(); + if(DALI_LIKELY(controlAccessible)) + { + controlAccessible->NotifyAccessibilityStateChange(std::move(states), recurse); + } +} + +bool IsAccessibleCreated(Toolkit::Control control) +{ + return GetControlImplementation(control).IsAccessibleCreated(); +} + +void EnableCreateAccessible(Toolkit::Control control, bool enable) +{ + GetControlImplementation(control).EnableCreateAccessible(enable); +} + +bool IsCreateAccessibleEnabled(Toolkit::Control control) +{ + return GetControlImplementation(control).IsCreateAccessibleEnabled(); } } // namespace DevelControl diff --git a/dali-toolkit/devel-api/controls/control-devel.h b/dali-toolkit/devel-api/controls/control-devel.h index fe95c70..edb782f 100644 --- a/dali-toolkit/devel-api/controls/control-devel.h +++ b/dali-toolkit/devel-api/controls/control-devel.h @@ -597,6 +597,31 @@ DALI_TOOLKIT_API Dali::Accessibility::States GetAccessibilityStates(Toolkit::Con */ DALI_TOOLKIT_API void NotifyAccessibilityStateChange(Toolkit::Control control, Dali::Accessibility::States states, bool recurse); +/** + * @brief The method to get the control's accessibility created or not. + * + * @param[in] control object to append attribute to + * @return True if accessible were created. False otherwise. + */ +DALI_TOOLKIT_API bool IsAccessibleCreated(Toolkit::Control control); + +/** + * @brief The method to set creatable of control's accessibility. + * @note This method doesn't remove that already created accessible. + * + * @param[in] control object to append attribute to + * @param[in] enable True if we allow to create accessible. False otherwise. + */ +DALI_TOOLKIT_API void EnableCreateAccessible(Toolkit::Control control, bool enable); + +/** + * @brief The method to get creatable of control's accessibility. + * + * @param[in] control object to append attribute to + * @return True if we allow to create accessible. False otherwise. + */ +DALI_TOOLKIT_API bool IsCreateAccessibleEnabled(Toolkit::Control control); + } // namespace DevelControl } // namespace Toolkit diff --git a/dali-toolkit/internal/controls/buttons/check-box-button-impl.cpp b/dali-toolkit/internal/controls/buttons/check-box-button-impl.cpp index 78a2794..574ef08 100644 --- a/dali-toolkit/internal/controls/buttons/check-box-button-impl.cpp +++ b/dali-toolkit/internal/controls/buttons/check-box-button-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -88,7 +88,7 @@ DevelControl::ControlAccessible* CheckBoxButton::CreateAccessibleObject() Dali::Accessibility::States CheckBoxButton::CheckBoxButtonAccessible::CalculateStates() { auto state = Button::ButtonAccessible::CalculateStates(); - auto self = Toolkit::Button::DownCast(Self()); + auto self = Toolkit::Button::DownCast(Self()); if(self.GetProperty(Toolkit::Button::Property::SELECTED)) { state[Dali::Accessibility::State::CHECKED] = true; @@ -101,7 +101,11 @@ void CheckBoxButton::OnStateChange(State newState) // TODO: replace it with OnPropertySet hook once Button::Property::SELECTED will be consistently used if((Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor() == Self()) && (newState == SELECTED_STATE || newState == UNSELECTED_STATE)) { - GetAccessibleObject()->EmitStateChanged(Dali::Accessibility::State::CHECKED, newState == SELECTED_STATE ? 1 : 0, 0); + auto* accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible)) + { + accessible->EmitStateChanged(Dali::Accessibility::State::CHECKED, newState == SELECTED_STATE ? 1 : 0, 0); + } } } diff --git a/dali-toolkit/internal/controls/buttons/push-button-impl.cpp b/dali-toolkit/internal/controls/buttons/push-button-impl.cpp index 9ff9531..dea0ee0 100644 --- a/dali-toolkit/internal/controls/buttons/push-button-impl.cpp +++ b/dali-toolkit/internal/controls/buttons/push-button-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -198,8 +198,8 @@ Property::Value PushButton::GetProperty(BaseObject* object, Property::Index prop Dali::Accessibility::States PushButton::PushButtonAccessible::CalculateStates() { - auto state = Button::ButtonAccessible::CalculateStates(); - auto self = Toolkit::Button::DownCast(Self()); + auto state = Button::ButtonAccessible::CalculateStates(); + auto self = Toolkit::Button::DownCast(Self()); state[Dali::Accessibility::State::PRESSED] = self.GetProperty(Toolkit::Button::Property::SELECTED); return state; } @@ -210,12 +210,14 @@ void PushButton::OnStateChange(State newState) if((Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor() == Self()) && (newState == SELECTED_STATE || newState == UNSELECTED_STATE)) { auto* accessible = GetAccessibleObject(); - - accessible->EmitStateChanged(Dali::Accessibility::State::PRESSED, newState == SELECTED_STATE ? 1 : 0, 0); - - if(Self().GetProperty(Toolkit::Button::Property::TOGGLABLE)) + if(DALI_LIKELY(accessible)) { - accessible->EmitStateChanged(Dali::Accessibility::State::CHECKED, newState == SELECTED_STATE ? 1 : 0, 0); + accessible->EmitStateChanged(Dali::Accessibility::State::PRESSED, newState == SELECTED_STATE ? 1 : 0, 0); + + if(Self().GetProperty(Toolkit::Button::Property::TOGGLABLE)) + { + accessible->EmitStateChanged(Dali::Accessibility::State::CHECKED, newState == SELECTED_STATE ? 1 : 0, 0); + } } } } diff --git a/dali-toolkit/internal/controls/buttons/radio-button-impl.cpp b/dali-toolkit/internal/controls/buttons/radio-button-impl.cpp index bf35f99..9aace1a 100644 --- a/dali-toolkit/internal/controls/buttons/radio-button-impl.cpp +++ b/dali-toolkit/internal/controls/buttons/radio-button-impl.cpp @@ -109,14 +109,18 @@ void RadioButton::OnStateChange(State newState) // TODO: replace it with OnPropertySet hook once Button::Property::SELECTED will be consistently used if((Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor() == Self()) && (newState == SELECTED_STATE || newState == UNSELECTED_STATE)) { - GetAccessibleObject()->EmitStateChanged(Dali::Accessibility::State::CHECKED, newState == SELECTED_STATE ? 1 : 0, 0); + auto* accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible)) + { + accessible->EmitStateChanged(Dali::Accessibility::State::CHECKED, newState == SELECTED_STATE ? 1 : 0, 0); + } } } Dali::Accessibility::States RadioButton::RadioButtonAccessible::CalculateStates() { auto state = Button::ButtonAccessible::CalculateStates(); - auto self = Toolkit::Button::DownCast(Self()); + auto self = Toolkit::Button::DownCast(Self()); if(self.GetProperty(Toolkit::Button::Property::SELECTED)) { diff --git a/dali-toolkit/internal/controls/buttons/toggle-button-impl.cpp b/dali-toolkit/internal/controls/buttons/toggle-button-impl.cpp index 1b6ef02..de6cbce 100644 --- a/dali-toolkit/internal/controls/buttons/toggle-button-impl.cpp +++ b/dali-toolkit/internal/controls/buttons/toggle-button-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -405,9 +405,11 @@ void ToggleButton::OnStateChange(State newState) if((Self() == Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor()) && (newState == SELECTED_STATE || newState == UNSELECTED_STATE)) { auto* accessible = GetAccessibleObject(); - - accessible->EmitStateChanged(Dali::Accessibility::State::CHECKED, mCurrentToggleIndex ? 1 : 0, 0); - accessible->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::DESCRIPTION); + if(DALI_LIKELY(accessible)) + { + accessible->EmitStateChanged(Dali::Accessibility::State::CHECKED, mCurrentToggleIndex ? 1 : 0, 0); + accessible->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::DESCRIPTION); + } } } diff --git a/dali-toolkit/internal/controls/control/control-data-impl.cpp b/dali-toolkit/internal/controls/control/control-data-impl.cpp index 79408a2..3b3d6aa 100644 --- a/dali-toolkit/internal/controls/control/control-data-impl.cpp +++ b/dali-toolkit/internal/controls/control/control-data-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -563,58 +563,61 @@ const Control::Impl& Control::Impl::Get(const Internal::Control& internalControl void Control::Impl::CheckHighlightedObjectGeometry() { - auto accessible = GetAccessibleObject(); - auto lastPosition = accessible->GetLastPosition(); - auto accessibleRect = accessible->GetExtents(Dali::Accessibility::CoordinateType::WINDOW); - auto rect = GetShowingGeometry(accessibleRect, accessible); - - switch(mAccessibilityLastScreenRelativeMoveType) + auto accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible)) { - case Dali::Accessibility::ScreenRelativeMoveType::OUTSIDE: - { - if(IsShowingGeometryOnScreen(rect)) - { - mAccessibilityLastScreenRelativeMoveType = Dali::Accessibility::ScreenRelativeMoveType::INSIDE; - } - break; - } - case Dali::Accessibility::ScreenRelativeMoveType::INSIDE: + auto lastPosition = accessible->GetLastPosition(); + auto accessibleRect = accessible->GetExtents(Dali::Accessibility::CoordinateType::WINDOW); + auto rect = GetShowingGeometry(accessibleRect, accessible); + + switch(mAccessibilityLastScreenRelativeMoveType) { - if(rect.width < 0 && accessibleRect.x != lastPosition.x) - { - mAccessibilityLastScreenRelativeMoveType = (accessibleRect.x < lastPosition.x) ? Dali::Accessibility::ScreenRelativeMoveType::OUTGOING_TOP_LEFT : Dali::Accessibility::ScreenRelativeMoveType::OUTGOING_BOTTOM_RIGHT; - } - if(rect.height < 0 && accessibleRect.y != lastPosition.y) + case Dali::Accessibility::ScreenRelativeMoveType::OUTSIDE: { - mAccessibilityLastScreenRelativeMoveType = (accessibleRect.y < lastPosition.y) ? Dali::Accessibility::ScreenRelativeMoveType::OUTGOING_TOP_LEFT : Dali::Accessibility::ScreenRelativeMoveType::OUTGOING_BOTTOM_RIGHT; + if(IsShowingGeometryOnScreen(rect)) + { + mAccessibilityLastScreenRelativeMoveType = Dali::Accessibility::ScreenRelativeMoveType::INSIDE; + } + break; } - // notify AT-clients on outgoing moves only - if(mAccessibilityLastScreenRelativeMoveType != Dali::Accessibility::ScreenRelativeMoveType::INSIDE) + case Dali::Accessibility::ScreenRelativeMoveType::INSIDE: { - accessible->EmitMovedOutOfScreen(mAccessibilityLastScreenRelativeMoveType); + if(rect.width < 0 && accessibleRect.x != lastPosition.x) + { + mAccessibilityLastScreenRelativeMoveType = (accessibleRect.x < lastPosition.x) ? Dali::Accessibility::ScreenRelativeMoveType::OUTGOING_TOP_LEFT : Dali::Accessibility::ScreenRelativeMoveType::OUTGOING_BOTTOM_RIGHT; + } + if(rect.height < 0 && accessibleRect.y != lastPosition.y) + { + mAccessibilityLastScreenRelativeMoveType = (accessibleRect.y < lastPosition.y) ? Dali::Accessibility::ScreenRelativeMoveType::OUTGOING_TOP_LEFT : Dali::Accessibility::ScreenRelativeMoveType::OUTGOING_BOTTOM_RIGHT; + } + // notify AT-clients on outgoing moves only + if(mAccessibilityLastScreenRelativeMoveType != Dali::Accessibility::ScreenRelativeMoveType::INSIDE) + { + accessible->EmitMovedOutOfScreen(mAccessibilityLastScreenRelativeMoveType); + } + break; } - break; - } - case Dali::Accessibility::ScreenRelativeMoveType::OUTGOING_TOP_LEFT: - case Dali::Accessibility::ScreenRelativeMoveType::OUTGOING_BOTTOM_RIGHT: - { - if(IsShowingGeometryOnScreen(rect)) + case Dali::Accessibility::ScreenRelativeMoveType::OUTGOING_TOP_LEFT: + case Dali::Accessibility::ScreenRelativeMoveType::OUTGOING_BOTTOM_RIGHT: { - mAccessibilityLastScreenRelativeMoveType = Dali::Accessibility::ScreenRelativeMoveType::INSIDE; + if(IsShowingGeometryOnScreen(rect)) + { + mAccessibilityLastScreenRelativeMoveType = Dali::Accessibility::ScreenRelativeMoveType::INSIDE; + } + else + { + mAccessibilityLastScreenRelativeMoveType = Dali::Accessibility::ScreenRelativeMoveType::OUTSIDE; + } + break; } - else + default: { - mAccessibilityLastScreenRelativeMoveType = Dali::Accessibility::ScreenRelativeMoveType::OUTSIDE; + break; } - break; - } - default: - { - break; } - } - accessible->SetLastPosition(Vector2(accessibleRect.x, accessibleRect.y)); + accessible->SetLastPosition(Vector2(accessibleRect.x, accessibleRect.y)); + } } void Control::Impl::RegisterAccessibilityPositionPropertyNotification() @@ -1384,10 +1387,13 @@ void Control::Impl::SetProperty(BaseObject* object, Property::Index index, const controlImpl.mImpl->mAccessibilityHidden = hidden; auto* accessible = controlImpl.GetAccessibleObject(); - auto* parent = dynamic_cast(accessible->GetParent()); - if(parent) + if(DALI_LIKELY(accessible)) { - parent->OnChildrenChanged(); + auto* parent = dynamic_cast(accessible->GetParent()); + if(parent) + { + parent->OnChildrenChanged(); + } } } break; @@ -2125,7 +2131,7 @@ void Control::Impl::OnIdleCallback() Toolkit::DevelControl::ControlAccessible* Control::Impl::GetAccessibleObject() { - if(!mAccessibleObject) + if(mAccessibleCreatable && !mAccessibleObject) { mAccessibleObject.reset(mControlImpl.CreateAccessibleObject()); } @@ -2133,6 +2139,21 @@ Toolkit::DevelControl::ControlAccessible* Control::Impl::GetAccessibleObject() return mAccessibleObject.get(); } +bool Control::Impl::IsAccessibleCreated() const +{ + return !!mAccessibleObject; +} + +void Control::Impl::EnableCreateAccessible(bool enable) +{ + mAccessibleCreatable = enable; +} + +bool Control::Impl::IsCreateAccessibleEnabled() const +{ + return mAccessibleCreatable; +} + } // namespace Internal } // namespace Toolkit diff --git a/dali-toolkit/internal/controls/control/control-data-impl.h b/dali-toolkit/internal/controls/control/control-data-impl.h index 421d69d..f2bbc5c 100644 --- a/dali-toolkit/internal/controls/control/control-data-impl.h +++ b/dali-toolkit/internal/controls/control/control-data-impl.h @@ -445,6 +445,21 @@ public: */ Toolkit::DevelControl::ControlAccessible* GetAccessibleObject(); + /** + * @copydoc Dali::Toolkit::DevelControl::IsAccessibleCreated() + */ + bool IsAccessibleCreated() const; + + /** + * @copydoc Dali::Toolkit::DevelControl::EnableCreateAccessible() + */ + void EnableCreateAccessible(bool enable); + + /** + * @copydoc Dali::Toolkit::DevelControl::IsCreateAccessibleEnabled() + */ + bool IsCreateAccessibleEnabled() const; + private: /** * Used as an alternative to boolean so that it is obvious whether a visual is enabled/disabled. @@ -552,6 +567,7 @@ public: bool mAccessibilityHighlightable = false; bool mAccessibilityHidden = false; + bool mAccessibleCreatable = true; Dali::Accessibility::Role mAccessibilityRole = Dali::Accessibility::Role::UNKNOWN; diff --git a/dali-toolkit/internal/controls/progress-bar/progress-bar-impl.cpp b/dali-toolkit/internal/controls/progress-bar/progress-bar-impl.cpp index 5c5e2db..1f42e57 100644 --- a/dali-toolkit/internal/controls/progress-bar/progress-bar-impl.cpp +++ b/dali-toolkit/internal/controls/progress-bar/progress-bar-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -273,7 +273,11 @@ void ProgressBar::SetProgressValue(float value) mValueChangedSignal.Emit(self, mProgressValue, mSecondaryProgressValue); if(Self() == Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor()) { - GetAccessibleObject()->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::VALUE); + auto accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible)) + { + accessible->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::VALUE); + } } RelayoutRequest(); } diff --git a/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.cpp b/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.cpp index c7d80ba..4d8b1b7 100644 --- a/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.cpp +++ b/dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -364,7 +364,11 @@ void ScrollBar::OnScrollPositionIntervalReached(PropertyNotification& source) mScrollPositionIntervalReachedSignal.Emit(scrollableHandle.GetCurrentProperty(mPropertyScrollPosition)); if(Self() == Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor()) { - GetAccessibleObject()->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::VALUE); + auto accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible)) + { + accessible->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::VALUE); + } } } } diff --git a/dali-toolkit/internal/controls/slider/slider-impl.cpp b/dali-toolkit/internal/controls/slider/slider-impl.cpp index 4acad77..633cc25 100644 --- a/dali-toolkit/internal/controls/slider/slider-impl.cpp +++ b/dali-toolkit/internal/controls/slider/slider-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -951,7 +951,11 @@ void Slider::SetValue(float value) DisplayValue(mValue, true); if(Self() == Dali::Accessibility::Accessible::GetCurrentlyHighlightedActor()) { - GetAccessibleObject()->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::VALUE); + auto accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible)) + { + accessible->Emit(Dali::Accessibility::ObjectPropertyChangeEvent::VALUE); + } } } @@ -1440,7 +1444,7 @@ bool Slider::SliderAccessible::SetCurrent(double current) if(current < GetMinimum() || current > GetMaximum()) return false; - auto self = Toolkit::Slider::DownCast(Self()); + auto self = Toolkit::Slider::DownCast(Self()); auto& impl = Toolkit::GetImpl(self); const float prev = self.GetProperty(Toolkit::Slider::Property::VALUE); diff --git a/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp index 59843ca..dba3f82 100644 --- a/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -957,17 +957,29 @@ void TextEditor::RequestTextRelayout() void TextEditor::TextInserted(unsigned int position, unsigned int length, const std::string& content) { - GetAccessibleObject()->EmitTextInserted(position, length, content); + auto accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible)) + { + accessible->EmitTextInserted(position, length, content); + } } void TextEditor::TextDeleted(unsigned int position, unsigned int length, const std::string& content) { - GetAccessibleObject()->EmitTextDeleted(position, length, content); + auto accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible)) + { + accessible->EmitTextDeleted(position, length, content); + } } void TextEditor::CursorPositionChanged(unsigned int oldPosition, unsigned int newPosition) { - GetAccessibleObject()->EmitTextCursorMoved(newPosition); + auto accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible)) + { + accessible->EmitTextCursorMoved(newPosition); + } if((oldPosition != newPosition) && !mCursorPositionChanged) { diff --git a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp index b9174bc..1154707 100644 --- a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -909,17 +909,29 @@ void TextField::SetEditable(bool editable) void TextField::TextInserted(unsigned int position, unsigned int length, const std::string& content) { - GetAccessibleObject()->EmitTextInserted(position, length, content); + auto accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible)) + { + accessible->EmitTextInserted(position, length, content); + } } void TextField::TextDeleted(unsigned int position, unsigned int length, const std::string& content) { - GetAccessibleObject()->EmitTextDeleted(position, length, content); + auto accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible)) + { + accessible->EmitTextDeleted(position, length, content); + } } void TextField::CursorPositionChanged(unsigned int oldPosition, unsigned int newPosition) { - GetAccessibleObject()->EmitTextCursorMoved(newPosition); + auto accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible)) + { + accessible->EmitTextCursorMoved(newPosition); + } if((oldPosition != newPosition) && !mCursorPositionChanged) { diff --git a/dali-toolkit/public-api/controls/control-impl.cpp b/dali-toolkit/public-api/controls/control-impl.cpp index 6019285..080d709 100644 --- a/dali-toolkit/public-api/controls/control-impl.cpp +++ b/dali-toolkit/public-api/controls/control-impl.cpp @@ -506,12 +506,15 @@ void Control::EmitKeyInputFocusSignal(bool focusGained) if(Accessibility::IsUp()) { - auto self = GetAccessibleObject(); - self->EmitFocused(focusGained); - auto parent = self->GetParent(); - if(parent && !self->GetStates()[Dali::Accessibility::State::MANAGES_DESCENDANTS]) + auto accessible = GetAccessibleObject(); + if(DALI_LIKELY(accessible)) { - parent->EmitActiveDescendantChanged(self); + accessible->EmitFocused(focusGained); + auto parent = accessible->GetParent(); + if(parent && !accessible->GetStates()[Dali::Accessibility::State::MANAGES_DESCENDANTS]) + { + parent->EmitActiveDescendantChanged(accessible); + } } } diff --git a/dali-toolkit/public-api/controls/control-impl.h b/dali-toolkit/public-api/controls/control-impl.h index 4db0504..b7d3c2e 100644 --- a/dali-toolkit/public-api/controls/control-impl.h +++ b/dali-toolkit/public-api/controls/control-impl.h @@ -126,7 +126,7 @@ public: /** * @brief Gets the Accessible object that represents this control. * - * This method calls CreateAccessibleObject() if necessary, so a non-null return is expected. + * This method calls CreateAccessibleObject() if CreateAccessible is true. * * @return The Accessible object *