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

Commit d6c932cd authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Handle null audio attributes

Test: SoundPreferenceControllerTest
Fixes: 358540739
Flag: EXEMPT bugfix
Change-Id: I9a0e6066ccc2315b276564178c13ed59dd22162b
parent 2bab900f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -101,6 +101,8 @@ public class SoundPreferenceController extends NotificationPreferenceController
    public boolean handlePreferenceTreeClick(Preference preference) {
        if (KEY_SOUND.equals(preference.getKey()) && mFragment != null) {
            NotificationSoundPreference pref = (NotificationSoundPreference) preference;
            // default to notification
            pref.setRingtoneType(RingtoneManager.TYPE_NOTIFICATION);
            if (mChannel != null && mChannel.getAudioAttributes() != null) {
                if (USAGE_ALARM == mChannel.getAudioAttributes().getUsage()) {
                    pref.setRingtoneType(RingtoneManager.TYPE_ALARM);
+20 −0
Original line number Diff line number Diff line
@@ -302,6 +302,26 @@ public class SoundPreferenceControllerTest {
                        RingtoneManager.EXTRA_RINGTONE_TYPE, 0));
    }

    @Test
    public void testOnPreferenceTreeClick_noAudioAttributes() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        NotificationChannel channel = new NotificationChannel("", "", IMPORTANCE_HIGH);
        channel.setSound(null, null);
        mController.onResume(appRow, channel, null, null, null, null, null);

        AttributeSet attributeSet = Robolectric.buildAttributeSet().build();
        NotificationSoundPreference pref =
                spy(new NotificationSoundPreference(mContext, attributeSet));
        pref.setKey(mController.getPreferenceKey());
        mController.handlePreferenceTreeClick(pref);

        ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class);
        verify(pref, times(1)).onPrepareRingtonePickerIntent(intentArgumentCaptor.capture());
        assertEquals(RingtoneManager.TYPE_NOTIFICATION,
                intentArgumentCaptor.getValue().getIntExtra(
                        RingtoneManager.EXTRA_RINGTONE_TYPE, 0));
    }

    @Test
    public void testOnActivityResult() {
        NotificationSoundPreference pref = mock(NotificationSoundPreference.class);