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
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,

View File

@@ -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() {

View File

@@ -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);