Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ef44864b authored by Julia Tuttle's avatar Julia Tuttle Committed by Automerger Merge Worker
Browse files

Merge "Mark actions unimportant for accessibility when obscured by...

Merge "Mark actions unimportant for accessibility when obscured by RemoteInputView." into tm-qpr-dev am: eb35acbd am: e4f6802d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20111501



Change-Id: I6dc5ce2134060714f8b55bbc5f60d14b90b0d092
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 3876db9e e4f6802d
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -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
+57 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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);
    }
}