[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:
@@ -101,9 +101,7 @@ fun transformFrameworkGetValueRequest(
|
|||||||
|
|
||||||
/** Translate Catalyst GET VALUE result to Framework GET VALUE result */
|
/** Translate Catalyst GET VALUE result to Framework GET VALUE result */
|
||||||
fun transformCatalystGetValueResponse(
|
fun transformCatalystGetValueResponse(
|
||||||
context: Context,
|
context: Context, request: GetValueRequest, response: PreferenceGetterResponse
|
||||||
request: GetValueRequest,
|
|
||||||
response: PreferenceGetterResponse
|
|
||||||
): GetValueResult? {
|
): GetValueResult? {
|
||||||
val coord = PreferenceCoordinate(request.screenKey, request.preferenceKey)
|
val coord = PreferenceCoordinate(request.screenKey, request.preferenceKey)
|
||||||
val errorResponse = response.errors[coord]
|
val errorResponse = response.errors[coord]
|
||||||
@@ -118,37 +116,32 @@ fun transformCatalystGetValueResponse(
|
|||||||
return GetValueResult.Builder(errorCode).build()
|
return GetValueResult.Builder(errorCode).build()
|
||||||
}
|
}
|
||||||
valueResponse != null -> {
|
valueResponse != null -> {
|
||||||
val resultBuilder = GetValueResult.Builder(GetValueResult.RESULT_OK)
|
val metadata = valueResponse.toMetadata(context, coord.screenKey)
|
||||||
resultBuilder.setMetadata(valueResponse.toMetadata(context, coord.screenKey))
|
val value = valueResponse.value.toSettingsPreferenceValue()
|
||||||
val prefValue = valueResponse.value
|
return when (value) {
|
||||||
when (prefValue.valueCase.number) {
|
null -> GetValueResult.Builder(GetValueResult.RESULT_UNSUPPORTED)
|
||||||
PreferenceValueProto.BOOLEAN_VALUE_FIELD_NUMBER -> {
|
else -> GetValueResult.Builder(GetValueResult.RESULT_OK).setValue(value)
|
||||||
resultBuilder.setValue(
|
}.setMetadata(metadata).build()
|
||||||
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()
|
|
||||||
}
|
}
|
||||||
else -> return null
|
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 */
|
/** Translate Framework SET VALUE request to Catalyst SET VALUE request */
|
||||||
fun transformFrameworkSetValueRequest(request: SetValueRequest): PreferenceSetterRequest? {
|
fun transformFrameworkSetValueRequest(request: SetValueRequest): PreferenceSetterRequest? {
|
||||||
val valueProto = when (request.preferenceValue.type) {
|
val valueProto = when (request.preferenceValue.type) {
|
||||||
|
|||||||
@@ -60,9 +60,10 @@ class PreferenceServiceRequestTransformerTest {
|
|||||||
|
|
||||||
@get:Rule val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
|
@get:Rule val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
|
||||||
|
|
||||||
|
private val context: Context = ApplicationProvider.getApplicationContext()
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun transformCatalystGetMetadataResponse_emptyGraph_returnsFrameworkResponseWithError() {
|
fun transformCatalystGetMetadataResponse_emptyGraph_returnsFrameworkResponseWithError() {
|
||||||
val context: Context = ApplicationProvider.getApplicationContext()
|
|
||||||
val graphProto = PreferenceGraphProto.newBuilder().build()
|
val graphProto = PreferenceGraphProto.newBuilder().build()
|
||||||
val fResult = transformCatalystGetMetadataResponse(context, graphProto)
|
val fResult = transformCatalystGetMetadataResponse(context, graphProto)
|
||||||
with(fResult) {
|
with(fResult) {
|
||||||
@@ -73,7 +74,6 @@ class PreferenceServiceRequestTransformerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun transformCatalystGetMetadataResponse_populatedGraph_returnsFrameworkResponseWithSuccess() {
|
fun transformCatalystGetMetadataResponse_populatedGraph_returnsFrameworkResponseWithSuccess() {
|
||||||
val context: Context = ApplicationProvider.getApplicationContext()
|
|
||||||
val screen = preferenceScreenProto {
|
val screen = preferenceScreenProto {
|
||||||
root = preferenceGroupProto {
|
root = preferenceGroupProto {
|
||||||
addAllPreferences(
|
addAllPreferences(
|
||||||
@@ -143,7 +143,6 @@ class PreferenceServiceRequestTransformerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun transformCatalystGetValueResponse_success_returnsValidFrameworkResponse() {
|
fun transformCatalystGetValueResponse_success_returnsValidFrameworkResponse() {
|
||||||
val context: Context = ApplicationProvider.getApplicationContext()
|
|
||||||
val fRequest = GetValueRequest.Builder("screen", "key").build()
|
val fRequest = GetValueRequest.Builder("screen", "key").build()
|
||||||
val cResult =
|
val cResult =
|
||||||
PreferenceGetterResponse(
|
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
|
@Test
|
||||||
fun transformCatalystGetValueResponse_failure_returnsValidFrameworkResponse() {
|
fun transformCatalystGetValueResponse_failure_returnsValidFrameworkResponse() {
|
||||||
val context: Context = ApplicationProvider.getApplicationContext()
|
|
||||||
val fRequest = GetValueRequest.Builder("screen", "key").build()
|
val fRequest = GetValueRequest.Builder("screen", "key").build()
|
||||||
val cResult =
|
val cResult =
|
||||||
PreferenceGetterResponse(
|
PreferenceGetterResponse(
|
||||||
@@ -224,7 +237,6 @@ class PreferenceServiceRequestTransformerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun transformCatalystGetValueResponse_invalidResponse_returnsNull() {
|
fun transformCatalystGetValueResponse_invalidResponse_returnsNull() {
|
||||||
val context: Context = ApplicationProvider.getApplicationContext()
|
|
||||||
val fRequest = GetValueRequest.Builder("screen", "key").build()
|
val fRequest = GetValueRequest.Builder("screen", "key").build()
|
||||||
val cResult = PreferenceGetterResponse(emptyMap(), emptyMap())
|
val cResult = PreferenceGetterResponse(emptyMap(), emptyMap())
|
||||||
val fResult = transformCatalystGetValueResponse(context, fRequest, cResult)
|
val fResult = transformCatalystGetValueResponse(context, fRequest, cResult)
|
||||||
|
|||||||
Reference in New Issue
Block a user