Fix Chromium clang plugin warnings

NOTRY=true
BUG=webrtc:163

Review-Url: https://codereview.webrtc.org/2288153002
Cr-Commit-Position: refs/heads/master@{#13964}
diff --git a/webrtc/modules/audio_processing/BUILD.gn b/webrtc/modules/audio_processing/BUILD.gn
index 349a797..6730fd5 100644
--- a/webrtc/modules/audio_processing/BUILD.gn
+++ b/webrtc/modules/audio_processing/BUILD.gn
@@ -239,11 +239,6 @@
   # TODO(jschuh): Bug 1348: fix this warning.
   configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
 
-  if (is_clang) {
-    # Suppress warnings from the Chromium Clang plugins (bugs.webrtc.org/163).
-    configs -= [ "//build/config/clang:find_bad_constructs" ]
-  }
-
   deps += [
     "../../base:rtc_base_approved",
     "../../common_audio",
diff --git a/webrtc/modules/audio_processing/aec/echo_cancellation.cc b/webrtc/modules/audio_processing/aec/echo_cancellation.cc
index 716da38..c26b1a0 100644
--- a/webrtc/modules/audio_processing/aec/echo_cancellation.cc
+++ b/webrtc/modules/audio_processing/aec/echo_cancellation.cc
@@ -28,6 +28,9 @@
 
 namespace webrtc {
 
+Aec::Aec() = default;
+Aec::~Aec() = default;
+
 // Measured delays [ms]
 // Device                Chrome  GTP
 // MacBook Air           10
diff --git a/webrtc/modules/audio_processing/aec/echo_cancellation.h b/webrtc/modules/audio_processing/aec/echo_cancellation.h
index 8e5e52c..1047113 100644
--- a/webrtc/modules/audio_processing/aec/echo_cancellation.h
+++ b/webrtc/modules/audio_processing/aec/echo_cancellation.h
@@ -65,6 +65,9 @@
 class ApmDataDumper;
 
 typedef struct Aec {
+  Aec();
+  ~Aec();
+
   std::unique_ptr<ApmDataDumper> data_dumper;
 
   int delayCtr;
diff --git a/webrtc/modules/audio_processing/audio_processing_impl.cc b/webrtc/modules/audio_processing/audio_processing_impl.cc
index 011325f..ff475c9 100644
--- a/webrtc/modules/audio_processing/audio_processing_impl.cc
+++ b/webrtc/modules/audio_processing/audio_processing_impl.cc
@@ -278,6 +278,20 @@
   return MaybeInitialize(processing_config);
 }
 
+#ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP
+
+AudioProcessingImpl::ApmDebugDumpThreadState::ApmDebugDumpThreadState()
+    : event_msg(new audioproc::Event()) {}
+
+AudioProcessingImpl::ApmDebugDumpThreadState::~ApmDebugDumpThreadState() {}
+
+AudioProcessingImpl::ApmDebugDumpState::ApmDebugDumpState()
+    : debug_file(FileWrapper::Create()) {}
+
+AudioProcessingImpl::ApmDebugDumpState::~ApmDebugDumpState() {}
+
+#endif  // WEBRTC_AUDIOPROC_DEBUG_DUMP
+
 // Calls InitializeLocked() if any of the audio parameters have changed from
 // their current values (needs to be called while holding the crit_render_lock).
 int AudioProcessingImpl::MaybeInitialize(
@@ -1524,4 +1538,28 @@
 }
 #endif  // WEBRTC_AUDIOPROC_DEBUG_DUMP
 
+AudioProcessingImpl::ApmCaptureState::ApmCaptureState(
+    bool transient_suppressor_enabled,
+    const std::vector<Point>& array_geometry,
+    SphericalPointf target_direction)
+    : aec_system_delay_jumps(-1),
+      delay_offset_ms(0),
+      was_stream_delay_set(false),
+      last_stream_delay_ms(0),
+      last_aec_system_delay_ms(0),
+      stream_delay_jumps(-1),
+      output_will_be_muted(false),
+      key_pressed(false),
+      transient_suppressor_enabled(transient_suppressor_enabled),
+      array_geometry(array_geometry),
+      target_direction(target_direction),
+      fwd_proc_format(kSampleRate16kHz),
+      split_rate(kSampleRate16kHz) {}
+
+AudioProcessingImpl::ApmCaptureState::~ApmCaptureState() = default;
+
+AudioProcessingImpl::ApmRenderState::ApmRenderState() = default;
+
+AudioProcessingImpl::ApmRenderState::~ApmRenderState() = default;
+
 }  // namespace webrtc
diff --git a/webrtc/modules/audio_processing/audio_processing_impl.h b/webrtc/modules/audio_processing/audio_processing_impl.h
index 4b9011d..87e2224 100644
--- a/webrtc/modules/audio_processing/audio_processing_impl.h
+++ b/webrtc/modules/audio_processing/audio_processing_impl.h
@@ -45,7 +45,7 @@
   explicit AudioProcessingImpl(const Config& config);
   // AudioProcessingImpl takes ownership of beamformer.
   AudioProcessingImpl(const Config& config, NonlinearBeamformer* beamformer);
-  virtual ~AudioProcessingImpl();
+  ~AudioProcessingImpl() override;
   int Initialize() override;
   int Initialize(int input_sample_rate_hz,
                  int output_sample_rate_hz,
@@ -133,7 +133,8 @@
 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP
   // State for the debug dump.
   struct ApmDebugDumpThreadState {
-    ApmDebugDumpThreadState() : event_msg(new audioproc::Event()) {}
+    ApmDebugDumpThreadState();
+    ~ApmDebugDumpThreadState();
     std::unique_ptr<audioproc::Event> event_msg;  // Protobuf message.
     std::string event_str;  // Memory for protobuf serialization.
 
@@ -142,7 +143,8 @@
   };
 
   struct ApmDebugDumpState {
-    ApmDebugDumpState() : debug_file(FileWrapper::Create()) {}
+    ApmDebugDumpState();
+    ~ApmDebugDumpState();
     // Number of bytes that can still be written to the log before the maximum
     // size is reached. A value of <= 0 indicates that no limit is used.
     int64_t num_bytes_left_for_log_ = -1;
@@ -287,20 +289,8 @@
   struct ApmCaptureState {
     ApmCaptureState(bool transient_suppressor_enabled,
                     const std::vector<Point>& array_geometry,
-                    SphericalPointf target_direction)
-        : aec_system_delay_jumps(-1),
-          delay_offset_ms(0),
-          was_stream_delay_set(false),
-          last_stream_delay_ms(0),
-          last_aec_system_delay_ms(0),
-          stream_delay_jumps(-1),
-          output_will_be_muted(false),
-          key_pressed(false),
-          transient_suppressor_enabled(transient_suppressor_enabled),
-          array_geometry(array_geometry),
-          target_direction(target_direction),
-          fwd_proc_format(kSampleRate16kHz),
-          split_rate(kSampleRate16kHz) {}
+                    SphericalPointf target_direction);
+    ~ApmCaptureState();
     int aec_system_delay_jumps;
     int delay_offset_ms;
     bool was_stream_delay_set;
@@ -342,6 +332,8 @@
   } capture_nonlocked_;
 
   struct ApmRenderState {
+    ApmRenderState();
+    ~ApmRenderState();
     std::unique_ptr<AudioConverter> render_converter;
     std::unique_ptr<AudioBuffer> render_audio;
   } render_ GUARDED_BY(crit_render_);
diff --git a/webrtc/modules/audio_processing/echo_cancellation_impl.h b/webrtc/modules/audio_processing/echo_cancellation_impl.h
index f67ef7b..0f0945f 100644
--- a/webrtc/modules/audio_processing/echo_cancellation_impl.h
+++ b/webrtc/modules/audio_processing/echo_cancellation_impl.h
@@ -28,7 +28,7 @@
  public:
   EchoCancellationImpl(rtc::CriticalSection* crit_render,
                        rtc::CriticalSection* crit_capture);
-  virtual ~EchoCancellationImpl();
+  ~EchoCancellationImpl() override;
 
   int ProcessRenderAudio(const AudioBuffer* audio);
   int ProcessCaptureAudio(AudioBuffer* audio, int stream_delay_ms);
diff --git a/webrtc/modules/audio_processing/echo_control_mobile_impl.h b/webrtc/modules/audio_processing/echo_control_mobile_impl.h
index 97e2407..791a4d5 100644
--- a/webrtc/modules/audio_processing/echo_control_mobile_impl.h
+++ b/webrtc/modules/audio_processing/echo_control_mobile_impl.h
@@ -29,7 +29,7 @@
   EchoControlMobileImpl(rtc::CriticalSection* crit_render,
                         rtc::CriticalSection* crit_capture);
 
-  virtual ~EchoControlMobileImpl();
+  ~EchoControlMobileImpl() override;
 
   int ProcessRenderAudio(const AudioBuffer* audio);
   int ProcessCaptureAudio(AudioBuffer* audio, int stream_delay_ms);
diff --git a/webrtc/modules/audio_processing/level_controller/signal_classifier.cc b/webrtc/modules/audio_processing/level_controller/signal_classifier.cc
index 4f2d998..c9a07e7 100644
--- a/webrtc/modules/audio_processing/level_controller/signal_classifier.cc
+++ b/webrtc/modules/audio_processing/level_controller/signal_classifier.cc
@@ -93,6 +93,12 @@
 
 }  // namespace
 
+SignalClassifier::FrameExtender::FrameExtender(size_t frame_size,
+                                               size_t extended_frame_size)
+    : x_old_(extended_frame_size - frame_size, 0.f) {}
+
+SignalClassifier::FrameExtender::~FrameExtender() = default;
+
 void SignalClassifier::FrameExtender::ExtendFrame(
     rtc::ArrayView<const float> x,
     rtc::ArrayView<float> x_extended) {
diff --git a/webrtc/modules/audio_processing/level_controller/signal_classifier.h b/webrtc/modules/audio_processing/level_controller/signal_classifier.h
index cfa0fc5..2afa724 100644
--- a/webrtc/modules/audio_processing/level_controller/signal_classifier.h
+++ b/webrtc/modules/audio_processing/level_controller/signal_classifier.h
@@ -37,8 +37,8 @@
  private:
   class FrameExtender {
    public:
-    FrameExtender(size_t frame_size, size_t extended_frame_size)
-        : x_old_(extended_frame_size - frame_size, 0.f) {}
+    FrameExtender(size_t frame_size, size_t extended_frame_size);
+    ~FrameExtender();
 
     void ExtendFrame(rtc::ArrayView<const float> x,
                      rtc::ArrayView<float> x_extended);