[NUI][AT-SPI] Add AccessibilityStatesNotifyMode
authorArtur Świgoń <a.swigon@samsung.com>
Fri, 17 Dec 2021 12:53:21 +0000 (13:53 +0100)
committerSeoyeon2Kim <34738918+Seoyeon2Kim@users.noreply.github.com>
Wed, 12 Jan 2022 08:40:18 +0000 (17:40 +0900)
The different semantics of the second (bool) parameter of
EmitAccessibilityStatesChangedEvent and NotifyAccessibilityStatesChange
can cause confusion, since it represents the new value of the state in
the former method, and the notification strategy in the latter.

This change introduces an enum type for the second parameter of
NotifyAccessibilityStatesChange to express its effect more clearly.

src/Tizen.NUI.Components/Controls/Menu.cs
src/Tizen.NUI.Components/Controls/Navigation/Navigator.cs
src/Tizen.NUI/src/public/BaseComponents/ViewAccessibility.cs
src/Tizen.NUI/src/public/BaseComponents/ViewAccessibilityEnum.cs
test/Tizen.NUI.Tests/Tizen.NUI.Devel.Tests/testcase/public/BaseComponents/TSViewAccessibility.cs

index dcd4e97..ee50541 100755 (executable)
@@ -395,7 +395,7 @@ namespace Tizen.NUI.Components
 
             CalculateSizeAndPosition();
             RegisterDefaultLabel();
-            NotifyAccessibilityStatesChange(AccessibilityStates.Visible | AccessibilityStates.Showing, true);
+            NotifyAccessibilityStatesChange(AccessibilityStates.Visible | AccessibilityStates.Showing, AccessibilityStatesNotifyMode.Recursive);
         }
 
         /// <summary>
@@ -407,7 +407,7 @@ namespace Tizen.NUI.Components
         {
             Hide();
             UnregisterDefaultLabel();
-            NotifyAccessibilityStatesChange(AccessibilityStates.Visible | AccessibilityStates.Showing, true);
+            NotifyAccessibilityStatesChange(AccessibilityStates.Visible | AccessibilityStates.Showing, AccessibilityStatesNotifyMode.Recursive);
             Dispose();
         }
 
index 7b53588..3193e2a 100755 (executable)
@@ -827,14 +827,14 @@ namespace Tizen.NUI.Components
                 View curHighlightedView = Accessibility.Accessibility.Instance.GetCurrentlyHighlightedView();
                 if (curHighlightedView != null)
                 {
-                    curHighlightedView.NotifyAccessibilityStatesChange(AccessibilityStates.Visible | AccessibilityStates.Showing, false);
+                    curHighlightedView.NotifyAccessibilityStatesChange(AccessibilityStates.Visible | AccessibilityStates.Showing, AccessibilityStatesNotifyMode.Single);
                 }
             }
 
             if (appearedPage != null)
             {
                 appearedPage.RegisterDefaultLabel();
-                appearedPage.NotifyAccessibilityStatesChange(AccessibilityStates.Visible | AccessibilityStates.Showing, false);
+                appearedPage.NotifyAccessibilityStatesChange(AccessibilityStates.Visible | AccessibilityStates.Showing, AccessibilityStatesNotifyMode.Single);
             }
         }
 
index 0cdd1cc..dd4533b 100755 (executable)
@@ -335,11 +335,11 @@ namespace Tizen.NUI.BaseComponents
         /// If recursive is true, all children of the Accessibility object will also re-emit the states.
         /// </remarks>
         /// <param name="states">Accessibility States</param>
-        /// <param name="recursive">Flag to point if notifications of children's state would be sent</param>
+        /// <param name="notifyMode">Controls the notification strategy</param>
         [EditorBrowsable(EditorBrowsableState.Never)]
-        public void NotifyAccessibilityStatesChange(AccessibilityStates states, bool recursive)
+        public void NotifyAccessibilityStatesChange(AccessibilityStates states, AccessibilityStatesNotifyMode notifyMode)
         {
-            Interop.ControlDevel.DaliToolkitDevelControlNotifyAccessibilityStatesChange(SwigCPtr, (ulong)states, Convert.ToInt32(recursive));
+            Interop.ControlDevel.DaliToolkitDevelControlNotifyAccessibilityStatesChange(SwigCPtr, (ulong)states, (int)notifyMode);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
 
index d8be3e2..9ab448c 100755 (executable)
@@ -564,6 +564,26 @@ namespace Tizen.NUI.BaseComponents
     };
 
     /// <summary>
+    /// Notify mode for AccessibilityStates.
+    /// </summary>
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public enum AccessibilityStatesNotifyMode
+    {
+        /// <summary>
+        /// Notify about the change of states in this object only.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1720:IdentifiersShouldNotContainTypeNames", Justification = "Single is the most descriptive name for sending a single event")]
+        Single = 0,
+
+        /// <summary>
+        /// Notify about the change of states in this object and all its children.
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        Recursive = 1,
+    }
+
+    /// <summary>
     /// The relation between accessible objects.
     /// </summary>
     [EditorBrowsable(EditorBrowsableState.Never)]
index 0b8f522..afe1034 100755 (executable)
@@ -457,7 +457,7 @@ namespace Tizen.NUI.Devel.Tests
             Assert.IsNotNull(testingTarget, "Can't create success object View");
             Assert.IsInstanceOf<View>(testingTarget, "Should be an instance of View type.");
 
-            testingTarget.NotifyAccessibilityStatesChange(AccessibilityStates.Busy, true);
+            testingTarget.NotifyAccessibilityStatesChange(AccessibilityStates.Busy, AccessibilityStatesNotifyMode.Recursive);
             var result = testingTarget.GetAccessibilityStates();
             tlog.Debug(tag, "AccessibilityStates : " + result);