diff --git a/src/com/android/settings/slices/VolumeSliceHelper.java b/src/com/android/settings/slices/VolumeSliceHelper.java index 5e43b869b0c..486148270c8 100644 --- a/src/com/android/settings/slices/VolumeSliceHelper.java +++ b/src/com/android/settings/slices/VolumeSliceHelper.java @@ -115,7 +115,9 @@ public class VolumeSliceHelper { for (Map.Entry entry : sRegisteredUri.entrySet()) { if (entry.getValue() == inputType) { context.getContentResolver().notifyChange(entry.getKey(), null /* observer */); - break; + if (inputType != AudioManager.STREAM_RING) { // Two URIs are mapped to ring + break; + } } } } diff --git a/tests/robotests/src/com/android/settings/slices/VolumeSliceHelperTest.java b/tests/robotests/src/com/android/settings/slices/VolumeSliceHelperTest.java index 5e22adfb10a..2ceeb253c9c 100644 --- a/tests/robotests/src/com/android/settings/slices/VolumeSliceHelperTest.java +++ b/tests/robotests/src/com/android/settings/slices/VolumeSliceHelperTest.java @@ -35,6 +35,7 @@ import android.net.Uri; import com.android.settings.notification.MediaVolumePreferenceController; import com.android.settings.notification.RingVolumePreferenceController; +import com.android.settings.notification.SeparateRingVolumePreferenceController; import com.android.settings.notification.VolumeSeekBarPreferenceController; import com.android.settingslib.SliceBroadcastRelay; @@ -62,6 +63,7 @@ public class VolumeSliceHelperTest { private Intent mIntent; private VolumeSeekBarPreferenceController mMediaController; private VolumeSeekBarPreferenceController mRingController; + private VolumeSeekBarPreferenceController mSeparateRingController; @Before public void setUp() { @@ -70,6 +72,7 @@ public class VolumeSliceHelperTest { when(mContext.getContentResolver()).thenReturn(mResolver); mMediaController = new MediaVolumePreferenceController(mContext); + mSeparateRingController = new SeparateRingVolumePreferenceController(mContext); mRingController = new RingVolumePreferenceController(mContext); mIntent = createIntent(AudioManager.VOLUME_CHANGED_ACTION) @@ -186,6 +189,43 @@ public class VolumeSliceHelperTest { verify(mResolver, never()).notifyChange(mMediaController.getSliceUri(), null); } + @Test + public void onReceive_ringStreamVolumeMuted_shouldNotifySeparateRing() { + final Intent intent = createIntent(AudioManager.STREAM_MUTE_CHANGED_ACTION) + .putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, mRingController.getAudioStream()); + registerIntentToUri(mRingController); + registerIntentToUri(mSeparateRingController); + + VolumeSliceHelper.onReceive(mContext, intent); + + verify(mResolver).notifyChange(mSeparateRingController.getSliceUri(), null); + } + + @Test + public void onReceive_ringStreamVolumeMuted_shouldNotifyRing() { + final Intent intent = createIntent(AudioManager.STREAM_MUTE_CHANGED_ACTION) + .putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, mRingController.getAudioStream()); + registerIntentToUri(mRingController); + registerIntentToUri(mSeparateRingController); + + VolumeSliceHelper.onReceive(mContext, intent); + + verify(mResolver).notifyChange(mRingController.getSliceUri(), null); + } + + @Test + public void onReceive_ringStreamVolumeMuted_shouldNotifyBothRings() { + final Intent intent = createIntent(AudioManager.STREAM_MUTE_CHANGED_ACTION) + .putExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, mRingController.getAudioStream()); + registerIntentToUri(mRingController); + registerIntentToUri(mSeparateRingController); + + VolumeSliceHelper.onReceive(mContext, intent); + + verify(mResolver).notifyChange(mSeparateRingController.getSliceUri(), null); + verify(mResolver).notifyChange(mRingController.getSliceUri(), null); + } + @Test public void onReceive_streamVolumeMuted_shouldNotifyChange() { final Intent intent = createIntent(AudioManager.STREAM_MUTE_CHANGED_ACTION)