Loading packages/SystemUI/res/layout/notification_info.xml +75 −44 Original line number Diff line number Diff line Loading @@ -71,18 +71,38 @@ android:maxLines="1" android:layout_centerVertical="true" android:layout_toEndOf="@id/pkg_divider" /> <LinearLayout android:id="@+id/info_and_settings" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_alignParentEnd="true" android:paddingHorizontal="16dp" android:orientation="horizontal"> <!-- Optional link to app. Only appears if the channel is not disabled and the app asked for it --> <ImageButton android:id="@+id/app_settings" android:layout_width="40dp" android:layout_height="56dp" android:layout_centerVertical="true" android:paddingRight="16dp" android:visibility="gone" android:background="@drawable/ripple_drawable" android:contentDescription="@string/notification_app_settings" android:src="@drawable/ic_settings" android:tint="?android:attr/colorAccent" /> <!-- 24 dp icon with 16 dp padding all around to mirror notification content margins --> <ImageButton android:id="@+id/info" android:layout_width="56dp" android:layout_width="24dp" android:layout_height="56dp" android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:background="@drawable/ripple_drawable" android:contentDescription="@string/notification_more_settings" android:padding="16dp" android:src="@drawable/ic_info" android:tint="?android:attr/colorAccent" /> </LinearLayout> </RelativeLayout> <LinearLayout Loading Loading @@ -143,50 +163,61 @@ </LinearLayout> <!-- Settings and Done buttons --> <LinearLayout <RelativeLayout android:id="@+id/block_or_minimize" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/notification_guts_button_spacing" android:layout_marginStart="@dimen/notification_guts_button_side_margin" android:layout_marginEnd="@dimen/notification_guts_button_side_margin" android:gravity="end" android:orientation="horizontal"> <!-- Optional link to app. Only appears if the channel is not disabled and the app asked for it --> android:clipChildren="false" android:clipToPadding="false"> <TextView android:id="@+id/app_settings" android:text="@string/notification_app_settings" android:id="@+id/done" android:text="@string/inline_done_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" android:ellipsize="end" android:maxLines="1" android:layout_centerVertical="true" style="@style/TextAppearance.NotificationInfo.Button"/> <LinearLayout android:id="@+id/block_buttons" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_alignParentEnd="true" android:orientation="horizontal"> <TextView android:id="@+id/block" android:text="@string/inline_stop_button" android:id="@+id/deliver_silently" android:text="@string/inline_deliver_silently_button" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginStart="@dimen/notification_guts_button_horizontal_spacing" android:paddingRight="24dp" style="@style/TextAppearance.NotificationInfo.Button"/> <TextView android:id="@+id/minimize" android:text="@string/inline_minimize_button" android:id="@+id/block" android:text="@string/inline_block_button" android:minWidth="48dp" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginStart="@dimen/notification_guts_button_horizontal_spacing" style="@style/TextAppearance.NotificationInfo.Button"/> <TextView android:id="@+id/keep" android:id="@+id/minimize" android:text="@string/inline_minimize_button" android:minWidth="48dp" android:text="@string/inline_keep_button" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginStart="@dimen/notification_guts_button_horizontal_spacing" style="@style/TextAppearance.NotificationInfo.Button"/> </LinearLayout> </RelativeLayout> <LinearLayout android:id="@+id/interruptiveness_settings" android:layout_width="match_parent" Loading packages/SystemUI/res/values/strings.xml +6 −0 Original line number Diff line number Diff line Loading @@ -1573,12 +1573,18 @@ <string name="inline_blocking_helper">You usually dismiss these notifications. \nKeep showing them?</string> <!-- Notification Inline controls: button to dismiss the blocking helper [CHAR_LIMIT=25] --> <string name="inline_done_button">Done</string> <!-- Notification Inline controls: continue receiving notifications prompt, channel level --> <string name="inline_keep_showing">Keep showing these notifications?</string> <!-- Notification inline controls: block notifications button --> <string name="inline_stop_button">Stop notifications</string> <!-- Notification inline controls: button to deliver notifications silently from this channel [CHAR_LIMIT=35] --> <string name="inline_deliver_silently_button">Deliver Silently</string> <!-- Notification inline controls: button to block notifications from this channel [CHAR_LIMIT=35] --> <string name="inline_block_button">Block</string> Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationCounters.java +3 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,9 @@ public class NotificationCounters { /** Counter tag for when the user hits 'stop notifications' in the blocking helper. */ public static final String BLOCKING_HELPER_STOP_NOTIFICATIONS = "blocking_helper_stop_notifications"; /** Counter tag for when the user hits 'deliver silently' in the blocking helper. */ public static final String BLOCKING_HELPER_DELIVER_SILENTLY = "blocking_helper_deliver_silently"; /** Counter tag for when the user hits 'show silently' in the blocking helper. */ public static final String BLOCKING_HELPER_TOGGLE_SILENT = "blocking_helper_toggle_silent"; Loading packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java +27 −24 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G public static final int ACTION_UNDO = 1; public static final int ACTION_TOGGLE_SILENT = 2; public static final int ACTION_BLOCK = 3; public static final int ACTION_DELIVER_SILENTLY = 4; private INotificationManager mINotificationManager; private PackageManager mPm; Loading Loading @@ -135,30 +136,26 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G }; private OnClickListener mOnToggleSilent = v -> { Runnable saveImportance = () -> { swapContent(ACTION_TOGGLE_SILENT, true /* animate */); if (mIsForBlockingHelper) { mMetricsLogger.write(getLogMaker() .setCategory(MetricsEvent.NOTIFICATION_BLOCKING_HELPER) .setType(MetricsEvent.TYPE_ACTION) .setSubtype(MetricsEvent.BLOCKING_HELPER_CLICK_ALERT_ME)); } handleSaveImportance(ACTION_TOGGLE_SILENT, MetricsEvent.BLOCKING_HELPER_CLICK_ALERT_ME); }; if (mCheckSaveListener != null) { mCheckSaveListener.checkSave(saveImportance, mSbn); } else { saveImportance.run(); } private OnClickListener mOnDeliverSilently = v -> { handleSaveImportance( ACTION_DELIVER_SILENTLY, MetricsEvent.BLOCKING_HELPER_CLICK_STAY_SILENT); }; private OnClickListener mOnStopOrMinimizeNotifications = v -> { handleSaveImportance(ACTION_BLOCK, MetricsEvent.BLOCKING_HELPER_CLICK_BLOCKED); }; private void handleSaveImportance(int action, int metricsSubtype) { Runnable saveImportance = () -> { swapContent(ACTION_BLOCK, true /* animate */); swapContent(action, true /* animate */); if (mIsForBlockingHelper) { mMetricsLogger.write(getLogMaker() .setCategory(MetricsEvent.NOTIFICATION_BLOCKING_HELPER) .setType(MetricsEvent.TYPE_ACTION) .setSubtype(MetricsEvent.BLOCKING_HELPER_CLICK_BLOCKED)); .setSubtype(metricsSubtype)); } }; if (mCheckSaveListener != null) { Loading @@ -166,7 +163,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G } else { saveImportance.run(); } }; } private OnClickListener mOnUndo = v -> { // Reset exit counter that we'll log and record an undo event separately (not an exit event) Loading Loading @@ -283,8 +280,6 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G mMetricsLogger.write(notificationControlsLogMaker()); } private void bindHeader() throws RemoteException { // Package name Drawable pkgicon = null; Loading Loading @@ -479,17 +474,21 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G findViewById(R.id.block_or_minimize).setVisibility(VISIBLE); findViewById(R.id.interruptiveness_settings).setVisibility(GONE); View block = findViewById(R.id.block); TextView keep = findViewById(R.id.keep); TextView done = findViewById(R.id.done); View minimize = findViewById(R.id.minimize); View deliverSilently = findViewById(R.id.deliver_silently); block.setOnClickListener(mOnStopOrMinimizeNotifications); keep.setOnClickListener(mOnKeepShowing); done.setOnClickListener(mOnKeepShowing); minimize.setOnClickListener(mOnStopOrMinimizeNotifications); deliverSilently.setOnClickListener(mOnDeliverSilently); if (mIsNonblockable) { keep.setText(android.R.string.ok); done.setText(android.R.string.ok); block.setVisibility(GONE); minimize.setVisibility(GONE); deliverSilently.setVisibility(GONE); } else if (mIsForeground) { block.setVisibility(GONE); minimize.setVisibility(VISIBLE); Loading @@ -499,7 +498,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G } // Set up app settings link (i.e. Customize) TextView settingsLinkView = findViewById(R.id.app_settings); View settingsLinkView = findViewById(R.id.app_settings); Intent settingsIntent = getAppSettingsIntent(mPm, mPackageName, mSingleNotificationChannel, mSbn.getId(), mSbn.getTag()); Loading @@ -507,7 +506,6 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G && settingsIntent != null && !TextUtils.isEmpty(mSbn.getNotification().getSettingsText())) { settingsLinkView.setVisibility(VISIBLE); settingsLinkView.setText(mContext.getString(R.string.notification_app_settings)); settingsLinkView.setOnClickListener((View view) -> { mAppSettingsClickListener.onClick(view, settingsIntent); }); Loading @@ -531,6 +529,11 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G case ACTION_UNDO: mChosenImportance = mStartingChannelImportance; break; case ACTION_DELIVER_SILENTLY: mExitReason = NotificationCounters.BLOCKING_HELPER_DELIVER_SILENTLY; mChosenImportance = IMPORTANCE_LOW; confirmationText.setText(R.string.notification_channel_silenced); break; case ACTION_TOGGLE_SILENT: mExitReason = NotificationCounters.BLOCKING_HELPER_TOGGLE_SILENT; if (mWasShownHighPriority) { Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java +37 −2 Original line number Diff line number Diff line Loading @@ -737,7 +737,7 @@ public class NotificationInfoTest extends SysuiTestCase { guts.setGutsContent(mNotificationInfo); mNotificationInfo.setGutsParent(guts); mNotificationInfo.findViewById(R.id.keep).performClick(); mNotificationInfo.findViewById(R.id.done).performClick(); verify(mBlockingHelperManager).dismissCurrentBlockingHelper(); mTestableLooper.processAllMessages(); Loading Loading @@ -765,7 +765,7 @@ public class NotificationInfoTest extends SysuiTestCase { guts.setGutsContent(mNotificationInfo); mNotificationInfo.setGutsParent(guts); mNotificationInfo.findViewById(R.id.keep).performClick(); mNotificationInfo.findViewById(R.id.done).performClick(); verify(mBlockingHelperManager).dismissCurrentBlockingHelper(); mTestableLooper.processAllMessages(); Loading Loading @@ -960,6 +960,41 @@ public class NotificationInfoTest extends SysuiTestCase { assertEquals(IMPORTANCE_MIN, updated.getValue().getImportance()); } @Test public void testSilentlyChangedCallsUpdateNotificationChannel_blockingHelper() throws Exception { mNotificationChannel.setImportance(IMPORTANCE_LOW); mNotificationInfo.bindNotification( mMockPackageManager, mMockINotificationManager, TEST_PACKAGE_NAME, mNotificationChannel, 1 /* numChannels */, mSbn, null /* checkSaveListener */, null /* onSettingsClick */, null /* onAppSettingsClick */, true /*provisioned */, false /* isNonblockable */, true /* isForBlockingHelper */, true /* isUserSentimentNegative */, IMPORTANCE_DEFAULT, false); mNotificationInfo.findViewById(R.id.deliver_silently).performClick(); waitForUndoButton(); mNotificationInfo.handleCloseControls(true, false); mTestableLooper.processAllMessages(); ArgumentCaptor<NotificationChannel> updated = ArgumentCaptor.forClass(NotificationChannel.class); verify(mMockINotificationManager, times(1)).updateNotificationChannelForPackage( anyString(), eq(TEST_UID), updated.capture()); assertTrue((updated.getValue().getUserLockedFields() & USER_LOCKED_IMPORTANCE) != 0); assertEquals(IMPORTANCE_LOW, updated.getValue().getImportance()); } @Test public void testKeepUpdatesNotificationChannel() throws Exception { mNotificationChannel.setImportance(IMPORTANCE_LOW); Loading Loading
packages/SystemUI/res/layout/notification_info.xml +75 −44 Original line number Diff line number Diff line Loading @@ -71,18 +71,38 @@ android:maxLines="1" android:layout_centerVertical="true" android:layout_toEndOf="@id/pkg_divider" /> <LinearLayout android:id="@+id/info_and_settings" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_alignParentEnd="true" android:paddingHorizontal="16dp" android:orientation="horizontal"> <!-- Optional link to app. Only appears if the channel is not disabled and the app asked for it --> <ImageButton android:id="@+id/app_settings" android:layout_width="40dp" android:layout_height="56dp" android:layout_centerVertical="true" android:paddingRight="16dp" android:visibility="gone" android:background="@drawable/ripple_drawable" android:contentDescription="@string/notification_app_settings" android:src="@drawable/ic_settings" android:tint="?android:attr/colorAccent" /> <!-- 24 dp icon with 16 dp padding all around to mirror notification content margins --> <ImageButton android:id="@+id/info" android:layout_width="56dp" android:layout_width="24dp" android:layout_height="56dp" android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:background="@drawable/ripple_drawable" android:contentDescription="@string/notification_more_settings" android:padding="16dp" android:src="@drawable/ic_info" android:tint="?android:attr/colorAccent" /> </LinearLayout> </RelativeLayout> <LinearLayout Loading Loading @@ -143,50 +163,61 @@ </LinearLayout> <!-- Settings and Done buttons --> <LinearLayout <RelativeLayout android:id="@+id/block_or_minimize" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/notification_guts_button_spacing" android:layout_marginStart="@dimen/notification_guts_button_side_margin" android:layout_marginEnd="@dimen/notification_guts_button_side_margin" android:gravity="end" android:orientation="horizontal"> <!-- Optional link to app. Only appears if the channel is not disabled and the app asked for it --> android:clipChildren="false" android:clipToPadding="false"> <TextView android:id="@+id/app_settings" android:text="@string/notification_app_settings" android:id="@+id/done" android:text="@string/inline_done_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" android:ellipsize="end" android:maxLines="1" android:layout_centerVertical="true" style="@style/TextAppearance.NotificationInfo.Button"/> <LinearLayout android:id="@+id/block_buttons" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_alignParentEnd="true" android:orientation="horizontal"> <TextView android:id="@+id/block" android:text="@string/inline_stop_button" android:id="@+id/deliver_silently" android:text="@string/inline_deliver_silently_button" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginStart="@dimen/notification_guts_button_horizontal_spacing" android:paddingRight="24dp" style="@style/TextAppearance.NotificationInfo.Button"/> <TextView android:id="@+id/minimize" android:text="@string/inline_minimize_button" android:id="@+id/block" android:text="@string/inline_block_button" android:minWidth="48dp" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginStart="@dimen/notification_guts_button_horizontal_spacing" style="@style/TextAppearance.NotificationInfo.Button"/> <TextView android:id="@+id/keep" android:id="@+id/minimize" android:text="@string/inline_minimize_button" android:minWidth="48dp" android:text="@string/inline_keep_button" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginStart="@dimen/notification_guts_button_horizontal_spacing" style="@style/TextAppearance.NotificationInfo.Button"/> </LinearLayout> </RelativeLayout> <LinearLayout android:id="@+id/interruptiveness_settings" android:layout_width="match_parent" Loading
packages/SystemUI/res/values/strings.xml +6 −0 Original line number Diff line number Diff line Loading @@ -1573,12 +1573,18 @@ <string name="inline_blocking_helper">You usually dismiss these notifications. \nKeep showing them?</string> <!-- Notification Inline controls: button to dismiss the blocking helper [CHAR_LIMIT=25] --> <string name="inline_done_button">Done</string> <!-- Notification Inline controls: continue receiving notifications prompt, channel level --> <string name="inline_keep_showing">Keep showing these notifications?</string> <!-- Notification inline controls: block notifications button --> <string name="inline_stop_button">Stop notifications</string> <!-- Notification inline controls: button to deliver notifications silently from this channel [CHAR_LIMIT=35] --> <string name="inline_deliver_silently_button">Deliver Silently</string> <!-- Notification inline controls: button to block notifications from this channel [CHAR_LIMIT=35] --> <string name="inline_block_button">Block</string> Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationCounters.java +3 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,9 @@ public class NotificationCounters { /** Counter tag for when the user hits 'stop notifications' in the blocking helper. */ public static final String BLOCKING_HELPER_STOP_NOTIFICATIONS = "blocking_helper_stop_notifications"; /** Counter tag for when the user hits 'deliver silently' in the blocking helper. */ public static final String BLOCKING_HELPER_DELIVER_SILENTLY = "blocking_helper_deliver_silently"; /** Counter tag for when the user hits 'show silently' in the blocking helper. */ public static final String BLOCKING_HELPER_TOGGLE_SILENT = "blocking_helper_toggle_silent"; Loading
packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationInfo.java +27 −24 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G public static final int ACTION_UNDO = 1; public static final int ACTION_TOGGLE_SILENT = 2; public static final int ACTION_BLOCK = 3; public static final int ACTION_DELIVER_SILENTLY = 4; private INotificationManager mINotificationManager; private PackageManager mPm; Loading Loading @@ -135,30 +136,26 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G }; private OnClickListener mOnToggleSilent = v -> { Runnable saveImportance = () -> { swapContent(ACTION_TOGGLE_SILENT, true /* animate */); if (mIsForBlockingHelper) { mMetricsLogger.write(getLogMaker() .setCategory(MetricsEvent.NOTIFICATION_BLOCKING_HELPER) .setType(MetricsEvent.TYPE_ACTION) .setSubtype(MetricsEvent.BLOCKING_HELPER_CLICK_ALERT_ME)); } handleSaveImportance(ACTION_TOGGLE_SILENT, MetricsEvent.BLOCKING_HELPER_CLICK_ALERT_ME); }; if (mCheckSaveListener != null) { mCheckSaveListener.checkSave(saveImportance, mSbn); } else { saveImportance.run(); } private OnClickListener mOnDeliverSilently = v -> { handleSaveImportance( ACTION_DELIVER_SILENTLY, MetricsEvent.BLOCKING_HELPER_CLICK_STAY_SILENT); }; private OnClickListener mOnStopOrMinimizeNotifications = v -> { handleSaveImportance(ACTION_BLOCK, MetricsEvent.BLOCKING_HELPER_CLICK_BLOCKED); }; private void handleSaveImportance(int action, int metricsSubtype) { Runnable saveImportance = () -> { swapContent(ACTION_BLOCK, true /* animate */); swapContent(action, true /* animate */); if (mIsForBlockingHelper) { mMetricsLogger.write(getLogMaker() .setCategory(MetricsEvent.NOTIFICATION_BLOCKING_HELPER) .setType(MetricsEvent.TYPE_ACTION) .setSubtype(MetricsEvent.BLOCKING_HELPER_CLICK_BLOCKED)); .setSubtype(metricsSubtype)); } }; if (mCheckSaveListener != null) { Loading @@ -166,7 +163,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G } else { saveImportance.run(); } }; } private OnClickListener mOnUndo = v -> { // Reset exit counter that we'll log and record an undo event separately (not an exit event) Loading Loading @@ -283,8 +280,6 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G mMetricsLogger.write(notificationControlsLogMaker()); } private void bindHeader() throws RemoteException { // Package name Drawable pkgicon = null; Loading Loading @@ -479,17 +474,21 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G findViewById(R.id.block_or_minimize).setVisibility(VISIBLE); findViewById(R.id.interruptiveness_settings).setVisibility(GONE); View block = findViewById(R.id.block); TextView keep = findViewById(R.id.keep); TextView done = findViewById(R.id.done); View minimize = findViewById(R.id.minimize); View deliverSilently = findViewById(R.id.deliver_silently); block.setOnClickListener(mOnStopOrMinimizeNotifications); keep.setOnClickListener(mOnKeepShowing); done.setOnClickListener(mOnKeepShowing); minimize.setOnClickListener(mOnStopOrMinimizeNotifications); deliverSilently.setOnClickListener(mOnDeliverSilently); if (mIsNonblockable) { keep.setText(android.R.string.ok); done.setText(android.R.string.ok); block.setVisibility(GONE); minimize.setVisibility(GONE); deliverSilently.setVisibility(GONE); } else if (mIsForeground) { block.setVisibility(GONE); minimize.setVisibility(VISIBLE); Loading @@ -499,7 +498,7 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G } // Set up app settings link (i.e. Customize) TextView settingsLinkView = findViewById(R.id.app_settings); View settingsLinkView = findViewById(R.id.app_settings); Intent settingsIntent = getAppSettingsIntent(mPm, mPackageName, mSingleNotificationChannel, mSbn.getId(), mSbn.getTag()); Loading @@ -507,7 +506,6 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G && settingsIntent != null && !TextUtils.isEmpty(mSbn.getNotification().getSettingsText())) { settingsLinkView.setVisibility(VISIBLE); settingsLinkView.setText(mContext.getString(R.string.notification_app_settings)); settingsLinkView.setOnClickListener((View view) -> { mAppSettingsClickListener.onClick(view, settingsIntent); }); Loading @@ -531,6 +529,11 @@ public class NotificationInfo extends LinearLayout implements NotificationGuts.G case ACTION_UNDO: mChosenImportance = mStartingChannelImportance; break; case ACTION_DELIVER_SILENTLY: mExitReason = NotificationCounters.BLOCKING_HELPER_DELIVER_SILENTLY; mChosenImportance = IMPORTANCE_LOW; confirmationText.setText(R.string.notification_channel_silenced); break; case ACTION_TOGGLE_SILENT: mExitReason = NotificationCounters.BLOCKING_HELPER_TOGGLE_SILENT; if (mWasShownHighPriority) { Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationInfoTest.java +37 −2 Original line number Diff line number Diff line Loading @@ -737,7 +737,7 @@ public class NotificationInfoTest extends SysuiTestCase { guts.setGutsContent(mNotificationInfo); mNotificationInfo.setGutsParent(guts); mNotificationInfo.findViewById(R.id.keep).performClick(); mNotificationInfo.findViewById(R.id.done).performClick(); verify(mBlockingHelperManager).dismissCurrentBlockingHelper(); mTestableLooper.processAllMessages(); Loading Loading @@ -765,7 +765,7 @@ public class NotificationInfoTest extends SysuiTestCase { guts.setGutsContent(mNotificationInfo); mNotificationInfo.setGutsParent(guts); mNotificationInfo.findViewById(R.id.keep).performClick(); mNotificationInfo.findViewById(R.id.done).performClick(); verify(mBlockingHelperManager).dismissCurrentBlockingHelper(); mTestableLooper.processAllMessages(); Loading Loading @@ -960,6 +960,41 @@ public class NotificationInfoTest extends SysuiTestCase { assertEquals(IMPORTANCE_MIN, updated.getValue().getImportance()); } @Test public void testSilentlyChangedCallsUpdateNotificationChannel_blockingHelper() throws Exception { mNotificationChannel.setImportance(IMPORTANCE_LOW); mNotificationInfo.bindNotification( mMockPackageManager, mMockINotificationManager, TEST_PACKAGE_NAME, mNotificationChannel, 1 /* numChannels */, mSbn, null /* checkSaveListener */, null /* onSettingsClick */, null /* onAppSettingsClick */, true /*provisioned */, false /* isNonblockable */, true /* isForBlockingHelper */, true /* isUserSentimentNegative */, IMPORTANCE_DEFAULT, false); mNotificationInfo.findViewById(R.id.deliver_silently).performClick(); waitForUndoButton(); mNotificationInfo.handleCloseControls(true, false); mTestableLooper.processAllMessages(); ArgumentCaptor<NotificationChannel> updated = ArgumentCaptor.forClass(NotificationChannel.class); verify(mMockINotificationManager, times(1)).updateNotificationChannelForPackage( anyString(), eq(TEST_UID), updated.capture()); assertTrue((updated.getValue().getUserLockedFields() & USER_LOCKED_IMPORTANCE) != 0); assertEquals(IMPORTANCE_LOW, updated.getValue().getImportance()); } @Test public void testKeepUpdatesNotificationChannel() throws Exception { mNotificationChannel.setImportance(IMPORTANCE_LOW); Loading