Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d33b0a51 authored by Jacky Wang's avatar Jacky Wang
Browse files

[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
parent f18e3baf
Loading
Loading
Loading
Loading
+9 −17
Original line number Diff line number Diff line
@@ -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()

    override fun isRestricted(context: Context) =
        RestrictedLockUtilsInternal.hasBaseUserRestriction(
            context,
            DISALLOW_ADJUST_VOLUME,
            UserHandle.myUserId()
        ) || RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
            context,
            DISALLOW_ADJUST_VOLUME,
            UserHandle.myUserId()
        ) != null
            !createAudioHelper(context).isSingleVolume

    override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context)

    override val restrictionKey: String
        get() = UserManager.DISALLOW_ADJUST_VOLUME

    override fun storage(context: Context): KeyValueStore {
        val helper = createAudioHelper(context)
+8 −17
Original line number Diff line number Diff line
@@ -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<PreferenceRestrictionMixin>.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,
+12 −22
Original line number Diff line number Diff line
@@ -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<PreferenceRestrictionMixin>.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