diff --git a/.gn b/.gn
index 00cb71c3f048e..1c7897a648315 100644
--- a/.gn
+++ b/.gn
@@ -65,7 +65,7 @@ default_args = {
 no_check_targets = [
   "//extensions/browser:*",  # 20 errors
   "//extensions:*",  # 28 errors
-  "//headless:*",  # 167 errors
+  "//headless:*",  # 107 errors
   "//ppapi/proxy:ipc_sources",  # 13 errors
   "//ppapi/thunk:*",  # 1071 errors
   "//remoting/host/security_key:*",  # 10 errors
diff --git a/headless/BUILD.gn b/headless/BUILD.gn
index 2b5bd5a1f7201..f9e3e8b323614 100644
--- a/headless/BUILD.gn
+++ b/headless/BUILD.gn
@@ -264,8 +264,8 @@ inspector_protocol_generate("protocol_sources") {
 # |headless_non_renderer| components.
 source_set("headless_shared_sources") {
   visibility = [
-    "//headless:headless",
-    "//headless:headless_non_renderer",
+    ":headless",
+    ":headless_non_renderer",
   ]
   defines = []
 
@@ -309,10 +309,13 @@ source_set("headless_shared_sources") {
   ]
 
   if (!is_fuchsia) {
-    deps += [ "//components/crash/content/browser" ]
+    deps += [
+      "//components/crash/content/browser",
+      "//components/crash/core/app",
+    ]
   }
-  if (is_component_build && is_win) {
-    deps += [ "//components/crash/core/app:crash_export_thunks" ]
+  if (is_win) {
+    deps += [ "//sandbox" ]
   }
 
   configs += [ ":inside_headless_component" ]
@@ -434,16 +437,26 @@ component("headless_non_renderer") {
     ":headless_shared_sources",
     ":version_header",
     "//base:base_static",
+    "//build:branding_buildflags",
     "//build:chromeos_buildflags",
     "//components/cookie_config",
+    "//components/embedder_support",
     "//components/keyed_service/content",
+    "//components/policy:policy_code_generate",
+    "//components/policy/core/browser",
+    "//components/policy/core/common:common_constants",
+    "//components/pref_registry",
+    "//components/prefs",
     "//components/profile_metrics",
     "//components/security_state/core",
+    "//content/public/app",
     "//content/public/browser",
     "//content/public/common",
+    "//printing/buildflags",
     "//services/cert_verifier/public/mojom",
     "//services/device/public/cpp/geolocation",
     "//services/service_manager/public/cpp",
+    "//third_party/inspector_protocol:crdtp",
     "//ui/base",
     "//ui/base/clipboard",
     "//ui/compositor",
@@ -454,7 +467,12 @@ component("headless_non_renderer") {
   ]
 
   if (enable_basic_printing) {
-    deps += [ "//components/printing/browser" ]
+    deps += [
+      "//components/printing/browser",
+      "//components/printing/common:mojo_interfaces",
+      "//printing",
+      "//printing/mojom",
+    ]
   }
 
   if (is_component_build) {
@@ -492,10 +510,10 @@ component("headless_non_renderer") {
     ]
 
     if (!is_fuchsia) {
-      deps += [ "//components/crash/content/browser" ]
-    }
-    if (is_win) {
-      deps += [ "//components/crash/core/app:crash_export_thunks" ]
+      deps += [
+        "//components/crash/content/browser",
+        "//components/crash/core/app",
+      ]
     }
 
     if (enable_basic_printing) {
@@ -507,8 +525,15 @@ component("headless_non_renderer") {
       ]
     }
 
+    if (headless_use_prefs) {
+      deps += [ "//components/os_crypt" ]
+    }
+
     if (headless_use_policy) {
-      deps += [ "//components/policy/content" ]
+      deps += [
+        "//components/policy/content",
+        "//components/user_prefs",
+      ]
     }
   }
 
@@ -593,11 +618,24 @@ if (!is_component_build) {
 
     deps = [
       ":headless",
+      "//build:chromeos_buildflags",
       "//components/crash/core/common",
+      "//components/security_state/content",
+      "//components/security_state/core",
+      "//content/public/app",
+      "//content/public/browser",
+      "//content/public/common",
+      "//content/public/renderer",
+      "//content/public/utility",
+      "//printing/buildflags",
       "//third_party/blink/public:blink_headers",
       "//ui/base",
+      "//ui/compositor",
       "//v8",
     ]
+    if (use_ozone) {
+      deps += [ "//ui/ozone" ]
+    }
     if (enable_basic_printing) {
       deps += [
         "//components/printing/renderer",
@@ -614,6 +652,10 @@ if (!is_component_build) {
         "$root_gen_dir/headless/embedded_resource_pak.h",
       ]
     }
+
+    if (is_mac || is_win || is_linux || is_chromeos) {
+      deps += [ "//components/crash/core/app" ]
+    }
   }
 } else {
   # For component builds all dependencies are already included in the headless
@@ -660,6 +702,8 @@ test("headless_unittests") {
     sources += [ "lib/browser/headless_printing_unittest.cc" ]
     deps += [
       "//components/printing/browser",
+      "//printing",
+      "//printing/buildflags",
       "//third_party/blink/public:blink",
     ]
   }
@@ -737,8 +781,12 @@ test("headless_browsertests") {
     ":headless_shell_lib",
     "//base",
     "//cc:test_support",
+    "//components/policy/core/browser",
     "//components/security_state/content",
+    "//content/test:browsertest_support",
     "//content/test:test_support",
+    "//net:test_support",
+    "//printing/buildflags",
     "//services/network/public/mojom",
     "//testing/gmock",
     "//testing/gtest",
@@ -753,6 +801,7 @@ test("headless_browsertests") {
     deps += [
       "//components/printing/browser",
       "//pdf",
+      "//printing",
     ]
   }
 
@@ -777,12 +826,19 @@ if (is_win) {
     deps = [
       ":headless_non_renderer",
       "//build:branding_buildflags",
+      "//components/crash/core/app:run_as_crashpad_handler",
+      "//components/embedder_support",
       "//content:sandbox_helper_win",
+      "//content/public/app",
       "//content/public/browser",
       "//content/public/common",
       "//net",
+      "//printing/buildflags",
       "//sandbox",
     ]
+    if (headless_use_policy) {
+      deps += [ "//components/policy/content" ]
+    }
     configs += [ ":headless_defines_config" ]
   }
 }
@@ -809,11 +865,15 @@ static_library("headless_shell_lib") {
   deps = [
     ":headless_renderer",
     "//build:branding_buildflags",
+    "//components/embedder_support",
     "//components/security_state/content",
+    "//content",
     "//content/public/app",
     "//content/public/browser",
     "//content/public/child:child",
     "//content/public/common",
+    "//content/public/utility",
+    "//printing/buildflags",
   ]
 
   public_deps = [ "//base" ]
@@ -843,7 +903,6 @@ static_library("headless_shell_lib") {
     defines = [ "HEADLESS_USE_CRASHPAD" ]
 
     deps += [
-      "//components/crash/core/app:crash_export_thunks",
       "//components/crash/core/app:run_as_crashpad_handler",
       "//content:sandbox_helper_win",
       "//sandbox",
@@ -854,6 +913,10 @@ static_library("headless_shell_lib") {
     deps += [ "//components/os_crypt" ]
   }
 
+  if (is_win || (is_posix && !is_mac)) {
+    deps += [ "//components/crash/core/app" ]
+  }
+
   configs += [ ":headless_defines_config" ]
 }
 
@@ -881,7 +944,10 @@ executable("headless_shell") {
   }
 
   if (is_win) {
-    deps += [ "//build/win:default_exe_manifest" ]
+    deps += [
+      "//build/win:default_exe_manifest",
+      "//content/public/app",
+    ]
   }
 
   if (is_mac) {
@@ -906,8 +972,15 @@ executable("headless_example") {
 
   deps = [
     ":headless_shell_lib",
+    "//content",
+    "//sandbox",
     "//skia",  # we need this to override font render hinting in headless build
+    "//ui/gfx/geometry",
   ]
 
+  if (is_win) {
+    deps += [ "//content/public/app" ]
+  }
+
   configs += [ ":headless_defines_config" ]
 }
diff --git a/headless/app/headless_shell.cc b/headless/app/headless_shell.cc
index f15a5bd721445..3cd013ed737cc 100644
--- a/headless/app/headless_shell.cc
+++ b/headless/app/headless_shell.cc
@@ -52,13 +52,13 @@
 #include "ui/gfx/geometry/size.h"
 
 #if defined(OS_WIN)
-#include "components/crash/core/app/crash_switches.h"
+#include "components/crash/core/app/crash_switches.h"  // nogncheck
 #include "components/crash/core/app/run_as_crashpad_handler_win.h"
 #include "sandbox/win/src/sandbox_types.h"
 #endif
 
 #if defined(OS_MAC)
-#include "components/os_crypt/os_crypt_switches.h"
+#include "components/os_crypt/os_crypt_switches.h"  // nogncheck
 #endif
 
 #if defined(HEADLESS_USE_POLICY)
diff --git a/headless/app/headless_shell_main.cc b/headless/app/headless_shell_main.cc
index a51bc44301a79..f2457facea571 100644
--- a/headless/app/headless_shell_main.cc
+++ b/headless/app/headless_shell_main.cc
@@ -7,7 +7,7 @@
 
 #if defined(OS_WIN)
 #include "content/public/app/sandbox_helper_win.h"
-#include "sandbox/win/src/sandbox_types.h"
+#include "sandbox/win/src/sandbox_types.h"  // nogncheck
 #elif defined(OS_MAC)
 #include "base/check.h"
 #include "sandbox/mac/seatbelt_exec.h"
diff --git a/headless/lib/browser/headless_browser_context_impl.cc b/headless/lib/browser/headless_browser_context_impl.cc
index 86f66e5046fcb..d5cfa9e866d82 100644
--- a/headless/lib/browser/headless_browser_context_impl.cc
+++ b/headless/lib/browser/headless_browser_context_impl.cc
@@ -27,7 +27,7 @@
 #include "ui/base/resource/resource_bundle.h"
 
 #if defined(HEADLESS_USE_POLICY)
-#include "components/user_prefs/user_prefs.h"
+#include "components/user_prefs/user_prefs.h"  // nogncheck
 #endif
 
 namespace headless {
diff --git a/headless/lib/browser/headless_browser_main_parts.cc b/headless/lib/browser/headless_browser_main_parts.cc
index b6d0091acaee1..e8d5d3e7cd140 100644
--- a/headless/lib/browser/headless_browser_main_parts.cc
+++ b/headless/lib/browser/headless_browser_main_parts.cc
@@ -14,7 +14,7 @@
 #include "headless/lib/browser/headless_screen.h"
 
 #if defined(HEADLESS_USE_PREFS)
-#include "components/os_crypt/os_crypt.h"
+#include "components/os_crypt/os_crypt.h"  // nogncheck
 #include "components/pref_registry/pref_registry_syncable.h"
 #include "components/prefs/in_memory_pref_store.h"
 #include "components/prefs/json_pref_store.h"
diff --git a/headless/lib/browser/headless_content_browser_client.cc b/headless/lib/browser/headless_content_browser_client.cc
index a828ac9ab9205..054f7a7dff9be 100644
--- a/headless/lib/browser/headless_content_browser_client.cc
+++ b/headless/lib/browser/headless_content_browser_client.cc
@@ -53,7 +53,7 @@
 
 #if defined(HEADLESS_USE_POLICY)
 #include "components/policy/content/policy_blocklist_navigation_throttle.h"
-#include "components/policy/core/common/policy_service.h"
+#include "components/policy/core/common/policy_service.h"  // nogncheck http://crbug.com/1227148
 #include "content/public/browser/navigation_handle.h"
 #include "content/public/browser/navigation_throttle.h"
 #endif  // defined(HEADLESS_USE_POLICY)
diff --git a/headless/lib/browser/headless_request_context_manager.cc b/headless/lib/browser/headless_request_context_manager.cc
index 3b54e85719099..fa0e7e7548405 100644
--- a/headless/lib/browser/headless_request_context_manager.cc
+++ b/headless/lib/browser/headless_request_context_manager.cc
@@ -26,7 +26,7 @@
 #include "services/network/url_request_context_builder_mojo.h"
 
 #if defined(HEADLESS_USE_PREFS)
-#include "components/os_crypt/os_crypt.h"
+#include "components/os_crypt/os_crypt.h"  // nogncheck
 #include "content/public/common/network_service_util.h"
 #endif
 
diff --git a/headless/lib/browser/policy/headless_browser_policy_connector.cc b/headless/lib/browser/policy/headless_browser_policy_connector.cc
index e36021a57022f..ee63ed9954855 100644
--- a/headless/lib/browser/policy/headless_browser_policy_connector.cc
+++ b/headless/lib/browser/policy/headless_browser_policy_connector.cc
@@ -14,9 +14,9 @@
 #include "base/task/thread_pool.h"
 #include "build/branding_buildflags.h"
 #include "build/build_config.h"
-#include "components/policy/core/browser/configuration_policy_handler.h"
-#include "components/policy/core/browser/url_blocklist_policy_handler.h"
-#include "components/policy/core/common/async_policy_provider.h"
+#include "components/policy/core/browser/configuration_policy_handler.h"  // nogncheck http://crbug.com/1227148
+#include "components/policy/core/browser/url_blocklist_policy_handler.h"  // nogncheck http://crbug.com/1227148
+#include "components/policy/core/common/async_policy_provider.h"  // nogncheck http://crbug.com/1227148
 #include "components/policy/core/common/policy_pref_names.h"
 #include "components/policy/policy_constants.h"
 #include "headless/lib/browser/headless_pref_names.h"
@@ -33,7 +33,7 @@
 #include "components/policy/core/common/policy_loader_mac.h"
 #include "components/policy/core/common/preferences_mac.h"
 #elif defined(OS_POSIX) && !defined(OS_ANDROID)
-#include "components/policy/core/common/config_dir_policy_loader.h"
+#include "components/policy/core/common/config_dir_policy_loader.h"  // nogncheck http://crbug.com/1227148
 #endif
 
 namespace policy {
diff --git a/headless/lib/browser/policy/headless_browser_policy_connector.h b/headless/lib/browser/policy/headless_browser_policy_connector.h
index b067c01239784..e15bba06996d5 100644
--- a/headless/lib/browser/policy/headless_browser_policy_connector.h
+++ b/headless/lib/browser/policy/headless_browser_policy_connector.h
@@ -6,8 +6,8 @@
 #define HEADLESS_LIB_BROWSER_POLICY_HEADLESS_BROWSER_POLICY_CONNECTOR_H_
 
 #include "base/memory/ref_counted.h"
-#include "components/policy/core/browser/browser_policy_connector.h"
-#include "components/policy/core/browser/configuration_policy_pref_store.h"
+#include "components/policy/core/browser/browser_policy_connector.h"  // nogncheck http://crbug.com/1227148
+#include "components/policy/core/browser/configuration_policy_pref_store.h"  // nogncheck http://crbug.com/1227148
 #include "services/network/public/cpp/shared_url_loader_factory.h"
 
 namespace policy {
diff --git a/headless/lib/browser/policy/headless_mode_policy.h b/headless/lib/browser/policy/headless_mode_policy.h
index da2c8896d669b..f73b04aec871a 100644
--- a/headless/lib/browser/policy/headless_mode_policy.h
+++ b/headless/lib/browser/policy/headless_mode_policy.h
@@ -5,7 +5,7 @@
 #ifndef HEADLESS_LIB_BROWSER_POLICY_HEADLESS_MODE_POLICY_H_
 #define HEADLESS_LIB_BROWSER_POLICY_HEADLESS_MODE_POLICY_H_
 
-#include "components/policy/core/browser/configuration_policy_handler.h"
+#include "components/policy/core/browser/configuration_policy_handler.h"  // nogncheck http://crbug.com/1227148
 #include "headless/public/headless_export.h"
 
 class PrefService;
diff --git a/headless/lib/browser/policy/headless_policies.cc b/headless/lib/browser/policy/headless_policies.cc
index f0edc59d56335..b48ac82932da6 100644
--- a/headless/lib/browser/policy/headless_policies.cc
+++ b/headless/lib/browser/policy/headless_policies.cc
@@ -5,7 +5,7 @@
 #include "headless/lib/browser/policy/headless_policies.h"
 
 #include "base/check.h"
-#include "components/policy/core/browser/url_blocklist_manager.h"
+#include "components/policy/core/browser/url_blocklist_manager.h"  // nogncheck http://crbug.com/1227148
 #include "components/policy/policy_constants.h"
 #include "components/pref_registry/pref_registry_syncable.h"
 #include "components/prefs/pref_service.h"
diff --git a/headless/lib/browser/protocol/headless_handler.cc b/headless/lib/browser/protocol/headless_handler.cc
index 77d3f93453414..bdc42f01da20b 100644
--- a/headless/lib/browser/protocol/headless_handler.cc
+++ b/headless/lib/browser/protocol/headless_handler.cc
@@ -14,7 +14,7 @@
 #include "components/viz/common/switches.h"
 #include "content/public/common/content_switches.h"
 #include "headless/lib/browser/headless_browser_impl.h"
-#include "headless/lib/browser/headless_web_contents_impl.h"
+#include "headless/lib/browser/headless_web_contents_impl.h"  // nogncheck http://crbug.com/1227378
 #include "third_party/skia/include/core/SkBitmap.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/gfx/codec/jpeg_codec.h"
diff --git a/headless/public/headless_browser.h b/headless/public/headless_browser.h
index dfd6be4f984dd..9e2b6f5bfb7f3 100644
--- a/headless/public/headless_browser.h
+++ b/headless/public/headless_browser.h
@@ -15,6 +15,7 @@
 #include "base/files/file_path.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "build/build_config.h"
 #include "headless/public/headless_browser_context.h"
 #include "headless/public/headless_devtools_channel.h"
 #include "headless/public/headless_export.h"
diff --git a/headless/test/headless_browser_browsertest.cc b/headless/test/headless_browser_browsertest.cc
index f7f76a6d30b06..083f1de796c82 100644
--- a/headless/test/headless_browser_browsertest.cc
+++ b/headless/test/headless_browser_browsertest.cc
@@ -52,7 +52,7 @@
 #include "ui/gfx/geometry/size.h"
 
 #if defined(OS_MAC)
-#include "third_party/crashpad/crashpad/client/crash_report_database.h"
+#include "third_party/crashpad/crashpad/client/crash_report_database.h"  // nogncheck
 #endif
 
 using testing::UnorderedElementsAre;