clang-tidy: apply readability-container-size-empty rule

which prefers .empty() over .size() == 0

Bug: webrtc:424706384
Change-Id: I7fb63a60ae8cd2e572d35ff3247940087c1c202f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/403505
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@meta.com>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45306}
diff --git a/.clang-tidy b/.clang-tidy
index cfa4a8f..a692886 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -3,6 +3,7 @@
   Checks:          '-*,
                     llvm-namespace-comment,
                     modernize-use-override,
+                    readability-container-size-empty,
                     readability-static-definition-in-anonymous-namespace,
                     readability-redundant-smartptr-get,
                     readability-redundant-declaration'
diff --git a/examples/peerconnection/client/linux/main_wnd.cc b/examples/peerconnection/client/linux/main_wnd.cc
index 74a27f7..a3e4b76 100644
--- a/examples/peerconnection/client/linux/main_wnd.cc
+++ b/examples/peerconnection/client/linux/main_wnd.cc
@@ -374,7 +374,7 @@
   gtk_widget_set_sensitive(widget, false);
   server_ = gtk_entry_get_text(GTK_ENTRY(server_edit_));
   port_ = gtk_entry_get_text(GTK_ENTRY(port_edit_));
-  int port = port_.length() ? atoi(port_.c_str()) : 0;
+  int port = !port_.empty() ? atoi(port_.c_str()) : 0;
   callback_->StartLogin(server_, port);
 }
 
diff --git a/media/base/media_engine.cc b/media/base/media_engine.cc
index bdcad2a..752573c 100644
--- a/media/base/media_engine.cc
+++ b/media/base/media_engine.cc
@@ -65,7 +65,7 @@
   }
 
   const std::vector<RidDescription>& rids = sp.rids();
-  RTC_DCHECK(rids.size() == 0 || rids.size() == encoding_count);
+  RTC_DCHECK(rids.empty() || rids.size() == encoding_count);
   for (size_t i = 0; i < rids.size(); ++i) {
     encodings[i].rid = rids[i].rid;
   }
diff --git a/media/base/rtp_utils.cc b/media/base/rtp_utils.cc
index 8cc697f..1bb208a 100644
--- a/media/base/rtp_utils.cc
+++ b/media/base/rtp_utils.cc
@@ -353,7 +353,7 @@
 bool ApplyPacketOptions(ArrayView<uint8_t> data,
                         const PacketTimeUpdateParams& packet_time_params,
                         uint64_t time_us) {
-  RTC_DCHECK(data.size() > 0);
+  RTC_DCHECK(!data.empty());
 
   // if there is no valid `rtp_sendtime_extension_id` and `srtp_auth_key` in
   // PacketOptions, nothing to be updated in this packet.
diff --git a/media/base/stream_params.cc b/media/base/stream_params.cc
index 1d1597e..f1d873f 100644
--- a/media/base/stream_params.cc
+++ b/media/base/stream_params.cc
@@ -92,7 +92,7 @@
 SsrcGroup& SsrcGroup::operator=(SsrcGroup&&) = default;
 
 bool SsrcGroup::has_semantics(const std::string& semantics_in) const {
-  return (semantics == semantics_in && ssrcs.size() > 0);
+  return (semantics == semantics_in && !ssrcs.empty());
 }
 
 std::string SsrcGroup::ToString() const {
diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc
index 0b62de6..cef81f9 100644
--- a/media/engine/webrtc_video_engine.cc
+++ b/media/engine/webrtc_video_engine.cc
@@ -2171,7 +2171,7 @@
   }
   if (!key_frames_requested_by_rid.empty()) {
     if (key_frames_requested_by_rid.size() == 1 &&
-        key_frames_requested_by_rid[0] == "") {
+        key_frames_requested_by_rid[0].empty()) {
       // For non-simulcast cases there is no rid,
       // request a keyframe on all layers.
       key_frames_requested_by_rid.clear();
@@ -2581,7 +2581,7 @@
     info.firs_received += infos[i].firs_received;
     info.nacks_received += infos[i].nacks_received;
     info.plis_received += infos[i].plis_received;
-    if (infos[i].report_block_datas.size())
+    if (!infos[i].report_block_datas.empty())
       info.report_block_datas.push_back(infos[i].report_block_datas[0]);
     if (infos[i].qp_sum) {
       if (!info.qp_sum) {
diff --git a/media/engine/webrtc_voice_engine.cc b/media/engine/webrtc_voice_engine.cc
index d5be912..6d996f1 100644
--- a/media/engine/webrtc_voice_engine.cc
+++ b/media/engine/webrtc_voice_engine.cc
@@ -1791,7 +1791,7 @@
   // With separate send and receive channels, we expect GetStats to be called on
   // both, and accumulate info, but only one channel (the send one) should have
   // senders.
-  RTC_DCHECK(info->senders.size() == 0U || send_streams_.size() == 0);
+  RTC_DCHECK(info->senders.empty() || send_streams_.empty());
   for (const auto& stream : send_streams_) {
     AudioSendStream::Stats stats = stream.second->GetStats(false);
     VoiceSenderInfo sinfo;
diff --git a/modules/audio_coding/acm2/audio_coding_module.cc b/modules/audio_coding/acm2/audio_coding_module.cc
index 41d022e..dfbfe18 100644
--- a/modules/audio_coding/acm2/audio_coding_module.cc
+++ b/modules/audio_coding/acm2/audio_coding_module.cc
@@ -268,7 +268,7 @@
       &encode_buffer_);
 
   bitrate_logger_.MaybeLog(encoder_stack_->GetTargetBitrate() / 1000);
-  if (encode_buffer_.size() == 0 && !encoded_info.send_even_if_empty) {
+  if (encode_buffer_.empty() && !encoded_info.send_even_if_empty) {
     // Not enough data.
     return 0;
   }
@@ -289,7 +289,7 @@
   }
 
   AudioFrameType frame_type;
-  if (encode_buffer_.size() == 0 && encoded_info.send_even_if_empty) {
+  if (encode_buffer_.empty() && encoded_info.send_even_if_empty) {
     frame_type = AudioFrameType::kEmptyFrame;
     encoded_info.payload_type = previous_pltype;
   } else {
diff --git a/modules/audio_coding/audio_network_adaptor/controller_manager.cc b/modules/audio_coding/audio_network_adaptor/controller_manager.cc
index c126897..074f8ed 100644
--- a/modules/audio_coding/audio_network_adaptor/controller_manager.cc
+++ b/modules/audio_coding/audio_network_adaptor/controller_manager.cc
@@ -315,7 +315,7 @@
     controllers.push_back(std::move(controller));
   }
 
-  if (scoring_points.size() == 0) {
+  if (scoring_points.empty()) {
     return std::unique_ptr<ControllerManagerImpl>(
         new ControllerManagerImpl(ControllerManagerImpl::Config(0, 0),
                                   std::move(controllers), scoring_points));
@@ -363,7 +363,7 @@
 
 std::vector<Controller*> ControllerManagerImpl::GetSortedControllers(
     const Controller::NetworkMetrics& metrics) {
-  if (controller_scoring_points_.size() == 0)
+  if (controller_scoring_points_.empty())
     return default_sorted_controllers_;
 
   if (!metrics.uplink_bandwidth_bps || !metrics.uplink_packet_loss_fraction)
diff --git a/modules/audio_coding/codecs/opus/audio_decoder_opus_unittest.cc b/modules/audio_coding/codecs/opus/audio_decoder_opus_unittest.cc
index 8c6635f..43236b7 100644
--- a/modules/audio_coding/codecs/opus/audio_decoder_opus_unittest.cc
+++ b/modules/audio_coding/codecs/opus/audio_decoder_opus_unittest.cc
@@ -139,7 +139,7 @@
     encoder.Encode(rtp_timestamp++, audio_frame.data_view().data(), &payload);
 
     // Ignore empty payloads: the encoder needs more audio to produce a packet.
-    if (payload.size() == 0) {
+    if (payload.empty()) {
       continue;
     }
 
@@ -171,7 +171,7 @@
         encoder.Encode(rtp_timestamp++, input_frame, &payload);
 
     // Ignore empty payloads: the encoder needs more audio to produce a packet.
-    if (payload.size() == 0) {
+    if (payload.empty()) {
       continue;
     }
 
@@ -222,7 +222,7 @@
     encoder.Encode(rtp_timestamp++, audio_frame.data_view().data(), &payload);
 
     // Ignore empty payloads: the encoder needs more audio to produce a packet.
-    if (payload.size() == 0) {
+    if (payload.empty()) {
       continue;
     }
 
@@ -265,7 +265,7 @@
     generator.GenerateNextFrame(input_frame);
     Buffer payload;
     encoder.Encode(rtp_timestamp++, input_frame, &payload);
-    if (payload.size() == 0) {
+    if (payload.empty()) {
       continue;
     }
 
diff --git a/modules/audio_coding/codecs/opus/opus_bandwidth_unittest.cc b/modules/audio_coding/codecs/opus/opus_bandwidth_unittest.cc
index decd1ec..030a65d 100644
--- a/modules/audio_coding/codecs/opus/opus_bandwidth_unittest.cc
+++ b/modules/audio_coding/codecs/opus/opus_bandwidth_unittest.cc
@@ -102,7 +102,7 @@
     AudioEncoder::EncodedInfo encoder_info =
         encoder->Encode(rtp_timestamp, audio_loop->GetNextBlock(), &encoded);
     rtp_timestamp += kInputBlockSizeSamples;
-    if (encoded.size() > 0) {
+    if (!encoded.empty()) {
       int decoder_info = decoder->Decode(
           encoded.data(), encoded.size(), kSampleRateHz,
           decoded.size() * sizeof(decoded[0]), decoded.data(), &speech_type);
diff --git a/modules/audio_coding/neteq/packet_buffer.cc b/modules/audio_coding/neteq/packet_buffer.cc
index a2e3a7e..86f8702 100644
--- a/modules/audio_coding/neteq/packet_buffer.cc
+++ b/modules/audio_coding/neteq/packet_buffer.cc
@@ -232,7 +232,7 @@
 size_t PacketBuffer::GetSpanSamples(size_t last_decoded_length,
                                     size_t sample_rate,
                                     bool count_waiting_time) const {
-  if (buffer_.size() == 0) {
+  if (buffer_.empty()) {
     return 0;
   }
 
diff --git a/modules/audio_coding/neteq/statistics_calculator.cc b/modules/audio_coding/neteq/statistics_calculator.cc
index 3a02711..582d0ff 100644
--- a/modules/audio_coding/neteq/statistics_calculator.cc
+++ b/modules/audio_coding/neteq/statistics_calculator.cc
@@ -390,7 +390,7 @@
                         static_cast<uint32_t>(discarded_secondary_samples +
                                               secondary_decoded_samples_));
 
-  if (waiting_times_.size() == 0) {
+  if (waiting_times_.empty()) {
     stats->mean_waiting_time_ms = -1;
     stats->median_waiting_time_ms = -1;
     stats->min_waiting_time_ms = -1;
diff --git a/modules/audio_coding/neteq/tools/encode_neteq_input.cc b/modules/audio_coding/neteq/tools/encode_neteq_input.cc
index c76dbbb..e763d78 100644
--- a/modules/audio_coding/neteq/tools/encode_neteq_input.cc
+++ b/modules/audio_coding/neteq/tools/encode_neteq_input.cc
@@ -78,7 +78,7 @@
   AudioEncoder::EncodedInfo info;
   RTC_DCHECK(!info.send_even_if_empty);
   int num_blocks = 0;
-  while (packet_data_->payload.size() == 0 && !info.send_even_if_empty) {
+  while (packet_data_->payload.empty() && !info.send_even_if_empty) {
     const size_t num_samples = CheckedDivExact(
         static_cast<int>(encoder_->SampleRateHz() * kOutputPeriodMs), 1000);
 
diff --git a/modules/audio_coding/neteq/tools/neteq_rtpplay.cc b/modules/audio_coding/neteq/tools/neteq_rtpplay.cc
index da2df22..32b5da4 100644
--- a/modules/audio_coding/neteq/tools/neteq_rtpplay.cc
+++ b/modules/audio_coding/neteq/tools/neteq_rtpplay.cc
@@ -397,7 +397,7 @@
       output_files_base_name, output_audio_filename, "");
 
   // Check if an SSRC value was provided.
-  if (absl::GetFlag(FLAGS_ssrc).size() > 0) {
+  if (!absl::GetFlag(FLAGS_ssrc).empty()) {
     uint32_t ssrc;
     RTC_CHECK(ParseSsrc(absl::GetFlag(FLAGS_ssrc), &ssrc))
         << "Flag verification has failed.";
diff --git a/modules/audio_coding/neteq/tools/neteq_test_factory.cc b/modules/audio_coding/neteq/tools/neteq_test_factory.cc
index c2599dd..ca4fb49 100644
--- a/modules/audio_coding/neteq/tools/neteq_test_factory.cc
+++ b/modules/audio_coding/neteq/tools/neteq_test_factory.cc
@@ -271,7 +271,7 @@
       CreateBuiltinAudioDecoderFactory();
 
   // Check if a replacement audio file was provided.
-  if (config.replacement_audio_file.size() > 0) {
+  if (!config.replacement_audio_file.empty()) {
     // Find largest unused payload type.
     int replacement_pt = 127;
     while (codecs.find(replacement_pt) != codecs.end()) {
diff --git a/modules/audio_device/include/test_audio_device.cc b/modules/audio_device/include/test_audio_device.cc
index 9a319d9..d2fb9b3 100644
--- a/modules/audio_device/include/test_audio_device.cc
+++ b/modules/audio_device/include/test_audio_device.cc
@@ -133,7 +133,7 @@
           }
           return read;
         });
-    return buffer->size() > 0;
+    return !buffer->empty();
   }
 
  private:
@@ -318,7 +318,7 @@
           memcpy(data.data(), read_buffer_view.data(), size);
           return read / 2;
         });
-    return buffer->size() > 0;
+    return !buffer->empty();
   }
 
  private:
diff --git a/modules/audio_device/test_audio_device_impl.cc b/modules/audio_device/test_audio_device_impl.cc
index f456636..fe3d10d 100644
--- a/modules/audio_device/test_audio_device_impl.cc
+++ b/modules/audio_device/test_audio_device_impl.cc
@@ -171,7 +171,7 @@
   if (capturing_ && capturer_ != nullptr) {
     // Capture 10ms of audio. 2 bytes per sample.
     const bool keep_capturing = capturer_->Capture(&recording_buffer_);
-    if (recording_buffer_.size() > 0) {
+    if (!recording_buffer_.empty()) {
       audio_buffer_->SetRecordedBuffer(
           recording_buffer_.data(),
           recording_buffer_.size() / capturer_->NumChannels(),
diff --git a/modules/audio_processing/utility/cascaded_biquad_filter.cc b/modules/audio_processing/utility/cascaded_biquad_filter.cc
index d2f4952..53c9d15 100644
--- a/modules/audio_processing/utility/cascaded_biquad_filter.cc
+++ b/modules/audio_processing/utility/cascaded_biquad_filter.cc
@@ -33,7 +33,7 @@
 
 void CascadedBiQuadFilter::Process(ArrayView<const float> x,
                                    ArrayView<float> y) {
-  if (biquads_.size() > 0) {
+  if (!biquads_.empty()) {
     ApplyBiQuad(x, y, &biquads_[0]);
     for (size_t k = 1; k < biquads_.size(); ++k) {
       ApplyBiQuad(y, y, &biquads_[k]);
diff --git a/modules/congestion_controller/pcc/pcc_network_controller.cc b/modules/congestion_controller/pcc/pcc_network_controller.cc
index 4a643fc..9094002 100644
--- a/modules/congestion_controller/pcc/pcc_network_controller.cc
+++ b/modules/congestion_controller/pcc/pcc_network_controller.cc
@@ -161,7 +161,7 @@
       received_size += last_received_packets_[i].sent_packet.size;
     }
     TimeDelta sending_time = TimeDelta::Zero();
-    if (last_received_packets_.size() > 0)
+    if (!last_received_packets_.empty())
       sending_time = last_received_packets_.back().receive_time -
                      last_received_packets_.front().receive_time;
     DataRate receiving_rate = bandwidth_estimate_;
@@ -179,7 +179,7 @@
       received_size += last_received_packets_[i].sent_packet.size;
     }
     TimeDelta sending_time = TimeDelta::Zero();
-    if (last_received_packets_.size() > 0)
+    if (!last_received_packets_.empty())
       sending_time = last_received_packets_.back().receive_time -
                      last_received_packets_.front().receive_time;
     DataRate receiving_rate = bandwidth_estimate_;
diff --git a/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc b/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc
index b2864ee..361b465 100644
--- a/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc
+++ b/modules/desktop_capture/linux/wayland/base_capturer_pipewire.cc
@@ -189,7 +189,7 @@
 }
 
 bool BaseCapturerPipeWire::GetSourceList(SourceList* sources) {
-  RTC_DCHECK(sources->size() == 0);
+  RTC_DCHECK(sources->empty());
   // List of available screens is already presented by the xdg-desktop-portal,
   // so we just need a (valid) source id for any callers to pass around, even
   // though it doesn't mean anything to us. Until the user selects a source in
diff --git a/modules/desktop_capture/linux/wayland/egl_dmabuf.cc b/modules/desktop_capture/linux/wayland/egl_dmabuf.cc
index 3a80f4e..cf5b4da 100644
--- a/modules/desktop_capture/linux/wayland/egl_dmabuf.cc
+++ b/modules/desktop_capture/linux/wayland/egl_dmabuf.cc
@@ -529,7 +529,7 @@
     return false;
   }
 
-  if (plane_datas.size() <= 0) {
+  if (plane_datas.empty()) {
     RTC_LOG(LS_ERROR) << "Failed to process buffer: invalid number of planes";
     return false;
   }
@@ -544,7 +544,7 @@
   attribs[atti++] = EGL_LINUX_DRM_FOURCC_EXT;
   attribs[atti++] = SpaPixelFormatToDrmFormat(format);
 
-  if (plane_datas.size() > 0) {
+  if (!plane_datas.empty()) {
     attribs[atti++] = EGL_DMA_BUF_PLANE0_FD_EXT;
     attribs[atti++] = plane_datas[0].fd;
     attribs[atti++] = EGL_DMA_BUF_PLANE0_OFFSET_EXT;
diff --git a/modules/desktop_capture/linux/wayland/screencast_stream_utils.cc b/modules/desktop_capture/linux/wayland/screencast_stream_utils.cc
index 251bc4e..ff0fdfb 100644
--- a/modules/desktop_capture/linux/wayland/screencast_stream_utils.cc
+++ b/modules/desktop_capture/linux/wayland/screencast_stream_utils.cc
@@ -91,7 +91,7 @@
                       SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw), 0);
   spa_pod_builder_add(builder, SPA_FORMAT_VIDEO_format, SPA_POD_Id(format), 0);
 
-  if (modifiers.size()) {
+  if (!modifiers.empty()) {
     if (modifiers.size() == 1 && modifiers[0] == DRM_FORMAT_MOD_INVALID) {
       spa_pod_builder_prop(builder, SPA_FORMAT_VIDEO_modifier,
                            SPA_POD_PROP_FLAG_MANDATORY);
diff --git a/modules/desktop_capture/linux/x11/screen_capturer_x11.cc b/modules/desktop_capture/linux/x11/screen_capturer_x11.cc
index ce73124..27b334f 100644
--- a/modules/desktop_capture/linux/x11/screen_capturer_x11.cc
+++ b/modules/desktop_capture/linux/x11/screen_capturer_x11.cc
@@ -292,7 +292,7 @@
 }
 
 bool ScreenCapturerX11::GetSourceList(SourceList* sources) {
-  RTC_DCHECK(sources->size() == 0);
+  RTC_DCHECK(sources->empty());
   if (!use_randr_) {
     sources->push_back({});
     return true;
diff --git a/modules/rtp_rtcp/source/ulpfec_receiver.cc b/modules/rtp_rtcp/source/ulpfec_receiver.cc
index 83bc10c..53de776 100644
--- a/modules/rtp_rtcp/source/ulpfec_receiver.cc
+++ b/modules/rtp_rtcp/source/ulpfec_receiver.cc
@@ -183,7 +183,7 @@
         rtp_packet.size() - rtp_packet.headers_size() - kRedHeaderLength);
   }
 
-  if (received_packet->pkt->data.size() > 0) {
+  if (!received_packet->pkt->data.empty()) {
     received_packets_.push_back(std::move(received_packet));
   }
   return true;
diff --git a/modules/rtp_rtcp/source/video_rtp_depacketizer_av1.cc b/modules/rtp_rtcp/source/video_rtp_depacketizer_av1.cc
index 9324851..ed7434e 100644
--- a/modules/rtp_rtcp/source/video_rtp_depacketizer_av1.cc
+++ b/modules/rtp_rtcp/source/video_rtp_depacketizer_av1.cc
@@ -368,7 +368,7 @@
 
 std::optional<VideoRtpDepacketizer::ParsedRtpPayload>
 VideoRtpDepacketizerAv1::Parse(CopyOnWriteBuffer rtp_payload) {
-  if (rtp_payload.size() == 0) {
+  if (rtp_payload.empty()) {
     RTC_DLOG(LS_ERROR) << "Empty rtp payload.";
     return std::nullopt;
   }
diff --git a/modules/rtp_rtcp/source/video_rtp_depacketizer_generic.cc b/modules/rtp_rtcp/source/video_rtp_depacketizer_generic.cc
index 2f8f7fd..7de2e4b 100644
--- a/modules/rtp_rtcp/source/video_rtp_depacketizer_generic.cc
+++ b/modules/rtp_rtcp/source/video_rtp_depacketizer_generic.cc
@@ -36,7 +36,7 @@
 
 std::optional<VideoRtpDepacketizer::ParsedRtpPayload>
 VideoRtpDepacketizerGeneric::Parse(CopyOnWriteBuffer rtp_payload) {
-  if (rtp_payload.size() == 0) {
+  if (rtp_payload.empty()) {
     RTC_LOG(LS_WARNING) << "Empty payload.";
     return std::nullopt;
   }
diff --git a/modules/rtp_rtcp/source/video_rtp_depacketizer_h264.cc b/modules/rtp_rtcp/source/video_rtp_depacketizer_h264.cc
index 54b85e5..1c6529b 100644
--- a/modules/rtp_rtcp/source/video_rtp_depacketizer_h264.cc
+++ b/modules/rtp_rtcp/source/video_rtp_depacketizer_h264.cc
@@ -293,7 +293,7 @@
 
 std::optional<VideoRtpDepacketizer::ParsedRtpPayload>
 VideoRtpDepacketizerH264::Parse(CopyOnWriteBuffer rtp_payload) {
-  if (rtp_payload.size() == 0) {
+  if (rtp_payload.empty()) {
     RTC_LOG(LS_ERROR) << "Empty payload.";
     return std::nullopt;
   }
diff --git a/p2p/base/async_stun_tcp_socket_unittest.cc b/p2p/base/async_stun_tcp_socket_unittest.cc
index 39515dd..aa4fa6a 100644
--- a/p2p/base/async_stun_tcp_socket_unittest.cc
+++ b/p2p/base/async_stun_tcp_socket_unittest.cc
@@ -131,7 +131,7 @@
 
   bool CheckData(const void* data, int len) {
     bool ret = false;
-    if (recv_packets_.size()) {
+    if (!recv_packets_.empty()) {
       std::string packet = recv_packets_.front();
       recv_packets_.pop_front();
       ret = (memcmp(data, packet.c_str(), len) == 0);
diff --git a/p2p/base/connection.cc b/p2p/base/connection.cc
index 286e98f..cebb3f1 100644
--- a/p2p/base/connection.cc
+++ b/p2p/base/connection.cc
@@ -87,7 +87,7 @@
     const std::vector<Connection::SentPing>& pings_since_last_response,
     int64_t maximum_time,
     int64_t now) {
-  if (pings_since_last_response.size() == 0)
+  if (pings_since_last_response.empty())
     return false;
 
   auto first = pings_since_last_response[0];
diff --git a/p2p/base/p2p_transport_channel_unittest.cc b/p2p/base/p2p_transport_channel_unittest.cc
index f48a8a4..6f6259e 100644
--- a/p2p/base/p2p_transport_channel_unittest.cc
+++ b/p2p/base/p2p_transport_channel_unittest.cc
@@ -6797,7 +6797,7 @@
   DestroyChannels();
 }
 
-static struct LocalAreaNetworkPermissionTestConfig {
+struct LocalAreaNetworkPermissionTestConfig {
   template <typename Sink>
   friend void AbslStringify(
       Sink& sink,
diff --git a/p2p/base/stun_port.cc b/p2p/base/stun_port.cc
index 29d49c6..7623ccc 100644
--- a/p2p/base/stun_port.cc
+++ b/p2p/base/stun_port.cc
@@ -610,7 +610,7 @@
 
   // The port is "completed" if there is no stun server provided, or the bind
   // request succeeded for any stun server, or the socket is shared.
-  if (server_addresses_.empty() || bind_request_succeeded_servers_.size() > 0 ||
+  if (server_addresses_.empty() || !bind_request_succeeded_servers_.empty() ||
       SharedSocket()) {
     SignalPortComplete(this);
   } else {
diff --git a/p2p/dtls/dtls_stun_piggyback_controller.cc b/p2p/dtls/dtls_stun_piggyback_controller.cc
index 7fdeb73..70b76ab 100644
--- a/p2p/dtls/dtls_stun_piggyback_controller.cc
+++ b/p2p/dtls/dtls_stun_piggyback_controller.cc
@@ -200,7 +200,7 @@
     return;
   }
 
-  if (!data.has_value() || data->size() == 0) {
+  if (!data.has_value() || data->empty()) {
     return;
   }
 
diff --git a/p2p/dtls/dtls_transport.cc b/p2p/dtls/dtls_transport.cc
index 52020f3..51ec72c 100644
--- a/p2p/dtls/dtls_transport.cc
+++ b/p2p/dtls/dtls_transport.cc
@@ -380,7 +380,7 @@
   }
 
   // At this point we know we are doing DTLS
-  bool fingerprint_changing = remote_fingerprint_value_.size() > 0u;
+  bool fingerprint_changing = !remote_fingerprint_value_.empty();
   remote_fingerprint_value_ = std::move(remote_fingerprint_value);
   remote_fingerprint_algorithm_ = std::string(digest_alg);
 
@@ -471,7 +471,7 @@
   dtls_->SetServerRole(*dtls_role_);
   dtls_->SetEventCallback(
       [this](int events, int err) { OnDtlsEvent(events, err); });
-  if (remote_fingerprint_value_.size() &&
+  if (!remote_fingerprint_value_.empty() &&
       dtls_->SetPeerCertificateDigest(remote_fingerprint_algorithm_,
                                       remote_fingerprint_value_) !=
           SSLPeerCertificateDigestError::NONE) {
diff --git a/pc/legacy_stats_collector.cc b/pc/legacy_stats_collector.cc
index b4bf87f..377bb60 100644
--- a/pc/legacy_stats_collector.cc
+++ b/pc/legacy_stats_collector.cc
@@ -1013,7 +1013,7 @@
       }
       int srtp_crypto_suite = channel_iter.srtp_crypto_suite;
       if (srtp_crypto_suite != kSrtpInvalidCryptoSuite &&
-          SrtpCryptoSuiteToName(srtp_crypto_suite).length()) {
+          !SrtpCryptoSuiteToName(srtp_crypto_suite).empty()) {
         channel_report->AddString(StatsReport::kStatsValueNameSrtpCipher,
                                   SrtpCryptoSuiteToName(srtp_crypto_suite));
       }
diff --git a/pc/legacy_stats_collector_unittest.cc b/pc/legacy_stats_collector_unittest.cc
index c5e0b1a..8ec0c42 100644
--- a/pc/legacy_stats_collector_unittest.cc
+++ b/pc/legacy_stats_collector_unittest.cc
@@ -691,7 +691,7 @@
     std::string local_certificate_id =
         ExtractStatsValue(StatsReport::kStatsReportTypeComponent, reports,
                           StatsReport::kStatsValueNameLocalCertificateId);
-    if (local_ders.size() > 0) {
+    if (!local_ders.empty()) {
       EXPECT_NE(kNotFound, local_certificate_id);
       StatsReport::Id id(IdFromCertIdString(local_certificate_id));
       CheckCertChainReports(reports, local_ders, id);
@@ -703,7 +703,7 @@
     std::string remote_certificate_id =
         ExtractStatsValue(StatsReport::kStatsReportTypeComponent, reports,
                           StatsReport::kStatsValueNameRemoteCertificateId);
-    if (remote_ders.size() > 0) {
+    if (!remote_ders.empty()) {
       EXPECT_NE(kNotFound, remote_certificate_id);
       StatsReport::Id id(IdFromCertIdString(remote_certificate_id));
       CheckCertChainReports(reports, remote_ders, id);
diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc
index de47f59..7eaa35b 100644
--- a/pc/peer_connection.cc
+++ b/pc/peer_connection.cc
@@ -1364,7 +1364,7 @@
     return std::nullopt;
   }
   // TODO(bugs.webrtc.org/7443): Change to retrieve from session-level option.
-  if (description->description()->transport_infos().size() < 1) {
+  if (description->description()->transport_infos().empty()) {
     return std::nullopt;
   }
   return description->description()->transport_infos()[0].description.HasOption(
diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc
index 38c7ba2..451d9ce 100644
--- a/pc/rtc_stats_collector.cc
+++ b/pc/rtc_stats_collector.cc
@@ -2013,7 +2013,7 @@
       channel_transport_stats->dtls_cipher =
           channel_stats.tls_cipher_suite_name;
       if (channel_stats.srtp_crypto_suite != kSrtpInvalidCryptoSuite &&
-          SrtpCryptoSuiteToName(channel_stats.srtp_crypto_suite).length()) {
+          !SrtpCryptoSuiteToName(channel_stats.srtp_crypto_suite).empty()) {
         channel_transport_stats->srtp_cipher =
             SrtpCryptoSuiteToName(channel_stats.srtp_crypto_suite);
       }
diff --git a/pc/sctp_utils.cc b/pc/sctp_utils.cc
index 49cdb71..08348bc 100644
--- a/pc/sctp_utils.cc
+++ b/pc/sctp_utils.cc
@@ -49,7 +49,7 @@
 bool IsOpenMessage(const CopyOnWriteBuffer& payload) {
   // Format defined at
   // https://www.rfc-editor.org/rfc/rfc8832#section-5.1
-  if (payload.size() < 1) {
+  if (payload.empty()) {
     RTC_DLOG(LS_WARNING) << "Could not read OPEN message type.";
     return false;
   }
@@ -138,7 +138,7 @@
 }
 
 bool ParseDataChannelOpenAckMessage(const CopyOnWriteBuffer& payload) {
-  if (payload.size() < 1) {
+  if (payload.empty()) {
     RTC_LOG(LS_WARNING) << "Could not read OPEN_ACK message type.";
     return false;
   }
diff --git a/pc/sdp_offer_answer.cc b/pc/sdp_offer_answer.cc
index 7339c0f..174b4e8 100644
--- a/pc/sdp_offer_answer.cc
+++ b/pc/sdp_offer_answer.cc
@@ -3691,7 +3691,7 @@
     // m= section, or the MSID values themselves, differ from what is in
     // transceiver.sender.[[AssociatedMediaStreamIds]], return true.
     if (RtpTransceiverDirectionHasSend(transceiver->direction())) {
-      if (current_local_media_description->streams().size() == 0)
+      if (current_local_media_description->streams().empty())
         return true;
 
       std::vector<std::string> msection_msids;
diff --git a/pc/webrtc_sdp.cc b/pc/webrtc_sdp.cc
index 4adec0a..3b3f4f1 100644
--- a/pc/webrtc_sdp.cc
+++ b/pc/webrtc_sdp.cc
@@ -2247,7 +2247,7 @@
     // msid:identifier [appdata]
     std::vector<absl::string_view> fields =
         split(value, kSdpDelimiterSpaceChar);
-    if (fields.size() < 1 || fields.size() > 2) {
+    if (fields.empty() || fields.size() > 2) {
       return ParseFailed(
           line, "Expected format \"msid:<identifier>[ <appdata>]\".", error);
     }
diff --git a/rtc_base/async_tcp_socket.cc b/rtc_base/async_tcp_socket.cc
index b6046eb..fc9ea77 100644
--- a/rtc_base/async_tcp_socket.cc
+++ b/rtc_base/async_tcp_socket.cc
@@ -139,7 +139,7 @@
   RTC_DCHECK_GT(outbuf_.size(), 0);
   ArrayView<uint8_t> view = outbuf_;
   int res;
-  while (view.size() > 0) {
+  while (!view.empty()) {
     res = socket_->Send(view.data(), view.size());
     if (res <= 0) {
       break;
@@ -231,11 +231,11 @@
 void AsyncTCPSocketBase::OnWriteEvent(Socket* socket) {
   RTC_DCHECK(socket_.get() == socket);
 
-  if (outbuf_.size() > 0) {
+  if (!outbuf_.empty()) {
     FlushOutBuffer();
   }
 
-  if (outbuf_.size() == 0) {
+  if (outbuf_.empty()) {
     SignalReadyToSend(this);
   }
 }
diff --git a/rtc_base/byte_buffer.cc b/rtc_base/byte_buffer.cc
index 0b06d83..719720d 100644
--- a/rtc_base/byte_buffer.cc
+++ b/rtc_base/byte_buffer.cc
@@ -147,7 +147,7 @@
 }
 
 bool ByteBufferReader::ReadBytes(ArrayView<uint8_t> val) {
-  if (val.size() == 0) {
+  if (val.empty()) {
     return true;
   }
   return ReadBytes(val.data(), val.size());
diff --git a/rtc_base/network.cc b/rtc_base/network.cc
index 4798b84..be1acbf 100644
--- a/rtc_base/network.cc
+++ b/rtc_base/network.cc
@@ -533,7 +533,7 @@
 }
 
 bool NetworkManagerBase::IsVpnMacAddress(ArrayView<const uint8_t> address) {
-  if (address.data() == nullptr && address.size() == 0) {
+  if (address.data() == nullptr && address.empty()) {
     return false;
   }
   for (const auto& vpn : kVpns) {
@@ -1142,7 +1142,7 @@
 
 // Select the best IP address to use from this Network.
 IPAddress Network::GetBestIP() const {
-  if (ips_.size() == 0) {
+  if (ips_.empty()) {
     return IPAddress();
   }
 
diff --git a/rtc_base/openssl_adapter.cc b/rtc_base/openssl_adapter.cc
index 6ac2c66..e92de1e 100644
--- a/rtc_base/openssl_adapter.cc
+++ b/rtc_base/openssl_adapter.cc
@@ -1002,7 +1002,7 @@
   // each protocol.
   std::string transformed_alpn;
   for (const std::string& proto : alpn_protocols) {
-    if (proto.size() == 0 || proto.size() > 0xFF) {
+    if (proto.empty() || proto.size() > 0xFF) {
       RTC_LOG(LS_ERROR) << "OpenSSLAdapter::Error("
                            "TransformAlpnProtocols received proto with size "
                         << proto.size() << ")";
diff --git a/rtc_base/openssl_stream_adapter.cc b/rtc_base/openssl_stream_adapter.cc
index 604a946..50be6b5 100644
--- a/rtc_base/openssl_stream_adapter.cc
+++ b/rtc_base/openssl_stream_adapter.cc
@@ -608,7 +608,7 @@
   }
 
   // OpenSSL will return an error if we try to write zero bytes
-  if (data.size() == 0) {
+  if (data.empty()) {
     written = 0;
     return SR_SUCCESS;
   }
@@ -665,7 +665,7 @@
   }
 
   // Don't trust OpenSSL with zero byte reads
-  if (data.size() == 0) {
+  if (data.empty()) {
     read = 0;
     return SR_SUCCESS;
   }
diff --git a/rtc_base/virtual_socket_server.cc b/rtc_base/virtual_socket_server.cc
index d4b84a3..2d4aeaa 100644
--- a/rtc_base/virtual_socket_server.cc
+++ b/rtc_base/virtual_socket_server.cc
@@ -1217,7 +1217,7 @@
 
 std::unique_ptr<VirtualSocketServer::Function> VirtualSocketServer::Accumulate(
     std::unique_ptr<Function> f) {
-  RTC_DCHECK(f->size() >= 1);
+  RTC_DCHECK(!f->empty());
   double v = 0;
   for (Function::size_type i = 0; i < f->size() - 1; ++i) {
     double dx = (*f)[i + 1].first - (*f)[i].first;
@@ -1260,7 +1260,7 @@
   if (iter == f->begin()) {
     return (*f)[0].second;
   } else if (iter == f->end()) {
-    RTC_DCHECK(f->size() >= 1);
+    RTC_DCHECK(!f->empty());
     return (*f)[f->size() - 1].second;
   } else if (iter->first == x) {
     return iter->second;
diff --git a/rtc_tools/frame_analyzer/video_quality_analysis.cc b/rtc_tools/frame_analyzer/video_quality_analysis.cc
index 67a72b9..1e079ab 100644
--- a/rtc_tools/frame_analyzer/video_quality_analysis.cc
+++ b/rtc_tools/frame_analyzer/video_quality_analysis.cc
@@ -125,7 +125,7 @@
 void PrintAnalysisResults(const std::string& label,
                           ResultsContainer& results,
                           MetricsLogger& logger) {
-  if (results.frames.size() > 0u) {
+  if (!results.frames.empty()) {
     logger.LogSingleValueMetric("Unique_frames_count", label,
                                 results.frames.size(), Unit::kUnitless,
                                 ImprovementDirection::kNeitherIsBetter);
diff --git a/rtc_tools/network_tester/config_reader.cc b/rtc_tools/network_tester/config_reader.cc
index fc657a6..582dc8f 100644
--- a/rtc_tools/network_tester/config_reader.cc
+++ b/rtc_tools/network_tester/config_reader.cc
@@ -28,7 +28,7 @@
   RTC_DCHECK(config_stream.good());
   std::string config_data((std::istreambuf_iterator<char>(config_stream)),
                           (std::istreambuf_iterator<char>()));
-  if (config_data.size() > 0) {
+  if (!config_data.empty()) {
     proto_all_configs_.ParseFromString(config_data);
   }
 }
diff --git a/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc b/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc
index 11e586a..7083638 100644
--- a/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc
+++ b/test/pc/e2e/analyzer/video/video_quality_metrics_reporter.cc
@@ -70,7 +70,7 @@
 
   std::vector<const RTCTransportStats*> transport_stats =
       report->GetStatsOfType<RTCTransportStats>();
-  if (transport_stats.size() == 0u ||
+  if (transport_stats.empty() ||
       !transport_stats[0]->selected_candidate_pair_id.has_value()) {
     return;
   }
diff --git a/test/pc/e2e/echo/echo_emulation.cc b/test/pc/e2e/echo/echo_emulation.cc
index 34d53f4..14c5466 100644
--- a/test/pc/e2e/echo/echo_emulation.cc
+++ b/test/pc/e2e/echo/echo_emulation.cc
@@ -115,7 +115,7 @@
 }
 
 bool EchoEmulatingRenderer::Render(ArrayView<const int16_t> data) {
-  if (data.size() > 0) {
+  if (!data.empty()) {
     echo_emulating_capturer_->OnAudioRendered(data);
   }
   return delegate_->Render(data);
diff --git a/test/testsupport/file_utils.cc b/test/testsupport/file_utils.cc
index 491dcde..7a72edb 100644
--- a/test/testsupport/file_utils.cc
+++ b/test/testsupport/file_utils.cc
@@ -149,7 +149,7 @@
 }
 
 std::optional<std::vector<std::string>> ReadDirectory(absl::string_view path) {
-  if (path.length() == 0)
+  if (path.empty())
     return std::optional<std::vector<std::string>>();
 
   std::string path_str(path);
diff --git a/test/video_codec_tester.cc b/test/video_codec_tester.cc
index dbfb6b1..8d647c9 100644
--- a/test/video_codec_tester.cc
+++ b/test/video_codec_tester.cc
@@ -949,7 +949,7 @@
       MutexLock lock(&mutex_);
       spatial_idx = *spatial_idx_;
 
-      if (ref_frames_.size() > 0) {
+      if (!ref_frames_.empty()) {
         auto it = ref_frames_.find(decoded_frame.rtp_timestamp());
         RTC_CHECK(it != ref_frames_.end());
         ref_frame = it->second;
diff --git a/video/receive_statistics_proxy.cc b/video/receive_statistics_proxy.cc
index 1ce49ca..84b00b7 100644
--- a/video/receive_statistics_proxy.cc
+++ b/video/receive_statistics_proxy.cc
@@ -616,7 +616,7 @@
   Timestamp current_time = clock_->CurrentTime();
   // TODO(bugs.webrtc.org/13984): some tests do not fill packet_infos().
   TimeDelta assembly_time = TimeDelta::Zero();
-  if (frame.packet_infos().size() > 0) {
+  if (!frame.packet_infos().empty()) {
     const auto [first_packet, last_packet] = std::minmax_element(
         frame.packet_infos().cbegin(), frame.packet_infos().cend(),
         [](const webrtc::RtpPacketInfo& a, const webrtc::RtpPacketInfo& b) {
diff --git a/video/rtp_video_stream_receiver2.cc b/video/rtp_video_stream_receiver2.cc
index f2715d3..804fff8 100644
--- a/video/rtp_video_stream_receiver2.cc
+++ b/video/rtp_video_stream_receiver2.cc
@@ -739,7 +739,7 @@
 
   packet->times_nacked = times_nacked;
 
-  if (codec_payload.size() == 0) {
+  if (codec_payload.empty()) {
     NotifyReceiverOfEmptyPacket(packet->seq_num(),
                                 GetCodecFromPayloadType(packet->payload_type));
     rtcp_feedback_buffer_.SendBufferedRtcpFeedback();