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

Commit 618ebe62 authored by Rahul Sabnis's avatar Rahul Sabnis Committed by android-build-team Robot
Browse files

Check whether local device is an ATV device to determine whether to show

the consent dialog for BLE pairing in JUSTWORKS and ENCRYPTION_ONLY mode

Tag: #feature
Bug: 157038281
Test: Manual
Merged-In: I6d06f5996da71e5a1407e544b0023d82924aa56f
Change-Id: I6d06f5996da71e5a1407e544b0023d82924aa56f
(cherry picked from commit e198eb931d834a3117005f31ece43a83ecc0cd60)
parent caa39c19
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -132,6 +132,18 @@ bool is_niap_mode(void);
 ******************************************************************************/
int get_niap_config_compare_result(void);

/*******************************************************************************
 *
 * Function         is_atv_device
 *
 * Description      Returns true if the local device is an Android TV
 *                  device, false if it is not.
 *
 * Returns          bool
 *
 ******************************************************************************/
bool is_atv_device(void);

/*******************************************************************************
 *
 * Function         btif_get_adapter_properties
+5 −1
Original line number Diff line number Diff line
@@ -88,6 +88,7 @@ bool restricted_mode = false;
bool niap_mode = false;
const int CONFIG_COMPARE_ALL_PASS = 0b11;
int niap_config_compare_result = CONFIG_COMPARE_ALL_PASS;
bool is_local_device_atv = false;

/*******************************************************************************
 *  Externs
@@ -140,7 +141,7 @@ static bool is_profile(const char* p1, const char* p2) {
 ****************************************************************************/

static int init(bt_callbacks_t* callbacks, bool start_restricted,
                bool is_niap_mode, int config_compare_result) {
                bool is_niap_mode, int config_compare_result, bool is_atv) {
  LOG_INFO(LOG_TAG,
           "%s: start restricted = %d ; niap = %d, config compare result = %d",
           __func__, start_restricted, is_niap_mode, config_compare_result);
@@ -161,6 +162,7 @@ static int init(bt_callbacks_t* callbacks, bool start_restricted,
  restricted_mode = start_restricted;
  niap_mode = is_niap_mode;
  niap_config_compare_result = config_compare_result;
  is_local_device_atv = is_atv;

  stack_manager_get_interface()->init_stack();
  btif_debug_init();
@@ -191,6 +193,8 @@ int get_niap_config_compare_result() {
  return niap_mode ? niap_config_compare_result : CONFIG_COMPARE_ALL_PASS;
}

bool is_atv_device() { return is_local_device_atv; }

static int get_adapter_properties(void) {
  /* sanity check */
  if (!interface_ready()) return BT_STATUS_NOT_READY;
+2 −1
Original line number Diff line number Diff line
@@ -473,9 +473,10 @@ typedef struct {
   * The |is_niap_mode| flag inits the adapter in NIAP mode.
   * The |config_compare_result| flag show the config checksum check result if
   * is in NIAP mode.
   * The |is_atv| flag indicates whether the local device is an Android TV
   */
  int (*init)(bt_callbacks_t* callbacks, bool guest_mode, bool is_niap_mode,
              int config_compare_result);
              int config_compare_result, bool is_atv);

  /** Enable Bluetooth. */
  int (*enable)();
+1 −1
Original line number Diff line number Diff line
@@ -254,7 +254,7 @@ class BluetoothInterfaceImpl : public BluetoothInterface {

    // Initialize the Bluetooth interface. Set up the adapter (Bluetooth DM) API
    // callbacks.
    status = hal_iface_->init(&bt_callbacks, false, false, 0);
    status = hal_iface_->init(&bt_callbacks, false, false, 0, false);
    if (status != BT_STATUS_SUCCESS) {
      LOG(ERROR) << "Failed to initialize Bluetooth stack";
      return false;
+7 −4
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <cutils/log.h>
#include <log/log.h>
#include <string.h>
#include "btif_api.h"
#include "btif_common.h"
#include "btif_storage.h"
#include "device/include/interop.h"
@@ -1301,8 +1302,9 @@ void smp_decide_association_model(tSMP_CB* p_cb, tSMP_INT_DATA* p_data) {
        smp_int_data.status = SMP_PAIR_AUTH_FAIL;
        int_evt = SMP_AUTH_CMPL_EVT;
      } else {
        if (p_cb->local_io_capability != SMP_IO_CAP_NONE &&
            p_cb->local_io_capability != SMP_IO_CAP_IN) {
        if (!is_atv_device() &&
            (p_cb->local_io_capability == SMP_IO_CAP_IO ||
             p_cb->local_io_capability == SMP_IO_CAP_KBDISP)) {
          /* display consent dialog if this device has a display */
          SMP_TRACE_DEBUG("ENCRYPTION_ONLY showing Consent Dialog");
          p_cb->cb_evt = SMP_CONSENT_REQ_EVT;
@@ -1656,8 +1658,9 @@ void smp_process_peer_nonce(tSMP_CB* p_cb, tSMP_INT_DATA* p_data) {
      }

      if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_JUSTWORKS) {
        if (p_cb->local_io_capability != SMP_IO_CAP_NONE &&
            p_cb->local_io_capability != SMP_IO_CAP_IN) {
        if (!is_atv_device() &&
            (p_cb->local_io_capability == SMP_IO_CAP_IO ||
             p_cb->local_io_capability == SMP_IO_CAP_KBDISP)) {
          /* display consent dialog */
          SMP_TRACE_DEBUG("JUST WORKS showing Consent Dialog");
          p_cb->cb_evt = SMP_CONSENT_REQ_EVT;
Loading