diff --git a/src/com/android/settings/network/MobileDataPreference.kt b/src/com/android/settings/network/MobileDataPreference.kt index 04649d9b809..7a55ff65299 100644 --- a/src/com/android/settings/network/MobileDataPreference.kt +++ b/src/com/android/settings/network/MobileDataPreference.kt @@ -24,6 +24,7 @@ import com.android.settings.network.telephony.MobileDataRepository import com.android.settings.network.telephony.SubscriptionRepository import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.NoOpKeyedObservable +import com.android.settingslib.datastore.Permissions import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.SensitivityLevel @@ -47,7 +48,7 @@ class MobileDataPreference : override fun storage(context: Context): KeyValueStore = MobileDataStorage(context) override fun getReadPermissions(context: Context) = - arrayOf( + Permissions.allOf( // required by TelephonyManager.isDataEnabledForReason Manifest.permission.ACCESS_NETWORK_STATE, Manifest.permission.READ_PHONE_STATE, @@ -56,7 +57,7 @@ class MobileDataPreference : ) override fun getWritePermissions(context: Context) = - arrayOf( + Permissions.allOf( // required by TelephonyManager.setDataEnabledForReason Manifest.permission.MODIFY_PHONE_STATE ) diff --git a/src/com/android/settings/service/PreferenceServiceRequestTransformer.kt b/src/com/android/settings/service/PreferenceServiceRequestTransformer.kt index 2fe27542667..836bb9fdc5a 100644 --- a/src/com/android/settings/service/PreferenceServiceRequestTransformer.kt +++ b/src/com/android/settings/service/PreferenceServiceRequestTransformer.kt @@ -31,12 +31,13 @@ import com.android.settingslib.graph.PreferenceGetterRequest import com.android.settingslib.graph.PreferenceGetterResponse import com.android.settingslib.graph.PreferenceSetterRequest import com.android.settingslib.graph.PreferenceSetterResult -import com.android.settingslib.graph.preferenceValueProto -import com.android.settingslib.graph.proto.PreferenceProto -import com.android.settingslib.graph.proto.PreferenceValueProto +import com.android.settingslib.graph.getAllPermissions import com.android.settingslib.graph.getText +import com.android.settingslib.graph.preferenceValueProto import com.android.settingslib.graph.proto.PreferenceGraphProto import com.android.settingslib.graph.proto.PreferenceOrGroupProto +import com.android.settingslib.graph.proto.PreferenceProto +import com.android.settingslib.graph.proto.PreferenceValueProto import com.android.settingslib.graph.toIntent import com.android.settingslib.metadata.SensitivityLevel @@ -204,7 +205,8 @@ private fun PreferenceProto.toMetadata( .setWritable(persistent) .setLaunchIntent(launchIntent.toIntent()) .setWriteSensitivity(sensitivity) - .setReadPermissions(readPermissionsList) - .setWritePermissions(writePermissionsList) + // Returns all the permissions that are used, some of which are exclusive (e.g. p1 or p2) + .setReadPermissions(readPermissions.getAllPermissions()) + .setWritePermissions(writePermissions.getAllPermissions()) .build() } diff --git a/tests/robotests/src/com/android/settings/service/PreferenceServiceRequestTransformerTest.kt b/tests/robotests/src/com/android/settings/service/PreferenceServiceRequestTransformerTest.kt index da7ba5b5237..952c4f4bd2a 100644 --- a/tests/robotests/src/com/android/settings/service/PreferenceServiceRequestTransformerTest.kt +++ b/tests/robotests/src/com/android/settings/service/PreferenceServiceRequestTransformerTest.kt @@ -31,6 +31,7 @@ import android.service.settings.preferences.SettingsPreferenceValue import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settings.homepage.SettingsHomepageActivity +import com.android.settingslib.datastore.Permissions import com.android.settingslib.flags.Flags.FLAG_SETTINGS_CATALYST import com.android.settingslib.graph.PreferenceCoordinate import com.android.settingslib.graph.PreferenceGetterErrorCode @@ -156,8 +157,8 @@ class PreferenceServiceRequestTransformerTest { restricted = true persistent = true sensitivityLevel = SensitivityLevel.LOW_SENSITIVITY - addReadPermissions("read_permission") - addWritePermissions("write_permission") + readPermissions = Permissions.allOf("read_permission").toProto() + writePermissions = Permissions.anyOf("write_permission").toProto() launchIntent = Intent(context, SettingsHomepageActivity::class.java).toProto() value = preferenceValueProto { booleanValue = true }