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

Commit 00731515 authored by Alison Cichowlas's avatar Alison Cichowlas
Browse files

Add dismiss button in Conversation view.

Bug: 383967964
Test: atest NotificationConversationInfoTest
Flag: EXEMPT bugfix

Change-Id: I6d4574865a438e23e4547297b8b6de6f6b0796b4
parent c0539870
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -390,6 +390,16 @@
            android:paddingStart="4dp"
            android:paddingEnd="4dp"
        >
            <TextView
                android:id="@+id/inline_dismiss"
                android:text="@string/notification_inline_dismiss"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentStart="true"
                android:gravity="center_vertical"
                android:minWidth="@dimen/notification_importance_toggle_size"
                android:minHeight="@dimen/notification_importance_toggle_size"
                style="@style/TextAppearance.NotificationInfo.Button"/>
            <TextView
                android:id="@+id/done"
                android:text="@string/inline_ok_button"
+6 −1
Original line number Diff line number Diff line
@@ -218,7 +218,7 @@ public class NotificationConversationInfo extends LinearLayout implements
            @Background Handler bgHandler,
            OnConversationSettingsClickListener onConversationSettingsClickListener,
            Optional<BubblesManager> bubblesManagerOptional,
            ShadeController shadeController) {
            ShadeController shadeController, boolean isDismissable, OnClickListener onCloseClick) {
        mINotificationManager = iNotificationManager;
        mPeopleSpaceWidgetManager = peopleSpaceWidgetManager;
        mOnUserInteractionCallback = onUserInteractionCallback;
@@ -263,6 +263,11 @@ public class NotificationConversationInfo extends LinearLayout implements
        bindHeader();
        bindActions();

        View dismissButton = findViewById(R.id.inline_dismiss);
        dismissButton.setOnClickListener(onCloseClick);
        dismissButton.setVisibility(dismissButton.hasOnClickListeners() && isDismissable
                ? VISIBLE : GONE);

        View done = findViewById(R.id.done);
        done.setOnClickListener(mOnDone);
        done.setAccessibilityDelegate(mGutsContainer.getAccessibilityDelegate());
+3 −1
Original line number Diff line number Diff line
@@ -608,7 +608,9 @@ public class NotificationGutsManager implements NotifGutsViewManager, CoreStarta
                mBgHandler,
                onConversationSettingsListener,
                mBubblesManagerOptional,
                mShadeController);
                mShadeController,
                row.canViewBeDismissed(),
                row.getCloseButtonOnClickListener(row));
    }

    /**
+24 −7
Original line number Diff line number Diff line
@@ -171,6 +171,8 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
    private ConversationIconFactory mIconFactory;
    @Mock
    private Notification.BubbleMetadata mBubbleMetadata;
    @Mock
    private View.OnClickListener mCloseListener;
    private Handler mTestHandler;
    @Rule
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@@ -298,7 +300,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
                true,
                mTestHandler,
                mTestHandler, null, Optional.of(mBubblesManager),
                mShadeController);
                mShadeController, true, mCloseListener);
    }

    @Test
@@ -402,7 +404,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
                true,
                mTestHandler,
                mTestHandler, null, Optional.of(mBubblesManager),
                mShadeController);
                mShadeController, true, null);
        final TextView nameView = mNotificationInfo.findViewById(R.id.delegate_name);
        assertEquals(VISIBLE, nameView.getVisibility());
        assertTrue(nameView.getText().toString().contains("Proxied"));
@@ -442,7 +444,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
                true,
                mTestHandler,
                mTestHandler, null, Optional.of(mBubblesManager),
                mShadeController);
                mShadeController, true, null);

        final View feedback = mNotificationInfo.findViewById(R.id.feedback);
        assertEquals(VISIBLE, feedback.getVisibility());
@@ -484,7 +486,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
                true,
                mTestHandler,
                mTestHandler, null, Optional.of(mBubblesManager),
                mShadeController);
                mShadeController, true, null);

        final View settingsButton = mNotificationInfo.findViewById(R.id.info);
        settingsButton.performClick();
@@ -524,7 +526,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
                false,
                mTestHandler,
                mTestHandler, null, Optional.of(mBubblesManager),
                mShadeController);
                mShadeController, true, null);
        final View settingsButton = mNotificationInfo.findViewById(R.id.info);
        assertTrue(settingsButton.getVisibility() != View.VISIBLE);
    }
@@ -601,7 +603,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
                true,
                mTestHandler,
                mTestHandler, null, Optional.of(mBubblesManager),
                mShadeController);
                mShadeController, true, null);
        assertThat(((TextView) mNotificationInfo.findViewById(R.id.priority_summary)).getText())
                .isEqualTo(mContext.getString(
                        R.string.notification_channel_summary_priority_dnd));
@@ -633,7 +635,7 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
                true,
                mTestHandler,
                mTestHandler, null, Optional.of(mBubblesManager),
                mShadeController);
                mShadeController, true, null);
        assertThat(((TextView) mNotificationInfo.findViewById(R.id.priority_summary)).getText())
                .isEqualTo(mContext.getString(
                        R.string.notification_channel_summary_priority_baseline));
@@ -1018,4 +1020,19 @@ public class NotificationConversationInfoTest extends SysuiTestCase {
        // THEN the user is not presented with the People Tile pinning request
        verify(mPeopleSpaceWidgetManager, never()).requestPinAppWidget(eq(mShortcutInfo), any());
    }


    @Test
    public void testDismiss() throws Exception {
        doStandardBind();

        View dismiss = mNotificationInfo.findViewById(R.id.inline_dismiss);
        dismiss.performClick();
        mTestableLooper.processAllMessages();

        // Verify action performed on button click
        verify(mCloseListener).onClick(any());

    }

}