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

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

[Catalyst] Use Permissions for getRead/WritePermissions

Bug: 374115149
Flag: EXEMPT library
Test: manual
Change-Id: I705b0f3e59880ed06e67f2fad0cac2d796b4d4df
parent c3de397d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -85,9 +85,9 @@ class SettingsGlobalStore private constructor(contentResolver: ContentResolver)
                }

        /** Returns the required permissions to read [Global] settings. */
        fun getReadPermissions() = arrayOf<String>()
        fun getReadPermissions() = Permissions.EMPTY

        /** Returns the required permissions to write [Global] settings. */
        fun getWritePermissions() = arrayOf(Manifest.permission.WRITE_SECURE_SETTINGS)
        fun getWritePermissions() = Permissions.allOf(Manifest.permission.WRITE_SECURE_SETTINGS)
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -85,9 +85,9 @@ class SettingsSecureStore private constructor(contentResolver: ContentResolver)
                }

        /** Returns the required permissions to read [Secure] settings. */
        fun getReadPermissions() = arrayOf<String>()
        fun getReadPermissions() = Permissions.EMPTY

        /** Returns the required permissions to write [Secure] settings. */
        fun getWritePermissions() = arrayOf(Manifest.permission.WRITE_SECURE_SETTINGS)
        fun getWritePermissions() = Permissions.allOf(Manifest.permission.WRITE_SECURE_SETTINGS)
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -85,9 +85,9 @@ class SettingsSystemStore private constructor(contentResolver: ContentResolver)
                }

        /** Returns the required permissions to read [System] settings. */
        fun getReadPermissions() = arrayOf<String>()
        fun getReadPermissions() = Permissions.EMPTY

        /** Returns the required permissions to write [System] settings. */
        fun getWritePermissions() = arrayOf(Manifest.permission.WRITE_SETTINGS)
        fun getWritePermissions() = Permissions.allOf(Manifest.permission.WRITE_SETTINGS)
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -82,9 +82,9 @@ message PreferenceProto {
  // Indicate how sensitive of the preference.
  optional int32 sensitivity_level = 16;
  // The required permissions to read preference value.
  repeated string read_permissions = 17;
  optional PermissionsProto read_permissions = 17;
  // The required permissions to write preference value.
  repeated string write_permissions = 18;
  optional PermissionsProto write_permissions = 18;

  // Target of an Intent
  message ActionTarget {
+11 −12
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.content.pm.PackageManager.PERMISSION_GRANTED
import android.content.res.Configuration
import android.os.Build
import android.os.Bundle
@@ -393,10 +392,12 @@ fun PreferenceMetadata.toProto(
    if (persistent) {
        if (metadata is PersistentPreference<*>) {
            sensitivityLevel = metadata.sensitivityLevel
            val readPermissions = metadata.getReadPermissions(context)
            readPermissions.forEach { addReadPermissions(it) }
            val writePermissions = metadata.getWritePermissions(context)
            writePermissions.forEach { addWritePermissions(it) }
            metadata.getReadPermissions(context)?.let {
                if (it.size > 0) readPermissions = it.toProto()
            }
            metadata.getWritePermissions(context)?.let {
                if (it.size > 0) writePermissions = it.toProto()
            }
        }
        if (
            flags.includeValue() &&
@@ -439,13 +440,11 @@ fun <T> PersistentPreference<T>.evalReadPermit(
    context: Context,
    callingPid: Int,
    callingUid: Int,
): Int {
    for (permission in getReadPermissions(context)) {
        if (context.checkPermission(permission, callingPid, callingUid) != PERMISSION_GRANTED) {
            return ReadWritePermit.REQUIRE_APP_PERMISSION
        }
    }
    return getReadPermit(context, callingPid, callingUid)
): Int =
    when {
        getReadPermissions(context)?.check(context, callingPid, callingUid) == false ->
            ReadWritePermit.REQUIRE_APP_PERMISSION
        else -> getReadPermit(context, callingPid, callingUid)
    }

private fun PreferenceMetadata.getTitleTextProto(context: Context, isRoot: Boolean): TextProto? {
Loading