Use Abseil container algorithms in pc/

Bug: None
Change-Id: If784461b54d95bdc6f8a7d4e5d1bbfa52d1a390e
Reviewed-on: https://webrtc-review.googlesource.com/c/119862
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Amit Hilbuch <amithi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26433}
This commit is contained in:
Steve Anton 2019-01-28 17:25:26 -08:00 committed by Commit Bot
parent b7446ed257
commit 64b626b03f
22 changed files with 214 additions and 275 deletions

View File

@ -95,6 +95,7 @@ rtc_static_library("rtc_pc_base") {
"../rtc_base/third_party/base64",
"../rtc_base/third_party/sigslot",
"../system_wrappers:metrics",
"//third_party/abseil-cpp/absl/algorithm:container",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/types:optional",
@ -219,6 +220,7 @@ rtc_static_library("peerconnection") {
"../system_wrappers",
"../system_wrappers:field_trial",
"../system_wrappers:metrics",
"//third_party/abseil-cpp/absl/algorithm:container",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/types:optional",
@ -294,6 +296,7 @@ if (rtc_include_tests) {
"../rtc_base/third_party/sigslot",
"../system_wrappers:metrics",
"../test:test_support",
"//third_party/abseil-cpp/absl/algorithm:container",
"//third_party/abseil-cpp/absl/memory",
]
@ -523,6 +526,7 @@ if (rtc_include_tests) {
"../rtc_base/third_party/sigslot:sigslot",
"../system_wrappers:metrics",
"../test:fileutils",
"//third_party/abseil-cpp/absl/algorithm:container",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/strings",
]

View File

@ -8,12 +8,12 @@
* be found in the AUTHORS file in the root of the source tree.
*/
#include <algorithm>
#include <iterator>
#include <utility>
#include "pc/channel.h"
#include "absl/algorithm/container.h"
#include "absl/memory/memory.h"
#include "api/call/audio_sink.h"
#include "media/base/media_constants.h"
@ -746,11 +746,10 @@ RtpHeaderExtensions BaseChannel::GetFilteredRtpHeaderExtensions(
RTC_DCHECK(rtp_transport_);
if (crypto_options_.srtp.enable_encrypted_rtp_header_extensions) {
RtpHeaderExtensions filtered;
auto pred = [](const webrtc::RtpExtension& extension) {
return !extension.encrypt;
};
std::copy_if(extensions.begin(), extensions.end(),
std::back_inserter(filtered), pred);
absl::c_copy_if(extensions, std::back_inserter(filtered),
[](const webrtc::RtpExtension& extension) {
return !extension.encrypt;
});
return filtered;
}

View File

@ -10,9 +10,9 @@
#include "pc/channel_manager.h"
#include <algorithm>
#include <utility>
#include "absl/algorithm/container.h"
#include "absl/memory/memory.h"
#include "absl/strings/match.h"
#include "media/base/media_constants.h"
@ -211,10 +211,10 @@ void ChannelManager::DestroyVoiceChannel(VoiceChannel* voice_channel) {
RTC_DCHECK(initialized_);
auto it = std::find_if(voice_channels_.begin(), voice_channels_.end(),
[&](const std::unique_ptr<VoiceChannel>& p) {
return p.get() == voice_channel;
});
auto it = absl::c_find_if(voice_channels_,
[&](const std::unique_ptr<VoiceChannel>& p) {
return p.get() == voice_channel;
});
RTC_DCHECK(it != voice_channels_.end());
if (it == voice_channels_.end()) {
return;
@ -280,10 +280,10 @@ void ChannelManager::DestroyVideoChannel(VideoChannel* video_channel) {
RTC_DCHECK(initialized_);
auto it = std::find_if(video_channels_.begin(), video_channels_.end(),
[&](const std::unique_ptr<VideoChannel>& p) {
return p.get() == video_channel;
});
auto it = absl::c_find_if(video_channels_,
[&](const std::unique_ptr<VideoChannel>& p) {
return p.get() == video_channel;
});
RTC_DCHECK(it != video_channels_.end());
if (it == video_channels_.end()) {
return;
@ -340,10 +340,10 @@ void ChannelManager::DestroyRtpDataChannel(RtpDataChannel* data_channel) {
RTC_DCHECK(initialized_);
auto it = std::find_if(data_channels_.begin(), data_channels_.end(),
[&](const std::unique_ptr<RtpDataChannel>& p) {
return p.get() == data_channel;
});
auto it = absl::c_find_if(data_channels_,
[&](const std::unique_ptr<RtpDataChannel>& p) {
return p.get() == data_channel;
});
RTC_DCHECK(it != data_channels_.end());
if (it == data_channels_.end()) {
return;

View File

@ -10,10 +10,10 @@
#include "pc/jsep_transport_controller.h"
#include <algorithm>
#include <memory>
#include <utility>
#include "absl/algorithm/container.h"
#include "absl/memory/memory.h"
#include "p2p/base/ice_transport_internal.h"
#include "p2p/base/no_op_dtls_transport.h"
@ -885,9 +885,7 @@ std::vector<int> JsepTransportController::GetEncryptedHeaderExtensionIds(
if (!extension.encrypt) {
continue;
}
auto it = std::find(encrypted_header_extension_ids.begin(),
encrypted_header_extension_ids.end(), extension.id);
if (it == encrypted_header_extension_ids.end()) {
if (!absl::c_linear_search(encrypted_header_extension_ids, extension.id)) {
encrypted_header_extension_ids.push_back(extension.id);
}
}
@ -907,8 +905,7 @@ JsepTransportController::MergeEncryptedHeaderExtensionIdsForBundle(
std::vector<int> extension_ids =
GetEncryptedHeaderExtensionIds(content_info);
for (int id : extension_ids) {
auto it = std::find(merged_ids.begin(), merged_ids.end(), id);
if (it == merged_ids.end()) {
if (!absl::c_linear_search(merged_ids, id)) {
merged_ids.push_back(id);
}
}

View File

@ -10,7 +10,6 @@
#include "pc/media_session.h"
#include <algorithm> // For std::find_if, std::sort.
#include <functional>
#include <map>
#include <memory>
@ -18,6 +17,7 @@
#include <unordered_map>
#include <utility>
#include "absl/algorithm/container.h"
#include "absl/memory/memory.h"
#include "absl/strings/match.h"
#include "absl/types/optional.h"
@ -185,9 +185,8 @@ const CryptoParamsVec* GetCryptos(const ContentInfo* content) {
bool FindMatchingCrypto(const CryptoParamsVec& cryptos,
const CryptoParams& crypto,
CryptoParams* crypto_out) {
auto it = std::find_if(
cryptos.begin(), cryptos.end(),
[&crypto](const CryptoParams& c) { return crypto.Matches(c); });
auto it = absl::c_find_if(
cryptos, [&crypto](const CryptoParams& c) { return crypto.Matches(c); });
if (it == cryptos.end()) {
return false;
}
@ -417,14 +416,12 @@ static StreamParams CreateStreamParamsForNewSenderWithSsrcs(
static bool ValidateSimulcastLayers(
const std::vector<RidDescription>& rids,
const SimulcastLayerList& simulcast_layers) {
std::vector<SimulcastLayer> all_layers = simulcast_layers.GetAllLayers();
return std::all_of(all_layers.begin(), all_layers.end(),
[&rids](const SimulcastLayer& layer) {
return std::find_if(rids.begin(), rids.end(),
[&layer](const RidDescription& rid) {
return rid.rid == layer.rid;
}) != rids.end();
});
return absl::c_all_of(
simulcast_layers.GetAllLayers(), [&rids](const SimulcastLayer& layer) {
return absl::c_any_of(rids, [&layer](const RidDescription& rid) {
return rid.rid == layer.rid;
});
});
}
static StreamParams CreateStreamParamsForNewSenderWithRids(
@ -455,9 +452,9 @@ static void AddSimulcastToMediaDescription(
RTC_DCHECK(description);
// Check if we are using RIDs in this scenario.
if (std::all_of(
description->streams().begin(), description->streams().end(),
[](const StreamParams& params) { return !params.has_rids(); })) {
if (absl::c_all_of(description->streams(), [](const StreamParams& params) {
return !params.has_rids();
})) {
return;
}
@ -833,11 +830,10 @@ static void NegotiateCodecs(const std::vector<C>& local_codecs,
for (const C& codec : offered_codecs) {
payload_type_preferences[codec.id] = preference--;
}
std::sort(negotiated_codecs->begin(), negotiated_codecs->end(),
[&payload_type_preferences](const C& a, const C& b) {
return payload_type_preferences[a.id] >
payload_type_preferences[b.id];
});
absl::c_sort(
*negotiated_codecs, [&payload_type_preferences](const C& a, const C& b) {
return payload_type_preferences[a.id] > payload_type_preferences[b.id];
});
}
// Finds a codec in |codecs2| that matches |codec_to_match|, which is
@ -850,10 +846,9 @@ static bool FindMatchingCodec(const std::vector<C>& codecs1,
C* found_codec) {
// |codec_to_match| should be a member of |codecs1|, in order to look up RTX
// codecs' associated codecs correctly. If not, that's a programming error.
RTC_DCHECK(std::find_if(codecs1.begin(), codecs1.end(),
[&codec_to_match](const C& codec) {
return &codec == &codec_to_match;
}) != codecs1.end());
RTC_DCHECK(absl::c_any_of(codecs1, [&codec_to_match](const C& codec) {
return &codec == &codec_to_match;
}));
for (const C& potential_match : codecs2) {
if (potential_match.Matches(codec_to_match)) {
if (IsRtxCodec(codec_to_match)) {
@ -960,14 +955,13 @@ static void MergeCodecs(const std::vector<C>& reference_codecs,
static bool FindByUriAndEncryption(const RtpHeaderExtensions& extensions,
const webrtc::RtpExtension& ext_to_match,
webrtc::RtpExtension* found_extension) {
auto it =
std::find_if(extensions.begin(), extensions.end(),
[&ext_to_match](const webrtc::RtpExtension& extension) {
// We assume that all URIs are given in a canonical
// format.
return extension.uri == ext_to_match.uri &&
extension.encrypt == ext_to_match.encrypt;
});
auto it = absl::c_find_if(
extensions, [&ext_to_match](const webrtc::RtpExtension& extension) {
// We assume that all URIs are given in a canonical
// format.
return extension.uri == ext_to_match.uri &&
extension.encrypt == ext_to_match.encrypt;
});
if (it == extensions.end()) {
return false;
}
@ -1303,11 +1297,9 @@ void MediaDescriptionOptions::AddSenderInternal(
}
bool MediaSessionOptions::HasMediaDescription(MediaType type) const {
return std::find_if(media_description_options.begin(),
media_description_options.end(),
[type](const MediaDescriptionOptions& t) {
return t.type == type;
}) != media_description_options.end();
return absl::c_any_of(
media_description_options,
[type](const MediaDescriptionOptions& t) { return t.type == type; });
}
MediaSessionDescriptionFactory::MediaSessionDescriptionFactory(

View File

@ -13,7 +13,6 @@
#ifndef PC_MEDIA_SESSION_H_
#define PC_MEDIA_SESSION_H_
#include <algorithm>
#include <map>
#include <memory>
#include <string>

View File

@ -13,6 +13,7 @@
#include <string>
#include <vector>
#include "absl/algorithm/container.h"
#include "absl/memory/memory.h"
#include "media/base/codec.h"
#include "media/base/test_utils.h"
@ -81,6 +82,7 @@ using rtc::CS_AEAD_AES_256_GCM;
using rtc::CS_AES_CM_128_HMAC_SHA1_32;
using rtc::CS_AES_CM_128_HMAC_SHA1_80;
using rtc::UniqueRandomIdGenerator;
using testing::Contains;
using testing::Each;
using testing::ElementsAreArray;
using testing::Eq;
@ -88,6 +90,7 @@ using testing::Field;
using testing::IsEmpty;
using testing::IsFalse;
using testing::Ne;
using testing::Not;
using testing::Pointwise;
using testing::SizeIs;
using webrtc::RtpExtension;
@ -275,18 +278,16 @@ static std::vector<std::string> GetCodecNames(const std::vector<T>& codecs) {
std::vector<MediaDescriptionOptions>::iterator FindFirstMediaDescriptionByMid(
const std::string& mid,
MediaSessionOptions* opts) {
return std::find_if(
opts->media_description_options.begin(),
opts->media_description_options.end(),
return absl::c_find_if(
opts->media_description_options,
[&mid](const MediaDescriptionOptions& t) { return t.mid == mid; });
}
std::vector<MediaDescriptionOptions>::const_iterator
FindFirstMediaDescriptionByMid(const std::string& mid,
const MediaSessionOptions& opts) {
return std::find_if(
opts.media_description_options.begin(),
opts.media_description_options.end(),
return absl::c_find_if(
opts.media_description_options,
[&mid](const MediaDescriptionOptions& t) { return t.mid == mid; });
}
@ -360,10 +361,10 @@ static void DetachSenderFromMediaSection(const std::string& mid,
std::vector<cricket::SenderOptions>& sender_options_list =
FindFirstMediaDescriptionByMid(mid, session_options)->sender_options;
auto sender_it =
std::find_if(sender_options_list.begin(), sender_options_list.end(),
[track_id](const cricket::SenderOptions& sender_options) {
return sender_options.track_id == track_id;
});
absl::c_find_if(sender_options_list,
[track_id](const cricket::SenderOptions& sender_options) {
return sender_options.track_id == track_id;
});
RTC_DCHECK(sender_it != sender_options_list.end());
sender_options_list.erase(sender_it);
}
@ -442,11 +443,8 @@ class MediaSessionDescriptionFactoryTest : public testing::Test {
// Returns true if the transport info contains "renomination" as an
// ICE option.
bool GetIceRenomination(const TransportInfo* transport_info) {
const std::vector<std::string>& ice_options =
transport_info->description.transport_options;
auto iter =
std::find(ice_options.begin(), ice_options.end(), "renomination");
return iter != ice_options.end();
return absl::c_linear_search(transport_info->description.transport_options,
"renomination");
}
void TestTransportInfo(bool offer,
@ -2741,10 +2739,9 @@ TEST_F(MediaSessionDescriptionFactoryTest, RtxWithoutApt) {
std::unique_ptr<SessionDescription> answer =
f2_.CreateAnswer(offer.get(), opts, NULL);
std::vector<std::string> codec_names =
GetCodecNames(GetFirstVideoContentDescription(answer.get())->codecs());
EXPECT_EQ(codec_names.end(), std::find(codec_names.begin(), codec_names.end(),
cricket::kRtxCodecName));
EXPECT_THAT(
GetCodecNames(GetFirstVideoContentDescription(answer.get())->codecs()),
Not(Contains(cricket::kRtxCodecName)));
}
// Test that RTX will be filtered out in the answer if its associated payload
@ -2771,10 +2768,9 @@ TEST_F(MediaSessionDescriptionFactoryTest, FilterOutRtxIfAptDoesntMatch) {
std::unique_ptr<SessionDescription> answer =
f2_.CreateAnswer(offer.get(), opts, NULL);
std::vector<std::string> codec_names =
GetCodecNames(GetFirstVideoContentDescription(answer.get())->codecs());
EXPECT_EQ(codec_names.end(), std::find(codec_names.begin(), codec_names.end(),
cricket::kRtxCodecName));
EXPECT_THAT(
GetCodecNames(GetFirstVideoContentDescription(answer.get())->codecs()),
Not(Contains(cricket::kRtxCodecName)));
}
// Test that when multiple RTX codecs are offered, only the matched RTX codec
@ -4121,16 +4117,10 @@ TEST_F(MediaSessionDescriptionFactoryTest, VideoHasRidExtensionsInUnifiedPlan) {
cricket::RtpHeaderExtensions result = sf.video_rtp_header_extensions();
// Check to see that RID extensions were added to the extension list
EXPECT_GE(result.size(), 2u);
auto rid_extension = std::find_if(
result.begin(), result.end(), [](const RtpExtension& extension) {
return extension.uri == webrtc::RtpExtension::kRidUri;
});
EXPECT_NE(rid_extension, extensions.end());
auto repaired_rid_extension = std::find_if(
result.begin(), result.end(), [](const RtpExtension& extension) {
return extension.uri == webrtc::RtpExtension::kRepairedRidUri;
});
EXPECT_NE(repaired_rid_extension, extensions.end());
EXPECT_THAT(result, Contains(Field("uri", &RtpExtension::uri,
RtpExtension::kRidUri)));
EXPECT_THAT(result, Contains(Field("uri", &RtpExtension::uri,
RtpExtension::kRepairedRidUri)));
}
// Checks that the RID extensions are added to the audio RTP header extensions.
@ -4147,16 +4137,10 @@ TEST_F(MediaSessionDescriptionFactoryTest, AudioHasRidExtensionsInUnifiedPlan) {
cricket::RtpHeaderExtensions result = sf.audio_rtp_header_extensions();
// Check to see that RID extensions were added to the extension list
EXPECT_GE(result.size(), 2u);
auto rid_extension = std::find_if(
result.begin(), result.end(), [](const RtpExtension& extension) {
return extension.uri == webrtc::RtpExtension::kRidUri;
});
EXPECT_NE(rid_extension, extensions.end());
auto repaired_rid_extension = std::find_if(
result.begin(), result.end(), [](const RtpExtension& extension) {
return extension.uri == webrtc::RtpExtension::kRepairedRidUri;
});
EXPECT_NE(repaired_rid_extension, extensions.end());
EXPECT_THAT(result, Contains(Field("uri", &RtpExtension::uri,
RtpExtension::kRidUri)));
EXPECT_THAT(result, Contains(Field("uri", &RtpExtension::uri,
RtpExtension::kRepairedRidUri)));
}
namespace {

View File

@ -10,10 +10,11 @@
#include "pc/media_stream_observer.h"
#include <algorithm>
#include <string>
#include <vector>
#include "absl/algorithm/container.h"
namespace webrtc {
MediaStreamObserver::MediaStreamObserver(MediaStreamInterface* stream)
@ -33,48 +34,44 @@ void MediaStreamObserver::OnChanged() {
// Find removed audio tracks.
for (const auto& cached_track : cached_audio_tracks_) {
auto it = std::find_if(
new_audio_tracks.begin(), new_audio_tracks.end(),
[cached_track](const AudioTrackVector::value_type& new_track) {
return new_track->id().compare(cached_track->id()) == 0;
});
if (it == new_audio_tracks.end()) {
if (absl::c_none_of(
new_audio_tracks,
[cached_track](const AudioTrackVector::value_type& new_track) {
return new_track->id() == cached_track->id();
})) {
SignalAudioTrackRemoved(cached_track.get(), stream_);
}
}
// Find added audio tracks.
for (const auto& new_track : new_audio_tracks) {
auto it = std::find_if(
cached_audio_tracks_.begin(), cached_audio_tracks_.end(),
[new_track](const AudioTrackVector::value_type& cached_track) {
return new_track->id().compare(cached_track->id()) == 0;
});
if (it == cached_audio_tracks_.end()) {
if (absl::c_none_of(
cached_audio_tracks_,
[new_track](const AudioTrackVector::value_type& cached_track) {
return new_track->id() == cached_track->id();
})) {
SignalAudioTrackAdded(new_track.get(), stream_);
}
}
// Find removed video tracks.
for (const auto& cached_track : cached_video_tracks_) {
auto it = std::find_if(
new_video_tracks.begin(), new_video_tracks.end(),
[cached_track](const VideoTrackVector::value_type& new_track) {
return new_track->id().compare(cached_track->id()) == 0;
});
if (it == new_video_tracks.end()) {
if (absl::c_none_of(
new_video_tracks,
[cached_track](const VideoTrackVector::value_type& new_track) {
return new_track->id() == cached_track->id();
})) {
SignalVideoTrackRemoved(cached_track.get(), stream_);
}
}
// Find added video tracks.
for (const auto& new_track : new_video_tracks) {
auto it = std::find_if(
cached_video_tracks_.begin(), cached_video_tracks_.end(),
[new_track](const VideoTrackVector::value_type& cached_track) {
return new_track->id().compare(cached_track->id()) == 0;
});
if (it == cached_video_tracks_.end()) {
if (absl::c_none_of(
cached_video_tracks_,
[new_track](const VideoTrackVector::value_type& cached_track) {
return new_track->id() == cached_track->id();
})) {
SignalVideoTrackAdded(new_track.get(), stream_);
}
}

View File

@ -17,6 +17,7 @@
#include <utility>
#include <vector>
#include "absl/algorithm/container.h"
#include "absl/memory/memory.h"
#include "absl/strings/match.h"
#include "api/jsep_ice_candidate.h"
@ -4828,8 +4829,7 @@ void PeerConnection::UpdateClosingRtpDataChannels(
auto it = rtp_data_channels_.begin();
while (it != rtp_data_channels_.end()) {
DataChannel* data_channel = it->second;
if (std::find(active_channels.begin(), active_channels.end(),
data_channel->label()) != active_channels.end()) {
if (absl::c_linear_search(active_channels, data_channel->label())) {
++it;
continue;
}

View File

@ -14,7 +14,6 @@
#include <stdio.h>
#include <algorithm>
#include <functional>
#include <list>
#include <map>
@ -22,6 +21,7 @@
#include <utility>
#include <vector>
#include "absl/algorithm/container.h"
#include "absl/memory/memory.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
@ -78,9 +78,10 @@ using ::cricket::StreamParams;
using ::rtc::SocketAddress;
using ::testing::_;
using ::testing::Combine;
using ::testing::Contains;
using ::testing::ElementsAre;
using ::testing::Return;
using ::testing::NiceMock;
using ::testing::Return;
using ::testing::SetArgPointee;
using ::testing::UnorderedElementsAreArray;
using ::testing::Values;
@ -1639,18 +1640,16 @@ TEST_P(PeerConnectionIntegrationTest,
EXPECT_EQ(2U, callee()->rtp_receiver_observers().size());
// Wait for all "first packet received" callbacks to be fired.
EXPECT_TRUE_WAIT(
std::all_of(caller()->rtp_receiver_observers().begin(),
caller()->rtp_receiver_observers().end(),
[](const std::unique_ptr<MockRtpReceiverObserver>& o) {
return o->first_packet_received();
}),
absl::c_all_of(caller()->rtp_receiver_observers(),
[](const std::unique_ptr<MockRtpReceiverObserver>& o) {
return o->first_packet_received();
}),
kMaxWaitForFramesMs);
EXPECT_TRUE_WAIT(
std::all_of(callee()->rtp_receiver_observers().begin(),
callee()->rtp_receiver_observers().end(),
[](const std::unique_ptr<MockRtpReceiverObserver>& o) {
return o->first_packet_received();
}),
absl::c_all_of(callee()->rtp_receiver_observers(),
[](const std::unique_ptr<MockRtpReceiverObserver>& o) {
return o->first_packet_received();
}),
kMaxWaitForFramesMs);
// If new observers are set after the first packet was already received, the
// callback should still be invoked.
@ -1659,17 +1658,15 @@ TEST_P(PeerConnectionIntegrationTest,
EXPECT_EQ(2U, caller()->rtp_receiver_observers().size());
EXPECT_EQ(2U, callee()->rtp_receiver_observers().size());
EXPECT_TRUE(
std::all_of(caller()->rtp_receiver_observers().begin(),
caller()->rtp_receiver_observers().end(),
[](const std::unique_ptr<MockRtpReceiverObserver>& o) {
return o->first_packet_received();
}));
absl::c_all_of(caller()->rtp_receiver_observers(),
[](const std::unique_ptr<MockRtpReceiverObserver>& o) {
return o->first_packet_received();
}));
EXPECT_TRUE(
std::all_of(callee()->rtp_receiver_observers().begin(),
callee()->rtp_receiver_observers().end(),
[](const std::unique_ptr<MockRtpReceiverObserver>& o) {
return o->first_packet_received();
}));
absl::c_all_of(callee()->rtp_receiver_observers(),
[](const std::unique_ptr<MockRtpReceiverObserver>& o) {
return o->first_packet_received();
}));
}
class DummyDtmfObserver : public DtmfSenderObserverInterface {
@ -3364,9 +3361,9 @@ TEST_P(PeerConnectionIntegrationTest, StressTestUnorderedSctpDataChannel) {
caller()->data_observer()->messages();
std::vector<std::string> callee_received_messages =
callee()->data_observer()->messages();
std::sort(sent_messages.begin(), sent_messages.end());
std::sort(caller_received_messages.begin(), caller_received_messages.end());
std::sort(callee_received_messages.begin(), callee_received_messages.end());
absl::c_sort(sent_messages);
absl::c_sort(caller_received_messages);
absl::c_sort(callee_received_messages);
EXPECT_EQ(sent_messages, caller_received_messages);
EXPECT_EQ(sent_messages, callee_received_messages);
}
@ -4049,17 +4046,11 @@ TEST_P(PeerConnectionIntegrationTest, EndToEndCallWithIceRenomination) {
const cricket::SessionDescription* desc =
caller()->pc()->local_description()->description();
for (const cricket::TransportInfo& info : desc->transport_infos()) {
ASSERT_NE(
info.description.transport_options.end(),
std::find(info.description.transport_options.begin(),
info.description.transport_options.end(), "renomination"));
ASSERT_THAT(info.description.transport_options, Contains("renomination"));
}
desc = callee()->pc()->local_description()->description();
for (const cricket::TransportInfo& info : desc->transport_infos()) {
ASSERT_NE(
info.description.transport_options.end(),
std::find(info.description.transport_options.begin(),
info.description.transport_options.end(), "renomination"));
ASSERT_THAT(info.description.transport_options, Contains("renomination"));
}
MediaExpectations media_expectations;
media_expectations.ExpectBidirectionalAudioAndVideo();

View File

@ -14,6 +14,7 @@
#include <tuple>
#include "absl/algorithm/container.h"
#include "api/call/call_factory_interface.h"
#include "api/test/fake_media_transport.h"
#include "logging/rtc_event_log/rtc_event_log_factory.h"
@ -812,8 +813,8 @@ void RenameVideoContent(cricket::SessionDescription* desc) {
}
void ReverseMediaContent(cricket::SessionDescription* desc) {
std::reverse(desc->contents().begin(), desc->contents().end());
std::reverse(desc->transport_infos().begin(), desc->transport_infos().end());
absl::c_reverse(desc->contents());
absl::c_reverse(desc->transport_infos());
}
void ChangeMediaTypeAudioToVideo(cricket::SessionDescription* desc) {

View File

@ -11,9 +11,9 @@
#include "pc/remote_audio_source.h"
#include <stddef.h>
#include <algorithm>
#include <string>
#include "absl/algorithm/container.h"
#include "absl/memory/memory.h"
#include "api/scoped_refptr.h"
#include "rtc_base/checks.h"
@ -101,8 +101,7 @@ void RemoteAudioSource::SetVolume(double volume) {
void RemoteAudioSource::RegisterAudioObserver(AudioObserver* observer) {
RTC_DCHECK(observer != NULL);
RTC_DCHECK(std::find(audio_observers_.begin(), audio_observers_.end(),
observer) == audio_observers_.end());
RTC_DCHECK(!absl::c_linear_search(audio_observers_, observer));
audio_observers_.push_back(observer);
}
@ -121,7 +120,7 @@ void RemoteAudioSource::AddSink(AudioTrackSinkInterface* sink) {
}
rtc::CritScope lock(&sink_lock_);
RTC_DCHECK(std::find(sinks_.begin(), sinks_.end(), sink) == sinks_.end());
RTC_DCHECK(absl::c_linear_search(sinks_, sink));
sinks_.push_back(sink);
}

View File

@ -16,6 +16,7 @@
#include <string>
#include <vector>
#include "absl/algorithm/container.h"
#include "absl/strings/match.h"
#include "api/audio_codecs/audio_decoder_factory.h"
#include "api/audio_codecs/audio_encoder_factory.h"
@ -41,8 +42,11 @@
#include "rtc_base/thread.h"
#include "rtc_base/trace_event.h"
#include "rtc_base/virtual_socket_server.h"
#include "test/gmock.h"
#include "test/gtest.h"
using ::testing::Contains;
namespace webrtc {
namespace {
@ -402,8 +406,7 @@ class RTCStatsReportVerifier {
}
}
for (const char* missing : missing_stats) {
if (std::find(allowed_missing_stats.begin(), allowed_missing_stats.end(),
missing) == allowed_missing_stats.end()) {
if (!absl::c_linear_search(allowed_missing_stats, missing)) {
verify_successful = false;
EXPECT_TRUE(false) << "Missing expected stats type: " << missing;
}
@ -897,13 +900,10 @@ TEST_F(RTCStatsIntegrationTest, GetStatsReferencedIds) {
std::vector<const std::string*> neighbor_ids = GetStatsReferencedIds(stats);
EXPECT_EQ(neighbor_ids.size(), expected_ids.size());
for (const std::string* neighbor_id : neighbor_ids) {
EXPECT_TRUE(expected_ids.find(neighbor_id) != expected_ids.end())
<< "Unexpected neighbor ID: " << *neighbor_id;
EXPECT_THAT(expected_ids, Contains(neighbor_id));
}
for (const std::string* expected_id : expected_ids) {
EXPECT_TRUE(std::find(neighbor_ids.begin(), neighbor_ids.end(),
expected_id) != neighbor_ids.end())
<< "Missing expected neighbor ID: " << *expected_id;
EXPECT_THAT(neighbor_ids, Contains(expected_id));
}
}
}

View File

@ -12,6 +12,9 @@
#include "pc/rtp_parameters_conversion.h"
#include "rtc_base/gunit.h"
#include "test/gmock.h"
using ::testing::UnorderedElementsAre;
namespace webrtc {
@ -601,24 +604,15 @@ TEST(RtpParametersConversionTest, ToRtpCapabilities) {
capabilities = ToRtpCapabilities<cricket::VideoCodec>(
{vp8, red, ulpfec, rtx}, cricket::RtpHeaderExtensions());
EXPECT_EQ(4u, capabilities.codecs.size());
EXPECT_EQ(2u, capabilities.fec.size());
EXPECT_NE(capabilities.fec.end(),
std::find(capabilities.fec.begin(), capabilities.fec.end(),
FecMechanism::RED));
EXPECT_NE(capabilities.fec.end(),
std::find(capabilities.fec.begin(), capabilities.fec.end(),
FecMechanism::RED_AND_ULPFEC));
EXPECT_THAT(
capabilities.fec,
UnorderedElementsAre(FecMechanism::RED, FecMechanism::RED_AND_ULPFEC));
capabilities = ToRtpCapabilities<cricket::VideoCodec>(
{vp8, red, flexfec}, cricket::RtpHeaderExtensions());
EXPECT_EQ(3u, capabilities.codecs.size());
EXPECT_EQ(2u, capabilities.fec.size());
EXPECT_NE(capabilities.fec.end(),
std::find(capabilities.fec.begin(), capabilities.fec.end(),
FecMechanism::RED));
EXPECT_NE(capabilities.fec.end(),
std::find(capabilities.fec.begin(), capabilities.fec.end(),
FecMechanism::FLEXFEC));
EXPECT_THAT(capabilities.fec,
UnorderedElementsAre(FecMechanism::RED, FecMechanism::FLEXFEC));
}
TEST(RtpParametersConversionTest, ToRtpParameters) {

View File

@ -10,9 +10,9 @@
#include "pc/rtp_transceiver.h"
#include <algorithm>
#include <string>
#include "absl/algorithm/container.h"
#include "pc/rtp_media_utils.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
@ -83,8 +83,7 @@ void RtpTransceiver::AddSender(
RTC_DCHECK(!unified_plan_);
RTC_DCHECK(sender);
RTC_DCHECK_EQ(media_type(), sender->media_type());
RTC_DCHECK(std::find(senders_.begin(), senders_.end(), sender) ==
senders_.end());
RTC_DCHECK(!absl::c_linear_search(senders_, sender));
senders_.push_back(sender);
}
@ -93,7 +92,7 @@ bool RtpTransceiver::RemoveSender(RtpSenderInterface* sender) {
if (sender) {
RTC_DCHECK_EQ(media_type(), sender->media_type());
}
auto it = std::find(senders_.begin(), senders_.end(), sender);
auto it = absl::c_find(senders_, sender);
if (it == senders_.end()) {
return false;
}
@ -109,8 +108,7 @@ void RtpTransceiver::AddReceiver(
RTC_DCHECK(!unified_plan_);
RTC_DCHECK(receiver);
RTC_DCHECK_EQ(media_type(), receiver->media_type());
RTC_DCHECK(std::find(receivers_.begin(), receivers_.end(), receiver) ==
receivers_.end());
RTC_DCHECK(!absl::c_linear_search(receivers_, receiver));
receivers_.push_back(receiver);
}
@ -119,7 +117,7 @@ bool RtpTransceiver::RemoveReceiver(RtpReceiverInterface* receiver) {
if (receiver) {
RTC_DCHECK_EQ(media_type(), receiver->media_type());
}
auto it = std::find(receivers_.begin(), receivers_.end(), receiver);
auto it = absl::c_find(receivers_, receiver);
if (it == receivers_.end()) {
return false;
}

View File

@ -10,11 +10,11 @@
#include "pc/sdp_serializer.h"
#include <algorithm>
#include <string>
#include <utility>
#include <vector>
#include "absl/algorithm/container.h"
#include "api/jsep.h"
#include "rtc_base/checks.h"
#include "rtc_base/string_encode.h"
@ -166,8 +166,7 @@ webrtc::RTCError ParseRidPayloadList(const std::string& payload_list,
}
// Check if the value already appears in the payload list.
if (std::find(payload_types.begin(), payload_types.end(), value.value()) !=
payload_types.end()) {
if (absl::c_linear_search(payload_types, value.value())) {
return ParseError("Duplicate payload type in list: " + payload_type);
}
payload_types.push_back(value.value());

View File

@ -10,9 +10,9 @@
#include "pc/session_description.h"
#include <algorithm>
#include <utility>
#include "absl/algorithm/container.h"
#include "rtc_base/checks.h"
namespace cricket {
@ -66,8 +66,7 @@ const std::string* ContentGroup::FirstContentName() const {
}
bool ContentGroup::HasContentName(const std::string& content_name) const {
return (std::find(content_names_.begin(), content_names_.end(),
content_name) != content_names_.end());
return absl::c_linear_search(content_names_, content_name);
}
void ContentGroup::AddContentName(const std::string& content_name) {
@ -77,8 +76,7 @@ void ContentGroup::AddContentName(const std::string& content_name) {
}
bool ContentGroup::RemoveContentName(const std::string& content_name) {
ContentNames::iterator iter =
std::find(content_names_.begin(), content_names_.end(), content_name);
ContentNames::iterator iter = absl::c_find(content_names_, content_name);
if (iter == content_names_.end()) {
return false;
}

View File

@ -9,9 +9,9 @@
*/
#include <stdio.h>
#include <algorithm>
#include <memory>
#include "absl/algorithm/container.h"
#include "absl/memory/memory.h"
#include "absl/types/optional.h"
#include "api/audio_codecs/audio_encoder.h"
@ -235,7 +235,7 @@ std::string DerToPem(const std::string& der) {
std::vector<std::string> DersToPems(const std::vector<std::string>& ders) {
std::vector<std::string> pems(ders.size());
std::transform(ders.begin(), ders.end(), pems.begin(), DerToPem);
absl::c_transform(ders, pems.begin(), DerToPem);
return pems;
}

View File

@ -18,8 +18,6 @@
#include "rtc_base/gunit.h"
#include "test/gtest.h"
using std::min;
class FakeAdmTest : public testing::Test, public webrtc::AudioTransport {
protected:
static const int kMsInSecond = 1000;
@ -110,7 +108,8 @@ class FakeAdmTest : public testing::Test, public webrtc::AudioTransport {
}
size_t CopyFromRecBuffer(void* audio_buffer, size_t audio_buffer_size) {
EXPECT_EQ(audio_buffer_size, rec_buffer_bytes_);
const size_t min_buffer_size = min(audio_buffer_size, rec_buffer_bytes_);
const size_t min_buffer_size =
std::min(audio_buffer_size, rec_buffer_bytes_);
memcpy(audio_buffer, rec_buffer_, min_buffer_size);
return min_buffer_size;
}

View File

@ -23,6 +23,7 @@
#include <utility>
#include <vector>
#include "absl/algorithm/container.h"
#include "absl/memory/memory.h"
#include "absl/strings/match.h"
#include "api/candidate.h"
@ -611,8 +612,8 @@ static bool GetValue(const std::string& message,
}
static bool CaseInsensitiveFind(std::string str1, std::string str2) {
std::transform(str1.begin(), str1.end(), str1.begin(), ::tolower);
std::transform(str2.begin(), str2.end(), str2.begin(), ::tolower);
absl::c_transform(str1, str1.begin(), ::tolower);
absl::c_transform(str2, str2.begin(), ::tolower);
return str1.find(str2) != std::string::npos;
}
@ -699,8 +700,8 @@ void CreateTracksFromSsrcInfos(const SsrcInfoVec& ssrc_infos,
track_id = rtc::CreateRandomString(8);
}
auto track_it = std::find_if(
tracks->begin(), tracks->end(),
auto track_it = absl::c_find_if(
*tracks,
[track_id](const StreamParams& track) { return track.id == track_id; });
if (track_it == tracks->end()) {
// If we don't find an existing track, create a new one.
@ -1803,9 +1804,8 @@ bool GetMinValue(const std::vector<int>& values, int* value) {
if (values.empty()) {
return false;
}
std::vector<int>::const_iterator found =
std::min_element(values.begin(), values.end());
*value = *found;
auto it = absl::c_min_element(values);
*value = *it;
return true;
}
@ -2252,8 +2252,7 @@ static bool ParseFingerprintAttribute(
// Downcase the algorithm. Note that we don't need to downcase the
// fingerprint because hex_decode can handle upper-case.
std::transform(algorithm.begin(), algorithm.end(), algorithm.begin(),
::tolower);
absl::c_transform(algorithm, algorithm.begin(), ::tolower);
// The second field is the digest value. De-hexify it.
*fingerprint =
@ -2360,8 +2359,7 @@ static void RemoveInvalidRidDescriptions(const std::vector<int>& payload_types,
// Media section does not handle duplicates either.
std::set<int> removed_formats;
for (int payload_type : rid.payload_types) {
if (std::find(payload_types.begin(), payload_types.end(), payload_type) ==
payload_types.end()) {
if (!absl::c_linear_search(payload_types, payload_type)) {
removed_formats.insert(payload_type);
}
}
@ -2430,30 +2428,29 @@ static void RemoveInvalidRidsFromSimulcast(
// This algorithm runs in O(n^2) time, but for small n (as is the case with
// simulcast layers) it should still perform well.
for (const SimulcastLayer& send_layer : all_send_layers) {
if (std::find_if(all_receive_layers.begin(), all_receive_layers.end(),
[&send_layer](const SimulcastLayer& layer) {
return layer.rid == send_layer.rid;
}) != all_receive_layers.end()) {
if (absl::c_any_of(all_receive_layers,
[&send_layer](const SimulcastLayer& layer) {
return layer.rid == send_layer.rid;
})) {
to_remove.insert(send_layer.rid);
}
}
// Add any rid that is not in the valid list to the remove set.
for (const SimulcastLayer& send_layer : all_send_layers) {
if (std::find_if(valid_rids.begin(), valid_rids.end(),
[&send_layer](const RidDescription& rid) {
return send_layer.rid == rid.rid;
}) == valid_rids.end()) {
if (absl::c_none_of(valid_rids, [&send_layer](const RidDescription& rid) {
return send_layer.rid == rid.rid;
})) {
to_remove.insert(send_layer.rid);
}
}
// Add any rid that is not in the valid list to the remove set.
for (const SimulcastLayer& receive_layer : all_receive_layers) {
if (std::find_if(valid_rids.begin(), valid_rids.end(),
[&receive_layer](const RidDescription& rid) {
return receive_layer.rid == rid.rid;
}) == valid_rids.end()) {
if (absl::c_none_of(valid_rids,
[&receive_layer](const RidDescription& rid) {
return receive_layer.rid == rid.rid;
})) {
to_remove.insert(receive_layer.rid);
}
}
@ -2550,12 +2547,11 @@ static std::unique_ptr<C> ParseContentDescription(
payload_type_preferences[pt] = preference--;
}
std::vector<typename C::CodecType> codecs = media_desc->codecs();
std::sort(codecs.begin(), codecs.end(),
[&payload_type_preferences](const typename C::CodecType& a,
const typename C::CodecType& b) {
return payload_type_preferences[a.id] >
payload_type_preferences[b.id];
});
absl::c_sort(
codecs, [&payload_type_preferences](const typename C::CodecType& a,
const typename C::CodecType& b) {
return payload_type_preferences[a.id] > payload_type_preferences[b.id];
});
media_desc->set_codecs(codecs);
return media_desc;
}
@ -2739,13 +2735,11 @@ bool VerifyCodec(const cricket::Codec& codec) {
}
bool VerifyAudioCodecs(const AudioContentDescription* audio_desc) {
const std::vector<cricket::AudioCodec>& codecs = audio_desc->codecs();
return std::all_of(codecs.begin(), codecs.end(), &VerifyCodec);
return absl::c_all_of(audio_desc->codecs(), &VerifyCodec);
}
bool VerifyVideoCodecs(const VideoContentDescription* video_desc) {
const std::vector<cricket::VideoCodec>& codecs = video_desc->codecs();
return std::all_of(codecs.begin(), codecs.end(), &VerifyCodec);
return absl::c_all_of(video_desc->codecs(), &VerifyCodec);
}
void AddParameters(const cricket::CodecParameterMap& parameters,
@ -3301,10 +3295,10 @@ bool ParseSsrcAttribute(const std::string& line,
// Check if there's already an item for this |ssrc_id|. Create a new one if
// there isn't.
auto ssrc_info_it = std::find_if(ssrc_infos->begin(), ssrc_infos->end(),
[ssrc_id](const SsrcInfo& ssrc_info) {
return ssrc_info.ssrc_id == ssrc_id;
});
auto ssrc_info_it =
absl::c_find_if(*ssrc_infos, [ssrc_id](const SsrcInfo& ssrc_info) {
return ssrc_info.ssrc_id == ssrc_id;
});
if (ssrc_info_it == ssrc_infos->end()) {
SsrcInfo info;
info.ssrc_id = ssrc_id;
@ -3459,8 +3453,7 @@ bool ParseRtpmapAttribute(const std::string& line,
return false;
}
if (std::find(payload_types.begin(), payload_types.end(), payload_type) ==
payload_types.end()) {
if (!absl::c_linear_search(payload_types, payload_type)) {
RTC_LOG(LS_WARNING) << "Ignore rtpmap line that did not appear in the "
"<fmt> of the m-line: "
<< line;

View File

@ -17,6 +17,7 @@
#include <utility>
#include <vector>
#include "absl/algorithm/container.h"
#include "api/array_view.h"
#include "api/crypto_params.h"
#include "api/jsep_session_description.h"
@ -1431,10 +1432,9 @@ class WebRtcSdpTest : public testing::Test {
// Order of elements does not matter, only equivalence of sets.
EXPECT_EQ(rids.size(), ids.size());
for (const std::string& id : ids) {
EXPECT_EQ(1l, std::count_if(rids.begin(), rids.end(),
[id](const RidDescription& rid) {
return rid.rid == id;
}));
EXPECT_EQ(1l, absl::c_count_if(rids, [id](const RidDescription& rid) {
return rid.rid == id;
}));
}
}
@ -4105,10 +4105,10 @@ TEST_F(WebRtcSdpTest, TestDeserializeSimulcastAttributeRemovesUnknownRids) {
std::vector<SimulcastLayer> all_send_layers =
simulcast.send_layers().GetAllLayers();
EXPECT_EQ(2ul, all_send_layers.size());
EXPECT_EQ(0, std::count_if(all_send_layers.begin(), all_send_layers.end(),
[](const SimulcastLayer& layer) {
return layer.rid == "2";
}));
EXPECT_EQ(0,
absl::c_count_if(all_send_layers, [](const SimulcastLayer& layer) {
return layer.rid == "2";
}));
std::vector<SimulcastLayer> all_receive_layers =
simulcast.receive_layers().GetAllLayers();

View File

@ -11,11 +11,11 @@
#include "pc/webrtc_session_description_factory.h"
#include <stddef.h>
#include <algorithm>
#include <string>
#include <utility>
#include <vector>
#include "absl/algorithm/container.h"
#include "absl/memory/memory.h"
#include "absl/types/optional.h"
#include "api/jsep.h"
@ -42,16 +42,6 @@ static const char kFailedDueToSessionShutdown[] =
static const uint64_t kInitSessionVersion = 2;
static bool CompareSenderOptions(const cricket::SenderOptions& sender1,
const cricket::SenderOptions& sender2) {
return sender1.track_id < sender2.track_id;
}
static bool SameId(const cricket::SenderOptions& sender1,
const cricket::SenderOptions& sender2) {
return sender1.track_id == sender2.track_id;
}
// Check that each sender has a unique ID.
static bool ValidMediaSessionOptions(
const cricket::MediaSessionOptions& session_options) {
@ -62,10 +52,15 @@ static bool ValidMediaSessionOptions(
media_description_options.sender_options.begin(),
media_description_options.sender_options.end());
}
std::sort(sorted_senders.begin(), sorted_senders.end(), CompareSenderOptions);
std::vector<cricket::SenderOptions>::iterator it =
std::adjacent_find(sorted_senders.begin(), sorted_senders.end(), SameId);
return it == sorted_senders.end();
absl::c_sort(sorted_senders, [](const cricket::SenderOptions& sender1,
const cricket::SenderOptions& sender2) {
return sender1.track_id < sender2.track_id;
});
return absl::c_adjacent_find(sorted_senders,
[](const cricket::SenderOptions& sender1,
const cricket::SenderOptions& sender2) {
return sender1.track_id == sender2.track_id;
}) == sorted_senders.end();
}
enum {