Loading system/btif/src/btif_rc.cc +3 −0 Original line number Diff line number Diff line Loading @@ -3957,6 +3957,9 @@ static void handle_get_metadata_attr_response(tBTA_AV_META_MSG* pmeta_msg, osi_free_and_reset((void**)&p_rsp->p_attrs[i].name.p_str); } } osi_free_and_reset((void**)&p_rsp->p_attrs); do_in_jni_thread(FROM_HERE, base::Bind(bt_rc_ctrl_callbacks->track_changed_cb, p_dev->rc_addr, p_rsp->num_attrs, p_attr)); Loading system/btif/test/btif_rc_test.cc +39 −0 Original line number Diff line number Diff line Loading @@ -426,3 +426,42 @@ TEST_F(BtifRcConnectionTest, BTA_AV_RC_OPEN_EVT) { auto res = future.get(); CHECK(res.rc_state == true); } class BtifTrackChangeCBTest : public BtifRcTest { protected: void SetUp() override { BtifRcTest::SetUp(); init_ctrl(&btrc_ctrl_callbacks); jni_thread.StartUp(); btrc_ctrl_callbacks.track_changed_cb = [](const RawAddress& bd_addr, uint8_t num_attr, btrc_element_attr_val_t* p_attrs) { btif_rc_cb.rc_multi_cb[0].rc_addr = bd_addr; }; } void TearDown() override { btrc_ctrl_callbacks.track_changed_cb = [](const RawAddress& bd_addr, uint8_t num_attr, btrc_element_attr_val_t* p_attrs) {}; BtifRcTest::TearDown(); } }; TEST_F(BtifTrackChangeCBTest, handle_get_metadata_attr_response) { tBTA_AV_META_MSG meta_msg = { .rc_handle = 0, }; tAVRC_GET_ATTRS_RSP rsp = { .status = AVRC_STS_NO_ERROR, .num_attrs = 0, }; btif_rc_cb.rc_multi_cb[0].rc_handle = 0; btif_rc_cb.rc_multi_cb[0].rc_addr = RawAddress::kEmpty; btif_rc_cb.rc_multi_cb[0].rc_state = BTRC_CONNECTION_STATE_CONNECTED; btif_rc_cb.rc_multi_cb[0].rc_connected = true; handle_get_metadata_attr_response(&meta_msg, &rsp); ASSERT_EQ(1, get_func_call_count("osi_free_and_reset")); } Loading
system/btif/src/btif_rc.cc +3 −0 Original line number Diff line number Diff line Loading @@ -3957,6 +3957,9 @@ static void handle_get_metadata_attr_response(tBTA_AV_META_MSG* pmeta_msg, osi_free_and_reset((void**)&p_rsp->p_attrs[i].name.p_str); } } osi_free_and_reset((void**)&p_rsp->p_attrs); do_in_jni_thread(FROM_HERE, base::Bind(bt_rc_ctrl_callbacks->track_changed_cb, p_dev->rc_addr, p_rsp->num_attrs, p_attr)); Loading
system/btif/test/btif_rc_test.cc +39 −0 Original line number Diff line number Diff line Loading @@ -426,3 +426,42 @@ TEST_F(BtifRcConnectionTest, BTA_AV_RC_OPEN_EVT) { auto res = future.get(); CHECK(res.rc_state == true); } class BtifTrackChangeCBTest : public BtifRcTest { protected: void SetUp() override { BtifRcTest::SetUp(); init_ctrl(&btrc_ctrl_callbacks); jni_thread.StartUp(); btrc_ctrl_callbacks.track_changed_cb = [](const RawAddress& bd_addr, uint8_t num_attr, btrc_element_attr_val_t* p_attrs) { btif_rc_cb.rc_multi_cb[0].rc_addr = bd_addr; }; } void TearDown() override { btrc_ctrl_callbacks.track_changed_cb = [](const RawAddress& bd_addr, uint8_t num_attr, btrc_element_attr_val_t* p_attrs) {}; BtifRcTest::TearDown(); } }; TEST_F(BtifTrackChangeCBTest, handle_get_metadata_attr_response) { tBTA_AV_META_MSG meta_msg = { .rc_handle = 0, }; tAVRC_GET_ATTRS_RSP rsp = { .status = AVRC_STS_NO_ERROR, .num_attrs = 0, }; btif_rc_cb.rc_multi_cb[0].rc_handle = 0; btif_rc_cb.rc_multi_cb[0].rc_addr = RawAddress::kEmpty; btif_rc_cb.rc_multi_cb[0].rc_state = BTRC_CONNECTION_STATE_CONNECTED; btif_rc_cb.rc_multi_cb[0].rc_connected = true; handle_get_metadata_attr_response(&meta_msg, &rsp); ASSERT_EQ(1, get_func_call_count("osi_free_and_reset")); }