[Catalyst] Include read/write permissions in get preference API

Bug: 374115149
Flag: com.android.settingslib.flags.settings_catalyst
Test: unit
Change-Id: I69a92a8029b94ca03d6232164edddf1a987201be
This commit is contained in:
Jacky Wang
2024-12-19 09:49:34 +08:00
parent 0abc339959
commit a8dad23365
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
} }
} },
) )
) )
} }
@@ -110,21 +107,23 @@ class PreferenceServiceRequestTransformerTest {
assertThat(metadataList.size).isEqualTo(2) assertThat(metadataList.size).isEqualTo(2)
} }
assertThat( assertThat(
fResult.metadataList.any { fResult.metadataList.any {
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,26 +142,28 @@ 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 =
emptyMap(), PreferenceGetterResponse(
mapOf( emptyMap(),
PreferenceCoordinate(fRequest.screenKey, fRequest.preferenceKey) to mapOf(
PreferenceProto.newBuilder() PreferenceCoordinate(fRequest.screenKey, fRequest.preferenceKey) to
.setKey("key") preferenceProto {
.setTitle(TextProto.newBuilder().setString("title")) key = "key"
.setSummary(TextProto.newBuilder().setString("summary")) title = textProto { string = "title" }
.setEnabled(true) summary = textProto { string = "summary" }
.setAvailable(true) enabled = true
.setRestricted(true) available = true
.setPersistent(true) restricted = true
.setSensitivityLevel(SensitivityLevel.LOW_SENSITIVITY) persistent = true
.setLaunchIntent( sensitivityLevel = SensitivityLevel.LOW_SENSITIVITY
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)
with(fResult.metadata!!) { with(fResult.metadata!!) {
@@ -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,13 +191,14 @@ 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 =
mapOf( PreferenceGetterResponse(
PreferenceCoordinate(fRequest.screenKey, fRequest.preferenceKey) to mapOf(
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!!) {
assertThat(resultCode).isEqualTo(GetValueResult.RESULT_UNSUPPORTED) assertThat(resultCode).isEqualTo(GetValueResult.RESULT_UNSUPPORTED)
@@ -214,13 +218,15 @@ class PreferenceServiceRequestTransformerTest {
@Test @Test
fun transformFrameworkSetValueRequest_typeBoolean_returnsValidCatalystRequest() { fun transformFrameworkSetValueRequest_typeBoolean_returnsValidCatalystRequest() {
val fRequest = SetValueRequest.Builder( val fRequest =
"screen", SetValueRequest.Builder(
"pref", "screen",
SettingsPreferenceValue.Builder(SettingsPreferenceValue.TYPE_BOOLEAN) "pref",
.setBooleanValue(true) SettingsPreferenceValue.Builder(SettingsPreferenceValue.TYPE_BOOLEAN)
.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 =
"screen", SetValueRequest.Builder(
"pref", "screen",
SettingsPreferenceValue.Builder(SettingsPreferenceValue.TYPE_INT) "pref",
.setIntValue(5) SettingsPreferenceValue.Builder(SettingsPreferenceValue.TYPE_INT)
.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 =
"screen", SetValueRequest.Builder(
"pref", "screen",
SettingsPreferenceValue.Builder(SettingsPreferenceValue.TYPE_STRING) "pref",
.setStringValue("value") SettingsPreferenceValue.Builder(SettingsPreferenceValue.TYPE_STRING)
.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(transformCatalystSetValueResponse(PreferenceSetterResult.UNAVAILABLE).resultCode)
.isEqualTo(SetValueResult.RESULT_UNAVAILABLE)
assertThat(transformCatalystSetValueResponse(PreferenceSetterResult.DISABLED).resultCode)
.isEqualTo(SetValueResult.RESULT_DISABLED)
assertThat(transformCatalystSetValueResponse(PreferenceSetterResult.UNSUPPORTED).resultCode)
.isEqualTo(SetValueResult.RESULT_UNSUPPORTED)
assertThat(transformCatalystSetValueResponse(PreferenceSetterResult.DISALLOW).resultCode)
.isEqualTo(SetValueResult.RESULT_DISALLOW)
assertThat( assertThat(
transformCatalystSetValueResponse(PreferenceSetterResult.UNAVAILABLE).resultCode transformCatalystSetValueResponse(PreferenceSetterResult.REQUIRE_APP_PERMISSION)
).isEqualTo(SetValueResult.RESULT_UNAVAILABLE) .resultCode
)
.isEqualTo(SetValueResult.RESULT_REQUIRE_APP_PERMISSION)
assertThat( assertThat(
transformCatalystSetValueResponse(PreferenceSetterResult.DISABLED).resultCode transformCatalystSetValueResponse(PreferenceSetterResult.REQUIRE_USER_AGREEMENT)
).isEqualTo(SetValueResult.RESULT_DISABLED) .resultCode
)
.isEqualTo(SetValueResult.RESULT_REQUIRE_USER_CONSENT)
assertThat(transformCatalystSetValueResponse(PreferenceSetterResult.RESTRICTED).resultCode)
.isEqualTo(SetValueResult.RESULT_RESTRICTED)
assertThat( assertThat(
transformCatalystSetValueResponse(PreferenceSetterResult.UNSUPPORTED).resultCode transformCatalystSetValueResponse(PreferenceSetterResult.INVALID_REQUEST).resultCode
).isEqualTo(SetValueResult.RESULT_UNSUPPORTED) )
.isEqualTo(SetValueResult.RESULT_INVALID_REQUEST)
assertThat( assertThat(
transformCatalystSetValueResponse(PreferenceSetterResult.DISALLOW).resultCode transformCatalystSetValueResponse(PreferenceSetterResult.INTERNAL_ERROR).resultCode
).isEqualTo(SetValueResult.RESULT_DISALLOW) )
.isEqualTo(SetValueResult.RESULT_INTERNAL_ERROR)
assertThat(
transformCatalystSetValueResponse(PreferenceSetterResult.REQUIRE_APP_PERMISSION)
.resultCode
).isEqualTo(SetValueResult.RESULT_REQUIRE_APP_PERMISSION)
assertThat(
transformCatalystSetValueResponse(PreferenceSetterResult.REQUIRE_USER_AGREEMENT)
.resultCode
).isEqualTo(SetValueResult.RESULT_REQUIRE_USER_CONSENT)
assertThat(
transformCatalystSetValueResponse(PreferenceSetterResult.RESTRICTED).resultCode
).isEqualTo(SetValueResult.RESULT_RESTRICTED)
assertThat(
transformCatalystSetValueResponse(PreferenceSetterResult.INVALID_REQUEST).resultCode
).isEqualTo(SetValueResult.RESULT_INVALID_REQUEST)
assertThat(
transformCatalystSetValueResponse(PreferenceSetterResult.INTERNAL_ERROR).resultCode
).isEqualTo(SetValueResult.RESULT_INTERNAL_ERROR)
} }
} }