webrtc/p2p/base/mock_ice_controller.h
Daniel Cheng e125a3371f Add IceControllerInterface::GetConnections() and fix return type.
This is a replacement for `connections()`, which is const-qualified but
returns a `rtc::ArrayView<const cricket::Connection*>`. Unfortunately,
this is a view of mutable pointers to `const cricket::Connection`
objects: this means that the pointers in `IceControllerInterface`'s
backing store can be reassigned.

Returning `rtc::ArrayView<const cricket::Connection* const>` is more
consistent with how a view returned from a const-qualified method should
behave. Unfortunately, there are downstream overrides of this method, so
instead of just fixing this outright, add a new method with the correct
return type. Once downstream is updated, the old method can then be
removed.

Bug: chromium:1409870, webrtc:15702
Change-Id: I3d8f0c2f0bcf4c393ee63959cb61761ac00a28ab
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/329962
Reviewed-by: Jonas Oreland <jonaso@google.com>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/main@{#41318}
2023-12-05 14:56:51 +00:00

94 lines
3.2 KiB
C++

/*
* Copyright 2018 The WebRTC Project Authors. All rights reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef P2P_BASE_MOCK_ICE_CONTROLLER_H_
#define P2P_BASE_MOCK_ICE_CONTROLLER_H_
#include <memory>
#include <vector>
#include "p2p/base/ice_controller_factory_interface.h"
#include "p2p/base/ice_controller_interface.h"
#include "test/gmock.h"
namespace cricket {
class MockIceController : public cricket::IceControllerInterface {
public:
explicit MockIceController(const cricket::IceControllerFactoryArgs& args) {}
~MockIceController() override = default;
MOCK_METHOD(void, SetIceConfig, (const cricket::IceConfig&), (override));
MOCK_METHOD(void,
SetSelectedConnection,
(const cricket::Connection*),
(override));
MOCK_METHOD(void, AddConnection, (const cricket::Connection*), (override));
MOCK_METHOD(void,
OnConnectionDestroyed,
(const cricket::Connection*),
(override));
MOCK_METHOD(rtc::ArrayView<const cricket::Connection* const>,
GetConnections,
(),
(const, override));
MOCK_METHOD(rtc::ArrayView<const cricket::Connection*>,
connections,
(),
(const, override));
MOCK_METHOD(bool, HasPingableConnection, (), (const, override));
MOCK_METHOD(cricket::IceControllerInterface::PingResult,
SelectConnectionToPing,
(int64_t),
(override));
MOCK_METHOD(bool,
GetUseCandidateAttr,
(const cricket::Connection*,
cricket::NominationMode,
cricket::IceMode),
(const, override));
MOCK_METHOD(const cricket::Connection*,
FindNextPingableConnection,
(),
(override));
MOCK_METHOD(void,
MarkConnectionPinged,
(const cricket::Connection*),
(override));
MOCK_METHOD(cricket::IceControllerInterface::SwitchResult,
ShouldSwitchConnection,
(cricket::IceSwitchReason, const cricket::Connection*),
(override));
MOCK_METHOD(cricket::IceControllerInterface::SwitchResult,
SortAndSwitchConnection,
(cricket::IceSwitchReason),
(override));
MOCK_METHOD(std::vector<const cricket::Connection*>,
PruneConnections,
(),
(override));
};
class MockIceControllerFactory : public cricket::IceControllerFactoryInterface {
public:
~MockIceControllerFactory() override = default;
std::unique_ptr<cricket::IceControllerInterface> Create(
const cricket::IceControllerFactoryArgs& args) override {
RecordIceControllerCreated();
return std::make_unique<MockIceController>(args);
}
MOCK_METHOD(void, RecordIceControllerCreated, ());
};
} // namespace cricket
#endif // P2P_BASE_MOCK_ICE_CONTROLLER_H_