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

Commit a5a1f4f3 authored by Jakub Pawłowski's avatar Jakub Pawłowski Committed by Gerrit Code Review
Browse files

Merge changes Iafc1e1bf,Ie0bd37fb into main

* changes:
  Do not require BLUETOOTH_PRIVILEGED for KEY_MISSING broadcast
  Make KEY_MISSING into ordered broadcast
parents 5b0a0284 90670470
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -260,6 +260,7 @@ android_app {
        "android.hardware.radio-V1.0-java",
        "android.hardware.radio.sap-V1-java",
        "android.media.audio-aconfig-exported-java",
        "android.os.flags-aconfig-java-export",
        "androidx.annotation_annotation",
        "androidx.core_core",
        "androidx.lifecycle_lifecycle-livedata",
+38 −4
Original line number Diff line number Diff line
@@ -20,7 +20,11 @@ import static android.Manifest.permission.BLUETOOTH_CONNECT;
import static android.Manifest.permission.BLUETOOTH_PRIVILEGED;
import static android.Manifest.permission.BLUETOOTH_SCAN;

import static com.android.modules.utils.build.SdkLevel.isAtLeastV;

import android.annotation.RequiresPermission;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.admin.SecurityLog;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothAssignedNumbers;
@@ -1388,6 +1392,8 @@ public class RemoteDevices {
        }
    }

    // TODO: remove when key_missing_public flag is deleted
    @SuppressLint("AndroidFrameworkRequiresPermission")
    void keyMissingCallback(byte[] address) {
        BluetoothDevice bluetoothDevice = getDevice(address);
        if (bluetoothDevice == null) {
@@ -1405,12 +1411,40 @@ public class RemoteDevices {
                            .addFlags(
                                    Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT
                                            | Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
            if (Flags.keyMissingPublic()) {
                mAdapterService.sendOrderedBroadcast(
                        intent,
                        BLUETOOTH_CONNECT,
                        Utils.getTempBroadcastOptions().toBundle(),
                        null /* resultReceiver */,
                        null /* scheduler */,
                        Activity.RESULT_OK /* initialCode */,
                        null /* initialData */,
                        null /* initialExtras */);
                return;
            }

            if (isAtLeastV()
                    && Flags.keyMissingAsOrderedBroadcast()
                    && android.os.Flags.orderedBroadcastMultiplePermissions()) {
                mAdapterService.sendOrderedBroadcastMultiplePermissions(
                        intent,
                        new String[] {BLUETOOTH_CONNECT, BLUETOOTH_PRIVILEGED},
                        null /* receiverAppOp */,
                        null /* resultReceiver */,
                        null /* scheduler */,
                        Activity.RESULT_OK /* initialCode */,
                        null /* initialData */,
                        null /* initialExtras */,
                        Utils.getTempBroadcastOptions().toBundle());
            } else {
                mAdapterService.sendBroadcastMultiplePermissions(
                        intent,
                        new String[] {BLUETOOTH_CONNECT, BLUETOOTH_PRIVILEGED},
                        Utils.getTempBroadcastOptions());
            }
        }
    }

    void encryptionChangeCallback(
            byte[] address,
+8 −0
Original line number Diff line number Diff line
@@ -97,3 +97,11 @@ flag {
    description: "Broadcast when remote device encryption changes"
    bug: "369753860"
}

flag {
    name: "key_missing_public"
    is_exported: true
    namespace: "bluetooth"
    description: "Make BluetoothDevice.ACTION_KEY_MISSING into public API"
    bug: "379729762"
}
+1 −0
Original line number Diff line number Diff line
@@ -556,6 +556,7 @@ package android.bluetooth {
    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CLASS_CHANGED = "android.bluetooth.device.action.CLASS_CHANGED";
    field @FlaggedApi("com.android.bluetooth.flags.encryption_change_broadcast") @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_ENCRYPTION_CHANGE = "android.bluetooth.device.action.ENCRYPTION_CHANGE";
    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_SCAN) public static final String ACTION_FOUND = "android.bluetooth.device.action.FOUND";
    field @FlaggedApi("com.android.bluetooth.flags.key_missing_public") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}, conditional=true) public static final String ACTION_KEY_MISSING = "android.bluetooth.device.action.KEY_MISSING";
    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_NAME_CHANGED = "android.bluetooth.device.action.NAME_CHANGED";
    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_PAIRING_REQUEST = "android.bluetooth.device.action.PAIRING_REQUEST";
    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_UUID = "android.bluetooth.device.action.UUID";
+0 −1
Original line number Diff line number Diff line
@@ -284,7 +284,6 @@ package android.bluetooth {
    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CONNECTION_ACCESS_CANCEL = "android.bluetooth.device.action.CONNECTION_ACCESS_CANCEL";
    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CONNECTION_ACCESS_REPLY = "android.bluetooth.device.action.CONNECTION_ACCESS_REPLY";
    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CONNECTION_ACCESS_REQUEST = "android.bluetooth.device.action.CONNECTION_ACCESS_REQUEST";
    field @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public static final String ACTION_KEY_MISSING = "android.bluetooth.device.action.KEY_MISSING";
    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_PAIRING_CANCEL = "android.bluetooth.device.action.PAIRING_CANCEL";
    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_SILENCE_MODE_CHANGED = "android.bluetooth.device.action.SILENCE_MODE_CHANGED";
    field @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public static final String ACTION_SWITCH_BUFFER_SIZE = "android.bluetooth.device.action.SWITCH_BUFFER_SIZE";
Loading