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

Commit fe7473f1 authored by Sergei Makarov's avatar Sergei Makarov Committed by Android (Google) Code Review
Browse files

Merge changes from topic "contact_keys_manager_api_feedback" into main

* changes:
  Clarify what a 'contact key' is in ContactKeysManager's javadoc
  Expand "E2EE" to "end to end encrypted" in docs
  Add shared prefix to key state enum in ContactKeysManager
  Make ContactKeysManager class final
parents 54190a2b d2c0a6f9
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -35486,7 +35486,7 @@ package android.provider {
    field public static final String LONGITUDE = "longitude";
  }
  @FlaggedApi("android.provider.user_keys") public class ContactKeysManager {
  @FlaggedApi("android.provider.user_keys") public final class ContactKeysManager {
    method @NonNull @RequiresPermission(android.Manifest.permission.READ_CONTACTS) public java.util.List<android.provider.ContactKeysManager.ContactKey> getAllContactKeys(@NonNull String);
    method @NonNull @RequiresPermission(android.Manifest.permission.READ_CONTACTS) public java.util.List<android.provider.ContactKeysManager.SelfKey> getAllSelfKeys();
    method @Nullable @RequiresPermission(android.Manifest.permission.READ_CONTACTS) public android.provider.ContactKeysManager.ContactKey getContactKey(@NonNull String, @NonNull String, @NonNull String);
@@ -35501,9 +35501,9 @@ package android.provider {
    method @RequiresPermission(android.Manifest.permission.WRITE_CONTACTS) public void updateOrInsertContactKey(@NonNull String, @NonNull String, @NonNull String, @NonNull byte[]);
    method @RequiresPermission(android.Manifest.permission.WRITE_CONTACTS) public boolean updateOrInsertSelfKey(@NonNull String, @NonNull String, @NonNull byte[]);
    method @RequiresPermission(android.Manifest.permission.WRITE_CONTACTS) public boolean updateSelfKeyRemoteVerificationState(@NonNull String, @NonNull String, int);
    field public static final int UNVERIFIED = 0; // 0x0
    field public static final int VERIFICATION_FAILED = 1; // 0x1
    field public static final int VERIFIED = 2; // 0x2
    field public static final int VERIFICATION_STATE_UNVERIFIED = 0; // 0x0
    field public static final int VERIFICATION_STATE_VERIFICATION_FAILED = 1; // 0x1
    field public static final int VERIFICATION_STATE_VERIFIED = 2; // 0x2
  }
  public static final class ContactKeysManager.ContactKey implements android.os.Parcelable {
+1 −1
Original line number Diff line number Diff line
@@ -11467,7 +11467,7 @@ package android.provider {
    field public static final int ERROR_UNKNOWN = 0; // 0x0
  }
  @FlaggedApi("android.provider.user_keys") public class ContactKeysManager {
  @FlaggedApi("android.provider.user_keys") public final class ContactKeysManager {
    method @RequiresPermission(allOf={android.Manifest.permission.WRITE_VERIFICATION_STATE_E2EE_CONTACT_KEYS, android.Manifest.permission.WRITE_CONTACTS}) public boolean updateContactKeyLocalVerificationState(@NonNull String, @NonNull String, @NonNull String, @NonNull String, int);
    method @RequiresPermission(allOf={android.Manifest.permission.WRITE_VERIFICATION_STATE_E2EE_CONTACT_KEYS, android.Manifest.permission.WRITE_CONTACTS}) public boolean updateContactKeyRemoteVerificationState(@NonNull String, @NonNull String, @NonNull String, @NonNull String, int);
    method @RequiresPermission(allOf={android.Manifest.permission.WRITE_VERIFICATION_STATE_E2EE_CONTACT_KEYS, android.Manifest.permission.WRITE_CONTACTS}) public boolean updateSelfKeyRemoteVerificationState(@NonNull String, @NonNull String, @NonNull String, int);
+24 −23
Original line number Diff line number Diff line
@@ -39,18 +39,19 @@ import java.util.List;
import java.util.Objects;

/**
 * ContactKeysManager provides the access to the E2EE contact keys provider.
 * It manages two types of keys - {@link ContactKey} of other users' and the owner's keys -
 * {@link SelfKey}.
 * ContactKeysManager provides access to the provider of end-to-end encryption contact keys.
 * It manages two types of keys - {@link ContactKey} and {@link SelfKey}.
 * <ul>
 * <li>
 * For {@link ContactKey} this API allows the insert/update, removal, changing of the
 * verification state, retrieving the keys (either created by or visible to the caller app)
 * operations.
 * A {@link ContactKey} is a public key associated with a contact. It's used to end-to-end
 * encrypt the communications between a user and the contact. This API allows operations on
 * {@link ContactKey}s to insert/update, remove, change the verification state, and retrieving
 * keys (either created by or visible to the caller app).
 * </li>
 * <li>
 * For {@link SelfKey} this API allows the insert/update, removal, retrieving the self keys
 * (either created by or visible to the caller app) operations.
 * A {@link SelfKey} is a key for this device, so the key represents the owner of the device.
 * This API allows operations on {@link SelfKey}s to insert/update, remove, and retrieving
 * self keys (either created by or visible to the caller app).
 * </li>
 * </ul>
 * Keys are uniquely identified by:
@@ -71,7 +72,7 @@ import java.util.Objects;
 * ContactsProvider.
 */
@FlaggedApi(Flags.FLAG_USER_KEYS)
public class ContactKeysManager {
public final class ContactKeysManager {
    /**
     * The authority for the contact keys provider.
     * @hide
@@ -354,9 +355,9 @@ public class ContactKeysManager {


    private static void validateVerificationState(int verificationState) {
        if (verificationState != UNVERIFIED
                && verificationState != VERIFICATION_FAILED
                && verificationState != VERIFIED) {
        if (verificationState != VERIFICATION_STATE_UNVERIFIED
                && verificationState != VERIFICATION_STATE_VERIFICATION_FAILED
                && verificationState != VERIFICATION_STATE_VERIFIED) {
            throw new IllegalArgumentException("Verification state value "
                    + verificationState + " is not supported");
        }
@@ -600,25 +601,25 @@ public class ContactKeysManager {
     * @hide
     */
    @IntDef(prefix = {"VERIFICATION_STATE_"}, value = {
            UNVERIFIED,
            VERIFICATION_FAILED,
            VERIFIED
            VERIFICATION_STATE_UNVERIFIED,
            VERIFICATION_STATE_VERIFICATION_FAILED,
            VERIFICATION_STATE_VERIFIED
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface VerificationState {}

    /**
     * Unverified state of a contact E2EE key.
     * Unverified state of a contact end to end encrypted key.
     */
    public static final int UNVERIFIED = 0;
    public static final int VERIFICATION_STATE_UNVERIFIED = 0;
    /**
     * Failed verification state of a contact E2EE key.
     * Failed verification state of a contact end to end encrypted key.
     */
    public static final int VERIFICATION_FAILED = 1;
    public static final int VERIFICATION_STATE_VERIFICATION_FAILED = 1;
    /**
     * Verified state of a contact E2EE key.
     * Verified state of a contact end to end encrypted key.
     */
    public static final int VERIFIED = 2;
    public static final int VERIFICATION_STATE_VERIFIED = 2;

    /** @hide */
    public static final class ContactKeys {
@@ -791,7 +792,7 @@ public class ContactKeysManager {
    }

    /**
     * A parcelable class encapsulating other users' E2EE contact key.
     * A parcelable class encapsulating other users' end to end encrypted contact key.
     */
    public static final class ContactKey implements Parcelable {
        /**
@@ -1056,7 +1057,7 @@ public class ContactKeysManager {
    }

    /**
     * A parcelable class encapsulating self E2EE contact key.
     * A parcelable class encapsulating self end to end encrypted contact key.
     */
    public static final class SelfKey implements Parcelable {
        /**