summaryrefslogtreecommitdiff
path: root/system/btif
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2025-03-04 18:07:08 -0800
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2025-03-04 18:07:08 -0800
commitc5bed9b38998dd95078d39e91b026cdaa4797f4e (patch)
tree8445eba207ce93fef3eafca61d140b19e65e55db /system/btif
parent76164e7f34d540324141aa17b1ab907fdd869613 (diff)
parent61548a2b4c819147d6009130156657348e2f5375 (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.cc5
-rw-r--r--system/btif/test/btif_rc_test.cc45
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 {