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"