Fix style violations in common_types.h and config.h

Mostly, it's about moving constructors and descructors to the .cc
files, so that they won't be inlined everywhere.

The reason this CL is so big is that a lot of code was using
common_types.h without declaring a dependency on webrtc_common, which
broke the build once common_types.h started to depend on
common_types.cc.

BUG=163
R=kjellander@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/26089004

Cr-Commit-Position: refs/heads/master@{#8516}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8516 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/libjingle.gyp b/talk/libjingle.gyp
index e4cb3ed..0c9135c 100755
--- a/talk/libjingle.gyp
+++ b/talk/libjingle.gyp
@@ -377,6 +377,7 @@
       'dependencies': [
         '<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',
         '<(DEPTH)/third_party/usrsctp/usrsctp.gyp:usrsctplib',
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/modules/modules.gyp:video_render_module',
         '<(webrtc_root)/webrtc.gyp:webrtc',
         '<(webrtc_root)/voice_engine/voice_engine.gyp:voice_engine',
diff --git a/talk/libjingle_examples.gyp b/talk/libjingle_examples.gyp
index 6de2d09..374bffb 100755
--- a/talk/libjingle_examples.gyp
+++ b/talk/libjingle_examples.gyp
@@ -75,6 +75,7 @@
         'examples/peerconnection/server/utils.h',
       ],
       'dependencies': [
+        '<(webrtc_root)/common.gyp:webrtc_common',
         'libjingle.gyp:libjingle',
       ],
       # TODO(ronghuawu): crbug.com/167187 fix size_t to int truncations.
diff --git a/talk/libjingle_tests.gyp b/talk/libjingle_tests.gyp
index 5b70088..7451bd7 100755
--- a/talk/libjingle_tests.gyp
+++ b/talk/libjingle_tests.gyp
@@ -192,6 +192,7 @@
       'dependencies': [
         '<(DEPTH)/testing/gmock.gyp:gmock',
         '<(webrtc_root)/base/base_tests.gyp:rtc_base_tests_utils',
+        '<(webrtc_root)/common.gyp:webrtc_common',
         'libjingle.gyp:libjingle',
         'libjingle.gyp:libjingle_p2p',
         'libjingle.gyp:libjingle_peerconnection',
diff --git a/webrtc/BUILD.gn b/webrtc/BUILD.gn
index f4a7096..296d788 100644
--- a/webrtc/BUILD.gn
+++ b/webrtc/BUILD.gn
@@ -240,6 +240,7 @@
 
 source_set("webrtc_common") {
   sources = [
+    "common_types.cc",
     "common_types.h",
     "config.h",
     "config.cc",
@@ -247,12 +248,6 @@
     "typedefs.h",
   ]
 
-  if (is_clang) {
-    # Suppress warnings from Chrome's Clang plugins.
-    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-    configs -= [ "//build/config/clang:find_bad_constructs" ]
-  }
-
   configs += [ ":common_config" ]
   public_configs = [ ":common_inherited_config" ]
 }
diff --git a/webrtc/base/BUILD.gn b/webrtc/base/BUILD.gn
index fb3561b..21235d3 100644
--- a/webrtc/base/BUILD.gn
+++ b/webrtc/base/BUILD.gn
@@ -300,6 +300,8 @@
       "../overrides/webrtc/base/logging.h",
     ]
 
+    deps += [ "..:webrtc_common" ]
+
     if (is_win) {
       sources += [ "../overrides/webrtc/base/win32socketinit.cc" ]
     }
@@ -376,6 +378,8 @@
       "windowpicker.h",
     ]
 
+    deps += [ "..:webrtc_common" ]
+
     if (is_posix) {
       sources += [
         "latebindingsymboltable.cc",
diff --git a/webrtc/base/base.gyp b/webrtc/base/base.gyp
index 06d47c6..42d25bf 100644
--- a/webrtc/base/base.gyp
+++ b/webrtc/base/base.gyp
@@ -59,6 +59,7 @@
       'target_name': 'rtc_base',
       'type': 'static_library',
       'dependencies': [
+        '<(webrtc_root)/common.gyp:webrtc_common',
         'rtc_base_approved',
       ],
       'defines': [
diff --git a/webrtc/common.gyp b/webrtc/common.gyp
index af20655..efffe13 100644
--- a/webrtc/common.gyp
+++ b/webrtc/common.gyp
@@ -12,6 +12,7 @@
       'target_name': 'webrtc_common',
       'type': 'static_library',
       'sources': [
+        'common_types.cc',
         'common_types.h',
         'config.h',
         'config.cc',
diff --git a/webrtc/common_audio/BUILD.gn b/webrtc/common_audio/BUILD.gn
index d3eced6..b3e3ff5 100644
--- a/webrtc/common_audio/BUILD.gn
+++ b/webrtc/common_audio/BUILD.gn
@@ -226,11 +226,5 @@
         "-ffat-lto-objects",
       ]
     }
-
-    if (is_clang) {
-      # Suppress warnings from Chrome's Clang plugins.
-      # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-      configs -= [ "//build/config/clang:find_bad_constructs" ]
-    }
   }
 }
diff --git a/webrtc/common_types.cc b/webrtc/common_types.cc
new file mode 100644
index 0000000..bffc3ee
--- /dev/null
+++ b/webrtc/common_types.cc
@@ -0,0 +1,37 @@
+/*
+ *  Copyright (c) 2012 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 "webrtc/common_types.h"
+
+#include <string.h>
+
+namespace webrtc {
+
+int InStream::Rewind() { return -1; }
+
+int OutStream::Rewind() { return -1; }
+
+StreamDataCounters::StreamDataCounters() : first_packet_time_ms(-1) {}
+
+RTPHeader::RTPHeader()
+    : markerBit(false),
+      payloadType(0),
+      sequenceNumber(0),
+      timestamp(0),
+      ssrc(0),
+      numCSRCs(0),
+      paddingLength(0),
+      headerLength(0),
+      payload_type_frequency(0),
+      extension() {
+  memset(&arrOfCSRCs, 0, sizeof(arrOfCSRCs));
+}
+
+}  // namespace webrtc
diff --git a/webrtc/common_types.h b/webrtc/common_types.h
index 71fbedc..ece5143 100644
--- a/webrtc/common_types.h
+++ b/webrtc/common_types.h
@@ -57,7 +57,7 @@
 {
 public:
     virtual int Read(void *buf, size_t len) = 0;
-    virtual int Rewind() {return -1;}
+    virtual int Rewind();
     virtual ~InStream() {}
 protected:
     InStream() {}
@@ -67,7 +67,7 @@
 {
 public:
     virtual bool Write(const void *buf, size_t len) = 0;
-    virtual int Rewind() {return -1;}
+    virtual int Rewind();
     virtual ~OutStream() {}
 protected:
     OutStream() {}
@@ -809,19 +809,7 @@
 };
 
 struct RTPHeader {
-  RTPHeader()
-      : markerBit(false),
-        payloadType(0),
-        sequenceNumber(0),
-        timestamp(0),
-        ssrc(0),
-        numCSRCs(0),
-        paddingLength(0),
-        headerLength(0),
-        payload_type_frequency(0),
-        extension() {
-    memset(&arrOfCSRCs, 0, sizeof(arrOfCSRCs));
-  }
+  RTPHeader();
 
   bool markerBit;
   uint8_t payloadType;
@@ -870,7 +858,7 @@
 
 // Data usage statistics for a (rtp) stream.
 struct StreamDataCounters {
-  StreamDataCounters() : first_packet_time_ms(-1) {}
+  StreamDataCounters();
 
   void Add(const StreamDataCounters& other) {
     transmitted.Add(other.transmitted);
diff --git a/webrtc/common_video/BUILD.gn b/webrtc/common_video/BUILD.gn
index 2999847..32a9f2c 100644
--- a/webrtc/common_video/BUILD.gn
+++ b/webrtc/common_video/BUILD.gn
@@ -44,7 +44,10 @@
     configs -= [ "//build/config/clang:find_bad_constructs" ]
   }
 
-  deps = [ "../system_wrappers" ]
+  deps = [
+    "..:webrtc_common",
+    "../system_wrappers",
+  ]
 
   if (rtc_build_libyuv) {
     deps += [ "$rtc_libyuv_dir" ]
diff --git a/webrtc/common_video/common_video.gyp b/webrtc/common_video/common_video.gyp
index c45113f..ee04fc7 100644
--- a/webrtc/common_video/common_video.gyp
+++ b/webrtc/common_video/common_video.gyp
@@ -18,6 +18,7 @@
         'libyuv/include',
       ],
       'dependencies': [
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
       ],
       'direct_dependent_settings': {
diff --git a/webrtc/config.cc b/webrtc/config.cc
index 357f636..7b75a68 100644
--- a/webrtc/config.cc
+++ b/webrtc/config.cc
@@ -29,6 +29,17 @@
   return ss.str();
 }
 
+VideoStream::VideoStream()
+    : width(0),
+      height(0),
+      max_framerate(-1),
+      min_bitrate_bps(-1),
+      target_bitrate_bps(-1),
+      max_bitrate_bps(-1),
+      max_qp(-1) {}
+
+VideoStream::~VideoStream() = default;
+
 std::string VideoStream::ToString() const {
   std::stringstream ss;
   ss << "{width: " << width;
@@ -51,6 +62,13 @@
   return ss.str();
 }
 
+VideoEncoderConfig::VideoEncoderConfig()
+    : content_type(kRealtimeVideo),
+      encoder_specific_settings(NULL),
+      min_transmit_bitrate_bps(0) {}
+
+VideoEncoderConfig::~VideoEncoderConfig() = default;
+
 std::string VideoEncoderConfig::ToString() const {
   std::stringstream ss;
 
diff --git a/webrtc/config.h b/webrtc/config.h
index 9f2a7a3..1777937 100644
--- a/webrtc/config.h
+++ b/webrtc/config.h
@@ -56,14 +56,8 @@
 };
 
 struct VideoStream {
-  VideoStream()
-      : width(0),
-        height(0),
-        max_framerate(-1),
-        min_bitrate_bps(-1),
-        target_bitrate_bps(-1),
-        max_bitrate_bps(-1),
-        max_qp(-1) {}
+  VideoStream();
+  ~VideoStream();
   std::string ToString() const;
 
   size_t width;
@@ -95,11 +89,8 @@
     kScreenshare,
   };
 
-  VideoEncoderConfig()
-      : content_type(kRealtimeVideo),
-        encoder_specific_settings(NULL),
-        min_transmit_bitrate_bps(0) {}
-
+  VideoEncoderConfig();
+  ~VideoEncoderConfig();
   std::string ToString() const;
 
   std::vector<VideoStream> streams;
diff --git a/webrtc/libjingle/libjingle.gyp b/webrtc/libjingle/libjingle.gyp
index 37e2511..a54bd20 100644
--- a/webrtc/libjingle/libjingle.gyp
+++ b/webrtc/libjingle/libjingle.gyp
@@ -31,6 +31,7 @@
       'dependencies': [
         '<(talk_root)/libjingle.gyp:libjingle_media',
         '<(webrtc_root)/base/base.gyp:rtc_base',
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/libjingle/xmpp/xmpp.gyp:rtc_xmpp',
         '<(DEPTH)/third_party/expat/expat.gyp:expat',
       ],
diff --git a/webrtc/modules/audio_coding/BUILD.gn b/webrtc/modules/audio_coding/BUILD.gn
index a90f5be..6e280da 100644
--- a/webrtc/modules/audio_coding/BUILD.gn
+++ b/webrtc/modules/audio_coding/BUILD.gn
@@ -72,6 +72,7 @@
     ":neteq",
     ":pcm16b",
     ":red",
+    "../..:webrtc_common",
     "../../common_audio",
     "../../system_wrappers",
   ]
@@ -89,6 +90,7 @@
   ]
   configs += [ "../..:common_config" ]
   public_configs = [ "../..:common_inherited_config" ]
+  deps = [ "../..:webrtc_common" ]
 }
 
 source_set("audio_encoder_interface") {
@@ -98,6 +100,7 @@
   ]
   configs += [ "../..:common_config" ]
   public_configs = [ "../..:common_inherited_config" ]
+  deps = [ "../..:webrtc_common" ]
 }
 
 config("cng_config") {
@@ -439,12 +442,6 @@
     "codecs/isac/main/source/transform.c",
   ]
 
-  if (is_clang) {
-    # Suppress warnings from Chrome's Clang plugins.
-    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-    configs -= [ "//build/config/clang:find_bad_constructs" ]
-  }
-
   if (is_linux) {
     libs = [ "m" ]
   }
@@ -518,12 +515,6 @@
     "codecs/isac/fix/source/transform_tables.c",
   ]
 
-  if (is_clang) {
-    # Suppress warnings from Chrome's Clang plugins.
-    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-    configs -= [ "//build/config/clang:find_bad_constructs" ]
-  }
-
   if (!is_win) {
     defines = [ "WEBRTC_LINUX" ]
   }
@@ -786,6 +777,7 @@
     ":isac",
     ":isacfix",
     ":pcm16b",
+    "../..:webrtc_common",
     "../../common_audio",
     "../../system_wrappers",
     rtc_opus_dir,
diff --git a/webrtc/modules/audio_coding/main/acm2/audio_coding_module.gypi b/webrtc/modules/audio_coding/main/acm2/audio_coding_module.gypi
index 44b6bb7..edbcaa9 100644
--- a/webrtc/modules/audio_coding/main/acm2/audio_coding_module.gypi
+++ b/webrtc/modules/audio_coding/main/acm2/audio_coding_module.gypi
@@ -17,6 +17,7 @@
       'iSACFix',
       'PCM16B',
       'red',
+      '<(webrtc_root)/common.gyp:webrtc_common',
       '<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
       '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
     ],
@@ -37,6 +38,7 @@
       ],
       'dependencies': [
         '<@(audio_coding_dependencies)',
+        '<(webrtc_root)/common.gyp:webrtc_common',
         'neteq',
       ],
       'include_dirs': [
@@ -122,6 +124,7 @@
           'dependencies': [
             'audio_coding_module',
             '<(DEPTH)/testing/gtest.gyp:gtest',
+            '<(webrtc_root)/common.gyp:webrtc_common',
             '<(webrtc_root)/test/test.gyp:test_support',
             '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
             '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default',
@@ -140,6 +143,7 @@
           'dependencies': [
             'audio_coding_module',
             '<(DEPTH)/testing/gtest.gyp:gtest',
+            '<(webrtc_root)/common.gyp:webrtc_common',
             '<(webrtc_root)/test/test.gyp:test_support',
             '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
             '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default',
diff --git a/webrtc/modules/audio_coding/neteq/neteq.gypi b/webrtc/modules/audio_coding/neteq/neteq.gypi
index a301c37..ccf30ee 100644
--- a/webrtc/modules/audio_coding/neteq/neteq.gypi
+++ b/webrtc/modules/audio_coding/neteq/neteq.gypi
@@ -38,6 +38,7 @@
       'type': 'static_library',
       'dependencies': [
         '<@(neteq_dependencies)',
+        '<(webrtc_root)/common.gyp:webrtc_common',
       ],
       'defines': [
         '<@(neteq_defines)',
diff --git a/webrtc/modules/audio_coding/neteq/neteq_tests.gypi b/webrtc/modules/audio_coding/neteq/neteq_tests.gypi
index ed9c84a..e053eb4 100644
--- a/webrtc/modules/audio_coding/neteq/neteq_tests.gypi
+++ b/webrtc/modules/audio_coding/neteq/neteq_tests.gypi
@@ -234,6 +234,7 @@
         'iLBC',
         'iSAC',
         'CNG',
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(DEPTH)/testing/gtest.gyp:gtest',
       ],
       'direct_dependent_settings': {
diff --git a/webrtc/modules/audio_device/BUILD.gn b/webrtc/modules/audio_device/BUILD.gn
index 784c75c..0941223 100644
--- a/webrtc/modules/audio_device/BUILD.gn
+++ b/webrtc/modules/audio_device/BUILD.gn
@@ -178,6 +178,7 @@
   }
 
   deps = [
+    "../..:webrtc_common",
     "../../base:rtc_base_approved",
     "../../common_audio",
     "../../system_wrappers",
diff --git a/webrtc/modules/audio_device/audio_device.gypi b/webrtc/modules/audio_device/audio_device.gypi
index 816a26a..55ae10d 100644
--- a/webrtc/modules/audio_device/audio_device.gypi
+++ b/webrtc/modules/audio_device/audio_device.gypi
@@ -14,6 +14,7 @@
       'dependencies': [
         'webrtc_utility',
         '<(webrtc_root)/base/base.gyp:rtc_base_approved',
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
       ],
diff --git a/webrtc/modules/audio_processing/BUILD.gn b/webrtc/modules/audio_processing/BUILD.gn
index 589b580..03afa08 100644
--- a/webrtc/modules/audio_processing/BUILD.gn
+++ b/webrtc/modules/audio_processing/BUILD.gn
@@ -126,7 +126,7 @@
   public_configs = [ "../..:common_inherited_config" ]
 
   defines = []
-  deps = []
+  deps = [ "../..:webrtc_common" ]
 
   if (aec_debug_dump) {
     defines += [ "WEBRTC_AEC_DEBUG_DUMP" ]
diff --git a/webrtc/modules/audio_processing/audio_processing.gypi b/webrtc/modules/audio_processing/audio_processing.gypi
index 3feb9d0..1a264bc 100644
--- a/webrtc/modules/audio_processing/audio_processing.gypi
+++ b/webrtc/modules/audio_processing/audio_processing.gypi
@@ -26,6 +26,7 @@
       },
       'dependencies': [
         '<(webrtc_root)/base/base.gyp:rtc_base_approved',
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
         '<(webrtc_root)/modules/modules.gyp:iSAC',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
diff --git a/webrtc/modules/media_file/BUILD.gn b/webrtc/modules/media_file/BUILD.gn
index 1394d67..9cb15ff 100644
--- a/webrtc/modules/media_file/BUILD.gn
+++ b/webrtc/modules/media_file/BUILD.gn
@@ -44,6 +44,7 @@
   }
 
   deps = [
+    "../..:webrtc_common",
     "../../system_wrappers",
     "../../common_audio",
   ]
diff --git a/webrtc/modules/media_file/media_file.gypi b/webrtc/modules/media_file/media_file.gypi
index 31875b6..6ff96e1 100644
--- a/webrtc/modules/media_file/media_file.gypi
+++ b/webrtc/modules/media_file/media_file.gypi
@@ -12,6 +12,7 @@
       'target_name': 'media_file',
       'type': 'static_library',
       'dependencies': [
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
         '<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
       ],
diff --git a/webrtc/modules/modules.gyp b/webrtc/modules/modules.gyp
index 8478946..3a2f3e7 100644
--- a/webrtc/modules/modules.gyp
+++ b/webrtc/modules/modules.gyp
@@ -79,6 +79,7 @@
             '<(DEPTH)/testing/gmock.gyp:gmock',
             '<(DEPTH)/testing/gtest.gyp:gtest',
             '<(DEPTH)/third_party/gflags/gflags.gyp:gflags',
+            '<(webrtc_root)/common.gyp:webrtc_common',
             '<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
             '<(webrtc_root)/modules/modules.gyp:video_capture',
             '<(webrtc_root)/modules/video_coding/codecs/vp8/vp8.gyp:webrtc_vp8',
@@ -361,6 +362,7 @@
           'type': '<(gtest_target_type)',
           'dependencies': [
             '<(DEPTH)/testing/gtest.gyp:gtest',
+            '<(webrtc_root)/common.gyp:webrtc_common',
             '<(webrtc_root)/common_video/common_video.gyp:common_video',
             '<(webrtc_root)/modules/video_coding/codecs/vp8/vp8.gyp:webrtc_vp8',
             '<(webrtc_root)/modules/video_coding/codecs/vp9/vp9.gyp:webrtc_vp9',
diff --git a/webrtc/modules/remote_bitrate_estimator/BUILD.gn b/webrtc/modules/remote_bitrate_estimator/BUILD.gn
index d728500..fe06c6d 100644
--- a/webrtc/modules/remote_bitrate_estimator/BUILD.gn
+++ b/webrtc/modules/remote_bitrate_estimator/BUILD.gn
@@ -18,6 +18,7 @@
 
   deps = [
     ":rbe_components",
+    "../..:webrtc_common",
     "../../system_wrappers",
   ]
 }
@@ -42,6 +43,7 @@
 
   configs += [ "../..:common_config" ]
   public_configs = [ "../..:common_inherited_config" ]
+  deps = [ "../..:webrtc_common" ]
 
   if (is_clang) {
     # Suppress warnings from Chrome's Clang plugins.
diff --git a/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator.gypi b/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator.gypi
index fd19898..84e8324 100644
--- a/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator.gypi
+++ b/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator.gypi
@@ -15,6 +15,7 @@
       'target_name': 'remote_bitrate_estimator',
       'type': 'static_library',
       'dependencies': [
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
       ],
       'sources': [
diff --git a/webrtc/modules/rtp_rtcp/BUILD.gn b/webrtc/modules/rtp_rtcp/BUILD.gn
index f343e09..528637f 100644
--- a/webrtc/modules/rtp_rtcp/BUILD.gn
+++ b/webrtc/modules/rtp_rtcp/BUILD.gn
@@ -104,6 +104,7 @@
   }
 
   deps = [
+    "../..:webrtc_common",
     "../../system_wrappers",
     "../pacing",
     "../remote_bitrate_estimator",
diff --git a/webrtc/modules/utility/BUILD.gn b/webrtc/modules/utility/BUILD.gn
index c1de77e..2cb290f 100644
--- a/webrtc/modules/utility/BUILD.gn
+++ b/webrtc/modules/utility/BUILD.gn
@@ -40,6 +40,7 @@
   }
 
   deps = [
+    "../..:webrtc_common",
     "../../common_audio",
     "../../system_wrappers",
     "../audio_coding",
diff --git a/webrtc/modules/video_capture/BUILD.gn b/webrtc/modules/video_capture/BUILD.gn
index a924ecd..b7e9d30 100644
--- a/webrtc/modules/video_capture/BUILD.gn
+++ b/webrtc/modules/video_capture/BUILD.gn
@@ -27,6 +27,7 @@
   ]
 
   deps = [
+    "../..:webrtc_common",
     "../../common_video",
     "../../system_wrappers",
     "../utility",
@@ -87,6 +88,7 @@
         "linux/video_capture_linux.cc",
         "linux/video_capture_linux.h",
       ]
+      deps += [ "../..:webrtc_common" ]
     }
     if (is_mac) {
       sources = [
diff --git a/webrtc/modules/video_capture/video_capture.gypi b/webrtc/modules/video_capture/video_capture.gypi
index ac3a9f1..3c9b93c 100644
--- a/webrtc/modules/video_capture/video_capture.gypi
+++ b/webrtc/modules/video_capture/video_capture.gypi
@@ -17,6 +17,7 @@
       'type': 'static_library',
       'dependencies': [
         'webrtc_utility',
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/common_video/common_video.gyp:common_video',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
       ],
@@ -55,6 +56,7 @@
           'type': 'static_library',
           'dependencies': [
             'video_capture_module',
+            '<(webrtc_root)/common.gyp:webrtc_common',
           ],
           'conditions': [
             ['OS=="linux"', {
diff --git a/webrtc/modules/video_coding/BUILD.gn b/webrtc/modules/video_coding/BUILD.gn
index 353eca2..b10b528 100644
--- a/webrtc/modules/video_coding/BUILD.gn
+++ b/webrtc/modules/video_coding/BUILD.gn
@@ -85,6 +85,7 @@
     ":webrtc_i420",
     ":webrtc_vp8",
     ":webrtc_vp9",
+    "../..:webrtc_common",
     "../../common_video",
     "../../system_wrappers",
   ]
@@ -170,6 +171,7 @@
 
   deps = [
     ":video_coding_utility",
+    "../..:webrtc_common",
     "../../common_video",
     "../../system_wrappers",
   ]
diff --git a/webrtc/modules/video_coding/codecs/tools/video_codecs_tools.gypi b/webrtc/modules/video_coding/codecs/tools/video_codecs_tools.gypi
index f7ad56e..53dc8e6 100644
--- a/webrtc/modules/video_coding/codecs/tools/video_codecs_tools.gypi
+++ b/webrtc/modules/video_coding/codecs/tools/video_codecs_tools.gypi
@@ -17,6 +17,7 @@
             'video_codecs_test_framework',
             'webrtc_video_coding',
             '<(DEPTH)/third_party/gflags/gflags.gyp:gflags',
+            '<(webrtc_root)/common.gyp:webrtc_common',
             '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default',
             '<(webrtc_root)/test/metrics.gyp:metrics',
             '<(webrtc_vp8_dir)/vp8.gyp:webrtc_vp8',
diff --git a/webrtc/modules/video_coding/codecs/vp8/vp8.gyp b/webrtc/modules/video_coding/codecs/vp8/vp8.gyp
index 3401f48..c92509c 100644
--- a/webrtc/modules/video_coding/codecs/vp8/vp8.gyp
+++ b/webrtc/modules/video_coding/codecs/vp8/vp8.gyp
@@ -15,6 +15,7 @@
       'target_name': 'webrtc_vp8',
       'type': 'static_library',
       'dependencies': [
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/common_video/common_video.gyp:common_video',
         '<(webrtc_root)/modules/video_coding/utility/video_coding_utility.gyp:video_coding_utility',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
diff --git a/webrtc/modules/video_coding/video_coding_test.gypi b/webrtc/modules/video_coding/video_coding_test.gypi
index c990c3a..07ebdff 100644
--- a/webrtc/modules/video_coding/video_coding_test.gypi
+++ b/webrtc/modules/video_coding/video_coding_test.gypi
@@ -17,6 +17,7 @@
          'webrtc_utility',
          '<(DEPTH)/testing/gtest.gyp:gtest',
          '<(DEPTH)/third_party/gflags/gflags.gyp:gflags',
+         '<(webrtc_root)/common.gyp:webrtc_common',
          '<(webrtc_root)/test/test.gyp:test_support',
          '<(webrtc_root)/test/metrics.gyp:metrics',
          '<(webrtc_root)/common_video/common_video.gyp:common_video',
diff --git a/webrtc/modules/video_render/BUILD.gn b/webrtc/modules/video_render/BUILD.gn
index 4112c05..1e3e3e5 100644
--- a/webrtc/modules/video_render/BUILD.gn
+++ b/webrtc/modules/video_render/BUILD.gn
@@ -23,6 +23,7 @@
   ]
 
   deps = [
+    "../..:webrtc_common",
     "../../common_video",
     "../../system_wrappers",
     "../utility",
@@ -87,6 +88,8 @@
         "linux/video_x11_render.h",
       ]
 
+      deps += [ "../..:webrtc_common" ]
+
       libs += [ "Xext" ]
     }
     if (is_mac) {
@@ -160,6 +163,8 @@
         "ios/video_render_ios_view.mm",
       ]
 
+      deps += [ "../..:webrtc_common" ]
+
       cflags += [ "-fobjc-arc" ]  # CLANG_ENABLE_OBJC_ARC = YES.
     }
 
diff --git a/webrtc/modules/video_render/video_render.gypi b/webrtc/modules/video_render/video_render.gypi
index ba37005..12ef354 100644
--- a/webrtc/modules/video_render/video_render.gypi
+++ b/webrtc/modules/video_render/video_render.gypi
@@ -17,6 +17,7 @@
       'type': 'static_library',
       'dependencies': [
         'webrtc_utility',
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/common_video/common_video.gyp:common_video',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
       ],
@@ -56,6 +57,7 @@
           'target_name': 'video_render_module_internal_impl',
           'type': 'static_library',
           'dependencies': [
+            '<(webrtc_root)/common.gyp:webrtc_common',
             'video_render_module',
           ],
           'sources': [
@@ -163,6 +165,7 @@
           'dependencies': [
             'video_render_module_internal_impl',
             'webrtc_utility',
+            '<(webrtc_root)/common.gyp:webrtc_common',
             '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
             '<(webrtc_root)/common_video/common_video.gyp:common_video',
           ],
diff --git a/webrtc/p2p/p2p.gyp b/webrtc/p2p/p2p.gyp
index 3f09376..d33efef 100644
--- a/webrtc/p2p/p2p.gyp
+++ b/webrtc/p2p/p2p.gyp
@@ -14,6 +14,7 @@
       'type': 'static_library',
       'dependencies': [
         '<(webrtc_root)/base/base.gyp:rtc_base',
+        '<(webrtc_root)/common.gyp:webrtc_common',
       ],
       'cflags_cc!': [
         '-Wnon-virtual-dtor',
diff --git a/webrtc/system_wrappers/BUILD.gn b/webrtc/system_wrappers/BUILD.gn
index 805f07f..208c9ef 100644
--- a/webrtc/system_wrappers/BUILD.gn
+++ b/webrtc/system_wrappers/BUILD.gn
@@ -101,12 +101,6 @@
 
   configs += [ "..:common_config" ]
 
-  if (is_clang) {
-    # Suppress warnings from Chrome's Clang plugins.
-    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-    configs -= [ "//build/config/clang:find_bad_constructs" ]
-  }
-
   public_configs = [
     "..:common_inherited_config",
   ]
@@ -119,7 +113,7 @@
 
   defines = []
   libs = []
-  deps = []
+  deps = [ "..:webrtc_common" ]
 
   if (rtc_use_direct_trace) {
     defines += [ "WEBRTC_DIRECT_TRACE" ]
@@ -198,12 +192,6 @@
   configs += [ "..:common_config" ]
   public_configs = [ "..:common_inherited_config" ]
 
-  if (is_clang) {
-    # Suppress warnings from Chrome's Clang plugins.
-    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-    configs -= [ "//build/config/clang:find_bad_constructs" ]
-  }
-
   deps = [
     ":system_wrappers",
   ]
@@ -217,12 +205,6 @@
   configs += [ "..:common_config" ]
   public_configs = [ "..:common_inherited_config" ]
 
-  if (is_clang) {
-    # Suppress warnings from Chrome's Clang plugins.
-    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-    configs -= [ "//build/config/clang:find_bad_constructs" ]
-  }
-
   deps = [
     ":system_wrappers",
   ]
@@ -233,12 +215,6 @@
   configs += [ "..:common_config" ]
   public_configs = [ "..:common_inherited_config" ]
 
-  if (is_clang) {
-    # Suppress warnings from Chrome's Clang plugins.
-    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-    configs -= [ "//build/config/clang:find_bad_constructs" ]
-  }
-
   deps = [
     ":field_trial_default",
     ":metrics_default",
diff --git a/webrtc/system_wrappers/system_wrappers.gyp b/webrtc/system_wrappers/system_wrappers.gyp
index 3ee6fa4..0ec3a32 100644
--- a/webrtc/system_wrappers/system_wrappers.gyp
+++ b/webrtc/system_wrappers/system_wrappers.gyp
@@ -13,6 +13,7 @@
       'target_name': 'system_wrappers',
       'type': 'static_library',
       'dependencies': [
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '../base/base.gyp:rtc_base_approved',
       ],
       'sources': [
diff --git a/webrtc/test/BUILD.gn b/webrtc/test/BUILD.gn
index 870404e..fa251d6 100644
--- a/webrtc/test/BUILD.gn
+++ b/webrtc/test/BUILD.gn
@@ -25,17 +25,12 @@
   ]
 
   deps = [
+    "..:webrtc_common",
     "../system_wrappers",
   ]
 
   configs += [ "..:common_config" ]
   public_configs = [ "..:common_inherited_config"]
-
-  if (is_clang) {
-    # Suppress warnings from Chrome's Clang plugins.
-    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-    configs -= [ "//build/config/clang:find_bad_constructs" ]
-  }
 }
 
 source_set("test_support") {
@@ -72,12 +67,6 @@
 
   configs += [ "..:common_config" ]
   public_configs = [ "..:common_inherited_config"]
-
-  if (is_clang) {
-    # Suppress warnings from Chrome's Clang plugins.
-    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-    configs -= [ "//build/config/clang:find_bad_constructs" ]
-  }
 }
 
 source_set("test_support_main") {
@@ -100,10 +89,4 @@
 
   configs += [ "..:common_config" ]
   public_configs = [ "..:common_inherited_config"]
-
-  if (is_clang) {
-    # Suppress warnings from Chrome's Clang plugins.
-    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-    configs -= [ "//build/config/clang:find_bad_constructs" ]
-  }
 }
diff --git a/webrtc/test/test.gyp b/webrtc/test/test.gyp
index 83f2316..ce0045b 100644
--- a/webrtc/test/test.gyp
+++ b/webrtc/test/test.gyp
@@ -17,6 +17,7 @@
       'type': 'static_library',
       'dependencies': [
         '<(DEPTH)/testing/gtest.gyp:gtest',
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
       ],
       'sources': [
@@ -64,6 +65,7 @@
         'rtp_file_writer.h',
       ],
       'dependencies': [
+        '<(DEPTH)/webrtc/common.gyp:webrtc_common',
         '<(DEPTH)/testing/gtest.gyp:gtest',
         '<(webrtc_root)/modules/modules.gyp:rtp_rtcp',
       ],
@@ -76,6 +78,7 @@
         'field_trial.h',
       ],
       'dependencies': [
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
       ],
     },
diff --git a/webrtc/test/webrtc_test_common.gyp b/webrtc/test/webrtc_test_common.gyp
index 0020fc6..bb6224e 100644
--- a/webrtc/test/webrtc_test_common.gyp
+++ b/webrtc/test/webrtc_test_common.gyp
@@ -57,6 +57,7 @@
         '<(DEPTH)/testing/gtest.gyp:gtest',
         '<(DEPTH)/third_party/gflags/gflags.gyp:gflags',
         '<(webrtc_root)/base/base.gyp:rtc_base',
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/modules/modules.gyp:media_file',
         '<(webrtc_root)/modules/modules.gyp:video_render',
         '<(webrtc_root)/test/test.gyp:frame_generator',
diff --git a/webrtc/video/BUILD.gn b/webrtc/video/BUILD.gn
index df9b20d..ee55105 100644
--- a/webrtc/video/BUILD.gn
+++ b/webrtc/video/BUILD.gn
@@ -34,6 +34,9 @@
     configs -= [ "//build/config/clang:find_bad_constructs" ]
   }
 
-  deps = [ "../video_engine:video_engine_core" ]
+  deps = [
+    "..:webrtc_common",
+    "../video_engine:video_engine_core",
+  ]
 }
 
diff --git a/webrtc/video_engine/BUILD.gn b/webrtc/video_engine/BUILD.gn
index 2f75b94..2e49641 100644
--- a/webrtc/video_engine/BUILD.gn
+++ b/webrtc/video_engine/BUILD.gn
@@ -109,6 +109,7 @@
   }
 
   deps = [
+    "..:webrtc_common",
     "../common_video",
     "../modules/bitrate_controller",
     "../modules/rtp_rtcp",
diff --git a/webrtc/video_engine/test/auto_test/vie_auto_test.gypi b/webrtc/video_engine/test/auto_test/vie_auto_test.gypi
index b72dfcc..e52b301 100644
--- a/webrtc/video_engine/test/auto_test/vie_auto_test.gypi
+++ b/webrtc/video_engine/test/auto_test/vie_auto_test.gypi
@@ -12,6 +12,7 @@
       'target_name': 'vie_auto_test',
       'type': 'executable',
       'dependencies': [
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default',
         '<(webrtc_root)/modules/modules.gyp:video_capture_module_internal_impl',
diff --git a/webrtc/video_engine/test/libvietest/libvietest.gypi b/webrtc/video_engine/test/libvietest/libvietest.gypi
index 10b3b0e..603cd4b 100644
--- a/webrtc/video_engine/test/libvietest/libvietest.gypi
+++ b/webrtc/video_engine/test/libvietest/libvietest.gypi
@@ -11,6 +11,7 @@
       'target_name': 'libvietest',
       'type': 'static_library',
       'dependencies': [
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
         '<(DEPTH)/testing/gtest.gyp:gtest',
         '<(webrtc_root)/test/test.gyp:test_support',
diff --git a/webrtc/video_engine/video_engine_core.gypi b/webrtc/video_engine/video_engine_core.gypi
index 02726fb..4dd8614 100644
--- a/webrtc/video_engine/video_engine_core.gypi
+++ b/webrtc/video_engine/video_engine_core.gypi
@@ -12,6 +12,7 @@
       'target_name': 'video_engine_core',
       'type': 'static_library',
       'dependencies': [
+        '<(webrtc_root)/common.gyp:webrtc_common',
 
         # common_video
        '<(webrtc_root)/common_video/common_video.gyp:common_video',
diff --git a/webrtc/voice_engine/BUILD.gn b/webrtc/voice_engine/BUILD.gn
index 54da9ad..c55dc8e 100644
--- a/webrtc/voice_engine/BUILD.gn
+++ b/webrtc/voice_engine/BUILD.gn
@@ -96,6 +96,7 @@
   }
 
   deps = [
+    "..:webrtc_common",
     "../common_audio",
     "../modules/audio_coding",
     "../modules/audio_conference_mixer",
diff --git a/webrtc/voice_engine/voice_engine.gyp b/webrtc/voice_engine/voice_engine.gyp
index 3ec870d..c6f3619 100644
--- a/webrtc/voice_engine/voice_engine.gyp
+++ b/webrtc/voice_engine/voice_engine.gyp
@@ -15,6 +15,7 @@
       'target_name': 'voice_engine',
       'type': 'static_library',
       'dependencies': [
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
         '<(webrtc_root)/modules/modules.gyp:audio_coding_module',
         '<(webrtc_root)/modules/modules.gyp:audio_conference_mixer',
diff --git a/webrtc/webrtc_examples.gyp b/webrtc/webrtc_examples.gyp
index ad6844d..69c83dc 100644
--- a/webrtc/webrtc_examples.gyp
+++ b/webrtc/webrtc_examples.gyp
@@ -16,6 +16,7 @@
           'type': 'loadable_module',
           'dependencies': [
             '<(DEPTH)/third_party/icu/icu.gyp:icuuc',
+            '<(webrtc_root)/common.gyp:webrtc_common',
             '<(webrtc_root)/modules/modules.gyp:video_capture_module_internal_impl',
             '<(webrtc_root)/modules/modules.gyp:video_render_module_internal_impl',
             '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default',
diff --git a/webrtc/webrtc_tests.gypi b/webrtc/webrtc_tests.gypi
index 1e79db1..835062d 100644
--- a/webrtc/webrtc_tests.gypi
+++ b/webrtc/webrtc_tests.gypi
@@ -146,6 +146,7 @@
       'dependencies': [
         '<(DEPTH)/testing/gmock.gyp:gmock',
         '<(DEPTH)/testing/gtest.gyp:gtest',
+        '<(webrtc_root)/common.gyp:webrtc_common',
         '<(webrtc_root)/modules/modules.gyp:rtp_rtcp',
         '<(webrtc_root)/modules/modules.gyp:video_capture',
         '<(webrtc_root)/modules/modules.gyp:video_render',