Ring & notif vol missing on a largescreen device
Before:
"Ring & notification volume" showed up in volume panel and in volume
settings.
Now (what prompted this bugreport):
A device config was changed to mark it not voice capable.
"Ring & notification volume" disappeared from both places;
"Notification volume" showed up only in volume settings, not panel.
Fix: the voice capable should not be a factor when determining
availability for ring/notification slices.
After this fix is applied:
"Ring & notification volume" to reappear at both settings and panel.
Bug: 256548882
Test: make DEBUG_ROBOLECTRIC=1 ROBOTEST_FILTER="VolumePanelTest|RingVolumePreferenceControllerTest|NotificationVolumePreferenceControllerTest|SeparateRingVolumePreferenceController" RunSettingsRoboTests -j40
Change-Id: Ie2b1913bde6a64303c4d9fde3724889f949c363b
diff --git a/src/com/android/settings/notification/NotificationVolumePreferenceController.java b/src/com/android/settings/notification/NotificationVolumePreferenceController.java
index b6f7435..4fd2341 100644
--- a/src/com/android/settings/notification/NotificationVolumePreferenceController.java
+++ b/src/com/android/settings/notification/NotificationVolumePreferenceController.java
@@ -35,7 +35,6 @@
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
import com.android.settings.R;
-import com.android.settings.Utils;
import com.android.settingslib.core.lifecycle.Lifecycle;
import java.util.Set;
@@ -129,8 +128,7 @@
boolean separateNotification = isSeparateNotificationConfigEnabled();
return mContext.getResources().getBoolean(R.bool.config_show_notification_volume)
- && !mHelper.isSingleVolume()
- && (separateNotification || !Utils.isVoiceCapable(mContext))
+ && !mHelper.isSingleVolume() && separateNotification
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
diff --git a/src/com/android/settings/notification/RingVolumePreferenceController.java b/src/com/android/settings/notification/RingVolumePreferenceController.java
index 76254b9..a8118c6 100644
--- a/src/com/android/settings/notification/RingVolumePreferenceController.java
+++ b/src/com/android/settings/notification/RingVolumePreferenceController.java
@@ -34,7 +34,6 @@
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
import com.android.settings.R;
-import com.android.settings.Utils;
import com.android.settingslib.core.lifecycle.Lifecycle;
import java.util.Set;
@@ -114,8 +113,7 @@
@Override
public int getAvailabilityStatus() {
boolean separateNotification = isSeparateNotificationConfigEnabled();
-
- return !separateNotification && Utils.isVoiceCapable(mContext) && !mHelper.isSingleVolume()
+ return !separateNotification && !mHelper.isSingleVolume()
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
diff --git a/src/com/android/settings/notification/SeparateRingVolumePreferenceController.java b/src/com/android/settings/notification/SeparateRingVolumePreferenceController.java
index 1213372..e23dd38 100644
--- a/src/com/android/settings/notification/SeparateRingVolumePreferenceController.java
+++ b/src/com/android/settings/notification/SeparateRingVolumePreferenceController.java
@@ -33,7 +33,6 @@
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
import com.android.settings.R;
-import com.android.settings.Utils;
import com.android.settingslib.core.lifecycle.Lifecycle;
import java.util.Set;
@@ -111,8 +110,7 @@
@Override
public int getAvailabilityStatus() {
boolean separateNotification = isSeparateNotificationConfigEnabled();
-
- return separateNotification && Utils.isVoiceCapable(mContext) && !mHelper.isSingleVolume()
+ return separateNotification && !mHelper.isSingleVolume()
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
diff --git a/tests/robotests/src/com/android/settings/notification/RingVolumePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/RingVolumePreferenceControllerTest.java
index 07e5993..6728fee 100644
--- a/tests/robotests/src/com/android/settings/notification/RingVolumePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/RingVolumePreferenceControllerTest.java
@@ -96,12 +96,16 @@
assertThat(mController.isAvailable()).isFalse();
}
+ /**
+ * Devices that are not voice capable should still show Ring volume, because it is used by apps
+ * that make calls outside the cell network.
+ */
@Test
- public void isAvailable_notVoiceCapable_shouldReturnFalse() {
+ public void isAvailable_notSingleVolume_notVoiceCapable_shouldReturnTrue() {
when(mHelper.isSingleVolume()).thenReturn(false);
when(mTelephonyManager.isVoiceCapable()).thenReturn(false);
- assertThat(mController.isAvailable()).isFalse();
+ assertThat(mController.isAvailable()).isTrue();
}
@Test
diff --git a/tests/robotests/src/com/android/settings/notification/SeparateRingVolumePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/SeparateRingVolumePreferenceControllerTest.java
index 88c8ff9..7c9390c 100644
--- a/tests/robotests/src/com/android/settings/notification/SeparateRingVolumePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/SeparateRingVolumePreferenceControllerTest.java
@@ -27,8 +27,10 @@
import android.content.res.Resources;
import android.media.AudioManager;
import android.os.Vibrator;
+import android.provider.DeviceConfig;
import android.telephony.TelephonyManager;
+import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
import com.android.settings.testutils.shadow.ShadowDeviceConfig;
import org.junit.Before;
@@ -87,6 +89,19 @@
assertThat(mController.isAvailable()).isFalse();
}
+ /**
+ * Maintain that the device does not need to be voice capable to display this slider
+ */
+ @Test
+ public void isAvailable_ringNotificationSeparated_isNotVoiceCapable_shouldReturnTrue() {
+ DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
+ SystemUiDeviceConfigFlags.VOLUME_SEPARATE_NOTIFICATION, "true", false);
+ when(mHelper.isSingleVolume()).thenReturn(false);
+ when(mTelephonyManager.isVoiceCapable()).thenReturn(false);
+
+ assertThat(mController.isAvailable()).isTrue();
+ }
+
@Test
public void getAudioStream_shouldReturnRing() {
assertThat(mController.getAudioStream()).isEqualTo(AudioManager.STREAM_RING);