Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(177)

Unified Diff: Source/bindings/scripts/CodeGeneratorV8.pm

Issue 14994006: Clean up #includes in generated header files (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | Source/bindings/tests/results/V8Float64Array.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/bindings/scripts/CodeGeneratorV8.pm
diff --git a/Source/bindings/scripts/CodeGeneratorV8.pm b/Source/bindings/scripts/CodeGeneratorV8.pm
index 19e2416949dafbbad4620b7c1c7d16cb3c108441..000a13fd9f6ac005543ec5e2da8443229e9319d8 100644
--- a/Source/bindings/scripts/CodeGeneratorV8.pm
+++ b/Source/bindings/scripts/CodeGeneratorV8.pm
@@ -129,7 +129,7 @@ my $idlFiles;
my $cachedInterfaces = {};
my %implIncludes = ();
-my %headerIncludeFiles = ();
+my %headerIncludes = ();
# Header code structure:
# Root ... Copyright, include duplication check
@@ -265,18 +265,6 @@ sub IDLFileForInterface
return $idlFiles->{$interfaceName};
}
-sub HeaderFileForInterface
-{
- my $interfaceName = shift;
- my $implClassName = shift || $interfaceName;
-
- my $idlFilename = IDLFileForInterface($interfaceName)
- or die("Could NOT find IDL file for interface \"$interfaceName\" $!\n");
-
- my $idlRelPath= "bindings/" . File::Spec->abs2rel($idlFilename, $sourceRoot);
- return dirname($idlRelPath) . "/" . $implClassName . ".h";
-}
-
sub ParseInterface
{
my $interfaceName = shift;
@@ -405,8 +393,11 @@ sub AddToImplIncludes
sub AddToHeaderIncludes
{
- my $header = shift;
- $headerIncludeFiles{$header} = 1;
+ my @includes = @_;
+
+ for my $include (@includes) {
+ $headerIncludes{$include} = 1;
+ }
}
sub SkipIncludeHeader
@@ -445,6 +436,25 @@ sub AddIncludesForType
}
}
+sub HeaderFilesForInterface
+{
+ my $interfaceName = shift;
+ my $implClassName = shift;
+
+ my @includes = ();
+ if (IsTypedArrayType($interfaceName)) {
+ push(@includes, "wtf/${interfaceName}.h");
+ } elsif ($interfaceName =~ /SVGPathSeg/) {
+ $interfaceName =~ s/Abs|Rel//;
+ push(@includes, "core/svg/${interfaceName}.h");
+ } elsif (!SkipIncludeHeader($interfaceName)) {
+ my $idlFilename = IDLFileForInterface($interfaceName) or die("Could NOT find IDL file for interface \"$interfaceName\" $!\n");
+ my $idlRelPath= "bindings/" . File::Spec->abs2rel($idlFilename, $sourceRoot);
+ push(@includes, dirname($idlRelPath) . "/" . $implClassName . ".h");
+ }
+ return @includes;
+}
+
sub NeedsCustomOpaqueRootForGC
{
my $interface = shift;
@@ -526,14 +536,9 @@ sub GetSVGPropertyTypes
if ($svgNativeType =~ /SVGPropertyTearOff/) {
$svgPropertyType = $svgWrappedNativeType;
AddToImplIncludes("core/svg/properties/SVGAnimatedPropertyTearOff.h");
- } elsif ($svgNativeType =~ /SVGListPropertyTearOff/ or $svgNativeType =~ /SVGStaticListPropertyTearOff/) {
+ } elsif ($svgNativeType =~ /SVGListPropertyTearOff/ or $svgNativeType =~ /SVGStaticListPropertyTearOff/ or $svgNativeType =~ /SVGTransformListPropertyTearOff/) {
$svgListPropertyType = $svgWrappedNativeType;
AddToHeaderIncludes("core/svg/properties/SVGAnimatedListPropertyTearOff.h");
- AddToHeaderIncludes("core/svg/properties/SVGStaticListPropertyTearOff.h");
- } elsif ($svgNativeType =~ /SVGTransformListPropertyTearOff/) {
- $svgListPropertyType = $svgWrappedNativeType;
- AddToHeaderIncludes("core/svg/properties/SVGAnimatedListPropertyTearOff.h");
- AddToHeaderIncludes("core/svg/properties/SVGTransformListPropertyTearOff.h");
} elsif ($svgNativeType =~ /SVGPathSegListPropertyTearOff/) {
$svgListPropertyType = $svgWrappedNativeType;
AddToHeaderIncludes("core/svg/properties/SVGPathSegListPropertyTearOff.h");
@@ -608,6 +613,8 @@ sub GenerateHeader
# Ensure the IsDOMNodeType function is in sync.
die("IsDOMNodeType is out of date with respect to $interfaceName") if IsDOMNodeType($interfaceName) != InheritsInterface($interface, "Node");
+ my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($interfaceName);
+
my $hasDependentLifetime = $interface->extendedAttributes->{"DependentLifetime"} || InheritsExtendedAttribute($interface, "ActiveDOMObject") || GetGenerateIsReachable($interface) || $v8ClassName =~ /SVG/;
if (!$hasDependentLifetime) {
foreach (@{$interface->parents}) {
@@ -619,19 +626,10 @@ sub GenerateHeader
AddToHeaderIncludes("bindings/v8/WrapperTypeInfo.h");
AddToHeaderIncludes("bindings/v8/V8Binding.h");
AddToHeaderIncludes("bindings/v8/V8DOMWrapper.h");
- AddToHeaderIncludes("v8.h");
- AddToHeaderIncludes("wtf/HashMap.h");
- AddToHeaderIncludes("wtf/text/StringHash.h");
-
- my $headerClassInclude = GetHeaderClassInclude($interfaceName, $implClassName);
- AddToHeaderIncludes($headerClassInclude) if $headerClassInclude;
-
- my ($svgPropertyType, $svgListPropertyType, $svgNativeType) = GetSVGPropertyTypes($interfaceName);
-
- foreach my $headerInclude (sort keys(%headerIncludeFiles)) {
- $header{includes}->add("#include \"${headerInclude}\"\n") unless $headerInclude =~ /v8\.h/;
+ AddToHeaderIncludes(HeaderFilesForInterface($interfaceName, $implClassName));
+ foreach my $headerInclude (sort keys(%headerIncludes)) {
+ $header{includes}->add("#include \"${headerInclude}\"\n");
}
- $header{includes}->add("#include \<v8.h\>\n") if $headerIncludeFiles{"v8.h"};
$header{nameSpaceWebCore}->addHeader("\ntemplate<typename PropertyType> class SVGPropertyTearOff;\n") if $svgPropertyType;
if ($svgNativeType) {
@@ -670,7 +668,6 @@ END
my $separator = "";
foreach (@{$interface->parents}) {
my $parent = $_;
- AddToHeaderIncludes("V8${parent}.h");
$code .= "${separator}V8${parent}::hasDependentLifetime";
$separator = " || ";
}
@@ -986,20 +983,6 @@ sub GetInternalFields
return @customInternalFields;
}
-sub GetHeaderClassInclude
-{
- my $interfaceName = shift;
- my $implClassName = shift;
-
- if ($interfaceName =~ /SVGPathSeg/) {
- $interfaceName =~ s/Abs|Rel//;
- return "core/svg/${interfaceName}.h";
- }
- return "wtf/${interfaceName}.h" if IsTypedArrayType($interfaceName);
- return "" if (SkipIncludeHeader($interfaceName));
- return HeaderFileForInterface($interfaceName, $implClassName);
-}
-
sub GenerateHeaderCustomInternalFieldIndices
{
my $interface = shift;
@@ -1465,7 +1448,7 @@ END
push(@arguments, "ec") if $useExceptions;
if ($attribute->signature->extendedAttributes->{"ImplementedBy"}) {
my $implementedBy = $attribute->signature->extendedAttributes->{"ImplementedBy"};
- AddToImplIncludes(HeaderFileForInterface($implementedBy));
+ AddToImplIncludes(HeaderFilesForInterface($implementedBy, $implementedBy));
unshift(@arguments, "imp") if !$attribute->isStatic;
$functionName = "${implementedBy}::${functionName}";
} elsif ($attribute->isStatic) {
@@ -1904,7 +1887,7 @@ END
push(@arguments, "ec") if $useExceptions;
if ($attribute->signature->extendedAttributes->{"ImplementedBy"}) {
my $implementedBy = $attribute->signature->extendedAttributes->{"ImplementedBy"};
- AddToImplIncludes(HeaderFileForInterface($implementedBy));
+ AddToImplIncludes(HeaderFilesForInterface($implementedBy, $implementedBy));
unshift(@arguments, "imp") if !$attribute->isStatic;
$functionName = "${implementedBy}::${functionName}";
} elsif ($attribute->isStatic) {
@@ -3579,7 +3562,7 @@ END
my $attrExt = $constant->extendedAttributes;
my $implementedBy = $attrExt->{"ImplementedBy"};
if ($implementedBy) {
- AddToImplIncludes(HeaderFileForInterface($implementedBy));
+ AddToImplIncludes(HeaderFilesForInterface($implementedBy, $implementedBy));
}
if ($attrExt->{"EnabledAtRuntime"}) {
push(@constantsEnabledAtRuntime, $constant);
@@ -3990,17 +3973,15 @@ sub GenerateCallbackHeader
$header{root}->addFooter("\n");
- my @unsortedIncludes = ();
- push(@unsortedIncludes, "#include \"bindings/v8/ActiveDOMCallback.h\"");
- push(@unsortedIncludes, "#include \"bindings/v8/DOMWrapperWorld.h\"");
- push(@unsortedIncludes, "#include \"bindings/v8/ScopedPersistent.h\"");
- my $interfaceHeader = HeaderFileForInterface($interfaceName, $implClassName);
- push(@unsortedIncludes, "#include \"$interfaceHeader\"");
- push(@unsortedIncludes, "#include <v8.h>");
- push(@unsortedIncludes, "#include \"wtf/Forward.h\"");
- $header{includes}->add(join("\n", sort @unsortedIncludes));
- unshift(@{$header{nameSpaceWebCore}->{header}}, "\n");
- $header{nameSpaceWebCore}->addHeader("class ScriptExecutionContext;\n\n");
+ my @includes = ();
+ push(@includes, "bindings/v8/ActiveDOMCallback.h");
+ push(@includes, "bindings/v8/DOMWrapperWorld.h");
+ push(@includes, "bindings/v8/ScopedPersistent.h");
+ push(@includes, HeaderFilesForInterface($interfaceName, $implClassName));
+ for my $include (sort @includes) {
+ $header{includes}->add("#include \"$include\"\n");
+ }
+ $header{nameSpaceWebCore}->addHeader("\nclass ScriptExecutionContext;\n\n");
$header{class}->addHeader("class $v8ClassName : public $implClassName, public ActiveDOMCallback {");
$header{class}->addFooter("};\n");
@@ -4279,7 +4260,7 @@ sub GenerateFunctionCallString
my $functionName;
my $implementedBy = $function->signature->extendedAttributes->{"ImplementedBy"};
if ($implementedBy) {
- AddToImplIncludes(HeaderFileForInterface($implementedBy));
+ AddToImplIncludes(HeaderFilesForInterface($implementedBy, $implementedBy));
unshift(@arguments, "imp") if !$function->isStatic;
$functionName = "${implementedBy}::${name}";
} elsif ($function->isStatic) {
« no previous file with comments | « no previous file | Source/bindings/tests/results/V8Float64Array.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698