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

Commit fe28f07c authored by Eric Shih's avatar Eric Shih Committed by William Escande
Browse files

Fix missing CoD information when getting connection_request

Upstream Class Of Device informationi to btm when getting connection_request packet.

(cherry picked from https://android-review.googlesource.com/q/commit:3bc96838a9737746adee79659580291057a56d36)

Dirty cherry-pick because of OnConnectFail that has different parameters

Bug: 263208623
Test: atest GoogleBluetoothInstrumentationTests
Tag: #gd-refactor
Bug: 263323082
Change-Id: I46c54d22f624d677d599c37a085474fcc3474453
Merged-In: I4c307f53a1346836cb228c0018f9720472cfbeeb
parent e37dfe0e
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -252,6 +252,12 @@ struct classic_impl : public security::ISecurityManagerListener {
        return;

      case ConnectionRequestLinkType::ACL:
        // Need to upstream Cod information when getting connection_request
        client_handler_->CallOn(
            client_callbacks_,
            &ConnectionCallbacks::OnConnectRequest,
            address,
            request.GetClassOfDevice());
        break;

      case ConnectionRequestLinkType::ESCO:
+2 −0
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@ class ConnectionCallbacks {
  virtual ~ConnectionCallbacks() = default;
  // Invoked when controller sends Connection Complete event with Success error code
  virtual void OnConnectSuccess(std::unique_ptr<ClassicAclConnection>) = 0;
  // Invoked when controller sends Connection Request
  virtual void OnConnectRequest(Address, ClassOfDevice) = 0;
  // Invoked when controller sends Connection Complete event with non-Success error code
  virtual void OnConnectFail(Address, ErrorCode reason) = 0;

+1 −1
Original line number Diff line number Diff line
@@ -212,7 +212,7 @@ class AclManagerNoCallbacksTest : public ::testing::Test {
    void Clear() {
      connections_.clear();
    }

    MOCK_METHOD(void, OnConnectRequest, (Address, ClassOfDevice), (override));
    MOCK_METHOD(void, OnConnectFail, (Address, ErrorCode reason), (override));

    MOCK_METHOD(void, HACK_OnEscoConnectRequest, (Address, ClassOfDevice), (override));
+1 −0
Original line number Diff line number Diff line
@@ -350,6 +350,7 @@ class MockConnectionCallback : public ConnectionCallbacks {
      connection_promise_.set_value(connections_.back());
    }
  }
  MOCK_METHOD(void, OnConnectRequest, (Address, ClassOfDevice), (override));
  MOCK_METHOD(void, OnConnectFail, (Address, ErrorCode reason), (override));

  MOCK_METHOD(void, HACK_OnEscoConnectRequest, (Address, ClassOfDevice), (override));
+4 −0
Original line number Diff line number Diff line
@@ -374,6 +374,10 @@ class AclManagerFacadeService : public AclManagerFacade::Service, public Connect
    current_connection_request_++;
  }

  void OnConnectRequest(Address address, ClassOfDevice cod) override {
    LOG_ERROR("Remote connect request unimplemented");
  }

  void OnConnectFail(Address address, ErrorCode reason) override {
    LOG_INFO("addr=%s, reason=%s", address.ToString().c_str(), ErrorCodeText(reason).c_str());
    std::unique_ptr<BasePacketBuilder> builder =
Loading