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

Commit 2b9e976c authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Hide the Default Notification Sound if enabling customized vibration" into main

parents 54bd56f0 23bba426
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.settings.notification;
import android.content.Context;
import android.media.RingtoneManager;

import com.android.server.notification.Flags;
import com.android.settings.R;

public class NotificationRingtonePreferenceController extends RingtonePreferenceControllerBase {
@@ -31,6 +32,9 @@ public class NotificationRingtonePreferenceController extends RingtonePreference

    @Override
    public boolean isAvailable() {
        if (isVibrationInSoundUriEnabled()) {
            return false;
        }
        return mContext.getResources().getBoolean(R.bool.config_show_notification_ringtone);
    }

@@ -43,4 +47,9 @@ public class NotificationRingtonePreferenceController extends RingtonePreference
    public int getRingtoneType() {
        return RingtoneManager.TYPE_NOTIFICATION;
    }

    private boolean isVibrationInSoundUriEnabled() {
        return Flags.notificationVibrationInSoundUri() && mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_ringtoneVibrationSettingsSupported);
    }
}
+44 −2
Original line number Diff line number Diff line
@@ -18,35 +18,77 @@ package com.android.settings.notification;

import static com.google.common.truth.Truth.assertThat;


import static org.mockito.Mockito.when;

import android.content.Context;
import android.content.res.Resources;
import android.media.RingtoneManager;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;

import com.android.server.notification.Flags;
import com.android.settings.R;

import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;

@RunWith(RobolectricTestRunner.class)
public class NotificationRingtonePreferenceControllerTest {

    private NotificationRingtonePreferenceController mController;
    @Mock private Context mMockContext;
    @Mock private Resources mMockResources;
    @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mController = new NotificationRingtonePreferenceController(RuntimeEnvironment.application);
        when(mMockContext.getResources()).thenReturn(mMockResources);
        mController = new NotificationRingtonePreferenceController(mMockContext);
    }

    @Test
    @DisableFlags(Flags.FLAG_NOTIFICATION_VIBRATION_IN_SOUND_URI)
    public void isAvailable_byDefault_isTrue() {
        when(mMockResources
                .getBoolean(com.android.internal.R.bool.config_ringtoneVibrationSettingsSupported))
                .thenReturn(false);
        when(mMockResources.getBoolean(R.bool.config_show_notification_ringtone))
                .thenReturn(true);

        assertThat(mController.isAvailable()).isTrue();
    }

    @Test
    @Config(qualifiers = "mcc999")
    @DisableFlags(Flags.FLAG_NOTIFICATION_VIBRATION_IN_SOUND_URI)
    public void isAvailable_whenNotVisible_isFalse() {
        when(mMockResources
                .getBoolean(com.android.internal.R.bool.config_ringtoneVibrationSettingsSupported))
                .thenReturn(false);
        when(mMockResources.getBoolean(R.bool.config_show_notification_ringtone))
                .thenReturn(false);

        assertThat(mController.isAvailable()).isFalse();
    }

    @Test
    @EnableFlags(Flags.FLAG_NOTIFICATION_VIBRATION_IN_SOUND_URI)
    public void isAvailable_whenFlagsNotificationVibrationInSoundUri_isFalse() {
        when(mMockResources
                .getBoolean(com.android.internal.R.bool.config_ringtoneVibrationSettingsSupported))
                .thenReturn(true);
        when(mMockResources.getBoolean(R.bool.config_show_notification_ringtone))
                .thenReturn(true);

        assertThat(mController.isAvailable()).isFalse();
    }