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

Commit 97c45a06 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:...

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

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

Change-Id: If1e50928c8cb194f0e7823c050c1a83f0be34285
parents 6bcab2b8 75f8dc09
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;