Make rtc_json poisonous in WebRTC

This does not help the attached bugs, but it does allow greater control
over what JSON code is running where. Long-term, the JSON library used
for parsing configuration should likely be a library already present
in Chromium builds, to avoid duplication. And if that happens, then
WebRTC bug 9804 may be passé.

Note that this CL also sorts our poisons alphabetically.

Bug: chromium:895814, webrtc:9804
Change-Id: I70c3efe05a0eba9212895407f73978d8216df920
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158400
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29615}
diff --git a/BUILD.gn b/BUILD.gn
index a0eda8f..5cef130 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -711,8 +711,11 @@
 group("poison_audio_codecs") {
 }
 
-group("poison_software_video_codecs") {
+group("poison_default_task_queue") {
 }
 
-group("poison_default_task_queue") {
+group("poison_rtc_json") {
+}
+
+group("poison_software_video_codecs") {
 }
diff --git a/api/audio/BUILD.gn b/api/audio/BUILD.gn
index bc68190..9ea145b 100644
--- a/api/audio/BUILD.gn
+++ b/api/audio/BUILD.gn
@@ -52,6 +52,7 @@
 
 rtc_library("aec3_config_json") {
   visibility = [ "*" ]
+  allow_poison = [ "rtc_json" ]
   sources = [
     "echo_canceller3_config_json.cc",
     "echo_canceller3_config_json.h",
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index acd54b9..0115429 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -615,6 +615,7 @@
 
 rtc_library("rtc_json") {
   public_configs = [ ":rtc_json_suppressions" ]
+  poisonous = [ "rtc_json" ]
   defines = []
   sources = [
     "strings/json.cc",
diff --git a/webrtc.gni b/webrtc.gni
index 6033764..4e0f364 100644
--- a/webrtc.gni
+++ b/webrtc.gni
@@ -366,11 +366,14 @@
   # Encoders and decoders for specific audio codecs such as Opus and iSAC.
   "audio_codecs",
 
-  # Software video codecs (VP8 and VP9 through libvpx).
-  "software_video_codecs",
-
   # Default task queue implementation.
   "default_task_queue",
+
+  # JSON parsing should not be needed in the "slim and modular" WebRTC.
+  "rtc_json",
+
+  # Software video codecs (VP8 and VP9 through libvpx).
+  "software_video_codecs",
 ]
 
 absl_include_config = "//third_party/abseil-cpp:absl_include_config"