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

Commit 3e6d370f authored by Alison Cichowlas's avatar Alison Cichowlas Committed by Android (Google) Code Review
Browse files

Merge "Add Dismiss button to Notification Guts." into main

parents 0d019146 1aa94f07
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -512,6 +512,7 @@ class NotificationGutsManagerTest(flags: FlagsParameterization) : SysuiTestCase(
            .setImportance(NotificationManager.IMPORTANCE_HIGH)
            .build()

        whenever(row.canViewBeDismissed()).thenReturn(true)
        whenever(highPriorityProvider.isHighPriority(entry)).thenReturn(true)
        val statusBarNotification = entry.sbn
        gutsManager.initializeNotificationInfo(row, notificationInfoView)
@@ -534,6 +535,7 @@ class NotificationGutsManagerTest(flags: FlagsParameterization) : SysuiTestCase(
                any<UiEventLogger>(),
                /* isDeviceProvisioned = */ eq(false),
                /* isNonblockable = */ eq(false),
                /* isDismissable = */ eq(true),
                /* wasShownHighPriority = */ eq(true),
                eq(assistantFeedbackController),
                eq(metricsLogger),
@@ -549,6 +551,7 @@ class NotificationGutsManagerTest(flags: FlagsParameterization) : SysuiTestCase(
        NotificationEntryHelper.modifyRanking(row.entry)
            .setUserSentiment(NotificationListenerService.Ranking.USER_SENTIMENT_NEGATIVE)
            .build()
        whenever(row.canViewBeDismissed()).thenReturn(true)
        val statusBarNotification = row.entry.sbn
        val entry = row.entry

@@ -574,6 +577,7 @@ class NotificationGutsManagerTest(flags: FlagsParameterization) : SysuiTestCase(
                any<UiEventLogger>(),
                /* isDeviceProvisioned = */ eq(true),
                /* isNonblockable = */ eq(false),
                /* isDismissable = */ eq(true),
                /* wasShownHighPriority = */ eq(false),
                eq(assistantFeedbackController),
                eq(metricsLogger),
@@ -589,6 +593,7 @@ class NotificationGutsManagerTest(flags: FlagsParameterization) : SysuiTestCase(
        NotificationEntryHelper.modifyRanking(row.entry)
            .setUserSentiment(NotificationListenerService.Ranking.USER_SENTIMENT_NEGATIVE)
            .build()
        whenever(row.canViewBeDismissed()).thenReturn(true)
        val statusBarNotification = row.entry.sbn
        val entry = row.entry

@@ -612,6 +617,7 @@ class NotificationGutsManagerTest(flags: FlagsParameterization) : SysuiTestCase(
                any<UiEventLogger>(),
                /* isDeviceProvisioned = */ eq(false),
                /* isNonblockable = */ eq(false),
                /* isDismissable = */ eq(true),
                /* wasShownHighPriority = */ eq(false),
                eq(assistantFeedbackController),
                eq(metricsLogger),
+28 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import android.view.View.GONE
import android.view.View.VISIBLE
import android.widget.ImageView
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.logging.MetricsLogger
@@ -865,6 +866,31 @@ class NotificationInfoTest : SysuiTestCase() {
        assertThat(underTest.findViewById<View>(R.id.feedback).visibility).isEqualTo(GONE)
    }

    @Test
    @Throws(RemoteException::class)
    fun testDismissListenerBound() {
        val latch = CountDownLatch(1)
        bindNotification(onCloseClick = { _: View? -> latch.countDown() })

        val dismissView = underTest.findViewById<View>(R.id.inline_dismiss)
        assertThat(dismissView.isVisible).isTrue()
        dismissView.performClick()

        // Verify that listener was triggered.
        assertThat(latch.count).isEqualTo(0)
    }

    @Test
    @Throws(RemoteException::class)
    fun testDismissHiddenWhenUndismissable() {

        entry.sbn.notification.flags =
            entry.sbn.notification.flags or android.app.Notification.FLAG_NO_DISMISS
        bindNotification(isDismissable = false)
        val dismissView = underTest.findViewById<View>(R.id.inline_dismiss)
        assertThat(dismissView.isVisible).isFalse()
    }

    private fun bindNotification(
        pm: PackageManager = this.mockPackageManager,
        iNotificationManager: INotificationManager = this.mockINotificationManager,
@@ -883,6 +909,7 @@ class NotificationInfoTest : SysuiTestCase() {
        uiEventLogger: UiEventLogger = this.uiEventLogger,
        isDeviceProvisioned: Boolean = true,
        isNonblockable: Boolean = false,
        isDismissable: Boolean = true,
        wasShownHighPriority: Boolean = true,
        assistantFeedbackController: AssistantFeedbackController = this.assistantFeedbackController,
        metricsLogger: MetricsLogger = kosmos.metricsLogger,
@@ -905,6 +932,7 @@ class NotificationInfoTest : SysuiTestCase() {
            uiEventLogger,
            isDeviceProvisioned,
            isNonblockable,
            isDismissable,
            wasShownHighPriority,
            assistantFeedbackController,
            metricsLogger,
+1 −0
Original line number Diff line number Diff line
@@ -152,6 +152,7 @@ public class PromotedNotificationInfoTest extends SysuiTestCase {
                true,
                false,
                true,
                true,
                mAssistantFeedbackController,
                mMetricsLogger,
                null);
+31 −6
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
<!-- extends LinearLayout -->
<com.android.systemui.statusbar.notification.row.NotificationInfo
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
    android:id="@+id/notification_guts"
    android:layout_width="match_parent"
@@ -324,18 +325,34 @@
            </com.android.systemui.statusbar.notification.row.ButtonLinearLayout>

        </LinearLayout>

        <LinearLayout
        <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/bottom_buttons"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="@*android:dimen/notification_2025_margin"
            android:minHeight="@dimen/notification_2025_guts_button_size"
            android:gravity="center_vertical"
            >
            android:gravity="center_vertical">

            <TextView
                android:id="@+id/inline_dismiss"
                android:text="@string/notification_inline_dismiss"
                android:paddingEnd="@dimen/notification_importance_button_padding"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingTop="8dp"
                android:paddingBottom="@*android:dimen/notification_2025_margin"
                app:layout_constraintStart_toStartOf="parent"
                android:gravity="center"
                android:minWidth="@dimen/notification_2025_min_tap_target_size"
                android:minHeight="@dimen/notification_2025_min_tap_target_size"
                android:maxWidth="200dp"
                style="@style/TextAppearance.NotificationInfo.Button"
                android:textSize="@*android:dimen/notification_2025_action_text_size"
                />
            <TextView
                android:id="@+id/turn_off_notifications"
                android:text="@string/inline_turn_off_notifications"
                android:paddingStart="@dimen/notification_importance_button_padding"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="32dp"
@@ -345,6 +362,8 @@
                android:minWidth="@dimen/notification_2025_min_tap_target_size"
                android:minHeight="@dimen/notification_2025_min_tap_target_size"
                android:maxWidth="200dp"
                app:layout_constraintStart_toEndOf="@id/inline_dismiss"
                app:layout_constraintBaseline_toBaselineOf="@id/inline_dismiss"
                style="@style/TextAppearance.NotificationInfo.Button"
                android:textSize="@*android:dimen/notification_2025_action_text_size"/>
            <TextView
@@ -354,12 +373,18 @@
                android:layout_height="wrap_content"
                android:paddingTop="8dp"
                android:paddingBottom="@*android:dimen/notification_2025_margin"
                android:gravity="center"
                android:gravity="end"
                app:layout_constraintEnd_toEndOf="parent"
                android:minWidth="@dimen/notification_2025_min_tap_target_size"
                android:minHeight="@dimen/notification_2025_min_tap_target_size"
                android:maxWidth="125dp"
                style="@style/TextAppearance.NotificationInfo.Button"
                android:textSize="@*android:dimen/notification_2025_action_text_size"/>
        </LinearLayout>
            <androidx.constraintlayout.helper.widget.Flow
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:constraint_referenced_ids="inline_dismiss,turn_off_notifications,done"
                app:flow_wrapMode="chain"/>
        </androidx.constraintlayout.widget.ConstraintLayout>
    </LinearLayout>
</com.android.systemui.statusbar.notification.row.NotificationInfo>
+14 −1
Original line number Diff line number Diff line
@@ -340,16 +340,29 @@ asked for it -->
            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="start|center_vertical"
                android:minWidth="@dimen/notification_importance_toggle_size"
                android:minHeight="@dimen/notification_importance_toggle_size"
                android:maxWidth="200dp"
                android:paddingEnd="@dimen/notification_importance_button_padding"
                style="@style/TextAppearance.NotificationInfo.Button"/>
            <TextView
                android:id="@+id/turn_off_notifications"
                android:text="@string/inline_turn_off_notifications"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentStart="true"
                android:layout_toEndOf="@id/inline_dismiss"
                android:gravity="start|center_vertical"
                android:minWidth="@dimen/notification_importance_toggle_size"
                android:minHeight="@dimen/notification_importance_toggle_size"
                android:maxWidth="200dp"
                android:paddingStart="@dimen/notification_importance_button_padding"
                style="@style/TextAppearance.NotificationInfo.Button"/>
            <TextView
                android:id="@+id/done"
Loading