Loading packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt +17 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,8 @@ import com.android.settingslib.metadata.PreferenceScreenRegistry import com.android.settingslib.metadata.PreferenceSummaryProvider import com.android.settingslib.metadata.PreferenceTitleProvider import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.SensitivityLevel.Companion.HIGH_SENSITIVITY import com.android.settingslib.metadata.SensitivityLevel.Companion.UNKNOWN_SENSITIVITY import com.android.settingslib.preference.PreferenceScreenFactory import com.android.settingslib.preference.PreferenceScreenProvider import java.util.Locale Loading Loading @@ -421,7 +423,7 @@ fun PreferenceMetadata.toProto( metadata.getWritePermissions(context)?.let { if (it.size > 0) writePermissions = it.toProto() } val readPermit = metadata.evalReadPermit(context, callingPid, callingUid) val writePermit = metadata.getWritePermit(context, callingPid, callingUid) ?: ReadWritePermit.ALLOW metadata.evalWritePermit(context, callingPid, callingUid) ?: ReadWritePermit.ALLOW readWritePermit = ReadWritePermit.make(readPermit, writePermit) if ( flags.includeValue() && Loading Loading @@ -472,6 +474,20 @@ fun <T> PersistentPreference<T>.evalReadPermit( else -> getReadPermit(context, callingPid, callingUid) } /** Evaluates the write permit of a persistent preference. */ fun <T> PersistentPreference<T>.evalWritePermit( context: Context, callingPid: Int, callingUid: Int, ): Int? = when { sensitivityLevel == UNKNOWN_SENSITIVITY || sensitivityLevel == HIGH_SENSITIVITY -> ReadWritePermit.DISALLOW getWritePermissions(context)?.check(context, callingPid, callingUid) == false -> ReadWritePermit.REQUIRE_APP_PERMISSION else -> getWritePermit(context, callingPid, callingUid) } private fun PreferenceMetadata.getTitleTextProto(context: Context, isRoot: Boolean): TextProto? { if (isRoot && this is PreferenceScreenMetadata) { val titleRes = screenTitle Loading packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt +2 −11 Original line number Diff line number Diff line Loading @@ -36,8 +36,6 @@ import com.android.settingslib.metadata.PreferenceRemoteOpMetricsLogger import com.android.settingslib.metadata.PreferenceRestrictionProvider import com.android.settingslib.metadata.PreferenceScreenRegistry import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.SensitivityLevel.Companion.HIGH_SENSITIVITY import com.android.settingslib.metadata.SensitivityLevel.Companion.UNKNOWN_SENSITIVITY /** Request to set preference value. */ class PreferenceSetterRequest( Loading Loading @@ -223,15 +221,8 @@ fun <T> PersistentPreference<T>.evalWritePermit( callingPid: Int, callingUid: Int, ): Int = when { sensitivityLevel == UNKNOWN_SENSITIVITY || sensitivityLevel == HIGH_SENSITIVITY -> ReadWritePermit.DISALLOW getWritePermissions(context)?.check(context, callingPid, callingUid) == false -> ReadWritePermit.REQUIRE_APP_PERMISSION else -> getWritePermit(context, callingPid, callingUid) evalWritePermit(context, callingPid, callingUid) ?: getWritePermit(context, value, callingPid, callingUid) } /** Message codec for [PreferenceSetterRequest]. */ object PreferenceSetterRequestCodec : MessageCodec<PreferenceSetterRequest> { Loading packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt +4 −2 Original line number Diff line number Diff line Loading @@ -128,7 +128,8 @@ interface PersistentPreference<T> : PreferenceMetadata { /** * Returns if the external application (identified by [callingPid] and [callingUid]) is * permitted to write preference value. * permitted to write preference value. If the write permit depends on certain value, implement * the overloading [getWritePermit] instead. * * The underlying implementation does NOT need to check common states like isEnabled, * isRestricted, isAvailable or permissions in [getWritePermissions]. The framework will do it Loading @@ -139,7 +140,8 @@ interface PersistentPreference<T> : PreferenceMetadata { /** * Returns if the external application (identified by [callingPid] and [callingUid]) is * permitted to write preference with given [value]. * permitted to write preference with given [value]. Note that if the overloading * [getWritePermit] returns non null value, this method will be ignored! * * The underlying implementation does NOT need to check common states like isEnabled, * isRestricted, isAvailable or permissions in [getWritePermissions]. The framework will do it Loading Loading
packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt +17 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,8 @@ import com.android.settingslib.metadata.PreferenceScreenRegistry import com.android.settingslib.metadata.PreferenceSummaryProvider import com.android.settingslib.metadata.PreferenceTitleProvider import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.SensitivityLevel.Companion.HIGH_SENSITIVITY import com.android.settingslib.metadata.SensitivityLevel.Companion.UNKNOWN_SENSITIVITY import com.android.settingslib.preference.PreferenceScreenFactory import com.android.settingslib.preference.PreferenceScreenProvider import java.util.Locale Loading Loading @@ -421,7 +423,7 @@ fun PreferenceMetadata.toProto( metadata.getWritePermissions(context)?.let { if (it.size > 0) writePermissions = it.toProto() } val readPermit = metadata.evalReadPermit(context, callingPid, callingUid) val writePermit = metadata.getWritePermit(context, callingPid, callingUid) ?: ReadWritePermit.ALLOW metadata.evalWritePermit(context, callingPid, callingUid) ?: ReadWritePermit.ALLOW readWritePermit = ReadWritePermit.make(readPermit, writePermit) if ( flags.includeValue() && Loading Loading @@ -472,6 +474,20 @@ fun <T> PersistentPreference<T>.evalReadPermit( else -> getReadPermit(context, callingPid, callingUid) } /** Evaluates the write permit of a persistent preference. */ fun <T> PersistentPreference<T>.evalWritePermit( context: Context, callingPid: Int, callingUid: Int, ): Int? = when { sensitivityLevel == UNKNOWN_SENSITIVITY || sensitivityLevel == HIGH_SENSITIVITY -> ReadWritePermit.DISALLOW getWritePermissions(context)?.check(context, callingPid, callingUid) == false -> ReadWritePermit.REQUIRE_APP_PERMISSION else -> getWritePermit(context, callingPid, callingUid) } private fun PreferenceMetadata.getTitleTextProto(context: Context, isRoot: Boolean): TextProto? { if (isRoot && this is PreferenceScreenMetadata) { val titleRes = screenTitle Loading
packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt +2 −11 Original line number Diff line number Diff line Loading @@ -36,8 +36,6 @@ import com.android.settingslib.metadata.PreferenceRemoteOpMetricsLogger import com.android.settingslib.metadata.PreferenceRestrictionProvider import com.android.settingslib.metadata.PreferenceScreenRegistry import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.SensitivityLevel.Companion.HIGH_SENSITIVITY import com.android.settingslib.metadata.SensitivityLevel.Companion.UNKNOWN_SENSITIVITY /** Request to set preference value. */ class PreferenceSetterRequest( Loading Loading @@ -223,15 +221,8 @@ fun <T> PersistentPreference<T>.evalWritePermit( callingPid: Int, callingUid: Int, ): Int = when { sensitivityLevel == UNKNOWN_SENSITIVITY || sensitivityLevel == HIGH_SENSITIVITY -> ReadWritePermit.DISALLOW getWritePermissions(context)?.check(context, callingPid, callingUid) == false -> ReadWritePermit.REQUIRE_APP_PERMISSION else -> getWritePermit(context, callingPid, callingUid) evalWritePermit(context, callingPid, callingUid) ?: getWritePermit(context, value, callingPid, callingUid) } /** Message codec for [PreferenceSetterRequest]. */ object PreferenceSetterRequestCodec : MessageCodec<PreferenceSetterRequest> { Loading
packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt +4 −2 Original line number Diff line number Diff line Loading @@ -128,7 +128,8 @@ interface PersistentPreference<T> : PreferenceMetadata { /** * Returns if the external application (identified by [callingPid] and [callingUid]) is * permitted to write preference value. * permitted to write preference value. If the write permit depends on certain value, implement * the overloading [getWritePermit] instead. * * The underlying implementation does NOT need to check common states like isEnabled, * isRestricted, isAvailable or permissions in [getWritePermissions]. The framework will do it Loading @@ -139,7 +140,8 @@ interface PersistentPreference<T> : PreferenceMetadata { /** * Returns if the external application (identified by [callingPid] and [callingUid]) is * permitted to write preference with given [value]. * permitted to write preference with given [value]. Note that if the overloading * [getWritePermit] returns non null value, this method will be ignored! * * The underlying implementation does NOT need to check common states like isEnabled, * isRestricted, isAvailable or permissions in [getWritePermissions]. The framework will do it Loading