From d33b0a5114c4b672e9296652ef5947c12f9709a5 Mon Sep 17 00:00:00 2001 From: Jacky Wang Date: Wed, 6 Nov 2024 11:58:10 +0800 Subject: [PATCH] [Catalyst] Support restriction for Sound settings NO_IFTTT=Catalyst only Bug: 377600992 Flag: com.android.settings.flags.catalyst_sound_screen Test: testdpc Change-Id: I2d768155f450f415c2279bbff69f94e8934b4383 --- .../notification/CallVolumePreference.kt | 24 +++++-------- .../notification/MediaVolumePreference.kt | 25 +++++--------- .../SeparateRingVolumePreference.kt | 34 +++++++------------ 3 files changed, 28 insertions(+), 55 deletions(-) diff --git a/src/com/android/settings/notification/CallVolumePreference.kt b/src/com/android/settings/notification/CallVolumePreference.kt index 3c14ae4fafb..df6c4275c94 100644 --- a/src/com/android/settings/notification/CallVolumePreference.kt +++ b/src/com/android/settings/notification/CallVolumePreference.kt @@ -20,18 +20,16 @@ import android.content.Context import android.media.AudioManager import android.media.AudioManager.STREAM_BLUETOOTH_SCO import android.media.AudioManager.STREAM_VOICE_CALL -import android.os.UserHandle -import android.os.UserManager.DISALLOW_ADJUST_VOLUME +import android.os.UserManager import androidx.preference.Preference +import com.android.settings.PreferenceRestrictionMixin import com.android.settings.R -import com.android.settingslib.RestrictedLockUtilsInternal import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.NoOpKeyedObservable import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceIconProvider import com.android.settingslib.metadata.PreferenceMetadata -import com.android.settingslib.metadata.PreferenceRestrictionProvider import com.android.settingslib.metadata.RangeValue import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.preference.PreferenceBinding @@ -44,7 +42,7 @@ open class CallVolumePreference : RangeValue, PreferenceAvailabilityProvider, PreferenceIconProvider, - PreferenceRestrictionProvider { + PreferenceRestrictionMixin { override val key: String get() = KEY @@ -55,18 +53,12 @@ open class CallVolumePreference : override fun isAvailable(context: Context) = context.resources.getBoolean(R.bool.config_show_call_volume) && - !createAudioHelper(context).isSingleVolume() + !createAudioHelper(context).isSingleVolume - override fun isRestricted(context: Context) = - RestrictedLockUtilsInternal.hasBaseUserRestriction( - context, - DISALLOW_ADJUST_VOLUME, - UserHandle.myUserId() - ) || RestrictedLockUtilsInternal.checkIfRestrictionEnforced( - context, - DISALLOW_ADJUST_VOLUME, - UserHandle.myUserId() - ) != null + override fun isEnabled(context: Context) = super.isEnabled(context) + + override val restrictionKey: String + get() = UserManager.DISALLOW_ADJUST_VOLUME override fun storage(context: Context): KeyValueStore { val helper = createAudioHelper(context) diff --git a/src/com/android/settings/notification/MediaVolumePreference.kt b/src/com/android/settings/notification/MediaVolumePreference.kt index acb8f8d3af1..a39023361f4 100644 --- a/src/com/android/settings/notification/MediaVolumePreference.kt +++ b/src/com/android/settings/notification/MediaVolumePreference.kt @@ -18,18 +18,16 @@ package com.android.settings.notification import android.content.Context import android.media.AudioManager.STREAM_MUSIC -import android.os.UserHandle import android.os.UserManager import androidx.preference.Preference +import com.android.settings.PreferenceRestrictionMixin import com.android.settings.R -import com.android.settingslib.RestrictedLockUtilsInternal import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.NoOpKeyedObservable import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceIconProvider import com.android.settingslib.metadata.PreferenceMetadata -import com.android.settingslib.metadata.PreferenceRestrictionProvider import com.android.settingslib.metadata.RangeValue import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.preference.PreferenceBinding @@ -42,7 +40,7 @@ open class MediaVolumePreference : RangeValue, PreferenceAvailabilityProvider, PreferenceIconProvider, - PreferenceRestrictionProvider { + PreferenceRestrictionMixin { override val key: String get() = KEY @@ -58,17 +56,10 @@ open class MediaVolumePreference : override fun isAvailable(context: Context) = context.resources.getBoolean(R.bool.config_show_media_volume) - override fun isRestricted(context: Context) = - RestrictedLockUtilsInternal.hasBaseUserRestriction( - context, - UserManager.DISALLOW_ADJUST_VOLUME, - UserHandle.myUserId(), - ) || - RestrictedLockUtilsInternal.checkIfRestrictionEnforced( - context, - UserManager.DISALLOW_ADJUST_VOLUME, - UserHandle.myUserId(), - ) != null + override fun isEnabled(context: Context) = super.isEnabled(context) + + override val restrictionKey: String + get() = UserManager.DISALLOW_ADJUST_VOLUME override fun storage(context: Context): KeyValueStore { val helper = createAudioHelper(context) @@ -107,9 +98,9 @@ open class MediaVolumePreference : open fun createAudioHelper(context: Context) = AudioHelper(context) - fun updateContentDescription(preference: VolumeSeekBarPreference) { + private fun updateContentDescription(preference: VolumeSeekBarPreference) { when { - preference.isMuted() -> + preference.isMuted -> preference.updateContentDescription( preference.context.getString( R.string.volume_content_description_silent_mode, diff --git a/src/com/android/settings/notification/SeparateRingVolumePreference.kt b/src/com/android/settings/notification/SeparateRingVolumePreference.kt index 6831daad683..c6485686f52 100644 --- a/src/com/android/settings/notification/SeparateRingVolumePreference.kt +++ b/src/com/android/settings/notification/SeparateRingVolumePreference.kt @@ -24,21 +24,19 @@ import android.media.AudioManager.RINGER_MODE_SILENT import android.media.AudioManager.RINGER_MODE_VIBRATE import android.media.AudioManager.STREAM_RING import android.os.ServiceManager -import android.os.UserHandle -import android.os.UserManager.DISALLOW_ADJUST_VOLUME +import android.os.UserManager import android.os.Vibrator import android.service.notification.NotificationListenerService.HINT_HOST_DISABLE_CALL_EFFECTS import android.service.notification.NotificationListenerService.HINT_HOST_DISABLE_EFFECTS import androidx.preference.Preference +import com.android.settings.PreferenceRestrictionMixin import com.android.settings.R -import com.android.settingslib.RestrictedLockUtilsInternal import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.NoOpKeyedObservable import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceIconProvider import com.android.settingslib.metadata.PreferenceMetadata -import com.android.settingslib.metadata.PreferenceRestrictionProvider import com.android.settingslib.metadata.RangeValue import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.preference.PreferenceBinding @@ -51,7 +49,8 @@ open class SeparateRingVolumePreference : RangeValue, PreferenceAvailabilityProvider, PreferenceIconProvider, - PreferenceRestrictionProvider { + PreferenceRestrictionMixin { + override val key: String get() = KEY @@ -64,21 +63,12 @@ open class SeparateRingVolumePreference : else -> R.drawable.ic_ring_volume } - override fun isAvailable(context: Context) = !createAudioHelper(context).isSingleVolume() + override fun isAvailable(context: Context) = !createAudioHelper(context).isSingleVolume - override fun isEnabled(context: Context) = - !RestrictedLockUtilsInternal.hasBaseUserRestriction( - context, - DISALLOW_ADJUST_VOLUME, - UserHandle.myUserId(), - ) + override fun isEnabled(context: Context) = super.isEnabled(context) - override fun isRestricted(context: Context) = - RestrictedLockUtilsInternal.checkIfRestrictionEnforced( - context, - DISALLOW_ADJUST_VOLUME, - UserHandle.myUserId(), - ) != null + override val restrictionKey: String + get() = UserManager.DISALLOW_ADJUST_VOLUME override fun storage(context: Context): KeyValueStore { val helper = createAudioHelper(context) @@ -118,7 +108,7 @@ open class SeparateRingVolumePreference : open fun createAudioHelper(context: Context) = AudioHelper(context) - fun updateContentDescription(preference: VolumeSeekBarPreference) { + private fun updateContentDescription(preference: VolumeSeekBarPreference) { val context = preference.context val ringerMode = getEffectiveRingerMode(context) when (ringerMode) { @@ -152,13 +142,13 @@ open class SeparateRingVolumePreference : } } - fun getSuppressionText(context: Context): String? { + private fun getSuppressionText(context: Context): String? { val suppressor = NotificationManager.from(context).getEffectsSuppressor() val notificationManager = INotificationManager.Stub.asInterface( ServiceManager.getService(Context.NOTIFICATION_SERVICE) ) - val hints = notificationManager.getHintsFromListenerNoToken() + val hints = notificationManager.hintsFromListenerNoToken return when { hintsMatch(hints) -> SuppressorHelper.getSuppressionText(context, suppressor) else -> null @@ -167,7 +157,7 @@ open class SeparateRingVolumePreference : private fun hintsMatch(hints: Int) = (hints and HINT_HOST_DISABLE_CALL_EFFECTS) != 0 || - (hints and HINT_HOST_DISABLE_EFFECTS) != 0 + (hints and HINT_HOST_DISABLE_EFFECTS) != 0 companion object { const val KEY = "separate_ring_volume"