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

Commit bb6c315e authored by David Duarte's avatar David Duarte Committed by Gerrit Code Review
Browse files

Merge changes from topic "cherrypicker-L60500000959991937:N24900001358805381" into main

* changes:
  Protect system APIs based on feedback.
  Apply delivery group policies to ACTION_DISCOVERY_FINISHED.
parents 4a4b1ba2 4c1ac0a7
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -20,7 +20,9 @@ package com.android.bluetooth.btservice;
import static android.Manifest.permission.BLUETOOTH_CONNECT;
import static android.Manifest.permission.BLUETOOTH_SCAN;

import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.app.BroadcastOptions;
import android.bluetooth.BluetoothA2dp;
import android.bluetooth.BluetoothA2dpSink;
import android.bluetooth.BluetoothAdapter;
@@ -46,6 +48,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.ParcelUuid;
import android.os.SystemProperties;
import android.os.UserHandle;
@@ -57,6 +60,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.bluetooth.BluetoothStatsLog;
import com.android.bluetooth.Utils;
import com.android.bluetooth.btservice.RemoteDevices.DeviceProperties;
import com.android.modules.utils.build.SdkLevel;

import com.google.common.collect.EvictingQueue;

@@ -1168,7 +1172,7 @@ class AdapterProperties {
                mDiscoveryEndMs = System.currentTimeMillis();
                intent = new Intent(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
                Utils.sendBroadcast(mService, intent, BLUETOOTH_SCAN,
                        Utils.getTempAllowlistBroadcastOptions());
                        getBroadcastOptionsForDiscoveryFinished());
            } else if (state == AbstractionLayer.BT_DISCOVERY_STARTED) {
                mDiscovering = true;
                mDiscoveryEndMs = System.currentTimeMillis() + DEFAULT_DISCOVERY_TIMEOUT_MS;
@@ -1179,6 +1183,18 @@ class AdapterProperties {
        }
    }

    /**
     * @return broadcast options for ACTION_DISCOVERY_FINISHED broadcast
     */
    private static @NonNull Bundle getBroadcastOptionsForDiscoveryFinished() {
        final BroadcastOptions options = Utils.getTempBroadcastOptions();
        if (SdkLevel.isAtLeastU()) {
            options.setDeliveryGroupPolicy(BroadcastOptions.DELIVERY_GROUP_POLICY_MOST_RECENT);
            options.setDeferralPolicy(BroadcastOptions.DEFERRAL_POLICY_UNTIL_ACTIVE);
        }
        return options.toBundle();
    }

    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
    protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
        writer.println(TAG);