From 1475ed4fb72b6d52bb02b84abd1a6dc69e293b2f Mon Sep 17 00:00:00 2001
From: Craig Tiller <ctiller@google.com>
Date: Wed, 4 May 2022 13:20:09 -0700
Subject: [PATCH] [iwyu] json (#29536)

* [iwyu] json

* fix

* Automated change: Fix sanity tests

* Automated change: Fix sanity tests

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
---
 BUILD                              |  1 +
 src/core/lib/json/json.h           |  1 +
 src/core/lib/json/json_reader.cc   | 10 +++++++++-
 src/core/lib/json/json_util.cc     |  3 +++
 src/core/lib/json/json_util.h      | 10 ++++++++++
 src/core/lib/json/json_writer.cc   |  7 ++++++-
 tools/dockerfile/grpc_iwyu/iwyu.sh |  1 +
 7 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/BUILD b/BUILD
index e56a3b38364..7249d87a004 100644
--- a/BUILD
+++ b/BUILD
@@ -5198,6 +5198,7 @@ grpc_cc_library(
         "src/core/lib/json/json.h",
     ],
     external_deps = [
+        "absl/base:core_headers",
         "absl/strings",
         "absl/strings:str_format",
     ],
diff --git a/src/core/lib/json/json.h b/src/core/lib/json/json.h
index fc09d3a7255..9f0e98815c4 100644
--- a/src/core/lib/json/json.h
+++ b/src/core/lib/json/json.h
@@ -25,6 +25,7 @@
 
 #include <map>
 #include <string>
+#include <utility>
 #include <vector>
 
 #include "absl/strings/string_view.h"
diff --git a/src/core/lib/json/json_reader.cc b/src/core/lib/json/json_reader.cc
index bdd749fbd88..a47b448aa07 100644
--- a/src/core/lib/json/json_reader.cc
+++ b/src/core/lib/json/json_reader.cc
@@ -18,15 +18,23 @@
 
 #include <grpc/support/port_platform.h>
 
-#include <string.h>
+#include <inttypes.h>
+#include <stdlib.h>
 
+#include <algorithm>
+#include <map>
 #include <string>
+#include <utility>
+#include <vector>
 
+#include "absl/base/attributes.h"
 #include "absl/strings/str_cat.h"
 #include "absl/strings/str_format.h"
+#include "absl/strings/string_view.h"
 
 #include <grpc/support/log.h>
 
+#include "src/core/lib/iomgr/error.h"
 #include "src/core/lib/json/json.h"
 
 #define GRPC_JSON_MAX_DEPTH 255
diff --git a/src/core/lib/json/json_util.cc b/src/core/lib/json/json_util.cc
index 168070bd08a..758e51e93d4 100644
--- a/src/core/lib/json/json_util.cc
+++ b/src/core/lib/json/json_util.cc
@@ -20,9 +20,12 @@
 
 #include "src/core/lib/json/json_util.h"
 
+#include <string.h>
+
 #include <grpc/support/string_util.h>
 
 #include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gprpp/memory.h"
 
 namespace grpc_core {
 
diff --git a/src/core/lib/json/json_util.h b/src/core/lib/json/json_util.h
index 9582ab21f9e..ae2e6aec35b 100644
--- a/src/core/lib/json/json_util.h
+++ b/src/core/lib/json/json_util.h
@@ -21,9 +21,19 @@
 
 #include <grpc/support/port_platform.h>
 
+#include <algorithm>
+#include <map>
+#include <string>
+#include <type_traits>
+#include <utility>
+#include <vector>
+
 #include "absl/strings/numbers.h"
 #include "absl/strings/str_cat.h"
+#include "absl/strings/string_view.h"
 
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/error.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/json/json.h"
 
diff --git a/src/core/lib/json/json_writer.cc b/src/core/lib/json/json_writer.cc
index 7522802a335..ef85eac6ecd 100644
--- a/src/core/lib/json/json_writer.cc
+++ b/src/core/lib/json/json_writer.cc
@@ -18,8 +18,13 @@
 
 #include <grpc/support/port_platform.h>
 
+#include <stdint.h>
 #include <stdlib.h>
-#include <string.h>
+
+#include <map>
+#include <string>
+#include <utility>
+#include <vector>
 
 #include "absl/strings/string_view.h"
 
diff --git a/tools/dockerfile/grpc_iwyu/iwyu.sh b/tools/dockerfile/grpc_iwyu/iwyu.sh
index 3d5d65f61bf..c5ed2963910 100755
--- a/tools/dockerfile/grpc_iwyu/iwyu.sh
+++ b/tools/dockerfile/grpc_iwyu/iwyu.sh
@@ -32,6 +32,7 @@ export ENABLED_MODULES='
   src/core/lib/avl
   src/core/lib/channel
   src/core/lib/config
+  src/core/lib/json
   src/core/lib/slice
   src/core/lib/resource_quota
   src/core/lib/promise