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

Commit 23bba426 authored by yumeichen's avatar yumeichen
Browse files

Hide the Default Notification Sound if enabling customized vibration

Flag:com.android.server.notification.notification_vibration_in_sound_uri
Test: atest NotificationRingtonePreferenceControllerTest
Bug: 358525376

Change-Id: Ic7517828df746700ceb6e0605a9d32066c7aed50
parent 636e90be
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();
    }