@@ -2119,6 +2119,156 @@ public void itAddsClickActionToSliderNodeInfo() {
21192119 assertTrue (actions .contains (AccessibilityNodeInfo .AccessibilityAction .ACTION_CLICK ));
21202120 }
21212121
2122+ @ Config (sdk = API_LEVELS .API_36 )
2123+ @ TargetApi (API_LEVELS .API_36 )
2124+ @ Test
2125+ public void itSetsExpandedStateBasedOnFlagsCorrectly () {
2126+ AccessibilityBridge accessibilityBridge = setUpBridge ();
2127+
2128+ TestSemanticsNode node = new TestSemanticsNode ();
2129+ TestSemanticsUpdate testSemanticsUpdate = node .toUpdate ();
2130+ testSemanticsUpdate .sendUpdateToBridge (accessibilityBridge );
2131+
2132+ AccessibilityNodeInfo nodeInfo = accessibilityBridge .createAccessibilityNodeInfo (0 );
2133+ assertEquals (nodeInfo .getExpandedState (), AccessibilityNodeInfo .EXPANDED_STATE_UNDEFINED );
2134+
2135+ node = new TestSemanticsNode ();
2136+ node .addFlag (AccessibilityBridge .Flag .HAS_EXPANDED_STATE );
2137+ testSemanticsUpdate = node .toUpdate ();
2138+ testSemanticsUpdate .sendUpdateToBridge (accessibilityBridge );
2139+
2140+ nodeInfo = accessibilityBridge .createAccessibilityNodeInfo (0 );
2141+ assertEquals (nodeInfo .getExpandedState (), AccessibilityNodeInfo .EXPANDED_STATE_COLLAPSED );
2142+
2143+ node = new TestSemanticsNode ();
2144+ node .addFlag (AccessibilityBridge .Flag .HAS_EXPANDED_STATE );
2145+ node .addFlag (AccessibilityBridge .Flag .IS_EXPANDED );
2146+ testSemanticsUpdate = node .toUpdate ();
2147+ testSemanticsUpdate .sendUpdateToBridge (accessibilityBridge );
2148+
2149+ nodeInfo = accessibilityBridge .createAccessibilityNodeInfo (0 );
2150+ assertEquals (nodeInfo .getExpandedState (), AccessibilityNodeInfo .EXPANDED_STATE_FULL );
2151+ }
2152+
2153+ @ Config (sdk = API_LEVELS .API_36 )
2154+ @ TargetApi (API_LEVELS .API_36 )
2155+ @ Test
2156+ public void itAddsExpandActionBasedOnFlagsCorrectly () {
2157+ AccessibilityBridge accessibilityBridge = setUpBridge ();
2158+
2159+ TestSemanticsNode node = new TestSemanticsNode ();
2160+ TestSemanticsUpdate testSemanticsUpdate = node .toUpdate ();
2161+ testSemanticsUpdate .sendUpdateToBridge (accessibilityBridge );
2162+
2163+ AccessibilityNodeInfo nodeInfo = accessibilityBridge .createAccessibilityNodeInfo (0 );
2164+ List <AccessibilityNodeInfo .AccessibilityAction > actions = nodeInfo .getActionList ();
2165+ assertFalse (actions .contains (AccessibilityNodeInfo .AccessibilityAction .ACTION_EXPAND ));
2166+
2167+ node = new TestSemanticsNode ();
2168+ node .addFlag (AccessibilityBridge .Flag .HAS_EXPANDED_STATE );
2169+ testSemanticsUpdate = node .toUpdate ();
2170+ testSemanticsUpdate .sendUpdateToBridge (accessibilityBridge );
2171+
2172+ nodeInfo = accessibilityBridge .createAccessibilityNodeInfo (0 );
2173+ actions = nodeInfo .getActionList ();
2174+ assertFalse (actions .contains (AccessibilityNodeInfo .AccessibilityAction .ACTION_EXPAND ));
2175+
2176+ node = new TestSemanticsNode ();
2177+ node .addFlag (AccessibilityBridge .Flag .HAS_EXPANDED_STATE );
2178+ node .addAction (AccessibilityBridge .Action .EXPAND );
2179+ testSemanticsUpdate = node .toUpdate ();
2180+ testSemanticsUpdate .sendUpdateToBridge (accessibilityBridge );
2181+
2182+ nodeInfo = accessibilityBridge .createAccessibilityNodeInfo (0 );
2183+ actions = nodeInfo .getActionList ();
2184+ assertTrue (actions .contains (AccessibilityNodeInfo .AccessibilityAction .ACTION_EXPAND ));
2185+ }
2186+
2187+ @ Config (sdk = API_LEVELS .API_36 )
2188+ @ TargetApi (API_LEVELS .API_36 )
2189+ @ Test
2190+ public void itCanPerformExpand () {
2191+ AccessibilityChannel mockChannel = mock (AccessibilityChannel .class );
2192+ AccessibilityBridge accessibilityBridge =
2193+ setUpBridge (
2194+ /* rootAccessibilityView= */ null ,
2195+ /* accessibilityChannel= */ mockChannel ,
2196+ /* accessibilityManager= */ null ,
2197+ /* contentResolver= */ null ,
2198+ /* accessibilityViewEmbedder= */ null ,
2199+ /* platformViewsAccessibilityDelegate= */ null );
2200+
2201+ TestSemanticsNode node = new TestSemanticsNode ();
2202+ node .addFlag (AccessibilityBridge .Flag .HAS_EXPANDED_STATE );
2203+ node .addAction (AccessibilityBridge .Action .EXPAND );
2204+ TestSemanticsUpdate testSemanticsUpdate = node .toUpdate ();
2205+ testSemanticsUpdate .sendUpdateToBridge (accessibilityBridge );
2206+
2207+ accessibilityBridge .performAction (0 , AccessibilityNodeInfo .ACTION_EXPAND , null );
2208+ verify (mockChannel ).dispatchSemanticsAction (0 , AccessibilityBridge .Action .EXPAND );
2209+ }
2210+
2211+ @ Config (sdk = API_LEVELS .API_36 )
2212+ @ TargetApi (API_LEVELS .API_36 )
2213+ @ Test
2214+ public void itAddsCollapseActionBasedOnFlagsCorrectly () {
2215+ AccessibilityBridge accessibilityBridge = setUpBridge ();
2216+
2217+ TestSemanticsNode node = new TestSemanticsNode ();
2218+ TestSemanticsUpdate testSemanticsUpdate = node .toUpdate ();
2219+ testSemanticsUpdate .sendUpdateToBridge (accessibilityBridge );
2220+
2221+ AccessibilityNodeInfo nodeInfo = accessibilityBridge .createAccessibilityNodeInfo (0 );
2222+ List <AccessibilityNodeInfo .AccessibilityAction > actions = nodeInfo .getActionList ();
2223+ assertFalse (actions .contains (AccessibilityNodeInfo .AccessibilityAction .ACTION_COLLAPSE ));
2224+
2225+ node = new TestSemanticsNode ();
2226+ node .addFlag (AccessibilityBridge .Flag .HAS_EXPANDED_STATE );
2227+ node .addFlag (AccessibilityBridge .Flag .IS_EXPANDED );
2228+ testSemanticsUpdate = node .toUpdate ();
2229+ testSemanticsUpdate .sendUpdateToBridge (accessibilityBridge );
2230+
2231+ nodeInfo = accessibilityBridge .createAccessibilityNodeInfo (0 );
2232+ actions = nodeInfo .getActionList ();
2233+ assertFalse (actions .contains (AccessibilityNodeInfo .AccessibilityAction .ACTION_COLLAPSE ));
2234+
2235+ node = new TestSemanticsNode ();
2236+ node .addFlag (AccessibilityBridge .Flag .HAS_EXPANDED_STATE );
2237+ node .addFlag (AccessibilityBridge .Flag .IS_EXPANDED );
2238+ node .addAction (AccessibilityBridge .Action .COLLAPSE );
2239+ testSemanticsUpdate = node .toUpdate ();
2240+ testSemanticsUpdate .sendUpdateToBridge (accessibilityBridge );
2241+
2242+ nodeInfo = accessibilityBridge .createAccessibilityNodeInfo (0 );
2243+ actions = nodeInfo .getActionList ();
2244+ assertTrue (actions .contains (AccessibilityNodeInfo .AccessibilityAction .ACTION_COLLAPSE ));
2245+ }
2246+
2247+ @ Config (sdk = API_LEVELS .API_36 )
2248+ @ TargetApi (API_LEVELS .API_36 )
2249+ @ Test
2250+ public void itCanPerformCollapse () {
2251+ AccessibilityChannel mockChannel = mock (AccessibilityChannel .class );
2252+ AccessibilityBridge accessibilityBridge =
2253+ setUpBridge (
2254+ /* rootAccessibilityView= */ null ,
2255+ /* accessibilityChannel= */ mockChannel ,
2256+ /* accessibilityManager= */ null ,
2257+ /* contentResolver= */ null ,
2258+ /* accessibilityViewEmbedder= */ null ,
2259+ /* platformViewsAccessibilityDelegate= */ null );
2260+
2261+ TestSemanticsNode node = new TestSemanticsNode ();
2262+ node .addFlag (AccessibilityBridge .Flag .HAS_EXPANDED_STATE );
2263+ node .addFlag (AccessibilityBridge .Flag .IS_EXPANDED );
2264+ node .addAction (AccessibilityBridge .Action .COLLAPSE );
2265+ TestSemanticsUpdate testSemanticsUpdate = node .toUpdate ();
2266+ testSemanticsUpdate .sendUpdateToBridge (accessibilityBridge );
2267+
2268+ accessibilityBridge .performAction (0 , AccessibilityNodeInfo .ACTION_COLLAPSE , null );
2269+ verify (mockChannel ).dispatchSemanticsAction (0 , AccessibilityBridge .Action .COLLAPSE );
2270+ }
2271+
21222272 AccessibilityBridge setUpBridge () {
21232273 return setUpBridge (null , null , null , null , null , null );
21242274 }
0 commit comments