Merge "Muting ring volume slider disables notification" into tm-qpr-dev am: 40a293fbdf

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/21164988

Change-Id: I8043d9156b1602379a6580cffb29c5addf32d8ee
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Behnam Heydarshahi
2023-02-16 15:01:11 +00:00
committed by Automerger Merge Worker
7 changed files with 121 additions and 24 deletions

View File

@@ -198,6 +198,7 @@ public class NotificationVolumePreferenceControllerTest {
com.android.settings.R.bool.config_show_notification_volume)).thenReturn(true);
// block the alternative condition to enable controller
when(mTelephonyManager.isVoiceCapable()).thenReturn(true);
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
SystemUiDeviceConfigFlags.VOLUME_SEPARATE_NOTIFICATION, "false", false);
@@ -217,8 +218,8 @@ public class NotificationVolumePreferenceControllerTest {
SystemUiDeviceConfigFlags.VOLUME_SEPARATE_NOTIFICATION, Boolean.toString(true),
false);
assertThat(controller.getAvailabilityStatus()
== BasePreferenceController.AVAILABLE).isTrue();
assertThat(controller.getAvailabilityStatus()).isEqualTo(
BasePreferenceController.AVAILABLE);
}
@Test
@@ -233,9 +234,10 @@ public class NotificationVolumePreferenceControllerTest {
// block the alternative condition to enable controller
when(mTelephonyManager.isVoiceCapable()).thenReturn(true);
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
SystemUiDeviceConfigFlags.VOLUME_SEPARATE_NOTIFICATION, "true", false);
NotificationVolumePreferenceController controller =
new NotificationVolumePreferenceController(mContext);
@@ -254,4 +256,19 @@ public class NotificationVolumePreferenceControllerTest {
== BasePreferenceController.UNSUPPORTED_ON_DEVICE).isTrue();
}
@Test
public void ringerModeSilent_unaliased_getAvailability_returnsDisabled() {
when(mResources.getBoolean(
com.android.settings.R.bool.config_show_notification_volume)).thenReturn(true);
when(mHelper.isSingleVolume()).thenReturn(false);
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
SystemUiDeviceConfigFlags.VOLUME_SEPARATE_NOTIFICATION, "true", false);
assertThat(mController.getAvailabilityStatus())
.isEqualTo(BasePreferenceController.DISABLED_DEPENDENT_SETTING);
}
}

View File

@@ -34,6 +34,7 @@ import android.media.AudioManager;
import android.net.Uri;
import com.android.settings.notification.MediaVolumePreferenceController;
import com.android.settings.notification.NotificationVolumePreferenceController;
import com.android.settings.notification.RingVolumePreferenceController;
import com.android.settings.notification.SeparateRingVolumePreferenceController;
import com.android.settings.notification.VolumeSeekBarPreferenceController;
@@ -64,6 +65,7 @@ public class VolumeSliceHelperTest {
private VolumeSeekBarPreferenceController mMediaController;
private VolumeSeekBarPreferenceController mRingController;
private VolumeSeekBarPreferenceController mSeparateRingController;
private VolumeSeekBarPreferenceController mNotificationController;
@Before
public void setUp() {
@@ -72,8 +74,9 @@ public class VolumeSliceHelperTest {
when(mContext.getContentResolver()).thenReturn(mResolver);
mMediaController = new MediaVolumePreferenceController(mContext);
mSeparateRingController = new SeparateRingVolumePreferenceController(mContext);
mRingController = new RingVolumePreferenceController(mContext);
mSeparateRingController = new SeparateRingVolumePreferenceController(mContext);
mNotificationController = new NotificationVolumePreferenceController(mContext);
mIntent = createIntent(AudioManager.VOLUME_CHANGED_ACTION)
.putExtra(AudioManager.EXTRA_VOLUME_STREAM_VALUE, 1)
@@ -238,6 +241,40 @@ public class VolumeSliceHelperTest {
verify(mResolver).notifyChange(mMediaController.getSliceUri(), null);
}
/**
* Without this test passing, when notification is separated from ring and its value is already
* zero, setting ringermode to silent would not disable notification slider.
* Note: the above scenario happens only in volume panel where controllers do not get to
* register for events such as RINGER_MODE_CHANGE.
*/
@Test
public void onReceive_ringVolumeMuted_shouldNotifyChangeNotificationSlice() {
final Intent intent = createIntent(AudioManager.STREAM_MUTE_CHANGED_ACTION)
.putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, mRingController.getAudioStream());
registerIntentToUri(mRingController);
registerIntentToUri(mNotificationController);
VolumeSliceHelper.onReceive(mContext, intent);
verify(mResolver).notifyChange(mNotificationController.getSliceUri(), null);
}
/**
* Notifying notification slice on ring mute does not mean it should not notify ring slice.
* Rather, it should notify both slices.
*/
@Test
public void onReceive_ringVolumeMuted_shouldNotifyChangeRingSlice() {
final Intent intent = createIntent(AudioManager.STREAM_MUTE_CHANGED_ACTION)
.putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, mRingController.getAudioStream());
registerIntentToUri(mRingController);
registerIntentToUri(mNotificationController);
VolumeSliceHelper.onReceive(mContext, intent);
verify(mResolver).notifyChange(mRingController.getSliceUri(), null);
}
@Test
public void onReceive_streamDevicesChanged_shouldNotifyChange() {
final Intent intent = createIntent(AudioManager.STREAM_DEVICES_CHANGED_ACTION)