[ATSPI] Fix for DefaultLabel
authorLukasz Oleksak <l.oleksak@samsung.com>
Fri, 3 Dec 2021 18:00:20 +0000 (19:00 +0100)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Tue, 21 Dec 2021 09:32:16 +0000 (18:32 +0900)
src/Tizen.NUI.Components/Controls/Navigation/Navigator.cs
src/Tizen.NUI/src/internal/Interop/Interop.ControlDevel.cs
src/Tizen.NUI/src/public/BaseComponents/ViewAccessibility.cs
src/Tizen.NUI/src/public/BaseComponents/ViewPublicMethods.cs
test/Tizen.NUI.Tests/Tizen.NUI.Devel.Tests/testcase/public/BaseComponents/TSViewAccessibility.cs

index f00a4cc..7b53588 100755 (executable)
@@ -821,6 +821,7 @@ namespace Tizen.NUI.Components
         {
             if (disappearedPage != null)
             {
+                disappearedPage.UnregisterDefaultLabel();
                 //We can call disappearedPage.NotifyAccessibilityStatesChange
                 //To reduce accessibility events, we are using currently highlighted view instead
                 View curHighlightedView = Accessibility.Accessibility.Instance.GetCurrentlyHighlightedView();
@@ -832,6 +833,7 @@ namespace Tizen.NUI.Components
 
             if (appearedPage != null)
             {
+                appearedPage.RegisterDefaultLabel();
                 appearedPage.NotifyAccessibilityStatesChange(AccessibilityStates.Visible | AccessibilityStates.Showing, false);
             }
         }
index ced21d9..67a700b 100755 (executable)
@@ -166,12 +166,12 @@ namespace Tizen.NUI
             public static extern void DaliAccessibilityDeleteRange(IntPtr arg1);
 
             [EditorBrowsable(EditorBrowsableState.Never)]
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Accessibility_Bridge_Add_Popup")]
-            public static extern void DaliAccessibilityBridgeRegisterPopup(global::System.Runtime.InteropServices.HandleRef arg1);
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Accessibility_Bridge_RegisterDefaultLabel")]
+            public static extern void DaliAccessibilityBridgeRegisterDefaultLabel(global::System.Runtime.InteropServices.HandleRef arg1);
 
             [EditorBrowsable(EditorBrowsableState.Never)]
-            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Accessibility_Bridge_Remove_Popup")]
-            public static extern void DaliAccessibilityBridgeRemovePopup(global::System.Runtime.InteropServices.HandleRef arg1);
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Accessibility_Bridge_UnregisterDefaultLabel")]
+            public static extern void DaliAccessibilityBridgeUnregisterDefaultLabel(global::System.Runtime.InteropServices.HandleRef arg1);
 
             [EditorBrowsable(EditorBrowsableState.Never)]
             [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_Accessibility_Accessible_GetCurrentlyHighlightedActor")]
index 37e90dd..0cdd1cc 100755 (executable)
@@ -424,22 +424,28 @@ namespace Tizen.NUI.BaseComponents
         ///////////////////////////////////////////////////////////////////
 
         /// <summary>
-        /// Registers popup component to accessibility tree.
+        /// Registers component as a source of an accessibility "default label".
+        /// The "Default label" is a text that could be read by screen-reader immediately
+        /// after the navigation context has changed (window activates, popup shows up, tab changes)
+        /// and before first UI element is highlighted.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public void RegisterPopup()
+        public void RegisterDefaultLabel()
         {
-            Interop.ControlDevel.DaliAccessibilityBridgeRegisterPopup(SwigCPtr);
+            Interop.ControlDevel.DaliAccessibilityBridgeRegisterDefaultLabel(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
         /// <summary>
-        /// Removes the previously added popup to accessibility tree.
+        /// Unregisters component that has been registered previously as a source of an accessibility "default label".
+        /// The "Default label" is a text that could be read by screen-reader immediately
+        /// after the navigation context has changed (window activates, popup shows up, tab changes)
+        /// and before first UI element is highlighted.
         /// </summary>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public void RemovePopup()
+        public void UnregisterDefaultLabel()
         {
-            Interop.ControlDevel.DaliAccessibilityBridgeRemovePopup(SwigCPtr);
+            Interop.ControlDevel.DaliAccessibilityBridgeUnregisterDefaultLabel(SwigCPtr);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
index 1d7dac3..8b0cdbc 100755 (executable)
@@ -303,12 +303,17 @@ namespace Tizen.NUI.BaseComponents
         /// <since_tizen> 3 </since_tizen>
         public void Show()
         {
-            if (Accessibility.Accessibility.Enabled && ((GetAccessibilityStates() & AccessibilityStates.Modal) != 0))
+            SetVisible(true);
+
+            if (((GetAccessibilityStates() & AccessibilityStates.Modal) != 0))
             {
-                RegisterPopup();
-            }
+                RegisterDefaultLabel();
 
-            SetVisible(true);
+                if (Accessibility.Accessibility.Enabled)
+                {
+                    EmitAccessibilityStatesChangedEvent(AccessibilityStates.Showing, true);
+                }
+            }
         }
 
         /// <summary>
@@ -324,9 +329,14 @@ namespace Tizen.NUI.BaseComponents
         {
             SetVisible(false);
 
-            if (Accessibility.Accessibility.Enabled && ((GetAccessibilityStates() & AccessibilityStates.Modal) != 0))
+            if (((GetAccessibilityStates() & AccessibilityStates.Modal) != 0))
             {
-                RemovePopup();
+                UnregisterDefaultLabel();
+
+                if (Accessibility.Accessibility.Enabled)
+                {
+                    EmitAccessibilityStatesChangedEvent(AccessibilityStates.Showing, false);
+                }
             }
         }
 
index badfdca..0b8f522 100755 (executable)
@@ -467,14 +467,14 @@ namespace Tizen.NUI.Devel.Tests
 
         [Test]
         [Category("P1")]
-        [Description("ViewAccessibility.View.RegisterPopup.")]
-        [Property("SPEC", "Tizen.NUI.ViewAccessibility.View.RegisterPopup M")]
+        [Description("ViewAccessibility.View.RegisterDefaultLabel.")]
+        [Property("SPEC", "Tizen.NUI.ViewAccessibility.View.RegisterDefaultLabel M")]
         [Property("SPEC_URL", "-")]
         [Property("CRITERIA", "MR")]
         [Property("AUTHOR", "guowei.wang@samsung.com")]
-        public void ViewAccessibilityRegisterPopup()
+        public void ViewAccessibilityRegisterDefaultLabel()
         {
-            tlog.Debug(tag, $"ViewAccessibilityRegisterPopup START");
+            tlog.Debug(tag, $"ViewAccessibilityRegisterDefaultLabel START");
 
             var testingTarget = new View()
             {
@@ -489,8 +489,8 @@ namespace Tizen.NUI.Devel.Tests
 
             try
             {
-                testingTarget.RegisterPopup();
-                testingTarget.RemovePopup();
+                testingTarget.RegisterDefaultLabel();
+                testingTarget.UnregisterDefaultLabel();
             }
             catch (Exception e)
             {
@@ -499,7 +499,7 @@ namespace Tizen.NUI.Devel.Tests
             }
 
             testingTarget.Dispose();
-            tlog.Debug(tag, $"ViewAccessibilityRegisterPopup END (OK)");
+            tlog.Debug(tag, $"ViewAccessibilityRegisterDefaultLabel END (OK)");
         }
 
         [Test]