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

Commit 4574b5fd authored by Ibrahim Yilmaz's avatar Ibrahim Yilmaz
Browse files

Make Notification long clickable

Notification aka ExpandableNotificationRow handle long click but it was not marked as long clickable. That confused test and that would have a possible impact on accessibility.
We implemented unit test which checks whether the notification is long clickable or not to verify the behavior and fixed the issue by marking Notification long clickable.

Test: atest PlatformScenarioTests:android.platform.test.scenario.sysui.notification.NotificationGuts#testExpandAndCollapseGuts

Bug: b/264948201
Change-Id: I34248b9e207c93c6e987f70603e8b3725c7c1ab1
parent 98194d39
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -591,6 +591,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
        }
        mShowingPublicInitialized = false;
        updateNotificationColor();
        updateLongClickable();
        if (mMenuRow != null) {
            mMenuRow.onNotificationUpdated(mEntry.getSbn());
            mMenuRow.setAppName(mAppName);
@@ -1196,8 +1197,26 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
        return getShowingLayout().getVisibleWrapper();
    }

    private boolean isNotificationRowLongClickable() {
        if (mLongPressListener == null) {
            return false;
        }

        if (!areGutsExposed()) { // guts is not opened
            return true;
        }

        // if it is leave behind, it shouldn't be long clickable.
        return !isGutsLeaveBehind();
    }

    private void updateLongClickable() {
        setLongClickable(isNotificationRowLongClickable());
    }

    public void setLongPressListener(LongPressListener longPressListener) {
        mLongPressListener = longPressListener;
        updateLongClickable();
    }

    public void setDragController(ExpandableNotificationRowDragController dragController) {
@@ -2044,11 +2063,13 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
    void onGutsOpened() {
        resetTranslation();
        updateContentAccessibilityImportanceForGuts(false /* isEnabled */);
        updateLongClickable();
    }

    void onGutsClosed() {
        updateContentAccessibilityImportanceForGuts(true /* isEnabled */);
        mIsSnoozed = false;
        updateLongClickable();
    }

    /**
@@ -2947,6 +2968,10 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
        return (mGuts != null && mGuts.isExposed());
    }

    private boolean isGutsLeaveBehind() {
        return (mGuts != null && mGuts.isLeavebehind());
    }

    @Override
    public boolean isContentExpandable() {
        if (mIsSummaryWithChildren && !shouldShowPublic()) {
+3 −1
Original line number Diff line number Diff line
@@ -586,7 +586,9 @@ public class NotificationGutsManager implements NotifGutsViewManager {
        }

        final ExpandableNotificationRow row = (ExpandableNotificationRow) view;
        if (view.isLongClickable()) {
            view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
        }
        if (row.areGutsExposed()) {
            closeAndSaveGuts(false /* removeLeavebehind */, false /* force */,
                    true /* removeControls */, -1 /* x */, -1 /* y */,