diff --git a/src/com/android/settings/notification/NotificationRingtonePreferenceController.java b/src/com/android/settings/notification/NotificationRingtonePreferenceController.java index 00f478f2d28..946b7837995 100644 --- a/src/com/android/settings/notification/NotificationRingtonePreferenceController.java +++ b/src/com/android/settings/notification/NotificationRingtonePreferenceController.java @@ -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); + } } diff --git a/tests/robotests/src/com/android/settings/notification/NotificationRingtonePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/NotificationRingtonePreferenceControllerTest.java index 1aecad51242..a04a14de57b 100644 --- a/tests/robotests/src/com/android/settings/notification/NotificationRingtonePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/NotificationRingtonePreferenceControllerTest.java @@ -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(); }