-
Notifications
You must be signed in to change notification settings - Fork 73
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use active ICE controller in P2PTransportChannel with an adapter (#6/n)
Controlled by a field trial, P2PTransportChannel can now use an active ICE controller instead of a legacy ICE controller. P2PTransportChannel unit tests need non-trivial changes to exercise the refactored code path, so the testing changes are added in a follow-up CL. Bug: webrtc:14367, webrtc:14131 Change-Id: I00d4930a5692c7d6d331ea9d6c2a2199304e363c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/274701 Commit-Queue: Sameer Vijaykar <samvi@google.com> Reviewed-by: Jonas Oreland <jonaso@webrtc.org> Reviewed-by: Per Kjellander <perkj@webrtc.org> Cr-Commit-Position: refs/heads/main@{#38114}
- Loading branch information
Showing
7 changed files
with
504 additions
and
61 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
/* | ||
* 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_ACTIVE_ICE_CONTROLLER_H_ | ||
#define P2P_BASE_MOCK_ACTIVE_ICE_CONTROLLER_H_ | ||
|
||
#include <memory> | ||
|
||
#include "p2p/base/active_ice_controller_factory_interface.h" | ||
#include "p2p/base/active_ice_controller_interface.h" | ||
#include "test/gmock.h" | ||
|
||
namespace cricket { | ||
|
||
class MockActiveIceController : public cricket::ActiveIceControllerInterface { | ||
public: | ||
explicit MockActiveIceController( | ||
const cricket::ActiveIceControllerFactoryArgs& args) {} | ||
~MockActiveIceController() override = default; | ||
|
||
MOCK_METHOD(void, SetIceConfig, (const cricket::IceConfig&), (override)); | ||
MOCK_METHOD(void, | ||
OnConnectionAdded, | ||
(const cricket::Connection*), | ||
(override)); | ||
MOCK_METHOD(void, | ||
OnConnectionSwitched, | ||
(const cricket::Connection*), | ||
(override)); | ||
MOCK_METHOD(void, | ||
OnConnectionDestroyed, | ||
(const cricket::Connection*), | ||
(override)); | ||
MOCK_METHOD(void, | ||
OnConnectionPinged, | ||
(const cricket::Connection*), | ||
(override)); | ||
MOCK_METHOD(void, | ||
OnConnectionUpdated, | ||
(const cricket::Connection*), | ||
(override)); | ||
MOCK_METHOD(bool, | ||
GetUseCandidateAttribute, | ||
(const cricket::Connection*, | ||
cricket::NominationMode, | ||
cricket::IceMode), | ||
(const, override)); | ||
MOCK_METHOD(void, | ||
OnSortAndSwitchRequest, | ||
(cricket::IceSwitchReason), | ||
(override)); | ||
MOCK_METHOD(void, | ||
OnImmediateSortAndSwitchRequest, | ||
(cricket::IceSwitchReason), | ||
(override)); | ||
MOCK_METHOD(bool, | ||
OnImmediateSwitchRequest, | ||
(cricket::IceSwitchReason, const cricket::Connection*), | ||
(override)); | ||
MOCK_METHOD(const cricket::Connection*, | ||
FindNextPingableConnection, | ||
(), | ||
(override)); | ||
}; | ||
|
||
class MockActiveIceControllerFactory | ||
: public cricket::ActiveIceControllerFactoryInterface { | ||
public: | ||
~MockActiveIceControllerFactory() override = default; | ||
|
||
std::unique_ptr<cricket::ActiveIceControllerInterface> Create( | ||
const cricket::ActiveIceControllerFactoryArgs& args) { | ||
RecordActiveIceControllerCreated(); | ||
return std::make_unique<MockActiveIceController>(args); | ||
} | ||
|
||
MOCK_METHOD(void, RecordActiveIceControllerCreated, ()); | ||
}; | ||
|
||
} // namespace cricket | ||
|
||
#endif // P2P_BASE_MOCK_ACTIVE_ICE_CONTROLLER_H_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
/* | ||
* 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*>, | ||
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_ |
Oops, something went wrong.