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
This commit is contained in:
Julia Reynolds
2021-11-10 14:16:42 -05:00
parent 6c43335181
commit a1c0dc75cd
3 changed files with 10 additions and 6 deletions

View File

@@ -41,13 +41,14 @@ public class ConversationNotificationSettings extends NotificationSettings {
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null || mChannel == null if (mUid < 0 || TextUtils.isEmpty(mPkg) || mPkgInfo == null || mChannel == null) {
|| mConversationInfo == null) {
Log.w(TAG, "Missing package or uid or packageinfo or channel"); Log.w(TAG, "Missing package or uid or packageinfo or channel");
finish(); finish();
return; return;
} }
getActivity().setTitle(mConversationInfo.getLabel()); getActivity().setTitle(mConversationInfo == null
? mChannel.getName()
: mConversationInfo.getLabel());
for (NotificationPreferenceController controller : mControllers) { for (NotificationPreferenceController controller : mControllers) {
controller.onResume(mAppRow, mChannel, mChannelGroup, mConversationDrawable, controller.onResume(mAppRow, mChannel, mChannelGroup, mConversationDrawable,

View File

@@ -270,6 +270,9 @@ abstract public class NotificationSettings extends DashboardFragment {
String conversationId = intent != null String conversationId = intent != null
? intent.getStringExtra(Settings.EXTRA_CONVERSATION_ID) : null; ? intent.getStringExtra(Settings.EXTRA_CONVERSATION_ID) : null;
mChannel = mBackend.getChannel(mPkg, mUid, channelId, conversationId); mChannel = mBackend.getChannel(mPkg, mUid, channelId, conversationId);
if (mChannel == null) {
mBackend.getChannel(mPkg, mUid, channelId, null);
}
} }
private void loadConversation() { private void loadConversation() {

View File

@@ -151,7 +151,7 @@ public class HeaderPreferenceControllerTest {
NotificationChannel defaultChannel = new NotificationChannel( NotificationChannel defaultChannel = new NotificationChannel(
NotificationChannel.DEFAULT_CHANNEL_ID, "", IMPORTANCE_NONE); NotificationChannel.DEFAULT_CHANNEL_ID, "", IMPORTANCE_NONE);
mController.onResume(appRow, defaultChannel, null, null, null, null, null); mController.onResume(appRow, defaultChannel, null, null, null, null, null);
assertEquals("", mController.getSummary()); assertEquals(appRow.label, mController.getSummary());
} }
@Test @Test
@@ -159,13 +159,13 @@ public class HeaderPreferenceControllerTest {
NotificationBackend.AppRow appRow = new NotificationBackend.AppRow(); NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
appRow.label = "bananas"; appRow.label = "bananas";
mController.onResume(appRow, null, null, null, null, null, null); mController.onResume(appRow, null, null, null, null, null, null);
assertEquals("", mController.getSecondSummary()); assertEquals(null, mController.getSecondSummary());
NotificationChannelGroup group = new NotificationChannelGroup("id", "name"); NotificationChannelGroup group = new NotificationChannelGroup("id", "name");
NotificationChannel channel = new NotificationChannel("cid", "cname", IMPORTANCE_NONE); NotificationChannel channel = new NotificationChannel("cid", "cname", IMPORTANCE_NONE);
mController.onResume(appRow, channel, group, null, null, null, null); mController.onResume(appRow, channel, group, null, null, null, null);
assertEquals("", mController.getSecondSummary()); assertEquals(null, mController.getSecondSummary());
channel.setDescription("description"); channel.setDescription("description");
mController.onResume(appRow, channel, group, null, null, null, null); mController.onResume(appRow, channel, group, null, null, null, null);