Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java +19 −0 Original line number Diff line number Diff line Loading @@ -1986,6 +1986,25 @@ public class NotificationContentView extends FrameLayout implements Notification public void setRemoteInputVisible(boolean remoteInputVisible) { mRemoteInputVisible = remoteInputVisible; setClipChildren(!remoteInputVisible); setActionsImportanceForAccessibility( remoteInputVisible ? View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS : View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); } private void setActionsImportanceForAccessibility(int mode) { if (mExpandedChild != null) { setActionsImportanceForAccessibility(mode, mExpandedChild); } if (mHeadsUpChild != null) { setActionsImportanceForAccessibility(mode, mHeadsUpChild); } } private void setActionsImportanceForAccessibility(int mode, View child) { View actionsCandidate = child.findViewById(com.android.internal.R.id.actions); if (actionsCandidate != null) { actionsCandidate.setImportantForAccessibility(mode); } } @Override Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.java +57 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.internal.R; import com.android.internal.widget.NotificationActionListLayout; import com.android.internal.widget.NotificationExpandButton; import com.android.systemui.SysuiTestCase; import com.android.systemui.media.dialog.MediaOutputDialogFactory; Loading Loading @@ -142,4 +143,60 @@ public class NotificationContentViewTest extends SysuiTestCase { verify(mockExpandedEB, times(1)).requestAccessibilityFocus(); verify(mockHeadsUpEB, times(0)).requestAccessibilityFocus(); } @Test @UiThreadTest public void testRemoteInputVisibleSetsActionsUnimportantHideDescendantsForAccessibility() { View mockContracted = mock(NotificationHeaderView.class); View mockExpandedActions = mock(NotificationActionListLayout.class); View mockExpanded = mock(NotificationHeaderView.class); when(mockExpanded.findViewById(com.android.internal.R.id.actions)).thenReturn( mockExpandedActions); View mockHeadsUpActions = mock(NotificationActionListLayout.class); View mockHeadsUp = mock(NotificationHeaderView.class); when(mockHeadsUp.findViewById(com.android.internal.R.id.actions)).thenReturn( mockHeadsUpActions); mView.setContractedChild(mockContracted); mView.setExpandedChild(mockExpanded); mView.setHeadsUpChild(mockHeadsUp); mView.setRemoteInputVisible(true); verify(mockContracted, times(0)).findViewById(0); verify(mockExpandedActions, times(1)).setImportantForAccessibility( View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); verify(mockHeadsUpActions, times(1)).setImportantForAccessibility( View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); } @Test @UiThreadTest public void testRemoteInputInvisibleSetsActionsAutoImportantForAccessibility() { View mockContracted = mock(NotificationHeaderView.class); View mockExpandedActions = mock(NotificationActionListLayout.class); View mockExpanded = mock(NotificationHeaderView.class); when(mockExpanded.findViewById(com.android.internal.R.id.actions)).thenReturn( mockExpandedActions); View mockHeadsUpActions = mock(NotificationActionListLayout.class); View mockHeadsUp = mock(NotificationHeaderView.class); when(mockHeadsUp.findViewById(com.android.internal.R.id.actions)).thenReturn( mockHeadsUpActions); mView.setContractedChild(mockContracted); mView.setExpandedChild(mockExpanded); mView.setHeadsUpChild(mockHeadsUp); mView.setRemoteInputVisible(false); verify(mockContracted, times(0)).findViewById(0); verify(mockExpandedActions, times(1)).setImportantForAccessibility( View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); verify(mockHeadsUpActions, times(1)).setImportantForAccessibility( View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java +19 −0 Original line number Diff line number Diff line Loading @@ -1986,6 +1986,25 @@ public class NotificationContentView extends FrameLayout implements Notification public void setRemoteInputVisible(boolean remoteInputVisible) { mRemoteInputVisible = remoteInputVisible; setClipChildren(!remoteInputVisible); setActionsImportanceForAccessibility( remoteInputVisible ? View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS : View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); } private void setActionsImportanceForAccessibility(int mode) { if (mExpandedChild != null) { setActionsImportanceForAccessibility(mode, mExpandedChild); } if (mHeadsUpChild != null) { setActionsImportanceForAccessibility(mode, mHeadsUpChild); } } private void setActionsImportanceForAccessibility(int mode, View child) { View actionsCandidate = child.findViewById(com.android.internal.R.id.actions); if (actionsCandidate != null) { actionsCandidate.setImportantForAccessibility(mode); } } @Override Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.java +57 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.internal.R; import com.android.internal.widget.NotificationActionListLayout; import com.android.internal.widget.NotificationExpandButton; import com.android.systemui.SysuiTestCase; import com.android.systemui.media.dialog.MediaOutputDialogFactory; Loading Loading @@ -142,4 +143,60 @@ public class NotificationContentViewTest extends SysuiTestCase { verify(mockExpandedEB, times(1)).requestAccessibilityFocus(); verify(mockHeadsUpEB, times(0)).requestAccessibilityFocus(); } @Test @UiThreadTest public void testRemoteInputVisibleSetsActionsUnimportantHideDescendantsForAccessibility() { View mockContracted = mock(NotificationHeaderView.class); View mockExpandedActions = mock(NotificationActionListLayout.class); View mockExpanded = mock(NotificationHeaderView.class); when(mockExpanded.findViewById(com.android.internal.R.id.actions)).thenReturn( mockExpandedActions); View mockHeadsUpActions = mock(NotificationActionListLayout.class); View mockHeadsUp = mock(NotificationHeaderView.class); when(mockHeadsUp.findViewById(com.android.internal.R.id.actions)).thenReturn( mockHeadsUpActions); mView.setContractedChild(mockContracted); mView.setExpandedChild(mockExpanded); mView.setHeadsUpChild(mockHeadsUp); mView.setRemoteInputVisible(true); verify(mockContracted, times(0)).findViewById(0); verify(mockExpandedActions, times(1)).setImportantForAccessibility( View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); verify(mockHeadsUpActions, times(1)).setImportantForAccessibility( View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS); } @Test @UiThreadTest public void testRemoteInputInvisibleSetsActionsAutoImportantForAccessibility() { View mockContracted = mock(NotificationHeaderView.class); View mockExpandedActions = mock(NotificationActionListLayout.class); View mockExpanded = mock(NotificationHeaderView.class); when(mockExpanded.findViewById(com.android.internal.R.id.actions)).thenReturn( mockExpandedActions); View mockHeadsUpActions = mock(NotificationActionListLayout.class); View mockHeadsUp = mock(NotificationHeaderView.class); when(mockHeadsUp.findViewById(com.android.internal.R.id.actions)).thenReturn( mockHeadsUpActions); mView.setContractedChild(mockContracted); mView.setExpandedChild(mockExpanded); mView.setHeadsUpChild(mockHeadsUp); mView.setRemoteInputVisible(false); verify(mockContracted, times(0)).findViewById(0); verify(mockExpandedActions, times(1)).setImportantForAccessibility( View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); verify(mockHeadsUpActions, times(1)).setImportantForAccessibility( View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); } }