From a1c0dc75cd0fcd2271b10bdabaa0403b30a90b65 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Wed, 10 Nov 2021 14:16:42 -0500 Subject: [PATCH] Properly show conversation settings ... when the backing shortcut is missing, so users can change notification settings when the shortcut hasn't yet been recreated by the app when setting up a new device Test: Robotests (confirmed that the 2 controllers that used mConversationInfo already tested for null), manual Fixes: 203991823 Change-Id: I477c6b0aef0d978767788cbfc1bfadea4d36cda8 --- .../notification/app/ConversationNotificationSettings.java | 7 ++++--- .../settings/notification/app/NotificationSettings.java | 3 +++ .../notification/app/HeaderPreferenceControllerTest.java | 6 +++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/com/android/settings/notification/app/ConversationNotificationSettings.java b/src/com/android/settings/notification/app/ConversationNotificationSettings.java index d659c545cdf..ec9c65f51ad 100644 --- a/src/com/android/settings/notification/app/ConversationNotificationSettings.java +++ b/src/com/android/settings/notification/app/ConversationNotificationSettings.java @@ -41,13 +41,14 @@ public class ConversationNotificationSettings extends NotificationSettings { @Override public void onResume() { super.onResume(); - if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null || mChannel == null - || mConversationInfo == null) { + if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null || mChannel == null) { Log.w(TAG, "Missing package or uid or packageinfo or channel"); finish(); return; } - getActivity().setTitle(mConversationInfo.getLabel()); + getActivity().setTitle(mConversationInfo == null + ? mChannel.getName() + : mConversationInfo.getLabel()); for (NotificationPreferenceController controller : mControllers) { controller.onResume(mAppRow, mChannel, mChannelGroup, mConversationDrawable, diff --git a/src/com/android/settings/notification/app/NotificationSettings.java b/src/com/android/settings/notification/app/NotificationSettings.java index 426625df223..9dc0b595035 100644 --- a/src/com/android/settings/notification/app/NotificationSettings.java +++ b/src/com/android/settings/notification/app/NotificationSettings.java @@ -270,6 +270,9 @@ abstract public class NotificationSettings extends DashboardFragment { String conversationId = intent != null ? intent.getStringExtra(Settings.EXTRA_CONVERSATION_ID) : null; mChannel = mBackend.getChannel(mPkg, mUid, channelId, conversationId); + if (mChannel == null) { + mBackend.getChannel(mPkg, mUid, channelId, null); + } } private void loadConversation() { diff --git a/tests/robotests/src/com/android/settings/notification/app/HeaderPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/HeaderPreferenceControllerTest.java index c7c21a7f3d2..4ca4f8db185 100644 --- a/tests/robotests/src/com/android/settings/notification/app/HeaderPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/app/HeaderPreferenceControllerTest.java @@ -151,7 +151,7 @@ public class HeaderPreferenceControllerTest { NotificationChannel defaultChannel = new NotificationChannel( NotificationChannel.DEFAULT_CHANNEL_ID, "", IMPORTANCE_NONE); mController.onResume(appRow, defaultChannel, null, null, null, null, null); - assertEquals("", mController.getSummary()); + assertEquals(appRow.label, mController.getSummary()); } @Test @@ -159,13 +159,13 @@ public class HeaderPreferenceControllerTest { NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); appRow.label = "bananas"; mController.onResume(appRow, null, null, null, null, null, null); - assertEquals("", mController.getSecondSummary()); + assertEquals(null, mController.getSecondSummary()); NotificationChannelGroup group = new NotificationChannelGroup("id", "name"); NotificationChannel channel = new NotificationChannel("cid", "cname", IMPORTANCE_NONE); mController.onResume(appRow, channel, group, null, null, null, null); - assertEquals("", mController.getSecondSummary()); + assertEquals(null, mController.getSecondSummary()); channel.setDescription("description"); mController.onResume(appRow, channel, group, null, null, null, null);