Support IntRange of value in PrefService

Bug: 384955673
Test: unit test
Flag: com.android.settingslib.flags.settings_catalyst
Change-Id: I0d5f67541ee48d758fc8fd0e38fe4c348127017c
This commit is contained in:
Chris Antol
2024-12-19 18:28:34 +00:00
parent 27bf7fc326
commit 6877d115e5
2 changed files with 33 additions and 0 deletions

View File

@@ -17,6 +17,7 @@
package com.android.settings.service package com.android.settings.service
import android.content.Context import android.content.Context
import android.os.Bundle
import android.service.settings.preferences.GetValueRequest import android.service.settings.preferences.GetValueRequest
import android.service.settings.preferences.GetValueResult import android.service.settings.preferences.GetValueResult
import android.service.settings.preferences.MetadataResult import android.service.settings.preferences.MetadataResult
@@ -186,6 +187,11 @@ private data class PreferenceWithScreen(
val preference: PreferenceProto, val preference: PreferenceProto,
) )
private const val KEY_INT_RANGE = "key_int_range"
private const val KEY_MIN = "key_min"
private const val KEY_MAX = "key_max"
private const val KEY_STEP = "key_step"
private fun PreferenceProto.toMetadata( private fun PreferenceProto.toMetadata(
context: Context, context: Context,
screenKey: String screenKey: String
@@ -196,6 +202,18 @@ private fun PreferenceProto.toMetadata(
SensitivityLevel.MEDIUM_SENSITIVITY -> SettingsPreferenceMetadata.DEEPLINK_ONLY SensitivityLevel.MEDIUM_SENSITIVITY -> SettingsPreferenceMetadata.DEEPLINK_ONLY
else -> SettingsPreferenceMetadata.NO_DIRECT_ACCESS else -> SettingsPreferenceMetadata.NO_DIRECT_ACCESS
} }
val extras = Bundle()
if (valueDescriptor.hasRangeValue()
&& valueDescriptor.rangeValue.hasMin()
&& valueDescriptor.rangeValue.hasMax()) {
val intRange = Bundle()
intRange.putInt(KEY_MIN, valueDescriptor.rangeValue.min)
intRange.putInt(KEY_MAX, valueDescriptor.rangeValue.max)
if (valueDescriptor.rangeValue.hasStep()) {
intRange.putInt(KEY_STEP, valueDescriptor.rangeValue.step)
}
extras.putBundle(KEY_INT_RANGE, intRange)
}
return SettingsPreferenceMetadata.Builder(screenKey, key) return SettingsPreferenceMetadata.Builder(screenKey, key)
.setTitle(title.getText(context)) .setTitle(title.getText(context))
.setSummary(summary.getText(context)) .setSummary(summary.getText(context))
@@ -208,5 +226,6 @@ private fun PreferenceProto.toMetadata(
// Returns all the permissions that are used, some of which are exclusive (e.g. p1 or p2) // Returns all the permissions that are used, some of which are exclusive (e.g. p1 or p2)
.setReadPermissions(readPermissions.getAllPermissions()) .setReadPermissions(readPermissions.getAllPermissions())
.setWritePermissions(writePermissions.getAllPermissions()) .setWritePermissions(writePermissions.getAllPermissions())
.setExtras(extras)
.build() .build()
} }

View File

@@ -42,8 +42,10 @@ import com.android.settingslib.graph.preferenceGroupProto
import com.android.settingslib.graph.preferenceOrGroupProto import com.android.settingslib.graph.preferenceOrGroupProto
import com.android.settingslib.graph.preferenceProto import com.android.settingslib.graph.preferenceProto
import com.android.settingslib.graph.preferenceScreenProto import com.android.settingslib.graph.preferenceScreenProto
import com.android.settingslib.graph.preferenceValueDescriptorProto
import com.android.settingslib.graph.preferenceValueProto import com.android.settingslib.graph.preferenceValueProto
import com.android.settingslib.graph.proto.PreferenceGraphProto import com.android.settingslib.graph.proto.PreferenceGraphProto
import com.android.settingslib.graph.rangeValueProto
import com.android.settingslib.graph.textProto import com.android.settingslib.graph.textProto
import com.android.settingslib.graph.toProto import com.android.settingslib.graph.toProto
import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.metadata.SensitivityLevel
@@ -156,6 +158,13 @@ class PreferenceServiceRequestTransformerTest {
available = true available = true
restricted = true restricted = true
persistent = true persistent = true
valueDescriptor = preferenceValueDescriptorProto {
rangeValue = rangeValueProto {
min = 0
max = 10
step = 2
}
}
sensitivityLevel = SensitivityLevel.LOW_SENSITIVITY sensitivityLevel = SensitivityLevel.LOW_SENSITIVITY
readPermissions = Permissions.allOf("read_permission").toProto() readPermissions = Permissions.allOf("read_permission").toProto()
writePermissions = Permissions.anyOf("write_permission").toProto() writePermissions = Permissions.anyOf("write_permission").toProto()
@@ -181,6 +190,11 @@ class PreferenceServiceRequestTransformerTest {
assertThat(launchIntent).isNotNull() assertThat(launchIntent).isNotNull()
assertThat(launchIntent!!.component!!.className) assertThat(launchIntent!!.component!!.className)
.isEqualTo(SettingsHomepageActivity::class.java.name) .isEqualTo(SettingsHomepageActivity::class.java.name)
val intRange = extras.getBundle("key_int_range")
assertThat(intRange).isNotNull()
assertThat(intRange!!.getInt("key_min", -1)).isEqualTo(0)
assertThat(intRange.getInt("key_max", -1)).isEqualTo(10)
assertThat(intRange.getInt("key_step", -1)).isEqualTo(2)
} }
with(fResult.value!!) { with(fResult.value!!) {
assertThat(type).isEqualTo(SettingsPreferenceValue.TYPE_BOOLEAN) assertThat(type).isEqualTo(SettingsPreferenceValue.TYPE_BOOLEAN)