Cleanup remaining class/struct fwd declarations

Remove remaining useless class and struct forward declarations from
Chromium (excluding third_party directory) using a homemade script
available in bug 662195 comments. An up-and-running presubmit check
is now available and should prevent new useless forward declarations
to come up.

BUG=662195
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_nacl_sdk

Review-Url: https://codereview.chromium.org/2554863002
Cr-Original-Commit-Position: refs/heads/master@{#436883}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: db24b9e6852589972bda0bcf06019024ef1fe2c7
diff --git a/tools/gn/builder.h b/tools/gn/builder.h
index 573d8ed..e10df4d 100644
--- a/tools/gn/builder.h
+++ b/tools/gn/builder.h
@@ -14,7 +14,6 @@
 #include "tools/gn/label_ptr.h"
 #include "tools/gn/unique_vector.h"
 
-class Config;
 class Err;
 class Loader;
 class ParseNode;
diff --git a/tools/gn/config_values_generator.h b/tools/gn/config_values_generator.h
index 6087878..7fd803c 100644
--- a/tools/gn/config_values_generator.h
+++ b/tools/gn/config_values_generator.h
@@ -11,7 +11,6 @@
 class ConfigValues;
 class Err;
 class Scope;
-class Token;
 
 // This class fills in the config values from a given scope. It's shared
 // between the "config" function call and all the different binary target types
diff --git a/tools/gn/deps_iterator.h b/tools/gn/deps_iterator.h
index 58f2b34..28062ae 100644
--- a/tools/gn/deps_iterator.h
+++ b/tools/gn/deps_iterator.h
@@ -9,8 +9,6 @@
 
 #include "tools/gn/label_ptr.h"
 
-class Target;
-
 // Provides an iterator for iterating over multiple LabelTargetVectors to
 // make it convenient to iterate over all deps of a target.
 //
diff --git a/tools/gn/filesystem_utils.h b/tools/gn/filesystem_utils.h
index c17ab39..bc14eb9 100644
--- a/tools/gn/filesystem_utils.h
+++ b/tools/gn/filesystem_utils.h
@@ -15,8 +15,6 @@
 #include "tools/gn/target.h"
 
 class Err;
-class Location;
-class Value;
 
 std::string FilePathToUTF8(const base::FilePath::StringType& str);
 inline std::string FilePathToUTF8(const base::FilePath& path) {
diff --git a/tools/gn/functions.h b/tools/gn/functions.h
index 0c97700..401384a 100644
--- a/tools/gn/functions.h
+++ b/tools/gn/functions.h
@@ -18,7 +18,6 @@
 class ListNode;
 class ParseNode;
 class Scope;
-class Token;
 class Value;
 
 // -----------------------------------------------------------------------------
diff --git a/tools/gn/header_checker.h b/tools/gn/header_checker.h
index 8f9212f..0c0eb4a 100644
--- a/tools/gn/header_checker.h
+++ b/tools/gn/header_checker.h
@@ -19,7 +19,6 @@
 
 class BuildSettings;
 class InputFile;
-class Label;
 class LocationRange;
 class SourceFile;
 class Target;
diff --git a/tools/gn/ninja_build_writer.h b/tools/gn/ninja_build_writer.h
index 42bbb84..df6d1c8 100644
--- a/tools/gn/ninja_build_writer.h
+++ b/tools/gn/ninja_build_writer.h
@@ -15,7 +15,6 @@
 class Builder;
 class BuildSettings;
 class Err;
-class Pool;
 class Settings;
 class Target;
 class Toolchain;
diff --git a/tools/gn/ninja_copy_target_writer.h b/tools/gn/ninja_copy_target_writer.h
index 9e1746e..a45a470 100644
--- a/tools/gn/ninja_copy_target_writer.h
+++ b/tools/gn/ninja_copy_target_writer.h
@@ -8,8 +8,6 @@
 #include "base/macros.h"
 #include "tools/gn/ninja_target_writer.h"
 
-class Tool;
-
 // Writes a .ninja file for a copy target type.
 class NinjaCopyTargetWriter : public NinjaTargetWriter {
  public:
diff --git a/tools/gn/ninja_target_writer.h b/tools/gn/ninja_target_writer.h
index 72ecbca..5a3af18 100644
--- a/tools/gn/ninja_target_writer.h
+++ b/tools/gn/ninja_target_writer.h
@@ -11,7 +11,6 @@
 #include "tools/gn/path_output.h"
 #include "tools/gn/substitution_type.h"
 
-class FileTemplate;
 class OutputFile;
 class Settings;
 class Target;
diff --git a/tools/gn/ninja_toolchain_writer.h b/tools/gn/ninja_toolchain_writer.h
index 9ddde84..9c6ad24 100644
--- a/tools/gn/ninja_toolchain_writer.h
+++ b/tools/gn/ninja_toolchain_writer.h
@@ -16,10 +16,8 @@
 #include "tools/gn/path_output.h"
 #include "tools/gn/toolchain.h"
 
-class BuildSettings;
 struct EscapeOptions;
 class Settings;
-class Target;
 class Tool;
 
 class NinjaToolchainWriter {
diff --git a/tools/gn/ninja_writer.h b/tools/gn/ninja_writer.h
index 4bcbf36..6372f0c 100644
--- a/tools/gn/ninja_writer.h
+++ b/tools/gn/ninja_writer.h
@@ -15,8 +15,6 @@
 class Builder;
 class BuildSettings;
 class Err;
-class Pool;
-class Settings;
 class Target;
 class Toolchain;
 
diff --git a/tools/gn/scope.h b/tools/gn/scope.h
index 36de088..31bac62 100644
--- a/tools/gn/scope.h
+++ b/tools/gn/scope.h
@@ -19,12 +19,9 @@
 #include "tools/gn/source_dir.h"
 #include "tools/gn/value.h"
 
-class FunctionCallNode;
-class ImportManager;
 class Item;
 class ParseNode;
 class Settings;
-class TargetManager;
 class Template;
 
 // Scope for the script execution.
diff --git a/tools/gn/target.h b/tools/gn/target.h
index 747b7b9..1890a53 100644
--- a/tools/gn/target.h
+++ b/tools/gn/target.h
@@ -27,9 +27,7 @@
 #include "tools/gn/unique_vector.h"
 
 class DepsIteratorRange;
-class InputFile;
 class Settings;
-class Token;
 class Toolchain;
 
 class Target : public Item {
diff --git a/tools/gn/xcode_writer.h b/tools/gn/xcode_writer.h
index 87a7d58..7373cff 100644
--- a/tools/gn/xcode_writer.h
+++ b/tools/gn/xcode_writer.h
@@ -22,10 +22,6 @@
 using PBXAttributes = std::map<std::string, std::string>;
 class PBXProject;
 
-namespace base {
-class FilePath;
-}
-
 class XcodeWriter {
  public:
   enum TargetOsType {