Reland "Force Chromium deps on the WebRTC component."

This is a reland of 53e157d25ce78ba6cd8625b0b655b46f8e1b0a91

The issue has been fixed in
https://chromium-review.googlesource.com/c/chromium/src/+/1917204.

Original change's description:
> Force Chromium deps on the WebRTC component.
>
> This CL adds a visibility check to the rtc_* GN templates in order
> to force Chromium to depend only on publicly visible targets from
> //third_party/webrtc_overrides and not from //third_party/webrtc.
>
> This is required in order to ensure that the Chromium's component
> builds continues to work correctly without introducing direct
> dependency paths on WebRTC that would statically link it in multiple
> shared libraries.
>
> Bug: webrtc:9419
> Change-Id: Ib89f4fc571512f99678ee4f61696b316374346d9
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154344
> Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
> Reviewed-by: Dirk Pranke <dpranke@chromium.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29806}

TBR: kwiberg@webrtc.org
Bug: webrtc:9419
Change-Id: I7123d1b44ddbc23b11d9fa25aa39aa420359e33d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159922
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29816}
diff --git a/api/task_queue/BUILD.gn b/api/task_queue/BUILD.gn
index 7d44977..00be784 100644
--- a/api/task_queue/BUILD.gn
+++ b/api/task_queue/BUILD.gn
@@ -39,6 +39,15 @@
 
   check_includes = false  # no-presubmit-check TODO(bugs.webrtc.org/9419)
   if (build_with_chromium) {
+    visibility = []
+    visibility = webrtc_default_visibility
+    visibility += [
+      # This is the only Chromium target that can depend on this. The reason
+      # behind this is the fact that this is a 'testonly' target and as such
+      # it cannot be part of the WebRTC component.
+      "//third_party/blink/renderer/platform:blink_platform_unittests_sources",
+    ]
+
     # Don't depend on WebRTC code outside of webrtc_overrides:webrtc_component
     # because this will break the WebRTC component build in Chromium.
     deps = [
diff --git a/webrtc.gni b/webrtc.gni
index 4e0f364..ec0ca54 100644
--- a/webrtc.gni
+++ b/webrtc.gni
@@ -471,6 +471,21 @@
       }
     }
 
+    # Chromium should only depend on the WebRTC component in order to
+    # avoid to statically link WebRTC in a component build.
+    if (build_with_chromium) {
+      publicly_visible = false
+      foreach(v, visibility) {
+        if (v == "*") {
+          publicly_visible = true
+        }
+      }
+      if (publicly_visible) {
+        visibility = []
+        visibility = webrtc_default_visibility
+      }
+    }
+
     if (!defined(testonly) || !testonly) {
       configs += rtc_prod_configs
     }
@@ -643,6 +658,21 @@
       }
     }
 
+    # Chromium should only depend on the WebRTC component in order to
+    # avoid to statically link WebRTC in a component build.
+    if (build_with_chromium) {
+      publicly_visible = false
+      foreach(v, visibility) {
+        if (v == "*") {
+          publicly_visible = true
+        }
+      }
+      if (publicly_visible) {
+        visibility = []
+        visibility = webrtc_default_visibility
+      }
+    }
+
     if (!defined(testonly) || !testonly) {
       configs += rtc_prod_configs
     }