Merge "[Catalyst] Include read/write permissions in get preference API" into main

This commit is contained in:
Treehugger Robot
2024-12-18 20:11:28 -08:00
committed by Android (Google) Code Review
2 changed files with 106 additions and 96 deletions

View File

@@ -204,5 +204,7 @@ private fun PreferenceProto.toMetadata(
.setWritable(persistent) .setWritable(persistent)
.setLaunchIntent(launchIntent.toIntent()) .setLaunchIntent(launchIntent.toIntent())
.setWriteSensitivity(sensitivity) .setWriteSensitivity(sensitivity)
.setReadPermissions(readPermissionsList)
.setWritePermissions(writePermissionsList)
.build() .build()
} }

View File

@@ -41,10 +41,8 @@ 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.preferenceValueProto
import com.android.settingslib.graph.proto.PreferenceGraphProto import com.android.settingslib.graph.proto.PreferenceGraphProto
import com.android.settingslib.graph.proto.PreferenceProto
import com.android.settingslib.graph.proto.PreferenceValueProto
import com.android.settingslib.graph.proto.TextProto
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
@@ -57,8 +55,7 @@ import org.junit.runner.RunWith
@RequiresFlagsEnabled(FLAG_SETTINGS_CATALYST) @RequiresFlagsEnabled(FLAG_SETTINGS_CATALYST)
class PreferenceServiceRequestTransformerTest { class PreferenceServiceRequestTransformerTest {
@get:Rule @get:Rule val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
@Test @Test
fun transformCatalystGetMetadataResponse_emptyGraph_returnsFrameworkResponseWithError() { fun transformCatalystGetMetadataResponse_emptyGraph_returnsFrameworkResponseWithError() {
@@ -97,7 +94,7 @@ class PreferenceServiceRequestTransformerTest {
title = textProto { string = "title2" } title = textProto { string = "title2" }
enabled = false enabled = false
} }
} },
) )
) )
} }
@@ -114,17 +111,19 @@ class PreferenceServiceRequestTransformerTest {
it.key == "key1" && it.key == "key1" &&
it.screenKey == "screen" && it.screenKey == "screen" &&
it.title == "title1" && it.title == "title1" &&
it.isEnabled == true it.isEnabled
} }
).isTrue() )
.isTrue()
assertThat( assertThat(
fResult.metadataList.any { fResult.metadataList.any {
it.key == "key2" && it.key == "key2" &&
it.screenKey == "screen" && it.screenKey == "screen" &&
it.title == "title2" && it.title == "title2" &&
it.isEnabled == false !it.isEnabled
} }
).isTrue() )
.isTrue()
} }
@Test @Test
@@ -143,25 +142,27 @@ class PreferenceServiceRequestTransformerTest {
fun transformCatalystGetValueResponse_success_returnsValidFrameworkResponse() { fun transformCatalystGetValueResponse_success_returnsValidFrameworkResponse() {
val context: Context = ApplicationProvider.getApplicationContext() val context: Context = ApplicationProvider.getApplicationContext()
val fRequest = GetValueRequest.Builder("screen", "key").build() val fRequest = GetValueRequest.Builder("screen", "key").build()
val cResult = PreferenceGetterResponse( val cResult =
PreferenceGetterResponse(
emptyMap(), emptyMap(),
mapOf( mapOf(
PreferenceCoordinate(fRequest.screenKey, fRequest.preferenceKey) to PreferenceCoordinate(fRequest.screenKey, fRequest.preferenceKey) to
PreferenceProto.newBuilder() preferenceProto {
.setKey("key") key = "key"
.setTitle(TextProto.newBuilder().setString("title")) title = textProto { string = "title" }
.setSummary(TextProto.newBuilder().setString("summary")) summary = textProto { string = "summary" }
.setEnabled(true) enabled = true
.setAvailable(true) available = true
.setRestricted(true) restricted = true
.setPersistent(true) persistent = true
.setSensitivityLevel(SensitivityLevel.LOW_SENSITIVITY) sensitivityLevel = SensitivityLevel.LOW_SENSITIVITY
.setLaunchIntent( addReadPermissions("read_permission")
addWritePermissions("write_permission")
launchIntent =
Intent(context, SettingsHomepageActivity::class.java).toProto() Intent(context, SettingsHomepageActivity::class.java).toProto()
) value = preferenceValueProto { booleanValue = true }
.setValue(PreferenceValueProto.newBuilder().setBooleanValue(true)) }
.build() ),
)
) )
val fResult = transformCatalystGetValueResponse(context, fRequest, cResult) val fResult = transformCatalystGetValueResponse(context, fRequest, cResult)
assertThat(fResult!!.resultCode).isEqualTo(GetValueResult.RESULT_OK) assertThat(fResult!!.resultCode).isEqualTo(GetValueResult.RESULT_OK)
@@ -174,6 +175,8 @@ class PreferenceServiceRequestTransformerTest {
assertThat(isWritable).isTrue() assertThat(isWritable).isTrue()
assertThat(writeSensitivity) assertThat(writeSensitivity)
.isEqualTo(SettingsPreferenceMetadata.EXPECT_POST_CONFIRMATION) .isEqualTo(SettingsPreferenceMetadata.EXPECT_POST_CONFIRMATION)
assertThat(readPermissions).containsExactly("read_permission")
assertThat(writePermissions).containsExactly("write_permission")
assertThat(launchIntent).isNotNull() assertThat(launchIntent).isNotNull()
assertThat(launchIntent!!.component!!.className) assertThat(launchIntent!!.component!!.className)
.isEqualTo(SettingsHomepageActivity::class.java.name) .isEqualTo(SettingsHomepageActivity::class.java.name)
@@ -188,12 +191,13 @@ class PreferenceServiceRequestTransformerTest {
fun transformCatalystGetValueResponse_failure_returnsValidFrameworkResponse() { fun transformCatalystGetValueResponse_failure_returnsValidFrameworkResponse() {
val context: Context = ApplicationProvider.getApplicationContext() val context: Context = ApplicationProvider.getApplicationContext()
val fRequest = GetValueRequest.Builder("screen", "key").build() val fRequest = GetValueRequest.Builder("screen", "key").build()
val cResult = PreferenceGetterResponse( val cResult =
PreferenceGetterResponse(
mapOf( mapOf(
PreferenceCoordinate(fRequest.screenKey, fRequest.preferenceKey) to PreferenceCoordinate(fRequest.screenKey, fRequest.preferenceKey) to
PreferenceGetterErrorCode.NOT_FOUND PreferenceGetterErrorCode.NOT_FOUND
), ),
emptyMap() emptyMap(),
) )
val fResult = transformCatalystGetValueResponse(context, fRequest, cResult) val fResult = transformCatalystGetValueResponse(context, fRequest, cResult)
with(fResult!!) { with(fResult!!) {
@@ -214,13 +218,15 @@ class PreferenceServiceRequestTransformerTest {
@Test @Test
fun transformFrameworkSetValueRequest_typeBoolean_returnsValidCatalystRequest() { fun transformFrameworkSetValueRequest_typeBoolean_returnsValidCatalystRequest() {
val fRequest = SetValueRequest.Builder( val fRequest =
SetValueRequest.Builder(
"screen", "screen",
"pref", "pref",
SettingsPreferenceValue.Builder(SettingsPreferenceValue.TYPE_BOOLEAN) SettingsPreferenceValue.Builder(SettingsPreferenceValue.TYPE_BOOLEAN)
.setBooleanValue(true) .setBooleanValue(true)
.build(),
)
.build() .build()
).build()
val cRequest = transformFrameworkSetValueRequest(fRequest) val cRequest = transformFrameworkSetValueRequest(fRequest)
with(cRequest!!) { with(cRequest!!) {
assertThat(screenKey).isEqualTo(fRequest.screenKey) assertThat(screenKey).isEqualTo(fRequest.screenKey)
@@ -232,13 +238,15 @@ class PreferenceServiceRequestTransformerTest {
@Test @Test
fun transformFrameworkSetValueRequest_typeInt_returnsValidCatalystRequest() { fun transformFrameworkSetValueRequest_typeInt_returnsValidCatalystRequest() {
val fRequest = SetValueRequest.Builder( val fRequest =
SetValueRequest.Builder(
"screen", "screen",
"pref", "pref",
SettingsPreferenceValue.Builder(SettingsPreferenceValue.TYPE_INT) SettingsPreferenceValue.Builder(SettingsPreferenceValue.TYPE_INT)
.setIntValue(5) .setIntValue(5)
.build(),
)
.build() .build()
).build()
val cRequest = transformFrameworkSetValueRequest(fRequest) val cRequest = transformFrameworkSetValueRequest(fRequest)
with(cRequest!!) { with(cRequest!!) {
assertThat(screenKey).isEqualTo(fRequest.screenKey) assertThat(screenKey).isEqualTo(fRequest.screenKey)
@@ -250,59 +258,59 @@ class PreferenceServiceRequestTransformerTest {
@Test @Test
fun transformFrameworkSetValueRequest_typeString_returnsNull() { fun transformFrameworkSetValueRequest_typeString_returnsNull() {
val fRequest = SetValueRequest.Builder( val fRequest =
SetValueRequest.Builder(
"screen", "screen",
"pref", "pref",
SettingsPreferenceValue.Builder(SettingsPreferenceValue.TYPE_STRING) SettingsPreferenceValue.Builder(SettingsPreferenceValue.TYPE_STRING)
.setStringValue("value") .setStringValue("value")
.build(),
)
.build() .build()
).build()
val cRequest = transformFrameworkSetValueRequest(fRequest) val cRequest = transformFrameworkSetValueRequest(fRequest)
assertThat(cRequest).isNull() assertThat(cRequest).isNull()
} }
@Test @Test
fun transformCatalystSetValueResponse_returnsValidFrameworkResponse() { fun transformCatalystSetValueResponse_returnsValidFrameworkResponse() {
assertThat( assertThat(transformCatalystSetValueResponse(PreferenceSetterResult.OK).resultCode)
transformCatalystSetValueResponse(PreferenceSetterResult.OK).resultCode .isEqualTo(SetValueResult.RESULT_OK)
).isEqualTo(SetValueResult.RESULT_OK)
assertThat( assertThat(transformCatalystSetValueResponse(PreferenceSetterResult.UNAVAILABLE).resultCode)
transformCatalystSetValueResponse(PreferenceSetterResult.UNAVAILABLE).resultCode .isEqualTo(SetValueResult.RESULT_UNAVAILABLE)
).isEqualTo(SetValueResult.RESULT_UNAVAILABLE)
assertThat( assertThat(transformCatalystSetValueResponse(PreferenceSetterResult.DISABLED).resultCode)
transformCatalystSetValueResponse(PreferenceSetterResult.DISABLED).resultCode .isEqualTo(SetValueResult.RESULT_DISABLED)
).isEqualTo(SetValueResult.RESULT_DISABLED)
assertThat( assertThat(transformCatalystSetValueResponse(PreferenceSetterResult.UNSUPPORTED).resultCode)
transformCatalystSetValueResponse(PreferenceSetterResult.UNSUPPORTED).resultCode .isEqualTo(SetValueResult.RESULT_UNSUPPORTED)
).isEqualTo(SetValueResult.RESULT_UNSUPPORTED)
assertThat( assertThat(transformCatalystSetValueResponse(PreferenceSetterResult.DISALLOW).resultCode)
transformCatalystSetValueResponse(PreferenceSetterResult.DISALLOW).resultCode .isEqualTo(SetValueResult.RESULT_DISALLOW)
).isEqualTo(SetValueResult.RESULT_DISALLOW)
assertThat( assertThat(
transformCatalystSetValueResponse(PreferenceSetterResult.REQUIRE_APP_PERMISSION) transformCatalystSetValueResponse(PreferenceSetterResult.REQUIRE_APP_PERMISSION)
.resultCode .resultCode
).isEqualTo(SetValueResult.RESULT_REQUIRE_APP_PERMISSION) )
.isEqualTo(SetValueResult.RESULT_REQUIRE_APP_PERMISSION)
assertThat( assertThat(
transformCatalystSetValueResponse(PreferenceSetterResult.REQUIRE_USER_AGREEMENT) transformCatalystSetValueResponse(PreferenceSetterResult.REQUIRE_USER_AGREEMENT)
.resultCode .resultCode
).isEqualTo(SetValueResult.RESULT_REQUIRE_USER_CONSENT) )
.isEqualTo(SetValueResult.RESULT_REQUIRE_USER_CONSENT)
assertThat( assertThat(transformCatalystSetValueResponse(PreferenceSetterResult.RESTRICTED).resultCode)
transformCatalystSetValueResponse(PreferenceSetterResult.RESTRICTED).resultCode .isEqualTo(SetValueResult.RESULT_RESTRICTED)
).isEqualTo(SetValueResult.RESULT_RESTRICTED)
assertThat( assertThat(
transformCatalystSetValueResponse(PreferenceSetterResult.INVALID_REQUEST).resultCode transformCatalystSetValueResponse(PreferenceSetterResult.INVALID_REQUEST).resultCode
).isEqualTo(SetValueResult.RESULT_INVALID_REQUEST) )
.isEqualTo(SetValueResult.RESULT_INVALID_REQUEST)
assertThat( assertThat(
transformCatalystSetValueResponse(PreferenceSetterResult.INTERNAL_ERROR).resultCode transformCatalystSetValueResponse(PreferenceSetterResult.INTERNAL_ERROR).resultCode
).isEqualTo(SetValueResult.RESULT_INTERNAL_ERROR) )
.isEqualTo(SetValueResult.RESULT_INTERNAL_ERROR)
} }
} }