Enabling 'gn check' on webrtc/sdk

BUG=webrtc:7499

Review-Url: https://codereview.webrtc.org/2818433003
Cr-Commit-Position: refs/heads/master@{#17805}
diff --git a/.gn b/.gn
index edfad1a..1265bc5 100644
--- a/.gn
+++ b/.gn
@@ -33,6 +33,7 @@
   "//webrtc/media/*",
   "//webrtc/modules/*",
   "//webrtc/ortc/*",
+  "//webrtc/sdk/*",
   "//webrtc/stats/*",
   "//webrtc/tools/*",
   "//webrtc/test/*",
diff --git a/webrtc/pc/BUILD.gn b/webrtc/pc/BUILD.gn
index 95c484e..fe9348b 100644
--- a/webrtc/pc/BUILD.gn
+++ b/webrtc/pc/BUILD.gn
@@ -81,7 +81,6 @@
 }
 
 rtc_static_library("libjingle_peerconnection") {
-  check_includes = false  # TODO(kjellander): Remove (bugs.webrtc.org/6828)
   cflags = []
   sources = [
     "audiotrack.cc",
diff --git a/webrtc/sdk/BUILD.gn b/webrtc/sdk/BUILD.gn
index 38c5b68..77a9f55 100644
--- a/webrtc/sdk/BUILD.gn
+++ b/webrtc/sdk/BUILD.gn
@@ -28,14 +28,6 @@
   }
 
   rtc_static_library("rtc_sdk_common_objc") {
-    deps = [
-      "../base:rtc_base",
-    ]
-    configs += [
-      "..:common_objc",
-      "//build/config/compiler:enable_arc",
-    ]
-    public_configs = [ ":rtc_sdk_common_objc_config" ]
     sources = [
       "objc/Framework/Classes/NSString+StdString.h",
       "objc/Framework/Classes/NSString+StdString.mm",
@@ -58,6 +50,14 @@
       "objc/Framework/Headers/WebRTC/RTCSSLAdapter.h",
       "objc/Framework/Headers/WebRTC/RTCTracing.h",
     ]
+    configs += [
+      "..:common_objc",
+      "//build/config/compiler:enable_arc",
+    ]
+    public_configs = [ ":rtc_sdk_common_objc_config" ]
+    deps = [
+      "../base:rtc_base",
+    ]
     if (is_ios) {
       sources += [
         "objc/Framework/Classes/RTCCameraPreviewView.m",
@@ -73,6 +73,7 @@
           "objc/Framework/Classes/Metal/RTCMTLNV12Renderer.mm",
           "objc/Framework/Classes/Metal/RTCMTLVideoView.m",
         ]
+        deps += [ "../api:video_frame_api" ]
       }
 
       libs = [ "AVFoundation.framework" ]
@@ -194,8 +195,22 @@
       "objc/Framework/Headers/WebRTC/RTCVideoTrack.h",
     ]
 
+    configs += [
+      "..:common_objc",
+      "//build/config/compiler:enable_arc",
+    ]
+
+    public_configs = [ ":rtc_sdk_common_objc_config" ]
+
     deps = [
       ":webrtc_h264_video_toolbox",
+      "../api:video_frame_api",
+      "../base:rtc_base",
+      "../base:rtc_base_approved",
+      "../common_video",
+      "../media:rtc_media",
+      "../media:rtc_media_base",
+      "../system_wrappers",
     ]
 
     if (is_ios) {
@@ -230,13 +245,6 @@
       ]
     }
 
-    configs += [
-      "..:common_objc",
-      "//build/config/compiler:enable_arc",
-    ]
-
-    public_configs = [ ":rtc_sdk_common_objc_config" ]
-
     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" ]
@@ -276,11 +284,6 @@
           sources += [ "objc/Framework/Classes/Metal/RTCMTLVideoView.m" ]
         }
       }
-      deps = [
-        ":rtc_sdk_peerconnection_objc",
-        "//third_party/ocmock",
-        "//webrtc/system_wrappers:system_wrappers_default",
-      ]
 
       # TODO(tkchin): Cleanup this warning.
       cflags = [ "-Wno-objc-property-no-attribute" ]
@@ -291,6 +294,13 @@
       ldflags = [ "-ObjC" ]
 
       defines = [ "GTEST_RELATIVE_PATH" ]
+      deps = [
+        ":rtc_sdk_peerconnection_objc",
+        "../base:rtc_base_tests_utils",
+        "//third_party/ocmock",
+        "//webrtc/system_wrappers:system_wrappers_default",
+      ]
+
       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" ]
@@ -358,6 +368,13 @@
         "@rpath/$output_name.framework/$output_name",
       ]
 
+      configs += [
+        "..:common_objc",
+        "//build/config/compiler:enable_arc",
+      ]
+
+      public_configs = [ ":rtc_sdk_common_objc_config" ]
+
       deps = [
         ":rtc_sdk_peerconnection_objc",
         "../system_wrappers:field_trial_default",
@@ -373,13 +390,6 @@
         "VideoToolbox.framework",
       ]
 
-      configs += [
-        "..:common_objc",
-        "//build/config/compiler:enable_arc",
-      ]
-
-      public_configs = [ ":rtc_sdk_common_objc_config" ]
-
       if (!build_with_chromium && is_clang) {
         # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163)
         configs -= [ "//build/config/clang:find_bad_constructs" ]
@@ -413,6 +423,13 @@
 
     deps = [
       ":rtc_sdk_common_objc",
+      "../api:video_frame_api",
+      "../base:rtc_base_approved",
+      "../common_video",
+      "../media:rtc_media_base",
+      "../modules/video_coding:video_coding_utility",
+      "../modules/video_coding:webrtc_h264",
+      "../system_wrappers",
     ]
 
     libs = [
diff --git a/webrtc/sdk/android/BUILD.gn b/webrtc/sdk/android/BUILD.gn
index a913722..c3a20d7 100644
--- a/webrtc/sdk/android/BUILD.gn
+++ b/webrtc/sdk/android/BUILD.gn
@@ -69,6 +69,19 @@
   }
 
   deps = [
+    "../..:webrtc_common",
+    "../../api:video_frame_api",
+    "../../api/video_codecs:video_codecs_api",
+    "../../base:rtc_base",
+    "../../base:rtc_base_approved",
+    "../../base:rtc_task_queue",
+    "../../common_video:common_video",
+    "../../media:rtc_media",
+    "../../media:rtc_media_base",
+    "../../modules/utility:utility",
+    "../../modules/video_coding:video_coding_utility",
+    "../../system_wrappers:system_wrappers",
+    "../../voice_engine:voice_engine",
     "//webrtc/pc:libjingle_peerconnection",
   ]
 
@@ -91,6 +104,8 @@
   configs += [ ":libjingle_peerconnection_jni_warnings_config" ]
 
   deps = [
+    ":libjingle_peerconnection_jni",
+    "../../system_wrappers",
     "//webrtc/pc:libjingle_peerconnection",
     "//webrtc/system_wrappers:field_trial_default",
     "//webrtc/system_wrappers:metrics_default",
@@ -108,6 +123,7 @@
   deps = [
     ":libjingle_peerconnection_jni",
     ":libjingle_peerconnection_metrics_default_jni",
+    "../../base:rtc_base",
     "//webrtc/pc:libjingle_peerconnection",
   ]
   output_extension = "so"
diff --git a/webrtc/sdk/android/src/jni/DEPS b/webrtc/sdk/android/src/jni/DEPS
index 12f35fd..629ad00 100644
--- a/webrtc/sdk/android/src/jni/DEPS
+++ b/webrtc/sdk/android/src/jni/DEPS
@@ -5,4 +5,5 @@
   "+webrtc/modules/utility/include/jvm_android.h",
   "+webrtc/modules/video_coding/utility/vp8_header_parser.h",
   "+webrtc/pc",
+  "+webrtc/system_wrappers/include/field_trial_default.h",
 ]
diff --git a/webrtc/sdk/android/src/jni/peerconnection_jni.cc b/webrtc/sdk/android/src/jni/peerconnection_jni.cc
index ecce13e..c07d58f 100644
--- a/webrtc/sdk/android/src/jni/peerconnection_jni.cc
+++ b/webrtc/sdk/android/src/jni/peerconnection_jni.cc
@@ -74,7 +74,10 @@
 #include "webrtc/sdk/android/src/jni/jni_helpers.h"
 #include "webrtc/sdk/android/src/jni/native_handle_impl.h"
 #include "webrtc/sdk/android/src/jni/rtcstatscollectorcallbackwrapper.h"
-#include "webrtc/system_wrappers/include/field_trial_default.h"
+// Adding 'nogncheck' to disable the gn include headers check.
+// We don't want to depend on 'system_wrappers:field_trial_default' because
+// clients should be able to provide their own implementation.
+#include "webrtc/system_wrappers/include/field_trial_default.h" // nogncheck
 #include "webrtc/system_wrappers/include/logcat_trace_context.h"
 #include "webrtc/system_wrappers/include/trace.h"
 #include "webrtc/voice_engine/include/voe_base.h"
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCFieldTrials.mm b/webrtc/sdk/objc/Framework/Classes/RTCFieldTrials.mm
index 5e1ee0a..28ce541 100644
--- a/webrtc/sdk/objc/Framework/Classes/RTCFieldTrials.mm
+++ b/webrtc/sdk/objc/Framework/Classes/RTCFieldTrials.mm
@@ -14,7 +14,10 @@
 
 #import "WebRTC/RTCLogging.h"
 
-#include "webrtc/system_wrappers/include/field_trial_default.h"
+// Adding 'nogncheck' to disable the gn include headers check.
+// We don't want to depend on 'system_wrappers:field_trial_default' because
+// clients should be able to provide their own implementation.
+#include "webrtc/system_wrappers/include/field_trial_default.h"  // nogncheck
 
 NSString * const kRTCFieldTrialAudioSendSideBweKey = @"WebRTC-Audio-SendSideBwe";
 NSString * const kRTCFieldTrialSendSideBweWithOverheadKey = @"WebRTC-SendSideBwe-WithOverhead";
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCMetricsSampleInfo+Private.h b/webrtc/sdk/objc/Framework/Classes/RTCMetricsSampleInfo+Private.h
index 00d3fa6..609fc74 100644
--- a/webrtc/sdk/objc/Framework/Classes/RTCMetricsSampleInfo+Private.h
+++ b/webrtc/sdk/objc/Framework/Classes/RTCMetricsSampleInfo+Private.h
@@ -10,7 +10,10 @@
 
 #import "WebRTC/RTCMetricsSampleInfo.h"
 
-#include "webrtc/system_wrappers/include/metrics_default.h"
+// Adding 'nogncheck' to disable the gn include headers check.
+// We don't want to depend on 'system_wrappers:metrics_default' because
+// clients should be able to provide their own implementation.
+#include "webrtc/system_wrappers/include/metrics_default.h"  // nogncheck
 
 NS_ASSUME_NONNULL_BEGIN