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

Commit 75f8dc09 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Reject SetBrowsedPlayer if there is not browsable player" am: 7bb58c96 am: 6dd3ee67

Original change: https://android-review.googlesource.com/c/platform/system/bt/+/1440735

Change-Id: Id1bf2448f3ab3d48d5e273f06b961d44796b5a04
parents 0e37edf2 6dd3ee67
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -316,6 +316,10 @@ std::vector<uint8_t> set_addressed_player_response = {
std::vector<uint8_t> set_browsed_player_request = {0x70, 0x00, 0x02, 0x00,
                                                   0x02};

// AVRCP Set Browsed Player Request with player_id = 0
std::vector<uint8_t> set_browsed_player_id_0_request = {0x70, 0x00, 0x02, 0x00,
                                                        0x00};

// AVRCP Set Browsed Player Response with num items = 4 and depth = 0
std::vector<uint8_t> set_browsed_player_response = {
    0x70, 0x00, 0x0a, 0x04, 0x00, 0x00, 0x00,
+8 −0
Original line number Diff line number Diff line
@@ -1257,6 +1257,14 @@ void Device::SetBrowsedPlayerResponse(
    return;
  }

  if (pkt->GetPlayerId() == 0 && num_items == 0) {
    // Response fail if no browsable player in Bluetooth Player
    auto response = SetBrowsedPlayerResponseBuilder::MakeBuilder(
        Status::PLAYER_NOT_BROWSABLE, 0x0000, num_items, 0, "");
    send_message(label, true, std::move(response));
    return;
  }

  curr_browsed_player_id_ = pkt->GetPlayerId();

  // Clear the path and push the new root.
+38 −0
Original line number Diff line number Diff line
@@ -1035,6 +1035,44 @@ TEST_F(AvrcpDeviceTest, setAddressedPlayerTest) {
  SendMessage(1, request);
}

TEST_F(AvrcpDeviceTest, setBrowsedPlayerTest) {
  MockMediaInterface interface;
  NiceMock<MockA2dpInterface> a2dp_interface;

  test_device->RegisterInterfaces(&interface, &a2dp_interface, nullptr);

  EXPECT_CALL(interface, SetBrowsedPlayer(_, _))
      .Times(3)
      .WillOnce(InvokeCb<1>(true, "", 0))
      .WillOnce(InvokeCb<1>(false, "", 0))
      .WillOnce(InvokeCb<1>(true, "", 2));

  auto not_browsable_rsp = SetBrowsedPlayerResponseBuilder::MakeBuilder(
      Status::PLAYER_NOT_BROWSABLE, 0x0000, 0, 0, "");
  EXPECT_CALL(response_cb,
              Call(1, true, matchPacket(std::move(not_browsable_rsp))))
      .Times(1);

  auto player_id_0_request =
      TestBrowsePacket::Make(set_browsed_player_id_0_request);
  SendBrowseMessage(1, player_id_0_request);

  auto invalid_id_rsp = SetBrowsedPlayerResponseBuilder::MakeBuilder(
      Status::INVALID_PLAYER_ID, 0x0000, 0, 0, "");
  EXPECT_CALL(response_cb,
              Call(2, true, matchPacket(std::move(invalid_id_rsp))))
      .Times(1);

  SendBrowseMessage(2, player_id_0_request);

  auto response = SetBrowsedPlayerResponseBuilder::MakeBuilder(
      Status::NO_ERROR, 0x0000, 2, 0, "");
  EXPECT_CALL(response_cb, Call(3, true, matchPacket(std::move(response))))
      .Times(1);

  SendBrowseMessage(3, player_id_0_request);
}

TEST_F(AvrcpDeviceTest, volumeChangedTest) {
  MockMediaInterface interface;
  NiceMock<MockA2dpInterface> a2dp_interface;