Add scripts for running GN missing header checker on CQ

This relands part of crrev.com/2903733004, but not enabled.

The enabling config would be landed in a separate CL.

BUG=661774, 725877

Review-Url: https://codereview.chromium.org/2904073003
Cr-Commit-Position: refs/heads/master@{#477056}
diff --git a/testing/scripts/check_gn_headers.py b/testing/scripts/check_gn_headers.py
new file mode 100755
index 0000000..7aa36a6a
--- /dev/null
+++ b/testing/scripts/check_gn_headers.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python
+# Copyright 2017 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import json
+import os
+import sys
+
+
+import common
+
+
+def main_run(args):
+  with common.temporary_file() as tempfile_path:
+    rc = common.run_command([
+        sys.executable,
+        os.path.join(common.SRC_DIR, 'build', 'check_gn_headers.py'),
+        '--out-dir',
+        os.path.join(args.paths['checkout'], 'out', args.build_config_fs),
+        '--whitelist',
+        os.path.join(common.SRC_DIR, 'build', 'check_gn_headers_whitelist.txt'),
+        '--json', tempfile_path
+    ], cwd=common.SRC_DIR)
+
+    with open(tempfile_path) as f:
+      failures = json.load(f)
+
+  json.dump({
+      'valid': True,
+      'failures': failures,
+  }, args.output)
+
+  return rc
+
+
+def main_compile_targets(args):
+  json.dump([], args.output)
+
+
+if __name__ == '__main__':
+  funcs = {
+    'run': main_run,
+    'compile_targets': main_compile_targets,
+  }
+  sys.exit(common.run_script(sys.argv[1:], funcs))