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

Commit 02c37875 authored by Jacky Wang's avatar Jacky Wang
Browse files

[Catalyst] Provide GetValueResult.metadata whenever possible

Fix: 394975570
Flag: com.android.settingslib.flags.settings_catalyst
Test: atest
Change-Id: Ifbe92902e0337f00d6b2154c7bad9fda460a4a78
parent 089e6378
Loading
Loading
Loading
Loading
+22 −29
Original line number Diff line number Diff line
@@ -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,36 +116,31 @@ 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) {
            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 -> {
                    resultBuilder.setValue(
            SettingsPreferenceValue.Builder(
                SettingsPreferenceValue.TYPE_BOOLEAN
                        ).setBooleanValue(prefValue.booleanValue)
                            .build()
                    )
                    return resultBuilder.build()
            ).setBooleanValue(booleanValue)
        }
        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
    }
            ).setIntValue(intValue)
        }
        else -> null
    }?.build()

/** Translate Framework SET VALUE request to Catalyst SET VALUE request */
fun transformFrameworkSetValueRequest(request: SetValueRequest): PreferenceSetterRequest? {
+17 −5
Original line number Diff line number Diff line
@@ -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)