Remove clang:find_bad_constructs suppression from call:call.

This CL removes //build/config/clang:find_bad_constructs from the
suppressed_configs list, which means that clang:find_bad_constructs
is now enabled on these translation units.

Bug: webrtc:9251, webrtc:163
Change-Id: I74cb86c29cebb69dd22083718f1446f18f705cd4
Reviewed-on: https://webrtc-review.googlesource.com/95883
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24483}
diff --git a/api/video/BUILD.gn b/api/video/BUILD.gn
index a0c2ae1..dfc4f27 100644
--- a/api/video/BUILD.gn
+++ b/api/video/BUILD.gn
@@ -145,6 +145,7 @@
   visibility = [ "*" ]
   sources = [
     "video_stream_encoder_interface.h",
+    "video_stream_encoder_observer.cc",
     "video_stream_encoder_observer.h",
     "video_stream_encoder_settings.h",
   ]
diff --git a/api/video/video_stream_encoder_observer.cc b/api/video/video_stream_encoder_observer.cc
new file mode 100644
index 0000000..3b9bd52
--- /dev/null
+++ b/api/video/video_stream_encoder_observer.cc
@@ -0,0 +1,17 @@
+/*
+ *  Copyright (c) 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.
+ */
+
+#include "api/video/video_stream_encoder_observer.h"
+
+namespace webrtc {
+
+VideoStreamEncoderObserver::AdaptationSteps::AdaptationSteps() = default;
+
+}  // namespace webrtc
diff --git a/api/video/video_stream_encoder_observer.h b/api/video/video_stream_encoder_observer.h
index ac5c8a1..b940efd 100644
--- a/api/video/video_stream_encoder_observer.h
+++ b/api/video/video_stream_encoder_observer.h
@@ -37,6 +37,7 @@
  public:
   // Number of resolution and framerate reductions (unset if disabled).
   struct AdaptationSteps {
+    AdaptationSteps();
     absl::optional<int> num_resolution_reductions = 0;
     absl::optional<int> num_framerate_reductions = 0;
   };
@@ -58,7 +59,7 @@
     kMediaOptimization
   };
 
-  virtual ~VideoStreamEncoderObserver() = default;
+  ~VideoStreamEncoderObserver() override = default;
 
   virtual void OnIncomingFrame(int width, int height) = 0;
 
diff --git a/audio/audio_state.cc b/audio/audio_state.cc
index 35ea03d..7d473ae 100644
--- a/audio/audio_state.cc
+++ b/audio/audio_state.cc
@@ -39,6 +39,15 @@
   RTC_DCHECK(sending_streams_.empty());
 }
 
+AudioProcessing* AudioState::audio_processing() {
+  RTC_DCHECK(config_.audio_processing);
+  return config_.audio_processing.get();
+}
+
+AudioTransport* AudioState::audio_transport() {
+  return &audio_transport_;
+}
+
 bool AudioState::typing_noise_detected() const {
   RTC_DCHECK(thread_checker_.CalledOnValidThread());
   return audio_transport_.typing_noise_detected();
diff --git a/audio/audio_state.h b/audio/audio_state.h
index 689534b..9e302c4 100644
--- a/audio/audio_state.h
+++ b/audio/audio_state.h
@@ -35,11 +35,8 @@
   explicit AudioState(const AudioState::Config& config);
   ~AudioState() override;
 
-  AudioProcessing* audio_processing() override {
-    RTC_DCHECK(config_.audio_processing);
-    return config_.audio_processing.get();
-  }
-  AudioTransport* audio_transport() override { return &audio_transport_; }
+  AudioProcessing* audio_processing() override;
+  AudioTransport* audio_transport() override;
 
   void SetPlayout(bool enabled) override;
   void SetRecording(bool enabled) override;
diff --git a/audio/null_audio_poller.h b/audio/null_audio_poller.h
index b6ddf17..afb6edb 100644
--- a/audio/null_audio_poller.h
+++ b/audio/null_audio_poller.h
@@ -21,7 +21,7 @@
 class NullAudioPoller final : public rtc::MessageHandler {
  public:
   explicit NullAudioPoller(AudioTransport* audio_transport);
-  ~NullAudioPoller();
+  ~NullAudioPoller() override;
 
  protected:
   void OnMessage(rtc::Message* msg) override;
diff --git a/audio/transport_feedback_packet_loss_tracker.cc b/audio/transport_feedback_packet_loss_tracker.cc
index 7e0c5c5..c7acd76 100644
--- a/audio/transport_feedback_packet_loss_tracker.cc
+++ b/audio/transport_feedback_packet_loss_tracker.cc
@@ -47,6 +47,9 @@
   Reset();
 }
 
+TransportFeedbackPacketLossTracker::~TransportFeedbackPacketLossTracker() =
+    default;
+
 void TransportFeedbackPacketLossTracker::Reset() {
   acked_packets_ = 0;
   plr_state_.Reset();
diff --git a/audio/transport_feedback_packet_loss_tracker.h b/audio/transport_feedback_packet_loss_tracker.h
index 7d58d6c..180b64a 100644
--- a/audio/transport_feedback_packet_loss_tracker.h
+++ b/audio/transport_feedback_packet_loss_tracker.h
@@ -35,6 +35,7 @@
   TransportFeedbackPacketLossTracker(int64_t max_window_size_ms,
                                      size_t plr_min_num_acked_packets,
                                      size_t rplr_min_num_acked_pairs);
+  ~TransportFeedbackPacketLossTracker();
 
   void OnPacketAdded(uint16_t seq_num, int64_t send_time_ms);
 
diff --git a/call/BUILD.gn b/call/BUILD.gn
index ee06825..b485ead 100644
--- a/call/BUILD.gn
+++ b/call/BUILD.gn
@@ -177,11 +177,6 @@
     "receive_time_calculator.h",
   ]
 
-  if (!build_with_chromium && is_clang) {
-    # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
-    suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
-  }
-
   deps = [
     ":bitrate_allocator",
     ":call_interfaces",
diff --git a/call/call.cc b/call/call.cc
index 113109a..be5bb1d 100644
--- a/call/call.cc
+++ b/call/call.cc
@@ -170,7 +170,7 @@
  public:
   Call(const Call::Config& config,
        std::unique_ptr<RtpTransportControllerSendInterface> transport_send);
-  virtual ~Call();
+  ~Call() override;
 
   // Implements webrtc::Call.
   PacketReceiver* Receiver() override;
diff --git a/call/call_config.cc b/call/call_config.cc
index ca5fb60..d3425aa 100644
--- a/call/call_config.cc
+++ b/call/call_config.cc
@@ -15,6 +15,9 @@
 CallConfig::CallConfig(RtcEventLog* event_log) : event_log(event_log) {
   RTC_DCHECK(event_log);
 }
+
+CallConfig::CallConfig(const CallConfig& config) = default;
+
 CallConfig::~CallConfig() = default;
 
 }  // namespace webrtc
diff --git a/call/call_config.h b/call/call_config.h
index 438929f..7fc4b86 100644
--- a/call/call_config.h
+++ b/call/call_config.h
@@ -24,6 +24,7 @@
 
 struct CallConfig {
   explicit CallConfig(RtcEventLog* event_log);
+  CallConfig(const CallConfig&);
   ~CallConfig();
 
   RTC_DEPRECATED static constexpr int kDefaultStartBitrateBps = 300000;
diff --git a/call/flexfec_receive_stream.cc b/call/flexfec_receive_stream.cc
index 86c0006..ab13836 100644
--- a/call/flexfec_receive_stream.cc
+++ b/call/flexfec_receive_stream.cc
@@ -16,6 +16,9 @@
     : rtcp_send_transport(rtcp_send_transport) {
   RTC_DCHECK(rtcp_send_transport);
 }
+
+FlexfecReceiveStream::Config::Config(const Config& config) = default;
+
 FlexfecReceiveStream::Config::~Config() = default;
 
 }  // namespace webrtc
diff --git a/call/flexfec_receive_stream.h b/call/flexfec_receive_stream.h
index d64cb26..ccc3014 100644
--- a/call/flexfec_receive_stream.h
+++ b/call/flexfec_receive_stream.h
@@ -37,6 +37,7 @@
 
   struct Config {
     explicit Config(Transport* rtcp_send_transport);
+    Config(const Config&);
     ~Config();
 
     std::string ToString() const;
diff --git a/modules/congestion_controller/include/receive_side_congestion_controller.h b/modules/congestion_controller/include/receive_side_congestion_controller.h
index ef3c8b1..2cb1b52 100644
--- a/modules/congestion_controller/include/receive_side_congestion_controller.h
+++ b/modules/congestion_controller/include/receive_side_congestion_controller.h
@@ -33,7 +33,7 @@
   ReceiveSideCongestionController(const Clock* clock,
                                   PacketRouter* packet_router);
 
-  virtual ~ReceiveSideCongestionController() {}
+  ~ReceiveSideCongestionController() override {}
 
   virtual void OnReceivedPacket(int64_t arrival_time_ms,
                                 size_t payload_size,
@@ -60,7 +60,7 @@
     WrappingBitrateEstimator(RemoteBitrateObserver* observer,
                              const Clock* clock);
 
-    virtual ~WrappingBitrateEstimator() {}
+    ~WrappingBitrateEstimator() override;
 
     void IncomingPacket(int64_t arrival_time_ms,
                         size_t payload_size,
diff --git a/modules/congestion_controller/receive_side_congestion_controller.cc b/modules/congestion_controller/receive_side_congestion_controller.cc
index 11e66ef..09c7ca5 100644
--- a/modules/congestion_controller/receive_side_congestion_controller.cc
+++ b/modules/congestion_controller/receive_side_congestion_controller.cc
@@ -31,6 +31,9 @@
       packets_since_absolute_send_time_(0),
       min_bitrate_bps_(congestion_controller::GetMinBitrateBps()) {}
 
+ReceiveSideCongestionController::WrappingBitrateEstimator::
+    ~WrappingBitrateEstimator() = default;
+
 void ReceiveSideCongestionController::WrappingBitrateEstimator::IncomingPacket(
     int64_t arrival_time_ms,
     size_t payload_size,
diff --git a/modules/video_coding/fec_controller_default.cc b/modules/video_coding/fec_controller_default.cc
index 84e8a7b..5fe38e6 100644
--- a/modules/video_coding/fec_controller_default.cc
+++ b/modules/video_coding/fec_controller_default.cc
@@ -167,4 +167,9 @@
     }
   }
 }
+
+bool FecControllerDefault::UseLossVectorMask() {
+  return false;
+}
+
 }  // namespace webrtc
diff --git a/modules/video_coding/fec_controller_default.h b/modules/video_coding/fec_controller_default.h
index 776977a..a95eced 100644
--- a/modules/video_coding/fec_controller_default.h
+++ b/modules/video_coding/fec_controller_default.h
@@ -26,7 +26,7 @@
   FecControllerDefault(Clock* clock,
                        VCMProtectionCallback* protection_callback);
   explicit FecControllerDefault(Clock* clock);
-  ~FecControllerDefault();
+  ~FecControllerDefault() override;
   void SetProtectionCallback(
       VCMProtectionCallback* protection_callback) override;
   void SetProtectionMethod(bool enable_fec, bool enable_nack) override;
@@ -41,7 +41,7 @@
                           int64_t round_trip_time_ms) override;
   void UpdateWithEncodedData(const size_t encoded_image_length,
                              const FrameType encoded_image_frametype) override;
-  bool UseLossVectorMask() override { return false; }
+  bool UseLossVectorMask() override;
 
  private:
   enum { kBitrateAverageWinMs = 1000 };
diff --git a/modules/video_coding/h264_sps_pps_tracker.cc b/modules/video_coding/h264_sps_pps_tracker.cc
index d67d827..1122364 100644
--- a/modules/video_coding/h264_sps_pps_tracker.cc
+++ b/modules/video_coding/h264_sps_pps_tracker.cc
@@ -29,6 +29,21 @@
 const uint8_t start_code_h264[] = {0, 0, 0, 1};
 }  // namespace
 
+H264SpsPpsTracker::H264SpsPpsTracker() = default;
+H264SpsPpsTracker::~H264SpsPpsTracker() = default;
+
+H264SpsPpsTracker::PpsInfo::PpsInfo() = default;
+H264SpsPpsTracker::PpsInfo::PpsInfo(PpsInfo&& rhs) = default;
+H264SpsPpsTracker::PpsInfo& H264SpsPpsTracker::PpsInfo::operator=(
+    PpsInfo&& rhs) = default;
+H264SpsPpsTracker::PpsInfo::~PpsInfo() = default;
+
+H264SpsPpsTracker::SpsInfo::SpsInfo() = default;
+H264SpsPpsTracker::SpsInfo::SpsInfo(SpsInfo&& rhs) = default;
+H264SpsPpsTracker::SpsInfo& H264SpsPpsTracker::SpsInfo::operator=(
+    SpsInfo&& rhs) = default;
+H264SpsPpsTracker::SpsInfo::~SpsInfo() = default;
+
 H264SpsPpsTracker::PacketAction H264SpsPpsTracker::CopyAndFixBitstream(
     VCMPacket* packet) {
   RTC_DCHECK(packet->codec == kVideoCodecH264);
diff --git a/modules/video_coding/h264_sps_pps_tracker.h b/modules/video_coding/h264_sps_pps_tracker.h
index 61c548c..45720e6 100644
--- a/modules/video_coding/h264_sps_pps_tracker.h
+++ b/modules/video_coding/h264_sps_pps_tracker.h
@@ -28,6 +28,9 @@
  public:
   enum PacketAction { kInsert, kDrop, kRequestKeyframe };
 
+  H264SpsPpsTracker();
+  ~H264SpsPpsTracker();
+
   PacketAction CopyAndFixBitstream(VCMPacket* packet);
 
   void InsertSpsPpsNalus(const std::vector<uint8_t>& sps,
@@ -35,12 +38,22 @@
 
  private:
   struct PpsInfo {
+    PpsInfo();
+    PpsInfo(PpsInfo&& rhs);
+    PpsInfo& operator=(PpsInfo&& rhs);
+    ~PpsInfo();
+
     int sps_id = -1;
     size_t size = 0;
     std::unique_ptr<uint8_t[]> data;
   };
 
   struct SpsInfo {
+    SpsInfo();
+    SpsInfo(SpsInfo&& rhs);
+    SpsInfo& operator=(SpsInfo&& rhs);
+    ~SpsInfo();
+
     size_t size = 0;
     int width = -1;
     int height = -1;
diff --git a/modules/video_coding/rtp_frame_reference_finder.cc b/modules/video_coding/rtp_frame_reference_finder.cc
index 1251788..7714b29 100644
--- a/modules/video_coding/rtp_frame_reference_finder.cc
+++ b/modules/video_coding/rtp_frame_reference_finder.cc
@@ -31,6 +31,8 @@
       cleared_to_seq_num_(-1),
       frame_callback_(frame_callback) {}
 
+RtpFrameReferenceFinder::~RtpFrameReferenceFinder() = default;
+
 void RtpFrameReferenceFinder::ManageFrame(
     std::unique_ptr<RtpFrameObject> frame) {
   rtc::CritScope lock(&crit_);
diff --git a/modules/video_coding/rtp_frame_reference_finder.h b/modules/video_coding/rtp_frame_reference_finder.h
index f7e2720..09467cb 100644
--- a/modules/video_coding/rtp_frame_reference_finder.h
+++ b/modules/video_coding/rtp_frame_reference_finder.h
@@ -40,6 +40,7 @@
 class RtpFrameReferenceFinder {
  public:
   explicit RtpFrameReferenceFinder(OnCompleteFrameCallback* frame_callback);
+  ~RtpFrameReferenceFinder();
 
   // Manage this frame until:
   //  - We have all information needed to determine its references, after
diff --git a/video/quality_threshold.cc b/video/quality_threshold.cc
index 2b29992..b681ce4 100644
--- a/video/quality_threshold.cc
+++ b/video/quality_threshold.cc
@@ -36,6 +36,8 @@
   RTC_CHECK_LT(low_threshold, high_threshold);
 }
 
+QualityThreshold::~QualityThreshold() = default;
+
 void QualityThreshold::AddMeasurement(int measurement) {
   int prev_val = until_full_ > 0 ? 0 : buffer_[next_index_];
   buffer_[next_index_] = measurement;
diff --git a/video/quality_threshold.h b/video/quality_threshold.h
index 4fad555..a193aa7 100644
--- a/video/quality_threshold.h
+++ b/video/quality_threshold.h
@@ -25,6 +25,7 @@
                    int high_threshold,
                    float fraction,
                    int max_measurements);
+  ~QualityThreshold();
 
   void AddMeasurement(int measurement);
   absl::optional<bool> IsHigh() const;
diff --git a/video/receive_statistics_proxy.cc b/video/receive_statistics_proxy.cc
index dada445..fff3e8e 100644
--- a/video/receive_statistics_proxy.cc
+++ b/video/receive_statistics_proxy.cc
@@ -881,6 +881,8 @@
 ReceiveStatisticsProxy::ContentSpecificStats::ContentSpecificStats()
     : interframe_delay_percentiles(kMaxCommonInterframeDelayMs) {}
 
+ReceiveStatisticsProxy::ContentSpecificStats::~ContentSpecificStats() = default;
+
 void ReceiveStatisticsProxy::ContentSpecificStats::Add(
     const ContentSpecificStats& other) {
   e2e_delay_counter.Add(other.e2e_delay_counter);
diff --git a/video/receive_statistics_proxy.h b/video/receive_statistics_proxy.h
index 2ccfc93..f8afe45 100644
--- a/video/receive_statistics_proxy.h
+++ b/video/receive_statistics_proxy.h
@@ -48,7 +48,7 @@
  public:
   ReceiveStatisticsProxy(const VideoReceiveStream::Config* config,
                          Clock* clock);
-  virtual ~ReceiveStatisticsProxy();
+  ~ReceiveStatisticsProxy() override;
 
   VideoReceiveStream::Stats GetStats() const;
 
@@ -115,6 +115,7 @@
 
   struct ContentSpecificStats {
     ContentSpecificStats();
+    ~ContentSpecificStats();
 
     void Add(const ContentSpecificStats& other);
 
diff --git a/video/rtp_streams_synchronizer.cc b/video/rtp_streams_synchronizer.cc
index e46a220..0ce252e 100644
--- a/video/rtp_streams_synchronizer.cc
+++ b/video/rtp_streams_synchronizer.cc
@@ -43,6 +43,8 @@
   process_thread_checker_.DetachFromThread();
 }
 
+RtpStreamsSynchronizer::~RtpStreamsSynchronizer() = default;
+
 void RtpStreamsSynchronizer::ConfigureSync(Syncable* syncable_audio) {
   rtc::CritScope lock(&crit_);
   if (syncable_audio == syncable_audio_) {
diff --git a/video/rtp_streams_synchronizer.h b/video/rtp_streams_synchronizer.h
index 1a24391..720ea14 100644
--- a/video/rtp_streams_synchronizer.h
+++ b/video/rtp_streams_synchronizer.h
@@ -28,6 +28,7 @@
 class RtpStreamsSynchronizer : public Module {
  public:
   explicit RtpStreamsSynchronizer(Syncable* syncable_video);
+  ~RtpStreamsSynchronizer() override;
 
   void ConfigureSync(Syncable* syncable_audio);
 
diff --git a/video/rtp_video_stream_receiver.h b/video/rtp_video_stream_receiver.h
index 216a768..20463b9 100644
--- a/video/rtp_video_stream_receiver.h
+++ b/video/rtp_video_stream_receiver.h
@@ -69,7 +69,7 @@
       NackSender* nack_sender,
       KeyFrameRequestSender* keyframe_request_sender,
       video_coding::OnCompleteFrameCallback* complete_frame_callback);
-  ~RtpVideoStreamReceiver();
+  ~RtpVideoStreamReceiver() override;
 
   void AddReceiveCodec(const VideoCodec& video_codec,
                        const std::map<std::string, std::string>& codec_params);
diff --git a/video/send_statistics_proxy.cc b/video/send_statistics_proxy.cc
index 2091bad..2ab025a 100644
--- a/video/send_statistics_proxy.cc
+++ b/video/send_statistics_proxy.cc
@@ -155,6 +155,8 @@
     UpdateCodecTypeHistogram(payload_name_);
 }
 
+SendStatisticsProxy::FallbackEncoderInfo::FallbackEncoderInfo() = default;
+
 SendStatisticsProxy::UmaSamplesContainer::UmaSamplesContainer(
     const char* prefix,
     const VideoSendStream::Stats& stats,
diff --git a/video/send_statistics_proxy.h b/video/send_statistics_proxy.h
index 97b4a4a..875348f 100644
--- a/video/send_statistics_proxy.h
+++ b/video/send_statistics_proxy.h
@@ -150,7 +150,7 @@
     int64_t last_ms;
   };
   struct FallbackEncoderInfo {
-    FallbackEncoderInfo() = default;
+    FallbackEncoderInfo();
     bool is_possible = true;
     bool is_active = false;
     int on_off_events = 0;
diff --git a/video/transport_adapter.cc b/video/transport_adapter.cc
index 4a47885..5d6ccc8 100644
--- a/video/transport_adapter.cc
+++ b/video/transport_adapter.cc
@@ -20,6 +20,8 @@
   RTC_DCHECK(nullptr != transport);
 }
 
+TransportAdapter::~TransportAdapter() = default;
+
 bool TransportAdapter::SendRtp(const uint8_t* packet,
                                size_t length,
                                const PacketOptions& options) {
diff --git a/video/transport_adapter.h b/video/transport_adapter.h
index dd9964f..8ec53fd 100644
--- a/video/transport_adapter.h
+++ b/video/transport_adapter.h
@@ -21,6 +21,7 @@
 class TransportAdapter : public Transport {
  public:
   explicit TransportAdapter(Transport* transport);
+  ~TransportAdapter() override;
 
   bool SendRtp(const uint8_t* packet,
                size_t length,
diff --git a/video/video_stream_decoder.h b/video/video_stream_decoder.h
index dd8601a..df2ab9b 100644
--- a/video/video_stream_decoder.h
+++ b/video/video_stream_decoder.h
@@ -47,7 +47,7 @@
       bool enable_fec,
       ReceiveStatisticsProxy* receive_statistics_proxy,
       rtc::VideoSinkInterface<VideoFrame>* incoming_video_stream);
-  ~VideoStreamDecoder();
+  ~VideoStreamDecoder() override;
 
   // Implements VCMReceiveCallback.
   int32_t FrameToRender(VideoFrame& video_frame,