diff options
author | 2025-03-04 18:07:08 -0800 | |
---|---|---|
committer | 2025-03-04 18:07:08 -0800 | |
commit | c5bed9b38998dd95078d39e91b026cdaa4797f4e (patch) | |
tree | 8445eba207ce93fef3eafca61d140b19e65e55db /system/btif | |
parent | 76164e7f34d540324141aa17b1ab907fdd869613 (diff) | |
parent | 61548a2b4c819147d6009130156657348e2f5375 (diff) |
Merge "Get UUID from TrackChanged event before quary item attribute" into main
Diffstat (limited to 'system/btif')
-rw-r--r-- | system/btif/src/btif_rc.cc | 5 | ||||
-rw-r--r-- | system/btif/test/btif_rc_test.cc | 45 |
2 files changed, 49 insertions, 1 deletions
diff --git a/system/btif/src/btif_rc.cc b/system/btif/src/btif_rc.cc index dba7b4162b..998eede7b6 100644 --- a/system/btif/src/btif_rc.cc +++ b/system/btif/src/btif_rc.cc @@ -1523,8 +1523,11 @@ static void handle_notification_response(tBTA_AV_META_MSG* pmeta_msg, tAVRC_REG_ case AVRC_EVT_TRACK_CHANGE: if (rc_is_track_id_valid(p_rsp->param.track) != true) { break; + } else { + uint8_t* p_data = p_rsp->param.track; + BE_STREAM_TO_UINT64(p_dev->rc_playing_uid, p_data); + get_metadata_attribute_cmd(attr_list_size, attr_list, p_dev); } - get_metadata_attribute_cmd(attr_list_size, attr_list, p_dev); break; case AVRC_EVT_APP_SETTING_CHANGE: { diff --git a/system/btif/test/btif_rc_test.cc b/system/btif/test/btif_rc_test.cc index 64a899baae..22edc5464e 100644 --- a/system/btif/test/btif_rc_test.cc +++ b/system/btif/test/btif_rc_test.cc @@ -234,6 +234,51 @@ TEST_F(BtifRcWithCallbacksTest, handle_rc_ctrl_features) { BTRC_FEAT_COVER_ARTWORK)); } +TEST_F(BtifRcTest, handle_track_change_notification_response) { + btif_rc_cb.rc_multi_cb[0].rc_connected = true; + btif_rc_cb.rc_multi_cb[0].br_connected = true; + btif_rc_cb.rc_multi_cb[0].rc_handle = kRcHandle; + btif_rc_cb.rc_multi_cb[0].rc_features = {}; + btif_rc_cb.rc_multi_cb[0].rc_cover_art_psm = 0; + btif_rc_cb.rc_multi_cb[0].rc_state = BTRC_CONNECTION_STATE_CONNECTED; + btif_rc_cb.rc_multi_cb[0].rc_addr = kDeviceAddress; + btif_rc_cb.rc_multi_cb[0].rc_volume = 0; + btif_rc_cb.rc_multi_cb[0].rc_vol_label = 0; + btif_rc_cb.rc_multi_cb[0].rc_supported_event_list = nullptr; + btif_rc_cb.rc_multi_cb[0].rc_app_settings = {}; + btif_rc_cb.rc_multi_cb[0].rc_play_status_timer = nullptr; + btif_rc_cb.rc_multi_cb[0].rc_features_processed = false; + btif_rc_cb.rc_multi_cb[0].rc_playing_uid = 0; + btif_rc_cb.rc_multi_cb[0].rc_procedure_complete = false; + btif_rc_cb.rc_multi_cb[0].peer_ct_features = {}; + btif_rc_cb.rc_multi_cb[0].peer_tg_features = {}; + btif_rc_cb.rc_multi_cb[0].launch_cmd_pending = 0; + ASSERT_TRUE(btif_rc_get_device_by_handle(kRcHandle)); + tBTA_AV_META_MSG meta_msg = { + .rc_handle = kRcHandle, + .len = 0, + .label = 0, + .code = AVRC_RSP_CHANGED, + .company_id = 0, + .p_data = {}, + .p_msg = nullptr, + }; + tAVRC_NOTIF_RSP_PARAM param = { + .track = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, + }; + tAVRC_REG_NOTIF_RSP track_change = { + .pdu = 0, + .status = AVRC_STS_NO_ERROR, + .opcode = 0, + .event_id = AVRC_EVT_TRACK_CHANGE, + .param = param, + }; + uint64_t now_playing_uid = 0x01; + + handle_notification_response(&meta_msg, &track_change); + ASSERT_EQ(btif_rc_cb.rc_multi_cb[0].rc_playing_uid, now_playing_uid); +} + class BtifRcBrowseConnectionTest : public BtifRcTest { protected: void SetUp() override { |