| Index: tools/json_schema_compiler/json_features.gni | 
| diff --git a/tools/json_schema_compiler/json_features.gni b/tools/json_schema_compiler/json_features.gni | 
| index cdf6c33a30a325550891f72d9e8fb7837cf58dce..ab940f72e52ef7cbd7f93ed9983eae5302116996 100644 | 
| --- a/tools/json_schema_compiler/json_features.gni | 
| +++ b/tools/json_schema_compiler/json_features.gni | 
| @@ -8,6 +8,7 @@ | 
| #   feature_class: The name of the feature class to generate, e.g. APIFeature. | 
| #   provider_class: The name of the provider class to generate, e.g. | 
| #                   APIFeatureProvider. | 
| +#   deps/public_deps/visibility: normal meaning | 
| template("json_features") { | 
| assert(defined(invoker.sources), | 
| "\"sources\" must be defined for the $target_name template.") | 
| @@ -21,12 +22,14 @@ template("json_features") { | 
| compiler_root = "//tools/json_schema_compiler" | 
| base_filename = target_name | 
| action_name = "${target_name}_json_features" | 
| +  source_set_name = target_name | 
| generated_files = [ | 
| "$target_gen_dir/$base_filename.cc", | 
| "$target_gen_dir/$base_filename.h", | 
| ] | 
|  | 
| action(action_name) { | 
| +    visibility = [ ":$source_set_name" ] | 
| sources = invoker.sources | 
| script = "$compiler_root/feature_compiler.py" | 
| inputs = [ | 
| @@ -42,12 +45,34 @@ template("json_features") { | 
| rebase_path(target_gen_dir, root_build_dir), | 
| "$base_filename", | 
| ] + rebased | 
| + | 
| +    # Add the deps in for the action as well, in case the deps generate the | 
| +    # inputs used by the action. | 
| +    forward_variables_from(invoker, | 
| +                           [ | 
| +                             "deps", | 
| +                             "public_deps", | 
| +                           ]) | 
| + | 
| +    # Append a dependency on the extensions system. Headers in this target | 
| +    # are included by the feature compiler automatically. | 
| +    if (!defined(deps)) { | 
| +      deps = [] | 
| +    } | 
| +    deps += [ "//extensions/common" ] | 
| } | 
|  | 
| source_set(target_name) { | 
| sources = generated_files | 
| -    public_deps = [ | 
| -      ":$action_name", | 
| -    ] | 
| +    forward_variables_from(invoker, | 
| +                           [ | 
| +                             "deps", | 
| +                             "public_deps", | 
| +                             "visibility", | 
| +                           ]) | 
| +    if (!defined(public_deps)) { | 
| +      public_deps = [] | 
| +    } | 
| +    public_deps += [ ":$action_name" ] | 
| } | 
| } | 
|  |