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

Commit 538a3aae authored by Xin Li's avatar Xin Li
Browse files

Merge Android10 QPR1 into AOSP master

Bug: 145570283
Change-Id: I677c5e15140450235bf6364d152609c0f231a2b5
parents 669d0c33 ac7cfa2c
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -3079,14 +3079,14 @@ void bta_av_open_at_inc(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
}

void offload_vendor_callback(tBTM_VSC_CMPL* param) {
  uint8_t status = 0;
  tBTA_AV value{0};
  uint8_t sub_opcode = 0;
  if (param->param_len) {
    APPL_TRACE_DEBUG("%s: param_len = %d status = %d", __func__,
                     param->param_len, param->p_param_buf[0]);
    status = param->p_param_buf[0];
    value.status = param->p_param_buf[0];
  }
  if (status == 0) {
  if (value.status == 0) {
    sub_opcode = param->p_param_buf[1];
    APPL_TRACE_DEBUG("%s: subopcode = %d", __func__, sub_opcode);
    switch (sub_opcode) {
@@ -3094,7 +3094,7 @@ void offload_vendor_callback(tBTM_VSC_CMPL* param) {
        APPL_TRACE_DEBUG("%s: VS_HCI_STOP_A2DP_MEDIA successful", __func__);
        break;
      case VS_HCI_A2DP_OFFLOAD_START:
        (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, (tBTA_AV*)&status);
        (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, &value);
        break;
      default:
        break;
@@ -3103,7 +3103,7 @@ void offload_vendor_callback(tBTM_VSC_CMPL* param) {
    APPL_TRACE_DEBUG("%s: Offload failed for subopcode= %d", __func__,
                     sub_opcode);
    if (param->opcode != VS_HCI_A2DP_OFFLOAD_STOP)
      (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, (tBTA_AV*)&status);
      (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, &value);
  }
}

+3 −1
Original line number Diff line number Diff line
@@ -88,7 +88,9 @@ void device_class_from_int(bt_device_class_t* dc, int data) {
int device_class_to_int(const bt_device_class_t* dc) {
  CHECK(dc != NULL);
  // Careful with endianess.
  return (int)(le32toh(*(int*)dc) & 0xffffff);
  int val = 0;
  memcpy(&val, dc, sizeof(*dc));
  return static_cast<int>(le32toh(val) & 0xffffff);
}

bool device_class_equals(const bt_device_class_t* p1,
+24 −15
Original line number Diff line number Diff line
@@ -22,9 +22,6 @@

#include "btcore/include/device_class.h"

// Device Class is 3 bytes.
static const int DC_MASK = 0xffffff;

::testing::AssertionResult check_bitfield(const char* m_expr,
                                          const char* n_expr, int m, int n) {
  if (m == n) return ::testing::AssertionSuccess();
@@ -84,8 +81,9 @@ TEST_F(DeviceClassTest, to_stream) {
    int rc = device_class_to_stream(&dc, dc_stream1, sizeof(dc_stream1));
    EXPECT_EQ(3, rc);

    uint32_t* val = (uint32_t*)&dc;
    EXPECT_PRED_FORMAT2(check_bitfield, 0x00000000, *val & 0xffffff);
    uint32_t val = 0;
    memcpy(&val, &dc, sizeof(dc));
    EXPECT_PRED_FORMAT2(check_bitfield, 0x00000000, val);

    EXPECT_PRED_FORMAT2(check_bitfield, 0x00, dc_stream1[0]);
    EXPECT_PRED_FORMAT2(check_bitfield, 0x00, dc_stream1[1]);
@@ -101,8 +99,9 @@ TEST_F(DeviceClassTest, to_stream) {

    int rc = device_class_to_stream(&dc, dc_stream1, sizeof(dc_stream1));
    EXPECT_EQ(3, rc);
    uint32_t* val = (uint32_t*)&dc;
    EXPECT_PRED_FORMAT2(check_bitfield, 0x00aa55aa, *val & 0xffffff);
    uint32_t val = 0;
    memcpy(&val, &dc, sizeof(dc));
    EXPECT_PRED_FORMAT2(check_bitfield, 0x00aa55aa, val);

    EXPECT_PRED_FORMAT2(check_bitfield, 0xaa, dc_stream1[0]);
    EXPECT_PRED_FORMAT2(check_bitfield, 0x55, dc_stream1[1]);
@@ -118,8 +117,9 @@ TEST_F(DeviceClassTest, to_stream) {

    int rc = device_class_to_stream(&dc, dc_stream1, sizeof(dc_stream1));
    EXPECT_EQ(3, rc);
    uint32_t* val = (uint32_t*)&dc;
    EXPECT_PRED_FORMAT2(check_bitfield, 0x452301, *val & 0xffffff);
    uint32_t val = 0;
    memcpy(&val, &dc, sizeof(dc));
    EXPECT_PRED_FORMAT2(check_bitfield, 0x452301, val);

    EXPECT_PRED_FORMAT2(check_bitfield, 0x01, dc_stream1[0]);
    EXPECT_PRED_FORMAT2(check_bitfield, 0x23, dc_stream1[1]);
@@ -131,24 +131,33 @@ TEST_F(DeviceClassTest, limited_discoverable_mode) {
  uint8_t dc_stream[] = {0x00, 0x00, 0x00};
  bt_device_class_t dc;
  device_class_from_stream(&dc, dc_stream);
  uint32_t* test = (uint32_t*)&dc;
  uint32_t test = 0;
  memcpy(&test, &dc, sizeof(dc));

  EXPECT_FALSE(device_class_get_limited(&dc));
  EXPECT_EQ((unsigned)0x00000000, *test & DC_MASK);
  EXPECT_EQ((unsigned)0x00000000, test);

  device_class_set_limited(&dc, true);
  test = 0;
  memcpy(&test, &dc, sizeof(dc));
  EXPECT_TRUE(device_class_get_limited(&dc));
  EXPECT_EQ((unsigned)0x00002000, *test & DC_MASK);
  EXPECT_EQ((unsigned)0x00002000, test);

  device_class_set_limited(&dc, false);
  test = 0;
  memcpy(&test, &dc, sizeof(dc));
  EXPECT_FALSE(device_class_get_limited(&dc));
  EXPECT_EQ((unsigned)0x00000000, *test & DC_MASK);
  EXPECT_EQ((unsigned)0x00000000, test);

  device_class_set_limited(&dc, true);
  EXPECT_PRED_FORMAT2(check_bitfield, 0x00002000, *test & DC_MASK);
  test = 0;
  memcpy(&test, &dc, sizeof(dc));
  EXPECT_PRED_FORMAT2(check_bitfield, 0x00002000, test);

  device_class_set_limited(&dc, false);
  EXPECT_PRED_FORMAT2(check_bitfield, 0x00000000, *test & DC_MASK);
  test = 0;
  memcpy(&test, &dc, sizeof(dc));
  EXPECT_PRED_FORMAT2(check_bitfield, 0x00000000, test);
}

TEST_F(DeviceClassTest, equals) {
+0 −8
Original line number Diff line number Diff line
@@ -59,14 +59,6 @@ class BtifKeystore {
   */
  std::string Decrypt(const std::string& input_filename);

  /**
   * Check for existence of keystore key.
   *
   * This key can be cleared if a user manually wipes bluetooth storage data
   * b/133214365
   */
  bool DoesKeyExist();

 private:
  std::unique_ptr<keystore::KeystoreClient> keystore_client_;
  std::mutex api_mutex_;
+4 −13
Original line number Diff line number Diff line
@@ -973,21 +973,12 @@ static void btif_dm_ssp_cfm_req_evt(tBTA_DM_SP_CFM_REQ* p_ssp_cfm_req) {

  /* If JustWorks auto-accept */
  if (p_ssp_cfm_req->just_works) {
    /* Pairing consent for JustWorks needed if:
     * 1. Incoming (non-temporary) pairing is detected AND
     * 2. local IO capabilities are DisplayYesNo AND
     * 3. remote IO capabiltiies are DisplayOnly or NoInputNoOutput;
    /* Pairing consent for JustWorks NOT needed if:
     * 1. Incoming temporary pairing is detected
     */
    if (is_incoming && pairing_cb.bond_type != BOND_TYPE_TEMPORARY &&
        ((p_ssp_cfm_req->loc_io_caps == HCI_IO_CAP_DISPLAY_YESNO) &&
         (p_ssp_cfm_req->rmt_io_caps == HCI_IO_CAP_DISPLAY_ONLY ||
          p_ssp_cfm_req->rmt_io_caps == HCI_IO_CAP_NO_IO))) {
    if (is_incoming && pairing_cb.bond_type == BOND_TYPE_TEMPORARY) {
      BTIF_TRACE_EVENT(
          "%s: User consent needed for incoming pairing request. loc_io_caps: "
          "%d, rmt_io_caps: %d",
          __func__, p_ssp_cfm_req->loc_io_caps, p_ssp_cfm_req->rmt_io_caps);
    } else {
      BTIF_TRACE_EVENT("%s: Auto-accept JustWorks pairing", __func__);
          "%s: Auto-accept JustWorks pairing for temporary incoming", __func__);
      btif_dm_ssp_reply(&bd_addr, BT_SSP_VARIANT_CONSENT, true, 0);
      return;
    }
Loading