[Catalyst] Provide GetValueResult.metadata whenever possible

Fix: 394975570
Flag: com.android.settingslib.flags.settings_catalyst
Test: atest
Change-Id: Ifbe92902e0337f00d6b2154c7bad9fda460a4a78
This commit is contained in:
Jacky Wang
2025-02-08 12:32:48 +08:00
parent 089e6378b5
commit 02c378757f
2 changed files with 39 additions and 34 deletions

View File

@@ -101,9 +101,7 @@ fun transformFrameworkGetValueRequest(
/** Translate Catalyst GET VALUE result to Framework GET VALUE result */
fun transformCatalystGetValueResponse(
context: Context,
request: GetValueRequest,
response: PreferenceGetterResponse
context: Context, request: GetValueRequest, response: PreferenceGetterResponse
): GetValueResult? {
val coord = PreferenceCoordinate(request.screenKey, request.preferenceKey)
val errorResponse = response.errors[coord]
@@ -118,37 +116,32 @@ fun transformCatalystGetValueResponse(
return GetValueResult.Builder(errorCode).build()
}
valueResponse != null -> {
val resultBuilder = GetValueResult.Builder(GetValueResult.RESULT_OK)
resultBuilder.setMetadata(valueResponse.toMetadata(context, coord.screenKey))
val prefValue = valueResponse.value
when (prefValue.valueCase.number) {
PreferenceValueProto.BOOLEAN_VALUE_FIELD_NUMBER -> {
resultBuilder.setValue(
SettingsPreferenceValue.Builder(
SettingsPreferenceValue.TYPE_BOOLEAN
).setBooleanValue(prefValue.booleanValue)
.build()
)
return resultBuilder.build()
}
PreferenceValueProto.INT_VALUE_FIELD_NUMBER -> {
resultBuilder.setValue(
SettingsPreferenceValue.Builder(
SettingsPreferenceValue.TYPE_INT
).setIntValue(prefValue.intValue)
.build()
)
return resultBuilder.build()
}
}
return GetValueResult.Builder(
GetValueResult.RESULT_UNSUPPORTED
).build()
val metadata = valueResponse.toMetadata(context, coord.screenKey)
val value = valueResponse.value.toSettingsPreferenceValue()
return when (value) {
null -> GetValueResult.Builder(GetValueResult.RESULT_UNSUPPORTED)
else -> GetValueResult.Builder(GetValueResult.RESULT_OK).setValue(value)
}.setMetadata(metadata).build()
}
else -> return null
}
}
private fun PreferenceValueProto.toSettingsPreferenceValue(): SettingsPreferenceValue? =
when (valueCase.number) {
PreferenceValueProto.BOOLEAN_VALUE_FIELD_NUMBER -> {
SettingsPreferenceValue.Builder(
SettingsPreferenceValue.TYPE_BOOLEAN
).setBooleanValue(booleanValue)
}
PreferenceValueProto.INT_VALUE_FIELD_NUMBER -> {
SettingsPreferenceValue.Builder(
SettingsPreferenceValue.TYPE_INT
).setIntValue(intValue)
}
else -> null
}?.build()
/** Translate Framework SET VALUE request to Catalyst SET VALUE request */
fun transformFrameworkSetValueRequest(request: SetValueRequest): PreferenceSetterRequest? {
val valueProto = when (request.preferenceValue.type) {

View File

@@ -60,9 +60,10 @@ class PreferenceServiceRequestTransformerTest {
@get:Rule val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
private val context: Context = ApplicationProvider.getApplicationContext()
@Test
fun transformCatalystGetMetadataResponse_emptyGraph_returnsFrameworkResponseWithError() {
val context: Context = ApplicationProvider.getApplicationContext()
val graphProto = PreferenceGraphProto.newBuilder().build()
val fResult = transformCatalystGetMetadataResponse(context, graphProto)
with(fResult) {
@@ -73,7 +74,6 @@ class PreferenceServiceRequestTransformerTest {
@Test
fun transformCatalystGetMetadataResponse_populatedGraph_returnsFrameworkResponseWithSuccess() {
val context: Context = ApplicationProvider.getApplicationContext()
val screen = preferenceScreenProto {
root = preferenceGroupProto {
addAllPreferences(
@@ -143,7 +143,6 @@ class PreferenceServiceRequestTransformerTest {
@Test
fun transformCatalystGetValueResponse_success_returnsValidFrameworkResponse() {
val context: Context = ApplicationProvider.getApplicationContext()
val fRequest = GetValueRequest.Builder("screen", "key").build()
val cResult =
PreferenceGetterResponse(
@@ -202,9 +201,23 @@ class PreferenceServiceRequestTransformerTest {
}
}
@Test
fun transformCatalystGetValueResponse_success_noValue() {
val fRequest = GetValueRequest.Builder("screen", "key").build()
val cResult = PreferenceGetterResponse(
emptyMap(),
mapOf(PreferenceCoordinate(
fRequest.screenKey,
fRequest.preferenceKey
) to preferenceProto { key = "key" }),
)
val fResult = transformCatalystGetValueResponse(context, fRequest, cResult)!!
assertThat(fResult.resultCode).isEqualTo(GetValueResult.RESULT_UNSUPPORTED)
assertThat(fResult.metadata).isNotNull()
}
@Test
fun transformCatalystGetValueResponse_failure_returnsValidFrameworkResponse() {
val context: Context = ApplicationProvider.getApplicationContext()
val fRequest = GetValueRequest.Builder("screen", "key").build()
val cResult =
PreferenceGetterResponse(
@@ -224,7 +237,6 @@ class PreferenceServiceRequestTransformerTest {
@Test
fun transformCatalystGetValueResponse_invalidResponse_returnsNull() {
val context: Context = ApplicationProvider.getApplicationContext()
val fRequest = GetValueRequest.Builder("screen", "key").build()
val cResult = PreferenceGetterResponse(emptyMap(), emptyMap())
val fResult = transformCatalystGetValueResponse(context, fRequest, cResult)